From 2079ba28f20bde46f7736699c97abf0e1564770d Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 14 十月 2024 09:30:46 +0800
Subject: [PATCH] 最新版本

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java |  148 +++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 119 insertions(+), 29 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
index 09e6a3f..0665993 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
@@ -4,13 +4,10 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.doumee.biz.system.SystemDictDataBiz;
-import com.doumee.core.constants.ResponseStatus;
-import com.doumee.core.exception.BusinessException;
 import com.doumee.core.haikang.model.HKConstants;
 import com.doumee.core.haikang.model.param.BaseListPageResponse;
 import com.doumee.core.haikang.model.param.BaseResponse;
 import com.doumee.core.haikang.model.param.request.*;
-import com.doumee.core.haikang.model.param.request.event.visit.EventVisitInfoRequest;
 import com.doumee.core.haikang.model.param.respose.*;
 import com.doumee.core.haikang.service.HKService;
 import com.doumee.core.utils.Constants;
@@ -73,14 +70,6 @@
                 AppointmentInfoResponse model =  getVisitRecord(c.getHkId());
                 if(model == null){
                     continue;
-                   /* Visits update = new Visits();
-                    //宸插け鏁�
-                    update.setStatus(Constants.VisitStatus.invalid);
-                    update.setEditDate(date);
-                    update.setId(c.getId());
-                    update.setRemark("棰勭害宸茶娓呴櫎");
-                    visitsMapper.updateById(update);
-                    continue;*/
                 }
                 /**
                  *      * 0锛氬緟瀹℃牳锛堥绾﹀緟瀹℃壒锛夈��
@@ -155,6 +144,92 @@
         }
     }
 
+    /**
+     * 鏌ヨICCM璁垮鏁版嵁鐘舵��
+     */
+    @Override
+    public void getOutTimeVisitRecordIccm(){
+        if(Constants.DEALING_HK_VISIT_EXPIRE){
+            return   ;
+        }
+        Constants.DEALING_HK_VISIT_EXPIRE =true;
+        try {
+            //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁
+            List<Visits> list = getExpireVisitList();
+            //鎸夌収鐖剁骇鐢宠鍒嗘壒澶勭悊姣忔鐢宠鏁版嵁
+            if(list ==null || list.size()==0){
+                return;
+            }
+            Date date = new Date();
+            for(Visits c : list) {
+                //鍙戣捣娴峰悍棰勭害鎺ュ彛锛堥渶瑕佺櫥璁帮級锛屾牴鎹绾﹁繑鍥炴帴鍙e皝瑁呯敵璇疯褰曟洿鏂板瓧娈�
+                IccmAppointmentListResponse data =  getVisitRecordIccm(c.getHkId());
+                if(data == null || data.getVisitorList() ==null || data.getVisitorList().size()==0){
+                    continue;
+                }
+                /**
+                 * 璁垮鐘舵��(0:鏈鍒�,1:宸茬鍒�,2:宸茬閫�,3:婊炵暀,4:鏈闂�,5:鑷姩绛剧,6:鏈閫�)
+                 */
+                IccmAppointmentVisitorResponse model = data.getVisitorList().get(0);
+                if (model.getVisitorStatus()!=null && ",4,".contains( ","  +model.getVisitorStatus()+"," )){
+                    //瀵圭浉搴旂姸鎬佷笅鐨勬暟鎹繘琛屻�愬凡澶辨晥銆戝鐞�
+                    Visits update = new Visits();
+                    //宸插け鏁�
+                    update.setStatus(Constants.VisitStatus.invalid);
+                    update.setEditDate(date);
+                    update.setId(c.getId());
+                    update.setInDate(DateUtil.getISO8601DateByStr2(data.getVisitStartTime()));
+                    update.setOutDate(DateUtil.getISO8601DateByStr2(data.getVisitEndTime()));
+                    update.setRemark("瓒呮椂鏈櫥璁�");
+                    visitsMapper.updateById(update);
+                }
+                if (model.getVisitorStatus()!=null && ",2,5,".contains( ","  +model.getVisitorStatus()+"," )){
+                    // 瀵圭浉搴旂姸鎬佷笅鐨勬暟鎹繘琛屻�愬凡绛剧銆戝鐞�
+                    if(!Constants.equalsInteger(c.getStatus(),Constants.VisitStatus.signout)){
+                        Visits update = new Visits();
+                        //宸插け鏁�
+                        update.setStatus(Constants.VisitStatus.signout);
+                        update.setEditDate(date);
+                        update.setId(c.getId());
+                        update.setInDate(DateUtil.getISO8601DateByStr2(data.getVisitStartTime()));
+                        update.setOutDate(DateUtil.getISO8601DateByStr2(data.getVisitEndTime()));
+                        update.setRemark("宸茬绂�");
+                        visitsMapper.updateById(update);
+
+                        //鍏堝垹闄ゅ師鏈夌殑鍦ㄥ満浜哄憳(鏅�氳瀹級
+                        retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
+                                .eq(Retention::getType,Constants.memberType.visitor)
+                                .eq(Retention::getMemberId,c.getMemberId()));
+                    }
+                }
+                if (model.getVisitorStatus()!=null&& ",1,3,6,".contains( ","  +model.getVisitorStatus()+"," )){
+                    //濡傛灉宸茬櫥璁�
+                    if(!Constants.equalsInteger(c.getStatus(),Constants.VisitStatus.signin)){
+                        Visits update = new Visits();
+                        //宸插け鏁�
+                        update.setStatus(Constants.VisitStatus.signin);
+                        update.setEditDate(date);
+                        update.setId(c.getId());
+                        update.setInDate(DateUtil.getISO8601DateByStr2(data.getVisitStartTime()));
+                        update.setOutDate(DateUtil.getISO8601DateByStr2(data.getVisitEndTime()));
+                        update.setRemark("宸茬鍒�");
+                        visitsMapper.updateById(update);
+                        //鍏堝垹闄ゅ師鏈夌殑鍦ㄥ満浜哄憳(鏅�氳瀹級
+                        retentionMapper.delete(new UpdateWrapper<Retention>().lambda()
+                                .eq(Retention::getType,Constants.memberType.visitor)
+                                .eq(Retention::getMemberId,c.getMemberId()));
+                        //鍐嶆彃鍏ユ渶鏂扮殑鍦ㄥ巶浜哄憳
+                        retentionMapper.insert(getRetentionModelByVisitRequest(c,update.getInDate()));
+                    }
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            Constants.DEALING_HK_VISIT_EXPIRE =false;
+        }
+    }
+
     private Retention getRetentionModelByVisitRequest(Visits visits,Date date) {
         Retention retention = new Retention();
         retention.setIsdeleted(Constants.ZERO);
@@ -195,6 +270,24 @@
         }
         return response.getData().getList().get(0);
     }
