Просмотр исходного кода

Merge commit '33045193934b79425e61208fb0f257a3a0332e1f' into pro

linfutong лет назад: 2
Родитель
Сommit
9cb1681495
100 измененных файлов с 1072 добавлено и 51 удалено
  1. BIN
      lib/linux/HCNetSDKCom/libAudioIntercom.so
  2. BIN
      lib/linux/HCNetSDKCom/libHCAlarm.so
  3. BIN
      lib/linux/HCNetSDKCom/libHCCoreDevCfg.so
  4. BIN
      lib/linux/HCNetSDKCom/libHCDisplay.so
  5. BIN
      lib/linux/HCNetSDKCom/libHCGeneralCfgMgr.so
  6. BIN
      lib/linux/HCNetSDKCom/libHCIndustry.so
  7. BIN
      lib/linux/HCNetSDKCom/libHCPlayBack.so
  8. BIN
      lib/linux/HCNetSDKCom/libHCPreview.so
  9. BIN
      lib/linux/HCNetSDKCom/libHCVoiceTalk.so
  10. BIN
      lib/linux/HCNetSDKCom/libStreamTransClient.so
  11. BIN
      lib/linux/HCNetSDKCom/libSystemTransform.so
  12. BIN
      lib/linux/HCNetSDKCom/libanalyzedata.so
  13. BIN
      lib/linux/HCNetSDKCom/libiconv2.so
  14. 12 0
      lib/linux/HCNetSDK_Log_Switch.xml
  15. BIN
      lib/linux/libAudioRender.so
  16. BIN
      lib/linux/libHCCore.so
  17. BIN
      lib/linux/libNPQos.so
  18. BIN
      lib/linux/libPlayCtrl.so
  19. BIN
      lib/linux/libSuperRender.so
  20. BIN
      lib/linux/libcrypto.so.1.1
  21. BIN
      lib/linux/libhcnetsdk.so
  22. BIN
      lib/linux/libhpr.so
  23. BIN
      lib/linux/libopenal.so.1
  24. BIN
      lib/linux/libssl.so.1.1
  25. BIN
      lib/linux/libz.so
  26. BIN
      lib/win/AudioRender.dll
  27. BIN
      lib/win/ClientDemo.exe
  28. 1 0
      lib/win/ClientDemoDll/ReadMe.txt
  29. BIN
      lib/win/ClientDemoDll/calib.dll
  30. BIN
      lib/win/ClientDemoDll/iconv.dll
  31. BIN
      lib/win/ClientDemoDll/libcrypto-1_1-x64.dll
  32. BIN
      lib/win/ClientDemoDll/libssl-1_1-x64.dll
  33. BIN
      lib/win/ClientDemoDll/libxml2.dll
  34. BIN
      lib/win/ClientDemoDll/zlib1.dll
  35. BIN
      lib/win/GdiPlus.dll
  36. BIN
      lib/win/GdiPlus.lib
  37. BIN
      lib/win/HCCore.dll
  38. BIN
      lib/win/HCCore.lib
  39. BIN
      lib/win/HCNetSDK.dll
  40. BIN
      lib/win/HCNetSDK.lib
  41. BIN
      lib/win/HCNetSDKCom/AnalyzeData.dll
  42. BIN
      lib/win/HCNetSDKCom/AudioIntercom.dll
  43. BIN
      lib/win/HCNetSDKCom/AudioRender.dll
  44. BIN
      lib/win/HCNetSDKCom/HCAlarm.dll
  45. BIN
      lib/win/HCNetSDKCom/HCAlarm.lib
  46. BIN
      lib/win/HCNetSDKCom/HCCoreDevCfg.dll
  47. BIN
      lib/win/HCNetSDKCom/HCDisplay.dll
  48. BIN
      lib/win/HCNetSDKCom/HCGeneralCfgMgr.dll
  49. BIN
      lib/win/HCNetSDKCom/HCGeneralCfgMgr.lib
  50. BIN
      lib/win/HCNetSDKCom/HCIndustry.dll
  51. BIN
      lib/win/HCNetSDKCom/HCPlayBack.dll
  52. BIN
      lib/win/HCNetSDKCom/HCPreview.dll
  53. BIN
      lib/win/HCNetSDKCom/HCPreview.lib
  54. BIN
      lib/win/HCNetSDKCom/HCVoiceTalk.dll
  55. BIN
      lib/win/HCNetSDKCom/OpenAL32.dll
  56. BIN
      lib/win/HCNetSDKCom/StreamTransClient.dll
  57. BIN
      lib/win/HCNetSDKCom/SystemTransform.dll
  58. BIN
      lib/win/HCNetSDKCom/libiconv2.dll
  59. BIN
      lib/win/HXVA.dll
  60. BIN
      lib/win/HmMerge.dll
  61. BIN
      lib/win/LocalXml.zip
  62. BIN
      lib/win/MP_Render.dll
  63. BIN
      lib/win/NPQos.dll
  64. BIN
      lib/win/OpenAL32.dll
  65. BIN
      lib/win/PlayCtrl.dll
  66. BIN
      lib/win/PlayCtrl.lib
  67. BIN
      lib/win/SuperRender.dll
  68. BIN
      lib/win/YUVProcess.dll
  69. BIN
      lib/win/hlog.dll
  70. BIN
      lib/win/hpr.dll
  71. BIN
      lib/win/libcrypto-1_1-x64.dll
  72. BIN
      lib/win/libmmd.dll
  73. BIN
      lib/win/libssl-1_1-x64.dll
  74. BIN
      lib/win/zlib1.dll
  75. 11 0
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/entity/LabMessageContent.java
  76. 7 0
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteMessageContentService.java
  77. 11 0
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/fallback/RemoteMessageContentFallbackFactory.java
  78. 1 1
      zd-common/common-core/src/main/java/com/zd/common/core/exception/GlobalExceptionHandler.java
  79. 41 2
      zd-common/common-core/src/main/java/com/zd/common/core/exception/NoRollException.java
  80. 13 0
      zd-common/common-core/src/main/java/com/zd/common/core/utils/SaveUtil.java
  81. BIN
      zd-haikang.zip
  82. 15 0
      zd-model/src/main/java/com/zd/model/domain/per/PerPrefix.java
  83. 2 2
      zd-model/src/main/java/com/zd/model/enums/HardwareTypeEnum.java
  84. 1 1
      zd-modules/zd-base/src/main/java/com/zd/base/files/file/controller/SysFileController.java
  85. 16 0
      zd-modules/zd-modules-laboratory/pom.xml
  86. 3 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/ZdLaboratoryApplication.java
  87. 13 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/config/DisposableConfig.java
  88. 29 29
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/config/MyBatisPlusConfig.java
  89. 152 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabHaikangUserController.java
  90. 73 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabHaikangUserFingerController.java
  91. 49 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabHaikangUserLogController.java
  92. 16 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabHardwareController.java
  93. 5 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabMessageContentController.java
  94. 12 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabStudentsInfoController.java
  95. 26 7
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabWhitelistController.java
  96. 8 8
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/device/DeviceRemoteController.java
  97. 324 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/LabHaikangUser.java
  98. 66 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/LabHaikangUserFinger.java
  99. 165 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/LabHaikangUserLog.java
  100. 0 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/LabHardware.java

BIN
lib/linux/HCNetSDKCom/libAudioIntercom.so


BIN
lib/linux/HCNetSDKCom/libHCAlarm.so


