From bf8d85d5f83c2036fb4239d764d33e99c1b62bd3 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 31 五月 2024 14:53:23 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java |  172 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 131 insertions(+), 41 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
index 32dfe09..63bf0b8 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -2,6 +2,8 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.biz.system.SystemUserBiz;
+import com.doumee.config.DataSyncConfig;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.erp.ErpConstants;
 import com.doumee.core.erp.ErpTool;
@@ -24,16 +26,22 @@
 import com.doumee.core.wx.wxPlat.WxPlatNotice;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.dao.CompanyMapper;
+import com.doumee.dao.business.dto.ResetPasswordDTO;
 import com.doumee.dao.business.join.DeviceJoinMapper;
 import com.doumee.dao.business.join.VisitsJoinMapper;
 import com.doumee.dao.business.model.*;
+import com.doumee.dao.system.SystemUserMapper;
+import com.doumee.dao.system.dto.ResetSystemUserPwdDTO;
+import com.doumee.dao.system.model.SystemUser;
 import com.doumee.dao.web.reqeust.AuditApproveDTO;
 import com.doumee.dao.web.reqeust.ErpVisitDTO;
 import com.doumee.dao.web.reqeust.ErpWithVisitDTO;
 import com.doumee.dao.web.reqeust.VisitRecordDTO;
 import com.doumee.dao.web.response.VisitDetailVO;
 import com.doumee.dao.web.response.VisitRecordVO;
+import com.doumee.service.business.ApproveService;
 import com.doumee.service.business.InterfaceLogService;
+import com.doumee.service.business.SmsEmailService;
 import com.doumee.service.business.VisitsService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -80,6 +88,8 @@
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
     @Autowired
+    private SystemUserBiz systemUserBiz;
+    @Autowired
     private DeviceJoinMapper deviceJoinMapper;
     @Autowired
     private ErpTool erpTool;
@@ -89,6 +99,14 @@
 
     @Autowired
     private InterfaceLogService interfaceLogService;
+    @Autowired
+    private DataSyncConfig dataSyncConfig;
+    @Autowired
+    private SmsEmailService smsEmailService;
+    @Autowired
+    private SystemUserMapper systemUserMapper;
+    @Autowired
+    private ApproveService approveService;
 
 
     @Override
@@ -188,26 +206,25 @@
         //妫�楠屾嫓璁夸汉鏄惁鍚堟硶
         Member visitMember = isValideVisitedUser(visits.getReceptMemberId());
         if(Constants.equalsInteger(Constants.ZERO, visits.getIdcardType())&&visits.getIdcardNo().length()!=18
-            //&&!IdcardUtil.isValidCard(visits.getIdcardNo())
+//            &&!IdcardUtil.isValidCard(visits.getIdcardNo())
         ){
             throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝韬唤璇佸彿鐮佹湁璇紝璇锋牳瀹炲悗閲嶈瘯锛�");
         }
         Date date = new Date();
         //鍒涘缓鏃堕棿
         visits.setCreateDate(date);
-        //鏅�氳瀹�
-        visits.setType(Constants.ONE);
         //闅忚浜哄憳鏁伴噺
-        visits.setMemberNum(CollectionUtils.isNotEmpty(visits.getWithUserList())?visits.getWithUserList().size():0);
+        visits.setMemberNum(Constants.ZERO);
         //璁垮淇℃伅(浣跨敤韬唤璇佸彿鏌ヨ鏄惁宸插瓨鍦ㄦ敼鏅�氳瀹紝娌℃湁鍒欐柊澧烇紝瀛樺湪鍒欐洿鏂皁penid绛変俊鎭�),鍖呮嫭闅忚浜哄憳鏍¢獙鍜屽鐞�
-        Member member =dealMemberAndVisits(visits);
+        Member member = dealMemberAndVisits(visits);
         visits.setMemberId(member.getId());
         visits.setVisitType(Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MDJ_VISIT_REQUIRED).getCode()));
         //鍒濆鍖栬瀹俊鎭�
         initVisitInfo(visits,date);
         visitsMapper.insert(visits);
