Parcourir la source

电子信息牌接口开发 2023-03-29

donggaosheng il y a 2 ans
Parent
commit
cd9e010ece
64 fichiers modifiés avec 1941 ajouts et 16 suppressions
  1. 1 1
      ArcFace64.dat
  2. 189 0
      zd-api/zd-api-system/zd-api-system.iml
  3. 111 0
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteDutyService.java
  4. 79 0
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/fallback/RemoteDutyFailback.java
  5. 51 0
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/vo/LabSecurityApplyVo.java
  6. 95 0
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/vo/LabXxpClassifyVo.java
  7. 27 0
      zd-common/common-core/src/main/java/com/zd/common/core/utils/DateUtils.java
  8. 6 0
      zd-model/src/main/java/com/zd/model/constant/ApplicationConstants.java
  9. 4 2
      zd-model/src/main/java/com/zd/model/page/PageDomain.java
  10. 12 6
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
  11. 22 0
      zd-modules/zd-base/pom.xml
  12. 200 0
      zd-modules/zd-base/src/main/java/com/zd/base/app/controller/LabBoardApi.java
  13. 147 0
      zd-modules/zd-base/src/main/java/com/zd/base/app/domain/board/LabXxpSubjectVo.java
  14. 2 0
      zd-modules/zd-bottle-parent/pom.xml
  15. 16 0
      zd-modules/zd-bottle-parent/zd-bottle/pom.xml
  16. 28 0
      zd-modules/zd-chemical/pom.xml
  17. 10 0
      zd-modules/zd-exam/pom.xml
  18. 10 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabHardwareController.java
  19. 14 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabSecurityApplyController.java
  20. 5 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabSubjectAccessRecordController.java
  21. 16 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabSubjectController.java
  22. 19 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpClassifyDetailedController.java
  23. 1 2
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpDutyController.java
  24. 14 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpInspectionController.java
  25. 190 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/vo/LabXxpSubjectVo.java
  26. 2 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabHardwareMapper.java
  27. 7 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSecurityApplyMapper.java
  28. 7 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSubjectAccessRecordMapper.java
  29. 14 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSubjectMapper.java
  30. 7 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/XxpClassifyDetailedMapper.java
  31. 7 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/XxpClassifyMapper.java
  32. 19 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/XxpDutyMapper.java
  33. 21 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/XxpInspectionMapper.java
  34. 7 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabHardwareService.java
  35. 6 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSecurityApplyService.java
  36. 7 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSubjectAccessRecordService.java
  37. 15 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSubjectService.java
  38. 17 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/IXxpClassifyDetailedService.java
  39. 8 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/IXxpClassifyService.java
  40. 22 3
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/IXxpDutyService.java
  41. 18 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/IXxpInspectionService.java
  42. 5 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabHardwareServiceImpl.java
  43. 5 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSecurityApplyServiceImpl.java
  44. 5 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectAccessRecordServiceImpl.java
  45. 11 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectServiceImpl.java
  46. 41 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpClassifyDetailedServiceImpl.java
  47. 10 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpClassifyServiceImpl.java
  48. 10 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpDutyServiceImpl.java
  49. 18 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpInspectionServiceImpl.java
  50. 1 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/utils/CRCCHECK.java
  51. 3 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabHardwareMapper.xml
  52. 8 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSecurityApplyMapper.xml
  53. 10 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSubjectAccessRecordMapper.xml
  54. 22 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSubjectMapper.xml
  55. 5 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpClassifyDetailMapper.xml
  56. 11 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpClassifyMapper.xml
  57. 24 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpDutyMapper.xml
  58. 14 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpInspectionMapper.xml
  59. 11 0
      zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/CacheUtils.java
  60. 43 0
      zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/SocketRunner.java
  61. 101 0
      zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/TCPServer.java
  62. 53 0
      zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/TcpClient.java
  63. 53 0
      zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/TcpClient01.java
  64. 24 0
      zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/replyClient.java

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
ArcFace64.dat


+ 189 - 0
zd-api/zd-api-system/zd-api-system.iml

@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module" module-name="zd-common-core" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-openfeign:3.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-openfeign-core:3.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.5.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.5.3" level="project" />
+    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.7" level="project" />
+    <orderEntry type="library" name="Maven: io.github.openfeign.form:feign-form-spring:3.8.0" level="project" />
+    <orderEntry type="library" name="Maven: io.github.openfeign.form:feign-form:3.8.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-commons:3.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:5.5.1" level="project" />
+    <orderEntry type="library" name="Maven: io.github.openfeign:feign-core:10.12" level="project" />
+    <orderEntry type="library" name="Maven: io.github.openfeign:feign-slf4j:10.12" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-loadbalancer:3.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-loadbalancer:3.0.3" level="project" />
+    <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.4.8" level="project" />
+    <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
+    <orderEntry type="library" name="Maven: io.projectreactor.addons:reactor-extra:3.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-cache:2.5.3" level="project" />
+    <orderEntry type="library" name="Maven: com.stoyanr:evictor:1.0.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.3.9" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.9" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.9" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.9" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.9" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.9" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.10.0" level="project" />
+    <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.3.1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.5.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.5.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.5.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.14.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.14.1" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.32" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
+    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.28" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.5.3" level="project" />
+    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:4.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.3.9" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.9" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.2.0" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.7" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.6" level="project" />
+    <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.3.1" level="project" />
+    <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.2.1" level="project" />
+    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:4.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.5.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.50" level="project" />
+    <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.2.0.Final" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" />
+    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.2.Final" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.12.4" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.12.4" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.12.4" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.4" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.76" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
+    <orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" />
+    <orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.4" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:4.1.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi:4.1.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
+    <orderEntry type="library" name="Maven: com.zaxxer:SparseBitSet:1.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.1.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.1.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.19" level="project" />
+    <orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.06" level="project" />
+    <orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:4.0.1" level="project" />
+    <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.6.2" level="project" />
+    <orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.7.11" level="project" />
+    <orderEntry type="library" name="Maven: com.baidubce:bce-java-sdk:0.10.154" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.32" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.32" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.4" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.4" level="project" />
+    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:guava:17.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpasyncclient:4.1.4" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore-nio:4.4.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.13" level="project" />
+    <orderEntry type="library" name="Maven: joda-time:joda-time:2.3" level="project" />
+    <orderEntry type="library" name="Maven: org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.1" level="project" />
+    <orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish.jersey.media:jersey-media-multipart:2.33" level="project" />
+    <orderEntry type="library" name="Maven: org.jvnet.mimepull:mimepull:1.9.14" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish.jersey.connectors:jersey-apache-connector:2.33" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-client:2.33" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.ws.rs:jakarta.ws.rs-api:2.1.6" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-server:2.33" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish.hk2.external:jakarta.inject:2.6.1" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-common:2.33" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish.hk2:osgi-resource-locator:1.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish.jersey.media:jersey-media-json-jackson:2.33" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish.jersey.ext:jersey-entity-filtering:2.33" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.12.4" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.activation:jakarta.activation-api:1.2.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.hbase:hbase-client:1.2.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.hbase:hbase-annotations:1.2.0" level="project" />
+    <orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.hbase:hbase-common:1.2.0" level="project" />
+    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
+    <orderEntry type="library" name="Maven: org.mortbay.jetty:jetty-util:6.1.26" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.hbase:hbase-protocol:1.2.0" level="project" />
+    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
+    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
+    <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:2.5.0" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.66.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.zookeeper:zookeeper:3.4.6" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-log4j12:1.7.32" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.htrace:htrace-core:3.1.0-incubating" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.13" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.13" level="project" />
+    <orderEntry type="library" name="Maven: org.jruby.jcodings:jcodings:1.0.8" level="project" />
+    <orderEntry type="library" name="Maven: org.jruby.joni:joni:2.1.2" level="project" />
+    <orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.2.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-auth:2.5.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.directory.server:apacheds-kerberos-codec:2.0.0-M15" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.directory.server:apacheds-i18n:2.0.0-M15" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.directory.api:api-asn1-api:1.0.0-M20" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.directory.api:api-util:1.0.0-M20" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-common:2.5.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-annotations:2.5.1" level="project" />
+    <orderEntry type="module-library">
+      <library name="Maven: jdk.tools:jdk.tools:1.6">
+        <CLASSES>
+          <root url="jar://D:/Java/jdk1.8.0_181/lib/tools.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="library" name="Maven: commons-cli:commons-cli:1.2" level="project" />
+    <orderEntry type="library" name="Maven: xmlenc:xmlenc:0.52" level="project" />
+    <orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" />
+    <orderEntry type="library" name="Maven: commons-net:commons-net:3.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: commons-el:commons-el:1.0" level="project" />
+    <orderEntry type="library" name="Maven: commons-configuration:commons-configuration:1.6" level="project" />
+    <orderEntry type="library" name="Maven: commons-digester:commons-digester:1.8" level="project" />
+    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.7.0" level="project" />
+    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils-core:1.8.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.avro:avro:1.7.4" level="project" />
+    <orderEntry type="library" name="Maven: com.thoughtworks.paranamer:paranamer:2.3" level="project" />
+    <orderEntry type="library" name="Maven: org.xerial.snappy:snappy-java:1.0.4.1" level="project" />
+    <orderEntry type="library" name="Maven: com.jcraft:jsch:0.1.55" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:1.3.9" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-mapreduce-client-core:2.5.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-yarn-common:2.5.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.hadoop:hadoop-yarn-api:2.5.1" level="project" />
+    <orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
+    <orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty:3.6.2.Final" level="project" />
+    <orderEntry type="library" name="Maven: com.github.stephenc.findbugs:findbugs-annotations:1.3.9-1" level="project" />
+    <orderEntry type="library" name="Maven: junit:junit:4.13.2" level="project" />
+    <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:2.2" level="project" />
+    <orderEntry type="library" name="Maven: org.hamcrest:hamcrest:2.2" level="project" />
+    <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.59" level="project" />
+    <orderEntry type="library" name="Maven: com.belerweb:pinyin4j:2.5.1" level="project" />
+    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.9" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.9" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.9" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-bootstrap:3.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter:3.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-context:3.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-rsa:1.0.10.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.68" level="project" />
+  </component>
+</module>

+ 111 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteDutyService.java