BIN
lib/linux/HCNetSDKCom/libHCCoreDevCfg.so


BIN
lib/linux/HCNetSDKCom/libHCDisplay.so


BIN
lib/linux/HCNetSDKCom/libHCGeneralCfgMgr.so


BIN
lib/linux/HCNetSDKCom/libHCIndustry.so


BIN
lib/linux/HCNetSDKCom/libHCPlayBack.so


BIN
lib/linux/HCNetSDKCom/libHCPreview.so


BIN
lib/linux/HCNetSDKCom/libHCVoiceTalk.so


BIN
lib/linux/HCNetSDKCom/libStreamTransClient.so


BIN
lib/linux/HCNetSDKCom/libSystemTransform.so


BIN
lib/linux/HCNetSDKCom/libanalyzedata.so


BIN
lib/linux/HCNetSDKCom/libiconv2.so


+ 12 - 0
lib/linux/HCNetSDK_Log_Switch.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="GB2312"?>
+<SdkLocal>
+	<SdkLog>
+        <logLevel>3</logLevel><!--req, 1-ERROR, 2-DEBUG, 3-INFO-->
+        <logDirectory>./SDKLOG/</logDirectory><!--the end of the string must be '/'-->
+        <autoDelete>true</autoDelete><!--true: There are less than 10 files in the directory, it will be auto deleted by sdk when the files are more than 10; false: No upper limit to the number of log files-->
+    </SdkLog>
+	<HeartbeatCfg>
+		<Interval>120</Interval> <!-- 心跳时间间隔,单位秒,等于0,使用默认值120s,取值范围为[30, 120] 小于30s,间隔为30s,大于120s,间隔为120s-->
+		<Count>1</Count> 	<!-- 触发异常回调需要心跳交互异常的次数,等于0,使用默认值1次-->
+	</HeartbeatCfg>
+</SdkLocal>

BIN
lib/linux/libAudioRender.so


BIN
lib/linux/libHCCore.so


BIN
lib/linux/libNPQos.so


BIN
lib/linux/libPlayCtrl.so


BIN
lib/linux/libSuperRender.so


BIN
lib/linux/libcrypto.so.1.1


BIN
lib/linux/libhcnetsdk.so


BIN
lib/linux/libhpr.so


BIN
lib/linux/libopenal.so.1


BIN
lib/linux/libssl.so.1.1


BIN
lib/linux/libz.so


BIN
lib/win/AudioRender.dll


BIN
lib/win/ClientDemo.exe


+ 1 - 0
lib/win/ClientDemoDll/ReadMe.txt

@@ -0,0 +1 @@
+The dll in this directory£¨iconv.dll,libxml2.dll,zlib1.dll,calib.dll£©only used in ClientDemo.

BIN
lib/win/ClientDemoDll/calib.dll


BIN
lib/win/ClientDemoDll/iconv.dll


BIN
lib/win/ClientDemoDll/libcrypto-1_1-x64.dll


BIN
lib/win/ClientDemoDll/libssl-1_1-x64.dll


BIN
lib/win/ClientDemoDll/libxml2.dll


BIN
lib/win/ClientDemoDll/zlib1.dll


BIN
lib/win/GdiPlus.dll


BIN
lib/win/GdiPlus.lib


BIN
lib/win/HCCore.dll


BIN
lib/win/HCCore.lib


BIN
lib/win/HCNetSDK.dll


BIN
lib/win/HCNetSDK.lib


BIN
lib/win/HCNetSDKCom/AnalyzeData.dll


BIN
lib/win/HCNetSDKCom/AudioIntercom.dll


BIN
lib/win/HCNetSDKCom/AudioRender.dll


BIN
lib/win/HCNetSDKCom/HCAlarm.dll


BIN
lib/win/HCNetSDKCom/HCAlarm.lib


BIN
lib/win/HCNetSDKCom/HCCoreDevCfg.dll


BIN
lib/win/HCNetSDKCom/HCDisplay.dll


BIN
lib/win/HCNetSDKCom/HCGeneralCfgMgr.dll


BIN
lib/win/HCNetSDKCom/HCGeneralCfgMgr.lib


BIN
lib/win/HCNetSDKCom/HCIndustry.dll


BIN
lib/win/HCNetSDKCom/HCPlayBack.dll


BIN
lib/win/HCNetSDKCom/HCPreview.dll


BIN
lib/win/HCNetSDKCom/HCPreview.lib


BIN
lib/win/HCNetSDKCom/HCVoiceTalk.dll


BIN
lib/win/HCNetSDKCom/OpenAL32.dll


BIN
lib/win/HCNetSDKCom/StreamTransClient.dll


BIN
lib/win/HCNetSDKCom/SystemTransform.dll


BIN
lib/win/HCNetSDKCom/libiconv2.dll


BIN
lib/win/HXVA.dll


BIN
lib/win/HmMerge.dll


BIN
lib/win/LocalXml.zip


BIN
lib/win/MP_Render.dll


BIN
lib/win/NPQos.dll


BIN
lib/win/OpenAL32.dll


BIN
lib/win/PlayCtrl.dll


BIN
lib/win/PlayCtrl.lib


BIN
lib/win/SuperRender.dll


BIN
lib/win/YUVProcess.dll


BIN
lib/win/hlog.dll


BIN
lib/win/hpr.dll


BIN
lib/win/libcrypto-1_1-x64.dll


BIN
lib/win/libmmd.dll


BIN
lib/win/libssl-1_1-x64.dll


BIN
lib/win/zlib1.dll


+ 11 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/entity/LabMessageContent.java

@@ -98,6 +98,9 @@ public class LabMessageContent extends BaseEntity {
     @ApiModelProperty("过期日期(实验室消息专用)")
     @ApiModelProperty("过期日期(实验室消息专用)")
     private Date expirationDate;
     private Date expirationDate;
 
 
+    @ApiModelProperty("是否已读")
+    private boolean ifRead = false;
+
     public Integer getMessClass() {
     public Integer getMessClass() {
         return messClass;
         return messClass;
     }
     }
@@ -224,4 +227,12 @@ public class LabMessageContent extends BaseEntity {
     public void setSubName(String subName) {
     public void setSubName(String subName) {
         this.subName = subName;
         this.subName = subName;
     }
     }
+
+    public boolean isIfRead() {
+        return ifRead;
+    }
+
+    public void setIfRead(boolean ifRead) {
+        this.ifRead = ifRead;
+    }
 }
 }

+ 7 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteMessageContentService.java

@@ -5,6 +5,7 @@ import com.zd.laboratory.api.feign.fallback.RemoteMessageContentFallbackFactory;
 import com.zd.laboratory.api.vo.LabMessageUserListVO;
 import com.zd.laboratory.api.vo.LabMessageUserListVO;
 import com.zd.model.constant.ApplicationConstants;
 import com.zd.model.constant.ApplicationConstants;
 import com.zd.model.domain.R;
 import com.zd.model.domain.R;
+import com.zd.model.entity.SysUser;
 import com.zd.model.page.TableDataInfo;
 import com.zd.model.page.TableDataInfo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
