From 56cd9a53cb4110b0c214f9b66a993eec7e57b4e5 Mon Sep 17 00:00:00 2001
From: nidapeng <jp@doumee.com>
Date: 星期四, 11 四月 2024 11:47:48 +0800
Subject: [PATCH] 最新版本

---
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java |  132 ++++++++++++++++++++++++++++++++++----------
 1 files changed, 102 insertions(+), 30 deletions(-)

diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
index 26aad7c..1f7fec6 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -36,6 +36,7 @@
 import com.doumee.dao.business.model.*;
 import com.doumee.service.business.ext.ERPSyncService;
 import com.doumee.service.business.InterfaceLogService;
+import com.doumee.service.business.impl.hksync.ferp.HkSyncOrgUserToHKServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import lombok.Synchronized;
 import org.apache.commons.collections.CollectionUtils;
@@ -305,22 +306,22 @@
             dealUserChangeList(list,addList,updateList,delList,allList,param);
             if(addList.size()>0){
                 memberMapper.insertBatchSomeColumn(addList);
-                for (Member member:addList) {
+               /* for (Member member:addList) {
                     dealRoleEmpower(member );
-                }
+                }*/
             }
             if(updateList.size()>0){
                 for(Member c : updateList){
-                     dealRoleEmpower(c );
+//                     dealRoleEmpower(c );
                     c.setHkStatus(Constants.ZERO);
                     c.setRemark("寰呭悓姝ュ畨闃插钩鍙�");
                     memberMapper.updateById(c);
                 }
             }
             if(delList.size()>0){
-                for (Member member:delList) {
+               /* for (Member member:delList) {
                     dealRoleEmpower(member );
-                }
+                }*/
                 delIds = delList.stream().map(m->m.getId()).collect(Collectors.toList());
                 memberMapper.update(null,new UpdateWrapper<Member>().lambda()
                         .set(Member::getHkStatus,Constants.ZERO)
@@ -401,7 +402,7 @@
         member.setErpDate(date);
         member.setErpId(param.getId());
         member.setIdcardType(param.getIdType());
-        member.setFsStatus(Constants.ZERO);
+        member.setFaceStatus(Constants.ZERO);
         member.setStatus(param.getStatus());
         member.setType(Constants.memberType.internal);
         String encryptIdNo = DESUtil.encrypt(Constants.EDS_PWD,param.getIdNo());
@@ -839,20 +840,21 @@
                     member.setErpStatus(Constants.ONE);
                     member.setErpDate(new Date());
                     member.setErpId(param.getId());
-                    member.setFsStatus(Constants.ZERO);
+                    member.setFaceStatus(Constants.ZERO);
                     member.setCompanyId(company.getId());
                     member.setType(Constants.memberType.internal);
                     member.setCanVisit(Constants.ONE);
                     String encryptIdNo = DESUtil.encrypt(Constants.EDS_PWD,param.getIdNo());
                     member.setIdcardNo(encryptIdNo);
                     member.setStartTime(param.getValidStartTime());
-                    member.setRoleId(param.getRoleIds()!=null?JSONObject.toJSONString(param.getRoleIds()):null);
+//                    member.setRoleId(param.getRoleIds()!=null?JSONObject.toJSONString(param.getRoleIds()):null);
                     member.setEndTime(param.getValidEndTime());
                     member.setIdcardDecode(Constants.getTuominStr(param.getIdNo()));
                     member.setErpOrgId(param.getOrgId());
                     memberMapper.insert(member);
                 }else{
                     Integer id = member.getId();
+                    String faceImg = member.getFaceImg();
                     BeanUtils.copyProperties(param,member);
                     member.setId(id);
                     member.setCompanyId(company.getId());
@@ -863,15 +865,20 @@
                     member.setEditDate(new Date());
                     member.setErpDate(new Date());
                     member.setHkStatus(Constants.ZERO);
-                    member.setRemark("寰呭悓姝ュ畨闃插钩鍙�");
+                    if(StringUtils.isNotBlank(param.getFaceImg())
+                            && !StringUtils.equals(param.getFaceImg(),faceImg)){
+                        //鍙湁浜鸿劯鍙戠敓鍙樺寲锛屾墠杩涜閲嶆柊鍚屾
+                        member.setFaceStatus(Constants.ZERO);
+                        member.setRemark("寰呭悓姝ュ畨闃插钩鍙�");
+                    }
                     member.setStartTime(param.getValidStartTime());
                     member.setEndTime(param.getValidEndTime());
                     memberMapper.updateById(member);
                 }
                 //2024骞�3鏈�7鏃�17:49:33 鍙栨秷姝や笟鍔″鐞嗕汉鍛橀棬绂佹潈闄�
 //                getRoleIdByParam(param.getRoleIds(),member);
-                //娣诲姞浜哄憳鍗$墖鏁版嵁
-                dealMemberCard(member,param);
+                //娣诲姞浜哄憳鍗$墖鏁版嵁(宸插紑鍚櫄鎷熷崱鍔熻兘锛岀郴缁熶笉闇�瑕佺粰铏氭嫙鍗�)
+//                dealMemberCard(member,param);
             }
     }
 
@@ -920,13 +927,57 @@
             }
         }
     }