@@ -0,0 +1,111 @@
+package com.zd.laboratory.api.feign;
+
+import com.zd.laboratory.api.feign.fallback.RemoteDutyFailback;
+import com.zd.model.constant.ApplicationConstants;
+import com.zd.model.domain.ResultData;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 远程调用值班排班数据
+ * @author  donggaosheng
+ * @time 2023/03/24
+ */
+@FeignClient(contextId = "remoteDutyService", value = ApplicationConstants.XXP_SERVICE, fallbackFactory = RemoteDutyFailback.class)
+public interface RemoteDutyService {
+    /**
+     * 通过实验室id当前时间查询值班人员
+     * @param labId
+     * @param dateTime
+     * @return
+     */
+    @GetMapping("/XxpDuty/api/selectDutyUser")
+    ResultData<List<Map<String, Object>>> selectDutyUser(Long labId, String dateTime);
+
+    /**
+     * 通过实验室id查询实验室信息
+     * @param id
+     * @return
+     */
+    @GetMapping("/subject/getXxpSubjectInfo/{id}")
+    ResultData getXxpSubjectInfo(@PathVariable("id") Long id);
+
+    /***
+     * 通过实验室id获取信息类目列表
+     * @param id
+     * @return
+     */
+    @GetMapping("/XxpClassifyDet/classifyDetail/{id}")
+    ResultData classifyDetailSubjectById(@PathVariable("id") Long id);
+
+    /**
+     * 通过实验室id获取信息类目列表
+     * @param deviceIds
+     * @param dpi
+     * @param page
+     * @param count
+     * @return
+     */
+    @GetMapping("/api/play/startList")
+    ResultData selectSubjectCameraList(String deviceIds, Integer dpi, int page, int count);
+
+    /***
+     * 根据实验室id查询摄像头编号
+     * @param subId
+     * @return
+     */
+    @GetMapping("/hardware/getCameraBySubjectId")
+    ResultData getCameraBySubjectId(Long subId);
+
+    /**
+     * 根据实验室id获取实验室详情
+     * @param id
+     * @return
+     */
+    @GetMapping("/subject/getSubjectDetails/{id}")
+    ResultData getSubjectDetails(@PathVariable("id") Long id);
+
+    /**
+     * 根据实验室id获取安全准入人员列表
+     * @param pageNumber
+     * @param pageSize
+     * @param subjectId
+     * @return
+     */
+    @GetMapping("/apply/app/securityApplyList")
+    ResultData securityApplyList(Integer pageNumber,Integer pageSize,Long subjectId);
+
+    /**
+     * 根据实验室获取签到未签退人员
+     * @param subjectId
+     * @return
+     */
+    @RequestMapping("/record/selectSubjectSignList")
+    ResultData selectSubjectSignList(Long subjectId);
+
+    /**
+     * 获取实验室所有值班人员的信息
+     * @param labId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    @RequestMapping("/api/selectDutyUserList")
+    ResultData<List<Map<String,Object>>> selectDutyUserList(Long labId,String startTime,String endTime);
+
+    /**
+     * 根据实验室id和当前时间查询签到记录
+     * @param labId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    @PostMapping("/app/selectUserXxpInspectionList")
+    public ResultData selectUserXxpInspectionList(Long labId,String startTime,String endTime);
+}

+ 79 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/fallback/RemoteDutyFailback.java

@@ -0,0 +1,79 @@
+package com.zd.laboratory.api.feign.fallback;
+
+import com.zd.laboratory.api.feign.RemoteDutyService;
+import com.zd.model.domain.ResultData;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 远程调用值班排班数据
+ * @author  donggaosheng
+ * @time 2023/03/24
+ */
+@Component
+public class RemoteDutyFailback implements FallbackFactory<RemoteDutyService> {
+
+    private static final Logger log = LoggerFactory.getLogger(RemoteDutyFailback.class);
+
+    @Override
+    public RemoteDutyService create(Throwable cause) {
+        log.error("用户服务调用失败:{}", cause.getMessage());
+        return new RemoteDutyService(){
+
+            @Override
+            public ResultData<List<Map<String, Object>>> selectDutyUser(Long labId, String dateTime) {
+                return ResultData.fail("获取值班人员列表失败:" + cause.getMessage());
+            }
+
+            @Override
+            public ResultData getXxpSubjectInfo(Long id) {
+                return ResultData.fail("获取信息牌首页实验室信息失败:" + cause.getMessage());
+            }
+
+            @Override
+            public ResultData classifyDetailSubjectById(Long id) {
+                return ResultData.fail("获取信息牌类目列表失败:" + cause.getMessage());
+            }
+
+            @Override
+            public ResultData selectSubjectCameraList(String deviceIds, Integer dpi, int page, int count) {
+                return ResultData.fail("获取实验室摄像头列表信息失败:" + cause.getMessage());
+            }
+
+            @Override
+            public ResultData getCameraBySubjectId(Long subId) {
+                return ResultData.fail("获取实验室摄像头编号信息失败:" + cause.getMessage());
+            }
+
+            @Override
+            public ResultData getSubjectDetails(Long id) {
+                return ResultData.fail("获取实验室详情信息失败:" + cause.getMessage());
+            }
+
+            @Override
+            public ResultData securityApplyList(Integer pageNumber, Integer pageSize, Long subjectId) {
+                return ResultData.fail("获取安全准入人员列表信息失败:" + cause.getMessage());
+            }
+
+            @Override
+            public ResultData selectSubjectSignList(Long subjectId) {
+                return ResultData.fail("获取签到人员列表信息失败:" + cause.getMessage());
+            }
+
+            @Override
+            public ResultData<List<Map<String, Object>>> selectDutyUserList(Long labId, String startTime, String endTime) {
+                return ResultData.fail("获取值班人员列表信息失败:" + cause.getMessage());
+            }
+
+            @Override
+            public ResultData selectUserXxpInspectionList(Long labId, String startTime, String endTime) {
+                return ResultData.fail("获取巡查记录列表信息失败:" + cause.getMessage());
+            }
+        };
+    }
+}

+ 51 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/vo/LabSecurityApplyVo.java

@@ -0,0 +1,51 @@
+package com.zd.laboratory.api.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author: donggaosheng
+ * @Date: 2023/03/27
+ * @Description: 用于展示一体机首页信息牌
+ */
+public class LabSecurityApplyVo {
+    @ApiModelProperty(value = "类目名称")
+    private String userName;
+    @ApiModelProperty(value = "工号卡号")
+    private String jobNumber;
+    @ApiModelProperty(value = "图像")
+    private String avatar;
+    @ApiModelProperty(value = "准入期限")
+    private String validEndTime;
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getJobNumber() {
+        return jobNumber;
+    }
+
+    public void setJobNumber(String jobNumber) {
+        this.jobNumber = jobNumber;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getValidEndTime() {
+        return validEndTime;
+    }
+
+    public void setValidEndTime(String validEndTime) {
+        this.validEndTime = validEndTime;
+    }
+}

+ 95 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/vo/LabXxpClassifyVo.java

@@ -0,0 +1,95 @@
+package com.zd.laboratory.api.vo;
+
+import com.zd.model.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Author: donggaosheng
+ * @Date: 2023/03/27
+ * @Description: 用于展示一体机首页信息牌
+ */
+public class LabXxpClassifyVo {
+    /** 类目名称 */
+    @ApiModelProperty(value = "类目名称")
+    private String classifyName;
+    /** 类目类型 1文字 2图片 */
+    @ApiModelProperty(value = "类目名称")
+    private Integer classifyType;
+    /** 排序 */
+    @Excel(name = "排序")
+    @ApiModelProperty(value = "排序")
+    private Integer sort;
+
+    /** 是否特殊类目 1否 2 是   */
+    @ApiModelProperty(value = "是否特殊类目")
+    private Integer isSpecial;
+
+    /** 是否展示 1展示 2不展示   */
+    @ApiModelProperty(value = "是否展示")
+    private Integer isShow;
+
+    /** 类目颜色   */
+    @ApiModelProperty(value = "类目颜色 ")
+    private String showColour;
+
+    @ApiModelProperty(value = "类目内容")
+    private List<String> classifyList;
+
+    public String getClassifyName() {
+        return classifyName;
+    }
+
+    public void setClassifyName(String classifyName) {
+        this.classifyName = classifyName;
+    }
+
+    public Integer getClassifyType() {
+        return classifyType;
+    }
+
+    public void setClassifyType(Integer classifyType) {
+        this.classifyType = classifyType;
+    }
+
+    public Integer getSort() {
+        return sort;
+    }
+
+    public void setSort(Integer sort) {
+        this.sort = sort;
+    }
+
+    public Integer getIsSpecial() {
+        return isSpecial;
+    }
+
+    public void setIsSpecial(Integer isSpecial) {
+        this.isSpecial = isSpecial;
+    }
+
+    public Integer getIsShow() {
+        return isShow;
+    }
+
+    public void setIsShow(Integer isShow) {
+        this.isShow = isShow;
+    }
+
+    public String getShowColour() {
+        return showColour;
+    }
+
+    public void setShowColour(String showColour) {
+        this.showColour = showColour;
+    }
+
+    public List<String> getClassifyList() {
+        return classifyList;
+    }
+
+    public void setClassifyList(List<String> classifyList) {
+        this.classifyList = classifyList;
+    }
+}

+ 27 - 0
zd-common/common-core/src/main/java/com/zd/common/core/utils/DateUtils.java

@@ -6,8 +6,10 @@ import org.apache.commons.lang3.time.DateFormatUtils;
 import java.lang.management.ManagementFactory;
 import java.lang.management.ManagementFactory;
 import java.text.ParseException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.Date;
+import java.util.List;
 
 
 /**
 /**
  * 时间工具类
  * 时间工具类
@@ -146,4 +148,29 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
         }
         }
         return calendar.getTime();
         return calendar.getTime();
     }
     }
+
+
+    public static List<String> findDates(String beginTime, String endTime)
+            throws ParseException {
+        List<String> allDate = new ArrayList();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+        Date dBegin = sdf.parse(beginTime);
+        Date dEnd = sdf.parse(endTime);
+        allDate.add(sdf.format(dBegin));
+        Calendar calBegin = Calendar.getInstance();
+        // 使用给定的 Date 设置此 Calendar 的时间
+        calBegin.setTime(dBegin);
+        Calendar calEnd = Calendar.getInstance();
+        // 使用给定的 Date 设置此 Calendar 的时间
+        calEnd.setTime(dEnd);
+        // 测试此日期是否在指定日期之后
+        while (dEnd.after(calBegin.getTime())) {
+            // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
+            calBegin.add(Calendar.DAY_OF_MONTH, 1);
+            allDate.add(sdf.format(calBegin.getTime()));
+        }
+        System.out.println("时间==" + allDate);
+        return allDate;
+    }
 }
 }

+ 6 - 0
zd-model/src/main/java/com/zd/model/constant/ApplicationConstants.java

@@ -56,4 +56,10 @@ public interface ApplicationConstants {
      */
      */
     String BOTTLE_SERVICE = "zd-bottle";
     String BOTTLE_SERVICE = "zd-bottle";
 
 
+
+    /**
+     * 气瓶服务
+     */
+    String XXP_SERVICE = "zd-xxp";
+
 }
 }

+ 4 - 2
zd-model/src/main/java/com/zd/model/page/PageDomain.java

@@ -2,6 +2,8 @@ package com.zd.model.page;
 
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 
 
+import java.util.Optional;
+
 /**
 /**
  * 分页数据
  * 分页数据
  *
  *
@@ -36,7 +38,7 @@ public class PageDomain {
     }
     }
 
 
     public Integer getPageNum() {
     public Integer getPageNum() {
-        return pageNum;
+        return Optional.ofNullable(pageNum).orElse(1);
     }
     }
 
 
     public void setPageNum(Integer pageNum) {
     public void setPageNum(Integer pageNum) {
@@ -44,7 +46,7 @@ public class PageDomain {
     }
     }
 
 
     public Integer getPageSize() {
     public Integer getPageSize() {
-        return pageSize;
+        return Optional.ofNullable(pageSize).orElse(10);
     }
     }
 
 
     public void setPageSize(Integer pageSize) {
     public void setPageSize(Integer pageSize) {

+ 12 - 6
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java

@@ -338,7 +338,7 @@ public class SIPCommander implements ISIPCommander {
 	  * @param errorEvent sip错误订阅
 	  * @param errorEvent sip错误订阅
 	  */
 	  */
 	@Override
 	@Override
-	public void playStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId, ZLMHttpHookSubscribe.Event event, SipSubscribe.Event errorEvent) {
+	public void playStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId, ZLMHttpHookSubscribe.Event event, SipSubscribe.Event errorEvent, Integer dpi) {
 		String streamId = ssrcInfo.getStreamId();
 		String streamId = ssrcInfo.getStreamId();
 		try {
 		try {
 			if (device == null) return;
 			if (device == null) return;
@@ -408,9 +408,12 @@ public class SIPCommander implements ISIPCommander {
 					content.append("a=connection:new\r\n");
 					content.append("a=connection:new\r\n");
 				}
 				}
 			}
 			}
-
+			//验证1:获取码流
+			//content.append("a="+MediaStream.getMediaStreamA(dpi)+"\r\n");
 			content.append("y="+ssrcInfo.getSsrc()+"\r\n");//ssrc
 			content.append("y="+ssrcInfo.getSsrc()+"\r\n");//ssrc
-
+			//验证2:设置编码格式、分辨率、帧数、码率类型、码率大小、编码格式、码率大小
+			content.append("f="+MediaStream.getMediaStreamF(dpi)+"\r\n");
+			logger.info("【RTSP实时视频流请求】 请求参数:\r\n"+content.toString());
 			String tm = Long.toString(System.currentTimeMillis());
 			String tm = Long.toString(System.currentTimeMillis());
 
 
 			CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
 			CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