@@ -65,4 +66,10 @@ public interface RemoteMessageContentService {
 
 
     @PostMapping("/dynamic/addMessage")
     @PostMapping("/dynamic/addMessage")
     public R addDynamicMessage( @RequestBody Object obj);
     public R addDynamicMessage( @RequestBody Object obj);
+
+    @PostMapping("/haikang/user/updateUserCard")
+    public void updateUserCard(@RequestBody SysUser user);
+
+    @PostMapping("/haikang/user/updateUserFace")
+    public void updateUserFace(@RequestBody SysUser user);
 }
 }

+ 11 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/fallback/RemoteMessageContentFallbackFactory.java

@@ -4,6 +4,7 @@ import com.zd.laboratory.api.entity.LabMessageUser;
 import com.zd.laboratory.api.feign.RemoteMessageContentService;
 import com.zd.laboratory.api.feign.RemoteMessageContentService;
 import com.zd.laboratory.api.vo.LabMessageUserListVO;
 import com.zd.laboratory.api.vo.LabMessageUserListVO;
 import com.zd.model.domain.R;
 import com.zd.model.domain.R;
+import com.zd.model.entity.SysUser;
 import com.zd.model.page.TableDataInfo;
 import com.zd.model.page.TableDataInfo;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
@@ -108,6 +109,16 @@ public class RemoteMessageContentFallbackFactory implements FallbackFactory<Remo
             public R addDynamicMessage(Object obj) {
             public R addDynamicMessage(Object obj) {
                 return null;
                 return null;
             }
             }
+
+            @Override
+            public void updateUserCard(SysUser user) {
+                log.error("更新海康用户卡号信息 失败!");
+            }
+
+            @Override
+            public void updateUserFace(SysUser user) {
+                log.error("更新海康用户人脸信息 失败!");
+            }
         };
         };
     }
     }
 }
 }

+ 1 - 1
zd-common/common-core/src/main/java/com/zd/common/core/exception/GlobalExceptionHandler.java

@@ -146,6 +146,6 @@ public class GlobalExceptionHandler {
      */
      */
     @ExceptionHandler(NoRollException.class)
     @ExceptionHandler(NoRollException.class)
     public AjaxResult handleNoRollException(NoRollException e) {
     public AjaxResult handleNoRollException(NoRollException e) {
-        return AjaxResult.error(e.getMessage());
+        return AjaxResult.error(e.getCode()== null? HttpStatus.ERROR : e.getCode(),e.getMessage());
     }
     }
 }
 }

+ 41 - 2
zd-common/common-core/src/main/java/com/zd/common/core/exception/NoRollException.java

@@ -4,7 +4,46 @@ public class NoRollException extends RuntimeException{
 
 
     private static final long serialVersionUID = 1L;
     private static final long serialVersionUID = 1L;
 
 
-    public NoRollException(String msg) {
-        super(msg);
+    /**
+     * 错误码
+     */
+    private Integer code;
+
+    /**
+     * 错误提示
+     */
+    private String message;
+
+    /**
+     * 数量
+     */
+    private Integer count;
+
+    public NoRollException() {
+    }
+
+    public NoRollException(Integer code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+
+    public NoRollException(Integer code, Integer count, String message) {
+        this.code = code;
+        this.count = count;
+        this.message = message;
     }
     }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    @Override
+    public String getMessage() {
+        return message;
+    }
+
+    public Integer getCount() {
+        return count;
+    }
+
 }
 }

+ 13 - 0
zd-common/common-core/src/main/java/com/zd/common/core/utils/SaveUtil.java

@@ -61,4 +61,17 @@ public class SaveUtil {
             o.setDeptId(sysUser.getDept().getDeptId());
             o.setDeptId(sysUser.getDept().getDeptId());
         }
         }
     }
     }
+
+    public static void setCommonAttr(BaseEntity o, LoginUser loginUser) {
+        SysUser sysUser = loginUser.getSysUser();
+        //设置创建时间
+        o.setCreateTime(DateUtils.getNowDate());
+        //设置创建人
+        o.setCreateBy(sysUser.getNickName());
+        o.setUserId(sysUser.getUserId());
+        if (sysUser.getDept() != null) {
+            o.setDeptId(sysUser.getDept().getDeptId());
+            o.setDeptName(sysUser.getDept().getDeptName());
+        }
+    }
 }
 }

BIN
zd-haikang.zip


+ 15 - 0
zd-model/src/main/java/com/zd/model/domain/per/PerPrefix.java

@@ -781,4 +781,19 @@ public class PerPrefix {
      * 实验室项目:灭火设备
      * 实验室项目:灭火设备
      */
      */
     public static final String ALGORITHM_FIREDEVICE = "algorithm:firedevice:";
     public static final String ALGORITHM_FIREDEVICE = "algorithm:firedevice:";
+
+    /***
+     * 海康门禁
+     */
+    public static final String HAIKANG_DOOR= "haikang:door:";
+
+    /***
+     * 海康门禁用户
+     */
+    public static final String HAIKANG_USER= "haikang:user:";
+
+    /***
+     * 海康授权日志
+     */
+    public static final String HAIKANG_USERLOG= "haikang:userLog:";
 }
 }

+ 2 - 2
zd-model/src/main/java/com/zd/model/enums/HardwareTypeEnum.java

@@ -21,8 +21,8 @@ public enum HardwareTypeEnum implements BaseEnum<Integer>, HardwareType {
     RFID_RECOGNIZER(7, "RFID识别器", ""),
     RFID_RECOGNIZER(7, "RFID识别器", ""),
     AI_ALARM(8, "智能报警器", ""),
     AI_ALARM(8, "智能报警器", ""),
     AI_CABINETLOCK(9, "智能柜锁", ""),
     AI_CABINETLOCK(9, "智能柜锁", ""),
-    AI_OUTFIRE(10, "一键灭火", "");
-
+    AI_OUTFIRE(10, "一键灭火", ""),
+    HK_DOOR(11, "海康门禁", "");
 
 
 
 
     private final Integer code;
     private final Integer code;

+ 1 - 1
zd-modules/zd-base/src/main/java/com/zd/base/files/file/controller/SysFileController.java

@@ -39,7 +39,7 @@ public class SysFileController {
             }else {
             }else {
                 fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
                 fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
             }
             }
