From c30cfcc106111b8087691557ee8143f6be9c4e5d Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 07 十二月 2023 15:21:35 +0800
Subject: [PATCH] 海康接口对接开发

---
 server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java                           |    4 
 server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java                                |  995 ++--------------------------------------------
 server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DeviceEvent.java                      |    4 
 server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java                           |   14 
 server/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java                      |    1 
 server/dmvisit_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java                   |    2 
 server/dmvisit_service/src/main/java/com/doumee/core/utils/IdCardTool.java                               |    5 
 server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ProblemLog.java                       |    2 
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEventServiceImpl.java |    1 
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java             |  186 ++++++++
 10 files changed, 272 insertions(+), 942 deletions(-)

diff --git a/server/dmvisit_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java b/server/dmvisit_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
index 8cf0d2d..c224704 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
@@ -136,7 +136,7 @@
         systemUser.setSalt(salt);
 
         // 鍒涘缓鐢ㄦ埛璁板綍
-        systemUser.setType(Constants.UserType.SYSTEM.getKey());
+        systemUser.setType(Constants.ZERO);
         Integer userId = systemUserService.create(systemUser);
         // 璁剧疆閮ㄩ棬
         if (systemUser.getDepartmentId() != null) {
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 6ad128e..924cb84 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
@@ -1,12 +1,12 @@
 package com.doumee.core.utils;
 
-import org.apache.commons.collections4.CollectionUtils;
+
+import org.apache.commons.lang3.StringUtils;
 
 import java.math.BigDecimal;
 import java.net.URLDecoder;
-import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import java.text.SimpleDateFormat;
+import  java.util.Date;
 
 public class Constants {
 
@@ -22,6 +22,55 @@
     public static final String HK_PUSH_URL = "HK_PUSH_URL";
     public static final String HK_ROOTORG_CODE ="HK_ROOTORG_CODE" ;
 
+    //琚嫓璁夸汉淇℃伅鏍¢獙鏂瑰紡锛�0鎵嬫満鍙峰崟鐙牎楠� 1鎵嬫満鍙峰拰濮撳悕缁勫悎鏍¢獙锛�
+    public static final String BEVISITED_USER_VALID = "BEVISITED_USER_VALID";
+    public static final String SELECT_DOORS_VISIT_REQUIRED = "SELECT_DOORS_VISIT_REQUIRED";
+    public static final String SELECT_DOORS_LW_REQUIRED = "SELECT_DOORS_LW_REQUIRED";
+    public static final String PROBLEM_LW_REQUIRED = "PROBLEM_LW_REQUIRED";
+    public static final String PROBLEM_VISIT_REQUIRED = "PROBLEM_VISIT_REQUIRED";
+    public static final String MDJ_LW_REQUIRED = "MDJ_LW_REQUIRED";
+    public static final String MDJ_VISIT_REQUIRED = "MDJ_VISIT_REQUIRED";
+    public static final String EDS_PWD ="!@#$%^&QWERTY" ;
+
+
+    public static  Date  getBirthdyByCardNo(String idCard){
+    if(idCard ==null || idCard.length()<14){
+        return null;
+    }
+    Date birthday = null; // 瑙f瀽涓烘棩鏈熷璞�
+    String birthdayString = idCard.substring(6, 14); // 鎴彇韬唤璇佸彿鐨勫墠鍏綅鏁板瓧浣滀负鍑虹敓鏃ユ湡
+    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
+    try {
+        birthday = dateFormat.parse(birthdayString);
+    } catch (Exception e) {
+        throw new RuntimeException(e);
+    }
+    return  birthday;
+}
+    public static  String  getTuominStr(String s){
+        if(StringUtils.isEmpty(s)){
+            return "";
+        }
+        int l = s.length();
+        if(l <= 2){
+            return s.substring(0,1)+"****";
+        }
+        if(l <= 5){
+            return s.substring(0,2)+"***";
+        }
+        if(l <= 10){
+            return s.substring(0,3)+"***"+s.substring(l-3,l);
+        }
+        if(l <= 11){
+            return s.substring(0,3)+"****"+s.substring(l-4,l);
+        }
+        if(l <= 15){
+            return s.substring(0,3)+"****"+s.substring(l-4,l);
+        }
+        return s.substring(0,5)+"*******"+s.substring(l-6,l);
+}
+
+
     /**
      * mq tag
      */
@@ -33,6 +82,11 @@
          String activity_looknum = "looknum";
          String activity_signup = "signup";
     }
+    public interface DeviceRoleType{
+         int lw = 0;//鍔冲姟璁垮
+         int fk = 1;//鏅�氳瀹�
+         int nb = 2;//鍐呴儴璁垮
+    }
     public interface DOOR_ROLE_TYPE{
          int lw = 0;
          int fk = 1;
@@ -41,9 +95,6 @@
     public static final String SUCCESS_STR = "SUCCESS" ;
 
     //寮�闂ㄦ椂闂存湁鏁堟湡锛堝垎閽燂級
-    public static final String QR_OPENBOOK_VALIDTIME="QR_OPENBOOK_VALIDTIME";
-    public static final String QR_OPENROOM_VALIDTIME="QR_OPENROOM_VALIDTIME";
-    public static final String ADVANCE_IN="ADVANCE_IN";
     public static final String ACCESS_ID="ACCESS_ID";
     public static final String BUCKETNAME = "BUCKETNAME";
     public static final String OSS = "OSS";
@@ -53,49 +104,12 @@
     public static final String ENDPOINT = "ENDPOINT";
     public static final String RESOURCE_PATH = "RESOURCE_PATH";
     //鍙戦�佷細璁紑濮�  瀹氭椂鎻愬墠澶氬皯鍒嗛挓鍙戦��
-    public static final String NOTICE_TIME = "NOTICE_TIME";
-
-    public static final String INITIAL_PASSWORD = "INITIAL_PASSWORD";
-    public static final String ACCESS_TOKEN = "ACCESS_TOKEN";
-
-    public static final String INITIAL_ROLE = "INITIAL_ROLE";
-
-    public static final String PLAT_ADDR="PLAT_ADDR";
-    public static final String ADDR_PHONE="ADDR_PHONE";
-    public static final String ADDR_NAME="ADDR_NAME";
-    public static final String ADDR_INFO="ADDR_INFO";
 
     public static final String SYSTEM ="SYSTEM";
-    public static final String DEFAULT_PASSWORD = "DEFAULT_PASSWORD" ;
-    public static final String CREATION_ROLE = "CREATION_ROLE";
-    public static final String ORG_ROLE = "ORG_ROLE";
-
-    public static final String USER_AGREEMENT = "USER_AGREEMENT";
-
-    public static final String ABOUT_USER = "ABOUT_USER";
-
-    public static final String RECHARGE_MONEY = "RECHARGE_MONEY";
-
-    public static final String PLATFORM_ADDRESS = "PLATFORM_ADDRESS";
-
-    public static final String PROJECT_HEAD_IMG = "PROJECT_HEAD_IMG";
 
     public static final String COFFEE_BEAN_TASK ="COFFEE_BEAN_TASK";
 
-    public static final String  SIGN_BOARD="SIGN_BOARD";//姣忔棩绛惧埌
-    public static final String  SHARE_INFO="SHARE_INFO";//鍒嗕韩璧勮
-    public static final String  SHARE_INVITE_BILL="SHARE_INVITE_BILL";//鍒嗕韩閭�璇锋捣鎶�
-    public static final String  INVITE_USER_LOGIN="INVITE_USER_LOGIN";///閭�璇锋柊鐢ㄦ埛娉ㄥ唽
-    public static final String  POST_COMMENTS="POST_COMMENTS";//鍙戝竷璇勮
-    public static final String  COFFEE_MAP_CONSUME="COFFEE_MAP_CONSUME";//鍜栧暋鍦板浘娑堣垂
 
-        // 鏈嶅姟椤圭洰
-    public static final String PROJECTS = "PROJECTS";
-    //鐢ㄦ埛澶村儚
-    public static final String SYSUSER = "SYSUSER";
-
-    public static final String  ROOT_PATH="ROOT_PATH";//鏈湴鏂囦欢涓婁紶鍦板潃閰嶇疆
-    public static final String  FILE_DIR="FILE_DIR";//鏈湴鏂囦欢璁块棶鍦板潃閰嶇疆
 
 
 
@@ -105,13 +119,7 @@
         public static final String ACTIVITY_SIGN_KEY = "actcode_";
         public static final String AFTERSALE_KEY = "salecode_";
     }
-    /**
-     * 浼佷笟鏁版嵁鏉ユ簮 0骞冲彴娉ㄥ唽 1鍚庡彴瀵煎叆
-     */
-    public interface ORIGIN{
-        public static final  int platformRegister  = 0;
-        public static final  int backstageImport  = 1;
-    }
+
 
     public static BigDecimal formatBigdecimal(BigDecimal d) {
         if (d == null) {
@@ -162,894 +170,9 @@
         return d.longValue();
     }
 
-public interface  UserRelObjType{
-      int objTypeRoom = 0;
-      int objTypeBook = 1;
-}
-public interface  RoomRecordObjType{
-      int objTypeRoom = 0;//绠$悊鍛樺紑闂�
-      int objTypeBook_in = 1;//鍙備細浜哄憳寮�闂�
-      int objTypeBook_out = 2;//璁垮寮�闂�
-}
     public static void main(String[] args) {
         String t = URLDecoder.decode("https://lsqw.gtja.com/qwcos/v-index.html#/loginforProperty?corpId=ww4b7aefafeb430e4b&corpId=ww4b7aefafeb430e4b&agentId=1000005&agentId=1000005&fromRoute=&userCode=013561&userCode=&userId=zz&userId=&encryptUserCode=&custQwId=wmIUuSDgAAR8MhtVY8w90EyKltvoK5fA&custCode=&openId=op1wZwD1dKuBQywmWWS5957zUOJI&name=%E8%B9%84%E8%B9%84&headUrl=http%3A%2F%2Fwx.qlogo.cn%2Fmmhead%2FQ3auHgzwzM4QlibSOAvYcvRMdsoyF3Ua7duLOYSJfB3dsGsYxIYonBw%2F0&dbHeadUrl=https%3A%2F%2Ftgf.gtja.com%2Ff%2F%2Fqwoms%2F2022512%2Fqwoms_1652332606613_8.jpg");
         System.out.println(t);
     }
-    /**
-     * 鐢ㄦ埛绫诲瀷
-     */
-    public  enum UserType {
-
-        SYSTEM(0, "绯荤粺鐢ㄦ埛", "绠$悊鍛�",Arrays.asList(0)),
-        ORG(1, "鏈烘瀯", "鏈烘瀯",Arrays.asList(1)),
-        CREATION(2, "鍒涗綔涓績", "鍒涗綔涓績",Arrays.asList(2))
-
-        ;
-        // 鎴愬憳鍙橀噺
-        private String name;
-        private int key;
-        private List<Integer> historyStatus;
-        private String noteinfo;// 鎻忚堪
-
-        // 鏋勯�犳柟娉�
-        UserType(int key, String name, String noteinfo,List<Integer> historyStatus) {
-            this.name = name;
-            this.key = key;
-            this.noteinfo = noteinfo;
-            this.historyStatus=historyStatus;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getName(int index) {
-            for (UserType c : UserType.values()) {
-                if (c.getKey() == index) {
-                    return c.name;
-                }
-            }
-            return null;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getInfo(int index) {
-            for (UserType c : UserType.values()) {
-                if (c.getKey() == index) {
-                    return c.noteinfo;
-                }
-            }
-            return null;
-        }
-        // 鏅�氭柟娉�
-        public static List<Integer> getHistoryStatus(int index) {
-            for (UserType c : UserType.values()) {
-                if (c.getKey() == index) {
-                    return c.historyStatus;
-                }
-            }
-            return null;
-        }
-
-        // get set 鏂规硶
-        public String getName() {
-            return name;
-        }
-
-        public void setName(String name) {
-            this.name = name;
-        }
-
-        public int getKey() {
-            return key;
-        }
-        public List<Integer> getHistoryStatus() {
-            return historyStatus;
-        }
-
-        public void setKey(int key) {
-            this.key = key;
-        }
-
-        public String getNoteinfo() {
-            return noteinfo;
-        }
-
-    }
-
-    /**
-     * 鏁版嵁鐘舵�佹灇涓�
-     *
-     */
-    public enum Status {
-
-        /** 鐢ㄦ埛鍚敤绂佺敤鏋氫妇鍊�*/
-        ENABLE(0,"姝e父"),
-        DISABLE(1,"绂佺敤");
-
-        private  Integer value;
-        private  String des;
-
-
-        Status(Integer value, String des) {
-            this.value = value;
-            this.des = des;
-        }
-
-        public Integer getValue() {
-            return value;
-        }
-
-        public void setValue(Integer value) {
-            this.value = value;
-        }
-
-        public String getDes() {
-            return des;
-        }
-
-        public void setDes(String des) {
-            this.des = des;
-        }
-    }
-
-
-    /**
-     * 鍏宠仈瀵硅薄绫诲瀷 0娲诲姩杞挱鍥� 1娲诲姩璇︽儏鍥� 2闂ㄥ簵璇勪环3璁㈠崟璇勪环 4骞冲彴鍟嗗搧杞挱 5鎺㈠簵澶氬浘 6搴楅摵鏂伴矞浜嬪鍥� 7鍟嗗鍥剧墖澶氬浘
-     */
-    public  enum MultiFile{
-        ACTIVITY_ROTATION(0, "娲诲姩杞挱鍥�", "娲诲姩杞挱鍥�"),
-        ACTIVITY_DETAIL(1, "娲诲姩璇︽儏鍥�", "娲诲姩璇︽儏鍥�"),
-        SHOP_APPRAISE(2, "闂ㄥ簵璇勪环", "闂ㄥ簵璇勪环"),
-        ORDER_APPRAISE(3, "璁㈠崟璇勪环", "璁㈠崟璇勪环"),
-        PLATFORM_GOOD_ROTATION(4, "骞冲彴鍟嗗搧杞挱", "骞冲彴鍟嗗搧杞挱"),
-        TANDIAN_PICTURE(5, "鎺㈠簵澶氬浘", "鎺㈠簵澶氬浘"),
-        SHOP_HOT_PICTURE(6, "搴楅摵鏂伴矞浜嬪鍥�", "搴楅摵鏂伴矞浜嬪鍥�"),
-        SHOP_PICTURE(7, "鍟嗗鍥剧墖澶氬浘", "鍟嗗鍥剧墖澶氬浘"),
-        AFTERSALE_APPLY(8, "鐢宠鍞悗琛ュ厖璇存槑闄勪欢", "鐢宠鍞悗琛ュ厖璇存槑闄勪欢"),
-        AFTERSALE_KD(9, "鐢宠鍞悗閭瘎璇存槑闄勪欢", "鐢宠鍞悗閭瘎璇存槑闄勪欢"),
-        ;
-        // 鎴愬憳鍙橀噺
-        private String name;
-        private int key;
-        private String noteinfo;// 鎻忚堪
-
-        // 鏋勯�犳柟娉�
-        MultiFile(int key, String name, String noteinfo) {
-            this.name = name;
-            this.key = key;
-            this.noteinfo = noteinfo;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getName(int index) {
-            for (MultiFile c : MultiFile.values()) {
-                if (c.getKey() == index) {
-                    return c.name;
-                }
-            }
-            return null;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getInfo(int index) {
-            for (MultiFile c : MultiFile.values()) {
-                if (c.getKey() == index) {
-                    return c.noteinfo;
-                }
-            }
-            return null;
-        }
-
-        // 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 String getNoteinfo() {
-            return noteinfo;
-        }
-
-    }
-
-
-
-    /**
-     * 璁㈠崟绠$悊
-     * 鐘舵�� 0鐢宠涓� 1宸叉敮浠�  2宸插彇娑�
-     */
-    public  enum ActivitySignupStatus{
-        APPLY_ING(0, "鐢宠涓�", "鐢宠涓�"),
-        PAY_DONE(1, "宸叉敮浠�", "宸叉敮浠�"),
-        CANCEL(2, "宸插彇娑�", "宸插彇娑�"),
-        ;
-        // 鎴愬憳鍙橀噺
-        private String name;
-        private int key;
-        private String noteinfo;// 鎻忚堪
-
-        // 鏋勯�犳柟娉�
-        ActivitySignupStatus(int key, String name, String noteinfo) {
-            this.name = name;
-            this.key = key;
-            this.noteinfo = noteinfo;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getName(int index) {
-            for (ActivitySignupStatus c : ActivitySignupStatus.values()) {
-                if (c.getKey() == index) {
-                    return c.name;
-                }
-            }
-            return null;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getInfo(int index) {
-            for (ActivitySignupStatus c : ActivitySignupStatus.values()) {
-                if (c.getKey() == index) {
-                    return c.noteinfo;
-                }
-            }
-            return null;
-        }
-
-        // 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 String getNoteinfo() {
-            return noteinfo;
-        }
-
-    }
-
-    /**
-     * 鍞悗鐘舵��
-     * 鐘舵�� 0寰呭鐞� 1寰呴偖瀵� 2宸插瘎鍑� 3鍟嗗宸查��娆� 4鍟嗗宸插彂璐�5鍞悗宸插畬鎴�6鍟嗗鎷掔粷 7宸插彇娑�
-     */
-    public  enum AftersaleStatus{
-        APPLY_ING(0, "寰呭鐞�", "寰呭鐞�"),
-        WAIT_SEND(1, "寰呴偖瀵�", "寰呴偖瀵�"),
-        SENDED(2, "瀹㈡埛宸插瘎鍑�", "瀹㈡埛宸插瘎鍑�"),
-        REFUND(3, "宸查��娆�", "宸查��娆�"),
-        SHOP_SENDED(4, "骞冲彴宸插彂璐�", "骞冲彴宸插彂璐�"),
-        DONE(5, "鍞悗宸插畬鎴�", "鍞悗宸插畬鎴�"),
-        SHOP_REFUSE(6, "宸叉嫆缁�", "骞冲彴鎷掔粷"),
-        CANCEL(7, "宸插彇娑�", "瀹㈡埛鍙栨秷鍞悗"),
-
-
-        ;
-        // 鎴愬憳鍙橀噺
-        private String name;
-        private int key;
-        private String noteinfo;// 鎻忚堪
-
-        // 鏋勯�犳柟娉�
-        AftersaleStatus(int key, String name, String noteinfo) {
-            this.name = name;
-            this.key = key;
-            this.noteinfo = noteinfo;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getName(int index) {
-            for (AftersaleStatus c : AftersaleStatus.values()) {
-                if (c.getKey() == index) {
-                    return c.name;
-                }
-            }
-            return null;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getInfo(int index) {
-            for (AftersaleStatus c : AftersaleStatus.values()) {
-                if (c.getKey() == index) {
-                    return c.noteinfo;
-                }
-            }
-            return null;
-        }
-
-        // 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 String getNoteinfo() {
-            return noteinfo;
-        }
-
-    }
-    /**
-     * 鍞悗绫诲瀷
-     *  鍞悗绫诲瀷 0閫�娆� 1閫�璐ч��娆� 2鎹㈣揣
-     */
-    public  enum AftersaleType{
-        TK(0, "閫�娆�", "閫�娆�"),
-        THTK(1, "閫�璐ч��娆�", "閫�璐ч��娆�"),
-        HH(2, "鎹㈣揣", "鎹㈣揣"),
-        ;
-        // 鎴愬憳鍙橀噺
-        private String name;
-        private int key;
-        private String noteinfo;// 鎻忚堪
-
-        // 鏋勯�犳柟娉�
-        AftersaleType(int key, String name, String noteinfo) {
-            this.name = name;
-            this.key = key;
-            this.noteinfo = noteinfo;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getName(int index) {
-            for (AftersaleType c : AftersaleType.values()) {
-                if (c.getKey() == index) {
-                    return c.name;
-                }
-            }
-            return null;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getInfo(int index) {
-            for (AftersaleType c : AftersaleType.values()) {
-                if (c.getKey() == index) {
-                    return c.noteinfo;
-                }
-            }
-            return null;
-        }
-
-        // 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 String getNoteinfo() {
-            return noteinfo;
-        }
-
-    }
-    /**
-     * 璁㈠崟绠$悊
-     * 鐘舵�� 0寰呮敮浠� 1寰呭彂璐� 2寰呮敹璐� 3浜ゆ槗瀹屾垚 4宸插叧闂� 5閮ㄥ垎鍙戣揣
-     */
-    public  enum OrderStatus{
-        WAIT_PAY(0, "寰呮敮浠�", "寰呮敮浠�"),
-        PAY_DONE(1, "寰呭彂璐�", "宸叉敮浠樹唬鍙戣揣"),
-        WAIT_RECEIVE(2, "寰呮敹璐�", "宸插彂璐у緟鏀惰揣"),
-        DONE(3, "浜ゆ槗瀹屾垚", "浜ゆ槗瀹屾垚"),
-        CLOSE(4, "宸插叧闂�", "宸插叧闂�"),
-        PART_DONE(5, "閮ㄥ垎鍙戣揣", "閮ㄥ垎鍙戣揣"),
-
-
-        ;
-        // 鎴愬憳鍙橀噺
-        private String name;
-        private int key;
-        private String noteinfo;// 鎻忚堪
-
-        // 鏋勯�犳柟娉�
-        OrderStatus(int key, String name, String noteinfo) {
-            this.name = name;
-            this.key = key;
-            this.noteinfo = noteinfo;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getName(int index) {
-            for (OrderStatus c : OrderStatus.values()) {
-                if (c.getKey() == index) {
-                    return c.name;
-                }
-            }
-            return null;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getInfo(int index) {
-            for (OrderStatus c : OrderStatus.values()) {
-                if (c.getKey() == index) {
-                    return c.noteinfo;
-                }
-            }
-            return null;
-        }
-
-        // 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 String getNoteinfo() {
-            return noteinfo;
-        }
-
-    }
-
-
-    /**
-     * 璁㈠崟绫诲瀷
-     *  璁㈠崟绫诲瀷 0骞冲彴鍟嗗煄 1鍜栬眴鍟嗗煄 2鍜栧暋璁″垝缂栫爜
-     */
-    public  enum OrderType{
-        ADMINPLAT(0, "骞冲彴鍟嗗煄 ", "骞冲彴鍟嗗煄 "),
-        KADOUPLAT(1, "鍜栬眴鍟嗗煄", "鍜栬眴鍟嗗煄"),
-        COFFERPLAN(2, "2鍜栧暋璁″垝缂栫爜", "2鍜栧暋璁″垝缂栫爜")
-
-
-        ;
-        // 鎴愬憳鍙橀噺
-        private String name;
-        private int key;
-        private String noteinfo;// 鎻忚堪
-
-        // 鏋勯�犳柟娉�
-        OrderType(int key, String name, String noteinfo) {
-            this.name = name;
-            this.key = key;
-            this.noteinfo = noteinfo;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getName(int index) {
-            for (OrderType c : OrderType.values()) {
-                if (c.getKey() == index) {
-                    return c.name;
-                }
-            }
-            return null;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getInfo(int index) {
-            for (OrderType c : OrderType.values()) {
-                if (c.getKey() == index) {
-                    return c.noteinfo;
-                }
-            }
-            return null;
-        }
-
-        // 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 String getNoteinfo() {
-            return noteinfo;
-        }
-
-    }
-
-    public enum ShareType{
-//    0娲诲姩1鎺㈠簵2鍜ㄨ3搴楅摵 4鍟嗗搧5鍒嗕韩閭�璇锋捣鎶�
-        SHARE_ACTIVITY_ACTIVITY(0,"娲诲姩","娲诲姩"),
-        SHARE_ACTIVITY_VISITSHOP(1,"鎺㈠簵","鍜ㄨ"),
-        SHARE_ACTIVITY_NEW(2,"鍜ㄨ","鍜ㄨ"),
-        SHARE_SHOP(3,"搴楅摵","搴楅摵" ),
-        SHARE_GOODS(4,"鍟嗗搧","鍟嗗搧"),
-        SHARE_POSTER(5,"鍒嗕韩閭�璇锋捣鎶�","鍒嗕韩閭�璇锋捣鎶�")
-
-        ;
-        private Integer key;
-
-        private String name;
-
-        private String des;
-
-        ShareType(Integer key, String name, String des) {
-            this.key = key;
-            this.name = name;
-            this.des = des;
-        }
-
-        public Integer getKey() {
-            return key;
-        }
-
-        public void setKey(Integer key) {
-            this.key = key;
-        }
-
-        public String getName() {
-            return name;
-        }
-
-        public void setName(String name) {
-            this.name = name;
-        }
-
-        public String getDes() {
-            return des;
-        }
-
-        public void setDes(String des) {
-            this.des = des;
-        }
-    }
-
-    /**
-     * 鍜栬眴浠诲姟
-     */
-    public enum CoffeeBeanTask{
-
-        SIGN_BOARD(1,"SIGN_BOARD","姣忔棩绛惧埌"),
-        SHARE_INFO(6,"SHARE_INFO","鍒嗕韩璧勮"),
-        SHARE_INVITE_BILL(2,"SHARE_INVITE_BILL","鍒嗕韩閭�璇锋捣鎶�"),
-        INVITE_USER_LOGIN(3,"INVITE_USER_LOGIN","閭�璇锋柊鐢ㄦ埛娉ㄥ唽"),
-        EXCHANGE_GOODS(4,"INVITE_USER_LOGIN","鍏戞崲鍟嗗搧"),
-        EXCHANGE_COUPON(5,"INVITE_USER_LOGIN","鍏戞崲浼樻儬鍒�"),
-        POST_COMMENTS(7,"POST_COMMENTS","鍙戝竷璇勮"),
-        COFFEE_MAP_CONSUME(8,"COFFEE_MAP_CONSUME","鍜栧暋鍦板浘娑堣垂"),
-        ;
-
-        //  0骞冲彴娉ㄥ唽 1绛惧埌 2鍒嗕韩閭�璇� 3閭�璇锋柊鐢ㄦ埛 4鍏戞崲鍟嗗搧 5鍏戞崲浼樻儬鍒�
-        // 鎴愬憳鍙橀噺
-        private Integer key;
-
-        private String name;
-
-        private String des;// 鎻忚堪
-
-        CoffeeBeanTask(Integer key, String name, String des) {
-            this.key = key;
-            this.name = name;
-            this.des = des;
-        }
-
-        public Integer getKey() {
-            return key;
-        }
-
-        public void setKey(Integer key) {
-            this.key = key;
-        }
-
-        public String getName() {
-            return name;
-        }
-
-        public void setName(String name) {
-            this.name = name;
-        }
-
-        public String getDes() {
-            return des;
-        }
-
-        public void setDes(String des) {
-            this.des = des;
-        }
-    }
-
-
-
-    public enum NoticeType{
-
-//        0璁㈠崟閫氱煡 1绯荤粺娑堟伅 2浜掑姩娑堟伅 3浼樻儬鍒告彁閱� 4瀹樻柟瀹㈡湇 5娲诲姩鎺ㄨ崘 6鎴戠殑鍏虫敞
-
-        NOTICE_ORDER(0,"0璁㈠崟閫氱煡","0璁㈠崟閫氱煡"),
-        NOTICE_SYSTEM(1,"1绯荤粺娑堟伅","1绯荤粺娑堟伅"),
-        NOTICE_INTERACTION(2,"浜掑姩娑堟伅","浜掑姩娑堟伅"),
-        NOTICE_MEMBER_COUPON(3,"浼樻儬鍒告彁閱�","浼樻儬鍒告彁閱�"),
-        NOTICE_ACTIVITY(5,"娲诲姩鎺ㄨ崘","娲诲姩鎺ㄨ崘"),
-        NOTICE_MEMBER_FOLLOW(6,"鎴戠殑鍏虫敞","鎴戠殑鍏虫敞")
-        ;
-
-        private Integer key;
-
-        private String type;
-
-        private String content;
-
-        NoticeType(Integer key, String type, String content) {
-            this.key = key;
-            this.type = type;
-            this.content = content;
-        }
-    }
-
-    /**
-     * 绉垎绫诲瀷
-     */
-    public  enum IntegralObjType {
-        REGISTER(0, "骞冲彴娉ㄥ唽", "骞冲彴娉ㄥ唽",0),
-        SIGNIN(1, "绛惧埌", "绛惧埌",0),
-        SHARE(2, "鍒嗕韩閭�璇�", "鍒嗕韩閭�璇�",0),
-        INVITENEWUSER(3, "閭�璇锋柊鐢ㄦ埛", "閭�璇锋柊鐢ㄦ埛",0),
-        EXCHANGEGOODS(4, "鍏戞崲鍟嗗搧", "鍏戞崲鍟嗗搧",1),
-        EXCHANGECOUPON(5, "鍏戞崲浼樻儬鍒�", "鍏戞崲浼樻儬鍒�",1),
-        SHARE_INFO(6,"鍒嗕韩璧勮","鍒嗕韩璧勮",0),
-        POST_COMMENTS(7,"鍙戝竷璇勮","鍙戝竷璇勮",0),
-        COFFEE_MAP_CONSUME(8,"鍜栧暋鍦板浘娑堣垂","鍜栧暋鍦板浘娑堣垂",0),
-        SHOP_ORDER(9,"浣欓鎶垫墸鍟嗗搧","浣欓鎶垫墸鍟嗗搧",1),
-        AFTERSALE_BACK(10,"鍞悗閫�娆�","鍞悗閫�娆�",1),
-        EXCHANGE_CARD(11,"鍗″厖鍊�","鍗″厖鍊�",0),
-        SYSTEM_RECHARGE(12,"骞冲彴鍏呭��","骞冲彴鍏呭��",0),
-        SYSTEM_DEDUCT(13,"骞冲彴鎵f","骞冲彴鎵f",0),
-        SHOP_ORDER_CANCEL(14,"浣欓鎶垫墸鍟嗗搧閫�杩�","浣欓鎶垫墸鍟嗗搧閫�杩�",0)
-        ;
-        // 鎴愬憳鍙橀噺
-        private String name;
-        private int key;
-        private String noteinfo;// 鎻忚堪
-        private Integer addTitle; // 0 = 鏂板锛�1 = 涓嶆柊澧�
-
-        // 鏋勯�犳柟娉�
-        IntegralObjType(int key, String name, String noteinfo ,Integer addTitle) {
-            this.name = name;
-            this.key = key;
-            this.noteinfo = noteinfo;
-            this.addTitle = addTitle;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getName(int index) {
-            for (IntegralObjType c : IntegralObjType.values()) {
-                if (c.getKey() == index) {
-                    return c.name;
-                }
-            }
-            return null;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getInfo(int index) {
-            for (IntegralObjType c : IntegralObjType.values()) {
-                if (c.getKey() == index) {
-                    return c.noteinfo;
-                }
-            }
-            return null;
-        }
-
-        // 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 String getNoteinfo() {
-            return noteinfo;
-        }
-
-
-        public int getAddTitle() {
-            return this.addTitle;
-        }
-
-        public void setAddTitle(Integer addTitle) {
-            this.addTitle = addTitle;
-        }
-
-
-    }
-
-
-    /**
-     * 鏍囩绫诲瀷
-     */
-    public  enum LabelsType {
-        GOODSTYPE(0, "鍟嗗搧鍒嗙被", "鍟嗗搧鍒嗙被"),
-        GOODSBRAND(1, "鍟嗗搧鍝佺墝", "鍟嗗搧鍝佺墝"),
-        BUSNESSLABEL(2, "鍟嗗鏍囩", "鍟嗗鏍囩"),
-        EXPRESSDELIVERY(3, "蹇��", "蹇��"),
-        RETURNOPTIONS(4, "閫�璐ч�夐」", "閫�璐ч�夐」"),
-        EXCHANGEOPTIONS(5, "鎹㈣揣閫夐」", "鎹㈣揣閫夐」"),
-        REFUNDOPTIONS(6, "閫�娆鹃�夐」", "閫�娆鹃�夐」"),
-        CANCELORDEROPTIONS(7, "鍙栨秷璁㈠崟閫夐」", "鍙栨秷璁㈠崟閫夐」"),
-        COFFERBEANTYPE(8, "鍜栧暋鐧剧鍒嗙被", "鍜栧暋鐧剧鍒嗙被"),
-        INFOTYPE(9, "鍜ㄨ鍒嗙被", "鍜ㄨ鍒嗙被"),
-        ACTIVITYMATCHTYPE(10, "娲诲姩璧涗簨鍒嗙被", "娲诲姩璧涗簨鍒嗙被"),
-        DARENTANDIANTYPE(11, "杈句汉鎺㈠簵鍒嗙被", "杈句汉鎺㈠簵鍒嗙被"),
-        HOMEZHUANQU(12, "棣栭〉涓撳尯", "棣栭〉涓撳尯"),
-
-        ;
-        // 鎴愬憳鍙橀噺
-        private String name;
-        private int key;
-        private String noteinfo;// 鎻忚堪
-
-        // 鏋勯�犳柟娉�
-        LabelsType(int key, String name, String noteinfo) {
-            this.name = name;
-            this.key = key;
-            this.noteinfo = noteinfo;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getName(int index) {
-            for (LabelsType c : LabelsType.values()) {
-                if (c.getKey() == index) {
-                    return c.name;
-                }
-            }
-            return null;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getInfo(int index) {
-            for (LabelsType c : LabelsType.values()) {
-                if (c.getKey() == index) {
-                    return c.noteinfo;
-                }
-            }
-            return null;
-        }
-
-        // 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 String getNoteinfo() {
-            return noteinfo;
-        }
-
-    }
-
-
-    /**
-     * 娲诲姩绫诲瀷
-     */
-    public  enum ActivityType {
-
-        SHOPACTIVITY(0, "鍟嗗娲诲姩", "鍟嗗娲诲姩"),
-        PLATACTIVITY(1, "骞冲彴娲诲姩", "骞冲彴娲诲姩"),
-        TANDIAN(2, "鎺㈠簵", "鎺㈠簵"),
-        CONSULT(3, "璧勮", "璧勮"),
-
-        ;
-        // 鎴愬憳鍙橀噺
-        private String name;
-        private int key;
-        private String noteinfo;// 鎻忚堪
-
-        // 鏋勯�犳柟娉�
-        ActivityType(int key, String name, String noteinfo) {
-            this.name = name;
-            this.key = key;
-            this.noteinfo = noteinfo;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getName(int index) {
-            for (ActivityType c : ActivityType.values()) {
-                if (c.getKey() == index) {
-                    return c.name;
-                }
-            }
-            return null;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getInfo(int index) {
-            for (ActivityType c : ActivityType.values()) {
-                if (c.getKey() == index) {
-                    return c.noteinfo;
-                }
-            }
-            return null;
-        }
-
-        // 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 String getNoteinfo() {
-            return noteinfo;
-        }
 
-    }
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/utils/IdCardTool.java b/server/dmvisit_service/src/main/java/com/doumee/core/utils/IdCardTool.java
new file mode 100644
index 0000000..248a633
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/utils/IdCardTool.java
@@ -0,0 +1,5 @@
+package com.doumee.core.utils;
+
+
+public class IdCardTool {
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DeviceEvent.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DeviceEvent.java
index 587fae6..3ab65c5 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DeviceEvent.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DeviceEvent.java
@@ -204,6 +204,10 @@
     @ExcelColumn(name="韬唤璇乮d")
     private String idNum;
 
+    @ApiModelProperty(value = "璇佷欢鏄剧ず淇℃伅")
+    @ExcelColumn(name="璇佷欢鏄剧ず淇℃伅")
+    private String idcardDecode;
+
     @ApiModelProperty(value = "韬唤璇佺鍙戞満鍏�")
     @ExcelColumn(name="韬唤璇佺鍙戞満鍏�")
     private String issuingAuthority;
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
index 9c7d069..d0e63a5 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -195,5 +196,8 @@
     @ApiModelProperty(value = "ERP缁勭粐缂栫爜")
     @ExcelColumn(name="ERP缁勭粐缂栫爜")
     private String erpOrgId;
+    @ApiModelProperty(value = "缁勭粐鍚嶇О")
+    @TableField(exist = false)
+    private String companyName;
 
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ProblemLog.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ProblemLog.java
index d7740aa..adab9b8 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ProblemLog.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ProblemLog.java
@@ -62,7 +62,7 @@
 
     @ApiModelProperty(value = "缁戝畾鐢宠缂栫爜")
     @ExcelColumn(name="缁戝畾鐢宠缂栫爜")
-    private String logId;
+    private Integer logId;
 
     @ApiModelProperty(value = "寰楀垎", example = "1")
     @ExcelColumn(name="寰楀垎")
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 ae625de..e38623c 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
@@ -1,5 +1,6 @@
 package com.doumee.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -9,6 +10,7 @@
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 璁垮鐢宠淇℃伅琛�
@@ -106,12 +108,10 @@
 
     @ApiModelProperty(value = "闂ㄧ鏈夋晥鏈熷紑濮�")
     @ExcelColumn(name="闂ㄧ鏈夋晥鏈熷紑濮�")
-    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date starttime;
 
     @ApiModelProperty(value = "闂ㄧ鏈夋晥鏈熸埅姝�")
     @ExcelColumn(name="闂ㄧ鏈夋晥鏈熸埅姝�")
-    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date endtime;
 
     @ApiModelProperty(value = "鏉ヨ浜嬬敱")
@@ -159,7 +159,9 @@
     @ApiModelProperty(value = "缁堝澶囨敞")
     @ExcelColumn(name="缁堝澶囨敞")
     private String endCheckInfo;
-
+    @ApiModelProperty(value = "璇佷欢鏄剧ず淇℃伅")
+    @ExcelColumn(name="璇佷欢鏄剧ず淇℃伅")
+    private String idcardDecode;
     @ApiModelProperty(value = "璇佷欢绫诲瀷 0韬唤璇� 1娓境璇佷欢 2鎶ょ収", example = "1")
     @ExcelColumn(name="璇佷欢绫诲瀷 0韬唤璇� 1娓境璇佷欢 2鎶ょ収")
     private Integer idcardType;
@@ -192,5 +194,11 @@
     @ApiModelProperty(value = "ERP鐢宠璁板綍缂栫爜")
     @ExcelColumn(name="ERP鐢宠璁板綍缂栫爜")
     private String erpId;
+    @ApiModelProperty(value = "鏅�氳瀹㈢敵璇烽殢璁夸汉鍛�")
+    @TableField(exist = false)
+    private List<Visits> withUserList;
+    @ApiModelProperty(value = "鍔冲姟璁垮鐢宠闅忚浜哄憳")
+    @TableField(exist = false)
+    private List<Integer> lwWithUserList;
 
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
index 022820c..9ecbab1 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
@@ -19,6 +19,7 @@
      * @return Integer
      */
     Integer create(Visits visits);
+    Integer createFk(Visits visits);
 
     /**
      * 涓婚敭鍒犻櫎
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
index 8a2db93..041f876 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -1,19 +1,35 @@
 package com.doumee.service.business.impl;
 
+import cn.hutool.core.util.IdcardUtil;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DESUtil;
 import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.DeviceRoleMapper;
+import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.ProblemLogMapper;
 import com.doumee.dao.business.VisitsMapper;
+import com.doumee.dao.business.model.DeviceRole;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.ProblemLog;
 import com.doumee.dao.business.model.Visits;
 import com.doumee.service.business.VisitsService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.DigestUtils;
 
+import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -26,13 +42,183 @@
 
     @Autowired
     private VisitsMapper visitsMapper;
+    @Autowired
+    private DeviceRoleMapper deviceRoleMapper;
+    @Autowired
+    private ProblemLogMapper problemLogMapper ;
+    @Autowired
+    private MemberMapper memberMapper ;
 
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
     @Override
     public Integer create(Visits visits) {
         visitsMapper.insert(visits);
         return visits.getId();
     }
 
+    /**
+     * 鏅�氳瀹㈢敵璇�
+     * @param visits
+     * @return
+     */
+    @Override
+    public Integer createFk(Visits visits) {
+        if(visits.getStarttime() == null
+                || visits.getEndtime() == null
+                ||  StringUtils.isBlank(visits.getReason())
+                ||  StringUtils.isBlank( visits.getName())
+                ||  StringUtils.isBlank( visits.getPhone())
+                ||  visits.getIdcardType() == null
+                ||  StringUtils.isBlank( visits.getFaceImg() )
+                ||  StringUtils.isBlank( visits.getIdcardNo() )
+                || visits.getReceptMemberId() == null){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝淇℃伅濉啓涓嶆纭紒");
+        }
+        //妫�鏌ユ槸鍚﹀繀椤荤瓟棰橈紝骞朵笖绗﹀悎绛旈瑕佹眰
+        ProblemLog problemLog = isValidProblemLog(visits);
+        //鑾峰彇鐢宠鐨勬捣搴疯闂棬绂佺粍淇℃伅
+        String[] hkIds = getHkDeviceRoles(visits);
+        //妫�楠屾嫓璁夸汉鏄惁鍚堟硶
+        isValideVisitedUser(visits.getReceptMemberId());
+        //妫�鏌ラ殢璁夸汉鍛樻槸鍚﹀悎娉�,鐢熸垚闅忚浜哄憳鏂板闆嗗悎
+        List<Member> withUsers = isValideWithUsers(visits.getWithUserList());
+
+        if(Constants.equalsInteger(Constants.ZERO, visits.getIdcardType()) &&!IdcardUtil.isValidCard(visits.getIdcardNo())){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝韬唤璇佸彿鐮佹湁璇紝璇锋牳瀹炲悗閲嶈瘯锛�");
+        }
+        Date date = new Date();
+
+        visits.setBirthday(Constants.getBirthdyByCardNo(visits.getIdcardNo()));
+        //韬唤璇佸彿瀛樺偍瀵嗘枃
+        visits.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, visits.getIdcardNo()));//韬唤璇佸彿鍔犲瘑
+        visits.setIdcardDecode(Constants.getTuominStr(visits.getIdcardNo()));//鑴辨晱鎵嬫満鍙�
+        visits.setCreateDate(date);
+
+        //璁垮淇℃伅(浣跨敤韬唤璇佸彿鏌ヨ鏄惁宸插瓨鍦ㄦ敼鏅�氳瀹紝娌℃湁鍒欐柊澧烇紝瀛樺湪鍒欐洿鏂皁penid绛変俊鎭�)
+        Member member = getMemberByIdcardno(visits);
+        visitsMapper.insert(visits);
+
+
+        updateProblemLog(visits,problemLog,member);
+
+        return visits.getId();
+    }
+
+    private Member getMemberByIdcardno(Visits idcardNo) {
+        Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
+//                .eq(Member::getType,Constants.MEMBER_TYPE)
+                .eq(Member::getIdcardNo,idcardNo.getIdcardNo())
+        );
+        return  null;
+    }
+
+    private List<Member> isValideWithUsers(List<Visits> withUserList) {
+        if(withUserList!= null && withUserList .size()>0){
+            for(Visits model:withUserList){
+
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * 濡傛灉鏈夌瓟棰樿褰曪紝鏇存柊绛旈璁板綍鍏宠仈鏁版嵁
+     * @param visits
+     * @param problemLog
+     * @param member
+     */
+
+    private void updateProblemLog(Visits visits, ProblemLog problemLog,Member member) {
+        if(problemLog!=null){
+            problemLog.setEditDate(visits.getCreateDate());
+            problemLog.setName(visits.getName());
+            problemLog.setUserId(member.getId());
+            problemLog.setPhone(member.getPhone());
+            problemLog.setLogId(visits.getId());
+            problemLogMapper.updateById(problemLog);
+        }
+    }
+
+    /**
+     *   妫�鏌ヨ浜烘槸鍚﹀悎娉�
+     * @param receptMemberId
+     */
+    private Member isValideVisitedUser(Integer receptMemberId) {
+        Member member = memberMapper.selectById(receptMemberId);
+        if(member == null || Constants.equalsInteger(Constants.ZERO,member.getIsdeleted())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ユ嫓璁夸汉鏆傛椂涓嶈兘鎺ュ彈鎮ㄧ殑鎷滆鐢宠锛�");
+        }
+        if(!Constants.equalsInteger(member.getStatus(), Constants.ZERO)){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ユ嫓璁夸汉鏆傛椂涓嶈兘鎺ュ彈鎮ㄧ殑鎷滆鐢宠.");
+        }
+        if(!Constants.equalsInteger(Constants.ONE, member.getCanVisit())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ユ嫓璁夸汉鏆傛椂涓嶈兘鎺ュ彈鎮ㄧ殑鎷滆鐢宠~");
+        }
+        return  member;
+    }
+
+    private ProblemLog isValidProblemLog(Visits visits) {
+        String required = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROBLEM_VISIT_REQUIRED).getCode();
+        if(StringUtils.equals(required,Constants.ONE+"")){
+            //濡傛灉蹇呴』绛旈锛屾煡鎵剧瓟棰樿褰�
+            if(visits.getUserAnswerId() == null){
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇峰厛鎸夎姹傝繘琛屽畨鍏ㄧ煡璇嗙瓟棰橈紒");
+            }
+            ProblemLog log = problemLogMapper.selectById(visits.getUserAnswerId());
+            if(log == null){
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇峰厛鎸夎姹傝繘琛屽畨鍏ㄧ煡璇嗙瓟棰�.");
+            }
+            if(log.getLogId() !=null){
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇峰厛鎸夎姹傝繘琛屽畨鍏ㄧ煡璇嗙瓟棰榽");
+            }
+            return  log;
+        }
+        return null;
+    }
+
+    /**
+     * 鑾峰彇鐢宠鐨勬捣搴疯闂棬绂佺粍淇℃伅
+     * @param visits
+     * @return
+     */
+    private String[] getHkDeviceRoles(Visits visits) {
+        String mustSelectDoors = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SELECT_DOORS_VISIT_REQUIRED).getCode();
+        List<DeviceRole> roles = null;
+        if(StringUtils.equals(mustSelectDoors,Constants.ZERO+"")){
+            //濡傛灉蹇呴』閫夋嫨闂ㄧ锛屼絾鏈�夋嫨
+            if(StringUtils.isBlank(visits.getDoors())){
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇烽�夋嫨璁块棶闂ㄧ锛�");
+            }
+            //鏍¢獙闂ㄧ缁勪俊鎭槸鍚︽纭�
+            String[] dIds = visits.getDoors().split(",");
+            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(), "瀵逛笉璧凤紝璇烽�夋嫨鏈夋晥璁块棶闂ㄧ锛�");
+            }
+        }else{
+            //濡傛灉璁剧疆涓嶉�夋嫨闂ㄧ锛屽垯鎻愪緵榛樿闂ㄧ缁勪俊鎭�
+            String[] dIds = visits.getDoors().split(",");
+            roles = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
+                    .eq(DeviceRole::getIsdeleted,Constants.ZERO)
+                    .eq(DeviceRole::getIsDefault,Constants.ZERO)
+                    .eq(DeviceRole::getType,Constants.DeviceRoleType.fk));
+            if(roles.size() ==0){
+
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鏆備笉瀛樺湪鍙闂殑璁垮闂ㄧ锛屾棤娉曡繘琛岀敵璇锋搷浣滐紒");
+            }
+        }
+        String[] ids =new String[roles.size()];
+        for (int i = 0; i < roles.size(); i++) {
+            ids[i] = roles.get(i).getHkId();
+        }
+        return  ids;
+    }
+
     @Override
     public void deleteById(Integer id) {
         visitsMapper.deleteById(id);
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEventServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEventServiceImpl.java
index e1db654..46d08ba 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEventServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEventServiceImpl.java
@@ -65,7 +65,6 @@
                 }
             }
         }
-
     }
 
     /**

--
Gitblit v1.9.3