-    private   List<Integer>  getRoleIdByParam(Integer[] param, Member member) {
+    private    Integer   getRoleIdByParam(Integer[] param, Member member) {
         //娣诲姞浜哄憳瑙掕壊鍏宠仈鏁版嵁
         member.setRoleId(null);
-        if(!Objects.isNull(member)&&!Objects.isNull(member.getId())){
+        List<MemberRole> roleList = memberRoleMapper.selectList( new QueryWrapper<MemberRole>().lambda()
+               .eq(MemberRole::getIsdeleted,Constants.ZERO)
+               .eq(MemberRole::getMemberId,member.getId()));
+       if((param == null || param.length==0 ) &&( roleList==null || roleList.size()==0)){
+           //妫�鏌ョ敤鎴锋潈闄愭槸鍚﹀彂鐜板彉鍖�
+            return  0;
+       }
+        if((param == null || param.length==0 ) &&( roleList!=null && roleList.size()>0) ){
+            //濡傛灉鍘熸潵鏈夋潈闄愶紝鎺ュ彛杩涜鏉冮檺鍒犻櫎
             memberRoleMapper.delete(new QueryWrapper<MemberRole>().lambda().eq(MemberRole::getMemberId,member.getId()));
+            return 1;
         }
         if(!Objects.isNull(param)&&param.length>Constants.ZERO){
+            if(roleList!=null && roleList.size()>0) {
+                //鍜屽師鏈夋潈闄愯繘琛屽姣旓紝鐪嬫槸鍚︽潈闄愬彂鐢熷彉鍖�
+                boolean ischange1=false;
+                for (MemberRole role : roleList) {
+                    ischange1=false;
+                    for (int j = 0; j < param.length; j++) {
+                        if(Constants.equalsInteger(role.getRoleId(),param[j])){
+                            ischange1=true;
+                           break;
+                        }
+                    }
+                    if(!ischange1){
+                        break;
+                    }
+                }
+
+                boolean ischange2 =false;
+                for (int j = 0; j < param.length; j++) {
+                    ischange2=false;
+                    for (MemberRole role : roleList) {
+                        if(Constants.equalsInteger(role.getRoleId(),param[j])){
+                            ischange2=true;
+                            break;
+                        }
+                    }
+                    if(!ischange2){
+                        break;
+                    }
+                }
+                if(ischange2 && ischange1){
+                    return 0;//鏉冮檺鏈彂鐢熸敼鍙�
+                }
+            }
+            //濡傛灉鍘熸潵鏈夋潈闄愶紝鎺ュ彛杩涜鏉冮檺鍒犻櫎
+            memberRoleMapper.delete(new QueryWrapper<MemberRole>().lambda().eq(MemberRole::getMemberId,member.getId()));
             //鏌ヨ鏁版嵁搴撳瓨鍦ㄧ殑鏉冮檺
             List<DeviceRole> deviceRoleList= deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
                     .eq(DeviceRole::getType,Constants.TWO)
@@ -957,19 +1008,21 @@
                     memberRole.setCreateDate(new Date());
                     memberRole.setMemberId(member.getId());
                     memberRole.setIsdeleted(Constants.ZERO);
-                    memberRole.setRoleId(deviceRole.getId().toString());
+                    memberRole.setRoleId(deviceRole.getId());
                     memberRoleList.add(memberRole);
                 }
+                member.setRoleId(ids);
                 memberRoleMapper.insertBatchSomeColumn(memberRoleList);
                 member.setRoleId(ids);
-                return  r;
+                return  1;
             }
         }
-        return  null;
+        return  0;
     }
 
 
     @Override