-            String[] picSuffixList = {".jpg", ".png", ".jpeg", ".gif", ".bmp", ".ico", ".pdf", ".doc", ".docx", ".ppt", ".pptx", ".mp3", ".mp4", ".xls", ".xlsx", ".csv", ".txt"};
+            String[] picSuffixList = {".jpg", ".png", ".jpeg", ".gif", ".bmp", ".ico", ".pdf", ".doc", ".docx", ".ppt", ".pptx", ".mp3", ".mp4", ".avi", ".xls", ".xlsx", ".csv", ".txt", ".apk"};
             boolean suffixFlag = false;
             boolean suffixFlag = false;
             for (String white_suffix : picSuffixList) {
             for (String white_suffix : picSuffixList) {
                 if (fileSuffix.toLowerCase().equals(white_suffix)) {
                 if (fileSuffix.toLowerCase().equals(white_suffix)) {

+ 16 - 0
zd-modules/zd-modules-laboratory/pom.xml

@@ -98,6 +98,19 @@
             <groupId>com.baomidou</groupId>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
         </dependency>
         </dependency>
+
+        <dependency>
+            <groupId>Acs</groupId>
+            <artifactId>com.zd.Acs</artifactId>
+            <version>1.0</version>
+            <scope>system</scope>
+            <systemPath>${pom.basedir}/src/main/resources/libs/zd-haikang.jar</systemPath>
+        </dependency>
+        <dependency>
+            <groupId>net.coobird</groupId>
+            <artifactId>thumbnailator</artifactId>
+            <version>0.4.8</version>
+        </dependency>
     </dependencies>
     </dependencies>
 
 
     <build>
     <build>
@@ -107,6 +120,9 @@
                 <groupId>org.springframework.boot</groupId>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <version>${spring-boot.version}</version>
                 <version>${spring-boot.version}</version>
+                <configuration>
+                    <includeSystemScope>true</includeSystemScope>
+                </configuration>
                 <executions>
                 <executions>
                     <execution>
                     <execution>
                         <goals>
                         <goals>

+ 3 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/ZdLaboratoryApplication.java

@@ -1,8 +1,10 @@
 package com.zd.laboratory;
 package com.zd.laboratory;
 
 
+import Acs.AcsBase;
 import com.zd.common.core.annotation.EnableCustomConfig;
 import com.zd.common.core.annotation.EnableCustomConfig;
 import com.zd.common.core.annotation.EnableZdFeignClients;
 import com.zd.common.core.annotation.EnableZdFeignClients;
 import com.zd.common.core.launch.ZdStartApplication;
 import com.zd.common.core.launch.ZdStartApplication;
+import com.zd.laboratory.service.impl.HaiKangDoorService;
 import com.zd.model.constant.ApplicationConstants;
 import com.zd.model.constant.ApplicationConstants;
 import com.zd.model.constant.BaseConstants;
 import com.zd.model.constant.BaseConstants;
 import org.mybatis.spring.annotation.MapperScan;
 import org.mybatis.spring.annotation.MapperScan;
@@ -23,6 +25,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 @MapperScan(value = {"com.zd.**.mapper"})
 @MapperScan(value = {"com.zd.**.mapper"})
 public class ZdLaboratoryApplication {
 public class ZdLaboratoryApplication {
     public static void main(String[] args) {
     public static void main(String[] args) {
+        HaiKangDoorService.skdInit = AcsBase.sdk_init();
         ZdStartApplication.run(ApplicationConstants.LABORATORY_SERVICE, ZdLaboratoryApplication.class, args);
         ZdStartApplication.run(ApplicationConstants.LABORATORY_SERVICE, ZdLaboratoryApplication.class, args);
     }
     }
 }
 }

+ 13 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/config/DisposableConfig.java

@@ -0,0 +1,13 @@
+package com.zd.laboratory.config;
+
+import Acs.AcsBase;
+import org.springframework.beans.factory.DisposableBean;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DisposableConfig implements DisposableBean {
+    @Override
+    public void destroy() throws Exception {
+        AcsBase.sdk_cleanup();
+    }
+}

+ 29 - 29
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/config/MyBatisPlusConfig.java

@@ -1,29 +1,29 @@
-package com.zd.laboratory.config;
-
-import com.baomidou.mybatisplus.annotation.DbType;
-import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-@MapperScan("com.cn.springbootmybatisplus06.mapper")
-@EnableTransactionManagement//自动管理事务
-@Configuration // 配置类
-public class MyBatisPlusConfig {
-
-    /**
-     * 新版
-     */
-    @Bean
-    public MybatisPlusInterceptor mybatisPlusInterceptor() {
-        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
-        //配置乐观锁
-        mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
-        //配置分页插件
-        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
-        return mybatisPlusInterceptor;
-    }
-}
+//package com.zd.laboratory.config;
+//
+//import com.baomidou.mybatisplus.annotation.DbType;
+//import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+//import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
+//import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+//import org.mybatis.spring.annotation.MapperScan;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.transaction.annotation.EnableTransactionManagement;
+//
+//@MapperScan("com.cn.springbootmybatisplus06.mapper")
+//@EnableTransactionManagement//自动管理事务
+//@Configuration // 配置类
+//public class MyBatisPlusConfig {
+//
+//    /**
+//     * 新版
+//     */
+//    @Bean
+//    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+//        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
+//        //配置乐观锁
+//        mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
+//        //配置分页插件
+//        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+//        return mybatisPlusInterceptor;
+//    }
+//}

+ 152 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabHaikangUserController.java

@@ -0,0 +1,152 @@
+package com.zd.laboratory.controller;
+
+import Commom.enums.UserVerifyMode;
+import com.zd.common.core.annotation.PreAuthorize;
+import com.zd.common.core.web.controller.BaseController;
+import com.zd.laboratory.domain.LabHaikangUser;
+import com.zd.laboratory.domain.vo.HaikangAddUserVo;
+import com.zd.laboratory.domain.vo.HaikangSubVo;
+import com.zd.laboratory.domain.vo.HaikangUserVo;
+import com.zd.laboratory.service.LabHaikangUserService;
+import com.zd.laboratory.service.impl.HaiKangDoorService;
+import com.zd.model.domain.ResultData;
+import com.zd.model.domain.per.PerFun;
+import com.zd.model.domain.per.PerPrefix;
+import com.zd.model.entity.SysUser;
+import com.zd.model.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 海康门禁人员下发表(LabHaikangUser)表控制层
+ *
+ * @author liubo
+ * @since 2022-11-24 11:07:23
+ */
+@RestController
+@RequestMapping("/haikang/user")
+@Api(tags = "海康人员关联信息")
+public class LabHaikangUserController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private LabHaikangUserService labHaikangUserService;
+    @Autowired
+    private HaiKangDoorService haiKangDoorService;
+
+    /**
+     * 查询门禁授权列表
+     */
+    @PostMapping("/subList")
+    @ApiOperation("查询门禁授权列表")
+    @PreAuthorize(hasPermi = PerPrefix.HAIKANG_DOOR+ PerFun.LIST)
+    public TableDataInfo<List<HaikangSubVo>> querySubList(@RequestBody HaikangSubVo haikangSubVo) {
+        startPage();
+        return getDataTable(this.labHaikangUserService.querySubList(haikangSubVo));
+    }
+
+    @PostMapping("/userList")
+    @ApiOperation("查询实验室已授权列表")
+    @PreAuthorize(hasPermi = PerPrefix.HAIKANG_USER+ PerFun.LIST)
+    public TableDataInfo<List<HaikangUserVo>> queryUserList(@RequestBody HaikangUserVo haikangUserVo) {
+        startPage();
+        return getDataTable(this.labHaikangUserService.queryUserList(haikangUserVo));
+    }
+
+
+    @GetMapping("/queryMySubList")
+    @ApiOperation("查询当前用户已授权门禁列表")
+    public ResultData<List<HaikangSubVo>> queryMySubList(HaikangSubVo haikangSubVo) {
+        return ResultData.success(this.labHaikangUserService.queryMySubList(haikangSubVo));
+    }
+
+
+    /**
+     * 通过主键查询单条数据
+     *
+     * @param id 主键
+     * @return 单条数据
+     */
+    @GetMapping("{id}")
+    public ResultData<LabHaikangUser> queryById(@PathVariable("id") Long id) {
+        return ResultData.success(this.labHaikangUserService.queryById(id));
+    }
+
+    /**
+     * 新增用户授权数据
+     */
+    @PostMapping("/add")
+    @ApiOperation("新增用户授权数据")
+    public ResultData<Integer> insertList(@Valid @RequestBody HaikangAddUserVo haikangAddUserVo) {
+        return ResultData.success(this.labHaikangUserService.insertList(haikangAddUserVo));
+    }
+
+    /**
+     * 批量修改用户授权失效日期
+     */
+    @PostMapping("/update")
+    @ApiOperation("新增用户授权数据")
+    public ResultData<Integer> updateList(@RequestBody HaikangAddUserVo haikangAddUserVo) {
+        return ResultData.success(this.labHaikangUserService.updateList(haikangAddUserVo));
+    }
+
+    /**
+     * 批量重试授权列表
+     */
+    @PostMapping("/retryAccredit")
+    @ApiOperation("批量重试授权列表")
+    public ResultData<Integer> retryAccredit(@Valid @RequestBody HaikangAddUserVo haikangAddUserVo) {
+        return ResultData.success(this.labHaikangUserService.retryAccredit(haikangAddUserVo));
+    }
+
+    /**
+     * 删除数据
+     *
+     */
+    @ApiOperation("删除用户授权")
+    @DeleteMapping("/{ids}")
+    public ResultData<Boolean> remove(@PathVariable Long[] ids) {
+        return ResultData.success(this.labHaikangUserService.deleteByIds(ids));
+    }
+
+    @ApiOperation("查询门禁授权类型接口")
+    @PostMapping("/queryTypes")
+    public ResultData< List<Map<String, String>>> queryTypes() {
+
+        List<Map<String, String>> list = new ArrayList<>();
+        UserVerifyMode[] modes = UserVerifyMode.values();
+        Map<String, String> map;
+        for (UserVerifyMode mode : modes) {
+            map = new HashMap<>();
+            map.put("key", mode.getKey());
+            map.put("value", mode.getValue());
+            list.add(map);
+        }
+
+        return ResultData.success(list);
+    }
+
+    @ApiOperation("海康更新用户卡号")
+    @PostMapping("/updateUserCard")
+    public void updateUserCard(@RequestBody SysUser user) {
+        haiKangDoorService.updateUserCard(user);
+    }
+
+    @ApiOperation("海康更新用户人脸")
+    @PostMapping("/updateUserFace")
+    public void updateUserFace(@RequestBody SysUser user) {
+        haiKangDoorService.updateUserFace(user);
+    }
+
+}
+

+ 73 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabHaikangUserFingerController.java

@@ -0,0 +1,73 @@
+package com.zd.laboratory.controller;
+
+import com.zd.common.core.web.controller.BaseController;
+import com.zd.laboratory.domain.LabHaikangUserFinger;
+import com.zd.laboratory.service.LabHaikangUserFingerService;
+import com.zd.model.domain.ResultData;
+import com.zd.model.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 海康门禁人员指纹数据(LabHaikangUserFinger)表控制层
+ *
+ * @author liubo
+ * @since 2022-12-26 13:58:43
+ */
+@RestController
+@RequestMapping("/haikang/userFinger")
+@Api(tags = "海康人员指纹")
+public class LabHaikangUserFingerController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private LabHaikangUserFingerService labHaikangUserFingerService;
+
+    /**
+     * 查询用户指纹数据
+     */
+    @GetMapping("/queryList/{userId}")
+    @ApiOperation("查询用户指纹数据")
+    public TableDataInfo<List<LabHaikangUserFinger>> queryList(LabHaikangUserFinger labHaikangUserFinger) {
+        startPage();
+        return getDataTable(this.labHaikangUserFingerService.queryList(labHaikangUserFinger));
+    }
+
+    /**
+     * 查询用户指纹录取数量
+     * @param userId 用户ID
+     */
+    @GetMapping("/queryCount/{userId}")
+    @ApiOperation("查询用户指纹录取数量")
+    public ResultData<Integer> queryCountByUserId(@PathVariable("userId") Long userId) {
+        return ResultData.success(this.labHaikangUserFingerService.queryCountByUserId(userId));
+    }
+
+    /**
+     * 指纹采集
+     * @param hardId 设备ID
+     * @param num  指纹编号
+     */
+    @PostMapping("/capture/{hardId}/{num}")
+    @ApiOperation("指纹采集")
+    public ResultData<String> fingerCapture(@PathVariable("hardId") Long hardId, @PathVariable("num") int num) {
+        return labHaikangUserFingerService.fingerCapture(hardId, num);
+    }
+
+    /**
+     * 指纹同步设备
+     * @param userId 用户ID
+     */
+    @PostMapping("/print/{userId}")
+    @ApiOperation("指纹同步设备")
+    public ResultData<String> fingerprint(@PathVariable("userId") Long userId) {
+        return labHaikangUserFingerService.fingerprint(userId);
+    }
+
+}
+

+ 49 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabHaikangUserLogController.java

@@ -0,0 +1,49 @@
+package com.zd.laboratory.controller;
+
+import com.zd.common.core.annotation.PreAuthorize;
+import com.zd.common.core.web.controller.BaseController;
+import com.zd.laboratory.domain.LabHaikangUserLog;
+import com.zd.laboratory.service.LabHaikangUserLogService;
+import com.zd.model.domain.per.PerFun;
+import com.zd.model.domain.per.PerPrefix;
+import com.zd.model.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 海康门禁用户授权日志表(LabHaikangUserLog)表控制层
+ *
+ * @author liubo
+ * @since 2022-11-30 13:10:08
+ */
+@RestController
+@RequestMapping("/haikang/userLog")
+@Api(tags = "海康门禁授权日志")
+public class LabHaikangUserLogController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private LabHaikangUserLogService labHaikangUserLogService;
+
+    /**
+     * 分页查询
+     *
+     * @param labHaikangUserLog 筛选条件
+     * @return 查询结果
+     */
+    @GetMapping("/list")
+    @ApiOperation("日志列表")
+    @PreAuthorize(hasPermi = PerPrefix.HAIKANG_DOOR+ PerFun.LIST)
+    public TableDataInfo<LabHaikangUserLog> queryByPage(LabHaikangUserLog labHaikangUserLog) {
+        startPage();
+        return getDataTable(this.labHaikangUserLogService.queryByPage(labHaikangUserLog));
+    }
+
+}
+

+ 16 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabHardwareController.java

@@ -223,6 +223,17 @@ public class LabHardwareController extends BaseController {
 
 
     }
     }
 
 