@@ -441,7 +444,7 @@ public class SIPCommander implements ISIPCommander {
 	 */
 	 */
 	@Override
 	@Override
 	public void playbackStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId, String startTime, String endTime, ZLMHttpHookSubscribe.Event event
 	public void playbackStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId, String startTime, String endTime, ZLMHttpHookSubscribe.Event event
-			, SipSubscribe.Event errorEvent) {
+			, SipSubscribe.Event errorEvent, Integer dpi) {
 		try {
 		try {
 			logger.info("{} 分配的ZLM为: {} [{}:{}]", ssrcInfo.getStreamId(), mediaServerItem.getId(), mediaServerItem.getIp(), ssrcInfo.getPort());
 			logger.info("{} 分配的ZLM为: {} [{}:{}]", ssrcInfo.getStreamId(), mediaServerItem.getId(), mediaServerItem.getIp(), ssrcInfo.getPort());
 			// 添加订阅
 			// 添加订阅
@@ -514,6 +517,8 @@ public class SIPCommander implements ISIPCommander {
 				}
 				}
 			}
 			}
 	        content.append("y=" + ssrcInfo.getSsrc() + "\r\n");//ssrc
 	        content.append("y=" + ssrcInfo.getSsrc() + "\r\n");//ssrc
+			//设置编码格式、分辨率、帧数、码率类型、码率大小、编码格式、码率大小
+			content.append("f="+MediaStream.getMediaStreamF(dpi)+"\r\n");
 			String tm = Long.toString(System.currentTimeMillis());
 			String tm = Long.toString(System.currentTimeMillis());
 			CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
 			CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
 					: udpSipProvider.getNewCallId();
 					: udpSipProvider.getNewCallId();
@@ -540,7 +545,7 @@ public class SIPCommander implements ISIPCommander {
 	 */
 	 */
 	@Override
 	@Override
 	public void downloadStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId, String startTime, String endTime, String downloadSpeed, ZLMHttpHookSubscribe.Event event
 	public void downloadStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId, String startTime, String endTime, String downloadSpeed, ZLMHttpHookSubscribe.Event event
-			, SipSubscribe.Event errorEvent) {
+			, SipSubscribe.Event errorEvent, Integer dpi) {
 		try {
 		try {
 			logger.info("{} 分配的ZLM为: {} [{}:{}]", ssrcInfo.getStreamId(), mediaServerItem.getId(), mediaServerItem.getIp(), ssrcInfo.getPort());
 			logger.info("{} 分配的ZLM为: {} [{}:{}]", ssrcInfo.getStreamId(), mediaServerItem.getId(), mediaServerItem.getIp(), ssrcInfo.getPort());
 
 
@@ -615,7 +620,8 @@ public class SIPCommander implements ISIPCommander {
 			content.append("a=downloadspeed:" + downloadSpeed + "\r\n");
 			content.append("a=downloadspeed:" + downloadSpeed + "\r\n");
 
 
 	        content.append("y=" + ssrcInfo.getSsrc() + "\r\n");//ssrc
 	        content.append("y=" + ssrcInfo.getSsrc() + "\r\n");//ssrc
-
+			//设置编码格式、分辨率、帧数、码率类型、码率大小、编码格式、码率大小
+			content.append("f="+MediaStream.getMediaStreamF(dpi)+"\r\n");
 			String tm = Long.toString(System.currentTimeMillis());
 			String tm = Long.toString(System.currentTimeMillis());
 
 
 			CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
 			CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()

+ 22 - 0
zd-modules/zd-base/pom.xml

@@ -18,6 +18,16 @@
         <dependency>
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>javassist</artifactId>
+                    <groupId>org.javassist</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>guava</artifactId>
+                    <groupId>com.google.guava</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <groupId>com.alibaba.cloud</groupId>
@@ -44,6 +54,12 @@
         <dependency>
         <dependency>
             <groupId>com.zd.swagger</groupId>
             <groupId>com.zd.swagger</groupId>
             <artifactId>common-swagger</artifactId>
             <artifactId>common-swagger</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>guava</artifactId>
+                    <groupId>com.google.guava</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
         </dependency>
 
 
         <dependency>
         <dependency>
@@ -131,6 +147,12 @@
             <groupId>com.zd.algorithm</groupId>
             <groupId>com.zd.algorithm</groupId>
             <artifactId>zd-algorithm-api</artifactId>
             <artifactId>zd-algorithm-api</artifactId>
         </dependency>
         </dependency>
+        <dependency>
+            <groupId>com.zd.system</groupId>
+            <artifactId>zd-xxp-api</artifactId>
+            <version>3.1.0</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
     </dependencies>
 
 
     <build>
     <build>

+ 200 - 0
zd-modules/zd-base/src/main/java/com/zd/base/app/controller/LabBoardApi.java

@@ -0,0 +1,200 @@
+package com.zd.base.app.controller;
+
+import com.zd.base.app.domain.board.LabXxpSubjectVo;
+import com.zd.common.core.security.TokenService;
+import com.zd.common.core.utils.DateUtils;
+import com.zd.common.core.utils.StringUtils;
+import com.zd.laboratory.api.feign.RemoteDutyService;
+import com.zd.model.constant.HttpStatus;
+import com.zd.model.domain.R;
+import com.zd.model.domain.ResultData;
+import com.zd.system.api.feign.RemoteUserService;
+import com.zd.system.api.vo.SysLogoConfigVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.*;
+
+/**
+ * @Author: donggaosheng
+ * @Date: 2023/03/24
+ * @Description:
+ */
+@RestController
+@RequestMapping("/app/board")
+@Api(tags = {"电子信息牌"})
+public class LabBoardApi {
+
+    @Autowired
+    private RemoteUserService remoteUserService;
+    @Autowired
+    private RemoteDutyService remoteDutyService;
+    @Autowired
+    private TokenService tokenService;
+
+    /**
+     * 查询电子信息牌头部信息
+     */
+    @ApiOperation(value = "电子信息牌头部信息")
+    @GetMapping(value = "/topInfo")
+    public ResultData topInfo(@RequestParam Long labId) {
+        R<SysLogoConfigVO> sysLogo = remoteUserService.getConfigLogo();
+        Map<String, Object> map = new HashMap<>();
+        if (sysLogo == null || sysLogo.getCode() != 200) {
+            return ResultData.fail(500, "获取logo失败!");
+        }
+        SysLogoConfigVO logoConfigVo = sysLogo.getData();
+        if (logoConfigVo == null) {
+            return ResultData.fail(500, "获取logo失败!");
+        }
+        map.put("schoolName", logoConfigVo.getSchoolName());
+        map.put("circularLogo", logoConfigVo.getCircularLogo());
+        map.put("circularLogo", logoConfigVo.getCircularLogo());
+        map.put("currentTime", new Date());
+        return null;
+    }
+
+    /**
+     * 查询电子信息牌中部信息
+     */
+    @ApiOperation(value = "电子信息牌中部信息")
+    @GetMapping(value = "/middleInfo")
+    public ResultData middleInfo(@RequestParam Long labId) {
+        //查询实验室负责人和安全负责人
+        LabXxpSubjectVo vo = new LabXxpSubjectVo();
+        ResultData resultData = remoteDutyService.getXxpSubjectInfo(labId);
+        if (null != resultData || resultData.getCode() != 200) {
+            return ResultData.fail("获取实验室信息失败!");
+        }
+        Map<String, Object> map = (Map<String, Object>) resultData.getData();
+        if (null == map) {
+            return ResultData.fail("获取实验室信息失败!");
+        }
+        vo.setAdminName(String.valueOf(map.getOrDefault("adminName", "")));
+        vo.setAdminPhone(String.valueOf(map.getOrDefault("adminPhone", "")));
+        vo.setFiledColor(String.valueOf(map.getOrDefault("filedColor", "")));
+        vo.setQrCodeUrl(String.valueOf(map.getOrDefault("qrCode", "")));
+        vo.setLevelName(String.valueOf(map.getOrDefault("levelName", "")));
+        vo.setTypeName(String.valueOf(map.getOrDefault("typeName", "")));
+        vo.setQrCodeUrl(String.valueOf(map.getOrDefault("qrCode", "")));
+        vo.setDeptName(String.valueOf(map.getOrDefault("deptName", "")));
+        String safeUser = String.valueOf(map.getOrDefault("safeUserNameAdminPhone", ""));
+        if (StringUtils.isNotEmpty(safeUser) && StringUtils.isNotNull(safeUser)) {
+            String splitStr[] = safeUser.split(",");
+            List<LabXxpSubjectVo.SafeUserVo> safeUserList = new ArrayList();
+            for (String split : splitStr) {
+                LabXxpSubjectVo.SafeUserVo safeUserVo = new LabXxpSubjectVo().new SafeUserVo();
+                if (StringUtils.isNotEmpty(split) && StringUtils.isNotNull(split)) {
+                    String[] nameAndPhone = split.split("@");
+                    safeUserVo.setSafeUserName(nameAndPhone[0]);
+                    safeUserVo.setSafeUserPhone(nameAndPhone[1]);
+                }
+                safeUserList.add(safeUserVo);
+            }
+            vo.setSafeUserVoList(safeUserList);
+        }
+        ResultData<LabXxpSubjectVo> xxpResultData= remoteDutyService.classifyDetailSubjectById(labId);
+        if(null==xxpResultData || xxpResultData.getCode()!=200){
+            return ResultData.fail("获取实验室信息类目失败!");
+        }
+        List<LabXxpSubjectVo> xxpSubjectVoList= (List<LabXxpSubjectVo>) xxpResultData.getData();
+        vo.setXxpSubjectVoList(xxpSubjectVoList);
+        return ResultData.success(vo);
+    }
+
+    /**
+     * 查询电子信息牌头部信息
+     */
+    @ApiOperation(value = "电子信息牌右侧信息")
+    @GetMapping(value = "/rightInfo")
+    public ResultData rightInfo(@RequestParam Long labId) {
+        Map<String, Object> map = new HashMap<>();
+        String dateTime = DateUtils.getDate();
+        ResultData<List<Map<String, Object>>> resultData = remoteDutyService.selectDutyUser(labId, dateTime);
+        if (null == resultData || resultData.getCode() != HttpStatus.SUCCESS) {
+            return ResultData.fail("值班人员获取失败!");
+        }
+        map.put("dutyUser", resultData.getData());
+        ResultData<List<Map<String, Object>>> signData = remoteDutyService.selectSubjectSignList(labId);
+        if(null==signData || signData.getCode()!=HttpStatus.SUCCESS){
+            return ResultData.fail("签到人员获取失败!");
+        }
+        map.put("tentativeUser", signData.getData());
+        ResultData securityData=remoteDutyService.securityApplyList(1,10,labId);
+        if(null==securityData || securityData.getCode()!=HttpStatus.SUCCESS){
+            return ResultData.fail("安全准入人员获取失败!");
+        }
+        map.put("securityUser", securityData.getData());
+        return ResultData.success(map);
+    }
+
+
+    @ApiOperation(value = "值班人员列表")
+    @GetMapping(value = "/dutyUserList")
+    public ResultData dutyUsrList(@RequestParam Long labId,@RequestParam String startTime,@RequestParam String endTime) {
+        ResultData<List<Map<String, Object>>> dutyData=remoteDutyService.selectDutyUserList(labId,startTime,endTime);
+        if(null==dutyData || dutyData.getCode()!=HttpStatus.SUCCESS){
+            return ResultData.fail("值班人员列表获取失败!");
+        }
+        return ResultData.success(dutyData.getData());
+    }
+
+
+    @ApiOperation(value = "巡查人员列表")
+    @GetMapping(value = "/signUserList")
+    public ResultData signUserList(@RequestParam String startTime,@RequestParam String endTime,@RequestParam Long labId) {
+
+        return ResultData.success();
+    }
+
+    @ApiOperation(value = "实验室签到人员")
+    @GetMapping(value = "/signUserList")
+    public ResultData signUserList(@RequestParam Long labId) {
+        ResultData<List<Map<String, Object>>> signData = remoteDutyService.selectSubjectSignList(labId);
+        if(null==signData || signData.getCode()!=HttpStatus.SUCCESS){
+            return ResultData.fail("签到人员获取失败!");
+        }
+        return ResultData.success(signData.getData());
+    }
+
+    @ApiOperation(value = "安全准入人员列表")
+    @GetMapping(value = "/securityUserList")
+    public ResultData securityUserList(@RequestParam Integer pageNumber,@RequestParam Integer pageSize,@RequestParam Long labId) {
+        ResultData securityData=remoteDutyService.securityApplyList(pageNumber,pageSize,labId);
+        if(null==securityData || securityData.getCode()!=HttpStatus.SUCCESS){
+            return ResultData.fail("安全准入人员获取失败!");
+        }
+        return ResultData.success(securityData.getData());
+    }
+
+
+    /**
+     * 查询实验室简介信息
+     */
+    @ApiOperation(value = "实验室简介")
+    @GetMapping(value = "/labIntro")
+    public ResultData labIntro(@RequestParam Long labId) {
+        ResultData resultData= remoteDutyService.getSubjectDetails(labId);
+        return resultData;
+    }
+
+
+    /**
+     * 查询实验室视频监控列表信息
+     */
+    @ApiOperation(value = "视频监控")
+    @GetMapping(value = "/cameraBySubjectId")
+    public ResultData getCamera(@RequestParam Long labId) {
+        ResultData<String> resultData=remoteDutyService.getCameraBySubjectId(labId);
+        if(null==resultData || resultData.getCode()!=200){
+            return ResultData.fail("获取摄像头编号失败!");
+        }
+        ResultData data=remoteDutyService.selectSubjectCameraList(resultData.getData(),null,1,5000);
+        return data;
+    }
+}

+ 147 - 0
zd-modules/zd-base/src/main/java/com/zd/base/app/domain/board/LabXxpSubjectVo.java

@@ -0,0 +1,147 @@
+package com.zd.base.app.domain.board;
+
+import com.zd.model.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Author: donggaosheng
+ * @Date: 2023/03/27
+ * @Description:
+ */
+@ApiModel("信息牌首页展示")
+public class LabXxpSubjectVo {
+    @ApiModelProperty("负责人名称")
+    private String adminName;
+
+    @ApiModelProperty("负责人手机号")
+    private String adminPhone;
+
+    @ApiModelProperty("安全分级名称")
+    private String levelName;
+
+    @ApiModelProperty("安全分级颜色编码")
+    private String filedColor;
+
+    @ApiModelProperty("安全分类名称")
+    private String typeName;
+
+    @ApiModelProperty(value = "二维码地址")
+    private String qrCodeUrl;
+
+    @ApiModelProperty(value = "二维码地址")
+    private String deptName;
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    @ApiModel("安全责任人列表")
+    public class SafeUserVo {
+        @ApiModelProperty("安全负责人id")
+        private Integer id;
+        @ApiModelProperty("安全负责人名称")
+        private String safeUserName;
+        @ApiModelProperty("安全负责人电话")
+        private String safeUserPhone;
+
+        public Integer getId() {
+            return id;
+        }
+
+        public void setId(Integer id) {
+            this.id = id;
+        }
+
+        public String getSafeUserName() {
+            return safeUserName;
+        }
+
+        public void setSafeUserName(String safeUserName) {
+            this.safeUserName = safeUserName;
+        }
+
+        public String getSafeUserPhone() {
+            return safeUserPhone;
+        }
+
+        public void setSafeUserPhone(String safeUserPhone) {
+            this.safeUserPhone = safeUserPhone;
+        }
+    }
+
+    @ApiModelProperty(value = "二维码地址")
+    private List<SafeUserVo> safeUserVoList;
+    @ApiModelProperty(value = "信息牌类目")
+    private List<LabXxpSubjectVo> xxpSubjectVoList;
+
+    public List<SafeUserVo> getSafeUserVoList() {
+        return safeUserVoList;
+    }
+
+    public void setSafeUserVoList(List<SafeUserVo> safeUserVoList) {
+        this.safeUserVoList = safeUserVoList;
+    }
+
+    public String getAdminName() {
+        return adminName;
+    }
+
+    public void setAdminName(String adminName) {
+        this.adminName = adminName;
+    }
+
+    public String getAdminPhone() {
+        return adminPhone;
+    }
+
+    public void setAdminPhone(String adminPhone) {
+        this.adminPhone = adminPhone;
+    }
+
+    public String getLevelName() {
+        return levelName;
+    }
+
+    public void setLevelName(String levelName) {
+        this.levelName = levelName;
+    }
+
+    public String getFiledColor() {
+        return filedColor;
+    }
+
+    public void setFiledColor(String filedColor) {
+        this.filedColor = filedColor;
+    }
+
+    public String getTypeName() {
+        return typeName;
+    }
+
+    public void setTypeName(String typeName) {
+        this.typeName = typeName;
+    }
+
+    public String getQrCodeUrl() {
+        return qrCodeUrl;
+    }
+
+    public void setQrCodeUrl(String qrCodeUrl) {
+        this.qrCodeUrl = qrCodeUrl;
+    }
+
+    public List<LabXxpSubjectVo> getXxpSubjectVoList() {
+        return xxpSubjectVoList;
+    }
+
+    public void setXxpSubjectVoList(List<LabXxpSubjectVo> xxpSubjectVoList) {
+        this.xxpSubjectVoList = xxpSubjectVoList;
+    }
+}

+ 2 - 0
zd-modules/zd-bottle-parent/pom.xml

@@ -21,11 +21,13 @@
         <dependency>
         <dependency>
             <groupId>com.zd.core</groupId>
             <groupId>com.zd.core</groupId>
             <artifactId>common-core</artifactId>
             <artifactId>common-core</artifactId>
+            <version>3.1.0</version>
         </dependency>
         </dependency>
 
 
         <dependency>
         <dependency>
             <groupId>com.zd.swagger</groupId>
             <groupId>com.zd.swagger</groupId>
             <artifactId>common-swagger</artifactId>
             <artifactId>common-swagger</artifactId>
+            <version>3.1.0</version>
         </dependency>
         </dependency>
     </dependencies>
     </dependencies>
 </project>
 </project>

+ 16 - 0
zd-modules/zd-bottle-parent/zd-bottle/pom.xml

@@ -17,6 +17,16 @@
         <dependency>
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>guava</artifactId>
+                    <groupId>com.google.guava</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>javassist</artifactId>
+                    <groupId>org.javassist</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
         </dependency>
 
 
         <!-- SpringCloud Alibaba Nacos Config -->
         <!-- SpringCloud Alibaba Nacos Config -->
@@ -82,6 +92,12 @@
         <dependency>
         <dependency>
             <groupId>com.zd.algorithm</groupId>
             <groupId>com.zd.algorithm</groupId>
             <artifactId>zd-algorithm-api</artifactId>
             <artifactId>zd-algorithm-api</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>jsqlparser</artifactId>
+                    <groupId>com.github.jsqlparser</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
         </dependency>
 
 
         <dependency>
         <dependency>

+ 28 - 0
zd-modules/zd-chemical/pom.xml

@@ -17,6 +17,16 @@
         <dependency>
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>guava</artifactId>
+                    <groupId>com.google.guava</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>commons-codec</artifactId>
+                    <groupId>commons-codec</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
         </dependency>
 
 
         <!-- SpringCloud Alibaba Nacos Config -->
         <!-- SpringCloud Alibaba Nacos Config -->
@@ -35,16 +45,34 @@
         <dependency>
         <dependency>
             <groupId>com.zd.swagger</groupId>
             <groupId>com.zd.swagger</groupId>
             <artifactId>common-swagger</artifactId>
             <artifactId>common-swagger</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>javassist</artifactId>
+                    <groupId>org.javassist</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
         </dependency>
 
 
         <dependency>
         <dependency>
             <groupId>com.zd.core</groupId>
             <groupId>com.zd.core</groupId>
             <artifactId>common-core</artifactId>
             <artifactId>common-core</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>commons-codec</artifactId>
+                    <groupId>commons-codec</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
         </dependency>
 
 
         <dependency>
         <dependency>
             <groupId>com.zd.algorithm</groupId>
             <groupId>com.zd.algorithm</groupId>
             <artifactId>zd-algorithm-api</artifactId>
             <artifactId>zd-algorithm-api</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>commons-io</artifactId>
+                    <groupId>commons-io</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
         </dependency>
 
 
         <dependency>
         <dependency>

+ 10 - 0
zd-modules/zd-exam/pom.xml

@@ -17,6 +17,16 @@
         <dependency>
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>javassist</artifactId>
+                    <groupId>org.javassist</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>guava</artifactId>
+                    <groupId>com.google.guava</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
         </dependency>
 
 
         <!-- SpringCloud Alibaba Nacos Config -->
         <!-- SpringCloud Alibaba Nacos Config -->

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

@@ -482,4 +482,14 @@ public class LabHardwareController extends BaseController {
         List<LabHardwareVO> list = labHardwareService.selectLabHardwareList(labHardware);
         List<LabHardwareVO> list = labHardwareService.selectLabHardwareList(labHardware);
         return getDataTable(list);
         return getDataTable(list);
     }
     }
+
+
+    /**
+     * 查询硬件列表
+     */
+    @RequestMapping("/getCameraBySubjectId")
+    public ResultData getCameraBySubjectId(Long subId) {
+        String hardwardStr = labHardwareService.selectLabHardwareCameraBySubId(subId);
+        return ResultData.success(hardwardStr);
+    }
 }
 }

+ 14 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabSecurityApplyController.java

@@ -5,6 +5,7 @@ import java.util.*;
 import java.io.IOException;
 import java.io.IOException;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 
 
+import com.github.pagehelper.PageHelper;
 import com.zd.common.core.utils.*;
 import com.zd.common.core.utils.*;
 import com.zd.laboratory.domain.LabWhitelist;
 import com.zd.laboratory.domain.LabWhitelist;
 import com.zd.laboratory.service.*;
 import com.zd.laboratory.service.*;
@@ -787,4 +788,17 @@ public class LabSecurityApplyController extends BaseController
         }
         }
 
 
     }
     }
