Quellcode durchsuchen

Merge branch 'dev' of http://192.168.1.43:3000/v2/zd-parents into dev

chaiyunlong vor 2 Jahren
Ursprung
Commit
8732a40634
80 geänderte Dateien mit 2700 neuen und 40 gelöschten Zeilen
  1. 1 1
      ArcFace64.dat
  2. 189 0
      zd-api/zd-api-system/zd-api-system.iml
  3. 11 0
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/entity/LabSubjectControllerVO.java
  4. 111 0
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteDutyService.java
  5. 79 0
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/fallback/RemoteDutyFailback.java
  6. 31 0
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/vo/ClassifyDetailVO.java
  7. 28 0
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/vo/ClassifyVO.java
  8. 51 0
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/vo/LabSecurityApplyVo.java
  9. 95 0
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/vo/LabXxpClassifyVo.java
  10. 27 0
      zd-common/common-core/src/main/java/com/zd/common/core/utils/DateUtils.java
  11. 6 0
      zd-model/src/main/java/com/zd/model/constant/ApplicationConstants.java
  12. 4 2
      zd-model/src/main/java/com/zd/model/page/PageDomain.java
  13. 1 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
  14. 22 0
      zd-modules/zd-base/pom.xml
  15. 200 0
      zd-modules/zd-base/src/main/java/com/zd/base/app/controller/LabBoardApi.java
  16. 147 0
      zd-modules/zd-base/src/main/java/com/zd/base/app/domain/board/LabXxpSubjectVo.java
  17. 2 0
      zd-modules/zd-bottle-parent/pom.xml
  18. 16 0
      zd-modules/zd-bottle-parent/zd-bottle/pom.xml
  19. 28 0
      zd-modules/zd-chemical/pom.xml
  20. 10 0
      zd-modules/zd-exam/pom.xml
  21. 10 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabHardwareController.java
  22. 14 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabSecurityApplyController.java
  23. 5 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabSubjectAccessRecordController.java
  24. 16 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabSubjectController.java
  25. 10 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpCardInfoController.java
  26. 42 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpClassifyController.java
  27. 43 5
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpClassifyDetailedController.java
  28. 19 2
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpDutyController.java
  29. 14 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpInspectionController.java
  30. 26 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/LabSubject.java
  31. 1 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/XxpCardInfo.java
  32. 13 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/XxpClassify.java
  33. 61 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/XxpClassifySubject.java
  34. 190 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/vo/LabXxpSubjectVo.java
  35. 17 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/vo/XxpClassifyDetailVO.java
  36. 2 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabHardwareMapper.java
  37. 7 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSecurityApplyMapper.java
  38. 7 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSubjectAccessRecordMapper.java
  39. 14 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSubjectMapper.java
  40. 16 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/XxpClassifyDetailedMapper.java
  41. 7 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/XxpClassifyMapper.java
  42. 72 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/XxpClassifySubjectMapper.java
  43. 19 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/XxpDutyMapper.java
  44. 21 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/XxpInspectionMapper.java
  45. 7 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabHardwareService.java
  46. 6 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSecurityApplyService.java
  47. 7 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSubjectAccessRecordService.java
  48. 15 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSubjectService.java
  49. 26 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/IXxpClassifyDetailedService.java
  50. 8 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/IXxpClassifyService.java
  51. 73 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/IXxpClassifySubjectService.java
  52. 20 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/IXxpDutyService.java
  53. 18 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/IXxpInspectionService.java
  54. 5 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabHardwareServiceImpl.java
  55. 5 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSecurityApplyServiceImpl.java
  56. 5 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectAccessRecordServiceImpl.java
  57. 68 3
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectManagerService.java
  58. 24 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectServiceImpl.java
  59. 57 3
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpClassifyDetailedServiceImpl.java
  60. 14 3
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpClassifyServiceImpl.java
  61. 100 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpClassifySubjectServiceImpl.java
  62. 12 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpDutyServiceImpl.java
  63. 18 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpInspectionServiceImpl.java
  64. 1 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/utils/CRCCHECK.java
  65. 3 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabHardwareMapper.xml
  66. 8 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSecurityApplyMapper.xml
  67. 10 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSubjectAccessRecordMapper.xml
  68. 22 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSubjectMapper.xml
  69. 1 1
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpCardInfoMapper.xml
  70. 22 2
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpClassifyDetailMapper.xml
  71. 17 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpClassifyMapper.xml
  72. 81 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpClassifySubjectMapper.xml
  73. 43 10
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpDutyMapper.xml
  74. 14 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpInspectionMapper.xml
  75. 11 0
      zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/CacheUtils.java
  76. 43 0
      zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/SocketRunner.java
  77. 101 0
      zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/TCPServer.java
  78. 53 0
      zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/TcpClient.java
  79. 53 0
      zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/TcpClient01.java
  80. 24 0
      zd-visual/zd-monitor/src/main/java/com/zd/modules/monitor/config/replyClient.java

Datei-Diff unterdrückt, da er zu groß ist
+ 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>

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

@@ -2,6 +2,7 @@ package com.zd.laboratory.api.entity;
 
 
 import com.fasterxml.jackson.annotation.JsonInclude;
+import com.zd.laboratory.api.vo.ClassifyVO;
 import com.zd.laboratory.api.vo.HardwareCVO;
 import com.zd.laboratory.api.vo.LabRiskVO;
 import com.zd.laboratory.api.vo.SenseValVO;
@@ -64,6 +65,8 @@ public class LabSubjectControllerVO extends LabSubjectEntity {
     @ApiModelProperty("预案数据")
     private List<LabRiskVO> riskPlanList;
 
+    private List<ClassifyVO>  classifyList;
+
     /**
      * 实验室类型ID
      */
@@ -418,4 +421,12 @@ public class LabSubjectControllerVO extends LabSubjectEntity {
     public void setRiskPlanList(List<LabRiskVO> riskPlanList) {
         this.riskPlanList = riskPlanList;
     }
+
+    public List<ClassifyVO> getClassifyList() {
+        return classifyList;
+    }
+
+    public void setClassifyList(List<ClassifyVO> classifyList) {
+        this.classifyList = classifyList;
+    }
 }

+ 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());
+            }
+        };
+    }
+}

+ 31 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/vo/ClassifyDetailVO.java

@@ -0,0 +1,31 @@
+package com.zd.laboratory.api.vo;
+
+import lombok.Data;
+
+/**
+ * @Author: xxf
+ * @Date: 2023/03/29/11:14
+ * @Description:
+ */
+@Data
+public class ClassifyDetailVO {
+
+    /** 主键 */
+    private Long id;
+
+    /** 类目表主键 */
+
+    private Long infoClassifyId;
+
+    /** 信息名称  */
+    private String infoName;
+
+
+    /** 类型 1文字 2图片*/
+    private Integer infoType;
+
+    /** 内容 */
+    private String infoContent;
+
+
+}

+ 28 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/vo/ClassifyVO.java

@@ -0,0 +1,28 @@
+package com.zd.laboratory.api.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: xxf
+ * @Date: 2023/03/29/11:06
+ * @Description:
+ */
+@Data
+public class ClassifyVO {
+
+    /** 主键 */
+    private Long id;
+
+    /** 类目名称 */
+    private String classifyName;
+
+    /** 类目类型 1文字 2图片 */
+    private Integer classifyType;
+
+    /**公共类目**/
+    private List<ClassifyDetailVO> publicList;
+    /***私有类目**/
+    private List<ClassifyDetailVO> privateList;
+}

+ 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.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Calendar;
 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();
     }