+
         //鍙戣捣ERP瀹℃壒鐢宠
-        if(visits.getSourceType().equals(Constants.ZERO)){
+        if(dataSyncConfig.getVisitorDataOrigin().equals(Constants.ONE)){
             String erpId = startSendErpCheck(visits,visitMember);
             if(StringUtils.isNotBlank(erpId)){
                 visits.setErpId(erpId);
@@ -220,9 +237,12 @@
             wxPlatNotice.sendVisitAuditTemplateNotice(visits,
                     systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_PREFIX).getCode(),
                     systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_AUDIT_VISIT).getCode());
-        }else{
-            visits.setStatus(Constants.VisitStatus.pass);
+        }else if(dataSyncConfig.getVisitorDataOrigin().equals(Constants.ZERO)){
+            visits.setStatus(Constants.VisitStatus.waitCheck);
             visitsMapper.updateById(visits);
+            approveService.createApproveFlow(visits.getType(),visits.getId(),visits.getReceptMemberId());
+        }else{
+            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝鍙戣捣鎷滆瀹℃壒鐢宠澶辫触锛�");
         }
         initWithVisitInfo(visits);
         updateProblemLog(visits,problemLog,member);
@@ -231,6 +251,34 @@
 
         return visits.getId();
     }
+
+
+
+
+    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public Integer visitReporting(Visits visits) {
+        visits.setSourceType(Constants.ZERO);
+        isValidBaseParam(visits);
+        //妫�楠岃鎷滆浜烘槸鍚﹀悎娉�
+        Member visitMember = isValideVisitedUser(visits.getMemberId());
+        Date date = new Date();
+        //鍒涘缓鏃堕棿
+        visits.setCreateDate(date);
+        //璁垮鎶ュ
+        visits.setType(Constants.TWO);
+        visits.setReceptMemberId(visitMember.getId());
+        visits.setStatus(Constants.VisitStatus.waitCheck);
+        visits.setVisitType(Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MDJ_VISIT_REQUIRED).getCode()));
+        visits.setIdcardNo(DESUtil.decrypt(Constants.EDS_PWD, visitMember.getIdcardNo()));
+        //鍒濆鍖栬瀹俊鎭�
+//        initVisitInfo(visits,date);
+        visitsMapper.insert(visits);
+        return visits.getId();
+    }
+
+
+
 
 
     /**
@@ -258,7 +306,7 @@
             approve.setIsEndCheck(Constants.ZERO);
             approve.setType(Constants.ZERO);
             approve.setLevel(Constants.ONE);
-            approve.setVisitId(visits.getId());
+            approve.setObjId(visits.getId());
             approveMapper.insert(approve);
             if(!CollectionUtils.isNotEmpty(approveIds)){
                 approve.setIsEndCheck(Constants.ONE);
@@ -293,7 +341,7 @@
         if(approve.getStatus().equals(Constants.approveStatus.wait)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀹℃壒璁板綍宸插鐞�!");
         }
-        Visits visits = visitsMapper.selectById(approve.getVisitId());
+        Visits visits = visitsMapper.selectById(approve.getObjId());
         if(Objects.isNull(visits)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
@@ -315,7 +363,7 @@
             if(approve.getApproveType().equals(Constants.ONE)){
                 //浼氱 鏌ヨ鏄惁鏄渶鍚庝竴鏉¤褰� 濡傛灉鏄渶鍚庝竴鏉¤褰� 鍒欑敓鎴愪笅绾у鎵硅褰� 濡傛灉鏄渶鍚庝竴绾э紝鍒欒繘琛屽鎵圭‘璁�
                 if(approveMapper.selectCount(new QueryWrapper<Approve>().lambda()
-                        .eq(Approve::getVisitId,visits.getId())
+                        .eq(Approve::getObjId,visits.getId())
                         .eq(Approve::getLevel,approve.getLevel())
                         .ne(Approve::getId,approve.getId())
                 )<=Constants.ZERO){
@@ -336,7 +384,7 @@
                         .set(Approve::getStatus,Constants.approveStatus.otherDeal)
                         .set(Approve::getEditDate,new Date())
                         .set(Approve::getCheorId,auditApproveDTO.getMemberId())
-                        .eq(Approve::getVisitId,visits.getId())
+                        .eq(Approve::getObjId,visits.getId())
                         .eq(Approve::getStatus,Constants.approveStatus.wait)
                         .ne(Approve::getId,approve.getId())
                         .eq(Approve::getLevel,approve.getLevel())
@@ -363,7 +411,7 @@
                     .set(Approve::getStatus,Constants.approveStatus.otherDeal)
                     .set(Approve::getEditDate,new Date())
                     .set(Approve::getCheorId,auditApproveDTO.getMemberId())
-                    .eq(Approve::getVisitId,visits.getId())
+                    .eq(Approve::getObjId,visits.getId())
                     .eq(Approve::getStatus,Constants.approveStatus.wait)
                     .ne(Approve::getId,approve.getId())
                     .eq(Approve::getLevel,approve.getLevel())
@@ -401,7 +449,7 @@
                 approve.setTemplatId(approveParam.getId());
                 approve.setChekorId(Integer.valueOf(id));
                 approve.setType(Constants.ONE);
-                approve.setVisitId(visitId);
+                approve.setObjId(visitId);
                 approveList.add(approve);
             }
             approveMapper.insertBatchSomeColumn(approveList);
@@ -428,7 +476,7 @@
                 approve.setApproveType(approveParam.getApproveType());
                 approve.setChekorId(id);
                 approve.setType(Constants.ONE);
-                approve.setVisitId(visitId);
+                approve.setObjId(visitId);
                 approveList.add(approve);
             }
             approveMapper.insertBatchSomeColumn(approveList);
@@ -447,7 +495,6 @@
                 .eq(ApproveParam::getMemberType,Constants.ZERO)
                 .last("limit 1"));
          return  Objects.isNull(approveParam)?null:approveParam.getId();
-
     }
 
 
@@ -561,17 +608,35 @@
                 ||  StringUtils.isBlank( visits.getName())
                 ||  StringUtils.isBlank( visits.getPhone())
                 ||  StringUtils.isBlank( visits.getCompanyName())
-                ||  visits.getIdcardType() == null
+                ||  Objects.isNull(visits.getType())
 //                ||  StringUtils.isBlank( visits.getFaceImg() )
-                ||  StringUtils.isBlank( visits.getIdcardNo() )
                 || visits.getReceptMemberId() == null){
             throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝淇℃伅濉啓涓嶆纭紒");
         }
+        if(Constants.equalsInteger(visits.getType(),Constants.ZERO)
+             ||  Constants.equalsInteger(visits.getType(),Constants.ONE)){
+            if(  visits.getIdcardType() == null
+                    ||  StringUtils.isBlank( visits.getIdcardNo() ) ){
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝淇℃伅濉啓涓嶆纭紒");
+            }
+        }
+        //璁垮鎶ュ
+        if(visits.getType().equals(Constants.TWO)
+            && (StringUtils.isBlank( visits.getName())
+                ||  StringUtils.isBlank( visits.getPhone())
+                ||  StringUtils.isBlank( visits.getCompanyName()))
+                ||  StringUtils.isBlank( visits.getCarNos())
+                ||  Objects.isNull(visits.getReceptMemberId())
+        ){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝淇℃伅濉啓涓嶆纭紒");
+        }else if(visits.getType().equals(Constants.ONE) && StringUtils.isBlank(visits.getConstructionReason())){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鏈~鍐欐柦宸ヤ簨鐢憋紒");
+        }
         if(visits.getEndtime().getTime() < System.currentTimeMillis()){
-            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝棰勭害缁撴潫鏃堕棿蹇呴』澶т簬褰撳墠鏃堕棿锛�");//
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鍏ュ巶鏃堕棿蹇呴』澶т簬褰撳墠鏃堕棿锛�");//
         }
         if(visits.getEndtime().getTime() <= visits.getStarttime().getTime()){
-            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝棰勭害缁撴潫鏃堕棿蹇呴』澶т簬寮�濮嬫椂闂达紒");//
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝绂诲巶鏃堕棿蹇呴』澶т簬鍏ュ巶鏃堕棿锛�");//
         }
         if(visits.getSourceType().equals(Constants.ZERO)){
             String code = systemDictDataBiz.queryByCode(Constants.VISIT_CONFIG,Constants.VALIDATE_VISIT).getCode();
@@ -582,7 +647,6 @@
 
             }
             if(StringUtils.isNotBlank(code)&&!StringUtils.equals(code,"0")){
-//                Integer betweenDays = Math.toIntExact(cn.hutool.core.date.DateUtil.between(visits.getEndtime(), visits.getStarttime(), DateUnit.DAY));
                 int betweenDays = DateUtil.daysBetweenDates11(visits.getEndtime(), visits.getStarttime())+1;
                 if( betweenDays > codenum){
                     throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝棰勭害鎬诲ぉ鏁颁笉鑳借秴杩嘯"+code+"澶锛�");
@@ -769,17 +833,6 @@
                 model.setMemberId(visitsMember.getId());
             }
         }
-
-//        if(CollectionUtils.isNotEmpty(addList)){
-//            memberMapper.insertBatchSomeColumn(addList);
-//        }
-//        if(CollectionUtils.isNotEmpty(editList)){
-//            editList.forEach(i->{
-//                memberMapper.updateById(i);
-//            });
-//
-//        }
-
         return  m;
     }
 
@@ -940,7 +993,7 @@
 
     private ProblemLog isValidProblemLog(Visits visits) {
         String required = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROBLEM_VISIT_REQUIRED).getCode();
-        if(StringUtils.equals(required,Constants.ONE+"")&&visits.getSourceType()==Constants.ZERO){
+        if(StringUtils.equals(required,Constants.ONE+"")&&visits.getSourceType()==Constants.ZERO&&!visits.getType().equals(Constants.TWO)){
             //濡傛灉蹇呴』绛旈锛屾煡鎵剧瓟棰樿褰�
             if(visits.getUserAnswerId() == null){
                 throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇峰厛鎸夎姹傝繘琛屽畨鍏ㄧ煡璇嗙瓟棰橈紒");
@@ -1083,7 +1136,7 @@
   
     @Override
     public PageData<Visits> findPage(PageWrap<Visits> pageWrap) {
-        IPage<Visits> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+         IPage<Visits> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
 
         queryWrapper.selectAll(Visits.class);
@@ -1094,13 +1147,17 @@
         queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
 
         queryWrapper.eq(Visits::getIsdeleted,Constants.ZERO);
+        queryWrapper.eq(pageWrap.getModel().getType()!=null,Visits::getType,pageWrap.getModel().getType());
         queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType()),Visits::getType,pageWrap.getModel().getType());
+        queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getOpenid()),Visits::getOpenid,pageWrap.getModel().getOpenid());
+        queryWrapper.eq(StringUtils.isBlank(pageWrap.getModel().getOpenid()),"1","2");
         queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getName()),ms->ms.like(Visits::getName,pageWrap.getModel().getName())
                 .or().like(Visits::getPhone,pageWrap.getModel().getName()))
                 .eq(StringUtils.isNotBlank(pageWrap.getModel().getIdcardNo()),Visits::getIdcardNo,DESUtil.encrypt(Constants.EDS_PWD, pageWrap.getModel().getIdcardNo()))
                 .eq(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),Visits::getCompanyName,pageWrap.getModel().getCompanyName())
                 .eq(Objects.nonNull(pageWrap.getModel().getStatus()),Visits::getStatus,pageWrap.getModel().getStatus());
         queryWrapper.isNull(Visits::getParentId);
+        queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getMemberId()),Visits::getMemberId,pageWrap.getModel().getMemberId());
         queryWrapper.orderByDesc(Visits::getCreateDate);
         IPage<Visits> result = visitsJoinMapper.selectJoinPage(page, Visits.class,queryWrapper);
 
@@ -1166,7 +1223,7 @@
 
 
     @Override
-    public VisitDetailVO getVisitDetail(Integer id){
+    public VisitDetailVO getVisitDetail(Integer id,Integer memberId){
         Visits visits = visitsMapper.selectById(id);
         if(Objects.isNull(visits)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
@@ -1189,12 +1246,14 @@
             visitDetailVO.setVisitUserCompany(company.getName());
         }
         visitDetailVO.setName(visits.getName());
-            visitDetailVO.setCompanyName(visits.getCompanyName());
-            visitDetailVO.setFaceImg(visits.getFaceImg());
-            visitDetailVO.setImgUrl(visits.getImgurl());
-            visitDetailVO.setIdCardDecode(visits.getIdcardDecode());
-            visitDetailVO.setPrefix(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
-                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode());
+        visitDetailVO.setCompanyName(visits.getCompanyName());
+        visitDetailVO.setFaceImg(visits.getFaceImg());
+        visitDetailVO.setType(visits.getType());
+        visitDetailVO.setConstructionReason(visits.getConstructionReason());
+        visitDetailVO.setImgUrl(visits.getImgurl());
+        visitDetailVO.setIdCardDecode(visits.getIdcardDecode());
+        visitDetailVO.setPrefix(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
+                systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode());
         if(StringUtils.isNotBlank(visits.getDoors())){
             List<DeviceRole> deviceRoleList = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
                             .select(DeviceRole::getName)
@@ -1210,6 +1269,15 @@
                 visitsMapper.selectList(new QueryWrapper<Visits>().lambda()
                 .select(Visits::getName,Visits::getPhone,Visits::getQrcode,Visits::getFaceImg,Visits::getImgurl,Visits::getIdcardDecode,Visits::getStatus)
                 .eq(Visits::getParentId,id)));
+
+
+        if(Objects.nonNull(memberId)){
+            visitDetailVO.setApproveDateVO(
+                    approveService.arrangeApprovedData(id,
+                            visits.getType(),
+                            memberId)
+            );
+        }
         return visitDetailVO;
     }
 
@@ -1292,4 +1360,26 @@
                 .eq(Retention::getMemberId,visits.getMemberId()));
     }
 
+
+    @Override
+    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
+    public void resetPassword(ResetPasswordDTO resetPasswordDTO){
+        if(Objects.isNull(resetPasswordDTO)
+            || StringUtils.isBlank(resetPasswordDTO.getPassword())
+            || StringUtils.isBlank(resetPasswordDTO.getValidCode())
+            || StringUtils.isBlank(resetPasswordDTO.getPhone())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        SystemUser systemUser = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda().eq(SystemUser::getMobile,resetPasswordDTO.getPhone()).eq(SystemUser::getDeleted,Constants.ZERO).last(" limit 1"));
+        if(Objects.isNull(systemUser)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鎵嬫満鍙锋墍灞炶处鎴�");
+        }
+        smsEmailService.validateCode(resetPasswordDTO.getValidCode(),resetPasswordDTO.getPhone());
+        ResetSystemUserPwdDTO dto = new ResetSystemUserPwdDTO();
+        dto.setPassword(resetPasswordDTO.getPassword());
+        dto.setId(systemUser.getId());
+        dto.setOperaUserId(systemUser.getId());
+        systemUserBiz.resetPwd(dto);
+    }
+
 }

--
Gitblit v1.9.3