From 98e52a2d1a05276e11d2e5c99ec05e670228fbd6 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 18 十二月 2023 18:21:20 +0800
Subject: [PATCH] 海康接口对接开发
---
 server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java                                      |   14 +++
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java       |  127 +++++++++++++++++++++++++------
 server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java                                 |    2 
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java                            |   43 ++++++++++
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentResponse.java |    2 
 5 files changed, 160 insertions(+), 28 deletions(-)
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
index 74a05c3..a0065b2 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -103,6 +103,49 @@
         }
 
     }
+
+    /**
+     * 璇佷欢绫诲瀷
+     */
+    public  enum CertificateType {
+
+        SHENFENZHENG(111, "韬唤璇�"  ),
+        HUZHAO(414, "鎶ょ収"  ),
+        HUKOUBEN(113, "鎴峰彛绨�"  ),
+        JIASHIZHENG(335, "椹鹃┒璇�"  ),
+        GONGXUOZHENG(131, "宸ヤ綔璇�"  ),
+        XUESHENGZHENG(133, "瀛︾敓璇�"  ),
+        QITA(990, "鍏朵粬"  )
+        ;
+        // 鎴愬憳鍙橀噺
+        private String name;
+        private int key;
+
+        // 鏋勯�犳柟娉�
+        CertificateType(int key, String name ) {
+            this.name = name;
+            this.key = key;
+        }
+
+
+        // get set 鏂规硶
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public int getKey() {
+            return key;
+        }
+
+        public void setKey(int key) {
+            this.key = key;
+        }
+
+    }
     public  enum ReturnCode {
 
         PARK_LINE_IN("0x00072001", "璧勬簮淇℃伅涓嶅瓨鍦�"  )
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentResponse.java
index 5f82286..50e5689 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentResponse.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentResponse.java
@@ -10,5 +10,5 @@
 public class VisitAppointmentResponse {
 
     private String  appointRecordId;//	string	False	棰勭害璁板綍ID锛屽彲浣滀负淇敼銆佸彇娑堥绾︾殑渚濇嵁
-    private List<VisitAppointmentVistorRequest>   appointmentInfoList;//	object[]	False	棰勭害璇︾粏淇℃伅
+    private List<VisitAppointmentMDJResponse>   appointmentInfoList;//	object[]	False	棰勭害璇︾粏淇℃伅
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java b/server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
index 643d8cc..d278adf 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -87,10 +87,22 @@
     try {
         birthday = dateFormat.parse(birthdayString);
     } catch (Exception e) {
-        throw new RuntimeException(e);
+//        throw new RuntimeException(e);
     }
     return  birthday;
 }
+    public static  Integer   getSexByCardNo(String idCard){
+        if(idCard ==null || idCard.length()<17){
+            return null;
+        }
+        String str = idCard.substring(16, 17); // 鎴彇韬唤璇佸彿鐨勫墠鍏綅鏁板瓧浣滀负鍑虹敓鏃ユ湡
+        try {
+            Integer num  = Integer.parseInt(str);
+            return  (num % 2 !=0) ? 1:2 ;
+        } catch (Exception e) {
+        }
+        return  null;
+    }
 
     /**
      *   鍒ゆ柇鏄惁涓烘湁鏁堣溅鐗屽彿
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
index be60fde..76b3346 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
@@ -203,7 +203,7 @@
     @ExcelColumn(name="openid")
     private String openid;
 
-    @ApiModelProperty(value = "娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝�", example = "1")
+    @ApiModelProperty(value = "娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝� ", example = "1")
     @ExcelColumn(name="娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝�")
     private Integer hkStatus;
 
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
index b9aa525..174a8be 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
@@ -10,6 +10,7 @@
 import com.doumee.core.haikang.model.param.respose.*;
 import com.doumee.core.haikang.service.HKService;
 import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DESUtil;
 import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.ImageBase64Util;
 import com.doumee.dao.business.CompanyMapper;
@@ -57,6 +58,8 @@
             return   ;
         }
         Constants.DEALING_HK_VISIT =true;
+        String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+                +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
         List<DeviceRole> roleList = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
                 .eq(DeviceRole::getType, Constants.ONE));
         //鏍囪鏄惁璧板厤鐧昏棰勭害
@@ -64,9 +67,9 @@
         String applyLwType =systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.MDJ_LW_REQUIRED).getCode();
         try {
             //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁
-            List<Visits> alllist = getVisitList();
+            List<Visits> list = getVisitList();
             //鎸夌収鐖剁骇鐢宠鍒嗘壒澶勭悊姣忔鐢宠鏁版嵁
-            List<Visits> list = getParentList(alllist);
+//            List<Visits> list = getParentList(alllist);
             if(list ==null || list.size()==0){
                 return;
             }
@@ -74,7 +77,7 @@
             for(Visits c : list) {
                 //鍙戣捣娴峰悍棰勭害鎺ュ彛锛堥渶瑕佺櫥璁帮級锛屾牴鎹绾﹁繑鍥炴帴鍙e皝瑁呯敵璇疯褰曟洿鏂板瓧娈�
                 String type = Constants.equalsInteger(c.getType(),Constants.ONE)?applyType:applyLwType;
-                getUpdateModelByResponse(c,date,type,roleList);
+                getUpdateModelByResponse(c,date,type,roleList,path);
                 visitsMapper.updateById(c);
             }
         }catch (Exception e){
@@ -117,69 +120,143 @@
      * @param date
      * @param type 0闇�瑕佺櫥璁� 1鍏嶇櫥璁�
      */
-    private void getUpdateModelByResponse(  Visits c,Date date,String type,List<DeviceRole> roleList ) {
+    private void getUpdateModelByResponse(  Visits c,Date date,String type,List<DeviceRole> roleList,String path ) {
         String code = null;
         String id = null;
         //鍙戣捣娴峰悍棰勭害鎺ュ彛
         if(StringUtils.equals(type,"0")){
             //锛堥渶瑕佺櫥璁帮級
-            BaseResponse<VisitAppointmentResponse> response =  HKService.visitAppiontment(getHkRequestPara(c,roleList));
+            VisitAppointmentRequest request =  getHkRequestPara(c,roleList,path);
+            if(request == null){
+                //娴峰悍涓嬪彂鎴愬姛
+                c.setStatus(Constants.VisitStatus.xfFail);//涓嬪彂娴峰悍澶辫触
+                c.setRemark("涓嬪彂娴峰悍鍙傛暟涓嶆纭紒");
+                c.setHkStatus(Constants.ONE);
+                c.setHkDate(date);
+                return;
+            }
+            BaseResponse<VisitAppointmentResponse> response =  HKService.visitAppiontment(request);
+            code =response!=null ?response.getCode():null;
+            id = (response!=null && response.getData()!=null
+                    && response.getData().getAppointmentInfoList() !=null
+                    && response.getData().getAppointmentInfoList().size()>0)?response.getData().getAppointmentInfoList().get(0).getOrderId():null;
         }else{
             //鍏嶇櫥璁�
-            BaseResponse<VisitAppointmentMDJResponse> response = HKService.visitAppiontmentMDJ(getHkMDJRequestPara(c) );
+            VisitAppointmentMDJRequest request =getHkMDJRequestPara(c,roleList,path);
+            if(request == null){
+                //娴峰悍涓嬪彂鎴愬姛
+                c.setStatus(Constants.VisitStatus.xfFail);//涓嬪彂娴峰悍澶辫触
+                c.setRemark("涓嬪彂娴峰悍鍏嶇櫥璁板弬鏁颁笉姝g‘锛�");
+                c.setHkStatus(Constants.ONE);
+                c.setHkDate(date);
+                return;
+            }
+            BaseResponse<VisitAppointmentMDJResponse> response = HKService.visitAppiontmentMDJ(request );
+            code =response!=null ?response.getCode():null;
+            id = (response!=null && response.getData()!=null)?response.getData().getOrderId():null;
         }
 
         if (code!= null && id!=null) {
             //娴峰悍涓嬪彂鎴愬姛
             c.setHkId( id);//棰勭害鏍囪瘑
+            c.setRemark("涓嬪彂娴峰悍鎴愬姛锛併��"+type+"銆�");
             c.setStatus(Constants.VisitStatus.xfSuccess);//涓嬪彂娴峰悍鎴愬姛
         } else {
             //娴峰悍涓嬪彂鎴愬姛
+            c.setRemark("涓嬪彂娴峰悍澶辫触锛併��"+type+"銆�");
             c.setStatus(Constants.VisitStatus.xfFail);//涓嬪彂娴峰悍澶辫触
         }
         c.setHkStatus(Constants.ONE);
         c.setHkDate(date);
     }
 
-    private VisitAppointmentMDJRequest getHkMDJRequestPara(Visits c) {
-        return  null;
-    }
-
-    private VisitAppointmentRequest getHkRequestPara(Visits c,List<DeviceRole> roleList ) {
-        VisitAppointmentRequest request = new VisitAppointmentRequest();
+    /**
+     * 鍏嶇櫥璁版帴鍙e弬鏁�
+     * @param c
+     * @return
+     */
+    private VisitAppointmentMDJRequest getHkMDJRequestPara(Visits c,List<DeviceRole> roleList,String path) {
+        VisitAppointmentMDJRequest request = new VisitAppointmentMDJRequest();
+        VisitAppointmentVistorRequest info =getRequestInfoByVisit(c,path);
+        if(info == null ){
+            //浜鸿劯涓虹┖锛屼笉鑳借繘琛屾帹閫�
+            return  null;
+        }
         request.setVisitStartTime(DateUtil.getISO8601Timestamp(c.getStarttime()));
         request.setVisitEndTime(DateUtil.getISO8601Timestamp(c.getEndtime()));
         request.setReceptionistId(c.getReceptMemberHkId());//琚浜烘捣搴风紪鐮�
         request.setVisitPurpose(c.getReason());
-        request.setVisitorPermissionSet(new VisitAppointmentPermissonRequest());
+        request.setVisitorInfo(info);
+        request.setVisitorPermissionSet(getVisitPermissonRequest(roleList,c));
+        return  request;
+    }
+
+    /**
+     * 璁垮鏉冮檺缁�
+     * @param roleList
+     * @param c
+     * @return
+     */
+    private VisitAppointmentPermissonRequest getVisitPermissonRequest(List<DeviceRole> roleList, Visits c) {
+        VisitAppointmentPermissonRequest p = new VisitAppointmentPermissonRequest();
         //鑾峰彇鏉冮檺缁勯泦鍚�
         String[] roles = getHkRoles(c.getDoors(),roleList);
         if(roles==null || roles.length ==0){
             //浣跨敤榛樿璁垮鏉冮檺缁�
-            request.getVisitorPermissionSet().setDefaultPrivilegeGroupFlag(Constants.ONE+"");
+            p.setDefaultPrivilegeGroupFlag(Constants.ONE+"");
         }else{
             //鎸囧畾鏈夋晥娴峰悍璁垮鏉冮檺缁勬暟鎹�
-            request.getVisitorPermissionSet().setDefaultPrivilegeGroupFlag(Constants.ZERO+"");
-            request.getVisitorPermissionSet().setPrivilegeGroupIds(roles);
+            p.setDefaultPrivilegeGroupFlag(Constants.ZERO+"");
+            p.setPrivilegeGroupIds(roles);
         }
+        return  p;
+    }
+
+    private VisitAppointmentRequest getHkRequestPara(Visits c,List<DeviceRole> roleList,String path ) {
+        VisitAppointmentRequest request = new VisitAppointmentRequest();
+        //鐢宠浜轰俊鎭�
+        VisitAppointmentVistorRequest info =getRequestInfoByVisit(c,path);
+        if(info == null ){
+            //浜鸿劯涓虹┖锛屼笉鑳借繘琛屾帹閫�
+            return  null;
+        }
+        request.setVisitStartTime(DateUtil.getISO8601Timestamp(c.getStarttime()));
+        request.setVisitEndTime(DateUtil.getISO8601Timestamp(c.getEndtime()));
+        request.setReceptionistId(c.getReceptMemberHkId());//琚浜烘捣搴风紪鐮�
+        request.setVisitPurpose(c.getReason());
+        //鑾峰彇鏉冮檺缁勯泦鍚�
+        request.setVisitorPermissionSet(getVisitPermissonRequest(roleList,c));
         List<VisitAppointmentVistorRequest> infolist = new ArrayList<>();
-        //鐢宠浜�
-        infolist.add(getRequestInfoByVisit(c));
-        if(c.getVisitsList() != null){
-            //闅忚浜�
-            for(Visits v : c.getVisitsList()){
-                infolist.add(getRequestInfoByVisit(v));
-            }
-        }
+        infolist.add(info);
         request.setVisitorInfoList(infolist);
         return  request;
     }
 
-    private VisitAppointmentVistorRequest getRequestInfoByVisit(Visits c) {
+    private VisitAppointmentVistorRequest getRequestInfoByVisit(Visits c,String path) {
         VisitAppointmentVistorRequest info = new VisitAppointmentVistorRequest();
+        //浜鸿劯鏁版嵁
+        if(StringUtils.isBlank(c.getName())
+                ||StringUtils.isBlank(c.getPhone())
+                || StringUtils.isBlank(c.getFaceImg()) ){
+            return  null;
+        }
+        if(StringUtils.isNotBlank(c.getFaceImg())){
+            info.setVisitorPhoto(ImageBase64Util.Image2Base64(path+c.getFaceImg()));
+        }
+        if(info.getVisitorPhoto() == null){
+            return  null;
+        }
         info.setVisitorName(c.getName());
         info.setVisitorWorkUnit(c.getCompanyName());
         info.setPhoneNo(c.getPhone());
+        info.setPlateNo(c.getCarNos());
+        if(Constants.equalsInteger(c.getIdcardType(),Constants.ZERO)){
+            info.setCertificateType(HKConstants.CertificateType.SHENFENZHENG.getKey()+"");
+            info.setCertificateNo(DESUtil.decrypt(Constants.EDS_PWD, c.getIdcardNo()));
+        } else if(Constants.equalsInteger(c.getIdcardType(),Constants.TWO)){
+            info.setCertificateType(HKConstants.CertificateType.HUZHAO.getKey()+"");
+            info.setCertificateNo(DESUtil.decrypt(Constants.EDS_PWD,  c.getIdcardNo()));
+        }
 
         return info;
     }
--
Gitblit v1.9.3