+
+    /*****************************************************************************************/
+    /**
+     * 查询安全准入申请列表
+     */
+    @RequestMapping("/app/securityApplyList")
+    @ApiOperation(value = "查询安全准入申请列表")
+    public ResultData appList(Integer pageNumber,Integer pageSize,Long subjectId)
+    {
+        startPage(pageNumber,pageSize);
+        List<Map<String,Object>> list = labSecurityApplyService.selectLabSecurityApply(subjectId);
+        return ResultData.success(list);
+    }
 }
 }

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

@@ -150,4 +150,9 @@ public class LabSubjectAccessRecordController extends BaseController {
         return ResultData.result(labSubjectAccessRecordService.leaveAgainSign(labSubjectAccessRecord));
         return ResultData.result(labSubjectAccessRecordService.leaveAgainSign(labSubjectAccessRecord));
     }
     }
 
 
+    /*************************************************/
+    @RequestMapping("/selectSubjectSignList")
+    public ResultData selectSubjectSignList(Long subjectId) {
+        return ResultData.success(labSubjectAccessRecordService.selectSubjectSignList(subjectId));
+    }
 }
 }

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

@@ -432,4 +432,20 @@ public class LabSubjectController extends BaseController {
     public ResultData getFiedCount(LabSubjectVO labSubject) {
     public ResultData getFiedCount(LabSubjectVO labSubject) {
         return ResultData.success(labSubjectService.getFiedCount(labSubject));
         return ResultData.success(labSubjectService.getFiedCount(labSubject));
     }
     }
+
+    /**
+     * 获取信息牌首页实验室的信息
+     */
+    @RequestMapping(value = "/getXxpSubjectInfo/{id}")
+    public ResultData getXxpSubjectInfo(@PathVariable("id") Long id) {
+        return ResultData.success(labSubjectService.selectLabSubjectInfoId(id));
+    }
+
+    /**
+     * 获取信息牌首页实验室的信息
+     */
+    @RequestMapping(value = "/getSubjectDetails/{id}")
+    public ResultData getSubjectDetails(@PathVariable("id") Long id) {
+        return ResultData.success(labSubjectService.getSubjectDetailsById(id));
+    }
 }
 }

+ 19 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpClassifyDetailedController.java

@@ -6,9 +6,12 @@ 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.utils.ExcelUtil;
 import com.zd.common.core.web.controller.BaseController;
 import com.zd.common.core.web.controller.BaseController;
+import com.zd.laboratory.api.vo.LabXxpClassifyVo;
 import com.zd.laboratory.domain.LabWhitelist;
 import com.zd.laboratory.domain.LabWhitelist;
+import com.zd.laboratory.domain.XxpClassify;
 import com.zd.laboratory.domain.XxpClassifyDetail;
 import com.zd.laboratory.domain.XxpClassifyDetail;
 import com.zd.laboratory.service.IXxpClassifyDetailedService;
 import com.zd.laboratory.service.IXxpClassifyDetailedService;