+
+
+    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 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 java.util.Optional;
+
 /**
  * 分页数据
  *
@@ -36,7 +38,7 @@ public class PageDomain {
     }
 
     public Integer getPageNum() {
-        return pageNum;
+        return Optional.ofNullable(pageNum).orElse(1);
     }
 
     public void setPageNum(Integer pageNum) {
@@ -44,7 +46,7 @@ public class PageDomain {
     }
 
     public Integer getPageSize() {
-        return pageSize;
+        return Optional.ofNullable(pageSize).orElse(10);
     }
 
     public void setPageSize(Integer pageSize) {

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

@@ -409,7 +409,7 @@ public class SIPCommander implements ISIPCommander {
 				}
 			}
 			//验证1:获取码流
-			//content.append("a="+MediaStream.getMediaStreamA(dpi)+"\r\n");
+			//content.append("a="+MediaStream.getMe diaStreamA(dpi)+"\r\n");
 			content.append("y="+ssrcInfo.getSsrc()+"\r\n");//ssrc
 			//验证2:设置编码格式、分辨率、帧数、码率类型、码率大小、编码格式、码率大小
 			content.append("f="+MediaStream.getMediaStreamF(dpi)+"\r\n");

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

@@ -18,6 +18,16 @@
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <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>
             <groupId>com.alibaba.cloud</groupId>
@@ -44,6 +54,12 @@
         <dependency>
             <groupId>com.zd.swagger</groupId>
             <artifactId>common-swagger</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>guava</artifactId>
+                    <groupId>com.google.guava</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <dependency>
@@ -131,6 +147,12 @@
             <groupId>com.zd.algorithm</groupId>
             <artifactId>zd-algorithm-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.zd.system</groupId>
+            <artifactId>zd-xxp-api</artifactId>
+            <version>3.1.0</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
     <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>
             <groupId>com.zd.core</groupId>
             <artifactId>common-core</artifactId>
+            <version>3.1.0</version>
         </dependency>
 
         <dependency>
             <groupId>com.zd.swagger</groupId>
             <artifactId>common-swagger</artifactId>
+            <version>3.1.0</version>
         </dependency>
     </dependencies>
 </project>

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

@@ -17,6 +17,16 @@
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <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>
 
         <!-- SpringCloud Alibaba Nacos Config -->
@@ -82,6 +92,12 @@
         <dependency>
             <groupId>com.zd.algorithm</groupId>
             <artifactId>zd-algorithm-api</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>jsqlparser</artifactId>
+                    <groupId>com.github.jsqlparser</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <dependency>

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

@@ -17,6 +17,16 @@
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <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>
 
         <!-- SpringCloud Alibaba Nacos Config -->
@@ -35,16 +45,34 @@
         <dependency>
             <groupId>com.zd.swagger</groupId>
             <artifactId>common-swagger</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>javassist</artifactId>
+                    <groupId>org.javassist</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <dependency>
             <groupId>com.zd.core</groupId>
             <artifactId>common-core</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>commons-codec</artifactId>
+                    <groupId>commons-codec</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <dependency>
             <groupId>com.zd.algorithm</groupId>
             <artifactId>zd-algorithm-api</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>commons-io</artifactId>
+                    <groupId>commons-io</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <dependency>

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

@@ -17,6 +17,16 @@
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <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>
 
         <!-- SpringCloud Alibaba Nacos Config -->

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

@@ -487,4 +487,14 @@ public class LabHardwareController extends BaseController {
         List<LabHardwareVO> list = labHardwareService.selectLabHardwareList(labHardware);
         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 javax.servlet.http.HttpServletResponse;
 
+import com.github.pagehelper.PageHelper;
 import com.zd.common.core.utils.*;
 import com.zd.laboratory.domain.LabWhitelist;
 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));
     }
 
+    /*************************************************/
+    @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) {
         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));
+    }
 }

+ 10 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpCardInfoController.java

@@ -90,7 +90,16 @@ public class LabXxpCardInfoController extends BaseController
         return ResultData.result(xxpCardInfoService.insertXxpCardInfo(xxpCardInfo));
     }
 
-
+    /**
+     * 新增电子信息牌-物联配置使用
+     */
+    @ApiOperation(value = "新增电子信息牌")
+    @Log(title = "电子信息牌", businessType = BusinessType.INSERT)
+    @PostMapping("/addInfo")
+    public ResultData addInfo(@RequestBody XxpCardInfo xxpCardInfo)
+    {
+        return ResultData.result(xxpCardInfoService.insertXxpCardInfo(xxpCardInfo));
+    }
 
     /**
      * 修改电子信息牌

+ 42 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpClassifyController.java

@@ -6,14 +6,18 @@ import com.zd.common.core.exception.NoRollException;
 import com.zd.common.core.log.BusinessType;
 import com.zd.common.core.security.TokenService;
 import com.zd.common.core.utils.ExcelUtil;
+import com.zd.common.core.utils.StringUtils;
 import com.zd.common.core.web.controller.BaseController;
 import com.zd.laboratory.domain.LabWhiteJoinSublist;
 import com.zd.laboratory.domain.LabWhitelist;
 import com.zd.laboratory.domain.XxpClassify;
+import com.zd.laboratory.domain.XxpClassifyDetail;
 import com.zd.laboratory.domain.vo.LabSubjectVO;
 import com.zd.laboratory.domain.vo.LabWhitelistVO;
+import com.zd.laboratory.domain.vo.XxpClassifyDetailVO;
 import com.zd.laboratory.service.ILabWhiteJoinSublistService;
 import com.zd.laboratory.service.ILabWhitelistService;
+import com.zd.laboratory.service.IXxpClassifyDetailedService;
 import com.zd.laboratory.service.IXxpClassifyService;
 import com.zd.laboratory.service.impl.HaiKangDoorService;
 import com.zd.model.constant.HttpStatus;
@@ -48,6 +52,9 @@ public class LabXxpClassifyController extends BaseController
     private IXxpClassifyService xxpClassifyService;
 
     @Autowired
+    private IXxpClassifyDetailedService xxpClassifyDetailedService;
+
+    @Autowired
     private TokenService tokenService;
 
     /**
@@ -66,6 +73,41 @@ public class LabXxpClassifyController extends BaseController
     }
 
     /**
+     * 查询信息牌类目列表-无权限-实验室编辑使用
+     */
+    @GetMapping("/listSub")
+    public TableDataInfo<XxpClassify> listSub(XxpClassifyDetailVO detailVO)
+    {
+        // 显示的
+        XxpClassify cfy = new XxpClassify();
+        //展示的数据
+        cfy.setIsShow(1);
+        List<XxpClassify> list = xxpClassifyService.selectXxpClassifyList(cfy);
+        XxpClassifyDetailVO  publicCd= new XxpClassifyDetailVO();
+        XxpClassifyDetailVO  privateCd = new XxpClassifyDetailVO();
+        XxpClassifyDetailVO  normalCd = new XxpClassifyDetailVO();
+        for (XxpClassify classify:list) {
+
+            //查询非公共所有配置
+            normalCd.setIsCollective(1);
+            normalCd.setInfoClassifyId(classify.getId());
+            List<XxpClassifyDetailVO> normalList = xxpClassifyDetailedService.selectXxpClassifyDetailedList(normalCd);
+            classify.setNormalDetailList(normalList);
+
+            if(StringUtils.isNotNull(detailVO.getSubjectId())){
+                //查询私有配置
+                privateCd.setInfoClassifyId(classify.getId());
+                privateCd.setIsCollective(1);
+                privateCd.setSubjectId(detailVO.getSubjectId());
+                List<XxpClassifyDetailVO> privateList = xxpClassifyDetailedService.selectXxpClassifyDetailedByPara(privateCd);
+                classify.setPrivateDetailList(privateList);
+            }
+
+        }
+        return getDataTable(list);
+    }
+
+    /**
      * 导出信息牌类目列表
      */
     @ApiOperation(value = "导出信息牌类目列表")

+ 43 - 5
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpClassifyDetailedController.java