+    @ApiOperation(value = "根据硬件类型查询该实验室下的硬件")
+    @GetMapping("/queryHardByType")
+    public ResultData<List<LabHardwareVO>> listBySubjectId(Long subjectId, HardwareTypeEnum type){
+
+        LabHardware labHardware = new LabHardware();
+        labHardware.setSubjectId(subjectId);
+        labHardware.setType(type);
+
+        return ResultData.success(labHardwareService.selectLabHardwareList(labHardware));
+    }
+
     /***
     /***
      * 根据实验室id查询该实验室下的硬件信息
      * 根据实验室id查询该实验室下的硬件信息
      * @return
      * @return
@@ -264,6 +275,10 @@ public class LabHardwareController extends BaseController {
         ytjVo.setIds(ids);
         ytjVo.setIds(ids);
         List<LabHardware> listkzsb=labHardwareService.selectNewLabHardwareByTypes(ytjVo);
         List<LabHardware> listkzsb=labHardwareService.selectNewLabHardwareByTypes(ytjVo);
 
 
+        ytjVo.setType(HardwareTypeEnum.HK_DOOR);
+        ytjVo.setIds(null);
+        List<LabHardwareVO> listHK = labHardwareService.selectLabHardwareList(ytjVo);
+
         //实验室详情
         //实验室详情
         //LabSubject labSubject =labSubjectService.selectLabSubjectById(subjectId);
         //LabSubject labSubject =labSubjectService.selectLabSubjectById(subjectId);
 
 
@@ -273,6 +288,7 @@ public class LabHardwareController extends BaseController {
         map.put("listSpjk",listSpjk); //摄像头
         map.put("listSpjk",listSpjk); //摄像头
         map.put("listCgq",listCgq); //传感器
         map.put("listCgq",listCgq); //传感器
         map.put("listkzsb",listkzsb); //控制设备
         map.put("listkzsb",listkzsb); //控制设备
+        map.put("listHK",listHK);
         //map.put("labSubject",labSubject); //实验室详情
         //map.put("labSubject",labSubject); //实验室详情
         return AjaxResult.success(map);
         return AjaxResult.success(map);
 
 

+ 5 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabMessageContentController.java

@@ -27,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
+import javax.validation.constraints.NotNull;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -202,4 +203,8 @@ public class LabMessageContentController extends BaseController {
         messageUserService.readByLoginUser(labMessageUser);
         messageUserService.readByLoginUser(labMessageUser);
     }
     }
 
 
+    @GetMapping("/readMsgContent")
+    public void readMsgContent(@RequestParam @NotNull Long id) {
+        labMessageContentService.readMsgContent(id);
+    }
 }
 }

+ 12 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabStudentsInfoController.java

@@ -1,12 +1,12 @@
 package com.zd.laboratory.controller;
 package com.zd.laboratory.controller;
 
 
 import com.zd.algorithm.api.face.feign.RemoteFaceService;
 import com.zd.algorithm.api.face.feign.RemoteFaceService;
-import com.zd.model.entity.SysFile;
 import com.zd.base.api.feign.RemoteFileService;
 import com.zd.base.api.feign.RemoteFileService;
 import com.zd.common.core.annotation.PreAuthorize;
 import com.zd.common.core.annotation.PreAuthorize;
 import com.zd.common.core.utils.SecurityUtils;
 import com.zd.common.core.utils.SecurityUtils;
 import com.zd.common.core.utils.StringUtils;
 import com.zd.common.core.utils.StringUtils;
 import com.zd.common.core.web.controller.BaseController;
 import com.zd.common.core.web.controller.BaseController;
+import com.zd.laboratory.api.feign.RemoteMessageContentService;
 import com.zd.laboratory.domain.dto.LabStudentsInfoAuditDTO;
 import com.zd.laboratory.domain.dto.LabStudentsInfoAuditDTO;
 import com.zd.laboratory.domain.vo.LabStudentsInfoVO;
 import com.zd.laboratory.domain.vo.LabStudentsInfoVO;
 import com.zd.laboratory.service.ILabStudentsInfoService;
 import com.zd.laboratory.service.ILabStudentsInfoService;
@@ -14,6 +14,8 @@ import com.zd.model.domain.R;
 import com.zd.model.domain.ResultData;
 import com.zd.model.domain.ResultData;
 import com.zd.model.domain.per.PerFun;
 import com.zd.model.domain.per.PerFun;
 import com.zd.model.domain.per.PerPrefix;
 import com.zd.model.domain.per.PerPrefix;
+import com.zd.model.entity.SysFile;
+import com.zd.model.entity.SysUser;
 import com.zd.model.enums.AuditStatusEnum;
 import com.zd.model.enums.AuditStatusEnum;
 import com.zd.model.page.TableDataInfo;
 import com.zd.model.page.TableDataInfo;
 import com.zd.system.api.entity.LabStudentsInfo;
 import com.zd.system.api.entity.LabStudentsInfo;
@@ -46,6 +48,8 @@ public class LabStudentsInfoController extends BaseController {
 
 
     @Autowired
     @Autowired
     private RemoteFaceService remoteFaceService;
     private RemoteFaceService remoteFaceService;
+    @Autowired
+    private RemoteMessageContentService remoteMessageContentService;
 
 
     /**
     /**
      * 查询学生信息列表
      * 查询学生信息列表
@@ -188,6 +192,13 @@ public class LabStudentsInfoController extends BaseController {
             if (labStudentsInfoService.commitMyFace(url,fileResult1.getData()) == 1) {
             if (labStudentsInfoService.commitMyFace(url,fileResult1.getData()) == 1) {
                 Map data = new HashMap(2);
                 Map data = new HashMap(2);
                 data.put("cardUrl", url);
                 data.put("cardUrl", url);
+
+                // 海康更新人脸信息
+                SysUser user = new SysUser();
+                user.setUserId(SecurityUtils.getUserIdEx());
+                user.setFaceImg(url);
+                remoteMessageContentService.updateUserFace(user);
+
                 return R.ok(data);
                 return R.ok(data);
             }
             }
         }
         }

+ 26 - 7
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabWhitelistController.java

@@ -1,26 +1,31 @@
 package com.zd.laboratory.controller;
 package com.zd.laboratory.controller;
 
 
-import com.zd.model.domain.per.PerFun;
-import com.zd.model.domain.per.PerPrefix;
-import com.zd.common.core.utils.ExcelUtil;
-import com.zd.common.core.web.controller.BaseController;
-import com.zd.model.domain.ResultData;
-import com.zd.model.page.TableDataInfo;
 import com.zd.common.core.annotation.Log;
 import com.zd.common.core.annotation.Log;
-import com.zd.common.core.log.BusinessType;
 import com.zd.common.core.annotation.PreAuthorize;
 import com.zd.common.core.annotation.PreAuthorize;
+import com.zd.common.core.exception.NoRollException;
+import com.zd.common.core.log.BusinessType;
 import com.zd.common.core.security.TokenService;
 import com.zd.common.core.security.TokenService;
+import com.zd.common.core.utils.ExcelUtil;
+import com.zd.common.core.web.controller.BaseController;
 import com.zd.laboratory.domain.LabWhiteJoinSublist;
 import com.zd.laboratory.domain.LabWhiteJoinSublist;
 import com.zd.laboratory.domain.LabWhitelist;
 import com.zd.laboratory.domain.LabWhitelist;
 import com.zd.laboratory.domain.vo.LabSubjectVO;
 import com.zd.laboratory.domain.vo.LabSubjectVO;
 import com.zd.laboratory.domain.vo.LabWhitelistVO;
 import com.zd.laboratory.domain.vo.LabWhitelistVO;
 import com.zd.laboratory.service.ILabWhiteJoinSublistService;
 import com.zd.laboratory.service.ILabWhiteJoinSublistService;
 import com.zd.laboratory.service.ILabWhitelistService;
 import com.zd.laboratory.service.ILabWhitelistService;
+import com.zd.laboratory.service.impl.HaiKangDoorService;
+import com.zd.model.constant.HttpStatus;
+import com.zd.model.domain.ResultData;
+import com.zd.model.domain.per.PerFun;
+import com.zd.model.domain.per.PerPrefix;
 import com.zd.model.entity.SysUser;
 import com.zd.model.entity.SysUser;
+import com.zd.model.page.TableDataInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
+
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.IOException;
 import java.util.Date;
 import java.util.Date;
@@ -48,6 +53,9 @@ public class LabWhitelistController extends BaseController
     @Autowired
     @Autowired
     private ILabWhiteJoinSublistService labWhiteJoinSublistService;
     private ILabWhiteJoinSublistService labWhiteJoinSublistService;
 
 
+    @Autowired
+    private HaiKangDoorService haiKangDoorService;
+
     /**
     /**
      * 查询白名单列表
      * 查询白名单列表
      */
      */