+import com.zd.laboratory.service.IXxpClassifyService;
 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;
@@ -37,6 +40,9 @@ public class LabXxpClassifyDetailedController extends BaseController
     private IXxpClassifyDetailedService classifyDetailedService;
     private IXxpClassifyDetailedService classifyDetailedService;
 
 
     @Autowired
     @Autowired
+    private IXxpClassifyService iXxpClassifyService;
+
+    @Autowired
     private TokenService tokenService;
     private TokenService tokenService;
 
 
     /**
     /**
@@ -130,4 +136,17 @@ public class LabXxpClassifyDetailedController extends BaseController
         return ResultData.result(classifyDetailedService.deleteXxpClassifyDetailedById(id));
         return ResultData.result(classifyDetailedService.deleteXxpClassifyDetailedById(id));
     }
     }
 
 
+
+
+    /**
+     * 根据实验室id查询信息牌数据
+     * @param id
+     * @return
+     */
+    @RequestMapping("/classifyDetail/{id}")
+    public ResultData getClassifyDetailed(@PathVariable Long id)
+    {
+        List<LabXxpClassifyVo> xxpClassifyVoList=classifyDetailedService.selectXxpClassify(id);
+        return ResultData.success(xxpClassifyVoList);
+    }
 }
 }

+ 1 - 2
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpDutyController.java

@@ -6,12 +6,10 @@ 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.utils.ExcelUtil;
 import com.zd.common.core.web.controller.BaseController;
 import com.zd.common.core.web.controller.BaseController;
-import com.zd.laboratory.domain.LabWhitelist;
 import com.zd.laboratory.domain.XxpDuty;
 import com.zd.laboratory.domain.XxpDuty;
 import com.zd.laboratory.domain.XxpInspection;
 import com.zd.laboratory.domain.XxpInspection;
 import com.zd.laboratory.domain.vo.XxpDutyVO;
 import com.zd.laboratory.domain.vo.XxpDutyVO;
 import com.zd.laboratory.service.IXxpDutyService;
 import com.zd.laboratory.service.IXxpDutyService;
-import com.zd.laboratory.service.IXxpInspectionService;
 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;
@@ -24,6 +22,7 @@ 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.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * 值班Controller
  * 值班Controller

+ 14 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpInspectionController.java

@@ -132,4 +132,18 @@ public class LabXxpInspectionController extends BaseController
         return ResultData.result(xxpInspectionService.deleteXxpInspectionById(id));
         return ResultData.result(xxpInspectionService.deleteXxpInspectionById(id));
     }
     }
 
 
+
+    /**
+     * 根据实验室id和当前时间查询签到记录
+     * @param labId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    @ApiOperation(value = "根据实验室查询巡查记录")
+    @PostMapping("/app/selectUserXxpInspectionList")
+    public ResultData selectUserXxpInspectionList(Long labId,String startTime,String endTime )
+    {
+        return ResultData.success(xxpInspectionService.selectUserXxpInspectionList(labId,startTime,endTime));
+    }
 }
 }

+ 190 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/vo/LabXxpSubjectVo.java

@@ -0,0 +1,190 @@
+package com.zd.laboratory.domain.vo;
+
+import cn.hutool.core.util.StrUtil;
+import com.zd.laboratory.interfaces.SysProperties;
+import com.zd.model.qc.QCInterface;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Author: donggaosheng
+ * @Date: 2023/03/27
+ * @Description:
+ */
+@ApiModel("信息牌首页展示")
+public class LabXxpSubjectVo implements QCInterface {
+    @ApiModelProperty("负责人名称")
+    private String adminName;
+
+    @ApiModelProperty("负责人手机号")
+    private String adminPhone;
+
+    @ApiModelProperty("安全分级名称")
+    private String levelName;
+
+    @ApiModelProperty("安全分级颜色编码")
+    private String filedColor;
+
+    @ApiModelProperty("安全分类名称")
+    private String typeName;
+
+    @ApiModelProperty(value = "二维码地址")
+    private String qrCodeUrl;
+
+    @ApiModel("安全责任人列表")
+    public class SafeUserVo {
+        @ApiModelProperty("安全负责人id")
+        private Integer id;
+        @ApiModelProperty("安全负责人名称")
+        private String safeUserName;
+        @ApiModelProperty("安全负责人电话")
+        private String safeUserPhone;
+
+        public Integer getId() {
+            return id;
+        }
+
+        public void setId(Integer id) {
+            this.id = id;
+        }
+
+        public String getSafeUserName() {
+            return safeUserName;
+        }
+
+        public void setSafeUserName(String safeUserName) {
+            this.safeUserName = safeUserName;
+        }
+
+        public String getSafeUserPhone() {
+            return safeUserPhone;
+        }
+
+        public void setSafeUserPhone(String safeUserPhone) {
+            this.safeUserPhone = safeUserPhone;
+        }
+    }
+
+    @ApiModelProperty(value = "二维码地址")
+    private List<SafeUserVo> safeUserVoList;
+
+    @ApiModel("信息牌列表展示")
+    public class XxpClassifyVo {
+        /**
+         * 类目类型 1文字 2图片
+         */
+        @ApiModelProperty(value = "类目类型")
+        private Integer classifyType;
+        @ApiModelProperty(value = "类目名称")
+        private String classifyName;
+        @ApiModelProperty(value = "信息名称 ")
+        private String infoName;
+        @ApiModelProperty(value = "是否特殊类目")
+        private Integer isSpecial;
+
+        /**
+         * 类目颜色
+         */
+        @ApiModelProperty(value = "类目颜色 ")
+        private String showColour;
+
+        public Integer getClassifyType() {
+            return classifyType;
+        }
+
+        public void setClassifyType(Integer classifyType) {
+            this.classifyType = classifyType;
+        }
+
+        public String getClassifyName() {
+            return classifyName;
+        }
+
+        public void setClassifyName(String classifyName) {
+            this.classifyName = classifyName;
+        }
+
+        public String getInfoName() {
+            return infoName;
+        }
+
+        public void setInfoName(String infoName) {
+            this.infoName = infoName;
+        }
+
+        public Integer getIsSpecial() {
+            return isSpecial;
+        }
+
+        public void setIsSpecial(Integer isSpecial) {
+            this.isSpecial = isSpecial;
+        }
+
+        public String getShowColour() {
+            return showColour;
+        }
+
+        public void setShowColour(String showColour) {
+            this.showColour = showColour;
+        }
+    }
+
+    public List<SafeUserVo> getSafeUserVoList() {
+        return safeUserVoList;
+    }
+
+    public void setSafeUserVoList(List<SafeUserVo> safeUserVoList) {
+        this.safeUserVoList = safeUserVoList;
+    }
+
+    public String getAdminName() {
+        return adminName;
+    }
+
+    public void setAdminName(String adminName) {
+        this.adminName = adminName;
+    }
+
+    public String getAdminPhone() {
+        return adminPhone;
+    }
+
+    public void setAdminPhone(String adminPhone) {
+        this.adminPhone = adminPhone;
+    }
+
+    public String getLevelName() {
+        return levelName;
+    }
+
+    public void setLevelName(String levelName) {
+        this.levelName = levelName;
+    }
+
+    public String getFiledColor() {
+        return filedColor;
+    }
+
+    public void setFiledColor(String filedColor) {
+        this.filedColor = filedColor;
+    }
+
+    public String getTypeName() {
+        return typeName;
+    }
+
+    public void setTypeName(String typeName) {
+        this.typeName = typeName;
+    }
+
+    public void setQrCodeUrl(String code) {
+        this.qrCodeUrl = StrUtil.format(SysProperties.getLabInfoQrcode(), code, 5);
+    }
+
+    @Override
+    public String getQrCodeUrl() {
+        return qrCodeUrl;
+    }
+}

+ 2 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabHardwareMapper.java

@@ -170,4 +170,6 @@ public interface LabHardwareMapper {
     int selectCountByType(LabHardware labHardware);
     int selectCountByType(LabHardware labHardware);
 
 
     String querySubNameById(Long hardId);
     String querySubNameById(Long hardId);
+
+    String selectLabHardwareCameraBySubId(Long subId);
 }
 }

+ 7 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSecurityApplyMapper.java

@@ -141,4 +141,11 @@ public interface LabSecurityApplyMapper
      * @return
      * @return
      */
      */
     List<LabSecurityApply>  selectValidApply(LabSecurityApply labSecurityApply);
     List<LabSecurityApply>  selectValidApply(LabSecurityApply labSecurityApply);
+
+    /**
+     * 查询实验室已通过的准入人员信息
+     * @param subjectId
+     * @return
+     */
+    List<Map<String, Object>> selectLabSecurityApply(Long subjectId);
 }
 }

+ 7 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSubjectAccessRecordMapper.java

@@ -173,4 +173,11 @@ public interface LabSubjectAccessRecordMapper {
      * @return
      * @return
      */
      */
     int updateLabSubjectAccessRecordById(LabSubjectAccessRecord accessRecord);
     int updateLabSubjectAccessRecordById(LabSubjectAccessRecord accessRecord);
+
+    /**
+     * 根据实验室id查询签到人员列表
+     * @param subjectId
+     * @return
+     */
+    List<Map<String, Object>> selectSubjectSignList(Long subjectId);
 }
 }

+ 14 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSubjectMapper.java

@@ -292,4 +292,18 @@ public interface LabSubjectMapper {
      */
      */
     public List<LabClassifiedVo> getFiedCount(LabSubjectVO labSubject);
     public List<LabClassifiedVo> getFiedCount(LabSubjectVO labSubject);
 
 
+
+    /**
+     * 查询信息牌实验室数据
+     * @param id
+     * @return
+     */
+    public Map<String,Object> selectXxpLabSubjectById(Long id);
+
+    /**
+     * 根据实验室id获取实验室详情
+     * @param id
+     * @return
+     */
+    String getSubjectDetailsById(Long id);
 }
 }

+ 7 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/XxpClassifyDetailedMapper.java

@@ -60,4 +60,11 @@ public interface XxpClassifyDetailedMapper
      * @return 结果
      * @return 结果
      */
      */
     public int deleteXxpClassifyDetailedByIds(Long[] ids);
     public int deleteXxpClassifyDetailedByIds(Long[] ids);
+
+    /**
+     * 根据实验室id查询主要类别
+     * @param subjectId
+     * @return
+     */
+    public List<XxpClassifyDetail> selectXxpClassifyBySubjectId(Long subjectId);
 }
 }

+ 7 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/XxpClassifyMapper.java

@@ -59,4 +59,11 @@ public interface XxpClassifyMapper
      * @return 结果
      * @return 结果
      */
      */
     public int deleteXxpClassifyByIds(Long[] ids);
     public int deleteXxpClassifyByIds(Long[] ids);
+
+    /**
+     * 查询信息牌类目根据实验室id
+     * @param id
+     * @return
+     */
+    List<XxpClassify> selectXxpClassifySubjectById(Long id);
 }
 }

+ 19 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/XxpDutyMapper.java

@@ -2,9 +2,11 @@ package com.zd.laboratory.mapper;
 
 
 import com.zd.laboratory.domain.XxpDuty;
 import com.zd.laboratory.domain.XxpDuty;
 import com.zd.laboratory.domain.vo.XxpDutyVO;
 import com.zd.laboratory.domain.vo.XxpDutyVO;
+import org.apache.ibatis.annotations.Param;
 
 
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * 值班信息 Mapper接口
  * 值班信息 Mapper接口
@@ -76,4 +78,21 @@ public interface XxpDutyMapper
      * @return
      * @return
      */
      */
     public XxpDutyVO selectSubAndUserSum(Date dutyTime);
     public XxpDutyVO selectSubAndUserSum(Date dutyTime);