+    @Transactional
     public void roleUserAuthor(UserAuthorRequest param){
             if(Objects.isNull(param)
                     ||StringUtils.isBlank(param.getUserId())){
@@ -984,18 +1037,22 @@
             if(Objects.isNull(member)){
                 throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝鐢ㄦ埛淇℃伅涓嶅瓨鍦紒");
             }
-            List<Integer> doorIds = getRoleIdByParam(param.getRoleIds(),member);
+            Integer ischange = getRoleIdByParam(param.getRoleIds(),member);
+            if(ischange == 0){
+                return;//鏈彂鐜版潈闄愬彉鍖栵紝鐩存帴杩斿洖
+            }
             if(param.getRoleIds()!=null && param.getRoleIds().length>0 && StringUtils.isBlank(member.getRoleId())){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝鏈煡璇㈠埌鏈夋晥闂ㄧ缁勬暟鎹�");
             }
             memberMapper.update(null,new UpdateWrapper<Member>().lambda()
-                    .eq(Member::getId,member.getId())
-                    .set(Member::getRoleId,member.getRoleId())
-                    .set(Member::getRemark,"寰呭悓姝ュ畨闃插钩鍙�")
-                    .set(Member::getStartTime,param.getValidStartTime())
-                    .set(Member::getEndTime,param.getValidEndTime())
-                    .set(Member::getEditDate,new Date())
-                    .set(Member::getHkStatus,Constants.ZERO ));
+                .eq(Member::getId,member.getId())
+                .set(Member::getRoleId,member.getRoleId())
+                .set(Member::getStartTime,param.getValidStartTime())
+                .set(Member::getEndTime,param.getValidEndTime())
+                .set(Member::getEditDate,new Date()) );
+            //閲嶆柊鎺堟潈
+            HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(null,member,deviceRoleMapper,empowerMapper,deviceMapper);
+
     }
 
 
@@ -1048,34 +1105,49 @@
                 }
             }
     }
+    private void isValidDoors(String doors) {
+        if(StringUtils.isNotBlank(doors)){
+            String[] dIds = doors.split(",");
+            List<DeviceRole> roles = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
+                    .eq(DeviceRole::getIsdeleted,Constants.ZERO)
+                    .eq(DeviceRole::getType,Constants.DeviceRoleType.fk)
+                    .in(DeviceRole::getId, Arrays.asList(dIds)));
+            if(roles == null || roles.size()==0 || roles.size() != dIds.length){
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇烽�夋嫨鏈夋晥鐨勮瀹㈤棬绂佺粍锛�");
+            }
+        }
 
+    }
 
     @Override
     public void approveApply(ApproveNoticeRequest param){
         try{
-            if(!Objects.isNull(param)
-                ){
-
-            }
             if(Objects.isNull(param)
                     ||Objects.isNull(param.getId())
                     ||Objects.isNull(param.getStatus())){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST);
             }
             if(!(param.getStatus()==Constants.ZERO||param.getStatus()==Constants.ONE)){
-                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐘舵�佺爜閿欒");
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀹℃壒缁撴灉鍙傛暟涓嶆纭�");
             }
             if(visitsMapper.selectCount(new QueryWrapper<Visits>().lambda().eq(Visits::getErpId,param.getId())
                     .ne(Visits::getStatus,Constants.VisitStatus.submitCheck))>Constants.ZERO){
-                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏁版嵁鐘舵�佺爜閿欒");
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇ョ敵璇峰綋鍓嶇姸鎬佷笉鏀寔璇ユ搷浣�");
             }
+            isValidDoors(param.getDoors());
             List<Visits> visitsList = visitsMapper.selectList(new QueryWrapper<Visits>().lambda().eq(Visits::getErpId,param.getId()));
             if(CollectionUtils.isNotEmpty(visitsList)){
                 visitsList.forEach(i->{
+                    i.setEndCheckInfo("鐢宠鏃堕棿锛�"+DateUtil.getPlusTime2(i.getStarttime())+"-"
+                            +DateUtil.getPlusTime2(i.getEndtime())
+                            +" 鐢宠闂ㄧ锛�"+i.getDoors());
                     i.setStatus(!param.getStatus().equals(Constants.ZERO)?Constants.VisitStatus.pass:Constants.VisitStatus.noPass);
                     i.setEndCheckDate(DateUtil.StringToDate(param.getApproveDate(),"yyyy-MM-dd HH:mm:ss"));
                     i.setHkStatus(Constants.ZERO);
                     i.setRemark("寰呭悓姝ュ畨闃插钩鍙�");
+                    i.setStarttime( param.getStartTime());
+                    i.setEndtime(param.getEndTime());
+                    i.setDoors(param.getDoors());
                     visitsMapper.updateById(i);
                     if(Objects.isNull(i.getParentId())){
                         wxPlatNotice.sendVisitAuditTemplateNotice(i,

--
Gitblit v1.9.3