@@ -116,11 +124,13 @@ public class LabWhitelistController extends BaseController
     @ApiOperation(value = "新增白名单")
     @ApiOperation(value = "新增白名单")
     @PreAuthorize(hasPermi = PerPrefix.LABORATORY_WHITELIST + PerFun.ADD)
     @PreAuthorize(hasPermi = PerPrefix.LABORATORY_WHITELIST + PerFun.ADD)
     @PostMapping("/addList")
     @PostMapping("/addList")
+    @Transactional(noRollbackFor = {NoRollException.class})
     public ResultData addList(@RequestBody LabWhitelistVO labWhitelistVo)
     public ResultData addList(@RequestBody LabWhitelistVO labWhitelistVo)
     {
     {
         SysUser sysUser = tokenService.getLoginUser().getSysUser();
         SysUser sysUser = tokenService.getLoginUser().getSysUser();
         List<LabWhitelist> labWhitelist=labWhitelistVo.getLabWhitelist();
         List<LabWhitelist> labWhitelist=labWhitelistVo.getLabWhitelist();
         int id=0;
         int id=0;
+        int count = 0;
         for (int i=0; i<labWhitelist.size(); i++){
         for (int i=0; i<labWhitelist.size(); i++){
             labWhitelist.get(i).setCreateUser(sysUser.getNickName());
             labWhitelist.get(i).setCreateUser(sysUser.getNickName());
             labWhitelist.get(i).setCreateId(sysUser.getUserId());
             labWhitelist.get(i).setCreateId(sysUser.getUserId());
@@ -133,7 +143,16 @@ public class LabWhitelistController extends BaseController
                labWhiteJoinSublist.setCreateTime(new Date());
                labWhiteJoinSublist.setCreateTime(new Date());
                labWhiteJoinSublistService.insertLabWhiteJoinSublist(labWhiteJoinSublist);
                labWhiteJoinSublistService.insertLabWhiteJoinSublist(labWhiteJoinSublist);
            }
            }
+
+            count += haiKangDoorService.addUserDoorByWhiteList(labWhitelistVo.getLabWhiteJoinSubList(), labWhitelistVo.getLabWhitelist(),
+                    tokenService.getLoginUser());
+
         }
         }