+
+    /**
+     * 根据当前时间和实验室ID查询值班人员信息
+     * @param labId
+     * @param dateTime
+     * @return
+     */
+    List<Map<String, Object>> selectDutyUser(@Param("labId") Long labId,@Param("dateTime") String dateTime);
+
+    /**
+     * 查询实验室值班人员信息
+     * @param labId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    List<Map<String, Object>> selectDutyUserList(@Param("labId") Long labId, @Param("startTime") String startTime,@Param("endTime") String endTime);
 }
 }

+ 21 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/XxpInspectionMapper.java

@@ -2,8 +2,10 @@ package com.zd.laboratory.mapper;
 
 
 import com.zd.laboratory.domain.XxpClassify;
 import com.zd.laboratory.domain.XxpClassify;
 import com.zd.laboratory.domain.XxpInspection;
 import com.zd.laboratory.domain.XxpInspection;
+import org.apache.ibatis.annotations.Param;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * 巡查信息 Mapper接口
  * 巡查信息 Mapper接口
@@ -61,4 +63,23 @@ public interface XxpInspectionMapper
      * @return 结果
      * @return 结果
      */
      */
     public int deleteXxpInspectionByIds(Long[] ids);
     public int deleteXxpInspectionByIds(Long[] ids);
+
+    /**
+     * 根据实验室id和当前时间查询签到记录
+     * @param labId
+     * @param dateTime
+     * @return
+     */
+    List<Map<String, Object>> selectXxpInspection(@Param("labId") Long labId, @Param("dateTime") String dateTime);
+
+
+    /**
+     * 根据实验室id和巡查记录签到记录
+     * @param labId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    List<Map<String, Object>> selectUserXxpInspectionList(@Param("labId") Long labId, @Param("startTime") String startTime,@Param("endTime") String endTime);
+
 }
 }

+ 7 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabHardwareService.java

@@ -159,4 +159,11 @@ public interface ILabHardwareService {
      * @return
      * @return
      */
      */
     LabHardware selectLabHardwareCameraBySub(Long subId);
     LabHardware selectLabHardwareCameraBySub(Long subId);
+
+    /**
+     * 根据实验室id查询摄像头硬件信息
+     * @param subId
+     * @return
+     */
+    String selectLabHardwareCameraBySubId(Long subId);
 }
 }

+ 6 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSecurityApplyService.java

@@ -18,6 +18,12 @@ import javax.servlet.http.HttpServletResponse;
 public interface ILabSecurityApplyService
 public interface ILabSecurityApplyService
 {
 {
     /**
     /**
+     * 查询实验室获取准入资格的人员
+     * @param labId
+     * @return
+     */
+    public List<Map<String,Object>> selectLabSecurityApply(Long labId);
+    /**
      * 查询安全准入申请
      * 查询安全准入申请
      *
      *
      * @param id 安全准入申请主键
      * @param id 安全准入申请主键

+ 7 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSubjectAccessRecordService.java

@@ -170,4 +170,11 @@ public interface ILabSubjectAccessRecordService {
      * @return
      * @return
      */
      */
     int updateLabSubjectAccessRecordById(LabSubjectAccessRecord accessRecord);
     int updateLabSubjectAccessRecordById(LabSubjectAccessRecord accessRecord);
+
+    /**
+     * 根据实验室id查询签到人员列表
+     * @param subjectId
+     * @return
+     */
+    List<Map<String,Object>> selectSubjectSignList(Long subjectId);
 }
 }

+ 15 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSubjectService.java

@@ -8,6 +8,7 @@ import com.zd.laboratory.domain.vo.LabSubjectVO;
 import com.zd.model.entity.TotalByID;
 import com.zd.model.entity.TotalByID;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * 实验室Service接口
  * 实验室Service接口
@@ -267,4 +268,18 @@ public interface ILabSubjectService {
      * @return 实验室集合
      * @return 实验室集合
      */
      */
     public List<LabClassifiedVo> getFiedCount(LabSubjectVO labSubject);
     public List<LabClassifiedVo> getFiedCount(LabSubjectVO labSubject);
+
+    /**
+     * 根据实验室id获取信息牌首页数据
+     * @param id
+     * @return
+     */
+    public Map<String,Object> selectLabSubjectInfoId(Long id);
+
+    /**
+     * 根据实验室id获取实验室详情
+     * @param id
+     * @return
+     */
+    String getSubjectDetailsById(Long id);
 }
 }

+ 17 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/IXxpClassifyDetailedService.java

@@ -1,5 +1,6 @@
 package com.zd.laboratory.service;
 package com.zd.laboratory.service;
 
 
+import com.zd.laboratory.api.vo.LabXxpClassifyVo;
 import com.zd.laboratory.domain.XxpClassifyDetail;
 import com.zd.laboratory.domain.XxpClassifyDetail;
 
 
 import java.util.List;
 import java.util.List;
@@ -63,4 +64,20 @@ public interface IXxpClassifyDetailedService
      * @return 结果
      * @return 结果
      */
      */
     public int deleteXxpClassifyDetailedById(Long id);
     public int deleteXxpClassifyDetailedById(Long id);
+
+
+    /**
+     * 根据实验室id查询主要类别
+     * @param subjectId
+     * @return
+     */
+    public List<XxpClassifyDetail> selectXxpClassifyBySubjectId(Long subjectId);
+
+    /**
+     * 根据实验室id查询主要类别
+     * 并进行数据组装
+     * @param id
+     * @return
+     */
+    List<LabXxpClassifyVo> selectXxpClassify(Long id);
 }
 }

+ 8 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/IXxpClassifyService.java

@@ -2,6 +2,7 @@ package com.zd.laboratory.service;
 
 
 import com.zd.laboratory.domain.LabWhitelist;
 import com.zd.laboratory.domain.LabWhitelist;
 import com.zd.laboratory.domain.XxpClassify;
 import com.zd.laboratory.domain.XxpClassify;
+import com.zd.laboratory.domain.XxpClassifyDetail;
 import com.zd.laboratory.domain.vo.LabWhitelistVO;
 import com.zd.laboratory.domain.vo.LabWhitelistVO;
 
 
 import java.util.List;
 import java.util.List;
@@ -65,4 +66,11 @@ public interface IXxpClassifyService
      * @return 结果
      * @return 结果
      */
      */
     public int deleteXxpClassifyById(Long id);
     public int deleteXxpClassifyById(Long id);
+
+    /**
+     * 查询信息牌类目根据实验室id
+     * @param id
+     * @return
+     */
+    List<XxpClassify> selectXxpClassifySubjectById(Long id);
 }
 }

+ 22 - 3
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/IXxpDutyService.java

@@ -5,6 +5,7 @@ import com.zd.laboratory.domain.vo.XxpDutyVO;
 import java.util.Date;
 import java.util.Date;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * 值班 Service接口
  * 值班 Service接口
@@ -14,6 +15,15 @@ import java.util.List;
  */
  */
 public interface IXxpDutyService
 public interface IXxpDutyService
 {
 {
+
+    /**
+     * 根据当前时间和实验室ID查询值班人员信息
+     * @param labId
+     * @param dateTime
+     * @return
+     */
+    public List<Map<String,Object>> selectDutyUser(Long labId,String dateTime);
+
     /**
     /**
      * 查询值班
      * 查询值班
      *
      *
@@ -35,11 +45,10 @@ public interface IXxpDutyService
     /**
     /**
      * 新增值班
      * 新增值班
      *
      *
-     * @param xxpDutyVO 值班
+     * @param xxpDuty 值班
      * @return 结果
      * @return 结果
      */
      */
-    public int insertXxpDuty(XxpDutyVO xxpDutyVO);
-
+    public int insertXxpDuty(XxpDuty xxpDuty);
 
 
 
 
 
 
@@ -80,4 +89,14 @@ public interface IXxpDutyService
      * @return
      * @return
      */
      */
     public XxpDutyVO selectSubAndUserSum(Date dutyTime);
     public XxpDutyVO selectSubAndUserSum(Date dutyTime);
+
+    /**
+     * 查询实验室值班人员信息
+     * @param labId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    public List<Map<String,Object>> selectDutyUserList(Long labId,String startTime,String endTime);
+
 }
 }

+ 18 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/IXxpInspectionService.java

@@ -3,6 +3,7 @@ package com.zd.laboratory.service;
 import com.zd.laboratory.domain.XxpInspection;
 import com.zd.laboratory.domain.XxpInspection;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * 巡查 Service接口
  * 巡查 Service接口
@@ -13,6 +14,13 @@ import java.util.List;
 public interface IXxpInspectionService
 public interface IXxpInspectionService
 {
 {
     /**
     /**
+     * 根据实验室id和当前时间查询签到记录
+     * @param labId
+     * @param dateTime
+     * @return
+     */
+    public List<Map<String,Object>> selectXxpInspection(Long labId,String dateTime);
+    /**
      * 查询巡查
      * 查询巡查
      *
      *
      * @param id 巡查主键
      * @param id 巡查主键
@@ -63,4 +71,14 @@ public interface IXxpInspectionService
      * @return 结果
      * @return 结果
      */
      */
     public int deleteXxpInspectionById(Long id);
     public int deleteXxpInspectionById(Long id);
+
+    /**
+     * 根据实验室id和当前时间查询签到记录
+     * @param labId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    public List<Map<String,Object>> selectUserXxpInspectionList(Long labId,String startTime,String endTime);
+
 }
 }

+ 5 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabHardwareServiceImpl.java

@@ -800,4 +800,9 @@ public class LabHardwareServiceImpl implements ILabHardwareService {
     public LabHardware selectLabHardwareCameraBySub(Long subId) {
     public LabHardware selectLabHardwareCameraBySub(Long subId) {
         return labHardwareMapper.selectLabHardwareCameraBySub(subId);
         return labHardwareMapper.selectLabHardwareCameraBySub(subId);
     }
     }
+
+    @Override
+    public String selectLabHardwareCameraBySubId(Long subId) {
+        return labHardwareMapper.selectLabHardwareCameraBySubId(subId);
+    }
 }
 }

+ 5 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSecurityApplyServiceImpl.java

@@ -78,6 +78,11 @@ public class LabSecurityApplyServiceImpl implements ILabSecurityApplyService
 
 
     private static final Logger log = LoggerFactory.getLogger(LabSecurityApplyServiceImpl.class);
     private static final Logger log = LoggerFactory.getLogger(LabSecurityApplyServiceImpl.class);
 
 
+    @Override
+    public List<Map<String, Object>> selectLabSecurityApply(Long labId) {
+        return labSecurityApplyMapper.selectLabSecurityApply(labId);
+    }
+
     /**
     /**
      * 查询安全准入申请
      * 查询安全准入申请
      *
      *
@@ -471,7 +476,6 @@ public class LabSecurityApplyServiceImpl implements ILabSecurityApplyService
 
 
     /**
     /**
      * 未过期的数据
      * 未过期的数据
-     *
      * @param labSecurityApply
      * @param labSecurityApply
      * @return
      * @return
      */
      */

+ 5 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectAccessRecordServiceImpl.java

@@ -492,4 +492,9 @@ public class LabSubjectAccessRecordServiceImpl implements ILabSubjectAccessRecor
     public int updateLabSubjectAccessRecordById(LabSubjectAccessRecord accessRecord) {
     public int updateLabSubjectAccessRecordById(LabSubjectAccessRecord accessRecord) {
         return labSubjectAccessRecordMapper.updateLabSubjectAccessRecordById(accessRecord);
         return labSubjectAccessRecordMapper.updateLabSubjectAccessRecordById(accessRecord);
     }
     }
+
+    @Override
+    public List<Map<String, Object>> selectSubjectSignList(Long subjectId) {
+        return labSubjectAccessRecordMapper.selectSubjectSignList(subjectId);
+    }
 }
 }

+ 11 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectServiceImpl.java

@@ -32,6 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 
 import java.util.Collections;
 import java.util.Collections;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * 实验室Service业务层处理
  * 实验室Service业务层处理
@@ -498,4 +499,14 @@ public class LabSubjectServiceImpl implements ILabSubjectService {
     public List<LabClassifiedVo> getFiedCount(LabSubjectVO labSubject) {
     public List<LabClassifiedVo> getFiedCount(LabSubjectVO labSubject) {
         return labSubjectMapper.getFiedCount(labSubject);
         return labSubjectMapper.getFiedCount(labSubject);
     }
     }
+
+    @Override
+    public Map<String,Object> selectLabSubjectInfoId(Long id) {
+        return labSubjectMapper.selectXxpLabSubjectById(id);
+    }
+
+    @Override
+    public String getSubjectDetailsById(Long id) {
+        return labSubjectMapper.getSubjectDetailsById(id);
+    }
 }
 }

+ 41 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpClassifyDetailedServiceImpl.java

@@ -1,13 +1,17 @@
 package com.zd.laboratory.service.impl;
 package com.zd.laboratory.service.impl;
 
 
 import com.zd.common.core.security.TokenService;
 import com.zd.common.core.security.TokenService;
+import com.zd.laboratory.api.vo.LabXxpClassifyVo;
+import com.zd.laboratory.domain.XxpClassify;
 import com.zd.laboratory.domain.XxpClassifyDetail;
 import com.zd.laboratory.domain.XxpClassifyDetail;
 import com.zd.laboratory.mapper.XxpClassifyDetailedMapper;
 import com.zd.laboratory.mapper.XxpClassifyDetailedMapper;
+import com.zd.laboratory.mapper.XxpClassifyMapper;
 import com.zd.laboratory.service.IXxpClassifyDetailedService;
 import com.zd.laboratory.service.IXxpClassifyDetailedService;
 import com.zd.model.entity.SysUser;
 import com.zd.model.entity.SysUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
@@ -24,6 +28,9 @@ public class XxpClassifyDetailedServiceImpl implements IXxpClassifyDetailedServi
     private XxpClassifyDetailedMapper classifyDetailedMapper;
     private XxpClassifyDetailedMapper classifyDetailedMapper;
 
 
     @Autowired
     @Autowired
+    private XxpClassifyMapper xxpClassifyMapper;
+
+    @Autowired
     private TokenService tokenService;
     private TokenService tokenService;
 
 
 
 
@@ -99,4 +106,38 @@ public class XxpClassifyDetailedServiceImpl implements IXxpClassifyDetailedServi
     public int deleteXxpClassifyDetailedById(Long id) {
     public int deleteXxpClassifyDetailedById(Long id) {
         return classifyDetailedMapper.deleteXxpClassifyDetailedById(id);
         return classifyDetailedMapper.deleteXxpClassifyDetailedById(id);
     }
     }
+    /**
+     * 根据实验室id查询主要类别
+     * @param subjectId
+     * @return
+     */
+    @Override
+    public List<XxpClassifyDetail> selectXxpClassifyBySubjectId(Long subjectId) {
+        return classifyDetailedMapper.selectXxpClassifyBySubjectId(subjectId);
+    }
+
+    @Override
+    public List<LabXxpClassifyVo> selectXxpClassify(Long id) {
+        List<LabXxpClassifyVo> xxpClassifyVoList=new ArrayList<>();
+        List<XxpClassify> xxpClassifyList= xxpClassifyMapper.selectXxpClassifySubjectById(id);
+        List<XxpClassifyDetail> classifyDetailList=classifyDetailedMapper.selectXxpClassifyBySubjectId(id);
+        for(XxpClassify xxpClassify:xxpClassifyList){
+            LabXxpClassifyVo labXxpClassifyVo=new LabXxpClassifyVo();
+            labXxpClassifyVo.setShowColour(xxpClassify.getShowColour());
+            labXxpClassifyVo.setIsShow(xxpClassify.getIsShow());
+            labXxpClassifyVo.setClassifyName(xxpClassify.getClassifyName());
+            labXxpClassifyVo.setIsSpecial(xxpClassify.getIsSpecial());
+            labXxpClassifyVo.setSort(xxpClassify.getSort());
+            labXxpClassifyVo.setIsSpecial(xxpClassify.getIsSpecial());
+            List<String> StrList=new ArrayList<>();
+            for(XxpClassifyDetail classifyDetail:classifyDetailList){
+                if(xxpClassify.getId().intValue()==classifyDetail.getInfoClassifyId().intValue()){
+                    StrList.add(classifyDetail.getInfoContent());
+                }
+            }
+            labXxpClassifyVo.setClassifyList(StrList);
+            xxpClassifyVoList.add(labXxpClassifyVo);
+        }
+        return xxpClassifyVoList;
+    }
 }
 }

+ 10 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpClassifyServiceImpl.java

@@ -136,4 +136,14 @@ public class XxpClassifyServiceImpl implements IXxpClassifyService
         List<XxpClassifyDetail> list = detailedMapper.selectXxpClassifyDetailedList(detail);
         List<XxpClassifyDetail> list = detailedMapper.selectXxpClassifyDetailedList(detail);
         return list;
         return list;
     }
     }
+
+    /**
+     * 查询信息牌类目根据实验室id
+     * @param id
+     * @return
+     */
+    @Override
+    public List<XxpClassify> selectXxpClassifySubjectById(Long id) {
+        return xxpClassifyMapper.selectXxpClassifySubjectById(id);
+    }
 }
 }

+ 10 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpDutyServiceImpl.java

@@ -35,6 +35,11 @@ public class XxpDutyServiceImpl implements IXxpDutyService
     private TokenService tokenService;
     private TokenService tokenService;
 
 
 
 