+    public IccmAppointmentListResponse getVisitRecordIccm(String orderId){
+        //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+        if(StringUtils.isBlank(orderId)){
+            return  null;
+        }
+        IccmAppointmentListRequest param =  new IccmAppointmentListRequest();
+        param.setPageNo(1);
+        param.setPageSize(1);
+        param.setOrderId(orderId);
+        BaseResponse<BaseListPageResponse<IccmAppointmentListResponse>> response = HKService.iccmAppointmentRecords(param);
+        if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)  ){
+           return null;
+        }
+        if(response.getData() == null || response.getData().getList() == null|| response.getData().getList().size() ==0){
+           return  null;
+        }
+        return response.getData().getList().get(0);
+    }
     @Override
     public  void syncVisitData(){
         if(Constants.DEALING_HK_VISIT){
@@ -206,13 +299,9 @@
         List<DeviceRole> roleList = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
                 .eq(DeviceRole::getType, Constants.ONE));
         //鏍囪鏄惁璧板厤鐧昏棰勭害
-//        String applyType =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MDJ_VISIT_REQUIRED).getCode();
-//        String applyLwType =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MDJ_LW_REQUIRED).getCode();
         try {
             //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁
             List<Visits> list = getVisitList();
-            //鎸夌収鐖剁骇鐢宠鍒嗘壒澶勭悊姣忔鐢宠鏁版嵁
-//            List<Visits> list = getParentList(alllist);
             if(list ==null || list.size()==0){
                 return;
             }
@@ -329,7 +418,7 @@
         c.setHkStatus(Constants.ONE);
         c.setHkDate(date);
     }
-    private void getUpdateModelByResponseIccm(  Visits c,Date date, List<DeviceRole> roleList,String path ) {
+    public static void getUpdateModelByResponseIccm(  Visits c,Date date, List<DeviceRole> roleList,String path ) {
         String code = null;
         String id = null;
         String qrcode = null;
@@ -419,7 +508,7 @@
         request.setVisitorPermissionSet(getVisitPermissonRequest(roleList,c));
         return  request;
     }
-    private IccmAppointmentMDJRequest getHkMDJRequestParamIccm(Visits c,List<DeviceRole> roleList,String path) {
+    public static IccmAppointmentMDJRequest getHkMDJRequestParamIccm(Visits c,List<DeviceRole> roleList,String path) {
         IccmAppointmentMDJRequest request = new IccmAppointmentMDJRequest();
         IccmAppointmentVistorRequest info =getRequestInfoByVisitIccm(c,path);
         if(info == null ){
@@ -429,7 +518,7 @@
         request.setVisitStartTime(DateUtil.getISO8601Timestamp2(c.getStarttime()));
         request.setVisitEndTime(DateUtil.getISO8601Timestamp2(c.getEndtime()));
         request.setReceptionistId(c.getReceptMemberHkId());//琚浜烘捣搴风紪鐮�
-        if(StringUtils.isNotBlank(c.getReason())){
+       /* if(StringUtils.isNotBlank(c.getReason())){
             char[] charArray = c.getReason().toCharArray();
             int length = charArray.length;
             if(length>32){
@@ -437,7 +526,7 @@
             }else{
                 request.setVisitPurpose(c.getReason());
             }
-        }
+        }*/
         request.setVisitorInfo(info);
         request.setVisitorPermissionSet(getVisitPermissonRequestIccm(roleList,c));
         return  request;
@@ -463,7 +552,7 @@
         }
         return  p;
     }
-    private IccmPermissionSetRequest getVisitPermissonRequestIccm(List<DeviceRole> roleList, Visits c) {
+    public static IccmPermissionSetRequest getVisitPermissonRequestIccm(List<DeviceRole> roleList, Visits c) {
         IccmPermissionSetRequest p = new IccmPermissionSetRequest();
         //鑾峰彇鏉冮檺缁勯泦鍚�
         String[] roles = getHkRoles(c.getDoors(),roleList);
@@ -506,7 +595,7 @@
         request.setVisitorInfoList(infolist);
         return  request;
     }
-    private IccmAppointmentRequest getHkRequestParaIccm(Visits c,List<DeviceRole> roleList,String path ) {
+    public static  IccmAppointmentRequest getHkRequestParaIccm(Visits c,List<DeviceRole> roleList,String path ) {
         IccmAppointmentRequest request = new IccmAppointmentRequest();
         //鐢宠浜轰俊鎭�
         IccmAppointmentVistorRequest info =getRequestInfoByVisitIccm(c,path);
@@ -514,11 +603,11 @@
             //浜鸿劯涓虹┖锛屼笉鑳借繘琛屾帹閫�
             return  null;
         }
-        request.setVisitStartTime(DateUtil.getISO8601Timestamp(c.getStarttime()));
-        request.setVisitEndTime(DateUtil.getISO8601Timestamp(c.getEndtime()));
+        request.setVisitStartTime(DateUtil.getISO8601Timestamp2(c.getStarttime()));
+        request.setVisitEndTime(DateUtil.getISO8601Timestamp2(c.getEndtime()));
         request.setReceptionistId(c.getReceptMemberHkId());//琚浜烘捣搴风紪鐮�
 
-        if(StringUtils.isNotBlank(c.getReason())){
+      /*  if(StringUtils.isNotBlank(c.getReason())){
             char[] charArray = c.getReason().toCharArray();
             int length = charArray.length;
             if(length>32){
@@ -526,7 +615,7 @@
             }else{
                 request.setVisitPurpose(c.getReason());
             }
-        }
+        }*/
         //鑾峰彇鏉冮檺缁勯泦鍚�
         request.setVisitorPermissionSet(getVisitPermissonRequestIccm(roleList,c));
         List<IccmAppointmentVistorRequest> infolist = new ArrayList<>();
@@ -581,7 +670,7 @@
 
         return info;
     }
-    private IccmAppointmentVistorRequest getRequestInfoByVisitIccm(Visits c,String path) {
+    public static IccmAppointmentVistorRequest getRequestInfoByVisitIccm(Visits c,String path) {
         IccmAppointmentVistorRequest info = new IccmAppointmentVistorRequest();
         //浜鸿劯鏁版嵁
         if(StringUtils.isBlank(c.getName())
@@ -590,9 +679,12 @@
             return  null;
         }
         if(StringUtils.isNotBlank(c.getFaceImg())){
+            log.info("===================================="+path+c.getFaceImg()+"======start====");
             info.setVisitorPhoto(ImageBase64Util.Image2Base64(path+c.getFaceImg()));
+            log.info("===================================="+path+c.getFaceImg()+"========end===");
         }
         if(info.getVisitorPhoto() == null){
+            log.info("===================================="+path+c.getFaceImg()+"======imgerror=====");
             return  null;
         }
         if(StringUtils.isNotBlank(c.getName())){
@@ -604,7 +696,6 @@
                 info.setVisitorName(c.getName());
             }
         }
-
         if(StringUtils.isNotBlank(c.getCompanyName())){
             char[] charArray = c.getCompanyName().toCharArray();
             int length = charArray.length;
@@ -624,11 +715,10 @@
             info.setCertificateType(HKConstants.CertificateType.HUZHAO.getKey()+"");
             info.setCertificateNo(DESUtil.decrypt(Constants.EDS_PWD,  c.getIdcardNo()));
         }
-
         return info;
     }
 
-    private String[] getHkRoles(String doors, List<DeviceRole> roleList) {
+    public static String[] getHkRoles(String doors, List<DeviceRole> roleList) {
         if(StringUtils.isBlank(doors) || roleList.size()==0|| roleList.size()==0){
             return null;
         }

--
Gitblit v1.9.3