+
+        if(count > 0){
+            throw new NoRollException(HttpStatus.NOT_IMPLEMENTED, count, "门禁授权失败【"+count+"】,是否立即处理");
+        }
+
         return ResultData.result(id);
         return ResultData.result(id);
     }
     }
 
 

+ 8 - 8
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/device/DeviceRemoteController.java

@@ -54,8 +54,8 @@ public class DeviceRemoteController {
             ops.flush();
             ops.flush();
             logger.info("柜锁开锁指令:" + instruct);
             logger.info("柜锁开锁指令:" + instruct);
 
 
-            Thread.sleep(500);
-            ops.write(ReUtil.hexStringToByteArray(instruct));
+            Thread.sleep(1500);
+            /*ops.write(ReUtil.hexStringToByteArray(instruct));
             ops.flush();
             ops.flush();
 
 
             Thread.sleep(300);
             Thread.sleep(300);
@@ -80,7 +80,7 @@ public class DeviceRemoteController {
 
 
             Thread.sleep(500);
             Thread.sleep(500);
             Integer status = redisService.getCacheObject(relayCode + ":" + cabinetV2Lock.getLockId());
             Integer status = redisService.getCacheObject(relayCode + ":" + cabinetV2Lock.getLockId());
-            logger.info("柜锁开锁锁状态查询:" + instruct + ",开锁结果:" + status);
+            logger.info("柜锁开锁锁状态查询:" + instruct + ",开锁结果:" + status);*/
             /*if(status != null && status == 1){
             /*if(status != null && status == 1){
                 return ResultData.success("开锁成功");
                 return ResultData.success("开锁成功");
             }*/
             }*/