@@ -6,9 +6,15 @@ import com.zd.common.core.log.BusinessType;
 import com.zd.common.core.security.TokenService;
 import com.zd.common.core.utils.ExcelUtil;
 import com.zd.common.core.web.controller.BaseController;
+import com.zd.laboratory.api.vo.LabXxpClassifyVo;
 import com.zd.laboratory.domain.LabWhitelist;
+import com.zd.laboratory.domain.XxpClassify;
 import com.zd.laboratory.domain.XxpClassifyDetail;
+import com.zd.laboratory.domain.XxpClassifySubject;
+import com.zd.laboratory.domain.vo.XxpClassifyDetailVO;
 import com.zd.laboratory.service.IXxpClassifyDetailedService;
+import com.zd.laboratory.service.IXxpClassifySubjectService;
+import com.zd.laboratory.service.IXxpClassifyService;
 import com.zd.model.domain.ResultData;
 import com.zd.model.domain.per.PerFun;
 import com.zd.model.domain.per.PerPrefix;
@@ -37,18 +43,24 @@ public class LabXxpClassifyDetailedController extends BaseController
     private IXxpClassifyDetailedService classifyDetailedService;
 
     @Autowired
+    private IXxpClassifyService iXxpClassifyService;
+
+    @Autowired
     private TokenService tokenService;
 
+    @Autowired
+    private IXxpClassifySubjectService classifySubjectService;
+
     /**
      * 查询安全信息类目详情列表
      */
     @PreAuthorize(hasPermi = PerPrefix.LABORATORY_CLASSIFY_DET + PerFun.LIST)
     @GetMapping("/list")
     @ApiOperation(value = "查询安全信息类目详情列表")
-    public TableDataInfo<XxpClassifyDetail> list(XxpClassifyDetail classifyDetailed)
+    public TableDataInfo<XxpClassifyDetailVO> list(XxpClassifyDetailVO classifyDetailed)
     {
         startPage();
-        List<XxpClassifyDetail> list = classifyDetailedService.selectXxpClassifyDetailedList(classifyDetailed);
+        List<XxpClassifyDetailVO> list = classifyDetailedService.selectXxpClassifyDetailedList(classifyDetailed);
         return getDataTable(list);
     }
 
@@ -59,10 +71,10 @@ public class LabXxpClassifyDetailedController extends BaseController
     @PreAuthorize(hasPermi = PerPrefix.LABORATORY_CLASSIFY_DET + PerFun.EXPORT)
     @Log(title = "安全信息类目详情", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, XxpClassifyDetail classifyDetailed) throws IOException
+    public void export(HttpServletResponse response, XxpClassifyDetailVO classifyDetailed) throws IOException
     {
-        List<XxpClassifyDetail> list = classifyDetailedService.selectXxpClassifyDetailedList(classifyDetailed);
-        ExcelUtil<XxpClassifyDetail> util = new ExcelUtil<XxpClassifyDetail>(XxpClassifyDetail.class);
+        List<XxpClassifyDetailVO> list = classifyDetailedService.selectXxpClassifyDetailedList(classifyDetailed);
+        ExcelUtil<XxpClassifyDetailVO> util = new ExcelUtil<XxpClassifyDetailVO>(XxpClassifyDetailVO.class);
         util.exportExcel(response, list, "安全信息类目详情数据");
     }
 
@@ -130,4 +142,30 @@ public class LabXxpClassifyDetailedController extends BaseController
         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);
+    }
+
+    @PostMapping(value = "/addSub")
+    public ResultData addSub(@RequestBody XxpClassifySubject subject)
+    {
+        return ResultData.success(classifySubjectService.insertClassifySubject(subject));
+    }
+
+    @GetMapping(value = "/delSub")
+    public ResultData delSub(Long subjectId)
+    {
+        return ResultData.success(classifySubjectService.deleteBySubjectId(subjectId));
+    }
+
 }

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

@@ -7,12 +7,10 @@ import com.zd.common.core.security.TokenService;
 import com.zd.common.core.utils.ExcelUtil;
 import com.zd.common.core.utils.StringUtils;
 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.XxpInspection;
 import com.zd.laboratory.domain.vo.XxpDutyVO;
 import com.zd.laboratory.service.IXxpDutyService;
-import com.zd.laboratory.service.IXxpInspectionService;
 import com.zd.model.domain.ResultData;
 import com.zd.model.domain.per.PerFun;
 import com.zd.model.domain.per.PerPrefix;
@@ -26,6 +24,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 值班Controller
@@ -173,4 +172,22 @@ public class LabXxpDutyController extends BaseController
         return ResultData.result(xxpDutyService.deleteXxpDutyById(id));
     }
 
+
+    /*--------------------------------------------------------------------------------*/
+    @RequestMapping("/api/selectDutyUser")
+    @ApiOperation(value = "查询值班列表")
+    public ResultData<List<Map<String,Object>>> list(Long labId,String dateTime)
+    {
+        List<Map<String,Object>> list = xxpDutyService.selectDutyUser(labId,dateTime);
+        return ResultData.success(list);
+    }
+
+
+    @RequestMapping("/api/selectDutyUserList")
+    @ApiOperation(value = "查询值班人员列表")
+    public ResultData<List<Map<String,Object>>> selectDutyUserList(Long labId,String startTime,String endTime)
+    {
+        List<Map<String,Object>> list = xxpDutyService.selectDutyUserList(labId,startTime,endTime);
+        return ResultData.success(list);
+    }
 }

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

@@ -206,4 +206,18 @@ public class LabXxpInspectionController extends BaseController
         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));
+    }
 }

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

@@ -141,6 +141,16 @@ public class LabSubject extends BaseEntity implements QCInterface {
     //安全分类id
     private Long typeId;
 
+    /***
+     * 实验室安全类目关系集合
+     */
+    List<XxpClassifySubject> classifySubjectList;
+
+    /***
+     * 安全类目信息
+     */
+    List<XxpClassify> classifyList;
+
     /**
      * 是否查询安全用户
      */
@@ -601,4 +611,20 @@ public class LabSubject extends BaseEntity implements QCInterface {
     public void setDetails(String details) {
         this.details = details;
     }
+
+    public List<XxpClassifySubject> getClassifySubjectList() {
+        return classifySubjectList;
+    }
+
+    public void setClassifySubjectList(List<XxpClassifySubject> classifySubjectList) {
+        this.classifySubjectList = classifySubjectList;
+    }
+
+    public List<XxpClassify> getClassifyList() {
+        return classifyList;
+    }
+
+    public void setClassifyList(List<XxpClassify> classifyList) {
+        this.classifyList = classifyList;
+    }
 }

+ 1 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/XxpCardInfo.java

@@ -105,7 +105,7 @@ public class XxpCardInfo extends BaseEntity {
      */
     @Excel(name = "是否启用门锁")
     @ApiModelProperty(value = "是否启用门锁")
-    private String isStart;
+    private Integer isStart;
 
     /**
      * 创建人id

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

@@ -1,6 +1,7 @@
 package com.zd.laboratory.domain;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zd.laboratory.domain.vo.XxpClassifyDetailVO;
 import com.zd.model.annotation.Excel;
 import com.zd.model.entity.BaseEntity;
 import io.swagger.annotations.ApiModel;
@@ -11,6 +12,7 @@ import lombok.experimental.Accessors;
 import org.hibernate.validator.constraints.Length;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 安全信息类目对象 xxp_classify
@@ -103,6 +105,17 @@ public class XxpClassify extends  BaseEntity
      */
     private String endTime;
 
+
+    /**
+     * 类目子项-实验室私有
+     */
+    List<XxpClassifyDetailVO> privateDetailList;
+
+    /**
+     * 非共有的所有子类
+     */
+    List<XxpClassifyDetailVO> normalDetailList;
+
     @Override
     public Long getUserId() {
         return userId;

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

@@ -0,0 +1,61 @@
+package com.zd.laboratory.domain;
+
+import com.zd.model.annotation.Excel;
+import com.zd.model.entity.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+
+/**
+ * 实验室安全类目关系表 xxp_classify_subject
+ *
+ * @author xxf
+ * @date 2023-03-27
+ */
+@ApiModel("实验室安全类目关系表")
+@Data
+@Accessors(chain = true)
+@ToString(callSuper = true)
+public class XxpClassifySubject extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 实验室id
+     */
+    @Excel(name = "实验室id")
+    @ApiModelProperty(value = "实验室id")
+    private Long subjectId;
+
+    /**
+     * 类目id
+     */
+    @Excel(name = "类目id")
+    @ApiModelProperty(value = "类目id")
+    private Long classifyId;
+
+    /**
+     * 详情id
+     */
+    @Excel(name = "详情id")
+    @ApiModelProperty(value = "详情id")
+    private String classifyDetailId;
+
+    /***
+     * 开始时间
+     */
+    private String beginTime;
+
+    /***
+     * 结束时间
+     */
+    private String 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;
+    }
+}

+ 17 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/vo/XxpClassifyDetailVO.java

@@ -0,0 +1,17 @@
+package com.zd.laboratory.domain.vo;
+
+import com.zd.laboratory.domain.XxpClassifyDetail;
+import lombok.Data;
+
+/**
+ * @Author: xxf
+ * @Date: 2023/03/28/17:38
+ * @Description:
+ */
+@Data
+public class XxpClassifyDetailVO extends XxpClassifyDetail {
+    /***
+     * 实验室id
+     */
+    private Long subjectId;
+}

+ 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);
 
     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
      */
     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
      */
     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);
 