+    @Override
+    public List<Map<String, Object>> selectDutyUser(Long labId, String dateTime) {
+        return xxpDutyMapper.selectDutyUser(labId,dateTime);
+    }
+
     /**
     /**
      * 查询值班
      * 查询值班
      *
      *
@@ -153,4 +158,9 @@ public class XxpDutyServiceImpl implements IXxpDutyService
     public XxpDutyVO selectSubAndUserSum(Date dutyTime) {
     public XxpDutyVO selectSubAndUserSum(Date dutyTime) {
         return xxpDutyMapper.selectSubAndUserSum(dutyTime);
         return xxpDutyMapper.selectSubAndUserSum(dutyTime);
     }
     }
+
+    @Override
+    public List<Map<String, Object>> selectDutyUserList(Long labId, String startTime, String endTime) {
+        return xxpDutyMapper.selectDutyUserList(labId,startTime,endTime);
+    }
 }
 }

+ 18 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpInspectionServiceImpl.java

@@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * 巡查Service业务层处理
  * 巡查Service业务层处理
@@ -30,6 +31,11 @@ public class XxpInspectionServiceImpl implements IXxpInspectionService
     private TokenService tokenService;
     private TokenService tokenService;
 
 
 
 
+    @Override
+    public List<Map<String, Object>> selectXxpInspection(Long labId, String dateTime) {
+        return xxpInspectionMapper.selectXxpInspection(labId,dateTime);
+    }
+
     /**
     /**
      * 查询巡查
      * 查询巡查
      *
      *
@@ -108,4 +114,16 @@ public class XxpInspectionServiceImpl implements IXxpInspectionService
     public int deleteXxpInspectionById(Long id) {
     public int deleteXxpInspectionById(Long id) {
         return xxpInspectionMapper.deleteXxpInspectionById(id);
         return xxpInspectionMapper.deleteXxpInspectionById(id);
     }
     }
+
+    /**
+     * 根据实验室id和巡查记录签到记录
+     * @param labId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> selectUserXxpInspectionList(Long labId, String startTime, String endTime) {
+        return xxpInspectionMapper.selectUserXxpInspectionList(labId,startTime,endTime);
+    }
 }
 }

+ 1 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/utils/CRCCHECK.java

@@ -45,7 +45,7 @@ public class CRCCHECK {
     }
     }
 
 
     public static void main(String args[]){
     public static void main(String args[]){
-        Integer bit=2;
+        Integer bit=5;
         System.out.println(getOpenLockOrder(bit));
         System.out.println(getOpenLockOrder(bit));
         System.out.println(getCloseLockOrder(bit));
         System.out.println(getCloseLockOrder(bit));
         System.out.println(getReadLockOrder(bit));
         System.out.println(getReadLockOrder(bit));

+ 3 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabHardwareMapper.xml

@@ -591,4 +591,7 @@
     <select id="querySubNameById" resultType="java.lang.String">
     <select id="querySubNameById" resultType="java.lang.String">
         select name from lab_subject where id = (select subject_id from lab_hardware where id = #{hardId})
         select name from lab_subject where id = (select subject_id from lab_hardware where id = #{hardId})
     </select>
     </select>
+    <select id="selectLabHardwareCameraBySubId" resultType="java.lang.String">
+        SELECT GROUP_CONCAT(lh.hardware_num) FROM lab_hardware lh where lh.subject_id = #{subId} and lh.type = 4 and lh.device_status=1
+    </select>
 </mapper>
 </mapper>

+ 8 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSecurityApplyMapper.xml

@@ -578,4 +578,12 @@
         </if>
         </if>
     </select>
     </select>
 
 
+    <!--获取实验室准入人员信息-->
+    <select id="selectLabSecurityApply" resultType="java.util.Map">
+          SELECT  id id,user_name userName,valid_end_time validEndTime,
+          (SELECT avatar FROM sys_user WHERE user_id=lab.user_id) AS avatar,
+          (SELECT user_name FROM sys_user WHERE user_id=lab.user_id) AS jobNumber
+                FROM  lab_security_apply AS lab WHERE audit_status=2 AND subject_id=#{subjectId} and valid_end_time &gt;= now()
+    </select>
+
 </mapper>
 </mapper>

+ 10 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSubjectAccessRecordMapper.xml

@@ -497,4 +497,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
          FROM lab_subject_access_record ar inner join lab_subject st on ar.`subject_id` = st.`id`
          FROM lab_subject_access_record ar inner join lab_subject st on ar.`subject_id` = st.`id`
          WHERE ar.`out_time` IS NULL AND TIMESTAMPDIFF(HOUR,ar.in_time,NOW())>=st.sign_time AND ar.access_status=1 and ar.init_flag = 0
          WHERE ar.`out_time` IS NULL AND TIMESTAMPDIFF(HOUR,ar.in_time,NOW())>=st.sign_time AND ar.access_status=1 and ar.init_flag = 0
     </select>
     </select>
+    <select id="selectSubjectSignList" resultType="java.util.Map">
+        select lsar.in_time as signTime,
+               su.user_name as jobNumber,
+               su.nick_name as userName,
+               su.avatar as avatar
+          from  lab_subject_access_record lsar
+        left join sys_user su on su.user_id=lsar.join_user_id
+        where lsar.subject_id=#{subjectId} and lsar.access_status=1
+        and init_flag=0
+    </select>
 </mapper>
 </mapper>

+ 22 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSubjectMapper.xml

@@ -1112,4 +1112,26 @@
             <if test="userId != null ">and user_id = #{userId}</if>
             <if test="userId != null ">and user_id = #{userId}</if>
         </where>
         </where>
     </select>
     </select>
+    <!--信息牌信息展示-->
+    <select id="selectXxpLabSubjectById" resultType="java.util.Map">
+        select t.id,
+               t.name,
+               cf.classified_name                                                         levelName,
+               cf.classified_color                                                        filedColor,
+               (SELECT ct.type_name FROM lab_safe_classtype ct WHERE ct.id = t.`type_id`) typeName,
+               t.qr_code                                                                   qrCode,
+               su.nick_name                                                   as          adminName,
+               su.phonenumber                                                 as          adminPhone,
+               sd.dept_name                                                   as          deptName,
+               (select GROUP_CONCAT(concat(nick_name,'@',phonenumber)) from sys_user where find_in_set(user_id,
+        t.safe_user_id)) safeUserNameAdminPhone
+        from lab_subject t
+                 left join sys_user su on su.user_id = t.admin_id AND su.`del_flag` = 0
+                 left join sys_dept sd on sd.dept_id = t.dept_id
+                 left join lab_safe_classified cf on cf.id = t.level
+                 where t.is_del=0 and t.id=#{id}
+    </select>
+    <select id="getSubjectDetailsById" resultType="java.lang.String">
+        SELECT details FROM  lab_subject WHERE id=#{id} AND is_del=0
+    </select>
 </mapper>
 </mapper>

+ 5 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpClassifyDetailMapper.xml

@@ -62,6 +62,11 @@
         where t.id = #{id}
         where t.id = #{id}
     </select>
     </select>
 
 
+    <select id="selectXxpClassifyBySubjectId" resultType="com.zd.laboratory.domain.XxpClassifyDetail" resultMap="XxpClassifyDetailedResult">
+         SELECT  info_content,info_classify_id  FROM xxp_classify_detail where is_collective=2 OR id in
+         (SELECT classify_detail_id  FROM  xxp_classify_subject where  subject_id=#{subjectId}) GROUP BY sort ASC,create_time DESC
+    </select>
+
     <insert id="insertXxpClassifyDetailed" parameterType="com.zd.laboratory.domain.XxpClassifyDetail">
     <insert id="insertXxpClassifyDetailed" parameterType="com.zd.laboratory.domain.XxpClassifyDetail">
         insert into xxp_classify_detail
         insert into xxp_classify_detail
         <trim prefix="(" suffix=")" suffixOverrides=",">
         <trim prefix="(" suffix=")" suffixOverrides=",">

+ 11 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpClassifyMapper.xml

@@ -64,6 +64,17 @@
         where t.id = #{id}
         where t.id = #{id}
     </select>
     </select>
 
 
+    <select id="selectXxpClassifySubjectById" resultType="com.zd.laboratory.domain.XxpClassify">
+        select id,
+               classify_name,
+               classify_type,
+               is_special,
+               is_show,
+               show_colour
+        from xxp_classify t WHERE t.id IN (SELECT classify_id FROM xxp_classify_subject WHERE subject_id=#{subjeectId}) and is_show=1
+        GROUP BY t.sort ASC,create_time DESC
+    </select>
+
     <insert id="insertXxpClassify" parameterType="com.zd.laboratory.domain.XxpClassify">
     <insert id="insertXxpClassify" parameterType="com.zd.laboratory.domain.XxpClassify">
         insert into xxp_classify
         insert into xxp_classify
         <trim prefix="(" suffix=")" suffixOverrides=",">
         <trim prefix="(" suffix=")" suffixOverrides=",">

+ 24 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpDutyMapper.xml

@@ -72,6 +72,30 @@
         where t.id = #{id}
         where t.id = #{id}
     </select>
     </select>
 
 
+    <select id="selectDutyUser" resultType="java.util.Map">
+        select user_name userName,user_phone userPhone,user_img userImg from  xxp_duty xxp
+        <where>
+            xxp.subject_id=#{labId}
+            <if test="dateTime!=null">
+                and duty_time=#{dateTime}
+            </if>
+        </where>
+    </select>
+
+
+    <select id="selectDutyUserList" resultType="java.util.Map">
+        select user_name userName,user_phone userPhone,user_img userImg from  xxp_duty xxp
+        <where>
+            xxp.subject_id=#{labId}
+            <if test="startTime!=null">
+                and duty_time<![CDATA[ >= ]]>#{dateTime}
+            </if>
+            <if test="endTime!=null">
+                and duty_time<![CDATA[ <= ]]>#{endTime}
+            </if>
+        </where>
+    </select>
+
     <insert id="insertXxpDuty" parameterType="com.zd.laboratory.domain.XxpDuty">
     <insert id="insertXxpDuty" parameterType="com.zd.laboratory.domain.XxpDuty">
         insert into xxp_duty
         insert into xxp_duty
         <trim prefix="(" suffix=")" suffixOverrides=",">
         <trim prefix="(" suffix=")" suffixOverrides=",">

+ 14 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpInspectionMapper.xml

@@ -65,6 +65,20 @@
         where t.id = #{id}
         where t.id = #{id}
     </select>
     </select>
 
 
+    <select id="selectXxpInspection" resultType="java.util.Map">
+        select user_name from xxp_inspection
+    </select>
+
+    <select id="selectUserXxpInspectionList" resultType="java.util.Map">
+     SELECT user_id userId,
+            user_name userName,
+            user_img userImg,
+            DATE_FORMAT(sign_in,"%Y-%m-%d") AS signTime,
+            MAX(sign_out) AS signOut,
+            COUNT(*) AS signNumber
+            FROM  `xxp_inspection` WHERE subject_id=#{labId} GROUP BY signTime,user_id
+    </select>
+
     <insert id="insertXxpInspection" parameterType="com.zd.laboratory.domain.XxpInspection">
     <insert id="insertXxpInspection" parameterType="com.zd.laboratory.domain.XxpInspection">
         insert into xxp_inspection
         insert into xxp_inspection
         <trim prefix="(" suffix=")" suffixOverrides=",">
         <trim prefix="(" suffix=")" suffixOverrides=",">

+ 11 - 0
zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/CacheUtils.java

@@ -0,0 +1,11 @@
+package com.zd.modules.monitor.config;
+
+import java.net.Socket;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class CacheUtils {
+    public static Map<String, Socket> cacheMap = new ConcurrentHashMap<>();
+
+    public static ThreadLocal<Map<String,Socket>> mStringThreadLocal = new ThreadLocal<>();
+}

+ 43 - 0
zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/SocketRunner.java

@@ -0,0 +1,43 @@
+
+package com.zd.modules.monitor.config;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+
+/**
+ * @author dgs
+ * socket服务器启动类
+ */
+public class SocketRunner {
+
+    public static void main(String[] args) {
+        ServerSocket server ;
+        Socket socket ;
+        try {
+            server = new ServerSocket(5000);
+            System.out.println("设备服务器已经开启, 监听端口:" + 5000);
+            ThreadPoolExecutor pool = new ThreadPoolExecutor(
+                    5,
+                    10,
+                    5,
+                    TimeUnit.SECONDS,
+                    new ArrayBlockingQueue<>(100),
+                    new ThreadPoolExecutor.DiscardOldestPolicy()
+            );
+            while (true) {
+                socket = server.accept();
+                pool.execute(new TCPServer(socket));
+                System.out.println("打印:"+pool.toString()+"当前线程:"+Thread.currentThread().getName());
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            System.out.println("********************************************************");
+        }
+    }
+}
+

+ 101 - 0
zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/TCPServer.java

@@ -0,0 +1,101 @@
+package com.zd.modules.monitor.config;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedInputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.Socket;
+import java.util.Map;
+import java.util.Scanner;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author dgs
+ * socket服务器配置类
+ */
+public class TCPServer implements Runnable {
+
+    private static final Logger log = LoggerFactory.getLogger(TCPServer.class);
+
+    private Socket socket;
+
+    public TCPServer(Socket socket) {
+        this.socket = socket;
+    }
+
+    @Override
+    public void run() {
+        // 设置连接超时90秒
+        try {
+            socket.setSoTimeout(50000);
+            log.info("客户 - " + socket.getRemoteSocketAddress() + " -> 机连接成功"+" "+"Thread名称:" + Thread.currentThread().getName()+" "+"Thread数量:" + Thread.activeCount());
+            while (true) {
+                handle();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.info("Socket异常: " + socket.getRemoteSocketAddress()+" "+e.getMessage());
+        }finally {
+            try {
+                if (!socket.isClosed()) {
+                    log.info("客户 - " + socket.getRemoteSocketAddress() + " -> 链接中断");
+                    //socket.close();
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    public void  handle() throws IOException {
+        StringBuilder ret = new StringBuilder();
+        // 解析二进制数据
+        BufferedInputStream bs = new BufferedInputStream(socket.getInputStream());
+        DataInputStream dis = new DataInputStream(bs);
+
+        byte[] bytes = new byte[1024];
+        while (dis.readBoolean() && dis.read(bytes) != -1){
+            ret.append(new String(bytes));
+            if(dis.available() == 0){
+                break;
+            }
+        }
+        String  data = ret.toString();
+        log.info("接收数据:" + data + "," + socket.getRemoteSocketAddress());
+        synchronized(this) {
+            CacheUtils.cacheMap.put(data.trim(),socket);
+            CacheUtils.mStringThreadLocal.set((Map<String, Socket>) new ConcurrentHashMap<>().put(data.trim(),socket));
+            //System.out.println("CacheUtils.mStringThreadLocal:"+CacheUtils.mStringThreadLocal.get());
+            System.out.println(CacheUtils.cacheMap.get("TcpClient01"));
+        }
+        OutputStream out=socket.getOutputStream();
+        Scanner input=new Scanner(System.in);
+        String returnData=input.nextLine()+socket.getRemoteSocketAddress()+"应答";
+        out.write(returnData.getBytes());
+        out.flush();
+        //out.close();
+    }
+
+
+    // 二进制转字符串
+    public static String byte2hex(byte[] b) {
+        StringBuffer sb = new StringBuffer();
+        String tmp = "";
+        for (int i = 0; i < b.length; i++) {
+            tmp = Integer.toHexString(b[i] & 0XFF);
+            if (tmp.length() == 1){
+                sb.append("0" + tmp);
+            }else{
+                sb.append(tmp);
+            }
+
+        }
+        return sb.toString();
+    }
+
+
+
+}

+ 53 - 0
zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/TcpClient.java

@@ -0,0 +1,53 @@
+package com.zd.modules.monitor.config;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.InetAddress;
+import java.net.Socket;
+
+public class TcpClient {
+    public static void main(String[] args){
+       //for(int i=0;i<5;i++){
+           //System.out.println("==========================执行第"+i+"次=========================");
+           //socket对象初始化
+           Socket socket = null;
+           //输出流 os对象初始化
+           OutputStream os = null;
+           InputStream in=null;
+           try {
+               //1、创建Socket对象,它的第一个参数需要的是服务端的IP,第二个参数是服务端的端口
+               InetAddress inet = InetAddress.getByName("127.0.0.1");
+               socket = new Socket(inet,5000);//inet是服务端ip
+               //2、获取一个输出流,用于写出要发送的数据
+               os = socket.getOutputStream();
+               in = socket.getInputStream();
+               //3、写出数据
+               for(int j=0;j<10;j++){
+                   os.write("TcpClient".getBytes());
+                   Thread.sleep(100);
+                   System.out.println(in.read());
+               }
+           } catch (IOException | InterruptedException e) {
+               e.printStackTrace();
+           } finally {
+               System.out.println("TcpClient:执行了");
+               //4、释放资源,别忘了哦!!!!
+//               if(socket!=null){
+//                   try {
+//                       socket.close();//关闭
+//                   } catch (IOException e) {
+//                       e.printStackTrace();
+//                   }
+//               }
+//               if(os!=null){
+//                   try {
+//                       os.close();//关闭
+//                   } catch (IOException e) {
+//                       e.printStackTrace();
+//                   }
+//               }
+           }
+       //}
+    }
+}

+ 53 - 0
zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/TcpClient01.java

@@ -0,0 +1,53 @@
+package com.zd.modules.monitor.config;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.InetAddress;
+import java.net.Socket;
+
+public class TcpClient01 {
+    public static void main(String[] args){
+       //for(int i=0;i<5;i++){
+           //System.out.println("==========================执行第"+i+"次=========================");
+           //socket对象初始化
+           Socket socket = null;
+           //输出流 os对象初始化
+           OutputStream os = null;
+           InputStream in=null;
+           try {
+               //1、创建Socket对象,它的第一个参数需要的是服务端的IP,第二个参数是服务端的端口
+               InetAddress inet = InetAddress.getByName("127.0.0.1");
+               socket = new Socket(inet,5000);//inet是服务端ip
+               //2、获取一个输出流,用于写出要发送的数据
+               os = socket.getOutputStream();
+               in = socket.getInputStream();
+               //3、写出数据
+               for(int j=0;j<10;j++){
+                   os.write("TcpClient01".getBytes());
+                   Thread.sleep(100);
+                   System.out.println(in.read());
+               }
+           } catch (IOException | InterruptedException e) {
+               e.printStackTrace();
+           } finally {
+               System.out.println("TcpClient01:执行了");
+               //4、释放资源,别忘了哦!!!!
+//               if(socket!=null){
+//                   try {
+//                       socket.close();//关闭
+//                   } catch (IOException e) {
+//                       e.printStackTrace();
+//                   }
+//               }
+//               if(os!=null){
+//                   try {
+//                       os.close();//关闭
+//                   } catch (IOException e) {
+//                       e.printStackTrace();
+//                   }
+//               }
+           }
+       //}
+    }
+}

+ 24 - 0
zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/replyClient.java

@@ -0,0 +1,24 @@
+package com.zd.modules.monitor.config;
+
+import reactor.netty.tcp.TcpServer;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.Socket;
+import java.util.Map;
+
+public class replyClient {
+    public static void main(String[] args) {
+        Map<String, Socket> cacheMap= CacheUtils.mStringThreadLocal.get();
+        System.out.println("replyClient cacheMap.keySet().size():"+cacheMap.keySet().size());
+        for(String cache:cacheMap.keySet()){
+            System.out.println("replyClient cache:"+cache);
+            try {
+                OutputStream out=cacheMap.get(cache).getOutputStream();
+                out.write(("huifu"+cache).getBytes());
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}