@@ -104,20 +104,20 @@ public class DeviceRemoteController {
         OutputStream ops = TCPServer.cacheMap.get(relayCode);
         OutputStream ops = TCPServer.cacheMap.get(relayCode);
 
 
         try {
         try {
-            ops.write(ReUtil.hexStringToByteArray(instruct));
+            /*ops.write(ReUtil.hexStringToByteArray(instruct));
             ops.flush();
             ops.flush();
             logger.info("柜锁关锁指令:" + instruct);
             logger.info("柜锁关锁指令:" + instruct);
-            Thread.sleep(1000);
+            Thread.sleep(1000);*/
 
 
             instruct = CRCCHECK.getReadLockOrder(Integer.parseInt(cabinetV2Lock.getLockId()));
             instruct = CRCCHECK.getReadLockOrder(Integer.parseInt(cabinetV2Lock.getLockId()));
             ops.write(ReUtil.hexStringToByteArray(instruct));
             ops.write(ReUtil.hexStringToByteArray(instruct));
             ops.flush();
             ops.flush();
 
 
-            Thread.sleep(600);
+            /*Thread.sleep(600);
             ops.write(ReUtil.hexStringToByteArray(instruct));
             ops.write(ReUtil.hexStringToByteArray(instruct));
-            ops.flush();
+            ops.flush();*/
 
 
-            Thread.sleep(900);
+            Thread.sleep(1600);
             Integer status = redisService.getCacheObject(relayCode + ":" + cabinetV2Lock.getLockId());
             Integer status = redisService.getCacheObject(relayCode + ":" + cabinetV2Lock.getLockId());
             logger.info("柜锁关锁状态查询:" + instruct + ",关锁结果" + status);
             logger.info("柜锁关锁状态查询:" + instruct + ",关锁结果" + status);
             if(status != null && status == 0){
             if(status != null && status == 0){

+ 324 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/LabHaikangUser.java

@@ -0,0 +1,324 @@
+package com.zd.laboratory.domain;
+
+import Commom.enums.UserVerifyMode;
+import com.zd.model.entity.BaseEntity;
+
+import java.util.Date;
+
+/**
+ * 海康门禁人员下发表(LabHaikangUser)实体类
+ *
+ * @author liubo
+ * @since 2022-11-24 11:07:35
+ */
+public class LabHaikangUser extends BaseEntity {
+    private static final long serialVersionUID = -27496382516308780L;
+    /**
+     * ID
+     */
+    private Long id;
+    /**
+     * 用户id(权限作用)
+     */
+    private Long userId;
+    /**
+     * 创建人
+     */
+    private String createBy;
+    /**
+     * 修改人
+     */
+    private String updateBy;
+    /**
+     * 部门id
+     */
+    private Long deptId;
+    /**
+     * 部门名称
+     */
+    private String deptName;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 用户ID
+     */
+    private Long joinUserId;
+    /**
+     * 用户姓名
+     */
+    private String nickName;
+    /**
+     * 验证方式(1 人脸,2 指纹,3 密码,4 刷卡,5 工号)
+     */
+    private String verifyMode = UserVerifyMode.faceOrFpOrCardOrPw.getKey();
+    /**
+     * 失效时间(无代表无限)
+     */
+    private Date invalidTime;
+    /**
+     * 授权类型(0 系统,1 白名单,2 安全准入,3 实验室责任人)
+     */
+    private Integer verifyType;
+    /**
+     * 密码
+     */
+    private String cipher;
+    /**
+     * 人脸照片
+     */
+    private String faceUrl;
+    /**
+     * 卡号
+     */
+    private String cardNo;
+    /**
+     * 工号
+     */
+    private String jobNo;
+    /**
+     * 指纹
+     */
+    private String fingerMark;
+
+    /**
+     * 设备ID
+     */
+    private Long hardId;
+
+    /**
+     * 实验室ID
+     */
+    private Long subId;
+
+    /**
+     * 用户(0 失败,1 成功)
+     */
+    private Boolean state;
+
+    /**
+     * 人脸(0 失败,1 成功)
+     */
+    private Boolean ifFace;
+
+    /**
+     * 刷卡(0 失败,1 成功)
+     */
+    private Boolean ifCard;
+
+    /**
+     * 指纹(0 失败,1 成功)
+     */
+    private Boolean ifFinger;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    public String getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy;
+    }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public Long getJoinUserId() {
+        return joinUserId;
+    }
+
+    public void setJoinUserId(Long joinUserId) {
+        this.joinUserId = joinUserId;
+    }
+
+    public String getVerifyMode() {
+        return verifyMode;
+    }
+
+    public void setVerifyMode(String verifyMode) {
+        this.verifyMode = verifyMode;
+    }
+
+    public Date getInvalidTime() {
+        return invalidTime;
+    }
+
+    public void setInvalidTime(Date invalidTime) {
+        this.invalidTime = invalidTime;
+    }
+
+    public Integer getVerifyType() {
+        return verifyType;
+    }
+
+    public void setVerifyType(Integer verifyType) {
+        this.verifyType = verifyType;
+    }
+
+    public String getCipher() {
+        return cipher;
+    }
+
+    public void setCipher(String cipher) {
+        this.cipher = cipher;
+    }
+
+    public String getFaceUrl() {
+        return faceUrl;
+    }
+
+    public void setFaceUrl(String faceUrl) {
+        this.faceUrl = faceUrl;
+    }
+
+    public String getCardNo() {
+        return cardNo;
+    }
+
+    public void setCardNo(String cardNo) {
+        this.cardNo = cardNo;
+    }
+
+    public String getJobNo() {
+        return jobNo;
+    }
+
+    public void setJobNo(String jobNo) {
+        this.jobNo = jobNo;
+    }
+
+    public String getFingerMark() {
+        return fingerMark;
+    }
+
+    public void setFingerMark(String fingerMark) {
+        this.fingerMark = fingerMark;
+    }
+
+    public Long getHardId() {
+        return hardId;
+    }
+
+    public void setHardId(Long hardId) {
+        this.hardId = hardId;
+    }
+
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
+    }
+
+    public Long getSubId() {
+        return subId;
+    }
+
+    public void setSubId(Long subId) {
+        this.subId = subId;
+    }
+
+    public Boolean isState() {
+        return state;
+    }
+
+    public void setState(Boolean state) {
+        this.state = state;
+    }
+
+    public Boolean isIfFace() {
+        return ifFace;
+    }
+
+    public void setIfFace(Boolean ifFace) {
+        this.ifFace = ifFace;
+    }
+
+    public Boolean isIfCard() {
+        return ifCard;
+    }
+
+    public void setIfCard(Boolean ifCard) {
+        this.ifCard = ifCard;
+    }
+
+    public Boolean isIfFinger() {
+        return ifFinger;
+    }
+
+    public void setIfFinger(Boolean ifFinger) {
+        this.ifFinger = ifFinger;
+    }
+}
+

+ 66 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/LabHaikangUserFinger.java

@@ -0,0 +1,66 @@
+package com.zd.laboratory.domain;
+
+import com.zd.model.entity.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 海康门禁人员指纹数据(LabHaikangUserFinger)实体类
+ *
+ * @author liubo
+ * @since 2022-12-26 13:58:43
+ */
+public class LabHaikangUserFinger extends BaseEntity {
+    private static final long serialVersionUID = 265021752135549355L;
+    /**
+     * ID
+     */
+    private Long id;
+    /**
+     * 用户ID
+     */
+    private Long joinUserId;
+    /**
+     * 手指编号(1-10)
+     */
+    @ApiModelProperty("手指编号")
+    private Integer fingerNum;
+    /**
+     * 指纹数据
+     */
+    private String fingerData;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getJoinUserId() {
+        return joinUserId;
+    }
+
+    public void setJoinUserId(Long joinUserId) {
+        this.joinUserId = joinUserId;
+    }
+
+    public Integer getFingerNum() {
+        return fingerNum;
+    }
+
+    public void setFingerNum(Integer fingerNum) {
+        this.fingerNum = fingerNum;
+    }
+
+    public String getFingerData() {
+        return fingerData;
+    }
+
+    public void setFingerData(String fingerData) {
+        this.fingerData = fingerData;
+    }
+
+}
+

+ 165 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/LabHaikangUserLog.java

@@ -0,0 +1,165 @@
+package com.zd.laboratory.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zd.model.entity.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+/**
+ * 海康门禁用户授权日志表(LabHaikangUserLog)实体类
+ *
+ * @author liubo
+ * @since 2022-11-30 13:10:15
+ */
+@ApiModel("授权日志表")
+public class LabHaikangUserLog extends BaseEntity {
+    private static final long serialVersionUID = -10889733946872155L;
+    /**
+     * ID
+     */
+    private Long id;
+
+    @ApiModelProperty("姓名")
+    private String nickName;
+
+    @ApiModelProperty("类别")
+    private String userType;
+
+    @ApiModelProperty("门禁名称")
+    private String hardName;
+
+    @ApiModelProperty("实验室名称")
+    private String subName;
+
+    @ApiModelProperty("所属学院")
+    private String deptName;
+
+    @ApiModelProperty("实验室位置")
+    private String posi;
+
+    @ApiModelProperty("操作内容")
+    private String remark;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "操作时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "操作人")
+    private String createBy;
+    /**
+     * 用户ID
+     */
+    private Long joinUserId;
+    /**
+     * 设备ID
+     */
+    private Long hardId;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getJoinUserId() {
+        return joinUserId;
+    }
+
+    public void setJoinUserId(Long joinUserId) {
+        this.joinUserId = joinUserId;
+    }
+
+    public Long getHardId() {
+        return hardId;
+    }
+
+    public void setHardId(Long hardId) {
+        this.hardId = hardId;
+    }
+
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
+    }
+
+    public String getUserType() {
+        return userType;
+    }
+
+    public void setUserType(String userType) {
+        this.userType = userType;
+    }
+
+    public String getHardName() {
+        return hardName;
+    }
+
+    public void setHardName(String hardName) {
+        this.hardName = hardName;
+    }
+
+    public String getSubName() {
+        return subName;
+    }
+
+    public void setSubName(String subName) {
+        this.subName = subName;
+    }
+
+    @Override
+    public String getDeptName() {
+        return deptName;
+    }
+
+    @Override
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public String getPosi() {
+        return posi;
+    }
+
+    public void setPosi(String posi) {
+        this.posi = posi;
+    }
+
+    @Override
+    public String getRemark() {
+        return remark;
+    }
+
+    @Override
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    @Override
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    @Override
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    @Override
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+}
+

+ 0 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/LabHardware.java


Некоторые файлы не были показаны из-за большого количества измененных файлов