+
+    /**
+     * 查询信息牌实验室数据
+     * @param id
+     * @return
+     */
+    public Map<String,Object> selectXxpLabSubjectById(Long id);
+
+    /**
+     * 根据实验室id获取实验室详情
+     * @param id
+     * @return
+     */
+    String getSubjectDetailsById(Long id);
 }

+ 16 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/XxpClassifyDetailedMapper.java

@@ -1,6 +1,7 @@
 package com.zd.laboratory.mapper;
 
 import com.zd.laboratory.domain.XxpClassifyDetail;
+import com.zd.laboratory.domain.vo.XxpClassifyDetailVO;
 
 import java.util.List;
 
@@ -26,7 +27,7 @@ public interface XxpClassifyDetailedMapper
      * @param classifyDetailed 信息牌类目详情
      * @return 集合
      */
-    public List<XxpClassifyDetail> selectXxpClassifyDetailedList(XxpClassifyDetail classifyDetailed);
+    public List<XxpClassifyDetailVO> selectXxpClassifyDetailedList(XxpClassifyDetailVO classifyDetailed);
 
 
     /**
@@ -60,4 +61,18 @@ public interface XxpClassifyDetailedMapper
      * @return 结果
      */
     public int deleteXxpClassifyDetailedByIds(Long[] ids);
+
+    /**
+     * 根据实验室id查询主要类别
+     * @param subjectId
+     * @return
+     */
+    public List<XxpClassifyDetail> selectXxpClassifyBySubjectId(Long subjectId);
+
+    /**
+     * 查询实验室下的类目配置
+     * @param classifyDetailVO
+     * @return
+     */
+    public List<XxpClassifyDetailVO> selectXxpClassifyDetailedByPara(XxpClassifyDetailVO classifyDetailVO);
 }

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

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

+ 72 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/XxpClassifySubjectMapper.java

@@ -0,0 +1,72 @@
+package com.zd.laboratory.mapper;
+
+import com.zd.laboratory.domain.XxpClassifySubject;
+import com.zd.laboratory.domain.vo.XxpDutyVO;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 实验室安全类目关系表 Mapper接口
+ *
+ * @author xxf
+ * @date 2023-03-22
+ */
+public interface XxpClassifySubjectMapper
+{
+    /**
+     * 查询
+     *
+     * @param id 主键
+     * @return 值班信息
+     */
+    public XxpClassifySubject selectClassifySubjectById(Long id);
+
+    /**
+     * 查询列表
+     *
+     * @param XxpClassifySubject 值班信息
+     * @return 白名单集合
+     */
+    public List<XxpClassifySubject> selectClassifySubjectList(XxpClassifySubject XxpClassifySubject);
+
+
+    /**
+     * 新增值班信息
+     *
+     * @param XxpClassifySubject 值班信息
+     * @return 结果
+     */
+    public int insertClassifySubject(XxpClassifySubject XxpClassifySubject);
+
+    /**
+     * 修改
+     *
+     * @param XxpClassifySubject 值班信息
+     * @return 结果
+     */
+    public int updateClassifySubject(XxpClassifySubject XxpClassifySubject);
+
+    /**
+     * 删除
+     *
+     * @param subjectId 主键
+     * @return 结果
+     */
+    public int deleteClassifySubjectById(Long subjectId);
+
+    /**
+     * 批量删除
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteClassifySubjectByIds(Long[] ids);
+
+    /***
+     * 根据实验室id删除
+     * @param subjectId
+     * @return
+     */
+    public int deleteBySubjectId(Long subjectId);
+}

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

@@ -1,10 +1,12 @@
 package com.zd.laboratory.mapper;
 
 import com.zd.laboratory.domain.XxpDuty;
+import org.apache.ibatis.annotations.Param;
 import com.zd.laboratory.domain.vo.XxpDutyVO;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 值班信息 Mapper接口
@@ -63,6 +65,23 @@ public interface XxpDutyMapper
      */
     public int deleteXxpDutyByIds(Long[] ids);
 
+    /**
+     * 根据当前时间和实验室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);
+
     /***
      * 根据时间段查询有数据的时间列表
      * @param xxpDuty

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

@@ -3,9 +3,11 @@ package com.zd.laboratory.mapper;
 import com.zd.laboratory.domain.XxpClassify;
 import com.zd.laboratory.domain.XxpDuty;
 import com.zd.laboratory.domain.XxpInspection;
+import org.apache.ibatis.annotations.Param;
 import com.zd.laboratory.domain.vo.XxpInspectionVO;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 巡查信息 Mapper接口
@@ -64,6 +66,24 @@ public interface XxpInspectionMapper
      */
     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);
+
     /***
      * 查询某时间段内签到人数集合
      * @param inspectionVO
@@ -91,4 +111,5 @@ public interface XxpInspectionMapper
      * @return
      */
     public List<XxpDuty> selectListAbnormal(XxpDuty xxpDuty);
+
 }

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

@@ -159,4 +159,11 @@ public interface ILabHardwareService {
      * @return
      */
     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
 {
     /**
+     * 查询实验室获取准入资格的人员
+     * @param labId
+     * @return
+     */
+    public List<Map<String,Object>> selectLabSecurityApply(Long labId);
+    /**
      * 查询安全准入申请
      *
      * @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
      */
     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 java.util.List;
+import java.util.Map;
 
 /**
  * 实验室Service接口
@@ -267,4 +268,18 @@ public interface ILabSubjectService {
      * @return 实验室集合
      */
     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);
 }

+ 26 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/IXxpClassifyDetailedService.java

@@ -1,6 +1,8 @@
 package com.zd.laboratory.service;
 
+import com.zd.laboratory.api.vo.LabXxpClassifyVo;
 import com.zd.laboratory.domain.XxpClassifyDetail;
+import com.zd.laboratory.domain.vo.XxpClassifyDetailVO;
 
 import java.util.List;
 
@@ -26,7 +28,7 @@ public interface IXxpClassifyDetailedService
      * @param classifyDetail 安全信息类目详情
      * @return 安全信息类目详情集合
      */
-    public List<XxpClassifyDetail> selectXxpClassifyDetailedList(XxpClassifyDetail classifyDetail);
+    public List<XxpClassifyDetailVO> selectXxpClassifyDetailedList(XxpClassifyDetailVO classifyDetail);
 
 
 
@@ -63,4 +65,27 @@ public interface IXxpClassifyDetailedService
      * @return 结果
      */
     public int deleteXxpClassifyDetailedById(Long id);
+
+    /**
+     * 查询实验室下的类目配置
+     * @param classifyDetailVO
+     * @return
+     */
+    public List<XxpClassifyDetailVO> selectXxpClassifyDetailedByPara(XxpClassifyDetailVO classifyDetailVO);
+
+
+    /**
+     * 根据实验室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.XxpClassify;
+import com.zd.laboratory.domain.XxpClassifyDetail;
 import com.zd.laboratory.domain.vo.LabWhitelistVO;
 
 import java.util.List;
@@ -65,4 +66,11 @@ public interface IXxpClassifyService
      * @return 结果
      */
     public int deleteXxpClassifyById(Long id);
+
+    /**
+     * 查询信息牌类目根据实验室id
+     * @param id
+     * @return
+     */
+    List<XxpClassify> selectXxpClassifySubjectById(Long id);
 }

+ 73 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/IXxpClassifySubjectService.java

@@ -0,0 +1,73 @@
+package com.zd.laboratory.service;
+
+import com.zd.laboratory.domain.XxpClassifySubject;
+import java.util.List;
+
+/**
+ * 值班 Service接口
+ *
+ * @author zd
+ * @date 2022-01-26
+ */
+public interface IXxpClassifySubjectService
+{
+    /**
+     * 查询值班
+     *
+     * @param id 值班主键
+     * @return 值班
+     */
+    public XxpClassifySubject  selectClassifySubjectById(Long id);
+
+    /**
+     * 查询值班列表
+     *
+     * @param classifySubject 值班
+     * @return 值班集合
+     */
+    public List<XxpClassifySubject> selectClassifySubjectList(XxpClassifySubject classifySubject);
+
+
+
+    /**
+     * 新增值班
+     *
+     * @param classifySubject 值班
+     * @return 结果
+     */
+    public int insertClassifySubject(XxpClassifySubject classifySubject);
+
+
+
+    /**
+     * 修改值班
+     *
+     * @param classifySubject 值班
+     * @return 结果
+     */
+    public int updateClassifySubject(XxpClassifySubject classifySubject);
+
+    /**
+     * 批量删除值班
+     *
+     * @param ids 需要删除的值班主键集合
+     * @return 结果
+     */
+    public int deleteClassifySubjectByIds(Long[] ids);
+
+    /**
+     * 删除值班信息
+     *
+     * @param id 值班主键
+     * @return 结果
+     */
+    public int deleteClassifySubjectById(Long id);
+
+    /***
+     * 根据实验室id删除
+     * @param subjectId
+     * @return
+     */
+    public int deleteBySubjectId(Long subjectId);
+
+}

+ 20 - 0
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.List;
+import java.util.Map;
 
 /**
  * 值班 Service接口
@@ -14,6 +15,15 @@ import java.util.List;
  */
 public interface IXxpDutyService
 {
+
+    /**
+     * 根据当前时间和实验室ID查询值班人员信息
+     * @param labId
+     * @param dateTime
+     * @return
+     */
+    public List<Map<String,Object>> selectDutyUser(Long labId,String dateTime);
+
     /**
      * 查询值班
      *
@@ -86,4 +96,14 @@ public interface IXxpDutyService
      * @return
      */
     public List<XxpDutyVO> selectInfoByDate(XxpDuty xxpDuty);
+
+    /**
+     * 查询实验室值班人员信息
+     * @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

@@ -5,6 +5,7 @@ import com.zd.laboratory.domain.XxpInspection;
 import com.zd.laboratory.domain.vo.XxpInspectionVO;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 巡查 Service接口
@@ -15,6 +16,13 @@ import java.util.List;
 public interface IXxpInspectionService
 {
     /**
+     * 根据实验室id和当前时间查询签到记录
+     * @param labId
+     * @param dateTime
+     * @return
+     */
+    public List<Map<String,Object>> selectXxpInspection(Long labId,String dateTime);
+    /**
      * 查询巡查
      *
      * @param id 巡查主键
@@ -66,6 +74,16 @@ public interface IXxpInspectionService
      */
     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);
+
+
     /***
      * 查询某时间段内签到人数集合
      * @param inspectionVO

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

@@ -826,4 +826,9 @@ public class LabHardwareServiceImpl implements ILabHardwareService {
     public LabHardware selectLabHardwareCameraBySub(Long 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

@@ -83,6 +83,11 @@ public class LabSecurityApplyServiceImpl implements ILabSecurityApplyService
 
     private static final Logger log = LoggerFactory.getLogger(LabSecurityApplyServiceImpl.class);
 
+    @Override
+    public List<Map<String, Object>> selectLabSecurityApply(Long labId) {
+        return labSecurityApplyMapper.selectLabSecurityApply(labId);
+    }
+
     /**
      * 查询安全准入申请
      *
@@ -479,7 +484,6 @@ public class LabSecurityApplyServiceImpl implements ILabSecurityApplyService
 
     /**
      * 未过期的数据
-     *
      * @param labSecurityApply
      * @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) {
         return labSubjectAccessRecordMapper.updateLabSubjectAccessRecordById(accessRecord);
     }
+
+    @Override
+    public List<Map<String, Object>> selectSubjectSignList(Long subjectId) {
+        return labSubjectAccessRecordMapper.selectSubjectSignList(subjectId);
+    }
 }

+ 68 - 3
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectManagerService.java

@@ -14,9 +14,7 @@ import com.zd.common.core.utils.DictUtils;
 import com.zd.common.core.utils.PageHelperUtil;
 import com.zd.common.core.utils.SecurityUtils;
 import com.zd.laboratory.api.entity.*;
-import com.zd.laboratory.api.vo.HardwareCVO;
-import com.zd.laboratory.api.vo.LabSubClassVO;
-import com.zd.laboratory.api.vo.SenseValVO;
+import com.zd.laboratory.api.vo.*;
 import com.zd.laboratory.config.HardwareFunctionStatusConfig;
 import com.zd.laboratory.config.TimeWaitConfigUtils;
 import com.zd.laboratory.domain.*;
@@ -103,6 +101,11 @@ public class LabSubjectManagerService {
     @Autowired
     private RemoteChemicalService remoteChemicalService;
 
+    @Autowired
+    private IXxpClassifyService classifyService;
+    @Autowired
+    private IXxpClassifyDetailedService classifyDetailedService;
+
     private Map<ControlEntity.CommTypeEnums, ControlService> controlServiceMap = new HashMap<>();
 
     /**
@@ -686,12 +689,74 @@ public class LabSubjectManagerService {
                 subjectControllerVO.setRiskPlanList(labRiskPlanMapper.selectRiskPlanCountBySubId(subjectControllerVO.getId()));
             }
 
+
+            subjectControllerVO.setClassifyList(getSubClassify(id));
             return subjectControllerVO;
         }
 
         throw new ServiceException("未查询到数据,ID无效!");
     }
 
+    /***
+     * 查询实验室下的安全类目信息
+     * @param subJectId
+     * @return
+     */
+    public List<ClassifyVO> getSubClassify(Long subJectId){
+        List<ClassifyVO> classifyVOList = new ArrayList<>();
+        try {
+            //查询所有有效类目配置
+            XxpClassify classify = new XxpClassify();
+            classify.setIsShow(1);
+            classify.setIsSpecial(1);
+            classify.setRemark("sort");
+            List<XxpClassify> classifyList = classifyService.selectXxpClassifyList(classify);
+            for (XxpClassify xcf:classifyList) {
+                ClassifyVO classifyVO = new ClassifyVO();
+                classifyVO.setId(xcf.getId());
+                classifyVO.setClassifyName(xcf.getClassifyName());
+                classifyVO.setClassifyType(xcf.getClassifyType());
+                classifyVOList.add(classifyVO);
+
+                //查询公共配置
+                XxpClassifyDetailVO detailVO = new XxpClassifyDetailVO();
+                detailVO.setInfoClassifyId(xcf.getId());
+                detailVO.setIsCollective(1);
+                //类目下公共所有子项类目
+                List<XxpClassifyDetailVO> allDetailList= classifyDetailedService.selectXxpClassifyDetailedList(detailVO);
+                List<ClassifyDetailVO> showPublickList= new ArrayList<>();
+                for (XxpClassifyDetailVO vo:allDetailList ) {
+                    ClassifyDetailVO detailVO1 = new ClassifyDetailVO();
+                    detailVO1.setId(vo.getId());
+                    detailVO1.setInfoClassifyId(vo.getInfoClassifyId());
+                    detailVO1.setInfoName(vo.getInfoName());
+                    detailVO1.setInfoType(vo.getInfoType());
+                    detailVO1.setInfoContent(vo.getInfoContent());
+                    showPublickList.add(detailVO1);
+                }
+
+                detailVO.setSubjectId(subJectId);
+                //实验室私有配置类目
+                List<XxpClassifyDetailVO> detailVOList= classifyDetailedService.selectXxpClassifyDetailedByPara(detailVO);
+                List<ClassifyDetailVO> showprivateList = new ArrayList<>();
+                for (XxpClassifyDetailVO vo:detailVOList) {
+                    ClassifyDetailVO classifyDetailVO = new ClassifyDetailVO();
+                    classifyDetailVO.setId(vo.getId());
+                    classifyDetailVO.setInfoClassifyId(vo.getInfoClassifyId());
+                    classifyDetailVO.setInfoName(vo.getInfoName());
+                    classifyDetailVO.setInfoType(vo.getInfoType());
+                    classifyDetailVO.setInfoContent(vo.getInfoContent());
+                    showprivateList.add(classifyDetailVO);
+                }
+
+                classifyVO.setPrivateList(showprivateList);
+                classifyVO.setPublicList(showPublickList);
+            }
+        }catch (Exception e){
+            logger.info("查询实验室下的安全类目信息异常:"+e);
+        }
+        return classifyVOList;
+    }
     /**
      * 查询我管理的实验室-即我作为负责人的实验室
      *

+ 24 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectServiceImpl.java

@@ -9,6 +9,7 @@ import com.zd.laboratory.api.vo.LabSubClassVO;
 import com.zd.laboratory.domain.LabHazardSubjectRelation;
 import com.zd.laboratory.domain.LabQpSubjectRelation;
 import com.zd.laboratory.domain.LabSubject;
+import com.zd.laboratory.domain.XxpClassifySubject;
 import com.zd.laboratory.domain.vo.LabClassifiedVo;
 import com.zd.laboratory.domain.vo.LabClasstypeVo;
 import com.zd.laboratory.domain.vo.LabSubjectVO;
@@ -17,6 +18,7 @@ import com.zd.laboratory.mapper.LabQpSubjectRelationMapper;
 import com.zd.laboratory.mapper.LabSubjectMapper;
 import com.zd.laboratory.service.ILabHazardSubjectRelationService;
 import com.zd.laboratory.service.ILabSubjectService;
+import com.zd.laboratory.service.IXxpClassifySubjectService;
 import com.zd.model.constant.SecurityConstants;
 import com.zd.model.constant.UserConstants;
 import com.zd.model.domain.R;
@@ -32,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 实验室Service业务层处理
@@ -53,6 +56,8 @@ public class LabSubjectServiceImpl implements ILabSubjectService {
     private LabHazardSubjectRelationMapper labHazardSubjectRelationMapper;
     @Autowired
     private LabQpSubjectRelationMapper labQpSubjectRelationMapper;
+    @Autowired
+    private IXxpClassifySubjectService classifySubjectService;
     /**
      * 查询实验室
      *
@@ -210,7 +215,15 @@ public class LabSubjectServiceImpl implements ILabSubjectService {
 //            labHazardSubjectRelationMapper.deleteBySubId(labSubject.getId());
 //        }
 
-
+        List<XxpClassifySubject> classifySubjectList = labSubject.getClassifySubjectList();
+        if(classifySubjectList!=null && classifySubjectList.size()>0){
+            //删除关系
+            classifySubjectService.deleteBySubjectId(labSubject.getId());
+        }
+        //安全类目关系入库
+        for (XxpClassifySubject cs:classifySubjectList) {
+            classifySubjectService.insertClassifySubject(cs);
+        }
         return labSubjectMapper.updateLabSubject(labSubject);
     }
 
@@ -498,4 +511,14 @@ public class LabSubjectServiceImpl implements ILabSubjectService {
     public List<LabClassifiedVo> getFiedCount(LabSubjectVO 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);
+    }
 }

+ 57 - 3
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpClassifyDetailedServiceImpl.java

@@ -2,14 +2,19 @@ package com.zd.laboratory.service.impl;
 
 import com.zd.common.core.exception.ServiceException;
 import com.zd.common.core.security.TokenService;
+import com.zd.laboratory.api.vo.LabXxpClassifyVo;
+import com.zd.laboratory.domain.XxpClassify;
 import com.zd.common.core.utils.StringUtils;
 import com.zd.laboratory.domain.XxpClassifyDetail;
+import com.zd.laboratory.domain.vo.XxpClassifyDetailVO;
 import com.zd.laboratory.mapper.XxpClassifyDetailedMapper;
+import com.zd.laboratory.mapper.XxpClassifyMapper;
 import com.zd.laboratory.service.IXxpClassifyDetailedService;
 import com.zd.model.entity.SysUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -26,6 +31,9 @@ public class XxpClassifyDetailedServiceImpl implements IXxpClassifyDetailedServi
     private XxpClassifyDetailedMapper classifyDetailedMapper;
 
     @Autowired
+    private XxpClassifyMapper xxpClassifyMapper;
+
+    @Autowired
     private TokenService tokenService;
 
 
@@ -43,14 +51,15 @@ public class XxpClassifyDetailedServiceImpl implements IXxpClassifyDetailedServi
     /**
      * 查询安全信息类目详情列表
      *
-     * @param classifyDetailed 安全信息类目详情
+     * @param classifyDetail 安全信息类目详情
      * @return 安全信息类目详情集合
      */
     @Override
-    public List<XxpClassifyDetail> selectXxpClassifyDetailedList(XxpClassifyDetail classifyDetailed) {
-        return classifyDetailedMapper.selectXxpClassifyDetailedList(classifyDetailed);
+    public List<XxpClassifyDetailVO> selectXxpClassifyDetailedList(XxpClassifyDetailVO classifyDetail) {
+        return classifyDetailedMapper.selectXxpClassifyDetailedList(classifyDetail);
     }
 
+
     /**
      * 新增安全信息类目详情
      *
@@ -104,4 +113,49 @@ public class XxpClassifyDetailedServiceImpl implements IXxpClassifyDetailedServi
     public int deleteXxpClassifyDetailedById(Long 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;
+    }
+
+    /**
+     * 查询实验室下的类目配置
+     *
+     * @param classifyDetailVO
+     * @return
+     */
+    @Override
+    public List<XxpClassifyDetailVO> selectXxpClassifyDetailedByPara(XxpClassifyDetailVO classifyDetailVO) {
+        return classifyDetailedMapper.selectXxpClassifyDetailedByPara(classifyDetailVO);
+    }
 }

+ 14 - 3
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpClassifyServiceImpl.java

@@ -9,6 +9,7 @@ import com.zd.laboratory.domain.LabWhitelist;
 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.XxpClassifyDetailVO;
 import com.zd.laboratory.mapper.LabWhiteJoinSublistMapper;
 import com.zd.laboratory.mapper.LabWhitelistMapper;
 import com.zd.laboratory.mapper.XxpClassifyDetailedMapper;
@@ -130,10 +131,20 @@ public class XxpClassifyServiceImpl implements IXxpClassifyService
      * @param classifyId
      * @return
      */
-    public List<XxpClassifyDetail> delCheck(Long classifyId){
-        XxpClassifyDetail detail = new XxpClassifyDetail();
+    public List<XxpClassifyDetailVO> delCheck(Long classifyId){
+        XxpClassifyDetailVO detail = new XxpClassifyDetailVO();
         detail.setInfoClassifyId(classifyId);
-        List<XxpClassifyDetail> list = detailedMapper.selectXxpClassifyDetailedList(detail);
+        List<XxpClassifyDetailVO> list = detailedMapper.selectXxpClassifyDetailedList(detail);
         return list;
     }
+
+    /**
+     * 查询信息牌类目根据实验室id
+     * @param id
+     * @return
+     */
+    @Override
+    public List<XxpClassify> selectXxpClassifySubjectById(Long id) {
+        return xxpClassifyMapper.selectXxpClassifySubjectById(id);
+    }
 }

+ 100 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpClassifySubjectServiceImpl.java

@@ -0,0 +1,100 @@
+package com.zd.laboratory.service.impl;
+
+import com.zd.common.core.security.TokenService;
+import com.zd.laboratory.domain.XxpClassifySubject;
+import com.zd.laboratory.mapper.XxpClassifySubjectMapper;
+import com.zd.laboratory.service.IXxpClassifySubjectService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 值班Service业务层处理
+ *
+ * @author zd
+ * @date 2022-01-26
+ */
+@Service
+public class XxpClassifySubjectServiceImpl implements IXxpClassifySubjectService
+{
+    @Autowired
+    private XxpClassifySubjectMapper classifySubjectMapper;
+
+    @Autowired
+    private TokenService tokenService;
+
+
+    /**
+     * 查询值班
+     *
+     * @param id 值班主键
+     * @return 值班
+     */
+    @Override
+    public XxpClassifySubject selectClassifySubjectById(Long id) {
+        return classifySubjectMapper.selectClassifySubjectById(id);
+    }
+
+    /**
+     * 查询值班列表
+     *
+     * @param classifySubject@return 值班集合
+     */
+    @Override
+    public List<XxpClassifySubject> selectClassifySubjectList(XxpClassifySubject classifySubject) {
+        return classifySubjectMapper.selectClassifySubjectList(classifySubject);
+    }
+
+    /**
+     * 新增值班
+     *
+     * @param classifySubject@return 结果
+     */
+    @Override
+    public int insertClassifySubject(XxpClassifySubject classifySubject) {
+        return classifySubjectMapper.insertClassifySubject(classifySubject);
+    }
+
+    /**
+     * 修改值班
+     *
+     * @param classifySubject@return 结果
+     */
+    @Override
+    public int updateClassifySubject(XxpClassifySubject classifySubject) {
+        return classifySubjectMapper.updateClassifySubject(classifySubject);
+    }
+
+    /**
+     * 批量删除值班
+     *
+     * @param ids 需要删除的值班主键集合
+     * @return 结果
+     */
+    @Override
+    public int deleteClassifySubjectByIds(Long[] ids) {
+        return classifySubjectMapper.deleteClassifySubjectByIds(ids);
+    }
+
+    /**
+     * 删除值班信息
+     *
+     * @param id 值班主键
+     * @return 结果
+     */
+    @Override
+    public int deleteClassifySubjectById(Long id) {
+        return classifySubjectMapper.deleteClassifySubjectById(id);
+    }
+
+    /***
+     * 根据实验室id删除
+     * @param subjectId
+     * @return
+     */
+    @Override
+    public int deleteBySubjectId(Long subjectId) {
+        return classifySubjectMapper.deleteBySubjectId(subjectId);
+    }
+}

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

@@ -11,6 +11,7 @@ import com.zd.laboratory.mapper.XxpDutyMapper;
 import com.zd.laboratory.mapper.XxpInspectionMapper;
 import com.zd.laboratory.service.IXxpDutyService;
 import com.zd.laboratory.service.IXxpInspectionService;
+import org.apache.ibatis.annotations.Param;
 import com.zd.model.entity.SysUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -18,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 值班Service业务层处理
@@ -35,6 +37,11 @@ public class XxpDutyServiceImpl implements IXxpDutyService
     private TokenService tokenService;
 
 
+    @Override
+    public List<Map<String, Object>> selectDutyUser(Long labId, String dateTime) {
+        return xxpDutyMapper.selectDutyUser(labId,dateTime);
+    }
+
     /**
      * 查询值班
      *
@@ -131,6 +138,11 @@ public class XxpDutyServiceImpl implements IXxpDutyService
         return xxpDutyMapper.deleteXxpDutyById(id);
     }
 
+    @Override
+    public List<Map<String, Object>> selectDutyUserList(Long labId, String startTime, String endTime) {
+        return xxpDutyMapper.selectDutyUserList(labId,startTime,endTime);
+    }
+
     /***
      * 根据时间段查询有数据的时间列表
      * @param xxpDuty

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

@@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 巡查Service业务层处理
@@ -33,6 +34,11 @@ public class XxpInspectionServiceImpl implements IXxpInspectionService
     private TokenService tokenService;
 
 
+    @Override
+    public List<Map<String, Object>> selectXxpInspection(Long labId, String dateTime) {
+        return xxpInspectionMapper.selectXxpInspection(labId,dateTime);
+    }
+
     /**
      * 查询巡查
      *
@@ -99,6 +105,18 @@ public class XxpInspectionServiceImpl implements IXxpInspectionService
         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);
+    }
+
     /***
      * 查询某时间段内签到人数集合
      * @param inspectionVO

+ 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[]){
-        Integer bit=2;
+        Integer bit=5;
         System.out.println(getOpenLockOrder(bit));
         System.out.println(getCloseLockOrder(bit));
         System.out.println(getReadLockOrder(bit));

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

@@ -590,4 +590,7 @@
     <select id="querySubNameById" resultType="java.lang.String">
         select name from lab_subject where id = (select subject_id from lab_hardware where id = #{hardId})
     </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>

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

@@ -571,4 +571,12 @@
         </if>
     </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>

+ 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`
          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 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>

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

@@ -1161,4 +1161,26 @@
             <if test="userId != null ">and user_id = #{userId}</if>
         </where>
     </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>

+ 1 - 1
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpCardInfoMapper.xml

@@ -29,7 +29,7 @@
                card_name,
                card_num,
                college,
-               college_id
+               college_id,
                location,
                operate,
                subject_id,

+ 22 - 2
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpClassifyDetailMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zd.laboratory.mapper.XxpClassifyDetailedMapper">
 
-    <resultMap type="com.zd.laboratory.domain.XxpClassifyDetail" id="XxpClassifyDetailedResult">
+    <resultMap type="com.zd.laboratory.domain.vo.XxpClassifyDetailVO" id="XxpClassifyDetailedResult">
         <result property="id" column="id"/>
         <result property="infoClassifyId" column="info_classify_id"/>
         <result property="infoName" column="info_name"/>
@@ -35,7 +35,7 @@
         from xxp_classify_detail t
     </sql>
 
-    <select id="selectXxpClassifyDetailedList" parameterType="com.zd.laboratory.domain.XxpClassifyDetail"
+    <select id="selectXxpClassifyDetailedList" parameterType="com.zd.laboratory.domain.vo.XxpClassifyDetailVO"
             resultMap="XxpClassifyDetailedResult">
         <include refid="selectXxpClassifyDetailed"/>
         <where>
@@ -65,6 +65,11 @@
         where t.id = #{id}
     </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 into xxp_classify_detail
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -136,4 +141,19 @@
             #{id}
         </foreach>
     </delete>
+
+    <select id="selectXxpClassifyDetailedByPara" parameterType="com.zd.laboratory.domain.vo.XxpClassifyDetailVO"
+            resultType="com.zd.laboratory.domain.vo.XxpClassifyDetailVO">
+        select d.id, d.info_classify_id, d.info_content,d.info_name,d.info_type
+        from xxp_classify_subject s
+                 LEFT JOIN xxp_classify c on s.classify_id = c.id
+                 LEFT JOIN xxp_classify_detail d on s.classify_detail_id = d.id
+        <where>
+        <if test="infoClassifyId != null ">and d.info_classify_id = #{infoClassifyId}</if>
+        <if test="isCollective != null ">and d.is_collective = #{isCollective}</if>
+        <if test="subjectId != null ">and s.subject_id = #{subjectId}</if>
+        </where>
+    </select>
+
+
 </mapper>

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

@@ -56,6 +56,12 @@
             <if test="endTime != null ">
                 and t.create_time &lt;= str_to_date(#{endTime}, '%Y-%m-%d')
             </if>
+            <if test="remark == 'time' ">
+                order by t.create_time desc
+            </if>
+            <if test="remark == 'sort' ">
+                order by t.sort
+            </if>
         </where>
     </select>
 
@@ -64,6 +70,17 @@
         where t.id = #{id}
     </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 into xxp_classify
         <trim prefix="(" suffix=")" suffixOverrides=",">

+ 81 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpClassifySubjectMapper.xml

@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zd.laboratory.mapper.XxpClassifySubjectMapper">
+
+    <resultMap type="com.zd.laboratory.domain.XxpClassifySubject" id="XxpClassifySubjectResult">
+        <result property="id" column="id"/>
+        <result property="subjectId" column="subject_id"/>
+        <result property="classifyId" column="classify_id"/>
+        <result property="classifyDetailId" column="classify_detail_id"/>
+    </resultMap>
+
+    <sql id="selectClassifySubject">
+        select t.id,
+               t.subject_id,
+               t.classify_id,
+               t.classify_detail_id
+        from xxp_classify_subject t
+    </sql>
+
+    <select id="selectClassifySubjectList" parameterType="com.zd.laboratory.domain.XxpClassifySubject"
+            resultMap="XxpClassifySubjectResult">
+        <include refid="selectClassifySubject"/>
+        <where>
+            <if test="subjectId != null ">and t.subject_id = #{subjectId}</if>
+            <if test="classifyId != null ">and t.classify_id = #{classifyId}</if>
+            <if test="classifyDetailId != null ">and t.classify_detail_id = #{classifyDetailId}</if>
+        </where>
+    </select>
+
+    <select id="selectClassifySubjectById" resultMap="XxpClassifySubjectResult">
+        <include refid="selectClassifySubject"/>
+        where t.id = #{id}
+    </select>
+
+    <insert id="insertClassifySubject" parameterType="com.zd.laboratory.domain.XxpClassifySubject">
+        insert into xxp_classify_subject
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="subjectId != null">subject_id,</if>
+            <if test="classifyId != null">classify_id,</if>
+            <if test="classifyDetailId != null">classify_detail_id,</if>
+
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="subjectId != null">#{subjectId},</if>
+            <if test="classifyId != null">#{classifyId},</if>
+            <if test="classifyDetailId != null">#{classifyDetailId},</if>
+        </trim>
+    </insert>
+
+    <update id="updateClassifySubject" parameterType="com.zd.laboratory.domain.XxpClassifySubject">
+        update xxp_classify_subject
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="subjectId != null">subject_id = #{subjectId},</if>
+            <if test="classifyId != null">classify_id = #{classifyId},</if>
+            <if test="classifyDetailId != null">classify_detail_id = #{classifyDetailId},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteClassifySubjectById">
+        delete
+        from xxp_classify_subject
+        where id = #{id}
+    </delete>
+
+    <delete id="deleteClassifySubjectByIds">
+        delete from xxp_classify_subject where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <delete id="deleteBySubjectId">
+        delete
+        from xxp_classify_subject
+        where subject_id = #{SubjectId}
+    </delete>
+
+</mapper>

+ 43 - 10
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpDutyMapper.xml

@@ -52,7 +52,9 @@
             <if test="userType != null ">and t.user_type = #{userType}</if>
             <if test="subjectId != null ">and t.subject_id = #{subjectId}</if>
             <if test="subjectName != null and subjectName != '' ">and t.subject_name = #{subjectName}</if>
-            <if test="deptId != null ">and ( t.dept_id in (SELECT dt.dept_id FROM sys_dept dt WHERE find_in_set(#{deptId} ,ancestors )) or t.dept_id = #{deptId} )</if>
+            <if test="deptId != null ">and ( t.dept_id in (SELECT dt.dept_id FROM sys_dept dt WHERE
+                find_in_set(#{deptId} ,ancestors )) or t.dept_id = #{deptId} )
+            </if>
             <if test="deptName != null ">and t.dept_name = #{deptName}</if>
             <if test="college != null ">and t.college = #{college}</if>
             <if test="dutyTime != null  ">and t.duty_time =#{dutyTime}</if>
@@ -73,6 +75,30 @@
         where t.id = #{id}
     </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 into xxp_duty
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -143,15 +169,19 @@
         </foreach>
     </delete>
 
-    <select id="selectDutyYmdById" parameterType="com.zd.laboratory.domain.XxpDuty" resultType="com.zd.laboratory.domain.vo.XxpDutyVO">
+    <select id="selectDutyYmdById" parameterType="com.zd.laboratory.domain.XxpDuty"
+            resultType="com.zd.laboratory.domain.vo.XxpDutyVO">
         select t1.duty_time
         from (
-                 select t.duty_time
-                 from xxp_duty t
-                 where t.duty_time &gt;= str_to_date(#{beginTime}, '%Y-%m-%d')
-                   and t.duty_time &lt;= str_to_date(#{endTime}, '%Y-%m-%d')
-                 GROUP BY t.duty_time
-             ) t1
+        select t.duty_time
+        from xxp_duty t
+        where t.duty_time &gt;= str_to_date(#{beginTime}, '%Y-%m-%d')
+        and t.duty_time &lt;= str_to_date(#{endTime}, '%Y-%m-%d')
+        <if test="deptId != null ">and ( t.dept_id in (SELECT dt.dept_id FROM sys_dept dt WHERE find_in_set(#{deptId}
+            ,ancestors )) or t.dept_id = #{deptId} )
+        </if>
+        GROUP BY t.duty_time
+        ) t1
     </select>
 
     <select id="selectSubAndUserSum" resultType="com.zd.laboratory.domain.vo.XxpDutyVO" parameterType="java.util.Date">
@@ -169,10 +199,13 @@
              ) t
     </select>
 
-    <select id="selectInfoByDate" parameterType="com.zd.laboratory.domain.XxpDuty" resultType="com.zd.laboratory.domain.vo.XxpDutyVO">
+    <select id="selectInfoByDate" parameterType="com.zd.laboratory.domain.XxpDuty"
+            resultType="com.zd.laboratory.domain.vo.XxpDutyVO">
         select subject_id,subject_name from xxp_duty t
         where t.duty_time=#{dutyTime}
-        <if test="deptId != null ">and ( t.dept_id in (SELECT dt.dept_id FROM sys_dept dt WHERE find_in_set(#{deptId} ,ancestors )) or t.dept_id = #{deptId} )</if>
+        <if test="deptId != null ">and ( t.dept_id in (SELECT dt.dept_id FROM sys_dept dt WHERE find_in_set(#{deptId}
+            ,ancestors )) or t.dept_id = #{deptId} )
+        </if>
         GROUP BY t.subject_id, t.subject_name
     </select>
 

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

@@ -61,6 +61,20 @@
         where t.id = #{id}
     </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 into xxp_inspection
         <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();
+            }
+        }
+    }
+}