zhangcl 2 dní pred
rodič
commit
7620d5883b
100 zmenil súbory, kde vykonal 0 pridanie a 9189 odobranie
  1. 0 24
      yudao-module-pms/pom.xml
  2. 0 53
      yudao-module-pms/yudao-module-pms-abc/pom.xml
  3. 0 26
      yudao-module-pms/yudao-module-pms-abc/src/main/java/cn/iocoder/yudao/module/pms/abc/config/DeviceMqttService.java
  4. 0 476
      yudao-module-pms/yudao-module-pms-abc/src/main/java/cn/iocoder/yudao/module/pms/abc/config/MqttClientManager.java
  5. 0 19
      yudao-module-pms/yudao-module-pms-abc/src/main/java/cn/iocoder/yudao/module/pms/abc/config/MqttProperties.java
  6. 0 25
      yudao-module-pms/yudao-module-pms-api/pom.xml
  7. 0 37
      yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/AttachmentCategoryEnum.java
  8. 0 36
      yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/AttachmentTypeEnum.java
  9. 0 129
      yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/ErrorCodeConstant.java
  10. 0 34
      yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/common/FailureAuditStatusEnum.java
  11. 0 40
      yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/common/IotDeviceStatusEnum.java
  12. 0 30
      yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/devicetemplate/DeviceTemplateAttrAccessModeEnum.java
  13. 0 32
      yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/devicetemplate/IotDataSpecsDataTypeEnum.java
  14. 0 156
      yudao-module-pms/yudao-module-pms-biz/pom.xml
  15. 0 124
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/ThingsModelDTO.java
  16. 0 30
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/annotation/AntiDuplicateSubmit.java
  17. 0 89
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/aspect/AntiDuplicateSubmitAspect.java
  18. 0 98
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/config/PmsDataPermissionConfiguration.java
  19. 0 32
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/config/ThreadPoolTaskConfig.java
  20. 0 49
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/constant/PmsConstants.java
  21. 0 57
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/DeviceController.java
  22. 0 44
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/DeviceHistoryParam.java
  23. 0 147
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/FileUploadController.java
  24. 0 875
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotDeviceController.java
  25. 0 45
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotFineReportController.java
  26. 0 92
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotInfoClassifyController.java
  27. 0 165
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotInfoController.java
  28. 0 84
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotProductClassifyController.java
  29. 0 173
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotTreeController.java
  30. 0 82
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/TableDataInfo.java
  31. 0 98
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/IotAlarmRecordController.java
  32. 0 120
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/IotAlarmSettingController.java
  33. 0 171
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/IotVideoAlarmController.java
  34. 0 41
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotAlarmRecordPageReqVO.java
  35. 0 47
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotAlarmRecordRespVO.java
  36. 0 32
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotAlarmRecordSaveReqVO.java
  37. 0 43
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotAlarmSettingPageReqVO.java
  38. 0 53
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotAlarmSettingRespVO.java
  39. 0 42
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotAlarmSettingSaveReqVO.java
  40. 0 75
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotVideoAlarmPageReqVO.java
  41. 0 96
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotVideoAlarmRespVO.java
  42. 0 75
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotVideoAlarmSaveReqVO.java
  43. 0 27
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/WsTdPropertyVO.java
  44. 0 115
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/app/IotAppController.java
  45. 0 34
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/app/vo/IotAppPageReqVO.java
  46. 0 39
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/app/vo/IotAppRespVO.java
  47. 0 27
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/app/vo/IotAppSaveReqVO.java
  48. 0 29
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/app/vo/IotWgtRespVO.java
  49. 0 93
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/depttype/IotDeptTypeController.java
  50. 0 33
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/depttype/vo/IotDeptTypePageReqVO.java
  51. 0 35
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/depttype/vo/IotDeptTypeRespVO.java
  52. 0 25
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/depttype/vo/IotDeptTypeSaveReqVO.java
  53. 0 776
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupController.java
  54. 0 95
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupDetailController.java
  55. 0 43
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupDetailPageReqVO.java
  56. 0 53
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupDetailRespVO.java
  57. 0 44
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupDetailSaveReqVO.java
  58. 0 24
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupMonitorVO.java
  59. 0 33
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupPageReqVO.java
  60. 0 47
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupRespVO.java
  61. 0 31
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupSaveReqVO.java
  62. 0 202
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/IotFailureReportController.java
  63. 0 86
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportPageReqVO.java
  64. 0 22
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportProcessVO.java
  65. 0 115
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportRespVO.java
  66. 0 82
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportSaveReqVO.java
  67. 0 106
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/information/IotInformationDbController.java
  68. 0 48
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/information/vo/IotInformationDbPageReqVO.java
  69. 0 58
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/information/vo/IotInformationDbRespVO.java
  70. 0 39
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/information/vo/IotInformationDbSaveReqVO.java
  71. 0 156
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/item/IotInspectItemController.java
  72. 0 47
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/item/vo/IotInspectItemPageReqVO.java
  73. 0 75
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/item/vo/IotInspectItemRespVO.java
  74. 0 59
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/item/vo/IotInspectItemSaveReqVO.java
  75. 0 560
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/IotInspectOrderController.java
  76. 0 194
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/IotInspectOrderDetailController.java
  77. 0 37
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/device/IotInspectOrderDevicePageReqVO.java
  78. 0 43
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/device/IotInspectOrderDeviceRespVO.java
  79. 0 36
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/device/IotInspectOrderDeviceSaveReqVO.java
  80. 0 14
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectDeviceVo.java
  81. 0 53
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderDetailPageReqVO.java
  82. 0 66
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderDetailRespVO.java
  83. 0 43
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderDetailSaveReqVO.java
  84. 0 47
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderPageReqVO.java
  85. 0 66
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderRespVO.java
  86. 0 38
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderSaveReqVO.java
  87. 0 42
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotReportInspectOrderRespVO.java
  88. 0 138
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/plan/IotInspectPlanController.java
  89. 0 50
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/plan/vo/IotInspectPlanPageReqVO.java
  90. 0 72
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/plan/vo/IotInspectPlanRespVO.java
  91. 0 55
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/plan/vo/IotInspectPlanSaveReqVO.java
  92. 0 137
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/route/IotInspectRouteController.java
  93. 0 50
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/route/vo/IotInspectRoutePageReqVO.java
  94. 0 67
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/route/vo/IotInspectRouteRespVO.java
  95. 0 50
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/route/vo/IotInspectRouteSaveReqVO.java
  96. 0 94
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotattachment/IotAttachmentController.java
  97. 0 54
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotattachment/vo/IotAttachmentPageReqVO.java
  98. 0 55
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotattachment/vo/IotAttachmentRespVO.java
  99. 0 41
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotattachment/vo/IotAttachmentSaveReqVO.java
  100. 0 193
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotbom/IotBomController.java

+ 0 - 24
yudao-module-pms/pom.xml

@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>yudao</artifactId>
-        <groupId>cn.iocoder.boot</groupId>
-        <version>${revision}</version>
-    </parent>
-    <modules>
-        <module>yudao-module-pms-api</module>
-        <module>yudao-module-pms-biz</module>
-        <module>yudao-module-pms-abc</module>
-    </modules>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>yudao-module-pms</artifactId>
-    <packaging>pom</packaging>
-
-    <name>${project.artifactId}</name>
-    <description>
-    </description>
-
-</project>

+ 0 - 53
yudao-module-pms/yudao-module-pms-abc/pom.xml

@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>cn.iocoder.boot</groupId>
-        <artifactId>yudao-module-pms</artifactId>
-        <version>2.4.2-jdk8-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>yudao-module-pms-abc</artifactId>
-
-    <properties>
-        <maven.compiler.source>8</maven.compiler.source>
-        <maven.compiler.target>8</maven.compiler.target>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.eclipse.paho</groupId>
-            <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
-            <version>1.2.5</version>
-        </dependency>
-
-        <!-- Spring 集成 MQTT -->
-        <dependency>
-            <groupId>org.springframework.integration</groupId>
-            <artifactId>spring-integration-mqtt</artifactId>
-            <version>5.5.20</version>
-        </dependency>
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-common</artifactId>
-            <version>2.4.2-jdk8-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot</artifactId>
-            <version>2.7.18</version>
-        </dependency>
-        <!--        <dependency>-->
-<!--            <groupId>org.springframework.boot</groupId>-->
-<!--            <artifactId>spring-boot</artifactId>-->
-<!--        </dependency>-->
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-module-pms-biz</artifactId>
-            <version>2.4.2-jdk8-SNAPSHOT</version>
-        </dependency>
-    </dependencies>
-
-</project>

+ 0 - 26
yudao-module-pms/yudao-module-pms-abc/src/main/java/cn/iocoder/yudao/module/pms/abc/config/DeviceMqttService.java

@@ -1,26 +0,0 @@
-package cn.iocoder.yudao.module.pms.abc.config;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.PostConstruct;
-
-@Slf4j
-@Service
-public class DeviceMqttService {
-    @Autowired
-    private MqttClientManager mqttClientManager;
-
-    @PostConstruct
-    public void initDeviceSubscription() {
-        // 批量订阅多个设备 Topic(即使启动时设备未在线,后续上线也能接收消息)
-        String[] deviceTopics = {
-                "/649/YF6660355/property/post"
-        };
-        mqttClientManager.batchSubscribe(deviceTopics);
-
-        // 动态新增单个设备订阅
-//        mqttClientManager.subscribe("/636/YF652/property/post");
-    }
-}

+ 0 - 476
yudao-module-pms/yudao-module-pms-abc/src/main/java/cn/iocoder/yudao/module/pms/abc/config/MqttClientManager.java

@@ -1,476 +0,0 @@
-package cn.iocoder.yudao.module.pms.abc.config;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.date.LocalDateTimeUtil;
-import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
-import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
-import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
-import cn.iocoder.yudao.module.pms.constant.PmsConstants;
-import cn.iocoder.yudao.module.pms.controller.admin.alarm.vo.IotAlarmRecordPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.alarm.vo.WsTdPropertyVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceperson.vo.IotDevicePersonPageReqVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.alarm.IotAlarmRecordDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.alarm.IotAlarmSettingDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotdeviceperson.IotDevicePersonDO;
-import cn.iocoder.yudao.module.pms.dal.mysql.IotDeviceMapper;
-import cn.iocoder.yudao.module.pms.dal.mysql.alarm.IotAlarmRecordMapper;
-import cn.iocoder.yudao.module.pms.dal.mysql.alarm.IotAlarmSettingMapper;
-import cn.iocoder.yudao.module.pms.message.PmsMessage;
-import cn.iocoder.yudao.module.pms.service.iotdeviceperson.IotDevicePersonService;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import com.alibaba.fastjson.JSON;
-import com.google.common.collect.ImmutableList;
-import lombok.extern.slf4j.Slf4j;
-import org.eclipse.paho.client.mqttv3.*;
-import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.annotation.Resource;
-import java.nio.charset.StandardCharsets;
-import java.time.LocalDateTime;
-import java.time.temporal.ChronoUnit;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-@Slf4j
-@Component
-public class MqttClientManager {
-    @Autowired
-    private MqttProperties mqttProperties;
-
-    private MqttClient mqttClient;
-    // 存储「需要订阅的 Topic + QoS」(核心:重连时重新订阅)
-    private final ConcurrentHashMap<String, Integer> needSubscribeTopics = new ConcurrentHashMap<>();
-    // 连接重试线程池(避免重复创建)
-    private final ScheduledExecutorService connectRetryExecutor = Executors.newSingleThreadScheduledExecutor();
-
-    /**
-     * 初始化 MQTT 连接
-     */
-    @PostConstruct
-    public void init() {
-        // 初始化连接
-        connectMqtt();
-    }
-
-    /**
-     * 建立 MQTT 连接(抽离独立方法,方便重试/重连调用)
-     */
-    private void connectMqtt() {
-        // 若已连接,直接返回
-        if (mqttClient != null && mqttClient.isConnected()) {
-            log.warn("MQTT 客户端已处于连接状态,跳过连接");
-            return;
-        }
-
-        try {
-            // 1. 生成客户端ID(避免重复)
-            String clientId = mqttProperties.getClientIdPrefix() + UUID.randomUUID().toString().replace("-", "");
-            MemoryPersistence persistence = new MemoryPersistence();
-
-            // 2. 创建 MQTT 客户端
-            mqttClient = new MqttClient(mqttProperties.getHost(), clientId, persistence);
-
-            // 3. 配置连接参数
-            MqttConnectOptions connectOptions = new MqttConnectOptions();
-            connectOptions.setCleanSession(mqttProperties.isCleanSession());
-            connectOptions.setUserName(mqttProperties.getUsername());
-            connectOptions.setPassword(mqttProperties.getPassword().toCharArray());
-            connectOptions.setConnectionTimeout(mqttProperties.getConnectTimeout() / 1000); // 单位:秒
-            connectOptions.setAutomaticReconnect(true); // 开启自动重连
-            connectOptions.setMaxReconnectDelay(mqttProperties.getReconnectPeriod()); // 最大重连延迟
-
-            // 4. 设置回调(核心:重连成功后重新订阅)
-            mqttClient.setCallback(new MqttCallbackExtended() {
-                // 重连/首次连接成功回调(关键:MqttCallbackExtended 才有的方法)
-                @Override
-                public void connectComplete(boolean reconnect, String serverURI) {
-                    if (reconnect) {
-                        log.info("MQTT 重连成功,服务器地址:{}", serverURI);
-                    } else {
-                        log.info("MQTT 首次连接成功,服务器地址:{}", serverURI);
-                    }
-                    // 无论首次连接还是重连,都强制重新订阅所有 Topic(避免丢失)
-                    subscribeAllNeededTopics();
-                }
-
-                // 连接断开回调
-                @Override
-                public void connectionLost(Throwable cause) {
-                    log.error("MQTT 连接断开,原因:{}", cause.getMessage(), cause);
-                }
-
-                // 消息到达回调
-                @Override
-                public void messageArrived(String topic, MqttMessage message) throws Exception {
-                    handleReceivedMessage(topic, message);
-                }
-
-                // 消息发布完成回调
-                @Override
-                public void deliveryComplete(IMqttDeliveryToken token) {
-                    // 无需处理发布回调(当前仅订阅)
-                }
-            });
-
-            // 5. 建立连接
-            mqttClient.connect(connectOptions);
-            log.info("MQTT 客户端连接成功,客户端ID:{}", clientId);
-
-        } catch (MqttException e) {
-            log.error("MQTT 连接失败,错误码:{},5秒后重试", e.getReasonCode(), e);
-            // 连接失败,5秒后重试
-            connectRetryExecutor.schedule(this::connectMqtt, 5, TimeUnit.SECONDS);
-        }
-    }
-
-    /**
-     * 批量订阅 Topic(核心:先记录,再订阅)
-     * @param topics 要订阅的 Topic 数组
-     */
-    public void batchSubscribe(String[] topics) {
-        batchSubscribe(topics, mqttProperties.getQos());
-    }
-
-    /**
-     * 批量订阅 Topic(指定 QoS)
-     * @param topics 要订阅的 Topic 数组
-     * @param qos QoS 级别(0/1/2)
-     */
-    public void batchSubscribe(String[] topics, int qos) {
-        if (topics == null || topics.length == 0) {
-            log.warn("批量订阅的 Topic 列表为空,跳过");
-            return;
-        }
-
-        // 1. 先记录需要订阅的 Topic(持久化,重连时使用)
-        for (String topic : topics) {
-            if (topic == null || topic.trim().isEmpty()) {
-                log.warn("跳过空的 Topic 订阅");
-                continue;
-            }
-            needSubscribeTopics.put(topic.trim(), qos);
-            log.debug("已记录需要订阅的 Topic:{},QoS:{}", topic, qos);
-        }
-
-        // 2. 立即订阅(如果当前已连接)
-        if (mqttClient != null && mqttClient.isConnected()) {
-            subscribeTopics(topics, qos);
-        } else {
-            log.warn("MQTT 客户端未连接,已记录 Topic 待连接后自动订阅:{}", Arrays.toString(topics));
-        }
-    }
-
-    /**
-     * 单个订阅 Topic
-     * @param topic 要订阅的 Topic
-     */
-    public void subscribe(String topic) {
-        subscribe(topic, mqttProperties.getQos());
-    }
-
-    /**
-     * 单个订阅 Topic(指定 QoS)
-     * @param topic 要订阅的 Topic
-     * @param qos QoS 级别
-     */
-    public void subscribe(String topic, int qos) {
-        if (topic == null || topic.trim().isEmpty()) {
-            log.warn("订阅的 Topic 为空,跳过");
-            return;
-        }
-        topic = topic.trim();
-
-        // 1. 记录需要订阅的 Topic
-        needSubscribeTopics.put(topic, qos);
-
-        // 2. 立即订阅(如果已连接)
-        if (mqttClient != null && mqttClient.isConnected()) {
-            try {
-                mqttClient.subscribe(topic, qos);
-                log.info("MQTT 订阅 Topic 成功:{},QoS:{}", topic, qos);
-            } catch (MqttException e) {
-                log.error("MQTT 订阅 Topic 失败:{},QoS:{}", topic, qos, e);
-            }
-        } else {
-            log.warn("MQTT 客户端未连接,已记录 Topic 待连接后自动订阅:{}", topic);
-        }
-    }
-
-    /**
-     * 取消单个 Topic 订阅
-     * @param topic 要取消的 Topic
-     */
-    public void unsubscribe(String topic) {
-        if (topic == null || topic.trim().isEmpty()) {
-            log.warn("取消订阅的 Topic 为空,跳过");
-            return;
-        }
-        topic = topic.trim();
-
-        // 1. 移除需要订阅的记录
-        needSubscribeTopics.remove(topic);
-
-        // 2. 立即取消订阅(如果已连接)
-        if (mqttClient != null && mqttClient.isConnected()) {
-            try {
-                mqttClient.unsubscribe(topic);
-                log.info("MQTT 取消订阅 Topic 成功:{}", topic);
-            } catch (MqttException e) {
-                log.error("MQTT 取消订阅 Topic 失败:{}", topic, e);
-            }
-        } else {
-            log.warn("MQTT 客户端未连接,已移除 Topic 订阅记录:{}", topic);
-        }
-    }
-
-    /**
-     * 订阅所有已记录的 Topic(核心:重连/首次连接时调用)
-     */
-    private void subscribeAllNeededTopics() {
-        if (needSubscribeTopics.isEmpty()) {
-            log.debug("无需要订阅的 Topic,跳过重订阅");
-            return;
-        }
-        if (mqttClient == null || !mqttClient.isConnected()) {
-            log.warn("MQTT 未连接,无法订阅 Topic");
-            return;
-        }
-
-        // 拆分 Topic 和 QoS 数组
-        String[] topics = needSubscribeTopics.keySet().toArray(new String[0]);
-        int[] qosArr = needSubscribeTopics.values().stream().mapToInt(Integer::intValue).toArray();
-
-        try {
-            // 强制订阅(即使已订阅,重复调用也不会报错)
-            mqttClient.subscribe(topics, qosArr);
-            log.info("MQTT 批量订阅/重订阅成功,共 {} 个 Topic:{}", topics.length, Arrays.toString(topics));
-        } catch (MqttException e) {
-            log.error("MQTT 重订阅 Topic 失败,5秒后重试", e);
-            // 订阅失败,5秒后重试
-            connectRetryExecutor.schedule(this::subscribeAllNeededTopics, 5, TimeUnit.SECONDS);
-        }
-    }
-
-    /**
-     * 直接订阅指定 Topic 数组(底层调用)
-     */
-    private void subscribeTopics(String[] topics, int qos) {
-        int[] qosArr = new int[topics.length];
-        Arrays.fill(qosArr, qos);
-        try {
-            mqttClient.subscribe(topics, qosArr);
-            log.info("MQTT 批量订阅成功,Topic 列表:{},QoS:{}", Arrays.toString(topics), qos);
-        } catch (MqttException e) {
-            log.error("MQTT 批量订阅失败,Topic 列表:{}", Arrays.toString(topics), e);
-        }
-    }
-
-    /**
-     * 处理收到的 MQTT 消息(核心业务逻辑)
-     */
-    private void handleReceivedMessage(String topic, MqttMessage message) {
-        try {
-            // 1. 基础校验:是否是需要处理的 Topic
-            if (!needSubscribeTopics.containsKey(topic)) {
-                log.warn("收到未订阅的 Topic 消息,忽略处理:{}", topic);
-                return;
-            }
-
-            // 2. 解析消息体(指定 UTF-8 编码,避免乱码)
-            String payload = new String(message.getPayload(), StandardCharsets.UTF_8);
-            log.debug("收到 MQTT 消息,Topic:{},内容:{}", topic, payload);
-
-            // 3. 结构化解析(根据实际消息格式调整)
-            String message1 = JSON.parseObject(payload, String.class);
-
-            //分发逻辑处理
-            String[] split = topic.split("/");
-            handleReceivedMessagePms(split[2], message1);
-
-        } catch (Exception e) {
-            log.error("处理 MQTT 消息失败,Topic:{}", topic, e);
-        }
-    }
-
-    @Resource
-    private IotDeviceMapper iotDeviceMapper;
-    @Resource
-    private IotAlarmSettingMapper iotAlarmSettingMapper;
-    @Resource
-    private IotAlarmRecordMapper iotAlarmRecordMapper;
-    @Resource
-    private IotDevicePersonService iotDevicePersonService;
-    @Resource
-    private AdminUserApi adminUserApi;
-    @Resource
-    private PmsMessage pmsMessage;
-
-    @TenantIgnore
-    private void handleReceivedMessagePms(String clientId, String message) {
-        try {
-            if (!message.startsWith("【连接成功】")){
-                List<WsTdPropertyVO> wsTdPropertyVOS = JSON.parseArray(message, WsTdPropertyVO.class);
-                //todo websocket
-                TenantUtils.executeIgnore(() ->{
-                    List<IotDeviceDO> iotDeviceDOS = iotDeviceMapper.selectByCodeIn(ImmutableList.of(clientId));
-                    if (CollUtil.isNotEmpty(iotDeviceDOS)) {
-                        IotDeviceDO iotDeviceDO = iotDeviceDOS.get(0);
-                        List<IotAlarmSettingDO> alarms = iotAlarmSettingMapper.selectList("device_id", iotDeviceDO.getId());
-                        if (CollUtil.isNotEmpty(alarms)) {//设备赋值了
-                            wsTdPropertyVOS.forEach(wsTdPropertyVO -> {
-                                alarms.stream().filter(e -> e.getPropertyCode().equals(wsTdPropertyVO.getIdentity())).findFirst().ifPresent(alarm -> {
-                                    if (NumberUtils.isConvertibleToDouble(wsTdPropertyVO.getLogValue())&&NumberUtils.isConvertibleToDouble(alarm.getMaxValue())&&
-                                            NumberUtils.isConvertibleToDouble(alarm.getMinValue())){//如果可以被转为数值
-                                        if (Double.parseDouble(wsTdPropertyVO.getLogValue())>Double.parseDouble(alarm.getMaxValue())||
-                                                Double.parseDouble(wsTdPropertyVO.getLogValue())<Double.parseDouble(alarm.getMinValue())) {//大于最大值,小于最小值
-                                            //查找近半小时的该设备该属性是否有过告警
-                                            IotAlarmRecordPageReqVO pageReqVO = new IotAlarmRecordPageReqVO();
-                                            pageReqVO.setDeviceCode(clientId);
-                                            pageReqVO.setDeviceProperty(wsTdPropertyVO.getIdentity());
-                                            LocalDateTime offset = LocalDateTimeUtil.offset(LocalDateTime.now(), -30L, ChronoUnit.MINUTES);
-                                            LocalDateTime[] createTime = new LocalDateTime[]{offset, LocalDateTime.now()};
-                                            pageReqVO.setCreateTime(createTime);
-                                            List<IotAlarmRecordDO> iotAlarmRecordDOS = iotAlarmRecordMapper.selectListAlarm(pageReqVO);
-                                            if (CollUtil.isEmpty(iotAlarmRecordDOS)) {//如果空的话报警并且插入
-                                                IotAlarmRecordDO iotAlarmRecordDO = new IotAlarmRecordDO();
-                                                iotAlarmRecordDO.setDeviceCode(clientId);
-                                                iotAlarmRecordDO.setDeviceProperty(wsTdPropertyVO.getIdentity());
-                                                iotAlarmRecordDO.setAlarmTime(DateUtil.now());
-                                                iotAlarmRecordDO.setAlarmValue(wsTdPropertyVO.getLogValue());
-                                                iotAlarmRecordDO.setDeleted(false);
-                                                iotAlarmRecordMapper.insert(iotAlarmRecordDO);
-                                                //发送告警消息通知
-                                                IotDevicePersonPageReqVO personPageReqVO = new IotDevicePersonPageReqVO();
-                                                personPageReqVO.setDeviceIds(ImmutableList.of(iotDeviceDO.getId()));
-                                                List<IotDevicePersonDO> persons = iotDevicePersonService.getPersonsByDeviceIds(personPageReqVO);
-                                                if (CollUtil.isNotEmpty(persons)) {
-                                                    AdminUserRespDTO user = adminUserApi.getUser(persons.get(0).getPersonId());
-                                                    if (Objects.nonNull(user)) {
-                                                        pmsMessage.sendMessage(iotDeviceDO.getId(), iotDeviceDO.getDeviceCode()+iotDeviceDO.getDeviceName()+","+wsTdPropertyVO.getModelName(), PmsConstants.ALARM_MESSAGE, user.getId(), user.getMobile());
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                });
-                            });
-                        } else {//设备没赋值,就去找分类的max及min值
-                            List<IotAlarmSettingDO> flAlarms = iotAlarmSettingMapper.selectList("classify_id", iotDeviceDO.getAssetClass());
-                            if (CollUtil.isNotEmpty(flAlarms)) {
-                                wsTdPropertyVOS.forEach(wsTdPropertyVO -> {
-                                    flAlarms.stream().filter(e -> e.getPropertyCode().equals(wsTdPropertyVO.getIdentity())).findFirst().ifPresent(alarm -> {
-                                        if (NumberUtils.isConvertibleToDouble(wsTdPropertyVO.getLogValue())&&NumberUtils.isConvertibleToDouble(alarm.getMaxValue())&&
-                                                NumberUtils.isConvertibleToDouble(alarm.getMinValue())){//如果可以被转为数值
-                                            if (Double.parseDouble(wsTdPropertyVO.getLogValue())>Double.parseDouble(alarm.getMaxValue())||
-                                                    Double.parseDouble(wsTdPropertyVO.getLogValue())<Double.parseDouble(alarm.getMinValue())) {//大于最大值,小于最小值
-                                                //查找近半小时的该设备该属性是否有过告警
-                                                IotAlarmRecordPageReqVO pageReqVO = new IotAlarmRecordPageReqVO();
-                                                pageReqVO.setDeviceCode(clientId);
-                                                pageReqVO.setDeviceProperty(wsTdPropertyVO.getIdentity());
-                                                LocalDateTime offset = LocalDateTimeUtil.offset(LocalDateTime.now(), 30L, ChronoUnit.MINUTES);
-                                                LocalDateTime[] createTime = new LocalDateTime[]{offset, LocalDateTime.now()};
-                                                pageReqVO.setCreateTime(createTime);
-                                                List<IotAlarmRecordDO> iotAlarmRecordDOS = iotAlarmRecordMapper.selectListAlarm(pageReqVO);
-                                                if (CollUtil.isEmpty(iotAlarmRecordDOS)) {//如果空的话报警并且插入
-                                                    IotAlarmRecordDO iotAlarmRecordDO = new IotAlarmRecordDO();
-                                                    iotAlarmRecordDO.setDeviceCode(clientId);
-                                                    iotAlarmRecordDO.setDeviceProperty(wsTdPropertyVO.getIdentity());
-                                                    iotAlarmRecordDO.setAlarmTime(DateUtil.now());
-                                                    iotAlarmRecordDO.setAlarmValue(wsTdPropertyVO.getLogValue());
-                                                    iotAlarmRecordDO.setDeleted(false);
-                                                    iotAlarmRecordMapper.insert(iotAlarmRecordDO);
-                                                    //发送告警消息通知
-                                                    IotDevicePersonPageReqVO personPageReqVO = new IotDevicePersonPageReqVO();
-                                                    personPageReqVO.setDeviceIds(ImmutableList.of(iotDeviceDO.getId()));
-                                                    List<IotDevicePersonDO> persons = iotDevicePersonService.getPersonsByDeviceIds(personPageReqVO);
-                                                    if (CollUtil.isNotEmpty(persons)) {
-                                                        AdminUserRespDTO user = adminUserApi.getUser(persons.get(0).getPersonId());
-                                                        if (Objects.nonNull(user)) {
-                                                            pmsMessage.sendMessage(iotDeviceDO.getId(), iotDeviceDO.getDeviceCode()+iotDeviceDO.getDeviceName()+","+wsTdPropertyVO.getModelName(), PmsConstants.ALARM_MESSAGE, user.getId(), user.getMobile());
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    });
-                                });
-                            }
-                        }
-                    }});
-            }
-        } catch (Exception e) {
-            log.error("❌ [{}] 处理消息失败", clientId, e);
-        }
-    }
-
-    // ---------------------- 内部类:消息结构 ----------------------
-    private static class MqttDeviceMessage {
-        private String deviceCode; // 设备编码
-        private double value;      // 设备数值
-        private long timestamp;    // 时间戳
-
-        // Getter & Setter
-        public String getDeviceCode() { return deviceCode; }
-        public void setDeviceCode(String deviceCode) { this.deviceCode = deviceCode; }
-        public double getValue() { return value; }
-        public void setValue(double value) { this.value = value; }
-        public long getTimestamp() { return timestamp; }
-        public void setTimestamp(long timestamp) { this.timestamp = timestamp; }
-
-        @Override
-        public String toString() {
-            return "MqttDeviceMessage{" +
-                    "deviceCode='" + deviceCode + '\'' +
-                    ", value=" + value +
-                    ", timestamp=" + timestamp +
-                    '}';
-        }
-    }
-
-    // ---------------------- 资源销毁 ----------------------
-    @PreDestroy
-    public void destroy() {
-        // 关闭重试线程池
-        connectRetryExecutor.shutdown();
-        try {
-            if (!connectRetryExecutor.awaitTermination(3, TimeUnit.SECONDS)) {
-                connectRetryExecutor.shutdownNow();
-            }
-        } catch (InterruptedException e) {
-            connectRetryExecutor.shutdownNow();
-        }
-
-        // 断开 MQTT 连接
-        if (mqttClient != null && mqttClient.isConnected()) {
-            try {
-                mqttClient.disconnect();
-                mqttClient.close();
-                needSubscribeTopics.clear();
-                log.info("MQTT 客户端已断开连接,资源已清理");
-            } catch (MqttException e) {
-                log.error("MQTT 断开连接失败", e);
-            }
-        }
-    }
-
-    // ---------------------- 辅助方法 ----------------------
-    /**
-     * 获取 MQTT 连接状态
-     */
-    public boolean isConnected() {
-        return mqttClient != null && mqttClient.isConnected();
-    }
-}

+ 0 - 19
yudao-module-pms/yudao-module-pms-abc/src/main/java/cn/iocoder/yudao/module/pms/abc/config/MqttProperties.java

@@ -1,19 +0,0 @@
-package cn.iocoder.yudao.module.pms.abc.config;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-@Data
-@Component
-@ConfigurationProperties(prefix = "spring.mqtt")
-public class MqttProperties {
-    private String host;
-    private String username;
-    private String password;
-    private String clientIdPrefix = "spring-boot-mqtt-";
-    private boolean cleanSession = true;
-    private int reconnectPeriod = 5000; // 重连延迟(毫秒)
-    private int connectTimeout = 10000; // 连接超时(毫秒)
-    private int qos = 0; // 默认 QoS 级别
-}

+ 0 - 25
yudao-module-pms/yudao-module-pms-api/pom.xml

@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>yudao-module-pms</artifactId>
-        <groupId>cn.iocoder.boot</groupId>
-        <version>${revision}</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>yudao-module-pms-api</artifactId>
-    <packaging>jar</packaging>
-
-    <name>${project.artifactId}</name>
-    <description>
-    </description>
-
-    <dependencies>
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-common</artifactId>
-        </dependency>
-    </dependencies>
-
-</project>

+ 0 - 37
yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/AttachmentCategoryEnum.java

@@ -1,37 +0,0 @@
-package cn.iocoder.yudao.module.pms.enums;
-
-/**
- * @description: 附件类别
- * @author: ruiqi
- * @create: 2025-10-20
- **/
-public enum AttachmentCategoryEnum {
-    MAINTENANCE("MAINTENANCE", "保养", 1),
-    REPAIR("REPAIR", "维修", 2),
-    INSPECTION("INSPECTION", "巡检", 3),
-    OPERATION_RECORD("OPERATION_RECORD", "运行记录", 4),
-    DAILY_REPORT("DAILY_REPORT", "日报", 5),
-    QHSE("QHSE", "QHSE", 6);
-
-    private String code;
-    private String msg;
-    private Integer num;
-
-    AttachmentCategoryEnum(String code, String msg, Integer num) {
-        this.code = code;
-        this.msg = msg;
-        this.num = num;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-    public Integer getNum() {
-        return num;
-    }
-}

+ 0 - 36
yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/AttachmentTypeEnum.java

@@ -1,36 +0,0 @@
-package cn.iocoder.yudao.module.pms.enums;
-
-/**
- * @description: 附件 细分项
- * @author: ruiqi
- * @create: 2025-10-20
- **/
-public enum AttachmentTypeEnum {
-    EXTERNAL_RENTAL("EXTERNAL_RENTAL", "外租设备", 1),
-    CONSTRUCTION_DESIGN("CONSTRUCTION_DESIGN", "工程设计", 2),
-    GEOLOGICAL_DESIGN("GEOLOGICAL_DESIGN", "地质设计", 3),
-    COMPLETION_REPORT("COMPLETION_REPORT", "完井报告", 4),
-    MAINTENANCE_STANDARD("MAINTENANCE_STANDARD", "保养标准", 5);
-
-    private String code;
-    private String msg;
-    private Integer num;
-
-    AttachmentTypeEnum(String code, String msg, Integer num) {
-        this.code = code;
-        this.msg = msg;
-        this.num = num;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-    public Integer getNum() {
-        return num;
-    }
-}

+ 0 - 129
yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/ErrorCodeConstant.java

@@ -1,129 +0,0 @@
-package cn.iocoder.yudao.module.pms.enums;
-
-import cn.iocoder.yudao.framework.common.exception.ErrorCode;
-
-public interface ErrorCodeConstant{
-    ErrorCode IOT_PRODUCT_CLASSIFY_NOT_EXISTS = new ErrorCode(100, "设备分类不存在");
-    ErrorCode IOT_DEVICE_NOT_EXISTS = new ErrorCode(101, "设备台账不存在");
-    ErrorCode IOT_DEPT_NOT_SELECTED = new ErrorCode(101, "请选择施工队伍");
-    ErrorCode IOT_DEVICE_EXISTED = new ErrorCode(101, "设备台账已存在");
-    ErrorCode NOT_EXISTS = new ErrorCode( 122, "供应商主数据不存在");
-    ErrorCode SUPPLIER_UPDATE_AUDIT_STATUS_FAIL_NOT_PROCESS = new ErrorCode(1-060-000-002, "更新供应商审核状态失败,原因:供应商不是审核中状态");
-    ErrorCode NAME_EXISTED = new ErrorCode( 133, "名称重复");
-    ErrorCode IOT_MODEL_NOT_EXISTS = new ErrorCode(102, "规格型号不存在");
-    ErrorCode IOT_MATERIAL_GROUP_NOT_EXISTS = new ErrorCode(103, "物料组不存在");
-    ErrorCode IOT_MATERIAL_NOT_EXISTS = new ErrorCode(104, "物料不存在");
-    ErrorCode IOT_DEVICE_TEMPLATE_ATTRS_NOT_EXISTS = new ErrorCode(105, "设备模板属性不存在");
-    ErrorCode IOT_DEVICE_TEMPLATE_ATTRS_EXISTS = new ErrorCode(152, "设备模板属性已经存在");
-    ErrorCode IOT_DEVICE_TEMPLATE_NOT_EXISTS = new ErrorCode(106, "设备模板不存在");
-    ErrorCode IOT_BOM_NOT_EXISTS = new ErrorCode(107, "BOM 关系不存在");
-    ErrorCode IOT_DEVICE_MATERIAL_NOT_EXISTS = new ErrorCode(108, "设备BOM物料关联不存在");
-    ErrorCode IOT_DEVICE_BOM_NOT_EXISTS = new ErrorCode(109, "设备BOM 关系不存在");
-    ErrorCode IOT_INFO_NOT_EXISTS = new ErrorCode( 122, "资料数据不存在");
-    ErrorCode IOT_TREE_NOT_EXISTS = new ErrorCode(122, "pms树不存在");
-    ErrorCode IOT_COMMON_BOM_MATERIAL_NOT_EXISTS = new ErrorCode(123, "设备分类公共BOM挂载物料关联不存在");
-    ErrorCode IOT_COMMON_BOM_MATERIAL_EXISTS = new ErrorCode(127, "当前BOM节点已经存在此物料");
-    ErrorCode IOT_DEVICE_CATEGORY_TEMPLATE_NOT_EXISTS = new ErrorCode(124, "设备分类属性公用模板不存在");
-    ErrorCode IOT_DEVICE_CATEGORY_TEMPLATE_ATTRS_NOT_EXISTS = new ErrorCode(125, "设备分类公共模板属性不存在");
-    ErrorCode IOT_INFO_EXISTS = new ErrorCode(126, "存在子分类");
-    ErrorCode IOT_FAILURE_REPORT_NOT_EXISTS = new ErrorCode(127, "故障上报不存在");
-    ErrorCode IOT_MAINTAIN_NOT_EXISTS = new ErrorCode(128, "维修工单不存在");
-    ErrorCode IOT_MAINTAIN_RUNNING_EXISTS = new ErrorCode(1280, "存在未完成的维修工单");
-    ErrorCode IOT_LOCK_STOCK_NOT_EXISTS = new ErrorCode(129, "PMS 本地 库存不存在");
-    ErrorCode IOT_OUTBOUND_NOT_EXISTS = new ErrorCode(130, "PMS 出库不存在");
-    ErrorCode IOT_SAP_STOCK_NOT_EXISTS = new ErrorCode(131, "PMS SAP 库存(通用库存/项目部库存)不存在");
-    ErrorCode IOT_MAINTAIN_MATERIAL_NOT_EXISTS = new ErrorCode(129, "工单物料不存在");
-    ErrorCode IOT_INFORMATION_DB_NOT_EXISTS = new ErrorCode(130, "知识库不存在");
-    ErrorCode IOT_LOCK_STOCK_FUSHU = new ErrorCode(131, "超过本地库存");
-    ErrorCode IOT_MAINTENANCE_SAME_DEVICE_EXISTS = new ErrorCode(163, "已经存在相同设备的保养计划 {}");
-    ErrorCode IOT_MAIN_PLAN_ORDER_EXISTS = new ErrorCode(163, "请先维护保养项关联的保养计划或保养工单");
-    ErrorCode IOT_MAINTENANCE_PLAN_NOT_EXISTS = new ErrorCode(133, "保养计划明细不存在");
-    ErrorCode IOT_MAINTENANCE_DETAILS_NOT_EXISTS = new ErrorCode(134, "保养计划明细不存在");
-    ErrorCode IOT_STORAGE_AREA_NOT_EXISTS = new ErrorCode(131, "PMS 库区不存在");
-    ErrorCode IOT_SHELVES_NOT_EXISTS = new ErrorCode(132, "PMS 货架不存在");
-    ErrorCode IOT_CARGO_LOCATION_NOT_EXISTS = new ErrorCode(133, "PMS 货位不存在");
-    ErrorCode IOT_INSPECT_ITEM_NOT_EXISTS = new ErrorCode(134, "巡检项不存在");
-    ErrorCode IOT_MAINTENANCE_BOM_NOT_EXISTS = new ErrorCode(135, "PMS 保养计划明细BOM不存在");
-    ErrorCode IOT_MAIN_PLAN_BOM_MATERIAL_NOT_EXISTS = new ErrorCode(136, "PMS 保养计划明细设备BOM挂载物料关联不存在");
-    ErrorCode IOT_INSPECT_ROUTE_NOT_EXISTS = new ErrorCode(134, "巡检项不存在");
-    ErrorCode IOT_INSPECT_PLAN_NOT_EXISTS = new ErrorCode(135, "巡检计划不存在");
-    ErrorCode IOT_INSPECT_ORDER_NOT_EXISTS = new ErrorCode(136, "巡检工单不存在");
-    ErrorCode IOT_INSPECT_ORDER_DETAIL_NOT_EXISTS = new ErrorCode(137, "巡检工单巡检明细不存在");
-    ErrorCode IOT_MAIN_WORK_ORDER_DETAILS_NOT_EXISTS = new ErrorCode(138, "保养工单详情不存在");
-    ErrorCode IOT_MAIN_WORK_ORDER_BOM_NOT_EXISTS = new ErrorCode(138, "保养工单BOM不存在");
-    ErrorCode IOT_MAIN_WORK_ORDER_BOM_MATERIAL_NOT_EXISTS = new ErrorCode(139,"bom物料不存在");
-    ErrorCode IOT_MAINTENANCE_PLAN_NO_EXISTS = new ErrorCode(140,"维修计划不存在");
-    ErrorCode IOT_MAIN_WORK_ORDER_NOT_EXISTS = new ErrorCode(141,"保养工单不存在");
-    ErrorCode IOT_MAIN_WORK_ORDER_EXECUTED = new ErrorCode(241,"保养工单已执行");
-    ErrorCode IOT_DEVICE_RUN_LOG_NOT_EXISTS = new ErrorCode(142, "设备运行数据记录 中间表不存在");
-    ErrorCode DEVICE_NOT_EXISTS = new ErrorCode(143, "延凡设备不存在");
-    ErrorCode IOT_OPEATION_MODEL_NOT_EXISTS = new ErrorCode(135, "运行记录模板主不存在");
-    ErrorCode IOT_OPEATION_FILL_NOT_EXISTS = new ErrorCode(136, "运行记录填报不存在");
-    ErrorCode IOT_MAINTAIN_MATERIALS_NOT_EXISTS = new ErrorCode(144, "维修工单对应物料不存在");
-    ErrorCode IOT_MAINTAIN_BOM_NOT_EXISTS = new ErrorCode(145, "维修工单对应维修项BOM不存在");
-    ErrorCode THINGS_MODEL_NOT_EXISTS = new ErrorCode(146, "物模型不存在");
-    ErrorCode IOT_MAINTAIN_BOMS_NOT_EXISTS = new ErrorCode(147, "请选择维修工单对应BOM");
-    ErrorCode IOT_SAP_PICKING_LIST_NOT_EXISTS = new ErrorCode(147, "PMS SAP 领料单不存在");
-    ErrorCode IOT_DEVICE_PERSON_NOT_EXISTS = new ErrorCode(148, "设备负责人分配不存在");
-    ErrorCode IOT_DEVICE_STATUS_LOG_NOT_EXISTS = new ErrorCode(149, "设备状态调整日志不存在");
-    ErrorCode IOT_DEVICE_ALLOT_LOG_NOT_EXISTS = new ErrorCode(150, "设备调拨日志不存在");
-    ErrorCode IOT_DEVICE_PERSON_LOG_NOT_EXISTS = new ErrorCode(151, "设备责任人日志不存在");
-    ErrorCode IOT_SAP_SYNC_LOG_NOT_EXISTS = new ErrorCode(153, "操作日志记录 V2 版本不存在");
-    ErrorCode IOT_MATERIAL_REQUISITION_NOT_EXISTS = new ErrorCode(154, "物料领用不存在");
-    ErrorCode IOT_MATERIAL_REQUISITION_DETAIL_NOT_EXISTS = new ErrorCode(155, "PMS 物料领用明细不存在");
-    ErrorCode IOT_PROJECT_INFO_NOT_EXISTS = new ErrorCode(152, "项目信息不存在");
-    ErrorCode IOT_PROJECT_TASK_NOT_EXISTS = new ErrorCode(153, "该任务不存在");
-    ErrorCode IOT_PROJECT_TASK_NOT_RELATED = new ErrorCode(264, "当前部门没有关联项目任务");
-    ErrorCode PRODUCT_EXITS_CHILDREN = new ErrorCode(1_002_004_003, "存在子分类,无法删除");
-    ErrorCode INSPECT_DEVICE_CHANGE = new ErrorCode(154, "设备已调拨");
-    ErrorCode IOT_APP_NOT_EXISTS = new ErrorCode(155, "app版本不存在");
-    ErrorCode IOT_ATTACHMENT_NOT_EXISTS = new ErrorCode(1_002_004_004, "附件不存在");
-    ErrorCode IOT_PROJECT_TASK_SCHEDULE_NOT_EXISTS = new ErrorCode(1_002_004_005, "项目任务时间表/施工进度不存在");
-    ErrorCode IOT_OPERATION_PLAN_NOT_EXISTS = new ErrorCode(156, "运行记录计划不存在");
-    ErrorCode IOT_OPERATION_PLAN_DEV_NOT_EXISTS = new ErrorCode(157, "运行记录计划设备不存在");
-    ErrorCode IOT_PROJECT_TASK_TEMPLATE_NOT_EXISTS = new ErrorCode(257, "项目任务属性模板不存在");
-    ErrorCode IOT_PROJECT_TASK_ATTRS_NOT_EXISTS = new ErrorCode(258, "项目任务扩展属性不存在");
-    ErrorCode IOT_OPEATION_FILL_NOT_EXISTS1 = new ErrorCode(259, "该工单已执行!");
-    ErrorCode IOT_DAILY_REPORT_TEMPLATE_NOT_EXISTS = new ErrorCode(260, "生产日报属性模板不存在");
-    ErrorCode IOT_DAILY_REPORT_ATTRS_NOT_EXISTS = new ErrorCode(261, "日报扩展模板属性不存在");
-    ErrorCode IOT_PROJECT_DAILY_REPORT_NOT_EXISTS = new ErrorCode(262, "项目日报不存在");
-    ErrorCode IOT_RH_DAILY_REPORT_NOT_EXISTS = new ErrorCode(263, "瑞恒日报不存在");
-    ErrorCode IOT_RH_DAILY_REPORT_NO_DATE = new ErrorCode(265, "未传递运行记录生成日期");
-    ErrorCode IOT_RH_DAILY_REPORT_NO_DEPT = new ErrorCode(266, "未传递运行记录所属部门");
-    ErrorCode IOT_RY_DAILY_REPORT_NOT_EXISTS = new ErrorCode(267, "瑞鹰日报不存在");
-    ErrorCode IOT_RY_DAILY_REPORT_CURRENT_DEPTH_NOT_EXISTS = new ErrorCode(268, "未传递运行记录当前井深");
-    ErrorCode IOT_SAP_STOCK_LOG_NOT_EXISTS = new ErrorCode(269, "PMS SAP 库存(sap同步的原始数据日志)不存在");
-    ErrorCode IOT_RD_DAILY_REPORT_NOT_EXISTS = new ErrorCode(270, "瑞都日报不存在");
-    ErrorCode IOT_RD_DAILY_REPORT_EXISTS = new ErrorCode(283, "瑞都日报已经存在");
-    ErrorCode IOT_RD_DAILY_REPORT_ITEM_NOT_EXISTS = new ErrorCode(271, "瑞都日报 (工作量)明细不存在");
-    ErrorCode IOT_DAILY_REPORT_TIME_NOT_EXISTS = new ErrorCode(272, "未传递创建时间查询参数");
-    ErrorCode IOT_DAILY_REPORT_DEPT_NOT_EXISTS = new ErrorCode(273, "未选择项目部");
-    ErrorCode IOT_DEPT_TYPE_NOT_EXISTS = new ErrorCode(274, "部门类型不存在");
-    ErrorCode IOT_CAR_ZHBD_NOT_EXISTS = new ErrorCode(275, "中航北斗车辆表不存在");
-    ErrorCode IOT_DAILY_REPORT_FUEL_NOT_EXISTS = new ErrorCode(276, "日报-油耗不存在");
-    ErrorCode IOT_AUTHENTICATION_NOT_EXISTS = new ErrorCode(277, "认证不存在");
-    ErrorCode IOT_RD_DAILY_REPORT_DETAIL_NOT_EXISTS = new ErrorCode(278, "瑞都日报明细(生产动态拆分)不存在");
-    ErrorCode IOT_RY_DAILY_REPORT_DETAIL_NOT_EXISTS = new ErrorCode(279, "瑞鹰日报明细(生产动态拆分)不存在");
-    ErrorCode IOT_RD_NO_WORK_DAILY_REPORT_EXISTS = new ErrorCode(280, "无工作量日报已经存在");
-    ErrorCode IOT_OPERATION_MEETING_NOT_EXISTS = new ErrorCode(281, "生产运营会不存在");
-    ErrorCode IOT_OPERATION_MEETING_EXISTS = new ErrorCode(281, "当期生产运营会已经存在");
-    ErrorCode IOT_OPERATION_MEETING_DETAIL_NOT_EXISTS = new ErrorCode(282, "生产运营会明细不存在");
-    ErrorCode IOT_OPERATION_MEETING_ATTRS_NOT_EXISTS = new ErrorCode(284, "专业公司工作量扩展属性不存在");
-    ErrorCode IOT_DEVICE_MAX_RUN_LOG_NOT_EXISTS = new ErrorCode(285, "设备运行数据记录最大值不存在");
-    ErrorCode IOT_WEBTOPO_PROJECT_NOT_EXISTS = new ErrorCode(286, "组态项目列不存在");
-    ErrorCode IOT_WEBTOPO_DEVICE_SVGNODE_NOT_EXISTS = new ErrorCode(287, "组态-svg与设备绑定不存在");
-    ErrorCode IOT_WEBTOPO_PROJECT_DEVICE_NOT_EXISTS = new ErrorCode(288, "组态项目关联设备不存在");
-    ErrorCode IOT_WEBTOPO_DEVICE_SVGNODE_EXISTS = new ErrorCode(290, "组态-svg与设备绑定已经存在");
-    ErrorCode IOT_DEVICE_ASSOCIATE_NOT_EXISTS = new ErrorCode(289, "设备关联表(如:瑞都主要设备)不存在");
-    ErrorCode IOT_RY_IMPROVE_DAILY_REPORT_NOT_EXISTS = new ErrorCode(300, "瑞鹰项目启动设备整改不存在");
-    ErrorCode IOT_RY_HI_DAILY_REPORT_NOT_EXISTS = new ErrorCode(400, "瑞鹰历史日报不存在");
-    ErrorCode IOT_RY_IMPROVE_DAILY_REPORT_DETAIL_NOT_EXISTS = new ErrorCode(500, "瑞鹰设备整改日报明细(生产动态拆分)不存在");
-    ErrorCode IOT_FIVE_DAILY_REPORT_NOT_EXISTS = new ErrorCode(600, "5#国日报不存在");
-    ErrorCode IOT_PROJECT_TASK_PLAN_NOT_EXISTS = new ErrorCode(700, "日报任务计划(工作量)不存在");
-    ErrorCode IOT_PROJECT_TASK_PLAN_EXISTS = new ErrorCode(700, "部门当前月份的工作量计划已经存在");
-    /***
-     * 数字油藏
-     */
-    ErrorCode LAS_WELL_NOT_EXISTS = new ErrorCode(1000, "数字油藏LAS数据文件-井信息不存在");
-    ErrorCode LAS_WELL_DATA_NOT_EXISTS = new ErrorCode(1001, "数字油藏LAS数据文件-测井数据不存在");
-}

+ 0 - 34
yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/common/FailureAuditStatusEnum.java

@@ -1,34 +0,0 @@
-package cn.iocoder.yudao.module.pms.enums.common;
-
-import cn.iocoder.yudao.framework.common.core.ArrayValuable;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-
-import java.util.Arrays;
-
-/**
- * 故障上报的审批状态
- *
- * @author phli
- */
-@RequiredArgsConstructor
-@Getter
-public enum FailureAuditStatusEnum implements ArrayValuable<Integer> {
-
-    DRAFT(0, "未提交"),
-    PROCESS(10, "审批中"),
-    APPROVE(20, "审核通过"),
-	REJECT(30, "审核不通过"),
-    CANCEL(40, "已取消");
-
-    private final Integer status;
-    private final String name;
-
-    public static final Integer[] ARRAYS = Arrays.stream(values()).map(FailureAuditStatusEnum::getStatus).toArray(Integer[]::new);
-
-    @Override
-    public Integer[] array() {
-        return ARRAYS;
-    }
-
-}

+ 0 - 40
yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/common/IotDeviceStatusEnum.java

@@ -1,40 +0,0 @@
-package cn.iocoder.yudao.module.pms.enums.common;
-
-import cn.hutool.core.util.StrUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * 设备状态枚举
- *
- * @Auther ruiqi
- * @Date
- */
-public enum IotDeviceStatusEnum {
-    fc("封存"), dby("待保养"), wxz("维修中"), bf("报废"), xz("闲置"), sg("施工"), dq("动迁"), dm("待命"),zddm("驻地待命"),wg("完工"),xcdm("现场待命"),zb("准备"),dwx("待维修"),gcsy("观察使用");
-    private String msg;
-
-    IotDeviceStatusEnum(String msg) {
-        this.msg = msg;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-
-    public static IotDeviceStatusEnum nameOf(String name) {
-        IotDeviceStatusEnum deviceStatusEnum = null;
-        if(!StrUtil.isEmpty(name)) {
-	        try {
-                deviceStatusEnum = IotDeviceStatusEnum.valueOf(name);
-	        } catch (Exception e) {
-	            LOGGER.warn("设备状态不存在", e);
-	        }
-        }
-        return deviceStatusEnum;
-    }
-
-    private static Logger LOGGER = LoggerFactory.getLogger(IotDeviceStatusEnum.class);
-
-}

+ 0 - 30
yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/devicetemplate/DeviceTemplateAttrAccessModeEnum.java

@@ -1,30 +0,0 @@
-package cn.iocoder.yudao.module.pms.enums.devicetemplate;
-
-import cn.iocoder.yudao.framework.common.core.ArrayValuable;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.util.Arrays;
-
-/**
- * 设备模板属性 读取类型枚举
- *
- * @author ahh
- */
-@AllArgsConstructor
-@Getter
-public enum DeviceTemplateAttrAccessModeEnum implements ArrayValuable<String> {
-
-    READ_ONLY("r"),
-    READ_WRITE("rw");
-
-    public static final String[] ARRAYS = Arrays.stream(values()).map(DeviceTemplateAttrAccessModeEnum::getMode).toArray(String[]::new);
-
-    private final String mode;
-
-    @Override
-    public String[] array() {
-        return ARRAYS;
-    }
-
-}

+ 0 - 32
yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/devicetemplate/IotDataSpecsDataTypeEnum.java

@@ -1,32 +0,0 @@
-package cn.iocoder.yudao.module.pms.enums.devicetemplate;
-
-import cn.iocoder.yudao.framework.common.core.ArrayValuable;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.util.Arrays;
-
-/**
- * pms 数据定义的数据类型枚举类
- *
- * @author ruiqi
- */
-@AllArgsConstructor
-@Getter
-public enum IotDataSpecsDataTypeEnum implements ArrayValuable<String> {
-
-    DOUBLE("double"),
-    TEXT("text"),
-    TEXTAREA("textarea"),
-    DATE("date");
-
-    public static final String[] ARRAYS = Arrays.stream(values()).map(IotDataSpecsDataTypeEnum::getDataType).toArray(String[]::new);
-
-    private final String dataType;
-
-    @Override
-    public String[] array() {
-        return ARRAYS;
-    }
-
-}

+ 0 - 156
yudao-module-pms/yudao-module-pms-biz/pom.xml

@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>yudao-module-pms</artifactId>
-        <groupId>cn.iocoder.boot</groupId>
-        <version>${revision}</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <packaging>jar</packaging>
-
-    <artifactId>yudao-module-pms-biz</artifactId>
-
-    <name>${project.artifactId}</name>
-    <description>
-    </description>
-
-    <dependencies>
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-module-pms-api</artifactId>
-            <version>${revision}</version>
-        </dependency>
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-module-bpm-api</artifactId>
-            <version>${revision}</version>
-        </dependency>
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-module-system-api</artifactId>
-            <version>2.4.2-jdk8-SNAPSHOT</version>
-        </dependency>
-        <!-- Web 相关 -->
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-spring-boot-starter-web</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-spring-boot-starter-security</artifactId>
-        </dependency>
-
-        <!-- DB 相关 -->
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-spring-boot-starter-mybatis</artifactId>
-        </dependency>
-
-        <!-- Test 测试相关 -->
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-spring-boot-starter-test</artifactId>
-        </dependency>
-
-        <!-- 工具类相关 -->
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-spring-boot-starter-excel</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-module-supplier-biz</artifactId>
-            <version>2.4.1-jdk8-SNAPSHOT</version>
-            <scope>compile</scope>
-        </dependency>
-        <!-- sip -->
-        <dependency>
-            <groupId>javax.sip</groupId>
-            <artifactId>jain-sip-ri</artifactId>
-            <version>1.3.0-91</version>
-        </dependency>
-        <!-- SAP接口相关 -->
-        <dependency>
-            <groupId>com.sap</groupId>
-            <artifactId>sapjco3</artifactId>
-            <version>3.0.12</version>
-            <scope>system</scope>
-            <systemPath>${project.basedir}/src/main/resources/lib/sapjco3.jar</systemPath>
-        </dependency>
-        <!-- 拼音 -->
-        <dependency>
-            <groupId>com.belerweb</groupId>
-            <artifactId>pinyin4j</artifactId>
-            <version>2.5.1</version>
-        </dependency>
-        <!--TDEngine相关配置-->
-        <!--pom.xml-->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-jdbc</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.taosdata.jdbc</groupId>
-            <artifactId>taos-jdbcdriver</artifactId>
-            <version>3.5.1</version>
-        </dependency>
-        <!--pom.xml-->
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>druid-spring-boot-starter</artifactId>
-            <version>1.2.6</version>
-        </dependency>
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-spring-boot-starter-biz-data-permission</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-spring-boot-starter-biz-data-permission</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-module-supplier-biz</artifactId>
-            <version>2.4.2-jdk8-SNAPSHOT</version>
-            <scope>compile</scope>
-        </dependency>
-        <dependency>
-            <groupId>cn.com.kingbase</groupId>
-            <artifactId>kingbase8</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.liquibase</groupId>
-            <artifactId>liquibase-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>cn.iocoder.boot</groupId>
-            <artifactId>yudao-module-infra-biz</artifactId>
-            <version>2.4.2-jdk8-SNAPSHOT</version>
-            <scope>compile</scope>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.dataformat</groupId>
-            <artifactId>jackson-dataformat-xml</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.eclipse.paho</groupId>
-            <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
-            <version>1.2.5</version>
-        </dependency>
-        <dependency>
-            <groupId>org.flowable</groupId>
-            <artifactId>flowable-engine</artifactId>
-            <version>6.8.0</version>
-            <scope>compile</scope>
-        </dependency>
-        <!--        <dependency>-->
-<!--            <groupId>javax.sip</groupId>-->
-<!--            <artifactId>jain-sip-ri</artifactId>-->
-<!--            <version>1.3.0-91</version>-->
-<!--        </dependency>-->
-    </dependencies>
-
-</project>

+ 0 - 124
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/ThingsModelDTO.java

@@ -1,124 +0,0 @@
-package cn.iocoder.yudao.module.pms;
-
-import lombok.Data;
-
-/**
- * 物模型对象 iot_things_model
- *
- * @author kerwincui
- * @date 2023-01-14
- */
-@Data
-public class ThingsModelDTO {
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 物模型ID
-     */
-    private Long modelId;
-
-    /**
-     * 物模型名称
-     */
-    private String modelName;
-
-    /**
-     * 产品ID
-     */
-    private Long productId;
-
-    /**
-     * 产品名称
-     */
-    private String productName;
-
-    /**
-     * 租户ID
-     */
-    private Long tenantId;
-
-    /**
-     * 租户名称
-     */
-    private String tenantName;
-
-    /**
-     * 标识符,产品下唯一
-     */
-    private String identifier;
-
-    /**
-     * 模型类别(1-属性,2-功能,3-事件)
-     */
-    private Integer type;
-
-    /**
-     * 计算公式
-     */
-    private String formula;
-
-    /**
-     * 数据定义
-     */
-    private String specs;
-
-    /**
-     * 是否图表显示(0-否,1-是)
-     */
-    private Integer isChart;
-
-    /**
-     * 是否历史存储(0-否,1-是)
-     */
-    private Integer isHistory;
-
-    /**
-     * 是否实时监测(0-否,1-是)
-     */
-    private Integer isMonitor;
-
-    /**
-     * 是否分享设备权限(0-否,1-是)
-     */
-    private Integer isSharePerm;
-
-    /**
-     * 是否分享设备权限(0-否,1-是)
-     */
-    private Integer isApp;
-
-    /**
-     * 删除标志(0代表存在 2代表删除)
-     */
-    private String delFlag;
-
-    private String unit;
-
-    private String limitValue;
-
-    /**
-     * 是否只读数据(0-否,1-是)
-     */
-    private Integer isReadonly;
-
-
-    private Integer modelOrder;
-
-    private String value = "";
-
-    private String ts;
-
-    private String serialNumber;
-
-    private Boolean isShadow;
-    /**
-     * 是否可下发指令 0 -不可操作 1-可
-     */
-    private Integer canSend;
-
-    private String ifAlarm;
-
-    private Long alarmSettingId;
-    private String maxValue;
-    private String minValue;
-}

+ 0 - 30
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/annotation/AntiDuplicateSubmit.java

@@ -1,30 +0,0 @@
-package cn.iocoder.yudao.module.pms.annotation;
-
-/**
- * @author yc
- * @version 1.0
- * @className AntiDuplicateSubmit
- * @date 2026/1/8 9:19
- * @description
- */
-
-import java.lang.annotation.*;
-
-/**
- * 接口防重复提交/防刷注解
- * 作用:标记需要防刷的接口,限制指定时间内重复提交
- */
-@Target(ElementType.METHOD)       // 注解仅作用于方法
-@Retention(RetentionPolicy.RUNTIME) // 运行时生效(AOP能读取到)
-@Documented                      // 生成文档时包含该注解
-public @interface AntiDuplicateSubmit {
-    /**
-     * 防刷时间窗口,单位:秒(默认5秒)
-     */
-    long timeout() default 5;
-
-    /**
-     * 重复提交时的提示信息
-     */
-    String message() default "5秒内不允许重复提交,请稍后再试";
-}

+ 0 - 89
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/aspect/AntiDuplicateSubmitAspect.java

@@ -1,89 +0,0 @@
-package cn.iocoder.yudao.module.pms.aspect;
-
-import cn.hutool.core.lang.hash.MurmurHash;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.module.pms.annotation.AntiDuplicateSubmit;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Pointcut;
-import org.aspectj.lang.reflect.MethodSignature;
-import org.springframework.data.redis.core.StringRedisTemplate;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import javax.servlet.http.HttpServletRequest;
-import java.lang.reflect.Method;
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author yc
- * @version 1.0
- * @className AntiDuplicateSubmitAspect
- * @date 2026/1/8 9:21
- * @description
- */
-@Slf4j
-@Aspect
-@Component
-@RequiredArgsConstructor
-public class AntiDuplicateSubmitAspect {
-    private final StringRedisTemplate redisTemplate;
-    private final ObjectMapper objectMapper;
-
-    // 切入点:标注了AntiDuplicateSubmit注解的方法
-    @Pointcut("@annotation(cn.iocoder.yudao.module.pms.annotation.AntiDuplicateSubmit)")
-    public void antiDuplicateSubmitPointcut() {}
-
-    @Around("antiDuplicateSubmitPointcut()")
-    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
-        // 1. 获取注解信息
-        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
-        Method method = signature.getMethod();
-        AntiDuplicateSubmit annotation = method.getAnnotation(AntiDuplicateSubmit.class);
-        long timeout = annotation.timeout();
-        String message = annotation.message();
-
-        // 2. 获取请求信息
-        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
-        HttpServletRequest request = attributes.getRequest();
-        String requestURI = request.getRequestURI();
-
-        // 3. 生成请求唯一标识(请求URI + 参数哈希)
-        String requestBody = "";
-        Object[] args = joinPoint.getArgs();
-        if (args != null && args.length > 0) {
-            try {
-                requestBody = objectMapper.writeValueAsString(args);
-            } catch (Exception e) {
-                log.warn("序列化请求参数失败", e);
-                requestBody = args.toString();
-            }
-        }
-
-        // 使用MurmurHash生成哈希值,避免参数过长
-        int hash = MurmurHash.hash32(requestBody.getBytes());
-        String redisKey = "anti_duplicate:".concat(requestURI).concat(":").concat(String.valueOf(hash));
-
-        // 4. 检查Redis中是否存在该请求
-        Boolean exists = redisTemplate.opsForValue().setIfAbsent(redisKey, "1", timeout, TimeUnit.SECONDS);
-        if (Boolean.FALSE.equals(exists)) {
-            // 5秒内重复请求,直接返回错误
-            log.warn("接口防刷触发:{},请求参数:{}", requestURI, requestBody);
-            return CommonResult.error(2,message); // 替换为你项目中实际的返回格式
-        }
-
-        // 5. 正常执行方法
-        try {
-            return joinPoint.proceed();
-        } catch (Exception e) {
-            // 如果方法执行异常,删除Redis中的标记(可选,根据业务需求)
-            redisTemplate.delete(redisKey);
-            throw e;
-        }
-    }
-}

+ 0 - 98
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/config/PmsDataPermissionConfiguration.java

@@ -1,98 +0,0 @@
-package cn.iocoder.yudao.module.pms.config;
-
-import cn.iocoder.yudao.framework.datapermission.core.rule.dept.DeptDataPermissionRuleCustomizer;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotTreeDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.failure.IotFailureReportDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.information.IotInformationDbDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectItemDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectPlanDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotlockstock.IotLockStockDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotmainworkorder.IotMainWorkOrderDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotoperationmeeting.IotOperationMeetingDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotoperationmeetingdetail.IotOperationMeetingDetailDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotrddailyreport.IotRdDailyReportDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotrhdailyreport.IotRhDailyReportDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotryimprovedailyreport.IotRyImproveDailyReportDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotsapstock.IotSapStockDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.IotMaintainDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.maintenance.IotMaintenancePlanDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.accident.IotAccidentReportDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.cert.IotMeasureCertDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.cert.QhseCertPersonDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.devicecert.QhseDeviceCertDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.emergency.QhseEmergencyBookDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.emergency.QhseEmergencyCertDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.file.QhseFileTreeDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.file.QhseInfoDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.hazard.IotHazardDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.measure.IotMeasureBookDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.measure.IotMeasureDetectDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.ptw.QhsePtwDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.qhse.report.QhseMonthReportDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.yanfan.device.YfIotDeviceDO;
-import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
-import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * system 模块的数据权限 Configuration
- *
- * @author 芋道源码
- */
-@Configuration(proxyBeanMethods = false)
-public class PmsDataPermissionConfiguration {
-
-    @Bean(name = "pmsDeptDataPermissionRuleCustomizer")
-    public DeptDataPermissionRuleCustomizer sysDeptDataPermissionRuleCustomizer() {
-        return rule -> {
-            // dept
-//            rule.addDeptColumn(SupplierDO.class);
-            rule.addDeptColumn(DeptDO.class, "id");
-//            rule.addDeptColumn(SupplierDO.class, "dept_id");
-            rule.addDeptColumn(IotTreeDO.class,"dept_id");
-            rule.addDeptColumn(IotDeviceDO.class,"dept_id");
-            rule.addDeptColumn(IotFailureReportDO.class,"dept_id");
-            rule.addDeptColumn(IotInfoDO.class, "dept_id");
-            rule.addDeptColumn(IotMaintainDO.class,"dept_id");
-            rule.addDeptColumn(IotInformationDbDO.class,"dept_id");
-            rule.addDeptColumn(IotMainWorkOrderDO.class,"dept_id");
-            rule.addDeptColumn(IotInspectItemDO.class,"dept_id");
-//            rule.addDeptColumn(IotInspectRouteDO.class,"dept_id");
-            rule.addDeptColumn(IotInspectPlanDO.class, "dept_id");
-            rule.addDeptColumn(IotInspectOrderDO.class, "dept_id");
-            rule.addDeptColumn(IotLockStockDO.class, "dept_id");
-            rule.addDeptColumn(IotMainWorkOrderDO.class, "dept_id");
-            rule.addDeptColumn(IotMaintenancePlanDO.class, "dept_id");
-            rule.addDeptColumn(IotSapStockDO.class, "dept_id");
-            rule.addDeptColumn(IotRhDailyReportDO.class, "dept_id");
-            rule.addDeptColumn(IotRdDailyReportDO.class, "dept_id");
-            rule.addDeptColumn(YfIotDeviceDO.class,"dept_id");
-            rule.addDeptColumn(IotMeasureBookDO.class, "dept_id");
-            rule.addDeptColumn(IotMeasureDetectDO.class, "dept_id");
-            rule.addDeptColumn(IotMeasureCertDO.class, "dept_id");
-            rule.addDeptColumn(IotAccidentReportDO.class, "dept_id");
-            rule.addDeptColumn(IotHazardDO.class, "dept_id");
-            rule.addDeptColumn(IotOperationMeetingDO.class, "dept_id");
-            rule.addDeptColumn(IotOperationMeetingDetailDO.class, "dept_id");
-            rule.addDeptColumn(IotRyImproveDailyReportDO.class, "dept_id");
-            rule.addDeptColumn(QhseMonthReportDO.class,  "dept_id");
-            rule.addDeptColumn(QhseEmergencyBookDO.class, "dept_id");
-            rule.addDeptColumn(QhseEmergencyCertDO.class,  "dept_id");
-            rule.addDeptColumn(QhseDeviceCertDO.class, "dept_id");
-            rule.addDeptColumn(QhseFileTreeDO.class, "dept_id");
-            rule.addDeptColumn(QhseInfoDO.class, "dept_id");
-            // user
-//            rule.addUserColumn(SupplierDO.class);
-            rule.addUserColumn(AdminUserDO.class, "id");
-            rule.addDeptColumn(QhseCertPersonDO.class, "dept_id");
-            rule.addDeptColumn(QhsePtwDO.class, "dept_id");
-//            rule.addUserColumn(SupplierDO.class, "creator");
-
-        };
-    }
-
-}

+ 0 - 32
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/config/ThreadPoolTaskConfig.java

@@ -1,32 +0,0 @@
-package cn.iocoder.yudao.module.pms.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.annotation.EnableAsync;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-
-import java.util.concurrent.ThreadPoolExecutor;
-
-@Configuration
-@EnableAsync(proxyTargetClass = true)
-public class ThreadPoolTaskConfig {
-    public static final int cpuNum = Runtime.getRuntime().availableProcessors();
-    private static final int corePoolSize = cpuNum;
-    private static final int maxPoolSize = cpuNum*2;
-    private static final int keepAliveTime = 30;
-    private static final int queueCapacity = 10000;
-    private static final String threadNamePrefix = "sip-";
-
-    @Bean("taskExecutor")
-    public ThreadPoolTaskExecutor taskExecutor() {
-        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
-        executor.setCorePoolSize(corePoolSize);
-        executor.setMaxPoolSize(maxPoolSize);
-        executor.setQueueCapacity(queueCapacity);
-        executor.setKeepAliveSeconds(keepAliveTime);
-        executor.setThreadNamePrefix(threadNamePrefix);
-        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
-        executor.initialize();
-        return executor;
-    }
-}

+ 0 - 49
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/constant/PmsConstants.java

@@ -1,49 +0,0 @@
-package cn.iocoder.yudao.module.pms.constant;
-
-public interface PmsConstants {
-    String GENERATE_INSPECT = "generateInspect";
-    String QHSE_ACCIDENT = "qhse-accident";
-    String GENERATE_MAINTAIN = "generateMaintain";
-    String GENERATE_QHSE_CERT = "generateQhseCert";
-    String QHSE_MONTH_REPORT = "qhsemonthReport";
-    String FAILURE_NO_PASS = "failureNoPass";
-    String ALARM_MESSAGE = "alarmMessage";
-    String WEEK_ALARM_MESSAGE = "weekAlarmMessage";
-    String GENERATE_MAINTAIN_TEMPLATE = "generate-maintain";
-    String GENERATE_MAINTENANCE = "generateMaintenance";
-    String FAILURE_REPORT = "failureReport";
-    String GENERATE_INSPECT_TEMPLATE = "genrate-inspect";
-    String GENERATE_OPERATE = "generateOperate";
-    String GENERATE_OPERATE_TEMPLATE = "generate-operate";
-
-    String DAILY_REPORT = "rdDailyReport";
-    String DAILY_REPORT_APPROVAL = "rdReportApproval";
-    String DAILY_REPORT_DETAIL = "rdReportDetail";
-
-    String RH_DAILY_REPORT = "rhDailyReport";
-    String RH_DAILY_REPORT_APPROVAL = "rhReportApproval";
-
-    // 瑞鹰钻井日报
-    String RY_DAILY_REPORT = "ryDailyReport";
-    String RY_DAILY_REPORT_APPROVAL = "ryReportApproval";
-
-    // 瑞鹰修井日报
-    String RY_XJ_DAILY_REPORT = "ryXjDailyReport";
-    String RY_XJ_DAILY_REPORT_APPROVAL = "ryXjReportApproval";
-
-    // 瑞鹰 项目启动设备整改 日报
-    String RY_IMPROVE_DAILY_REPORT = "ryImproveDailyReport";
-    String RY_IMPROVE_DAILY_REPORT_APPROVAL = "ryImproveReportApproval";
-
-    String MAINTAIN_OUT = "maintainOut";
-    String MAINTAIN_OUT_TEMPLATE = "maintain-out";
-
-    String GENERATE_OPERATION = "generateOperation";
-    String GENERATE_OPERATION_TEMPLATE = "generate-operation";
-
-    // 物料领用单
-    String MATERIAL_REQUISITION = "material-requisition";
-
-    // 生产异常消息提醒
-    String PRODUCTION_EXCEPTION = "production-exception";
-}

+ 0 - 57
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/DeviceController.java

@@ -1,57 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin;
-
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.DeviceVO;
-import cn.iocoder.yudao.module.pms.service.IDeviceService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.security.PermitAll;
-import javax.validation.Valid;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-
-@Tag(name = "设备管理 ")
-@RestController
-@RequestMapping("/rq/deviceTD")
-public class DeviceController {
-    @Autowired
-    private IDeviceService deviceService;
-
-    /**
-     * 获取一段时间内的设备数据
-     */
-    ////@PreAuthorize("@ss.hasPermi('iot:device:query')")
-    @GetMapping(value = "/runningSpanData")
-    @Operation(summary = "获取一段时间内的设备数据")
-    @PermitAll
-    public CommonResult<List<DeviceVO>> getRunningSpanDataInfo(@Valid DeviceVO device) {
-        List<DeviceVO> result = new ArrayList<>();
-        if(device.getTs()==null&&device.getTs1()==null){
-            result = deviceService.selectNew(device);
-        }else{
-            result = deviceService.selectBySpan(device);
-        }
-        return success(result);
-    }
-
-    /**
-     * 获取特定时间的设备数据
-     */
-    ////@PreAuthorize("@ss.hasPermi('iot:device:query')")
-    @GetMapping(value = "/runningTsData")
-    @Operation(summary = "获取特定时间设备数据")
-    @PermitAll
-    public CommonResult<List<DeviceVO>> getRunningTsDataInfo(@Valid DeviceVO device) {
-        return success(deviceService.selectByTs(device));
-    }
-
-
-}

+ 0 - 44
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/DeviceHistoryParam.java

@@ -1,44 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin;
-
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author phli
- */
-@Data
-public class DeviceHistoryParam {
-
-    /**
-     * 设备id
-     */
-    private Long deviceId;
-
-    /**
-     * 设备编号
-     */
-    private String serialNumber;
-
-
-    private List<IdentifierVO> identifierList;
-
-    /**
-     * 查询用的开始时间
-     */
-    private String beginTime;
-
-    /**
-     * 查询用的结束时间
-     */
-    private String endTime;
-
-    @Data
-    public static class IdentifierVO {
-
-        private String identifier;
-
-        private Integer type;
-
-    }
-}

+ 0 - 147
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/FileUploadController.java

@@ -1,147 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin;
-
-import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.io.IoUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.framework.common.exception.ErrorCode;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
-import cn.iocoder.yudao.module.infra.service.file.FileService;
-import com.alibaba.fastjson.JSON;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.annotation.Resource;
-import javax.annotation.security.PermitAll;
-import javax.servlet.http.HttpServletRequest;
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.*;
-
-@RestController
-@RequestMapping("/rq/file")
-@Slf4j
-public class FileUploadController {
-
-    @Value("${file.upload-path}")
-    private String uploadPath;
-    @Resource
-    private FileService fileService;
-
-    @PostMapping("/upload")
-    @PermitAll
-    @TenantIgnore
-    public CommonResult<Map<String, Object>> uploadFiles(
-            @RequestParam("files") MultipartFile[] files, @RequestParam(value = "isFolder", defaultValue = "false") boolean isFolder,
-            @RequestHeader("device-id") String deviceId, HttpServletRequest request) {
-
-        // 创建根目录(如果不存在)
-        File rootDir = new File(uploadPath);
-        if (!rootDir.exists()) {
-            rootDir.mkdirs();
-        }
-
-        List<Map<String, Object>> fileList = new ArrayList<>();
-        Map<String, Object> folderStructure = new HashMap<>();
-
-        try {
-            for (MultipartFile file : files) {
-                if (file.isEmpty()) {
-                    continue;
-                }
-
-                // 获取原始文件名(包含路径信息)
-                String originalFilename = file.getOriginalFilename();
-                if (StrUtil.isBlank(originalFilename)) {
-                    continue;
-                }
-
-//                // 构建文件保存路径
-                Path filePath = Paths.get(uploadPath, originalFilename);
-//
-//                // 创建父目录
-                File parentDir = filePath.getParent().toFile();
-                if (!parentDir.exists()) {
-                    parentDir.mkdirs();
-                }
-//
-//                // 保存文件
-//                file.transferTo(filePath.toFile());
-
-                // 记录文件信息
-                Map<String, Object> fileInfo = new HashMap<>();
-                fileInfo.put("name", FileUtil.getName(originalFilename));
-                String filePaths = fileService.createFile(FileUtil.getName(originalFilename), deviceId+File.separator+originalFilename, IoUtil.readBytes(file.getInputStream()));
-
-                fileInfo.put("path", originalFilename);
-                fileInfo.put("filePath", filePaths);
-                fileInfo.put("size", file.getSize());
-                fileInfo.put("isFolder", false);
-                fileList.add(fileInfo);
-
-                // 构建文件夹结构
-                buildFolderStructure(folderStructure, originalFilename);
-            }
-
-            Map<String, Object> result = new HashMap<>();
-            result.put("files", fileList);
-            result.put("folderStructure", folderStructure);
-            result.put("message", "上传成功");
-
-            return CommonResult.success(result);
-
-        } catch (IOException e) {
-            log.error("文件上传失败", e);
-            return CommonResult.error(new ErrorCode(122, e.getMessage()));
-        }
-    }
-
-    /**
-     * 构建文件夹层级结构
-     */
-    private void buildFolderStructure(Map<String, Object> structure, String filePath) {
-        String[] pathParts = filePath.split("/");
-
-        // 如果是文件,最后一部分是文件名
-        boolean isFile = pathParts.length > 0 && FileUtil.isFile(filePath);
-        int depth = isFile ? pathParts.length - 1 : pathParts.length;
-
-//        Map<String, Object> currentLevel = structure;
-
-        for (int i = 0; i < depth; i++) {
-            String part = pathParts[i];
-            boolean isLastFolder = i == depth - 1;
-
-            if (!structure.containsKey(part)) {
-                Map<String, Object> newLevel = new HashMap<>();
-                newLevel.put("isFolder", true);
-                newLevel.put("children", new HashMap<>());
-
-                if (isLastFolder && isFile) {
-                    // 如果是文件的父文件夹,添加文件信息
-                    List<String> files = (List<String>) newLevel.getOrDefault("files", new ArrayList<>());
-                    files.add(pathParts[pathParts.length - 1]);
-                    newLevel.put("files", files);
-                }
-
-                structure.put(part, newLevel);
-            } else {
-                // 如果文件夹已存在,检查是否需要添加文件
-                if (isLastFolder && isFile) {
-                    Map<String, Object> existingLevel = (Map<String, Object>) structure.get(part);
-                    List<String> files = (List<String>) existingLevel.getOrDefault("files", new ArrayList<>());
-                    files.add(pathParts[pathParts.length - 1]);
-                    existingLevel.put("files", files);
-                }
-            }
-
-            // 进入下一级
-            structure = (Map<String, Object>) ((Map<String, Object>) structure.get(part)).get("children");
-        }
-    }
-}

+ 0 - 875
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotDeviceController.java

@@ -1,875 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjUtil;
-import cn.hutool.json.JSONObject;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.SortablePageParam;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
-import cn.iocoder.yudao.module.pms.ThingsModelDTO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceallotlog.vo.IotDeviceAllotSaveReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceperson.vo.IotDevicePersonRelationSaveReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.stat.DeptUtil;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceSaveReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceSimpleRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.excel.DeviceImportExcelVO;
-import cn.iocoder.yudao.module.pms.controller.admin.yanfan.vo.DevicePageReqVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotProductClassifyDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.alarm.IotAlarmSettingDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.failure.IotFailureReportDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.ly.LyDeviceDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.yanfan.YfDeviceDO;
-import cn.iocoder.yudao.module.pms.dal.mysql.IotDeviceMapper;
-import cn.iocoder.yudao.module.pms.dal.mysql.TDDeviceMapper;
-import cn.iocoder.yudao.module.pms.dal.mysql.alarm.IotAlarmSettingMapper;
-import cn.iocoder.yudao.module.pms.dal.mysql.ly.LyDeviceMapper;
-import cn.iocoder.yudao.module.pms.enums.common.IotDeviceStatusEnum;
-import cn.iocoder.yudao.module.pms.oa.OaFlow;
-import cn.iocoder.yudao.module.pms.service.DeviceServiceImpl;
-import cn.iocoder.yudao.module.pms.service.IotDeviceService;
-import cn.iocoder.yudao.module.pms.service.IotProductClassifyService;
-import cn.iocoder.yudao.module.pms.service.failure.IotFailureReportService;
-import cn.iocoder.yudao.module.pms.service.iotbom.IotBomService;
-import cn.iocoder.yudao.module.pms.service.iotdeviceallotlog.IotDeviceAllotLogService;
-import cn.iocoder.yudao.module.pms.service.iotdeviceperson.IotDevicePersonService;
-import cn.iocoder.yudao.module.pms.service.iotmodel.IotModelService;
-import cn.iocoder.yudao.module.pms.service.yanfan.YfDeviceService;
-import cn.iocoder.yudao.module.pms.util.IotDeviceConvert;
-import cn.iocoder.yudao.module.supplier.dal.dataobject.product.SupplierDO;
-import cn.iocoder.yudao.module.supplier.service.product.SupplierService;
-import cn.iocoder.yudao.module.system.api.dept.DeptApi;
-import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
-import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
-import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
-import cn.iocoder.yudao.module.system.service.dept.DeptService;
-import cn.iocoder.yudao.module.system.service.dict.DictDataService;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Parameters;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.client.RestTemplate;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.annotation.Resource;
-import javax.annotation.security.PermitAll;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.stream.Collectors;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
-
-
-@Tag(name = "管理后台 - 设备台账")
-@RestController(value = "PMSIotDeviceController")
-@RequestMapping("/rq/iot-device")
-@Validated
-public class IotDeviceController {
-
-    @Resource
-    private IotDeviceService iotDeviceService;
-    @Resource
-    private DeptService deptService;
-    @Resource
-    private DictDataService dictDataService;
-    @Resource
-    private SupplierService supplierService;
-    @Resource
-    private IotProductClassifyService iotProductClassifyService;
-    @Resource
-    private IotModelService iotModelService;
-    @Resource
-    private IotBomService iotBomService;
-    @Autowired
-    private YfDeviceService yfDeviceService;
-    @Autowired
-    private DeviceServiceImpl deviceServiceImpl;
-    @Autowired
-    private IotDevicePersonService iotDevicePersonService;
-    @Autowired
-    private IotDeviceAllotLogService iotDeviceAllotLogService;
-    @Autowired
-    private IotFailureReportService iotFailureReportService;
-    @Resource
-    private DeptApi deptApi;
-    @Autowired
-    private DeptUtil deptUtil;
-    @Autowired
-    private IotDeviceMapper iotDeviceMapper;
-    @Autowired
-    private IotAlarmSettingMapper iotAlarmSettingMapper;
-    @Autowired
-    private RestTemplate restTemplate;
-    @Autowired
-    private LyDeviceMapper lyDeviceMapper;
-
-    @GetMapping(value = {"/company"})
-    @Operation(summary = "获取设备属于哪个公司", description = "获取设备属于哪个公司")
-    public CommonResult<String> getDeviceCompany(@RequestParam Long id) {
-        IotFailureReportDO failureReport = iotFailureReportService.getIotFailureReport(id);
-        String maxCode = iotDeviceService.getDeviceCompany(failureReport.getDeviceId());
-        return success(maxCode);
-    }
-
-    @GetMapping(value = {"/company/{id}"})
-    @Operation(summary = "获取设备属于哪个公司", description = "获取设备属于哪个公司")
-    public CommonResult<String> getDeviceCompanyById(@PathVariable("id") Long id) {
-//        IotFailureReportDO failureReport = iotFailureReportService.getIotFailureReport(id);
-        String maxCode = iotDeviceService.getDeviceCompany(id);
-        return success(maxCode);
-    }
-
-    @PostMapping("/create")
-    @Operation(summary = "创建设备台账")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:create')")
-    public CommonResult<Long> createIotDevice(@Valid @RequestBody IotDeviceSaveReqVO createReqVO) {
-        return success(iotDeviceService.createIotDevice(createReqVO));
-    }
-
-    @GetMapping(value = {"/max"})
-    @Operation(summary = "获取最大的编码", description = "获取最大的编码")
-    public CommonResult<String> getMaxYfCode(@RequestParam String yfCode) {
-        String maxCode = iotDeviceService.getMaxCode(yfCode);
-        return success(maxCode);
-    }
-
-    @PostMapping("/saveDeviceStatuses")
-    @Operation(summary = "批量调整设备状态")
-    @PreAuthorize("@ss.hasPermission('pms:iot-device-status-log:create')")
-    public CommonResult<Long> saveDeviceStatuses(@Valid @RequestBody List<IotDevicePersonRelationSaveReqVO> reqVOS) {
-        return success(iotDevicePersonService.saveDeviceStatuses(reqVOS));
-    }
-
-    @PostMapping("/saveDeviceAllot")
-    @Operation(summary = "设备调拨")
-    @PreAuthorize("@ss.hasPermission('pms:iot-device-allot-log:create')")
-    public CommonResult<Long> saveDeviceAllot(@Valid @RequestBody List<IotDeviceAllotSaveReqVO> reqVOS) {
-        return success(iotDeviceAllotLogService.saveDeviceAllot(reqVOS));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新设备台账")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:update')")
-    public CommonResult<Boolean> updateIotDevice(@Valid @RequestBody IotDeviceSaveReqVO updateReqVO) {
-        iotDeviceService.updateIotDevice(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除设备台账")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:delete')")
-    public CommonResult<Boolean> deleteIotDevice(@RequestParam("id") Long id) {
-        iotDeviceService.deleteIotDevice(id);
-        return success(true);
-    }
-
-    @GetMapping("/get/td")
-    @Operation(summary = "获得设备台账")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<List<ThingsModelDTO>> getIotDeviceTd(@RequestParam("id") Long id) {
-        IotDeviceDO iotDevice = iotDeviceService.getIotDevice(id);
-        List<ThingsModelDTO> tdParams = iotDeviceService.getTdParams(iotDevice);
-        return success(tdParams);
-    }
-
-    @GetMapping("/get/gateway/td")
-    @Operation(summary = "获得网关属性")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<List<ThingsModelDTO>> getIotDeviceTdGateway(@RequestParam("id") Long id) {
-        IotDeviceDO iotDevice = iotDeviceService.getIotDevice(id);
-        List<ThingsModelDTO> tdParams = iotDeviceService.getTdGatewayParams(iotDevice);
-        List<IotAlarmSettingDO> settings = iotAlarmSettingMapper.selectList("device_id", id);
-        tdParams.forEach(e ->{
-            settings.stream().filter(f -> f.getPropertyCode().equals(e.getIdentifier())).findFirst().ifPresent(g ->{
-                e.setAlarmSettingId(g.getId());
-                e.setMaxValue(g.getMaxValue());
-                e.setMinValue(g.getMinValue());
-            });
-        });
-        return success(tdParams);
-    }
-
-    @GetMapping("/get/zhbd/td")
-    @Operation(summary = "获得网关属性")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<List<ThingsModelDTO>> getIotDeviceTdZhbd(@RequestParam("id") Long id) {
-        IotDeviceDO iotDevice = iotDeviceService.getIotDevice(id);
-        List<ThingsModelDTO> tdParams = iotDeviceService.getTdZhbdParams(iotDevice);
-        return success(tdParams);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得设备台账")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<IotDeviceRespVO> getIotDevice(@RequestParam("id") Long id) {
-        IotDeviceDO iotDevice = iotDeviceService.getIotDevice(id);
-        IotDeviceRespVO iotDeviceRespVO = new IotDeviceRespVO();
-        BeanUtils.copyProperties(iotDevice, iotDeviceRespVO);
-//        DictDataDO dictData = dictDataService.getDictData(iotDevice.getBrand());
-//        iotDeviceRespVO.setBrandName(Objects.nonNull(dictData)?dictData.getLabel():"");
-        SupplierDO supplierDO = supplierService.get(iotDevice.getSupplierId());
-        iotDeviceRespVO.setSupplierName(Objects.nonNull(supplierDO)?supplierDO.getName():"");
-        SupplierDO supplierDO1 = supplierService.get(iotDevice.getManufacturerId());
-        iotDeviceRespVO.setZzName(Objects.nonNull(supplierDO1)?supplierDO1.getName():"");
-        DeptDO dept = deptService.getDept(iotDeviceRespVO.getDeptId());
-        iotDeviceRespVO.setDeptName(Objects.nonNull(dept)?dept.getName():"");
-        IotProductClassifyDO iotProductClassify = iotProductClassifyService.getIotProductClassify(iotDevice.getAssetClass());
-        iotDeviceRespVO.setAssetClassName(Objects.nonNull(iotProductClassify)?iotProductClassify.getName():"");
-//        List<YfDeviceDO> allDevice = yfDeviceService.getAllDevice();
-//        allDevice.stream().filter(e -> e.getSerialNumber().equals(iotDevice.getDeviceCode())).findFirst().ifPresent(e -> {
-//            iotDeviceRespVO.setIfInline(e.getStatus());
-//            List<DeviceVO> deviceVOS = deviceMapper.selectNew(e.getSerialNumber());
-//            if (CollUtil.isNotEmpty(deviceVOS)) {
-//                Timestamp ts = deviceVOS.get(0).getTs();
-//                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//                String format = sdf.format(ts);
-//                iotDeviceRespVO.setLastInlineTime(format);
-//            }
-//        });
-        Map<Long, String> iotDevicePerson = iotDevicePersonService.getIotDevicePerson(ImmutableList.of(id));
-        if (Objects.nonNull(iotDevicePerson)) {
-            iotDeviceRespVO.setResponsibleNames(iotDevicePerson.get(id));
-        }
-        return success(iotDeviceRespVO);
-    }
-
-    @GetMapping("/all/params")
-    @Operation(summary = "获得设备台账信息")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<List<IotDeviceDO>> getIotDeviceAllParams(@Valid IotDevicePageReqVO pageReqVO) {
-        return success(iotDeviceService.getAllDevices(pageReqVO));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得设备台账分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<PageResult<IotDeviceRespVO>> getIotDevicePage(@Valid IotDevicePageReqVO pageReqVO, @Valid SortablePageParam pageParam) {
-        if (Objects.nonNull(pageParam)&&CollUtil.isNotEmpty(pageParam.getSortingFields())) {
-            pageParam.getSortingFields().get(0).setField("sortColumn");
-        }
-        PageResult<IotDeviceDO> pageResult = iotDeviceService.getIotDevicePage(pageReqVO, pageParam);
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return success(new PageResult<>(pageResult.getTotal()));
-        }
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(pageResult.getList(), IotDeviceDO::getDeptId));
-        // 查询当前分页的设备是否已经设置了 保养BOM
-        List<Long> deviceIds = convertList(pageResult.getList(), IotDeviceDO::getId);
-        IotDevicePageReqVO reqVO = new IotDevicePageReqVO();
-        reqVO.setDeviceIds(deviceIds);
-        reqVO.setBomFlag("b");
-        List<IotDeviceRespVO> devicesWithBoms = iotDeviceService.deviceAssociateBomList(reqVO);
-        Map<Long, List<IotDeviceRespVO>> devicesWithBomsPair = new HashMap<>();
-        if (CollUtil.isNotEmpty(devicesWithBoms)) {
-            devicesWithBoms.forEach(bom -> {
-                if (devicesWithBomsPair.containsKey(bom.getId())) {
-                    List<IotDeviceRespVO> tempDevices = devicesWithBomsPair.get(bom.getId());
-                    tempDevices.add(bom);
-                    devicesWithBomsPair.put(bom.getId(), tempDevices);
-                } else {
-                    List<IotDeviceRespVO> tempDevices = new ArrayList<>();
-                    tempDevices.add(bom);
-                    devicesWithBomsPair.put(bom.getId(), tempDevices);
-                }
-            });
-        }
-        List<IotDeviceRespVO> iotDeviceRespVOS = IotDeviceConvert.INSTANCE.convertList(pageResult.getList(), deptMap);
-        iotDeviceRespVOS.forEach(e ->{
-            SupplierDO supplierDO = supplierService.get(e.getManufacturerId());
-            if (Objects.nonNull(supplierDO)) {
-                e.setManufacturer(supplierDO.getName());
-            }
-            // 设置保养项标识
-            if (devicesWithBomsPair.containsKey(e.getId())) {
-                e.setHasSetMaintenanceBom(true);
-            }
-            Map<Long, String> iotDevicePerson = iotDevicePersonService.getIotDevicePerson(ImmutableList.of(e.getId()));
-            if (Objects.nonNull(iotDevicePerson)) {
-                e.setChargeName(iotDevicePerson.get(e.getId()));
-            }
-            if (Objects.nonNull(e.getAssetClass())) {
-                IotProductClassifyDO iotProductClassify = iotProductClassifyService.getIotProductClassify(e.getAssetClass());
-                e.setAssetClassName(Objects.nonNull(iotProductClassify)?iotProductClassify.getName():"");
-            }
-        });
-        return success(new PageResult<>(iotDeviceRespVOS,
-                pageResult.getTotal()));
-    }
-
-    @GetMapping("/page/app")
-    @Operation(summary = "获得app端设备台账分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<PageResult<IotDeviceRespVO>> getAppIotDevicePage(@Valid IotDevicePageReqVO pageReqVO, @Valid SortablePageParam pageParam) {
-        if (Objects.nonNull(pageParam)&&CollUtil.isNotEmpty(pageParam.getSortingFields())) {
-            pageParam.getSortingFields().get(0).setField("sortColumn");
-        }
-        PageResult<IotDeviceDO> pageResult = iotDeviceService.getIotDevicePageApp(pageReqVO, pageParam);
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return success(new PageResult<>(pageResult.getTotal()));
-        }
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(pageResult.getList(), IotDeviceDO::getDeptId));
-        // 查询当前分页的设备是否已经设置了 保养BOM
-        List<Long> deviceIds = convertList(pageResult.getList(), IotDeviceDO::getId);
-        IotDevicePageReqVO reqVO = new IotDevicePageReqVO();
-        reqVO.setDeviceIds(deviceIds);
-        reqVO.setBomFlag("b");
-        List<IotDeviceRespVO> devicesWithBoms = iotDeviceService.deviceAssociateBomList(reqVO);
-        Map<Long, List<IotDeviceRespVO>> devicesWithBomsPair = new HashMap<>();
-        if (CollUtil.isNotEmpty(devicesWithBoms)) {
-            devicesWithBoms.forEach(bom -> {
-                if (devicesWithBomsPair.containsKey(bom.getId())) {
-                    List<IotDeviceRespVO> tempDevices = devicesWithBomsPair.get(bom.getId());
-                    tempDevices.add(bom);
-                    devicesWithBomsPair.put(bom.getId(), tempDevices);
-                } else {
-                    List<IotDeviceRespVO> tempDevices = new ArrayList<>();
-                    tempDevices.add(bom);
-                    devicesWithBomsPair.put(bom.getId(), tempDevices);
-                }
-            });
-        }
-        List<IotDeviceRespVO> iotDeviceRespVOS = IotDeviceConvert.INSTANCE.convertList(pageResult.getList(), deptMap);
-        iotDeviceRespVOS.forEach(e ->{
-            // 设置保养项标识
-            if (devicesWithBomsPair.containsKey(e.getId())) {
-                e.setHasSetMaintenanceBom(true);
-            }
-        });
-        return success(new PageResult<>(iotDeviceRespVOS, pageResult.getTotal()));
-    }
-
-    @GetMapping("/getDevicesByDepts")
-    @Operation(summary = "项目-任务 根据选择的部门筛选设备 忽略数据权限")
-    public CommonResult<List<IotDeviceSimpleRespVO>> getDevicesByDepts(@Valid IotDevicePageReqVO reqVO) {
-        List<IotDeviceDO> list = iotDeviceService.getDevicesByDepts(reqVO);
-        // 查询设备的所有责任人列表
-        return success(new ArrayList<>(buildDeviceSimpleListNoPermission(list)));
-    }
-
-    @GetMapping({"/list-all-simple", "/simple-list"})
-    @Operation(summary = "获取设备精简信息列表", description = "只包含被开启的设备,主要用于前端的下拉选项")
-    public CommonResult<List<IotDeviceSimpleRespVO>> getSimpleDeviceList(@Valid IotDevicePageReqVO reqVO) {
-        List<IotDeviceDO> list = iotDeviceService.getSimpleDeviceList(reqVO);
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(convertList(list, IotDeviceDO::getDeptId));
-        // 查询设备的所有责任人列表
-        return success(new ArrayList<>(buildDeviceSimpleList(list)));
-        // return success(new ArrayList<>(IotDeviceConvert.INSTANCE.convertSimpleLists(list, deptMap)));
-    }
-
-    @GetMapping("/responsiblePage")
-    @Operation(summary = "获得设备关联责任人 分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<PageResult<IotDeviceRespVO>> responsiblePage(@Valid IotDevicePageReqVO pageReqVO) {
-        // 只显示已经设置关联了责任人的设备
-        PageResult<IotDeviceRespVO> pageResult = iotDeviceService.personRelationDevices(pageReqVO);
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return success(new PageResult<>(pageResult.getTotal()));
-        }
-        return success(new PageResult<>(buildDevicePersonsList(pageResult.getList()), pageResult.getTotal()));
-    }
-
-    @GetMapping("/statusRelationDevices")
-    @Operation(summary = "查询是否调整过状态的设备列表 分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<PageResult<IotDeviceRespVO>> statusRelationDevices(@Valid IotDevicePageReqVO pageReqVO) {
-        // 查询是否调整过状态的设备列表 分页
-        PageResult<IotDeviceRespVO> pageResult = iotDeviceService.statusRelationDevices(pageReqVO);
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return success(new PageResult<>(pageResult.getTotal()));
-        }
-        return success(new PageResult<>(buildDeviceStatusList(pageResult.getList()), pageResult.getTotal()));
-    }
-
-    @GetMapping("/allotRelationDevices")
-    @Operation(summary = "查询是否发生过调拨的设备列表 分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<PageResult<IotDeviceRespVO>> allotRelationDevices(@Valid IotDevicePageReqVO pageReqVO) {
-        // 查询是否发生过调拨的设备列表 分页
-        PageResult<IotDeviceRespVO> pageResult = iotDeviceService.allotRelationDevices(pageReqVO);
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return success(new PageResult<>(pageResult.getTotal()));
-        }
-        return success(new PageResult<>(buildDeviceStatusList(pageResult.getList()), pageResult.getTotal()));
-    }
-
-    @GetMapping("/deviceDynamicsPage")
-    @Operation(summary = "获得设备动态 分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<PageResult<IotDeviceRespVO>> responsiblePagedeviceDynamicsPage(@Valid IotDevicePageReqVO pageReqVO, @Valid SortablePageParam pageParam) {
-        PageResult<IotDeviceDO> pageResult = iotDeviceService.getIotDevicePage(pageReqVO, pageParam);
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return success(new PageResult<>(pageResult.getTotal()));
-        }
-        return success(new PageResult<>(buildDeviceDynamicsList(pageResult.getList()), pageResult.getTotal()));
-    }
-
-    @Autowired
-    private TDDeviceMapper deviceMapper;
-
-    @GetMapping("/td/page")
-    @Operation(summary = "获得设备台账包含数采信息")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<PageResult<IotDeviceRespVO>> getIotDeviceTdPage(@Valid IotDevicePageReqVO pageReqVO) {
-        List<String> codes = new ArrayList<>();
-        if (Objects.nonNull(pageReqVO.getIfInline())&&pageReqVO.getIfInline()==0) {
-            pageReqVO.setIfInline(null);
-        }
-        PageResult<IotDeviceDO> pageResult = iotDeviceService.getIotDeviceTdPage(pageReqVO, codes);
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return success(new PageResult<>(pageResult.getTotal()));
-        }
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(pageResult.getList(), IotDeviceDO::getDeptId));
-        PageResult<IotDeviceRespVO> result = new PageResult<>(IotDeviceConvert.INSTANCE.convertList(pageResult.getList(), deptMap),
-                pageResult.getTotal());
-        for (IotDeviceRespVO iotDeviceRespVO : result.getList()) {
-            IotProductClassifyDO iotProductClassify = iotProductClassifyService.getIotProductClassify(iotDeviceRespVO.getAssetClass());
-            iotDeviceRespVO.setAssetClassName(iotProductClassify.getName());
-        }
-
-        return success(result);
-    }
-
-    @GetMapping("/ly/device")
-    @Operation(summary = "查询某部门下的连油设备")
-    public CommonResult<List<IotDeviceDO>> getDeptLyDevice(Long deptId) {
-        //获取数采yf里面的设备
-        DevicePageReqVO devicePageReqVO = new DevicePageReqVO();
-        devicePageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        //连油设备
-        devicePageReqVO.setProductId(649L);
-        List<String> codes = yfDeviceService.getDevicePage(devicePageReqVO).getList().stream().map(YfDeviceDO::getSerialNumber).collect(Collectors.toList());
-        List<IotDeviceDO> iotDeviceDOS;
-        if (Objects.isNull(deptId)) {
-            deptId = SecurityFrameworkUtils.getLoginUserDeptId();
-        }
-        Set<Long> ids;
-        ids = deptService.getChildDeptIdListFromCache(deptId);
-        ids.add(deptId);
-        IotDevicePageReqVO reqVO = new IotDevicePageReqVO();
-        reqVO.setDeptIds(new ArrayList<>(ids));
-        List<IotDeviceDO> devicesByDepts = iotDeviceService.getDevicesByDepts(reqVO);
-        iotDeviceDOS = devicesByDepts.stream().filter(e -> codes.contains(e.getDeviceCode())).collect(Collectors.toList());
-        return success(iotDeviceDOS);
-    }
-
-    @GetMapping("/td/ly/page")
-    @Operation(summary = "获取包含数采的连油曲线")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<PageResult<IotDeviceRespVO>> getIotDeviceTdPageLy(@Valid IotDevicePageReqVO pageReqVO) {
-        DevicePageReqVO devicePageReqVO = new DevicePageReqVO();
-//        devicePageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        if (Objects.nonNull(pageReqVO.getIfInline())&&pageReqVO.getIfInline()==0) {
-            pageReqVO.setIfInline(null);
-        }
-        //连油设备
-        devicePageReqVO.setProductId(649L);
-        List<YfDeviceDO> list = yfDeviceService.getDevicePage(devicePageReqVO).getList();
-        List<String> codes = list.stream().map(YfDeviceDO::getSerialNumber).collect(Collectors.toList());
-//        List<String> codes = yfDeviceService.getDevicePage(devicePageReqVO).getList().stream().map(YfDeviceDO::getSerialNumber).collect(Collectors.toList());
-        PageResult<IotDeviceDO> pageResult = iotDeviceService.getIotDeviceTdPage(pageReqVO, codes);
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return success(new PageResult<>(pageResult.getTotal()));
-        }
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(pageResult.getList(), IotDeviceDO::getDeptId));
-        PageResult<IotDeviceRespVO> result = new PageResult<>(IotDeviceConvert.INSTANCE.convertList(pageResult.getList(), deptMap),
-                pageResult.getTotal());
-        for (IotDeviceRespVO iotDeviceRespVO : result.getList()) {
-            IotProductClassifyDO iotProductClassify = iotProductClassifyService.getIotProductClassify(iotDeviceRespVO.getAssetClass());
-            iotDeviceRespVO.setAssetClassName(iotProductClassify.getName());
-            DeptRespDTO dept = deptApi.getDept(iotDeviceRespVO.getDeptId());
-            iotDeviceRespVO.setDeviceName(Objects.nonNull(dept)?dept.getName()+" "+iotDeviceRespVO.getDeviceName():iotDeviceRespVO.getDeviceName());
-            list.stream().filter(e -> e.getSerialNumber().equals(iotDeviceRespVO.getDeviceCode())).findFirst().ifPresent(e ->{
-                iotDeviceRespVO.setMqttUrl("/"+e.getProductId()+"/"+iotDeviceRespVO.getDeviceCode()+"/property/post");
-            });
-        }
-
-        return success(result);
-    }
-
-    @GetMapping("/td/ly/screen")
-    @Operation(summary = "连油看板的设备信息")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<PageResult<IotDeviceRespVO>> getIotDeviceTdLyScreen(@Valid IotDevicePageReqVO pageReqVO) {
-        DevicePageReqVO devicePageReqVO = new DevicePageReqVO();
-        devicePageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        if (Objects.nonNull(pageReqVO.getIfInline())&&pageReqVO.getIfInline()==0) {
-            pageReqVO.setIfInline(null);
-        }
-        //连油设备
-        devicePageReqVO.setProductId(649L);
-        List<YfDeviceDO> list = yfDeviceService.getDevicePage(devicePageReqVO).getList();
-        List<String> codes = list.stream().map(YfDeviceDO::getSerialNumber).collect(Collectors.toList());
-        PageResult<IotDeviceDO> pageResult = iotDeviceService.getIotDeviceTdPage(pageReqVO, codes);
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return success(new PageResult<>(pageResult.getTotal()));
-        }
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(pageResult.getList(), IotDeviceDO::getDeptId));
-        PageResult<IotDeviceRespVO> result = new PageResult<>(IotDeviceConvert.INSTANCE.convertList(pageResult.getList(), deptMap),
-                pageResult.getTotal());
-        for (IotDeviceRespVO iotDeviceRespVO : result.getList()) {
-            IotProductClassifyDO iotProductClassify = iotProductClassifyService.getIotProductClassify(iotDeviceRespVO.getAssetClass());
-            iotDeviceRespVO.setAssetClassName(iotProductClassify.getName());
-            DeptRespDTO dept = deptApi.getDept(iotDeviceRespVO.getDeptId());
-            iotDeviceRespVO.setDeviceName(Objects.nonNull(dept)?dept.getName()+" "+iotDeviceRespVO.getDeviceName():iotDeviceRespVO.getDeviceName());
-            list.stream().filter(e -> e.getSerialNumber().equals(iotDeviceRespVO.getDeviceCode())).findFirst().ifPresent(e ->{
-                iotDeviceRespVO.setMqttUrl("/"+e.getProductId()+"/"+iotDeviceRespVO.getDeviceCode()+"/property/post");
-            });
-            List<LyDeviceDO> deviceId = lyDeviceMapper.selectList("device_id", iotDeviceRespVO.getId());
-            if (CollUtil.isNotEmpty(deviceId)) {
-                iotDeviceRespVO.setOtherName(deviceId.get(0).getOtherName());
-            }
-        }
-
-        return success(result);
-    }
-
-
-    @GetMapping("/td/page/app")
-    @Operation(summary = "获得设备台账包含数采信息")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<PageResult<IotDeviceRespVO>> getIotDeviceTdPageApp(@Valid IotDevicePageReqVO pageReqVO) {
-        List<String> codes = new ArrayList<>();
-        PageResult<IotDeviceDO> pageResult = iotDeviceService.getIotDeviceTdPageApp(pageReqVO, codes);
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return success(new PageResult<>(pageResult.getTotal()));
-        }
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(pageResult.getList(), IotDeviceDO::getDeptId));
-        PageResult<IotDeviceRespVO> result = new PageResult<>(IotDeviceConvert.INSTANCE.convertList(pageResult.getList(), deptMap),
-                pageResult.getTotal());
-        for (IotDeviceRespVO iotDeviceRespVO : result.getList()) {
-            IotProductClassifyDO iotProductClassify = iotProductClassifyService.getIotProductClassify(iotDeviceRespVO.getAssetClass());
-            iotDeviceRespVO.setAssetClassName(iotProductClassify.getName());
-        }
-
-        return success(result);
-    }
-
-
-    @GetMapping("/td/test")
-    @Operation(summary = "获得设备台账包含数采信息")
-    @PermitAll
-    public void getIotDeviceTdePage() {
-        List<YfDeviceDO> allDevice = yfDeviceService.getAllDevice();
-        System.out.println(allDevice);
-    }
-
-    @GetMapping("/deviceAssociateBomPage")
-    @Operation(summary = "获得设备台账分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<PageResult<IotDeviceRespVO>> deviceAssociateBomPage(@Valid IotDevicePageReqVO pageReqVO) {
-        PageResult<IotDeviceRespVO> pageResult = iotDeviceService.deviceAssociateBomPage(pageReqVO);
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return success(new PageResult<>(pageResult.getTotal()));
-        }
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(pageResult.getList(), IotDeviceRespVO::getDeptId));
-        // 拼接BOM节点信息
-        return success(new PageResult<>(IotDeviceConvert.INSTANCE.convertList1(pageResult.getList(), deptMap), pageResult.getTotal()));
-    }
-
-    @GetMapping("/deviceAssociateBomList")
-    @Operation(summary = "获得设备-bom关联关系列表")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<List<IotDeviceRespVO>> deviceAssociateBomList(IotDevicePageReqVO pageReqVO) {
-        List<IotDeviceRespVO> devices = iotDeviceService.deviceAssociateBomList(pageReqVO);
-        if (CollUtil.isEmpty(devices)) {
-            return success(new ArrayList<>());
-        }
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(devices, IotDeviceRespVO::getDeptId));
-        return success(IotDeviceConvert.INSTANCE.convertList1(devices, deptMap));
-    }
-
-    @GetMapping("/deviceAssociateBomListPage")
-    @Operation(summary = "获得设备-bom关联关系列表")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
-    public CommonResult<PageResult<IotDeviceRespVO>> deviceAssociateBomListPage(IotDevicePageReqVO pageReqVO) {
-        PageResult<IotDeviceRespVO> devices = iotDeviceService.deviceAssociateBomListPage(pageReqVO);
-        if (CollUtil.isEmpty(devices.getList())) {
-            return success(new PageResult<>(devices.getTotal()));
-        }
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(devices.getList(), IotDeviceRespVO::getDeptId));
-        return success(new PageResult<>(IotDeviceConvert.INSTANCE.convertList1(devices.getList(), deptMap), devices.getTotal()));
-    }
-
-    /**
-     * 设备动态分布 设置关联查询信息
-     * @param devices
-     * @return
-     */
-    private List<IotDeviceRespVO> buildDeviceDynamicsList(List<IotDeviceDO> devices) {
-        if (CollUtil.isEmpty(devices)) {
-            return Collections.emptyList();
-        }
-        // 设备部门信息
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(devices, IotDeviceDO::getDeptId));
-        // 查询设备关联的 负责人
-        Map<Long, String> devicePersonNames = iotDevicePersonService.getIotDevicePerson(convertList(devices, IotDeviceDO::getId));
-        // 2. 拼接数据
-        return BeanUtils.toBean(devices, IotDeviceRespVO.class, (deviceVO) -> {
-            // 2.1 拼接部门信息
-            findAndThen(deptMap, deviceVO.getDeptId(), dept -> deviceVO.setDeptName(dept.getName()));
-            // 2.2 设备关联的负责人姓名
-            findAndThen(devicePersonNames, deviceVO.getId(), person -> deviceVO.setResponsibleNames(person));
-        });
-    }
-
-    private List<IotDeviceSimpleRespVO> buildDeviceSimpleListNoPermission(List<IotDeviceDO> devices) {
-        if (CollUtil.isEmpty(devices)) {
-            return Collections.emptyList();
-        }
-        AtomicReference<Map<Long, DeptDO>> deptMap = new AtomicReference<>(new HashMap<>());
-        AtomicReference<Map<Long, String>> devicePersonNames = new AtomicReference<>(new HashMap<>());
-        DataPermissionUtils.executeIgnore(() -> {
-            // 设备部门信息
-            deptMap.set(deptService.getDeptMap(
-                    convertList(devices, IotDeviceDO::getDeptId)));
-            // 查询设备关联的 负责人
-            devicePersonNames.set(iotDevicePersonService.getIotDevicePerson(convertList(devices, IotDeviceDO::getId)));
-        });
-        // 2. 拼接数据
-        return BeanUtils.toBean(devices, IotDeviceSimpleRespVO.class, (deviceVO) -> {
-            IotDeviceStatusEnum statusEnum = IotDeviceStatusEnum.nameOf(deviceVO.getDeviceStatus());
-            deviceVO.setDeviceStatusName(ObjUtil.isNotEmpty(statusEnum) ? statusEnum.getMsg() : "-");
-            // 2.1 拼接部门信息
-            findAndThen(deptMap.get(), deviceVO.getDeptId(), dept -> deviceVO.setDeptName(dept.getName()));
-            // 2.2 设备关联的负责人姓名
-            findAndThen(devicePersonNames.get(), deviceVO.getId(), person -> deviceVO.setDevicePersons(person));
-        });
-    }
-
-    private List<IotDeviceSimpleRespVO> buildDeviceSimpleList(List<IotDeviceDO> devices) {
-        if (CollUtil.isEmpty(devices)) {
-            return Collections.emptyList();
-        }
-        // 设备部门信息
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(devices, IotDeviceDO::getDeptId));
-        // 查询设备关联的 负责人
-        Map<Long, String> devicePersonNames = iotDevicePersonService.getIotDevicePerson(convertList(devices, IotDeviceDO::getId));
-        // 2. 拼接数据
-        return BeanUtils.toBean(devices, IotDeviceSimpleRespVO.class, (deviceVO) -> {
-            IotDeviceStatusEnum statusEnum = IotDeviceStatusEnum.nameOf(deviceVO.getDeviceStatus());
-            deviceVO.setDeviceStatusName(ObjUtil.isNotEmpty(statusEnum) ? statusEnum.getMsg() : "-");
-            // 2.1 拼接部门信息
-            findAndThen(deptMap, deviceVO.getDeptId(), dept -> deviceVO.setDeptName(dept.getName()));
-            // 2.2 设备关联的负责人姓名
-            findAndThen(devicePersonNames, deviceVO.getId(), person -> deviceVO.setDevicePersons(person));
-        });
-    }
-
-    /**
-     * 组装 设备-bom 关联关系对象
-     * @param devices
-     * @return
-     */
-    private List<IotDeviceRespVO> buildDevicePersonsList(List<IotDeviceRespVO> devices) {
-        if (CollUtil.isEmpty(devices)) {
-            return Collections.emptyList();
-        }
-        // 设备部门信息
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(devices, IotDeviceRespVO::getDeptId));
-        // 查询设备关联的 负责人
-        Map<Long, String> devicePersonNames = iotDevicePersonService.getIotDevicePerson(convertList(devices, IotDeviceRespVO::getId));
-        // 2. 拼接数据
-        return BeanUtils.toBean(devices, IotDeviceRespVO.class, (deviceVO) -> {
-            // 2.1 拼接部门信息
-            findAndThen(deptMap, deviceVO.getDeptId(), dept -> deviceVO.setDeptName(dept.getName()));
-            // 2.2 设备关联的负责人姓名
-            findAndThen(devicePersonNames, deviceVO.getId(), person -> deviceVO.setResponsibleNames(person));
-        });
-    }
-
-    /**
-     * 组装 设备-bom 关联关系对象
-     * @param devices
-     * @return
-     */
-    private List<IotDeviceRespVO> buildDeviceStatusList(List<IotDeviceRespVO> devices) {
-        if (CollUtil.isEmpty(devices)) {
-            return Collections.emptyList();
-        }
-        // 设备部门信息
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(devices, IotDeviceRespVO::getDeptId));
-        // 2. 拼接数据
-        return BeanUtils.toBean(devices, IotDeviceRespVO.class, (deviceVO) -> {
-            // 2.1 拼接部门信息
-            findAndThen(deptMap, deviceVO.getDeptId(), dept -> deviceVO.setDeptName(dept.getName()));
-        });
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出设备台账 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotDeviceExcel(@Valid IotDevicePageReqVO pageReqVO,@Valid SortablePageParam pageParam,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        Set<Long> ids;
-        if (Objects.isNull(pageReqVO.getDeptId())){
-            Long loginUserDeptId = SecurityFrameworkUtils.getLoginUserDeptId();
-            String companyCode = deptUtil.getCompanyCode(loginUserDeptId);
-            ids = deptUtil.getDeptIds(companyCode);
-            ids.add(pageReqVO.getDeptId());
-        } else {
-            ids = deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
-            ids.add(pageReqVO.getDeptId());
-        }
-        pageReqVO.setDeptIds(new ArrayList<>(ids));
-        List<IotDeviceDO> list = iotDeviceService.getAllDevices(pageReqVO);
-        List<IotDeviceRespVO> bean = BeanUtils.toBean(list, IotDeviceRespVO.class);
-        List<DictDataDO> pmsDeviceStatus = dictDataService.getDictDataListByDictType("pms_device_status");
-        bean.forEach(e ->{
-            DeptRespDTO dept = deptApi.getDept(e.getDeptId());
-            if (dept != null) {
-                e.setDeptName(dept.getName());
-            }
-            pmsDeviceStatus.stream().filter(f -> f.getValue().equals(e.getDeviceStatus())).findFirst().ifPresent(f -> {
-                e.setDeviceStatus(f.getLabel());
-            });
-        });
-        // 导出 Excel
-        ExcelUtils.write(response, "设备台账.xls", "数据", IotDeviceRespVO.class, bean);
-    }
-
-    @GetMapping("/map")
-    @Operation(summary = "查询地图设备")
-    public CommonResult<List<IotDeviceDO>> getMap(@Valid IotDevicePageReqVO pageReqVO){
-        if ("ly".equals(pageReqVO.getSource())){
-            //获取数采yf里面的设备
-            DevicePageReqVO devicePageReqVO = new DevicePageReqVO();
-            devicePageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-            //连油设备
-            devicePageReqVO.setProductId(649L);
-            List<String> codes = yfDeviceService.getDevicePage(devicePageReqVO).getList().stream().map(YfDeviceDO::getSerialNumber).collect(Collectors.toList());
-            List<IotDeviceDO> iotDeviceDOS;
-            Long deptId = null;
-            if (Objects.isNull(pageReqVO.getDeptId())) {
-                deptId = SecurityFrameworkUtils.getLoginUserDeptId();
-            }else {
-                deptId = pageReqVO.getDeptId();
-            }
-            Set<Long> ids;
-            ids = deptService.getChildDeptIdListFromCache(deptId);
-            ids.add(deptId);
-            IotDevicePageReqVO reqVO = new IotDevicePageReqVO();
-            reqVO.setDeptIds(new ArrayList<>(ids));
-            List<IotDeviceDO> devicesByDepts = iotDeviceService.getDevicesByDepts(reqVO);
-            iotDeviceDOS = devicesByDepts.stream().filter(e -> codes.contains(e.getDeviceCode())).collect(Collectors.toList());
-            return success(iotDeviceDOS);
-        } else{
-            List<IotDeviceDO> mapDevice = iotDeviceService.getMapDevice(pageReqVO);
-            List<IotDeviceDO> collect = mapDevice.stream().filter(e -> Objects.nonNull(e.getLng()) && Objects.nonNull(e.getLat())).collect(Collectors.toList());
-            return success(collect);
-        }
-
-
-    }
-
-    @PermitAll
-    @GetMapping("/init")
-    public void init() {
-        iotDeviceService.updateSort();
-    }
-
-    @PermitAll
-    @GetMapping("/init/brand")
-    public void initBrandName() {
-        iotDeviceService.updateBrandName();
-    }
-
-    @PermitAll
-    @GetMapping("/init/charge")
-    public void initCharge() {
-        iotDeviceService.updateCharge();
-    }
-
-    @Autowired
-    private OaFlow oaFlow;
-
-    @PermitAll
-    @GetMapping("/oa/register")
-    public void oaRegister() {
-        try {
-            oaFlow.getCompany();
-//            oaFlow.getDepart();
-//            oaFlow.getPerson();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    @PermitAll
-    @PostMapping("/import")
-    @Operation(summary = "导入设备")
-    @Parameters({
-            @Parameter(name = "file", description = "Excel 文件", required = true),
-    })
-    public void importExcel(@RequestParam("file") MultipartFile file) throws Exception {
-        List<DeviceImportExcelVO> list = ExcelUtils.read(file, DeviceImportExcelVO.class);
-        iotDeviceService.importDevice(list);
-    }
-
-    @Operation(summary = "根据部门id获取设备列表")
-    @GetMapping("/dept/{id}")
-    public CommonResult<List<ImmutableMap<String, ? extends Serializable>>> findDeviceByDept(@PathVariable Long id) {
-        IotDevicePageReqVO iotDevicePageReqVO = new IotDevicePageReqVO();
-        iotDevicePageReqVO.setDeptId(id);
-        List<IotDeviceDO> allDevices = iotDeviceService.getAllDevices(iotDevicePageReqVO);
-        List<ImmutableMap<String, ? extends Serializable>> collect = allDevices.stream().map(e -> ImmutableMap.of("id", e.getId(), "deviceName", e.getDeviceName(), "deviceCode", e.getDeviceCode())).collect(Collectors.toList());
-        return success(collect);
-    }
-
-    @Operation(summary = "获取延凡token")
-    @GetMapping("/yf/token")
-    public CommonResult<String> getYfToken() {
-        Map<String, Object> map = new HashMap<>();
-//        map.put("code", "12");
-        map.put("password", "123456");
-        map.put("sourceType", 1);
-        map.put("username", "yanfan");
-//        map.put("uuid", "5dc9dd7f2337451f8f708131166eabab");
-        JSONObject entries = restTemplate.postForObject("http://172.21.10.65/prod-api/login", map, JSONObject.class);
-        if (Objects.nonNull(entries)) {
-            if (Objects.nonNull(entries.get("token"))) {
-                return success(String.valueOf(entries.get("token")));
-            }
-        }
-        return success("");
-    }
-}

+ 0 - 45
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotFineReportController.java

@@ -1,45 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin;
-
-import cn.hutool.core.util.ObjUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
-import cn.iocoder.yudao.module.pms.util.FineReportUtils;
-import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
-import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 帆软报表相关")
-@RestController
-@RequestMapping("/rq/iot-fine-report")
-@Validated
-public class IotFineReportController {
-
-    @Autowired
-    private AdminUserMapper userMapper;
-
-    @GetMapping("createSsoToken")
-    @Operation(summary = "创建帆软报表单点登录token")
-    public CommonResult<String> createIotInfoClassify() {
-        String ssoToken = StrUtil.EMPTY;
-        // 获取当前登录人的工号等信息
-        Long userId = WebFrameworkUtils.getLoginUserId();
-        if (ObjUtil.isNotEmpty(userId)) {
-            AdminUserDO user = userMapper.selectById(userId);
-            if (ObjUtil.isNotEmpty(user)) {
-                String username = user.getUsername();
-                ssoToken = FineReportUtils.RsaEncrypt(username);
-            }
-        }
-        return success(ssoToken);
-    }
-
-}

+ 0 - 92
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotInfoClassifyController.java

@@ -1,92 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin;
-
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.*;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoClassifyDO;
-import cn.iocoder.yudao.module.pms.service.IotInfoClassifyService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.validation.Valid;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 资料分类")
-@RestController
-@RequestMapping("/rq/iot-info-classify")
-@Validated
-public class IotInfoClassifyController {
-    @Autowired
-    private IotInfoClassifyService iotInfoClassifyService;
-
-    @PostMapping("create")
-    @Operation(summary = "创建资料分类")
-    @PreAuthorize("@ss.hasPermission('iot:info-classify:create')")
-    public CommonResult<Long> createIotInfoClassify(@Valid @RequestBody IotInfoClassifySaveReqVO createReqVO) {
-        Long deptId = iotInfoClassifyService.createIotInfoClassify(createReqVO);
-        return success(deptId);
-    }
-
-    @PutMapping("update")
-    @Operation(summary = "更新资料分类")
-    @PreAuthorize("@ss.hasPermission('iot:info-classify:update')")
-    public CommonResult<Boolean> updateIotInfoClassify(@Valid @RequestBody IotInfoClassifySaveReqVO updateReqVO) {
-        iotInfoClassifyService.updateIotInfoClassify(updateReqVO,"update");
-        return success(true);
-    }
-
-    @PutMapping("/update/remove")
-    @Operation(summary = "更新资料分类")
-    @PreAuthorize("@ss.hasPermission('rq:iot-classify:update')")
-    public CommonResult<Boolean> removeIotInfo(@Valid @RequestBody IotInfoClassifySaveReqVO updateReqVO) {
-        IotInfoClassifyDO classify = iotInfoClassifyService.getIotInfoClassify(updateReqVO.getId());
-        classify.setParentId(updateReqVO.getParentId());
-        BeanUtils.copyProperties(classify, updateReqVO);
-        iotInfoClassifyService.updateIotInfoClassify(updateReqVO, "remove");
-        return success(true);
-    }
-
-    @DeleteMapping("delete")
-    @Operation(summary = "删除资料分类")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('iot:info-classify:delete')")
-    public CommonResult<Boolean> deleteIotInfoClassify(@RequestParam("id") Long id) {
-        iotInfoClassifyService.deleteIotInfoClassify(id);
-        return success(true);
-    }
-
-    @GetMapping("/list")
-    @Operation(summary = "获取资料分类列表")
-    @PreAuthorize("@ss.hasPermission('iot:info-classify:query')")
-    public CommonResult<List<IotInfoClassifyRespVO>> getIotInfoClassifyList(IotInfoClassifyListReqVO reqVO) {
-        List<IotInfoClassifyDO> list = iotInfoClassifyService.getIotInfoClassifyList(reqVO);
-        return success(BeanUtils.toBean(list, IotInfoClassifyRespVO.class));
-    }
-
-    @GetMapping(value = {"/list-all-simple", "/simple-list"})
-    @Operation(summary = "获取资料分类精简信息列表", description = "只包含被开启的资料分类,主要用于前端的下拉选项")
-    public CommonResult<List<IotInfoClassifySimpleRespVO>> getSimpleIotInfoClassifyList(Long deviceId) {
-        List<IotInfoClassifyDO> list = iotInfoClassifyService.getIotInfoClassifyList(
-                new IotInfoClassifyListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus()).setDeviceId(deviceId));
-        return success(BeanUtils.toBean(list, IotInfoClassifySimpleRespVO.class));
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得资料分类信息")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('iot:info-classify:query')")
-    public CommonResult<IotInfoClassifyRespVO> getIotInfoClassify(@RequestParam("id") Long id) {
-        IotInfoClassifyDO dept = iotInfoClassifyService.getIotInfoClassify(id);
-        return success(BeanUtils.toBean(dept, IotInfoClassifyRespVO.class));
-    }
-
-}

+ 0 - 165
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotInfoController.java

@@ -1,165 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoSaveReqVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoDO;
-import cn.iocoder.yudao.module.pms.service.IotDeviceService;
-import cn.iocoder.yudao.module.pms.service.IotInfoService;
-import cn.iocoder.yudao.module.system.api.dept.DeptApi;
-import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
-import com.xingyuv.captcha.util.StringUtils;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-
-@Tag(name = "管理后台 - 资料")
-@RestController
-@RequestMapping("/rq/iot-info")
-@Validated
-public class IotInfoController {
-
-    @Resource
-    private IotInfoService iotInfoService;
-    @Autowired
-    private IotDeviceService iotDeviceService;
-    @Autowired
-    private DeptApi deptApi;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建资料")
-    @PreAuthorize("@ss.hasPermission('rq:iot-info:create')")
-    public CommonResult<Boolean> createIotInfo(@Valid @RequestBody IotInfoSaveReqVO createReqVO) {
-        iotInfoService.createIotInfo(createReqVO);
-        return success(true);
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新资料")
-    @PreAuthorize("@ss.hasPermission('rq:iot-info:update')")
-    public CommonResult<Boolean> updateIotInfo(@Valid @RequestBody IotInfoSaveReqVO updateReqVO) {
-        iotInfoService.updateIotInfo(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除资料")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-info:delete')")
-    public CommonResult<Boolean> deleteIotInfo(@RequestParam("id") Long id) {
-        iotInfoService.deleteIotInfo(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得资料")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-info:query')")
-    public CommonResult<IotInfoRespVO> getIotInfo(@RequestParam("id") Long id) {
-        IotInfoDO iotInfo = iotInfoService.getIotInfo(id);
-        return success(BeanUtils.toBean(iotInfo, IotInfoRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得资料分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-info:query')")
-    public CommonResult<PageResult<IotInfoRespVO>> getIotInfoPage(@Valid IotInfoPageReqVO pageReqVO) {
-//        Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-//        pageReqVO.setCreator(String.valueOf(loginUserId));
-        PageResult<IotInfoDO> pageResult = iotInfoService.getIotInfoPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotInfoRespVO.class));
-    }
-
-    @PostMapping("/file/page")
-    @Operation(summary = "获得资料分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-info:query')")
-    public CommonResult<PageResult<IotInfoRespVO>> getIotInfoFilePage(@Valid IotInfoPageReqVO pageReqVO) {
-        PageResult<IotInfoDO> pageResult = iotInfoService.getIotInfoFilePage(pageReqVO);
-        List<IotInfoDO> list = pageResult.getList();
-        List<IotInfoRespVO> collect = list.stream().map(e -> {
-            IotInfoRespVO vo = BeanUtils.toBean(e, IotInfoRespVO.class);
-            if (Objects.nonNull(e.getDeviceId())) {
-                IotDeviceDO iotDevice = iotDeviceService.getIotDevice(e.getDeviceId());
-                if (Objects.nonNull(iotDevice)) {
-                    vo.setDeviceCode(iotDevice.getDeviceCode());
-                }
-            }
-            if (Objects.nonNull(e.getDeptId())) {
-                DeptRespDTO dept = deptApi.getDept(e.getDeptId());
-                if (Objects.nonNull(dept)) {
-                    vo.setDeptName(dept.getName());
-                }
-            }
-            return vo;
-        }).collect(Collectors.toList());
-        return success(new PageResult<>(collect, pageResult.getTotal()));
-    }
-
-    @PostMapping("/child/content-file")
-    @Operation(summary = "获得资料库的分类目录及文件")
-    @PreAuthorize("@ss.hasPermission('rq:iot-info:query')")
-    public CommonResult<List<IotInfoRespVO>> getChildContentFile(@Valid IotInfoPageReqVO pageReqVO) {
-        Long classId = pageReqVO.getClassId();
-        List<IotInfoRespVO> contentFiles = iotInfoService.getChildContentFile(classId).stream().filter(e ->{
-            if (StringUtils.isNotBlank(pageReqVO.getFilename())) {
-                return e.getFilename().contains(pageReqVO.getFilename());
-            } else {
-                return true;
-            }
-        }).collect(Collectors.toList());
-        return success(contentFiles);
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出资料 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-info:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotInfoExcel(@Valid IotInfoPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotInfoDO> list = iotInfoService.getIotInfoPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "资料.xls", "数据", IotInfoRespVO.class,
-                        BeanUtils.toBean(list, IotInfoRespVO.class));
-    }
-
-    @PostMapping("/all/content-file")
-    @Operation(summary = "获得资料库下的所有分类目录及文件")
-    @PreAuthorize("@ss.hasPermission('rq:iot-info:query')")
-    public CommonResult<List<IotInfoRespVO>> getAllContentFile(@Valid IotInfoPageReqVO pageReqVO) {
-        Long classId = pageReqVO.getClassId();
-        List<IotInfoRespVO> contentFiles = iotInfoService.getAllChildContentFile(classId).stream().filter(e ->{
-            if (StringUtils.isNotBlank(pageReqVO.getAllName())) {
-                return e.getFilename().contains(pageReqVO.getAllName());
-            } else {
-                return true;
-            }
-        }).collect(Collectors.toList());
-        return success(contentFiles);
-    }
-
-}

+ 0 - 84
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotProductClassifyController.java

@@ -1,84 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin;
-
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotProductClassifyListReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotProductClassifyRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotProductClassifySaveReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotProductClassifySimpleRespVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotProductClassifyDO;
-import cn.iocoder.yudao.module.pms.service.IotProductClassifyService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.validation.Valid;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 产品分类")
-@RestController
-@RequestMapping("/rq/iot-product-classify")
-@Validated
-public class IotProductClassifyController {
-
-    @Resource
-    private IotProductClassifyService iotProductClassifyService;
-
-    @PostMapping("create")
-    @Operation(summary = "创建产品分类")
-    @PreAuthorize("@ss.hasPermission('iot:product-classify:create')")
-    public CommonResult<Long> createIotProductClassify(@Valid @RequestBody IotProductClassifySaveReqVO createReqVO) {
-        Long deptId = iotProductClassifyService.createIotProductClassify(createReqVO);
-        return success(deptId);
-    }
-
-    @PutMapping("update")
-    @Operation(summary = "更新产品分类")
-    @PreAuthorize("@ss.hasPermission('iot:product-classify:update')")
-    public CommonResult<Boolean> updateIotProductClassify(@Valid @RequestBody IotProductClassifySaveReqVO updateReqVO) {
-        iotProductClassifyService.updateIotProductClassify(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("delete")
-    @Operation(summary = "删除产品分类")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('iot:product-classify:delete')")
-    public CommonResult<Boolean> deleteIotProductClassify(@RequestParam("id") Long id) {
-        iotProductClassifyService.deleteIotProductClassify(id);
-        return success(true);
-    }
-
-    @GetMapping("/list")
-    @Operation(summary = "获取产品分类列表")
-    @PreAuthorize("@ss.hasPermission('iot:product-classify:query')")
-    public CommonResult<List<IotProductClassifyRespVO>> getIotProductClassifyList(IotProductClassifyListReqVO reqVO) {
-        List<IotProductClassifyDO> list = iotProductClassifyService.getIotProductClassifyList(reqVO);
-        return success(BeanUtils.toBean(list, IotProductClassifyRespVO.class));
-    }
-
-    @GetMapping(value = {"/list-all-simple", "/simple-list"})
-    @Operation(summary = "获取产品分类精简信息列表", description = "只包含被开启的产品分类,主要用于前端的下拉选项")
-    public CommonResult<List<IotProductClassifySimpleRespVO>> getSimpleIotProductClassifyList() {
-        List<IotProductClassifyDO> list = iotProductClassifyService.getIotProductClassifyList(
-                new IotProductClassifyListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus()));
-        return success(BeanUtils.toBean(list, IotProductClassifySimpleRespVO.class));
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得产品分类信息")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('iot:product-classify:query')")
-    public CommonResult<IotProductClassifyRespVO> getIotProductClassify(@RequestParam("id") Long id) {
-        IotProductClassifyDO dept = iotProductClassifyService.getIotProductClassify(id);
-        return success(BeanUtils.toBean(dept, IotProductClassifyRespVO.class));
-    }
-
-}

+ 0 - 173
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotTreeController.java

@@ -1,173 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreeListReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreePageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreeRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreeSaveReqVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotTreeDO;
-import cn.iocoder.yudao.module.pms.service.IotTreeService;
-import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSimpleRespVO;
-import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.annotation.security.PermitAll;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-
-@Tag(name = "管理后台 - pms树")
-@RestController
-@RequestMapping("/rq/iot-tree")
-@Validated
-public class IotTreeController {
-
-    @Resource
-    private IotTreeService iotTreeService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建pms树")
-    @PreAuthorize("@ss.hasPermission('rq:iot-tree:create')")
-    public CommonResult<Long> createIotTree(@Valid @RequestBody IotTreeSaveReqVO createReqVO) {
-        return success(iotTreeService.createIotTree(createReqVO));
-    }
-
-    @PostMapping("/add-dept-deal")
-    public void createDeptDeal(@RequestBody DeptDO dept) {
-        iotTreeService.addDeptDeal(dept);
-    }
-    @PostMapping("/update-dept-deal")
-    public void updateDeptDeal(@RequestBody DeptDO dept) {
-        iotTreeService.updateDeptDeal(dept);
-    }
-    @PostMapping("/delete-dept-deal")
-    public void updateDeptDeal(String id) {
-        iotTreeService.deleteDeptDeal(id);
-    }
-    @PutMapping("/update")
-    @Operation(summary = "更新pms树")
-    @PreAuthorize("@ss.hasPermission('rq:iot-tree:update')")
-    public CommonResult<Boolean> updateIotTree(@Valid @RequestBody IotTreeSaveReqVO updateReqVO) {
-        iotTreeService.updateIotTree(updateReqVO);
-        return success(true);
-    }
-
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除pms树")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-tree:delete')")
-    public CommonResult<Boolean> deleteIotTree(@RequestParam("id") Long id) {
-        iotTreeService.deleteIotTree(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得pms树")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-tree:query')")
-    public CommonResult<IotTreeRespVO> getIotTree(@RequestParam("id") Long id) {
-        IotTreeDO iotTree = iotTreeService.getIotTree(id);
-        return success(BeanUtils.toBean(iotTree, IotTreeRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得pms树分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-tree:query')")
-    public CommonResult<PageResult<IotTreeRespVO>> getIotTreePage(@Valid IotTreePageReqVO pageReqVO) {
-        PageResult<IotTreeDO> pageResult = iotTreeService.getIotTreePage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotTreeRespVO.class));
-    }
-
-    @GetMapping(value = {"/list-all-simple", "/simple-list"})
-    @Operation(summary = "获取部门精简信息列表", description = "只包含被开启的部门,主要用于前端的下拉选项")
-    @PermitAll
-    public CommonResult<List<DeptSimpleRespVO>> getSimpleDeptList() {
-        List<IotTreeDO> list = iotTreeService.getIotTreeList(new IotTreeListReqVO());
-        return success(BeanUtils.toBean(list, DeptSimpleRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出pms树 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-tree:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotTreeExcel(@Valid IotTreePageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotTreeDO> list = iotTreeService.getIotTreePage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "pms树.xls", "数据", IotTreeRespVO.class,
-                        BeanUtils.toBean(list, IotTreeRespVO.class));
-    }
-
-    @GetMapping("/init/tree")
-    @PermitAll
-    public void initTree() {
-        iotTreeService.initTree();
-    }
-
-
-    @GetMapping("/ids/{id}")
-    @Operation(summary = "获取某个节点的所有上级节点")
-    public CommonResult<LinkedList<Map<String, Object>>> getTreeIds(@PathVariable("id") Long id) {
-        List<IotTreeDO> allParentIds = iotTreeService.getAllParentIds(id);
-        LinkedList<Map<String, Object>> list = new LinkedList<>();
-        allParentIds.forEach(e -> {
-            Map<String, Object> map = new HashMap<>();
-            map.put("id", e.getId());
-            map.put("name", e.getName());
-            if (e.getName().contains("科瑞石油技术")) {
-                map.put("type", "root");
-            }
-            list.add(map);
-        });
-        IotTreeDO iotTree = iotTreeService.getIotTree(id);
-        Map<String, Object> map = new HashMap<>();
-        map.put("id", iotTree.getId());
-        map.put("name", iotTree.getName());
-        if (iotTree.getName().contains("科瑞石油技术")){
-            map.put("type", "root");
-        }
-        list.add(map);
-        return success(list);
-    }
-
-    @GetMapping("/device/{id}")
-    @PreAuthorize("@ss.hasPermission('rq:iot-tree:query')")
-    public CommonResult<Long> getDeviceTree(@PathVariable("id") Long deviceId) {
-        List<IotTreeDO> iotDeviceTree = iotTreeService.getIotDeviceTree(deviceId);
-        if (CollUtil.isEmpty(iotDeviceTree)) {
-            return success(null);
-        }
-        return success(iotDeviceTree.get(0).getId());
-    }
-
-    @GetMapping("/init/code")
-    @PermitAll
-    public void initTreeCode() {
-        iotTreeService.initTreeCode();
-    }
-
-
-
-}

+ 0 - 82
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/TableDataInfo.java

@@ -1,82 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * 表格分页数据对象
- *
- * @author ruoyi
- */
-public class TableDataInfo implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 总记录数
-     */
-    private long total;
-
-    /**
-     * 列表数据
-     */
-    private List<?> rows;
-
-    /**
-     * 消息状态码
-     */
-    private int code;
-
-    /**
-     * 消息内容
-     */
-    private String msg;
-
-    /**
-     * 表格数据对象
-     */
-    public TableDataInfo() {
-    }
-
-    /**
-     * 分页
-     *
-     * @param list  列表数据
-     * @param total 总记录数
-     */
-    public TableDataInfo(List<?> list, int total) {
-        this.rows = list;
-        this.total = total;
-    }
-
-    public long getTotal() {
-        return total;
-    }
-
-    public void setTotal(long total) {
-        this.total = total;
-    }
-
-    public List<?> getRows() {
-        return rows;
-    }
-
-    public void setRows(List<?> rows) {
-        this.rows = rows;
-    }
-
-    public int getCode() {
-        return code;
-    }
-
-    public void setCode(int code) {
-        this.code = code;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-    public void setMsg(String msg) {
-        this.msg = msg;
-    }
-}

+ 0 - 98
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/IotAlarmRecordController.java

@@ -1,98 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.alarm;
-
-import cn.iocoder.yudao.module.pms.controller.admin.alarm.vo.IotAlarmRecordPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.alarm.vo.IotAlarmRecordRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.alarm.vo.IotAlarmRecordSaveReqVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.alarm.IotAlarmRecordDO;
-import cn.iocoder.yudao.module.pms.service.alarm.IotAlarmRecordService;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.security.access.prepost.PreAuthorize;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Operation;
-
-import java.util.*;
-import java.io.IOException;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
-
-
-@Tag(name = "管理后台 - 运行监控告警记录")
-@RestController
-@RequestMapping("/rq/iot-alarm-record")
-@Validated
-public class IotAlarmRecordController {
-
-    @Resource
-    private IotAlarmRecordService iotAlarmRecordService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建运行监控告警记录")
-    @PreAuthorize("@ss.hasPermission('rq:iot-alarm-record:create')")
-    public CommonResult<Long> createIotAlarmRecord(@Valid @RequestBody IotAlarmRecordSaveReqVO createReqVO) {
-        return success(iotAlarmRecordService.createIotAlarmRecord(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新运行监控告警记录")
-    @PreAuthorize("@ss.hasPermission('rq:iot-alarm-record:update')")
-    public CommonResult<Boolean> updateIotAlarmRecord(@Valid @RequestBody IotAlarmRecordSaveReqVO updateReqVO) {
-        iotAlarmRecordService.updateIotAlarmRecord(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除运行监控告警记录")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-alarm-record:delete')")
-    public CommonResult<Boolean> deleteIotAlarmRecord(@RequestParam("id") Long id) {
-        iotAlarmRecordService.deleteIotAlarmRecord(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得运行监控告警记录")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-alarm-record:query')")
-    public CommonResult<IotAlarmRecordRespVO> getIotAlarmRecord(@RequestParam("id") Long id) {
-        IotAlarmRecordDO iotAlarmRecord = iotAlarmRecordService.getIotAlarmRecord(id);
-        return success(BeanUtils.toBean(iotAlarmRecord, IotAlarmRecordRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得运行监控告警记录分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-alarm-record:query')")
-    public CommonResult<PageResult<IotAlarmRecordRespVO>> getIotAlarmRecordPage(@Valid IotAlarmRecordPageReqVO pageReqVO) {
-        PageResult<IotAlarmRecordDO> pageResult = iotAlarmRecordService.getIotAlarmRecordPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotAlarmRecordRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出运行监控告警记录 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-alarm-record:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotAlarmRecordExcel(@Valid IotAlarmRecordPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotAlarmRecordDO> list = iotAlarmRecordService.getIotAlarmRecordPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "运行监控告警记录.xls", "数据", IotAlarmRecordRespVO.class,
-                        BeanUtils.toBean(list, IotAlarmRecordRespVO.class));
-    }
-
-}

+ 0 - 120
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/IotAlarmSettingController.java

@@ -1,120 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.alarm;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.alarm.vo.IotAlarmSettingPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.alarm.vo.IotAlarmSettingRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.alarm.vo.IotAlarmSettingSaveReqVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.alarm.IotAlarmSettingDO;
-import cn.iocoder.yudao.module.pms.service.alarm.IotAlarmSettingService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-import java.util.Objects;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-
-@Tag(name = "管理后台 - 告警设置")
-@RestController
-@RequestMapping("/rq/iot-alarm-setting")
-@Validated
-public class IotAlarmSettingController {
-
-    @Resource
-    private IotAlarmSettingService iotAlarmSettingService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建告警设置")
-    @PreAuthorize("@ss.hasPermission('rq:iot-alarm-setting:create')")
-    public CommonResult<Long> createIotAlarmSetting(@Valid @RequestBody IotAlarmSettingSaveReqVO createReqVO) {
-        return success(iotAlarmSettingService.createIotAlarmSetting(createReqVO));
-    }
-
-    @PostMapping("/save")
-    @Operation(summary = "创建告警设置")
-    @PreAuthorize("@ss.hasPermission('rq:iot-alarm-setting:create')")
-    public CommonResult<IotAlarmSettingDO> saveIotAlarmSetting(@Valid @RequestBody IotAlarmSettingSaveReqVO createReqVO) {
-        return success(iotAlarmSettingService.saveIotAlarmSetting(createReqVO));
-    }
-
-    @PostMapping("/batch/update")
-    @Operation(summary = "创建告警设置")
-    @PreAuthorize("@ss.hasPermission('rq:iot-alarm-setting:create')")
-    public CommonResult<String> batchUpdateIotAlarmSetting(@Valid @RequestBody List<IotAlarmSettingSaveReqVO> alarms) {
-        alarms.forEach(alarm -> iotAlarmSettingService.updateIotAlarmSetting(alarm));
-        return success("完成");
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新告警设置")
-    @PreAuthorize("@ss.hasPermission('rq:iot-alarm-setting:update')")
-    public CommonResult<Boolean> updateIotAlarmSetting(@Valid @RequestBody IotAlarmSettingSaveReqVO updateReqVO) {
-        iotAlarmSettingService.updateIotAlarmSetting(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除告警设置")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-alarm-setting:delete')")
-    public CommonResult<Boolean> deleteIotAlarmSetting(@RequestParam("id") Long id) {
-        iotAlarmSettingService.deleteIotAlarmSetting(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得告警设置")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-alarm-setting:query')")
-    public CommonResult<IotAlarmSettingRespVO> getIotAlarmSetting(@RequestParam("id") Long id) {
-        IotAlarmSettingDO iotAlarmSetting = iotAlarmSettingService.getIotAlarmSetting(id);
-        return success(BeanUtils.toBean(iotAlarmSetting, IotAlarmSettingRespVO.class));
-    }
-
-    @GetMapping("/page/{if}")
-    @Operation(summary = "获得告警设置分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-alarm-setting:query')")
-    public CommonResult<PageResult<IotAlarmSettingRespVO>> getIotAlarmSettingPage(@Valid IotAlarmSettingPageReqVO pageReqVO, @PathVariable("if") String ifDevice) {
-        PageResult<IotAlarmSettingDO> pageResult = iotAlarmSettingService.getIotAlarmSettingPage(pageReqVO, ifDevice);
-        return success(BeanUtils.toBean(pageResult, IotAlarmSettingRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出告警设置 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-alarm-setting:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotAlarmSettingExcel(@Valid IotAlarmSettingPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotAlarmSettingDO> list = iotAlarmSettingService.getIotAlarmSettingPage(pageReqVO,"1").getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "告警设置.xls", "数据", IotAlarmSettingRespVO.class,
-                        BeanUtils.toBean(list, IotAlarmSettingRespVO.class));
-    }
-
-    @GetMapping("/get-device-range")
-    @Operation(summary = "获取设备标识")
-    public CommonResult<IotAlarmSettingRespVO> getDeviceIdentifier(@RequestParam("deviceName") String deviceName, @RequestParam("identifier") String identifier) {
-        IotAlarmSettingDO deviceRange = iotAlarmSettingService.getDeviceRange(deviceName, identifier);
-        if (Objects.isNull(deviceRange)) {
-            return success(new IotAlarmSettingRespVO());
-        }
-        return success(BeanUtils.toBean(deviceRange, IotAlarmSettingRespVO.class));
-    }
-
-}

+ 0 - 171
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/IotVideoAlarmController.java

@@ -1,171 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.alarm;
-
-import cn.iocoder.yudao.module.pms.controller.admin.alarm.vo.IotVideoAlarmPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.alarm.vo.IotVideoAlarmRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.alarm.vo.IotVideoAlarmSaveReqVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.alarm.IotVideoAlarmDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.yanfan.device.YfIotDeviceDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.yanfan.sip.device.channel.YfSipDeviceChannelDO;
-import cn.iocoder.yudao.module.pms.dal.mysql.yanfan.device.YfIotDeviceMapper;
-import cn.iocoder.yudao.module.pms.dal.mysql.yanfan.sip.device.channel.YfSipDeviceChannelMapper;
-import cn.iocoder.yudao.module.pms.hik.HikIsapiService;
-import cn.iocoder.yudao.module.pms.service.alarm.IotVideoAlarmService;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.security.access.prepost.PreAuthorize;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Operation;
-
-import java.util.*;
-import java.io.IOException;
-import java.util.stream.Collectors;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
-
-
-@Tag(name = "管理后台 - 资料")
-@RestController
-@RequestMapping("/rq/iot-video-alarm")
-@Validated
-public class IotVideoAlarmController {
-
-    @Resource
-    private IotVideoAlarmService iotVideoAlarmService;
-    @Resource
-    private YfSipDeviceChannelMapper yfsipDeviceChannelMapper;
-    @Resource
-    private HikIsapiService hikIsapiService;
-    @Resource
-    private YfIotDeviceMapper yfIotDeviceMapper;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建资料")
-    @PreAuthorize("@ss.hasPermission('rq:iot-video-alarm:create')")
-    public CommonResult<Long> createIotVideoAlarm(@Valid @RequestBody IotVideoAlarmSaveReqVO createReqVO) {
-        return success(iotVideoAlarmService.createIotVideoAlarm(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新资料")
-    @PreAuthorize("@ss.hasPermission('rq:iot-video-alarm:update')")
-    public CommonResult<Boolean> updateIotVideoAlarm(@Valid @RequestBody IotVideoAlarmSaveReqVO updateReqVO) {
-        iotVideoAlarmService.updateIotVideoAlarm(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除资料")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-video-alarm:delete')")
-    public CommonResult<Boolean> deleteIotVideoAlarm(@RequestParam("id") Long id) {
-        iotVideoAlarmService.deleteIotVideoAlarm(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得资料")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-video-alarm:query')")
-    public CommonResult<IotVideoAlarmRespVO> getIotVideoAlarm(@RequestParam("id") Long id) {
-        IotVideoAlarmDO iotVideoAlarm = iotVideoAlarmService.getIotVideoAlarm(id);
-        return success(BeanUtils.toBean(iotVideoAlarm, IotVideoAlarmRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得视频告警分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-video-alarm:query')")
-    public CommonResult<PageResult<IotVideoAlarmRespVO>> getIotVideoAlarmPage(@Valid IotVideoAlarmPageReqVO pageReqVO) {
-        PageResult<IotVideoAlarmDO> pageResult = iotVideoAlarmService.getIotVideoAlarmPage(pageReqVO);
-        List<IotVideoAlarmRespVO> collect = pageResult.getList().stream().map(e -> {
-            IotVideoAlarmRespVO iotVideoAlarmRespVO = new IotVideoAlarmRespVO();
-            BeanUtils.copyProperties(e, iotVideoAlarmRespVO);
-            if (StringUtils.isNotBlank(e.getBusinessChannel())) {
-                YfSipDeviceChannelDO yfSipDeviceChannelDO = yfsipDeviceChannelMapper.selectSipDeviceChannelByChannelSipId(e.getBusinessChannel());
-                if (yfSipDeviceChannelDO != null) {
-                    if (Objects.nonNull(yfSipDeviceChannelDO.getDeviceSipId())&&StringUtils.isNotBlank(yfSipDeviceChannelDO.getDeviceSipId())) {
-                        YfIotDeviceDO yfIotDeviceDO = yfIotDeviceMapper.selectDeviceBySerialNumber(yfSipDeviceChannelDO.getDeviceSipId());
-                        iotVideoAlarmRespVO.setDeviceName(yfIotDeviceDO.getDeviceName());
-                    }
-                    iotVideoAlarmRespVO.setChannelName(yfSipDeviceChannelDO.getChannelName());
-                }
-            }
-            return iotVideoAlarmRespVO;
-        }).collect(Collectors.toList());
-        return success(new PageResult<>(collect, pageResult.getTotal()));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出资料 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-video-alarm:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotVideoAlarmExcel(@Valid IotVideoAlarmPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotVideoAlarmDO> list = iotVideoAlarmService.getIotVideoAlarmPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "资料.xls", "数据", IotVideoAlarmRespVO.class,
-                        BeanUtils.toBean(list, IotVideoAlarmRespVO.class));
-    }
-
-
-    @GetMapping("/pic/{id}")
-    @Operation(summary = "获得视频告警图片")
-    @PreAuthorize("@ss.hasPermission('rq:iot-video-alarm:query')")
-    public ResponseEntity<byte[]> getAlarmPic(@PathVariable Long id) throws IOException {
-        IotVideoAlarmDO iotVideoAlarm = iotVideoAlarmService.getIotVideoAlarm(id);
-        String url = "";
-        if (iotVideoAlarm != null) {
-            if (StringUtils.isNotBlank(iotVideoAlarm.getUrl())) {
-                url = iotVideoAlarm.getUrl();
-            } else if (StringUtils.isNotBlank(iotVideoAlarm.getImageUrl())){
-                url = iotVideoAlarm.getImageUrl();
-            }
-        }
-        byte[] picInfo = new byte[0];
-        if (StringUtils.isNotBlank(url)) {
-            picInfo = hikIsapiService.getPicInfo("nvr-001", url);
-        }
-        // 2. 设置响应头,告诉前端这是图片流
-//        HttpHeaders headers = new HttpHeaders();
-//        // 根据实际图片格式调整(海康通常返回jpeg)
-//        headers.setContentType(MediaType.IMAGE_JPEG);
-//        // 设置内容长度,提升传输效率
-//        headers.setContentLength(picInfo.length);
-//        // 禁止缓存(可选,根据业务需求)
-//        headers.setCacheControl("no-cache, no-store, must-revalidate");
-//
-//        // 3. 返回二进制流和响应头
-//        return success(new ByteArrayInputStream(picInfo));
-//        return success(picInfo);
-
-
-
-        // 4. 设置响应头,返回纯图片流
-        HttpHeaders headers = new HttpHeaders();
-        headers.setContentType(MediaType.IMAGE_JPEG); // 海康默认jpeg,可根据实际调整
-        headers.setContentLength(picInfo.length);
-        headers.setCacheControl("no-cache, no-store, must-revalidate");
-
-        return new ResponseEntity<>(picInfo, headers, HttpStatus.OK);
-    }
-}

+ 0 - 41
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotAlarmRecordPageReqVO.java

@@ -1,41 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.alarm.vo;
-
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 运行监控告警记录分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class IotAlarmRecordPageReqVO extends PageParam {
-
-    @Schema(description = "告警类型", example = "2")
-    private String type;
-
-    @Schema(description = "设备编号")
-    private String deviceCode;
-
-    @Schema(description = "设备属性")
-    private String deviceProperty;
-
-    @Schema(description = "告警时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private String[] alarmTime;
-
-    @Schema(description = "告警数值")
-    private String alarmValue;
-
-    @Schema(description = "备注", example = "随便")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}

+ 0 - 47
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotAlarmRecordRespVO.java

@@ -1,47 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.alarm.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
-
-@Schema(description = "管理后台 - 运行监控告警记录 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotAlarmRecordRespVO {
-
-    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19813")
-    @ExcelProperty("主键")
-    private Long id;
-
-    @Schema(description = "告警类型", example = "2")
-    @ExcelProperty("告警类型")
-    private String type;
-
-    @Schema(description = "设备编号")
-    @ExcelProperty("设备编号")
-    private String deviceCode;
-
-    @Schema(description = "设备属性")
-    @ExcelProperty("设备属性")
-    private String deviceProperty;
-
-    @Schema(description = "告警时间")
-    @ExcelProperty("告警时间")
-    private String alarmTime;
-
-    @Schema(description = "告警数值")
-    @ExcelProperty("告警数值")
-    private String alarmValue;
-
-    @Schema(description = "备注", example = "随便")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-}

+ 0 - 32
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotAlarmRecordSaveReqVO.java

@@ -1,32 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.alarm.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-
-@Schema(description = "管理后台 - 运行监控告警记录新增/修改 Request VO")
-@Data
-public class IotAlarmRecordSaveReqVO {
-
-    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19813")
-    private Long id;
-
-    @Schema(description = "告警类型", example = "2")
-    private String type;
-
-    @Schema(description = "设备编号")
-    private String deviceCode;
-
-    @Schema(description = "设备属性")
-    private String deviceProperty;
-
-    @Schema(description = "告警时间")
-    private String alarmTime;
-
-    @Schema(description = "告警数值")
-    private String alarmValue;
-
-    @Schema(description = "备注", example = "随便")
-    private String remark;
-
-}

+ 0 - 43
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotAlarmSettingPageReqVO.java

@@ -1,43 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.alarm.vo;
-
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 告警设置分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class IotAlarmSettingPageReqVO extends PageParam {
-
-    @Schema(description = "分类id", example = "20512")
-    private Long classifyId;
-
-    @Schema(description = "分类名称", example = "芋艿")
-    private String classifyName;
-
-    @Schema(description = "设备id", example = "4633")
-    private Long deviceId;
-
-    @Schema(description = "设备名称", example = "芋艿")
-    private String deviceName;
-
-    @Schema(description = "上限")
-    private String maxValue;
-
-    @Schema(description = "下限")
-    private String minValue;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "告警属性")
-    private Integer alarmProperty;
-
-}

+ 0 - 53
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotAlarmSettingRespVO.java

@@ -1,53 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.alarm.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
-
-@Schema(description = "管理后台 - 告警设置 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotAlarmSettingRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "32172")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "分类id", example = "20512")
-    @ExcelProperty("分类id")
-    private Long classifyId;
-
-    @Schema(description = "分类名称", example = "芋艿")
-    @ExcelProperty("分类名称")
-    private String classifyName;
-
-    @Schema(description = "设备id", example = "4633")
-    @ExcelProperty("设备id")
-    private Long deviceId;
-
-    @Schema(description = "设备名称", example = "芋艿")
-    @ExcelProperty("设备名称")
-    private String deviceName;
-
-    @Schema(description = "上限", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("上限")
-    private String maxValue;
-
-    @Schema(description = "下限", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("下限")
-    private String minValue;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    @Schema(description = "告警属性")
-    @ExcelProperty("告警属性")
-    private String alarmProperty;
-
-    @Schema(description = "属性标识")
-    private String propertyCode;
-}

+ 0 - 42
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotAlarmSettingSaveReqVO.java

@@ -1,42 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.alarm.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import javax.validation.constraints.*;
-
-@Schema(description = "管理后台 - 告警设置新增/修改 Request VO")
-@Data
-public class IotAlarmSettingSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "32172")
-    private Long id;
-
-    @Schema(description = "分类id", example = "20512")
-    private Long classifyId;
-
-    @Schema(description = "分类名称", example = "芋艿")
-    private String classifyName;
-
-    @Schema(description = "设备id", example = "4633")
-    private Long deviceId;
-
-    @Schema(description = "设备名称", example = "芋艿")
-    private String deviceName;
-
-    @Schema(description = "上限", requiredMode = Schema.RequiredMode.REQUIRED)
-//    @NotEmpty(message = "上限不能为空")
-    private String maxValue;
-
-    @Schema(description = "下限", requiredMode = Schema.RequiredMode.REQUIRED)
-//    @NotEmpty(message = "下限不能为空")
-    private String minValue;
-
-    @Schema(description = "告警属性")
-    @NotEmpty(message = "告警属性不能为空")
-    private String alarmProperty;
-
-    @Schema(description = "属性标识")
-    @NotEmpty(message = "属性标识不能为空")
-    private String propertyCode;
-}

+ 0 - 75
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotVideoAlarmPageReqVO.java

@@ -1,75 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.alarm.vo;
-
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 资料分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class IotVideoAlarmPageReqVO extends PageParam {
-
-    @Schema(description = "IP地址")
-    private String ipAddress;
-
-    @Schema(description = "端口")
-    private String portNo;
-
-    @Schema(description = "协议")
-    private String protocol;
-
-    @Schema(description = "告警时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private String[] dateTime;
-
-    @Schema(description = "同一告警已经上传的次数", example = "26669")
-    private Integer activePostCount;
-
-    @Schema(description = "触发报警的预置点号")
-    private String presetNo;
-
-    @Schema(description = "告警类型", example = "2")
-    private String eventType;
-
-    @Schema(description = "事件状态")
-    private String eventState;
-
-    @Schema(description = "告警描述", example = "随便")
-    private String eventDescription;
-
-    @Schema(description = "告警截图", example = "https://www.iocoder.cn")
-    private String url;
-
-    @Schema(description = "模型包", example = "王五")
-    private String mpName;
-
-    @Schema(description = "设备id", example = "11119")
-    private String deviceId;
-
-    @Schema(description = "视频任务id", example = "25387")
-    private String taskId;
-
-    @Schema(description = "通道id", example = "16427")
-    private String channelId;
-
-    @Schema(description = "通道名称", example = "赵六")
-    private String channelName;
-
-    @Schema(description = "传输通信协议类型", example = "1")
-    private String protocolType;
-
-    @Schema(description = "子设备局部标识", example = "29919")
-    private String childDevId;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    private String businessChannel;
-}

+ 0 - 96
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotVideoAlarmRespVO.java

@@ -1,96 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.alarm.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
-
-@Schema(description = "管理后台 - 资料 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotVideoAlarmRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28563")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "IP地址")
-    @ExcelProperty("IP地址")
-    private String ipAddress;
-
-    @Schema(description = "端口")
-    @ExcelProperty("端口")
-    private String portNo;
-
-    @Schema(description = "协议")
-    @ExcelProperty("协议")
-    private String protocol;
-
-    @Schema(description = "告警时间")
-    @ExcelProperty("告警时间")
-    private String dateTime;
-
-    @Schema(description = "同一告警已经上传的次数", example = "26669")
-    @ExcelProperty("同一告警已经上传的次数")
-    private Integer activePostCount;
-
-    @Schema(description = "触发报警的预置点号")
-    @ExcelProperty("触发报警的预置点号")
-    private String presetNo;
-
-    @Schema(description = "告警类型", example = "2")
-    @ExcelProperty("告警类型")
-    private String eventType;
-
-    @Schema(description = "事件状态")
-    @ExcelProperty("事件状态")
-    private String eventState;
-
-    @Schema(description = "告警描述", example = "随便")
-    @ExcelProperty("告警描述")
-    private String eventDescription;
-
-    @Schema(description = "告警截图", example = "https://www.iocoder.cn")
-    @ExcelProperty("告警截图")
-    private String url;
-
-    @Schema(description = "模型包", example = "王五")
-    @ExcelProperty("模型包")
-    private String mpName;
-
-    @Schema(description = "设备id", example = "11119")
-    @ExcelProperty("设备id")
-    private String deviceId;
-
-    @Schema(description = "视频任务id", example = "25387")
-    @ExcelProperty("视频任务id")
-    private String taskId;
-
-    @Schema(description = "通道id", example = "16427")
-    @ExcelProperty("通道id")
-    private String channelId;
-
-    @Schema(description = "通道名称", example = "赵六")
-    @ExcelProperty("通道名称")
-    private String channelName;
-
-    @Schema(description = "传输通信协议类型", example = "1")
-    @ExcelProperty("传输通信协议类型")
-    private String protocolType;
-
-    @Schema(description = "子设备局部标识", example = "29919")
-    @ExcelProperty("子设备局部标识")
-    private String childDevId;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    private String businessChannel;
-    private String imageUrl;
-
-    @Schema(description = "设备名称")
-    private String deviceName;
-}

+ 0 - 75
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/IotVideoAlarmSaveReqVO.java

@@ -1,75 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.alarm.vo;
-
-import com.alibaba.fastjson.annotation.JSONField;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-
-@Schema(description = "管理后台 - 资料新增/修改 Request VO")
-@Data
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class IotVideoAlarmSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28563")
-    private Long id;
-
-    @Schema(description = "IP地址")
-    private String ipAddress;
-
-    @Schema(description = "端口")
-    private String portNo;
-
-    @Schema(description = "协议")
-    private String protocol;
-
-    @Schema(description = "告警时间")
-    private String dateTime;
-
-    @Schema(description = "同一告警已经上传的次数", example = "26669")
-    private Integer activePostCount;
-
-    @Schema(description = "触发报警的预置点号")
-    private String presetNo;
-
-    @Schema(description = "告警类型", example = "2")
-    private String eventType;
-
-    @Schema(description = "事件状态")
-    private String eventState;
-
-    @Schema(description = "告警描述", example = "随便")
-    private String eventDescription;
-
-    @Schema(description = "告警截图", example = "https://www.iocoder.cn")
-    private String url;
-
-    @Schema(description = "模型包", example = "王五")
-    @JsonProperty("MPName")
-    private String mpName;
-
-    @Schema(description = "设备id", example = "11119")
-    private String deviceId;
-
-    @Schema(description = "视频任务id", example = "25387")
-    private String taskId;
-
-    @Schema(description = "通道id", example = "16427")
-    @JsonProperty("channelID")
-    private String channelId;
-
-    @Schema(description = "业务通道id")
-    private String businessChannel;
-
-    @Schema(description = "通道名称", example = "赵六")
-    private String channelName;
-
-    @Schema(description = "传输通信协议类型", example = "1")
-    private String protocolType;
-
-    @Schema(description = "子设备局部标识", example = "29919")
-    private String childDevId;
-    @JsonProperty("imageURL")
-    private String imageUrl;
-}

+ 0 - 27
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/alarm/vo/WsTdPropertyVO.java

@@ -1,27 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.alarm.vo;
-
-import lombok.Data;
-
-import java.util.Date;
-
-@Data
-public class WsTdPropertyVO {
-    private long batchId;
-    private Date createTime;
-    private String identity;
-    private int isMonitor;
-    private int logType;
-    private String logValue;
-    private int mode;
-    private String modelName;
-//    private Params params;
-    private Date readTime;
-    private String remark;
-    private String serialNumber;
-    private int tenantId;
-    private String tenantName;
-    private int total;
-    private long tsns;
-    private int userId;
-    private String userName;
-}

+ 0 - 115
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/app/IotAppController.java

@@ -1,115 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.app;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.app.vo.IotAppPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.app.vo.IotAppRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.app.vo.IotAppSaveReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.app.vo.IotWgtRespVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.app.IotAppDO;
-import cn.iocoder.yudao.module.pms.service.app.IotAppService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.annotation.security.PermitAll;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-
-@Tag(name = "管理后台 - app版本更新")
-@RestController
-@RequestMapping("/rq/iot-app")
-@Validated
-public class IotAppController {
-
-    @Resource
-    private IotAppService iotAppService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建app版本更新")
-    @PreAuthorize("@ss.hasPermission('rq:iot-app:create')")
-    public CommonResult<Long> createIotApp(@Valid @RequestBody IotAppSaveReqVO createReqVO) {
-        return success(iotAppService.createIotApp(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新app版本更新")
-    @PreAuthorize("@ss.hasPermission('rq:iot-app:update')")
-    public CommonResult<Boolean> updateIotApp(@Valid @RequestBody IotAppSaveReqVO updateReqVO) {
-        iotAppService.updateIotApp(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除app版本更新")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-app:delete')")
-    public CommonResult<Boolean> deleteIotApp(@RequestParam("id") Long id) {
-        iotAppService.deleteIotApp(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得app版本更新")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-app:query')")
-    public CommonResult<IotAppRespVO> getIotApp(@RequestParam("id") Long id) {
-        IotAppDO iotApp = iotAppService.getIotApp(id);
-        return success(BeanUtils.toBean(iotApp, IotAppRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得app版本更新分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-app:query')")
-    public CommonResult<PageResult<IotAppRespVO>> getIotAppPage(@Valid IotAppPageReqVO pageReqVO) {
-        PageResult<IotAppDO> pageResult = iotAppService.getIotAppPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotAppRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出app版本更新 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-app:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotAppExcel(@Valid IotAppPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotAppDO> list = iotAppService.getIotAppPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "app版本更新.xls", "数据", IotAppRespVO.class,
-                        BeanUtils.toBean(list, IotAppRespVO.class));
-    }
-
-    @GetMapping("/new")
-    @Operation(summary = "获取最新app版本信息")
-    @PermitAll
-    public CommonResult<IotAppRespVO> getNewIotAppRespVO() {
-        IotAppDO aNew = iotAppService.getNew();
-        return success(BeanUtils.toBean(aNew, IotAppRespVO.class));
-    }
-
-    @GetMapping("/newWgt")
-    @Operation(summary = "获取最新app版本信息 wgt app内更新")
-    @PermitAll
-    public CommonResult<IotWgtRespVO> getNewIotWgtRespVO() {
-        IotAppDO aNew = iotAppService.getNew();
-        IotWgtRespVO wgt = new IotWgtRespVO();
-        wgt.setWgtUrl(aNew.getUrl());
-        wgt.setVersion(aNew.getAppVersion());
-        wgt.setForce(true);
-        return success(wgt);
-    }
-}

+ 0 - 34
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/app/vo/IotAppPageReqVO.java

@@ -1,34 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.app.vo;
-
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - app版本更新分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class IotAppPageReqVO extends PageParam {
-
-    @Schema(description = "app版本号")
-    private String appVersion;
-
-    @Schema(description = "app的apk路径", example = "https://www.iocoder.cn")
-    private String url;
-
-    @Schema(description = "备注", example = "你猜")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "app包名称", example = "张三")
-    private String appName;
-
-}

+ 0 - 39
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/app/vo/IotAppRespVO.java

@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.app.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
-
-@Schema(description = "管理后台 - app版本更新 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotAppRespVO {
-
-    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24485")
-    @ExcelProperty("主键")
-    private Long id;
-
-    @Schema(description = "app版本号")
-    @ExcelProperty("app版本号")
-    private String appVersion;
-
-    @Schema(description = "app的apk路径", example = "https://www.iocoder.cn")
-    @ExcelProperty("app的apk路径")
-    private String url;
-
-    @Schema(description = "备注", example = "你猜")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    @Schema(description = "app包名称", example = "张三")
-    @ExcelProperty("app包名称")
-    private String appName;
-
-}

+ 0 - 27
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/app/vo/IotAppSaveReqVO.java

@@ -1,27 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.app.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import javax.validation.constraints.*;
-
-@Schema(description = "管理后台 - app版本更新新增/修改 Request VO")
-@Data
-public class IotAppSaveReqVO {
-
-    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24485")
-    private Long id;
-
-    @Schema(description = "app版本号")
-    private String appVersion;
-
-    @Schema(description = "app的apk路径", example = "https://www.iocoder.cn")
-    private String url;
-
-    @Schema(description = "备注", example = "你猜")
-    private String remark;
-
-    @Schema(description = "app包名称", example = "张三")
-    private String appName;
-
-}

+ 0 - 29
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/app/vo/IotWgtRespVO.java

@@ -1,29 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.app.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Schema(description = "管理后台 - app应用内更新 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotWgtRespVO {
-
-    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24485")
-    @ExcelProperty("主键")
-    private Long id;
-
-    @Schema(description = "wgt版本号")
-    @ExcelProperty("wgt版本号")
-    private String version;
-
-    @Schema(description = "wgt的路径", example = "https://www.iocoder.cn")
-    @ExcelProperty("wgt的路径")
-    private String wgtUrl;
-
-    @Schema(description = "强制更新标识", example = "true false")
-    @ExcelProperty("强制更新标识")
-    private Boolean force;
-
-}

+ 0 - 93
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/depttype/IotDeptTypeController.java

@@ -1,93 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.depttype;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.depttype.vo.IotDeptTypePageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.depttype.vo.IotDeptTypeRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.depttype.vo.IotDeptTypeSaveReqVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.depttype.IotDeptTypeDO;
-import cn.iocoder.yudao.module.pms.service.depttype.IotDeptTypeService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-@Tag(name = "管理后台 - 部门类型")
-@RestController
-@RequestMapping("/pms/iot-dept-type")
-@Validated
-public class IotDeptTypeController {
-
-    @Resource
-    private IotDeptTypeService iotDeptTypeService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建部门类型")
-    @PreAuthorize("@ss.hasPermission('pms:iot-dept-type:create')")
-    public CommonResult<Long> createIotDeptType(@Valid @RequestBody IotDeptTypeSaveReqVO createReqVO) {
-        return success(iotDeptTypeService.createIotDeptType(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新部门类型")
-    @PreAuthorize("@ss.hasPermission('pms:iot-dept-type:update')")
-    public CommonResult<Boolean> updateIotDeptType(@Valid @RequestBody IotDeptTypeSaveReqVO updateReqVO) {
-        iotDeptTypeService.updateIotDeptType(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除部门类型")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('pms:iot-dept-type:delete')")
-    public CommonResult<Boolean> deleteIotDeptType(@RequestParam("id") Long id) {
-        iotDeptTypeService.deleteIotDeptType(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得部门类型")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('pms:iot-dept-type:query')")
-    public CommonResult<IotDeptTypeRespVO> getIotDeptType(@RequestParam("id") Long id) {
-        IotDeptTypeDO iotDeptType = iotDeptTypeService.getIotDeptType(id);
-        return success(BeanUtils.toBean(iotDeptType, IotDeptTypeRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得部门类型分页")
-    @PreAuthorize("@ss.hasPermission('pms:iot-dept-type:query')")
-    public CommonResult<PageResult<IotDeptTypeRespVO>> getIotDeptTypePage(@Valid IotDeptTypePageReqVO pageReqVO) {
-        PageResult<IotDeptTypeDO> pageResult = iotDeptTypeService.getIotDeptTypePage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotDeptTypeRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出部门类型 Excel")
-    @PreAuthorize("@ss.hasPermission('pms:iot-dept-type:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotDeptTypeExcel(@Valid IotDeptTypePageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotDeptTypeDO> list = iotDeptTypeService.getIotDeptTypePage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "部门类型.xls", "数据", IotDeptTypeRespVO.class,
-                        BeanUtils.toBean(list, IotDeptTypeRespVO.class));
-    }
-
-}

+ 0 - 33
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/depttype/vo/IotDeptTypePageReqVO.java

@@ -1,33 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.depttype.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 部门类型分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class IotDeptTypePageReqVO extends PageParam {
-
-    @Schema(description = "部门ID", example = "22428")
-    private Long deptId;
-
-    @Schema(description = "部门名称", example = "芋艿")
-    private String name;
-
-    @Schema(description = "部门状态(zj钻井 xj修井)", example = "2")
-    private String type;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}

+ 0 - 35
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/depttype/vo/IotDeptTypeRespVO.java

@@ -1,35 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.depttype.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - 部门类型 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotDeptTypeRespVO {
-
-    @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8853")
-    @ExcelProperty("部门id")
-    private Long id;
-
-    @Schema(description = "部门ID", example = "22428")
-    @ExcelProperty("部门ID")
-    private Long deptId;
-
-    @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
-    @ExcelProperty("部门名称")
-    private String name;
-
-    @Schema(description = "部门状态(zj钻井 xj修井)", example = "2")
-    @ExcelProperty("部门状态(zj钻井 xj修井)")
-    private String type;
-
-    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-}

+ 0 - 25
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/depttype/vo/IotDeptTypeSaveReqVO.java

@@ -1,25 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.depttype.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import javax.validation.constraints.NotEmpty;
-
-@Schema(description = "管理后台 - 部门类型新增/修改 Request VO")
-@Data
-public class IotDeptTypeSaveReqVO {
-
-    @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8853")
-    private Long id;
-
-    @Schema(description = "部门ID", example = "22428")
-    private Long deptId;
-
-    @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
-    @NotEmpty(message = "部门名称不能为空")
-    private String name;
-
-    @Schema(description = "部门状态(zj钻井 xj修井)", example = "2")
-    private String type;
-
-}

+ 0 - 776
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupController.java

@@ -1,776 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
-
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.pms.ThingsModelDTO;
-import cn.iocoder.yudao.module.pms.controller.admin.TableDataInfo;
-import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPageReqVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup.IotDeviceGroupDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup.IotDeviceGroupDetailDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttask.IotProjectTaskDO;
-import cn.iocoder.yudao.module.pms.dal.mysql.IotDeviceMapper;
-import cn.iocoder.yudao.module.pms.dal.mysql.iotdevicerunlog.IotDeviceRunLogMapper;
-import cn.iocoder.yudao.module.pms.dal.mysql.tdparams.IotTdParamsMapper;
-import cn.iocoder.yudao.module.pms.service.IotDeviceService;
-import cn.iocoder.yudao.module.pms.service.devicegroup.IotDeviceGroupDetailService;
-import cn.iocoder.yudao.module.pms.service.devicegroup.IotDeviceGroupService;
-import cn.iocoder.yudao.module.pms.service.iotprojecttask.IotProjectTaskService;
-import cn.iocoder.yudao.module.system.api.dept.DeptApi;
-import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
-import com.alibaba.fastjson.JSON;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.data.redis.core.StringRedisTemplate;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.client.RestTemplate;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-
-@Tag(name = "管理后台 - PMS成套")
-@RestController
-@RequestMapping("/rq/iot-device-group")
-@Validated
-public class IotDeviceGroupController {
-
-    @Resource
-    private IotDeviceGroupService iotDeviceGroupService;
-    @Autowired
-    private IotDeviceGroupDetailService iotDeviceGroupDetailService;
-    @Autowired
-    private DeptApi deptApi;
-    @Autowired
-    private StringRedisTemplate redisTemplate;
-    @Autowired
-    private IotTdParamsMapper iotTdParamsMapper;
-    @Value("${yanfan.url}")
-    private String yanfanUrl;
-    @Resource
-    private IotDeviceService iotDeviceService;
-    @Resource
-    private RestTemplate restTemplate;
-    @Resource
-    private IotProjectTaskService iotProjectTaskService;
-    @Resource
-    private IotDeviceRunLogMapper iotDeviceRunLogMapper;
-
-    private static final String[] ZYJ_PARAMS = {"一级排气温度", "二级排气温度", "三级排气温度", "四级排气温度1", "四级排气温度2", "四级排气温度3",
-            "五级排气温度", "最终排气温度", "一级排气压力", "二级排气压力", "三级排气压力", "四级排气压力",
-            "五级排气压力", "冷却水温度", "冷却水进口压力", "冷却水出口压力", "润滑油压力", "润滑油温度",
-            "轴瓦温度1", "轴瓦温度2", "轴瓦温度3", "轴瓦温度4", "轴瓦温度5", "轴瓦温度6",
-            "氮气纯度", "瞬时流量", "累计流量", "油压", "套压", "表套", "二套", "振动", "无油1#", "无油2#", "曲轴油位", "油泵状态", "风机状态", "急停状态"};
-    @Autowired
-    private IotDeviceMapper iotDeviceMapper;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建PMS成套")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device-group:create')")
-    public CommonResult<Long> createIotDeviceGroup(@Valid @RequestBody IotDeviceGroupSaveReqVO createReqVO) {
-        return success(iotDeviceGroupService.createIotDeviceGroup(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新PMS成套")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device-group:update')")
-    public CommonResult<Boolean> updateIotDeviceGroup(@Valid @RequestBody IotDeviceGroupSaveReqVO updateReqVO) {
-        iotDeviceGroupService.updateIotDeviceGroup(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除PMS成套")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-device-group:delete')")
-    public CommonResult<Boolean> deleteIotDeviceGroup(@RequestParam("id") Long id) {
-        iotDeviceGroupService.deleteIotDeviceGroup(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得PMS成套")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device-group:query')")
-    public CommonResult<IotDeviceGroupRespVO> getIotDeviceGroup(@RequestParam("id") Long id) {
-        IotDeviceGroupDO iotDeviceGroup = iotDeviceGroupService.getIotDeviceGroup(id);
-        IotDeviceGroupRespVO bean = BeanUtils.toBean(iotDeviceGroup, IotDeviceGroupRespVO.class);
-        List<IotDeviceGroupDetailDO> iotDeviceGroupDetailListByGroupId = iotDeviceGroupDetailService.getIotDeviceGroupDetailListByGroupId(iotDeviceGroup.getId());
-        bean.setDetails(iotDeviceGroupDetailListByGroupId);
-        return success(bean);
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得PMS成套分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device-group:query')")
-    public CommonResult<PageResult<IotDeviceGroupRespVO>> getIotDeviceGroupPage(@Valid IotDeviceGroupPageReqVO pageReqVO) {
-        PageResult<IotDeviceGroupDO> pageResult = iotDeviceGroupService.getIotDeviceGroupPage(pageReqVO);
-        List<IotDeviceGroupRespVO> collect = pageResult.getList().stream().map(e -> {
-            IotDeviceGroupRespVO bean = BeanUtil.toBean(e, IotDeviceGroupRespVO.class);
-            List<IotDeviceGroupDetailDO> iotDeviceGroupDetailListByGroupId = iotDeviceGroupDetailService.getIotDeviceGroupDetailListByGroupId(e.getId());
-            DeptRespDTO dept = deptApi.getDept(e.getDeptId());
-            if (dept != null) {
-                bean.setDeptName(dept.getName());
-            }
-            bean.setDetails(iotDeviceGroupDetailListByGroupId);
-            List<Long> deviceIds = iotDeviceGroupDetailListByGroupId.stream().map(IotDeviceGroupDetailDO::getDeviceId).collect(Collectors.toList());
-            List<IotDeviceDO> iotDeviceDOS = iotDeviceMapper.selectByIds(deviceIds);
-            boolean b = iotDeviceDOS.stream().anyMatch(f -> Objects.nonNull(f.getIfInline())&&3 == f.getIfInline());
-            bean.setIfOnline(b);
-            return bean;
-        }).collect(Collectors.toList());
-        return success(new PageResult<>(collect, pageResult.getTotal()));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出PMS成套 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device-group:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotDeviceGroupExcel(@Valid IotDeviceGroupPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotDeviceGroupDO> list = iotDeviceGroupService.getIotDeviceGroupPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "PMS成套.xls", "数据", IotDeviceGroupRespVO.class,
-                        BeanUtils.toBean(list, IotDeviceGroupRespVO.class));
-    }
-
-
-    @GetMapping("/device/group")
-    @Operation(summary = "获得某设备的成套信息")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device-group:query')")
-    public CommonResult<PageResult<IotDeviceGroupDetailRespVO>> getDeviceGroup(@Valid IotDeviceGroupDetailPageReqVO reqVO) {
-        PageResult<IotDeviceGroupDetailDO> deviceGroupList = iotDeviceGroupService.getDeviceGroupList(reqVO);
-        if (Objects.isNull(deviceGroupList.getList())){
-            return success(new PageResult<>(new ArrayList<>(),0L));
-        }
-        List<IotDeviceGroupDetailRespVO> collect = deviceGroupList.getList().stream().map(e -> {
-            IotDeviceGroupDetailRespVO bean = BeanUtil.toBean(e, IotDeviceGroupDetailRespVO.class);
-            IotDeviceGroupDO iotDeviceGroup = iotDeviceGroupService.getIotDeviceGroup(e.getGroupId());
-            if (iotDeviceGroup != null) {
-                bean.setGroupName(iotDeviceGroup.getName());
-            }
-            return bean;
-        }).collect(Collectors.toList());
-        return success(new PageResult<>(collect, deviceGroupList.getTotal()));
-//        return success(deviceGroupList);
-    }
-
-    @GetMapping("/td/{id}")
-    @Operation(summary = "获得某设备的成套信息")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device-group:query')")
-    public CommonResult<Map<String, Object>> getIotDeviceGroupDetail(@PathVariable("id") Long id) {
-        List<IotDeviceGroupDetailDO> details = iotDeviceGroupDetailService.getIotDeviceGroupDetailListByGroupId(id);
-        Map<String, Object> resultMap = new HashMap<>();
-        Set<Long> groupDeptIds = new HashSet<>();
-        Set<Long> deviceIds = new HashSet<>();
-        details.forEach(e ->{
-            AtomicBoolean nodata = new AtomicBoolean(false);
-            IotDeviceDO iotDevice = iotDeviceService.getIotDevice(e.getDeviceId());
-            if (ObjUtil.isNotEmpty(iotDevice.getYfDeviceId())) {
-                TableDataInfo tableDataInfo = restTemplate.getForObject(yanfanUrl + "/prod-api/iot/device/listThingsModel?deviceId="+iotDevice.getYfDeviceId()+"&pageNum=1&pageSize=200", TableDataInfo.class);
-                if (Objects.nonNull(tableDataInfo)) {
-                    List<ThingsModelDTO> rows = JSON.parseArray(JSON.toJSONString(tableDataInfo.getRows()), ThingsModelDTO.class);
-                    // 3000方以外的设备 只有增压机
-                    if ("增压机".equals(iotDevice.getDeviceName())) {
-                        List<IotDeviceGroupMonitorVO> monitors = new ArrayList<>();
-                        if (CollUtil.isNotEmpty(rows)) {
-                            rows.forEach(row -> {
-                                if (!row.getModelName().contains("位置区码") && !row.getModelName().contains("小区ID") && !row.getModelName().contains("运营商")) {
-                                    IotDeviceGroupMonitorVO monitor = new IotDeviceGroupMonitorVO();
-                                    monitor.setModelName(row.getModelName());
-                                    monitor.setValue(row.getValue());
-                                    monitors.add(monitor);
-                                }
-                            });
-                            // 增压机参数 列表 逆序
-                            Collections.reverse(monitors);
-                        }
-                        resultMap.put("增压机", monitors);
-                    }
-
-                    // PSA 提纯撬 (氮气纯度 氮气压力 瞬时流量 累计流量 设备状态)
-                    if ("提纯撬".equals(iotDevice.getDeviceName())) {
-                        List<IotDeviceGroupMonitorVO> monitors = new ArrayList<>();
-                        if (CollUtil.isNotEmpty(rows)) {
-                            rows.forEach(row -> {
-                                if (row.getModelName().contains("氮气纯度") || row.getModelName().contains("氮气压力") || row.getModelName().contains("瞬时流量") ||
-                                        row.getModelName().contains("PSA累计流量") || row.getModelName().contains("运行状态")) {
-                                    IotDeviceGroupMonitorVO monitor = new IotDeviceGroupMonitorVO();
-                                    String originalName = row.getModelName();
-                                    String psaPrefix = getModelNamePrefix(originalName, "PSA");
-                                    // 去掉前缀,设置modelName
-                                    if (StrUtil.isNotBlank(psaPrefix)) {
-                                        // 使用replaceFirst去掉前缀
-                                        String cleanedName = originalName.replaceFirst(psaPrefix, "");
-                                        monitor.setModelName(cleanedName);
-                                    } else {
-                                        monitor.setModelName(originalName);
-                                    }
-                                    monitor.setValue(row.getValue());
-                                    monitors.add(monitor);
-                                }
-                            });
-                        } else {
-                            // 没有返回数据 填充空值
-                            IotDeviceGroupMonitorVO pure = new IotDeviceGroupMonitorVO();
-                            pure.setModelName("氮气纯度");
-                            pure.setValue("");
-                            monitors.add(pure);
-                            IotDeviceGroupMonitorVO pressure = new IotDeviceGroupMonitorVO();
-                            pressure.setModelName("氮气压力");
-                            pressure.setValue("");
-                            monitors.add(pressure);
-                            IotDeviceGroupMonitorVO instantFlow = new IotDeviceGroupMonitorVO();
-                            instantFlow.setModelName("氮气瞬时流量");
-                            instantFlow.setValue("");
-                            monitors.add(instantFlow);
-                            IotDeviceGroupMonitorVO totalFlow = new IotDeviceGroupMonitorVO();
-                            totalFlow.setModelName("累计流量");
-                            totalFlow.setValue("");
-                            monitors.add(totalFlow);
-                            IotDeviceGroupMonitorVO status = new IotDeviceGroupMonitorVO();
-                            status.setModelName("运行状态");
-                            status.setValue("");
-                            monitors.add(status);
-                        }
-                        resultMap.put("PSA", monitors);
-                    }
-                    if ("空气处理撬".equals(iotDevice.getDeviceName())) {
-                        List<IotDeviceGroupMonitorVO> monitors = new ArrayList<>();
-                        if (CollUtil.isNotEmpty(rows)) {
-                            rows.forEach(row -> {
-                                if (row.getModelName().contains("进口温度") || "出口温度".equals(row.getModelName()) || row.getModelName().contains("出口压力")
-                                        || row.getModelName().contains("风机运行状态")) {
-                                    IotDeviceGroupMonitorVO monitor = new IotDeviceGroupMonitorVO();
-                                    if (row.getModelName().contains("出口压力")) {
-                                        monitor.setModelName("出口压力");
-                                    } else {
-                                        monitor.setModelName(row.getModelName());
-                                    }
-                                    monitor.setValue(row.getValue());
-                                    monitors.add(monitor);
-                                }
-                            });
-                        } else {
-                            // 没有返回数据 填充空值
-                            IotDeviceGroupMonitorVO enterTemp = new IotDeviceGroupMonitorVO();
-                            enterTemp.setModelName("进口温度");
-                            enterTemp.setValue("");
-                            monitors.add(enterTemp);
-                            IotDeviceGroupMonitorVO outTemp = new IotDeviceGroupMonitorVO();
-                            outTemp.setModelName("出口温度");
-                            outTemp.setValue("");
-                            monitors.add(outTemp);
-                            IotDeviceGroupMonitorVO outPress = new IotDeviceGroupMonitorVO();
-                            outPress.setModelName("出口压力");
-                            outPress.setValue("");
-                            monitors.add(outPress);
-                            /* IotDeviceGroupMonitorVO status = new IotDeviceGroupMonitorVO();
-                            status.setModelName("冷干机运行状态");
-                            status.setValue("");
-                            monitors.add(status); */
-                            IotDeviceGroupMonitorVO windStatus = new IotDeviceGroupMonitorVO();
-                            windStatus.setModelName("风机运行状态");
-                            windStatus.setValue("");
-                            monitors.add(windStatus);
-                        }
-                        resultMap.put("空气处理撬", monitors);
-                    }
-                    if (iotDevice.getDeviceName().contains("中压")) {
-                        List<IotDeviceGroupMonitorVO> monitors = new ArrayList<>();
-                        if (CollUtil.isNotEmpty(rows)) {
-                            rows.forEach(row -> {
-                                if (row.getModelName().contains("排气压力") || row.getModelName().contains("排气温度") || row.getModelName().contains("系统压力") ||
-                                        row.getModelName().contains("后轴承温度") || row.getModelName().contains("总运行时间") || row.getModelName().contains("设备状态")
-                                        || row.getModelName().contains("总用电能")) {
-                                    IotDeviceGroupMonitorVO monitor = new IotDeviceGroupMonitorVO();
-                                    String originalName = row.getModelName();
-                                    String prefix = getModelNamePrefix(originalName, "中压");
-                                    // 去掉前缀,设置modelName
-                                    if (StrUtil.isNotBlank(prefix)) {
-                                        // 使用replaceFirst去掉前缀
-                                        String cleanedName = originalName.replaceFirst(prefix, "");
-                                        monitor.setModelName(cleanedName);
-                                    } else {
-                                        monitor.setModelName(originalName);
-                                    }
-                                    monitor.setValue(row.getValue());
-                                    monitors.add(monitor);
-                                }
-                            });
-                        } else {
-                            // 没有返回数据 填充空值
-                            IotDeviceGroupMonitorVO outPress = new IotDeviceGroupMonitorVO();
-                            outPress.setModelName("排气压力");
-                            outPress.setValue("");
-                            monitors.add(outPress);
-                            IotDeviceGroupMonitorVO outTemp = new IotDeviceGroupMonitorVO();
-                            outTemp.setModelName("排气温度");
-                            outTemp.setValue("");
-                            monitors.add(outTemp);
-                            IotDeviceGroupMonitorVO sysPress = new IotDeviceGroupMonitorVO();
-                            sysPress.setModelName("系统压力");
-                            sysPress.setValue("");
-                            monitors.add(sysPress);
-                            IotDeviceGroupMonitorVO backTemp = new IotDeviceGroupMonitorVO();
-                            backTemp.setModelName("后轴承温度");
-                            backTemp.setValue("");
-                            monitors.add(backTemp);
-                            IotDeviceGroupMonitorVO totalTime = new IotDeviceGroupMonitorVO();
-                            totalTime.setModelName("总运行时间");
-                            totalTime.setValue("");
-                            monitors.add(totalTime);
-                            IotDeviceGroupMonitorVO totalPower = new IotDeviceGroupMonitorVO();
-                            totalPower.setModelName("总用电能");
-                            totalPower.setValue("");
-                            monitors.add(totalPower);
-                            IotDeviceGroupMonitorVO status = new IotDeviceGroupMonitorVO();
-                            status.setModelName("设备状态");
-                            status.setValue("");
-                            monitors.add(status);
-                        }
-                        resultMap.put("中压机", monitors);
-                    }
-                    if ("空压机".equals(iotDevice.getDeviceName())) {
-                        List<IotDeviceGroupMonitorVO> monitors = new ArrayList<>();
-                        Set<String> kongYaParts = new HashSet<>();
-                        if (CollUtil.isNotEmpty(rows)) {
-                            rows.forEach(row -> {
-                                if (row.getModelName().contains("空压")) {
-                                    // 获取 空压x 部分作为 key 值
-                                    kongYaParts.add(getKongYaPart(row.getModelName()));
-                                }
-                                if (row.getModelName().contains("累计运行时间") || row.getModelName().contains("累计加载时间") || row.getModelName().contains("排气压力") ||
-                                        row.getModelName().contains("排气温度") || row.getModelName().contains("环境温度") || row.getModelName().contains("系统压力")
-                                        || row.getModelName().contains("喷油温度") || row.getModelName().contains("喷油压力") ||
-                                        row.getModelName().contains("运行状态")) {
-                                    IotDeviceGroupMonitorVO monitor = new IotDeviceGroupMonitorVO();
-                                    // 属性名称去掉 空压x
-                                    // 获取"空压x"前缀部分
-                                    String originalName = row.getModelName();
-                                    String kongYaPrefix = getKongYaPart(originalName);
-                                    // 去掉前缀,设置modelName
-                                    if (StrUtil.isNotBlank(kongYaPrefix)) {
-                                        // 方法1:使用replaceFirst去掉前缀
-                                        String cleanedName = originalName.replaceFirst(kongYaPrefix, "");
-                                        monitor.setModelName(cleanedName);
-                                    } else {
-                                        monitor.setModelName(originalName);
-                                    }
-                                    monitor.setValue(row.getValue());
-                                    monitors.add(monitor);
-                                    // 排序 运行状态 加载状态 字段 置后
-                                    monitors.sort(Comparator.comparingInt(m ->
-                                            m.getModelName().contains("加载状态") ? 2 :
-                                                    m.getModelName().contains("运行状态") ? 1 : 0
-                                    ));
-                                }
-                            });
-                        }
-                        if (CollUtil.isNotEmpty(kongYaParts)) {
-                            resultMap.put(new ArrayList<>(kongYaParts).get(0), monitors);
-                        }
-                    }
-                    if ("液驱机".equals(iotDevice.getDeviceName())) {
-                        List<IotDeviceGroupMonitorVO> monitors = new ArrayList<>();
-                        if (CollUtil.isNotEmpty(rows)) {
-                            rows.forEach(row -> {
-                                if (row.getModelName().contains("入口压力") || row.getModelName().contains("出口温度") || row.getModelName().contains("冷却后温度") ||
-                                        row.getModelName().contains("出口压力")) {
-                                    IotDeviceGroupMonitorVO monitor = new IotDeviceGroupMonitorVO();
-                                    String originalName = row.getModelName();
-                                    String prefix = getModelNamePrefix(originalName, "液驱");
-                                    // 去掉前缀,设置modelName
-                                    if (StrUtil.isNotBlank(prefix)) {
-                                        // 使用replaceFirst去掉前缀
-                                        String cleanedName = originalName.replaceFirst(prefix, "");
-                                        monitor.setModelName(cleanedName);
-                                    } else {
-                                        monitor.setModelName(originalName);
-                                    }
-                                    monitor.setValue(row.getValue());
-                                    monitors.add(monitor);
-                                }
-                            });
-                        } else {
-                            // 没有返回数据 填充空值
-                            IotDeviceGroupMonitorVO enterPressure = new IotDeviceGroupMonitorVO();
-                            enterPressure.setModelName("入口压力");
-                            enterPressure.setValue("");
-                            monitors.add(enterPressure);
-                            IotDeviceGroupMonitorVO onePressure = new IotDeviceGroupMonitorVO();
-                            onePressure.setModelName("一级入口压力");
-                            onePressure.setValue("");
-                            monitors.add(onePressure);
-                            IotDeviceGroupMonitorVO aOneOutTemp = new IotDeviceGroupMonitorVO();
-                            aOneOutTemp.setModelName("A缸一级出口温度");
-                            aOneOutTemp.setValue("");
-                            monitors.add(aOneOutTemp);
-                            IotDeviceGroupMonitorVO aOneColdTemp = new IotDeviceGroupMonitorVO();
-                            aOneColdTemp.setModelName("A缸一级冷却后温度");
-                            aOneColdTemp.setValue("");
-                            monitors.add(aOneColdTemp);
-                            IotDeviceGroupMonitorVO aTwoEnterPressure = new IotDeviceGroupMonitorVO();
-                            aTwoEnterPressure.setModelName("A缸二级入口压力");
-                            aTwoEnterPressure.setValue("");
-                            monitors.add(aTwoEnterPressure);
-
-                            IotDeviceGroupMonitorVO aTwoOutTemp = new IotDeviceGroupMonitorVO();
-                            aTwoOutTemp.setModelName("A缸二级出口温度");
-                            aTwoOutTemp.setValue("");
-                            monitors.add(aTwoOutTemp);
-                            IotDeviceGroupMonitorVO aTwoColdTemp = new IotDeviceGroupMonitorVO();
-                            aTwoColdTemp.setModelName("A缸二级冷却后温度");
-                            aTwoColdTemp.setValue("");
-                            monitors.add(aTwoColdTemp);
-                            IotDeviceGroupMonitorVO aThreeEnterPress = new IotDeviceGroupMonitorVO();
-                            aThreeEnterPress.setModelName("A缸三级入口压力");
-                            aThreeEnterPress.setValue("");
-                            monitors.add(aThreeEnterPress);
-                            IotDeviceGroupMonitorVO bOneOutTemp = new IotDeviceGroupMonitorVO();
-                            bOneOutTemp.setModelName("B缸一级出口温度");
-                            bOneOutTemp.setValue("");
-                            monitors.add(bOneOutTemp);
-                            IotDeviceGroupMonitorVO bOneColdTemp = new IotDeviceGroupMonitorVO();
-                            bOneColdTemp.setModelName("B缸一级冷却后温度");
-                            bOneColdTemp.setValue("");
-                            monitors.add(bOneColdTemp);
-
-                            IotDeviceGroupMonitorVO bTwoEnterPress = new IotDeviceGroupMonitorVO();
-                            bTwoEnterPress.setModelName("B缸二级入口压力");
-                            bTwoEnterPress.setValue("");
-                            monitors.add(bTwoEnterPress);
-                            IotDeviceGroupMonitorVO bTwoOutTemp = new IotDeviceGroupMonitorVO();
-                            bTwoOutTemp.setModelName("B缸二级出口温度");
-                            bTwoOutTemp.setValue("");
-                            monitors.add(bTwoOutTemp);
-                            IotDeviceGroupMonitorVO bTwoColdTemp = new IotDeviceGroupMonitorVO();
-                            bTwoColdTemp.setModelName("B缸二级冷却后温度");
-                            bTwoColdTemp.setValue("");
-                            monitors.add(bTwoColdTemp);
-                            IotDeviceGroupMonitorVO bThreeEnterPress = new IotDeviceGroupMonitorVO();
-                            bThreeEnterPress.setModelName("B缸三级入口压力");
-                            bThreeEnterPress.setValue("");
-                            monitors.add(bThreeEnterPress);
-                            IotDeviceGroupMonitorVO threeOutTemp = new IotDeviceGroupMonitorVO();
-                            threeOutTemp.setModelName("三级出口温度");
-                            threeOutTemp.setValue("");
-                            monitors.add(threeOutTemp);
-                            IotDeviceGroupMonitorVO totalOutTemp = new IotDeviceGroupMonitorVO();
-                            totalOutTemp.setModelName("总出口温度");
-                            totalOutTemp.setValue("");
-                            monitors.add(totalOutTemp);
-                            IotDeviceGroupMonitorVO totalOutPress = new IotDeviceGroupMonitorVO();
-                            totalOutPress.setModelName("总出口压力");
-                            totalOutPress.setValue("");
-                            monitors.add(totalOutPress);
-                        }
-                        resultMap.put("液驱机", monitors);
-                    }
-                } else {
-                    // yanfan 接口异常 返回空数据
-                    nodata.set(true);
-                }
-            } else {
-                // 设备没有 yanfan deviceId
-                nodata.set(true);
-            }
-            if (nodata.get()) {
-                if ("空气处理撬".equals(iotDevice.getDeviceName())) {
-                    List<IotDeviceGroupMonitorVO> monitors = new ArrayList<>();
-                    // 没有返回数据 填充空值
-                    IotDeviceGroupMonitorVO enterTemp = new IotDeviceGroupMonitorVO();
-                    enterTemp.setModelName("进口温度");
-                    enterTemp.setValue("");
-                    monitors.add(enterTemp);
-                    IotDeviceGroupMonitorVO outTemp = new IotDeviceGroupMonitorVO();
-                    outTemp.setModelName("出口温度");
-                    outTemp.setValue("");
-                    monitors.add(outTemp);
-                    IotDeviceGroupMonitorVO outPress = new IotDeviceGroupMonitorVO();
-                    outPress.setModelName("空气处理撬出口压力");
-                    outPress.setValue("");
-                    monitors.add(outPress);
-                    /* IotDeviceGroupMonitorVO status = new IotDeviceGroupMonitorVO();
-                    status.setModelName("冷干机运行状态");
-                    status.setValue("");
-                    monitors.add(status); */
-                    IotDeviceGroupMonitorVO windStatus = new IotDeviceGroupMonitorVO();
-                    windStatus.setModelName("风机运行状态");
-                    windStatus.setValue("");
-                    monitors.add(windStatus);
-                    resultMap.put("空气处理撬", monitors);
-                }
-                if ("液驱机".equals(iotDevice.getDeviceName())) {
-                    List<IotDeviceGroupMonitorVO> monitors = new ArrayList<>();
-                    // 没有返回数据 填充空值
-                    IotDeviceGroupMonitorVO enterPressure = new IotDeviceGroupMonitorVO();
-                    enterPressure.setModelName("液驱入口压力");
-                    enterPressure.setValue("");
-                    monitors.add(enterPressure);
-                    IotDeviceGroupMonitorVO onePressure = new IotDeviceGroupMonitorVO();
-                    onePressure.setModelName("液驱一级入口压力");
-                    onePressure.setValue("");
-                    monitors.add(onePressure);
-                    IotDeviceGroupMonitorVO aOneOutTemp = new IotDeviceGroupMonitorVO();
-                    aOneOutTemp.setModelName("液驱A缸一级出口温度");
-                    aOneOutTemp.setValue("");
-                    monitors.add(aOneOutTemp);
-                    IotDeviceGroupMonitorVO aOneColdTemp = new IotDeviceGroupMonitorVO();
-                    aOneColdTemp.setModelName("液驱A缸一级冷却后温度");
-                    aOneColdTemp.setValue("");
-                    monitors.add(aOneColdTemp);
-                    IotDeviceGroupMonitorVO aTwoEnterPressure = new IotDeviceGroupMonitorVO();
-                    aTwoEnterPressure.setModelName("A缸二级入口压力");
-                    aTwoEnterPressure.setValue("");
-                    monitors.add(aTwoEnterPressure);
-
-                    IotDeviceGroupMonitorVO aTwoOutTemp = new IotDeviceGroupMonitorVO();
-                    aTwoOutTemp.setModelName("A缸二级出口温度");
-                    aTwoOutTemp.setValue("");
-                    monitors.add(aTwoOutTemp);
-                    IotDeviceGroupMonitorVO aTwoColdTemp = new IotDeviceGroupMonitorVO();
-                    aTwoColdTemp.setModelName("A缸二级冷却后温度");
-                    aTwoColdTemp.setValue("");
-                    monitors.add(aTwoColdTemp);
-                    IotDeviceGroupMonitorVO aThreeEnterPress = new IotDeviceGroupMonitorVO();
-                    aThreeEnterPress.setModelName("A缸三级入口压力");
-                    aThreeEnterPress.setValue("");
-                    monitors.add(aThreeEnterPress);
-                    IotDeviceGroupMonitorVO bOneOutTemp = new IotDeviceGroupMonitorVO();
-                    bOneOutTemp.setModelName("B缸一级出口温度");
-                    bOneOutTemp.setValue("");
-                    monitors.add(bOneOutTemp);
-                    IotDeviceGroupMonitorVO bOneColdTemp = new IotDeviceGroupMonitorVO();
-                    bOneColdTemp.setModelName("B缸一级冷却后温度");
-                    bOneColdTemp.setValue("");
-                    monitors.add(bOneColdTemp);
-
-                    IotDeviceGroupMonitorVO bTwoEnterPress = new IotDeviceGroupMonitorVO();
-                    bTwoEnterPress.setModelName("B缸二级入口压力");
-                    bTwoEnterPress.setValue("");
-                    monitors.add(bTwoEnterPress);
-                    IotDeviceGroupMonitorVO bTwoOutTemp = new IotDeviceGroupMonitorVO();
-                    bTwoOutTemp.setModelName("B缸二级出口温度");
-                    bTwoOutTemp.setValue("");
-                    monitors.add(bTwoOutTemp);
-                    IotDeviceGroupMonitorVO bTwoColdTemp = new IotDeviceGroupMonitorVO();
-                    bTwoColdTemp.setModelName("B缸二级冷却后温度");
-                    bTwoColdTemp.setValue("");
-                    monitors.add(bTwoColdTemp);
-                    IotDeviceGroupMonitorVO bThreeEnterPress = new IotDeviceGroupMonitorVO();
-                    bThreeEnterPress.setModelName("B缸三级入口压力");
-                    bThreeEnterPress.setValue("");
-                    monitors.add(bThreeEnterPress);
-                    IotDeviceGroupMonitorVO threeOutTemp = new IotDeviceGroupMonitorVO();
-                    threeOutTemp.setModelName("三级出口温度");
-                    threeOutTemp.setValue("");
-                    monitors.add(threeOutTemp);
-                    IotDeviceGroupMonitorVO totalOutTemp = new IotDeviceGroupMonitorVO();
-                    totalOutTemp.setModelName("总出口温度");
-                    totalOutTemp.setValue("");
-                    monitors.add(totalOutTemp);
-                    IotDeviceGroupMonitorVO totalOutPress = new IotDeviceGroupMonitorVO();
-                    totalOutPress.setModelName("总出口压力");
-                    totalOutPress.setValue("");
-                    monitors.add(totalOutPress);
-                    resultMap.put("液驱机", monitors);
-                }
-                if (iotDevice.getDeviceName().contains("中压")) {
-                    List<IotDeviceGroupMonitorVO> monitors = new ArrayList<>();
-                    // 没有返回数据 填充空值
-                    IotDeviceGroupMonitorVO outPress = new IotDeviceGroupMonitorVO();
-                    outPress.setModelName("中压排气压力");
-                    outPress.setValue("");
-                    monitors.add(outPress);
-                    IotDeviceGroupMonitorVO outTemp = new IotDeviceGroupMonitorVO();
-                    outTemp.setModelName("中压排气温度");
-                    outTemp.setValue("");
-                    monitors.add(outTemp);
-                    IotDeviceGroupMonitorVO sysPress = new IotDeviceGroupMonitorVO();
-                    sysPress.setModelName("中压系统压力");
-                    sysPress.setValue("");
-                    monitors.add(sysPress);
-                    IotDeviceGroupMonitorVO backTemp = new IotDeviceGroupMonitorVO();
-                    backTemp.setModelName("中压后轴承温度");
-                    backTemp.setValue("");
-                    monitors.add(backTemp);
-                    IotDeviceGroupMonitorVO totalTime = new IotDeviceGroupMonitorVO();
-                    totalTime.setModelName("中压总运行时间");
-                    totalTime.setValue("");
-                    monitors.add(totalTime);
-                    IotDeviceGroupMonitorVO totalPower = new IotDeviceGroupMonitorVO();
-                    totalPower.setModelName("总用电能");
-                    totalPower.setValue("");
-                    monitors.add(totalPower);
-                    IotDeviceGroupMonitorVO status = new IotDeviceGroupMonitorVO();
-                    status.setModelName("设备状态");
-                    status.setValue("");
-                    monitors.add(status);
-                    resultMap.put("中压机", monitors);
-                }
-                if ("提纯撬".equals(iotDevice.getDeviceName())) {
-                    List<IotDeviceGroupMonitorVO> monitors = new ArrayList<>();
-                    // 没有返回数据 填充空值
-                    IotDeviceGroupMonitorVO pure = new IotDeviceGroupMonitorVO();
-                    pure.setModelName("PSA氮气纯度");
-                    pure.setValue("");
-                    monitors.add(pure);
-                    IotDeviceGroupMonitorVO pressure = new IotDeviceGroupMonitorVO();
-                    pressure.setModelName("PSA氮气压力");
-                    pressure.setValue("");
-                    monitors.add(pressure);
-                    IotDeviceGroupMonitorVO instantFlow = new IotDeviceGroupMonitorVO();
-                    instantFlow.setModelName("PSA氮气瞬时流量");
-                    instantFlow.setValue("");
-                    monitors.add(instantFlow);
-                    IotDeviceGroupMonitorVO totalFlow = new IotDeviceGroupMonitorVO();
-                    totalFlow.setModelName("PSA累计流量");
-                    totalFlow.setValue("");
-                    monitors.add(totalFlow);
-                    IotDeviceGroupMonitorVO status = new IotDeviceGroupMonitorVO();
-                    status.setModelName("PSA运行状态");
-                    status.setValue("");
-                    monitors.add(status);
-                    resultMap.put("PSA", monitors);
-                }
-                if ("增压机".equals(iotDevice.getDeviceName())) {
-                    List<IotDeviceGroupMonitorVO> zyjParams = createDefaultMonitors(ZYJ_PARAMS);
-                    resultMap.put("PS增压机", zyjParams);
-                }
-            }
-            groupDeptIds.add(iotDevice.getDeptId());
-            // 如果是增压机 设置增压机编号
-            if ("增压机".equals(iotDevice.getDeviceName())) {
-                resultMap.put("deviceCode", iotDevice.getDeviceCode());
-                deviceIds.add(iotDevice.getId());
-            }
-        });
-        // 查询增压机的累计运行时间
-        if (CollUtil.isNotEmpty(deviceIds)) {
-            BigDecimal totalRuntime = iotDeviceRunLogMapper.theMaxTotalRuntime(new ArrayList<>(deviceIds).get(0), "累计运行时间H");
-            resultMap.put("totalRuntime", totalRuntime);
-        }
-        // 查询此成套对应的 部门 - 任务井信息 多个井用逗号分隔
-        List<String> wellNames = new ArrayList<>();
-        String wellNameStr = StrUtil.EMPTY;
-        String deptName = StrUtil.EMPTY;
-        if (CollUtil.isNotEmpty(groupDeptIds)) {
-            List<Long> deptIdList = new ArrayList<>(groupDeptIds);
-            IotProjectTaskPageReqVO pageReqVO = new IotProjectTaskPageReqVO();
-            pageReqVO.setDeptId(deptIdList.get(0));
-            List<IotProjectTaskDO> tasks = iotProjectTaskService.taskWellNames(pageReqVO);
-            if (CollUtil.isNotEmpty(tasks)) {
-                tasks.forEach(task -> {
-                    wellNames.add(task.getWellName());
-                });
-            }
-            if (CollUtil.isNotEmpty(wellNames)) {
-                wellNameStr = StrUtil.join(",", wellNames);
-                resultMap.put("wellName", wellNameStr);
-            }
-            // 查询部门名称
-            DeptRespDTO dept = deptApi.getDept(deptIdList.get(0));
-            deptName = dept.getName();
-            resultMap.put("deptName", deptName);
-        }
-        // 查询成套名称
-        IotDeviceGroupDO deviceGroup = iotDeviceGroupService.getIotDeviceGroup(id);
-        String groupName = StrUtil.EMPTY;
-        if (ObjUtil.isNotEmpty(deviceGroup)) {
-            groupName = deviceGroup.getName();
-            resultMap.put("groupName", groupName);
-        }
-        // 5个空压机 1个液驱压缩机 1个PSA 1个空气处理撬 1个中压机
-        // 空压机参数 (累计运行时间 累计加载时间 排气压力 排气温度 环境温度 系统压力 喷油温度 喷油压力 运行状态 加载状态)
-        // PSA参数 (氮气纯度 氮气压力 瞬时流量 累计流量 设备状态)
-
-        // 液驱压缩机参数 (入口压力 一级入口压力 A缸一级出口温度 A缸一级冷却后温度 A缸二级入口压力 A缸二级出口温度
-        // A缸二级冷却后温度 A缸三级入口压力 B缸一级出口温度 B缸一级冷却后温度 B缸二级入口压力 B缸二级出口温度
-        // B缸二级冷却后温度 B缸三级入口压力 三级出口温度 总出口温度 总出口压力)
-
-        // 空气处理撬参数 (进口温度 出口温度 出口压力 冷干机运行状态 风机运行状态)
-
-        // 中压机参数 (排气压力 排气温度 系统压力 后轴承温度 总运行时间 设备状态 总用电能)
-
-        return success(resultMap);
-    }
-
-    /**
-     * 创建默认监控对象列表(值为空)
-     * @param params 参数名称数组
-     * @return 监控对象列表
-     */
-    private List<IotDeviceGroupMonitorVO> createDefaultMonitors(String[] params) {
-        return Arrays.stream(params)
-                .map(param -> {
-                    IotDeviceGroupMonitorVO monitor = new IotDeviceGroupMonitorVO();
-                    monitor.setModelName(param);
-                    monitor.setValue(""); // 值留空
-                    return monitor;
-                })
-                .collect(Collectors.toList());
-    }
-
-    /**
-     * Java8风格:仅基于“空压”截取字符串,不依赖任何其他分隔符
-     * @param input 原始字符串
-     * @return 截取结果(无匹配返回空字符串)
-     */
-    private static String getKongYaPart(String input) {
-        Pattern KONG_YA_PATTERN = Pattern.compile("空压\\d*");
-        return Optional.ofNullable(input)          // 处理输入为null的情况
-                .filter(str -> str.contains("空压")) // 仅判断是否包含“空压”
-                .map(str -> {
-                    Matcher matcher = KONG_YA_PATTERN.matcher(str);
-                    // 找到第一个匹配的“空压+数字”子串,无则返回空
-                    return matcher.find() ? matcher.group() : "";
-                })
-                .orElse(""); // 无“空压”/输入null时返回空字符串
-    }
-
-    /**
-     * J仅基于“PSA”截取字符串,不依赖任何其他分隔符
-     * @param input 原始字符串
-     * @return 截取结果(无匹配返回空字符串)
-     */
-    private static String getModelNamePrefix(String input, String prefix) {
-        Pattern PSA_PATTERN = Pattern.compile(prefix);
-        return Optional.ofNullable(input)          // 处理输入为null的情况
-                .filter(str -> str.contains(prefix)) // 仅判断是否包含“空压”
-                .map(str -> {
-                    Matcher matcher = PSA_PATTERN.matcher(str);
-                    // 找到第一个匹配的“PSA”子串,无则返回空
-                    return matcher.find() ? matcher.group() : "";
-                })
-                .orElse(""); // 无“PSA”/输入null时返回空字符串
-    }
-
-}

+ 0 - 95
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupDetailController.java

@@ -1,95 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
-
-import cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup.IotDeviceGroupDetailDO;
-import cn.iocoder.yudao.module.pms.service.devicegroup.IotDeviceGroupDetailService;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.security.access.prepost.PreAuthorize;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Operation;
-
-import java.util.*;
-import java.io.IOException;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
-
-
-@Tag(name = "管理后台 - PMS成套明细")
-@RestController
-@RequestMapping("/rq/iot-device-group-detail")
-@Validated
-public class IotDeviceGroupDetailController {
-
-    @Resource
-    private IotDeviceGroupDetailService iotDeviceGroupDetailService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建PMS成套明细")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device-group-detail:create')")
-    public CommonResult<Long> createIotDeviceGroupDetail(@Valid @RequestBody IotDeviceGroupDetailSaveReqVO createReqVO) {
-        return success(iotDeviceGroupDetailService.createIotDeviceGroupDetail(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新PMS成套明细")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device-group-detail:update')")
-    public CommonResult<Boolean> updateIotDeviceGroupDetail(@Valid @RequestBody IotDeviceGroupDetailSaveReqVO updateReqVO) {
-        iotDeviceGroupDetailService.updateIotDeviceGroupDetail(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除PMS成套明细")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-device-group-detail:delete')")
-    public CommonResult<Boolean> deleteIotDeviceGroupDetail(@RequestParam("id") Long id) {
-        iotDeviceGroupDetailService.deleteIotDeviceGroupDetail(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得PMS成套明细")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device-group-detail:query')")
-    public CommonResult<IotDeviceGroupDetailRespVO> getIotDeviceGroupDetail(@RequestParam("id") Long id) {
-        IotDeviceGroupDetailDO iotDeviceGroupDetail = iotDeviceGroupDetailService.getIotDeviceGroupDetail(id);
-        return success(BeanUtils.toBean(iotDeviceGroupDetail, IotDeviceGroupDetailRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得PMS成套明细分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device-group-detail:query')")
-    public CommonResult<PageResult<IotDeviceGroupDetailRespVO>> getIotDeviceGroupDetailPage(@Valid IotDeviceGroupDetailPageReqVO pageReqVO) {
-        PageResult<IotDeviceGroupDetailDO> pageResult = iotDeviceGroupDetailService.getIotDeviceGroupDetailPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotDeviceGroupDetailRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出PMS成套明细 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-device-group-detail:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotDeviceGroupDetailExcel(@Valid IotDeviceGroupDetailPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotDeviceGroupDetailDO> list = iotDeviceGroupDetailService.getIotDeviceGroupDetailPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "PMS成套明细.xls", "数据", IotDeviceGroupDetailRespVO.class,
-                        BeanUtils.toBean(list, IotDeviceGroupDetailRespVO.class));
-    }
-
-}

+ 0 - 43
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupDetailPageReqVO.java

@@ -1,43 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
-
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - PMS成套明细分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class IotDeviceGroupDetailPageReqVO extends PageParam {
-
-    @Schema(description = "成套名称", example = "17288")
-    private Long groupId;
-
-    @Schema(description = "设备id", example = "29616")
-    private Long deviceId;
-
-    @Schema(description = "设备名称", example = "王五")
-    private String deviceName;
-
-    @Schema(description = "设备编码")
-    private String deviceCode;
-
-    @Schema(description = "是否主设备")
-    private Boolean ifMaster;
-
-    @Schema(description = "描述", example = "随便")
-    private String remark;
-
-    @Schema(description = "部门id", example = "2916")
-    private Long deptId;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}

+ 0 - 53
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupDetailRespVO.java

@@ -1,53 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
-
-@Schema(description = "管理后台 - PMS成套明细 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotDeviceGroupDetailRespVO {
-
-    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "18152")
-    @ExcelProperty("主键")
-    private Long id;
-
-    @Schema(description = "成套名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "17288")
-    @ExcelProperty("成套名称")
-    private Long groupId;
-
-    @Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29616")
-    @ExcelProperty("设备id")
-    private Long deviceId;
-
-    @Schema(description = "设备名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
-    @ExcelProperty("设备名称")
-    private String deviceName;
-
-    @Schema(description = "设备编码", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("设备编码")
-    private String deviceCode;
-
-    @Schema(description = "是否主设备", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("是否主设备")
-    private Boolean ifMaster;
-
-    @Schema(description = "描述", example = "随便")
-    @ExcelProperty("描述")
-    private String remark;
-
-    @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2916")
-    @ExcelProperty("部门id")
-    private Long deptId;
-
-    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    private String groupName;
-
-}

+ 0 - 44
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupDetailSaveReqVO.java

@@ -1,44 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-import java.util.*;
-
-@Schema(description = "管理后台 - PMS成套明细新增/修改 Request VO")
-@Data
-public class IotDeviceGroupDetailSaveReqVO {
-
-    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "18152")
-    private Long id;
-
-    @Schema(description = "成套名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "17288")
-    @NotNull(message = "成套名称不能为空")
-    private Long groupId;
-
-    @Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29616")
-    @NotNull(message = "设备id不能为空")
-    private Long deviceId;
-
-    @Schema(description = "设备名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
-    @NotEmpty(message = "设备名称不能为空")
-    private String deviceName;
-
-    @Schema(description = "设备编码", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "设备编码不能为空")
-    private String deviceCode;
-
-    @Schema(description = "是否主设备", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "是否主设备不能为空")
-    private Boolean ifMaster;
-
-    @Schema(description = "描述", example = "随便")
-    private String remark;
-
-    @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2916")
-    @NotNull(message = "部门id不能为空")
-    private Long deptId;
-
-}

+ 0 - 24
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupMonitorVO.java

@@ -1,24 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Schema(description = "管理后台 - PMS成套 监控 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotDeviceGroupMonitorVO {
-
-    @Schema(description = "参数名称", example = "PSA氮气纯度")
-    @ExcelProperty("参数名称")
-    private String modelName;
-
-    @Schema(description = "参数值")
-    @ExcelProperty("参数值")
-    private String value;
-
-    @Schema(description = "排序值")
-    @ExcelProperty("排序值")
-    private Integer sort;
-}

+ 0 - 33
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupPageReqVO.java

@@ -1,33 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
-
-import lombok.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - PMS成套分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class IotDeviceGroupPageReqVO extends PageParam {
-
-    @Schema(description = "成套名称", example = "赵六")
-    private String name;
-
-    @Schema(description = "成套编码")
-    private String code;
-
-    @Schema(description = "描述", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "部门id", example = "646")
-    private Long deptId;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-}

+ 0 - 47
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupRespVO.java

@@ -1,47 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
-
-import cn.iocoder.yudao.module.pms.dal.dataobject.devicegroup.IotDeviceGroupDetailDO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-import com.alibaba.excel.annotation.*;
-
-@Schema(description = "管理后台 - PMS成套 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotDeviceGroupRespVO {
-
-    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "12540")
-    @ExcelProperty("主键")
-    private Long id;
-
-    @Schema(description = "成套名称", example = "赵六")
-    @ExcelProperty("成套名称")
-    private String name;
-
-    @Schema(description = "成套编码")
-    @ExcelProperty("成套编码")
-    private String code;
-
-    @Schema(description = "描述", example = "你说的对")
-    @ExcelProperty("描述")
-    private String remark;
-
-    @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "646")
-    @ExcelProperty("部门id")
-    private Long deptId;
-
-    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-    private String type;
-
-    private String deptName;
-
-    private List<IotDeviceGroupDetailDO> details;
-    @Schema(description = "是否在线")
-    private Boolean ifOnline;
-}

+ 0 - 31
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/devicegroup/IotDeviceGroupSaveReqVO.java

@@ -1,31 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.devicegroup;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-@Schema(description = "管理后台 - PMS成套新增/修改 Request VO")
-@Data
-public class IotDeviceGroupSaveReqVO {
-
-    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "12540")
-    private Long id;
-
-    @Schema(description = "成套名称", example = "赵六")
-    private String name;
-
-    @Schema(description = "成套编码")
-    private String code;
-
-    @Schema(description = "描述", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "646")
-    @NotNull(message = "部门id不能为空")
-    private Long deptId;
-    private String type;
-
-    private List<IotDeviceGroupDetailSaveReqVO> details;
-}

+ 0 - 202
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/IotFailureReportController.java

@@ -1,202 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.failure;
-
-import cn.hutool.core.bean.BeanUtil;
-import cn.iocoder.yudao.framework.common.exception.ServiceException;
-import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
-import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportProcessVO;
-import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportSaveReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceperson.vo.IotDevicePersonRelationSaveReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainSaveVO;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.failure.IotFailureReportDO;
-import cn.iocoder.yudao.module.pms.service.IotDeviceService;
-import cn.iocoder.yudao.module.pms.service.failure.IotFailureReportService;
-import cn.iocoder.yudao.module.pms.service.iotdeviceperson.IotDevicePersonService;
-import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
-import cn.iocoder.yudao.module.system.service.dict.DictDataService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import javax.annotation.Resource;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.security.access.prepost.PreAuthorize;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Operation;
-
-import javax.validation.*;
-import javax.servlet.http.*;
-import java.util.*;
-import java.io.IOException;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
-
-
-@Tag(name = "管理后台 - 故障上报")
-@RestController
-@RequestMapping("/rq/iot-failure-report")
-@Validated
-public class IotFailureReportController {
-
-    @Resource
-    private IotFailureReportService iotFailureReportService;
-    @Autowired
-    private AdminUserApi adminUserApi;
-    @Autowired
-    private BpmProcessInstanceApi bpmProcessInstanceApi;
-    @Autowired
-    private IotDeviceService iotDeviceService;
-    @Autowired
-    private IotDevicePersonService iotDevicePersonService;
-    @Autowired
-    private DictDataService dictDataService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建故障上报")
-    @PreAuthorize("@ss.hasPermission('rq:iot-failure-report:create')")
-    public CommonResult<Long> createIotFailureReport(@Valid @RequestBody IotFailureReportSaveReqVO createReqVO) {
-        return success(iotFailureReportService.createIotFailureReport(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新故障上报")
-    @PreAuthorize("@ss.hasPermission('rq:iot-failure-report:update')")
-    public CommonResult<Boolean> updateIotFailureReport(@Valid @RequestBody IotFailureReportSaveReqVO updateReqVO) {
-        iotFailureReportService.updateIotFailureReport(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除故障上报")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-failure-report:delete')")
-    public CommonResult<Boolean> deleteIotFailureReport(@RequestParam("id") Long id) {
-        iotFailureReportService.deleteIotFailureReport(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得故障上报")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-failure-report:query')")
-    public CommonResult<IotFailureReportRespVO> getIotFailureReport(@RequestParam("id") Long id) {
-        IotFailureReportDO iotFailureReport = iotFailureReportService.getIotFailureReport(id);
-        IotFailureReportRespVO bean = BeanUtils.toBean(iotFailureReport, IotFailureReportRespVO.class);
-        if (Objects.nonNull(bean.getApprovalId())) {
-            AdminUserRespDTO user = adminUserApi.getUser(bean.getApprovalId());
-            bean.setApprovalName(Objects.nonNull(user) ? user.getNickname() : "");
-        }
-        return success(bean);
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得故障上报分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-failure-report:query')")
-    public CommonResult<PageResult<IotFailureReportRespVO>> getIotFailureReportPage(@Valid IotFailureReportPageReqVO pageReqVO) {
-        PageResult<IotFailureReportDO> pageResult = iotFailureReportService.getIotFailureReportPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotFailureReportRespVO.class));
-    }
-
-    @GetMapping("/page/app")
-    @Operation(summary = "获得故障上报分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-failure-report:query')")
-    public CommonResult<PageResult<IotFailureReportRespVO>> getIotFailureReportPageApp(@Valid IotFailureReportPageReqVO pageReqVO) {
-        PageResult<IotFailureReportDO> pageResult = iotFailureReportService.getIotFailureReportPageApp(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotFailureReportRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出故障上报 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-failure-report:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotFailureReportExcel(@Valid IotFailureReportPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotFailureReportDO> list = iotFailureReportService.getIotFailureReportPage(pageReqVO).getList();
-        List<DictDataDO> failureStatus = dictDataService.getDictDataListByDictType("pms_failure_status");
-        List<DictDataDO> failureType = dictDataService.getDictDataListByDictType("failure_type");
-        List<IotFailureReportRespVO> bean = BeanUtils.toBean(list, IotFailureReportRespVO.class);
-        bean.forEach(e -> {
-            failureStatus.stream().filter(f -> f.getValue().equals(e.getStatus())).findFirst().ifPresent(f -> {
-                e.setStatus(f.getLabel());
-            });
-            if (Objects.nonNull(e.getIfStop())) {
-                e.setStop(e.getIfStop()?"是":"否");
-            }
-            if (Objects.nonNull(e.getIfDeal())) {
-                e.setDeal(e.getIfDeal()?"是":"否");
-            }
-            if (Objects.nonNull(e.getNeedHelp())) {
-                e.setIfNeedHelp(e.getNeedHelp()?"是":"否");
-            }
-            failureType.stream().filter(f -> f.getValue().equals(e.getFailureType())).findFirst().ifPresent(f -> {
-                e.setFailureType(f.getLabel());
-            });
-        });
-        // 导出 Excel
-        ExcelUtils.write(response, "故障上报.xls", "数据", IotFailureReportRespVO.class,
-                        BeanUtils.toBean(bean, IotFailureReportRespVO.class));
-    }
-
-    @PutMapping("/submitForApproval")
-    @Operation(summary = "提交审核")
-    @PreAuthorize("@ss.hasPermission('supplier:base:create')")
-    public CommonResult<Boolean> submitForApproval(@RequestParam("id") Long id) {
-        iotFailureReportService.submitForApproval(id);
-        return success(true);
-    }
-
-    @PutMapping("/process-info")
-    @Operation(summary = "故障上报更新流程信息")
-    @PreAuthorize("@ss.hasPermission('rq:iot-failure-report:create')")
-    public CommonResult<String> updateIotFailureReportProcess(@RequestParam("processId") String processId,@RequestParam("id")String id, @RequestParam("type") String type,
-                                                            @RequestParam("assigneeUserId") String assigneeUserId,@RequestParam("trans") String trans) {
-        IotFailureReportDO failureReport = iotFailureReportService.getIotFailureReport(Long.valueOf(id));
-        if (Objects.isNull(failureReport)) {
-            throw new ServiceException(666,"无该故障");
-        }
-        String deviceCompany = iotDeviceService.getDeviceCompany(failureReport.getDeviceId());
-        if ("rh".equals(deviceCompany)) {
-            IotFailureReportProcessVO iotFailureReportProcessVO = new IotFailureReportProcessVO();
-            iotFailureReportProcessVO.setId(id);
-            iotFailureReportProcessVO.setType(type);
-            iotFailureReportProcessVO.setAssigneeUserId(Long.valueOf(assigneeUserId));
-            iotFailureReportService.updateIotFailureReportProcess(iotFailureReportProcessVO);
-            return success("完成");
-        } else {
-            if ("true".equals(trans)) {
-                Map<String, Object> params = new HashMap<>();
-                params.put("continue", "1");
-                bpmProcessInstanceApi.updateProcessVariables(processId, params);
-                IotFailureReportProcessVO iotFailureReportProcessVO = new IotFailureReportProcessVO();
-                iotFailureReportProcessVO.setId(id);
-                iotFailureReportProcessVO.setType(type);
-                iotFailureReportProcessVO.setAssigneeUserId(Long.valueOf(assigneeUserId));
-                iotFailureReportService.updateIotFailureReportProcess(iotFailureReportProcessVO);
-            }
-            return success("完成");
-        }
-    }
-
-    @GetMapping("/get/approval")
-    @Operation(summary = "获得故障上报")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-failure-report:query')")
-    public CommonResult<List<AdminUserRespDTO>> getApproval() {
-        List<AdminUserRespDTO> approval = iotFailureReportService.getApproval();
-        return success(approval);
-    }
-}

+ 0 - 86
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportPageReqVO.java

@@ -1,86 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.failure.vo;
-
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 故障上报分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class IotFailureReportPageReqVO extends PageParam {
-
-    @Schema(description = "故障编码")
-    private String failureCode;
-
-    @Schema(description = "故障名称", example = "李四")
-    private String failureName;
-
-    @Schema(description = "设备id", example = "15038")
-    private Long deviceId;
-    @Schema(description = "设备名称")
-    private String deviceName;
-
-    @Schema(description = "状态", example = "1")
-    private String status;
-
-    @Schema(description = "审核状态")
-    private String auditStatus;
-
-    @Schema(description = "是否停机")
-    private Boolean ifStop;
-
-    @Schema(description = "故障时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] failureTime;
-
-    @Schema(description = "故障影响")
-    private String failureInfluence;
-
-    @Schema(description = "故障系统")
-    private String failureSystem;
-
-    @Schema(description = "故障描述", example = "随便")
-    private String description;
-
-    @Schema(description = "图片")
-    private String pic;
-
-    @Schema(description = "是否解决")
-    private Boolean ifDeal;
-
-    @Schema(description = "是否需要协助")
-    private Boolean needHelp;
-
-    @Schema(description = "解决办法")
-    private String solution;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "部门id")
-    private Long deptId;
-
-    @Schema(description = "维修负责人")
-    private Long assigneeUserId;
-
-    @Schema(description = "维修类型内外")
-    private String type;
-
-    @Schema(description = "设备编码")
-    private String deviceCode;
-
-    private String failureType;
-
-    @Schema(description = "部门id集合 项目-任务 根据选择的部门筛选设备")
-    private List<Long> deptIds;
-}

+ 0 - 22
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportProcessVO.java

@@ -1,22 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.failure.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-
-@Data
-public class IotFailureReportProcessVO {
-    @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "任务编号不能为空")
-    private String id;
-
-    @Schema(description = "新审批人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
-    @NotNull(message = "新审批人的用户编号不能为空")
-    private Long assigneeUserId;
-
-    @Schema(description = "转办原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "做不了决定,需要你先帮忙瞅瞅")
-    @NotEmpty(message = "转办原因不能为空")
-    private String type;
-}

+ 0 - 115
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportRespVO.java

@@ -1,115 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.failure.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-
-import java.math.BigDecimal;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
-
-@Schema(description = "管理后台 - 故障上报 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotFailureReportRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "17824")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "故障编码", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("故障编码")
-    private String failureCode;
-
-    @Schema(description = "故障名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
-    @ExcelProperty("故障名称")
-    private String failureName;
-
-    @Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "15038")
-//    @ExcelProperty("设备id")
-    private Long deviceId;
-    @Schema(description = "设备编码")
-    @ExcelProperty("设备编码")
-    private String deviceCode;
-    @Schema(description = "设备名称")
-    @ExcelProperty("设备名称")
-    private String deviceName;
-
-    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @ExcelProperty("状态")
-    private String status;
-
-    @Schema(description = "审核状态")
-    private String auditStatus;
-
-    @Schema(description = "是否停机")
-//    @ExcelProperty("是否停机")
-    private Boolean ifStop;
-    @ExcelProperty("是否停机")
-    private String stop;
-
-    @Schema(description = "故障时间")
-    @ExcelProperty("故障时间")
-    private LocalDateTime failureTime;
-
-    @Schema(description = "解决时间")
-    @ExcelProperty("解决时间")
-    private LocalDateTime dealTime;
-
-    @Schema(description = "处理小时")
-    private BigDecimal dealHour;
-
-    @Schema(description = "故障影响")
-    @ExcelProperty("故障影响")
-    private String failureInfluence;
-
-    @Schema(description = "故障系统")
-    @ExcelProperty("故障系统")
-    private String failureSystem;
-
-    @Schema(description = "故障描述", example = "随便")
-    @ExcelProperty("故障描述")
-    private String description;
-
-    @Schema(description = "图片")
-    @ExcelProperty("图片")
-    private String pic;
-
-    @Schema(description = "是否解决")
-//    @ExcelProperty("是否解决")
-    private Boolean ifDeal;
-    @ExcelProperty("是否解决")
-    private String deal;
-
-    @Schema(description = "是否需要协助")
-//    @ExcelProperty("是否需要协助")
-    private Boolean needHelp;
-    @ExcelProperty("是否需要协助")
-    private String ifNeedHelp;
-    @Schema(description = "解决办法")
-    @ExcelProperty("解决办法")
-    private String solution;
-
-    @Schema(description = "备注", example = "你说的对")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    @Schema(description = "维修负责人")
-    private Long assigneeUserId;
-
-    @Schema(description = "维修类型内外")
-    private String type;
-    /**审批人id*/
-    private Long approvalId;
-
-    private String approvalName;
-    @ExcelProperty("故障类型")
-    private String failureType;
-
-    private Long failureNum;
-}

+ 0 - 82
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportSaveReqVO.java

@@ -1,82 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.failure.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import javax.validation.constraints.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - 故障上报新增/修改 Request VO")
-@Data
-public class IotFailureReportSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "17824")
-    private Long id;
-
-    @Schema(description = "故障编码", requiredMode = Schema.RequiredMode.REQUIRED)
-    //@NotEmpty(message = "故障编码不能为空")
-    private String failureCode;
-
-    @Schema(description = "故障名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
-    //@NotEmpty(message = "故障名称不能为空")
-    private String failureName;
-
-    @Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "15038")
-    @NotNull(message = "设备id不能为空")
-    private Long deviceId;
-
-    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    //@NotEmpty(message = "状态不能为空")
-    private String status;
-
-    @Schema(description = "是否停机")
-    private Boolean ifStop;
-
-    @Schema(description = "故障时间")
-    private LocalDateTime failureTime;
-    @Schema(description = "解决时间")
-    private LocalDateTime dealTime;
-
-    @Schema(description = "故障影响")
-    private String failureInfluence;
-
-    @Schema(description = "故障系统")
-    private String failureSystem;
-
-    @Schema(description = "故障描述", example = "随便")
-    private String description;
-
-    @Schema(description = "图片")
-    private String pic;
-
-    @Schema(description = "是否解决")
-    private Boolean ifDeal;
-
-    @Schema(description = "是否需要协助")
-    private Boolean needHelp;
-
-    @Schema(description = "解决办法")
-    private String solution;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "部门id")
-    private Long deptId;
-
-    @Schema(description = "维修负责人")
-    private Long assigneeUserId;
-
-    @Schema(description = "维修类型内外")
-    private String type;
-
-    @Schema(description = "设备编码")
-    private String deviceCode;
-
-    /**审批人id*/
-    @Schema(description = "审批人id逗号分隔")
-    private String approvalId;
-
-    private String failureType;
-}

+ 0 - 106
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/information/IotInformationDbController.java

@@ -1,106 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.information;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.information.vo.IotInformationDbPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.information.vo.IotInformationDbRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.information.vo.IotInformationDbSaveReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainRespVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotProductClassifyDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.information.IotInformationDbDO;
-import cn.iocoder.yudao.module.pms.service.IotProductClassifyService;
-import cn.iocoder.yudao.module.pms.service.information.IotInformationDbService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-
-@Tag(name = "管理后台 - 故障知识库")
-@RestController
-@RequestMapping("/rq/iot-information-db")
-@Validated
-public class IotInformationDbController {
-
-    @Resource
-    private IotInformationDbService iotInformationDbService;
-    @Resource
-    private IotProductClassifyService iotProductClassifyService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建故障知识库")
-    @PreAuthorize("@ss.hasPermission('rq:iot-information-db:create')")
-    public CommonResult<Long> createIotInformationDb(@Valid @RequestBody IotInformationDbSaveReqVO createReqVO) {
-        return success(iotInformationDbService.createIotInformationDb(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新故障知识库")
-    @PreAuthorize("@ss.hasPermission('rq:iot-information-db:update')")
-    public CommonResult<Boolean> updateIotInformationDb(@Valid @RequestBody IotInformationDbSaveReqVO updateReqVO) {
-        iotInformationDbService.updateIotInformationDb(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除故障知识库")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-information-db:delete')")
-    public CommonResult<Boolean> deleteIotInformationDb(@RequestParam("id") Long id) {
-        iotInformationDbService.deleteIotInformationDb(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得故障知识库")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-information-db:query')")
-    public CommonResult<IotInformationDbRespVO> getIotInformationDb(@RequestParam("id") Long id) {
-        IotInformationDbDO iotInformationDb = iotInformationDbService.getIotInformationDb(id);
-        return success(BeanUtils.toBean(iotInformationDb, IotInformationDbRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得故障知识库分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-information-db:query')")
-    public CommonResult<PageResult<IotInformationDbRespVO>> getIotInformationDbPage(@Valid IotInformationDbPageReqVO pageReqVO) {
-        PageResult<IotInformationDbDO> pageResult = iotInformationDbService.getIotInformationDbPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotInformationDbRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出故障知识库 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-information-db:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotInformationDbExcel(@Valid IotInformationDbPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotInformationDbDO> list = iotInformationDbService.getIotInformationDbPage(pageReqVO).getList();
-        List<IotInformationDbRespVO> bean = BeanUtils.toBean(list, IotInformationDbRespVO.class);
-        bean.forEach(e ->{
-            IotProductClassifyDO iotProductClassify = iotProductClassifyService.getIotProductClassify(e.getDeviceType());
-            if (iotProductClassify != null) {
-                e.setDeviceTypeName(iotProductClassify.getName());
-            }
-        });
-        // 导出 Excel
-        ExcelUtils.write(response, "故障知识库.xls", "数据", IotInformationDbRespVO.class,
-                        BeanUtils.toBean(bean, IotInformationDbRespVO.class));
-    }
-
-}

+ 0 - 48
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/information/vo/IotInformationDbPageReqVO.java

@@ -1,48 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.information.vo;
-
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 故障知识库分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class IotInformationDbPageReqVO extends PageParam {
-
-    @Schema(description = "设备分类")
-    private Long deviceType;
-
-    @Schema(description = "故障影响")
-    private String failureInfluence;
-
-    @Schema(description = "故障模块/影响")
-    private String failureSystem;
-
-    @Schema(description = "描述", example = "你猜")
-    private String description;
-
-    @Schema(description = "解决办法")
-    private String solutions;
-
-    @Schema(description = "备注", example = "随便")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "流程实例id", example = "12034")
-    private String processInstanceId;
-
-    @Schema(description = "审核状态", example = "2")
-    private Integer auditStatus;
-
-    @Schema(description = "设备类别名称")
-    private String className;
-}

+ 0 - 58
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/information/vo/IotInformationDbRespVO.java

@@ -1,58 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.information.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
-
-@Schema(description = "管理后台 - 故障知识库 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotInformationDbRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7433")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "设备分类", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    private Long deviceType;
-    @ExcelProperty("设备分类")
-    private String deviceTypeName;
-
-    @Schema(description = "故障影响")
-    @ExcelProperty("故障影响")
-    private String failureInfluence;
-
-    @Schema(description = "故障模块/影响")
-    @ExcelProperty("故障模块/影响")
-    private String failureSystem;
-
-    @Schema(description = "描述", example = "你猜")
-    @ExcelProperty("描述")
-    private String description;
-
-    @Schema(description = "解决办法")
-    @ExcelProperty("解决办法")
-    private String solutions;
-
-    @Schema(description = "备注", example = "随便")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    @Schema(description = "流程实例id", example = "12034")
-//    @ExcelProperty("流程实例id")
-    private String processInstanceId;
-
-    @Schema(description = "审核状态", example = "2")
-//    @ExcelProperty("审核状态")
-    private Integer auditStatus;
-
-    @Schema(description = "设备类别名称")
-    private String className;
-}

+ 0 - 39
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/information/vo/IotInformationDbSaveReqVO.java

@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.information.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import javax.validation.constraints.*;
-
-@Schema(description = "管理后台 - 故障知识库新增/修改 Request VO")
-@Data
-public class IotInformationDbSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7433")
-    private Long id;
-
-    @Schema(description = "设备分类" )
-    private Long deviceType;
-
-    @Schema(description = "故障影响")
-    private String failureInfluence;
-
-    @Schema(description = "故障模块/影响")
-    private String failureSystem;
-
-    @Schema(description = "描述", example = "你猜")
-    private String description;
-
-    @Schema(description = "解决办法")
-    private String solutions;
-
-    @Schema(description = "备注", example = "随便")
-    private String remark;
-
-    @Schema(description = "流程实例id", example = "12034")
-    private String processInstanceId;
-
-    @Schema(description = "审核状态", example = "2")
-    private Integer auditStatus;
-
-}

+ 0 - 156
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/item/IotInspectItemController.java

@@ -1,156 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.item;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.information.vo.IotInformationDbRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.item.vo.IotInspectItemPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.item.vo.IotInspectItemRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.item.vo.IotInspectItemSaveReqVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotProductClassifyDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectItemDO;
-import cn.iocoder.yudao.module.pms.service.IotDeviceService;
-import cn.iocoder.yudao.module.pms.service.IotProductClassifyService;
-import cn.iocoder.yudao.module.pms.service.inspect.IotInspectItemService;
-import cn.iocoder.yudao.module.system.api.dept.DeptApi;
-import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.annotation.security.PermitAll;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-import java.util.Objects;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-
-@Tag(name = "管理后台 - 巡检项")
-@RestController
-@RequestMapping("/rq/iot-inspect-item")
-@Validated
-public class IotInspectItemController {
-
-    @Resource
-    private IotInspectItemService iotInspectItemService;
-    @Autowired
-    private IotDeviceService iotDeviceService;
-    @Autowired
-    private AdminUserApi adminUserApi;
-    @Autowired
-    private IotProductClassifyService iotProductClassifyService;
-    @Autowired
-    private DeptApi deptApi;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建巡检项")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-item:create')")
-    public CommonResult<Long> createIotInspectItem(@Valid @RequestBody IotInspectItemSaveReqVO createReqVO) {
-        return success(iotInspectItemService.createIotInspectItem(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新巡检项")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-item:update')")
-    public CommonResult<Boolean> updateIotInspectItem(@Valid @RequestBody IotInspectItemSaveReqVO updateReqVO) {
-        iotInspectItemService.updateIotInspectItem(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除巡检项")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-item:delete')")
-    public CommonResult<Boolean> deleteIotInspectItem(@RequestParam("id") Long id) {
-        iotInspectItemService.deleteIotInspectItem(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得巡检项")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-item:query')")
-    public CommonResult<IotInspectItemRespVO> getIotInspectItem(@RequestParam("id") Long id) {
-        IotInspectItemDO iotInspectItem = iotInspectItemService.getIotInspectItem(id);
-        return success(BeanUtils.toBean(iotInspectItem, IotInspectItemRespVO.class));
-    }
-
-
-    @GetMapping("/page")
-    @Operation(summary = "获得巡检项分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-item:query')")
-    public CommonResult<PageResult<IotInspectItemRespVO>> getIotInspectItemPage(@Valid IotInspectItemPageReqVO pageReqVO) {
-        PageResult<IotInspectItemDO> pageResult = iotInspectItemService.getIotInspectItemPage(pageReqVO);
-        pageResult.getList().forEach(item->{
-            if (Objects.nonNull(item.getCreator())) {
-                AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(item.getCreator()));
-                if (Objects.nonNull(user)) {
-                    item.setCreateName(user.getNickname());
-                }
-            }
-        });
-        return success(BeanUtils.toBean(pageResult, IotInspectItemRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出巡检项 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-item:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotInspectItemExcel(@Valid IotInspectItemPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotInspectItemDO> list = iotInspectItemService.getIotInspectItemPage(pageReqVO).getList();
-        List<IotInspectItemRespVO> bean = BeanUtils.toBean(list, IotInspectItemRespVO.class);
-        List<AdminUserRespDTO> allUser = adminUserApi.getAllUser();
-        List<DeptRespDTO> deptList = deptApi.getDeptList();
-        bean.forEach(e ->{
-            IotProductClassifyDO iotProductClassify = iotProductClassifyService.getIotProductClassify(e.getDeviceClassify());
-            if (Objects.nonNull(iotProductClassify)) {
-                e.setDeviceClassifyName(iotProductClassify.getName());
-            }
-            allUser.stream().filter(f -> String.valueOf(f.getId()).equals(e.getCreator())).findFirst().ifPresent(f -> {
-                e.setCreateName(f.getNickname());
-            });
-            deptList.stream().filter(f -> f.getId().equals(e.getDeptId())).findFirst().ifPresent(f -> {
-                e.setDeptName(f.getName());
-            });
-        });
-        // 导出 Excel
-        ExcelUtils.write(response, "巡检项.xls", "数据", IotInspectItemRespVO.class,
-                        BeanUtils.toBean(bean, IotInspectItemRespVO.class));
-    }
-
-    @GetMapping("/init/item")
-    @PermitAll
-    public void initCode(){
-        IotInspectItemPageReqVO iotInspectItemPageReqVO = new IotInspectItemPageReqVO();
-        iotInspectItemPageReqVO.setPageNo(1);
-        iotInspectItemPageReqVO.setPageSize(2000);
-        PageResult<IotInspectItemDO> iotInspectItemPage = iotInspectItemService.getIotInspectItemPage(iotInspectItemPageReqVO);
-        List<IotInspectItemDO> list = iotInspectItemPage.getList();
-        list.stream().filter(e-> Objects.nonNull(e.getDeviceId())).forEach(f->{
-            IotDeviceDO iotDevice = iotDeviceService.getIotDevice(f.getDeviceId());
-            if (Objects.nonNull(iotDevice)) {
-                f.setDeviceCode(iotDevice.getDeviceCode());
-                IotInspectItemSaveReqVO bean = BeanUtils.toBean(f, IotInspectItemSaveReqVO.class);
-                iotInspectItemService.updateIotInspectItem(bean);
-
-            }
-        });
-    }
-}

+ 0 - 47
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/item/vo/IotInspectItemPageReqVO.java

@@ -1,47 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.item.vo;
-
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 巡检项分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class IotInspectItemPageReqVO extends PageParam {
-
-    @Schema(description = "巡检项")
-    private String item;
-
-    @Schema(description = "巡检标准")
-    private String standard;
-
-    @Schema(description = "排序")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "部门id", example = "5369")
-    private Long deptId;
-    @Schema(description = "设备分类id")
-    private Long deviceClassify;
-    @Schema(description = "设备id")
-    private Long deviceId;
-    @Schema(description = "设备分类名称")
-    private String deviceClassifyName;
-    @Schema(description = "设备名称")
-    private String deviceName;
-    @Schema(description = "设备编码")
-    private String deviceCode;
-    private String brandName;
-}

+ 0 - 75
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/item/vo/IotInspectItemRespVO.java

@@ -1,75 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.item.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
-
-@Schema(description = "管理后台 - 巡检项 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotInspectItemRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2246")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    /**
-     * 设备分类名称
-     */
-    @ExcelProperty("设备类别")
-    private String deviceClassifyName;
-
-    @Schema(description = "巡检项", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("巡检项")
-    private String item;
-
-    @Schema(description = "巡检标准", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("巡检标准")
-    private String standard;
-
-    @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("排序")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    @Schema(description = "部门id", example = "5369")
-    private Long deptId;
-
-    @ExcelProperty("所在部门")
-    private String deptName;
-    /**
-     * 设备分类id
-     */
-    private Long deviceClassify;
-
-    /**
-     * 设备id
-     */
-    private Long deviceId;
-
-    /**
-     * 设备名称
-     */
-    private String deviceName;
-
-    private String urls;
-    @Schema(description = "设备编码")
-    private String deviceCode;
-    @ExcelProperty("创建人")
-    private String createName;
-    /**品牌*/
-    private Long brand;
-    /**品牌名称*/
-    private String brandName;
-    private String creator;
-}

+ 0 - 59
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/item/vo/IotInspectItemSaveReqVO.java

@@ -1,59 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.item.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import javax.validation.constraints.*;
-
-@Schema(description = "管理后台 - 巡检项新增/修改 Request VO")
-@Data
-public class IotInspectItemSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2246")
-    private Long id;
-
-    @Schema(description = "巡检项", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "巡检项不能为空")
-    private String item;
-
-    @Schema(description = "巡检标准", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "巡检标准不能为空")
-    private String standard;
-
-    @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "排序不能为空")
-    private Integer sort;
-
-    @Schema(description = "备注", example = "你说的对")
-    private String remark;
-
-    @Schema(description = "部门id", example = "5369")
-    private Long deptId;
-
-    /**
-     * 设备分类id
-     */
-    private Long deviceClassify;
-
-    /**
-     * 设备id
-     */
-    private Long deviceId;
-
-    /**
-     * 设备分类名称
-     */
-    private String deviceClassifyName;
-
-    /**
-     * 设备名称
-     */
-    private String deviceName;
-
-    private String urls;
-    private String deviceCode;
-    /**品牌*/
-    private Long brand;
-    /**品牌名称*/
-    private String brandName;
-}

+ 0 - 560
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/IotInspectOrderController.java

@@ -1,560 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.order;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.date.DateUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.exception.ErrorCode;
-import cn.iocoder.yudao.framework.common.exception.ServiceException;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
-import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.*;
-import cn.iocoder.yudao.module.pms.controller.admin.stat.DeptUtil;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceSimple;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDetailDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectPlanDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectRouteDO;
-import cn.iocoder.yudao.module.pms.dal.mysql.IotDeviceMapper;
-import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderDetailMapper;
-import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderDeviceMapper;
-import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderMapper;
-import cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant;
-import cn.iocoder.yudao.module.pms.service.IotDeviceService;
-import cn.iocoder.yudao.module.pms.service.inspect.IotInspectOrderDetailService;
-import cn.iocoder.yudao.module.pms.service.inspect.IotInspectOrderService;
-import cn.iocoder.yudao.module.pms.service.inspect.IotInspectPlanService;
-import cn.iocoder.yudao.module.pms.service.inspect.IotInspectRouteService;
-import cn.iocoder.yudao.module.system.api.dept.DeptApi;
-import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
-import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
-import cn.iocoder.yudao.module.system.service.dept.DeptService;
-import cn.iocoder.yudao.module.system.service.dict.DictDataService;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.Data;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.annotation.security.PermitAll;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.time.ZoneId;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-
-@Tag(name = "管理后台 - 巡检工单")
-@RestController
-@RequestMapping("/rq/iot-inspect-order")
-@Validated
-public class IotInspectOrderController {
-
-    @Resource
-    private IotInspectOrderService iotInspectOrderService;
-    @Autowired
-    private IotInspectOrderDetailMapper iotInspectOrderDetailMapper;
-    @Autowired
-    private IotDeviceService iotDeviceService;
-    @Autowired
-    private IotInspectPlanService iotInspectPlanService;
-    @Autowired
-    private IotInspectOrderDetailService iotInspectOrderDetailService;
-    @Autowired
-    private IotInspectRouteService iotInspectRouteService;
-    @Autowired
-    private DeptApi deptApi;
-    @Autowired
-    private IotDeviceMapper iotDeviceMapper;
-    @Autowired
-    private IotInspectOrderDeviceMapper iotInspectOrderDeviceMapper;
-    @Autowired
-    private DeptUtil deptUtil;
-    @Autowired
-    private DeptService deptService;
-    @Autowired
-    private IotInspectOrderMapper iotInspectOrderMapper;
-    @Autowired
-    private DictDataService dictDataService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建巡检工单")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:create')")
-    public CommonResult<Long> createIotInspectOrder(@Valid @RequestBody IotInspectOrderSaveReqVO createReqVO) {
-        return success(iotInspectOrderService.createIotInspectOrder(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新巡检工单")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:update')")
-    public CommonResult<Boolean> updateIotInspectOrder(@Valid @RequestBody IotInspectOrderSaveReqVO updateReqVO) {
-        iotInspectOrderService.updateIotInspectOrder(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除巡检工单")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:delete')")
-    public CommonResult<Boolean> deleteIotInspectOrder(@RequestParam("id") Long id) {
-        iotInspectOrderService.deleteIotInspectOrder(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得巡检工单")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:query')")
-    public CommonResult<IotInspectOrderRespVO> getIotInspectOrder(@RequestParam("id") Long id) {
-        IotInspectOrderDO iotInspectOrder = iotInspectOrderService.getIotInspectOrder(id);
-        IotInspectOrderRespVO bean = BeanUtils.toBean(iotInspectOrder, IotInspectOrderRespVO.class);
-        List<IotInspectOrderDetailDO> orderId = iotInspectOrderDetailMapper.selectList("order_id", iotInspectOrder.getId());
-        Map<Long, List<IotInspectOrderDetailDO>> collect = orderId.stream().collect(Collectors.groupingBy(IotInspectOrderDetailDO::getDeviceId));
-        List<OrderDetail> orderDetails = new ArrayList<>();
-        collect.forEach((k, v) -> {
-            IotDeviceDO iotDevice = iotDeviceService.getIotDevice(k);
-            OrderDetail orderDetail = new OrderDetail();
-            orderDetail.setDeviceId(k);
-            if (CollUtil.isNotEmpty(v)) {
-                long normal = v.stream().filter(e -> Objects.nonNull(e.getIfNormal())&&e.getIfNormal()).count();
-                long exception = v.stream().filter(e -> Objects.nonNull(e.getIfNormal())&&!e.getIfNormal()).count();
-                long count = v.stream().filter(e -> Objects.isNull(e.getIfNormal())).count();
-                orderDetail.setItemNormal(normal);
-                orderDetail.setItemException(exception);
-                orderDetail.setItemNeed(count);
-                orderDetail.setRouteIndex(v.get(0).getRouteIndex());
-
-            }
-            if (Objects.nonNull(iotDevice)) {
-                orderDetail.setDeviceName(iotDevice.getDeviceCode() + iotDevice.getDeviceName());
-                orderDetail.setDeviceCode(iotDevice.getDeviceCode());
-                orderDetail.setOrderDetails(v);
-                orderDetails.add(orderDetail);
-            }
-        });
-
-        if (CollUtil.isEmpty(orderDetails)) {
-            throw new ServiceException(ErrorCodeConstant.INSPECT_DEVICE_CHANGE);
-        }
-        bean.setDetails(orderDetails.stream().sorted(Comparator.comparing(OrderDetail::getRouteIndex)).collect(Collectors.toList()));
-        return success(bean);
-    }
-
-    @GetMapping("/get/details")
-    @Operation(summary = "获得巡检工单详情")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:query')")
-    public CommonResult<List<OrderDetail>> getIotInspectOrderDetails(@RequestParam("id") Long id) {
-        List<IotInspectOrderDetailDO> orderId = iotInspectOrderDetailMapper.selectList("order_id", id);
-        Map<Long, List<IotInspectOrderDetailDO>> collect = orderId.stream().collect(Collectors.groupingBy(IotInspectOrderDetailDO::getDeviceId));
-        List<OrderDetail> orderDetails = new ArrayList<>();
-        collect.forEach((k, v) -> {
-            IotDeviceDO iotDevice = iotDeviceService.getIotDevice(k);
-            OrderDetail orderDetail = new OrderDetail();
-            orderDetail.setDeviceId(k);
-            if (CollUtil.isNotEmpty(v)) {
-                orderDetail.setRouteIndex(v.get(0).getRouteIndex());
-                Long routeId = v.get(0).getRouteId();
-                if (Objects.nonNull(routeId)) {
-                    IotInspectRouteDO iotInspectRoute = iotInspectRouteService.getIotInspectRoute(routeId);
-                    if (Objects.nonNull(iotInspectRoute)) {
-                        orderDetail.setRouteDesc(iotInspectRoute.getRouteDesc());
-                        orderDetail.setRouteName(iotInspectRoute.getRouteName());
-                    }
-                }
-            }
-            if (Objects.nonNull(iotDevice)) {
-                orderDetail.setDeviceName(iotDevice.getDeviceCode()+iotDevice.getDeviceName());
-                orderDetail.setOrderDetails(v);
-                orderDetails.add(orderDetail);
-            }
-        });
-        if (CollUtil.isEmpty(orderDetails)) {
-            throw new ServiceException(ErrorCodeConstant.INSPECT_DEVICE_CHANGE);
-        }
-        return success(orderDetails.stream().sorted(Comparator.comparing(OrderDetail::getRouteIndex)).collect(Collectors.toList()));
-    }
-
-    @Data
-    public static class OrderDetail {
-        private Long deviceId;
-        private String deviceName;
-        private String deviceCode;
-        private Long routeIndex;
-        private List<IotInspectOrderDetailDO> orderDetails;
-        private String ifException;
-        private Long itemNormal;
-        private Long itemException;
-        private Long itemNeed;
-        private String routeDesc;
-        private String routeName;
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得巡检工单分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:query')")
-    public CommonResult<PageResult<IotInspectOrderRespVO>> getIotInspectOrderPage(@Valid IotInspectOrderPageReqVO pageReqVO) {
-        PageResult<IotInspectOrderDO> pageResult = iotInspectOrderService.getIotInspectOrderPage(pageReqVO);
-        List<IotInspectOrderRespVO> collect = pageResult.getList().stream().map(e -> {
-            IotInspectOrderRespVO iotInspectOrderRespVO = new IotInspectOrderRespVO();
-            BeanUtils.copyProperties(e, iotInspectOrderRespVO);
-            if (Objects.isNull(e.getDeviceCount())) {
-                List<IotInspectOrderDetailDO> details = iotInspectOrderDetailMapper.selectList("order_id", e.getId());
-                long deviceCount = details.stream().map(IotInspectOrderDetailDO::getDeviceId).distinct().count();
-                long exceptionCount = details.stream().filter(f -> Objects.nonNull(f.getIfNormal()) && !f.getIfNormal()).map(IotInspectOrderDetailDO::getDeviceId).distinct().count();
-                Map<Long, List<IotInspectOrderDetailDO>> collect1 = details.stream().collect(Collectors.groupingBy(IotInspectOrderDetailDO::getDeviceId));
-                AtomicInteger needDevice = new AtomicInteger();
-                collect1.forEach((k, v) -> {
-                    if (v.stream().anyMatch(gg -> Objects.isNull(gg.getIfNormal()))){
-                        needDevice.getAndIncrement();
-                    }
-                });
-                iotInspectOrderRespVO.setDeviceCount(deviceCount);
-                iotInspectOrderRespVO.setExceptionCount(exceptionCount);
-                iotInspectOrderRespVO.setNeedDevice(needDevice.get());
-            }
-            return new IotInspectOrderRespVO();
-        }).collect(Collectors.toList());
-        return success(BeanUtils.toBean(pageResult, IotInspectOrderRespVO.class));
-    }
-
-    @GetMapping("/page/app")
-    @Operation(summary = "获得巡检工单分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:query')")
-    public CommonResult<PageResult<IotInspectOrderRespVO>> getIotInspectOrderPageApp(@Valid IotInspectOrderPageReqVO pageReqVO) {
-        PageResult<IotInspectOrderDO> pageResult = iotInspectOrderService.getIotInspectOrderPageApp(pageReqVO);
-        List<IotInspectOrderRespVO> collect = pageResult.getList().stream().map(e -> {
-            IotInspectOrderRespVO iotInspectOrderRespVO = new IotInspectOrderRespVO();
-            BeanUtils.copyProperties(e, iotInspectOrderRespVO);
-            if (Objects.isNull(e.getDeviceCount())) {
-                List<IotInspectOrderDetailDO> details = iotInspectOrderDetailMapper.selectList("order_id", e.getId());
-                long deviceCount = details.stream().map(IotInspectOrderDetailDO::getDeviceId).distinct().count();
-                long exceptionCount = details.stream().filter(f -> Objects.nonNull(f.getIfNormal()) && !f.getIfNormal()).map(IotInspectOrderDetailDO::getDeviceId).distinct().count();
-                Map<Long, List<IotInspectOrderDetailDO>> collect1 = details.stream().collect(Collectors.groupingBy(IotInspectOrderDetailDO::getDeviceId));
-                AtomicInteger needDevice = new AtomicInteger();
-                collect1.forEach((k, v) -> {
-                    if (v.stream().anyMatch(gg -> Objects.isNull(gg.getIfNormal()))){
-                        needDevice.getAndIncrement();
-                    }
-                });
-                iotInspectOrderRespVO.setDeviceCount(deviceCount);
-                iotInspectOrderRespVO.setExceptionCount(exceptionCount);
-                iotInspectOrderRespVO.setNeedDevice(needDevice.get());
-            }
-            return iotInspectOrderRespVO;
-        }).collect(Collectors.toList());
-        return success(BeanUtils.toBean(pageResult, IotInspectOrderRespVO.class));
-    }
-
-    @GetMapping("/device/page")
-    @Operation(summary = "获得设备的巡检工单信息")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:query')")
-    public CommonResult<PageResult<IotInspectOrderRespVO>> getDeviceIotInspectOrderPage(@Valid IotInspectOrderPageReqVO pageReqVO) {
-        Set<Long> orderIds = iotInspectOrderDetailMapper.selectList("device_id", pageReqVO.getDeviceIds()).stream().map(IotInspectOrderDetailDO::getOrderId).collect(Collectors.toSet());
-        if (CollUtil.isEmpty(orderIds)) {
-            return success(new PageResult<>(0L));
-        }
-        pageReqVO.setIdList(orderIds);
-        pageReqVO.setDeviceIds(null);
-        PageResult<IotInspectOrderDO> pageResult = iotInspectOrderService.getIotInspectOrderPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotInspectOrderRespVO.class));
-    }
-
-    @Data
-    public static class IgnoreOrder{
-        private Long id;
-        private String reason;
-    }
-
-    @PostMapping("/ignore")
-    @Operation(summary = "忽略")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:query')")
-    @Transactional(rollbackFor = Exception.class)
-    public CommonResult<String> ignoreOrder(@Valid IgnoreOrder ignoreOrder) {
-        List<IotInspectOrderDetailDO> details = iotInspectOrderDetailMapper.selectList("order_id", ignoreOrder.getId());
-        long count = details.stream().filter(e -> Objects.nonNull(e.getIfNormal())).count();
-        if (count > 0) {
-            throw new ServiceException(new ErrorCode(133, "该工单已填写巡检项,无法忽略"));
-        }
-        details.forEach(e ->{
-            e.setIgnoreReason(true);
-            iotInspectOrderDetailMapper.updateById(e);
-        });
-        IotInspectOrderDO iotInspectOrder = iotInspectOrderService.getIotInspectOrder(ignoreOrder.getId());
-        IotInspectOrderSaveReqVO iotInspectOrderSaveReqVO = new IotInspectOrderSaveReqVO();
-        BeanUtils.copyProperties(iotInspectOrder, iotInspectOrderSaveReqVO);
-        iotInspectOrderSaveReqVO.setReason(ignoreOrder.getReason());
-        iotInspectOrderSaveReqVO.setStatus("ignore");
-        iotInspectOrderService.updateIotInspectOrder(iotInspectOrderSaveReqVO);
-        return success("完成");
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出巡检工单 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotInspectOrderExcel(@Valid IotInspectOrderPageReqVO pageReqVO, @RequestHeader("Lang") String lang,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotInspectOrderDO> list = iotInspectOrderService.getIotInspectOrderPage(pageReqVO).getList();
-        List<IotInspectOrderRespVO> bean = BeanUtils.toBean(list, IotInspectOrderRespVO.class);
-        List<DeptRespDTO> deptList = deptApi.getDeptList();
-        List<DictDataDO> pmsDeviceStatus = dictDataService.getDictDataListByDictType("pms_inspect_order_status");
-        bean.forEach(e -> {
-            if (e.getInspectOrderTitle().contains("~~")){
-                String[] split = e.getInspectOrderTitle().split("~~");
-                if ("zh-CN".equals(lang)) {
-                    e.setInspectOrderTitle(split[0]);
-                }else if ("en".equalsIgnoreCase(lang)) {
-                    if (split[1]!=null&&StringUtils.isNotBlank(split[1])){
-                        e.setInspectOrderTitle(split[1].replaceAll(Pattern.quote("en**"), ""));
-                    }
-                }
-            }
-            deptList.stream().filter(f -> f.getId().equals(e.getDeptId())).findFirst().ifPresent(f -> e.setDeptName(f.getName()));
-            pmsDeviceStatus.stream().filter(f -> f.getValue().equals(e.getStatus())).findFirst().ifPresent(f -> e.setStatus(f.getLabel()));
-        });
-        // 导出 Excel
-        ExcelUtils.write(response, "巡检工单.xls", "数据", IotInspectOrderRespVO.class,
-                        BeanUtils.toBean(bean, IotInspectOrderRespVO.class));
-    }
-
-    @PostMapping("/write/{orderId}")
-    @Operation(summary = "导出巡检工单 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:create')")
-    public CommonResult<String> updateItemProblem(@PathVariable("orderId") Long orderId, @RequestBody Map<String, String> requestMaps) {
-        iotInspectOrderService.writeInspectOrderDetail(requestMaps, orderId);
-        return CommonResult.success("成功");
-    }
-
-    @GetMapping("/test")
-    @PermitAll
-    @DataPermission(enable = false)
-    @TenantIgnore
-    public void test(){
-        IotInspectPlanDO plan = iotInspectPlanService.getIotInspectPlan(38L);
-        Date date = Date.from(
-                plan.getLastCreateTime().atZone(ZoneId.systemDefault()) // 使用系统默认时区
-                        .toInstant()                    // 转为 Instant(时间戳)
-        );
-        Date date1 = new Date();
-        int i = Integer.parseInt(StringUtils.substringBeforeLast(String.valueOf(plan.getPlanCycle()), "."));
-        DateTime dateTime = DateUtil.offsetHour(date, i);
-        if (date1.compareTo(dateTime) > 0){
-            System.out.println("-----------------");
-        }
-    }
-
-    @GetMapping("/device")
-    public CommonResult<PageResult<IotInspectDeviceVo>> getDeviceStatus(IotInspectOrderDetailPageReqVO pageReqVO){
-        PageResult<IotInspectDeviceVo> deviceStatus = iotInspectOrderDetailService.getDeviceStatus(pageReqVO);
-        return success(deviceStatus);
-    }
-
-
-    @GetMapping("/report/stat")
-    @Operation(summary = "获得巡检工单分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:query')")
-    public CommonResult<PageResult<IotInspectOrderRespVO>> getIotInspectOrderPageReport(@Valid IotInspectOrderPageReqVO pageReqVO) {
-        PageResult<IotInspectOrderDO> pageResult = iotInspectOrderService.getIotInspectOrderPage(pageReqVO);
-//        List<IotDeviceDO> iotDeviceDOS = iotDeviceMapper.selectList();
-        List<IotInspectOrderRespVO> collect = pageResult.getList().stream().map(e -> {
-            IotInspectOrderRespVO iotInspectOrderRespVO = new IotInspectOrderRespVO();
-            BeanUtils.copyProperties(e, iotInspectOrderRespVO);
-            List<IotInspectOrderDetailDO> details = iotInspectOrderDetailMapper.selectList("order_id", e.getId());
-            long exceptionCount = details.stream().filter(f -> Objects.nonNull(f.getIfNormal()) && !f.getIfNormal()).map(IotInspectOrderDetailDO::getDeviceId).distinct().count();
-            iotInspectOrderRespVO.setExceptionCount(exceptionCount);
-            //设置组织
-            DeptRespDTO dept = deptApi.getDept(e.getDeptId());
-            if (Objects.nonNull(dept)) {
-                if ("1".equals(dept.getType())) {
-                    iotInspectOrderRespVO.setCompany(dept.getName());
-                } else if ("2".equals(dept.getType())) {
-                    iotInspectOrderRespVO.setProject(dept.getName());
-                    DeptRespDTO dept1 = deptApi.getDept(dept.getParentId());
-                    if (Objects.nonNull(dept1)) {
-                        iotInspectOrderRespVO.setCompany(dept1.getName());
-                    }
-                } else if ("3".equals(dept.getType())) {
-                    iotInspectOrderRespVO.setDeptName(dept.getName());
-                    DeptRespDTO dept1 = deptApi.getDept(dept.getParentId());
-                    if (Objects.nonNull(dept1)) {
-                        iotInspectOrderRespVO.setProject(dept1.getName());
-                        DeptRespDTO dept2 = deptApi.getDept(dept1.getParentId());
-                        if (Objects.nonNull(dept2)) {
-                            iotInspectOrderRespVO.setCompany(dept2.getName());
-                        }
-                    }
-                }
-            }
-            String deviceInfo = iotInspectOrderDeviceMapper.getDeviceInfo(e.getId());
-            iotInspectOrderRespVO.setDeviceInfo(deviceInfo);
-            return iotInspectOrderRespVO;
-        }).collect(Collectors.toList());
-        return success(new PageResult<>(collect, pageResult.getTotal()));
-    }
-
-
-    @GetMapping("/report/exception/item/export-excel")
-    @Operation(summary = "导出巡检工单巡检异常点 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order-detail:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportReportExceptionItem(@Valid IotInspectOrderDetailPageReqVO pageReqVO,@RequestHeader("Lang") String lang,
-                                          HttpServletResponse response) throws IOException {
-        Set<Long> ids = new HashSet<>();
-        String companyCode;
-        if (Objects.isNull(pageReqVO.getDeptId())){
-            Long loginUserDeptId = SecurityFrameworkUtils.getLoginUserDeptId();
-            companyCode = deptUtil.getCompanyCode(loginUserDeptId);
-            ids = deptUtil.getDeptIds(companyCode);
-        } else {
-            companyCode = deptUtil.getCompanyCode(pageReqVO.getDeptId());
-            ids = deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
-            ids.add(pageReqVO.getDeptId());
-        }
-        Set<Long> deviceIds = new HashSet<>();
-        if (StringUtils.isNotBlank(pageReqVO.getDeviceCode())) {
-            IotDevicePageReqVO devicePageReqVO = new IotDevicePageReqVO();
-            devicePageReqVO.setDeviceCode(pageReqVO.getDeviceCode());
-            deviceIds = iotDeviceMapper.selectList(devicePageReqVO).stream().map(IotDeviceDO::getId).collect(Collectors.toSet());
-        }
-        Set<Long> orderIds = new HashSet<>();
-        if (StringUtils.isNotBlank(pageReqVO.getOrderName())) {
-            IotInspectOrderPageReqVO iotInspectOrderPageReqVO = new IotInspectOrderPageReqVO();
-            iotInspectOrderPageReqVO.setInspectOrderTitle(pageReqVO.getOrderName());
-            orderIds = iotInspectOrderMapper.selectList(iotInspectOrderPageReqVO).stream().map(IotInspectOrderDO::getId).collect(Collectors.toSet());
-        }
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        pageReqVO.setIfNormal(false);
-        List<IotInspectOrderDetailDO> list = iotInspectOrderDetailMapper.selectItemPage(pageReqVO, ids, deviceIds, orderIds).getList();
-        List<IotInspectOrderDetailRespVO> bean = BeanUtils.toBean(list, IotInspectOrderDetailRespVO.class);
-        bean.forEach(e -> {
-            if (Objects.nonNull(e.getDeviceId())) {
-                IotDeviceDO iotDevice = iotDeviceService.getIotDevice(e.getDeviceId());
-                if (Objects.nonNull(iotDevice)) {
-                    e.setDeviceCode(iotDevice.getDeviceCode());
-                    e.setDeviceName(iotDevice.getDeviceName());
-                }
-            }
-            if (Objects.nonNull(e.getOrderId())) {
-                IotInspectOrderDO iotInspectOrder = iotInspectOrderService.getIotInspectOrder(e.getOrderId());
-                if (Objects.nonNull(iotInspectOrder)) {
-                    if (iotInspectOrder.getInspectOrderTitle().contains("~~")){
-                        String[] split = iotInspectOrder.getInspectOrderTitle().split("~~");
-                        if ("zh-CN".equals(lang)) {
-                            e.setOrderName(split[0]);
-                        }else if ("en".equalsIgnoreCase(lang)) {
-                            if (split[1]!=null&&StringUtils.isNotBlank(split[1])){
-                                e.setOrderName(split[1].replaceAll(Pattern.quote("en**"), ""));
-                            }
-                        } else {
-                            e.setOrderName(iotInspectOrder.getInspectOrderTitle());
-                        }
-                    }
-                    e.setCharge(iotInspectOrder.getChargeName());
-                }
-            }
-            e.setResult(e.getIfNormal()?"正常":"异常");
-        });
-        // 导出 Excel
-        ExcelUtils.write(response, "巡检工单异常点统计.xls", "数据", IotInspectOrderDetailRespVO.class,
-                BeanUtils.toBean(bean, IotInspectOrderDetailRespVO.class));
-    }
-    @GetMapping("/exception/device")
-    public CommonResult<PageResult<IotDeviceSimple>> getExceptionDevice(@Valid IotInspectOrderPageReqVO pageReqVO) {
-        Set<Long> ids;
-        if (Objects.isNull(pageReqVO.getDeptId())){
-            Long loginUserDeptId = SecurityFrameworkUtils.getLoginUserDeptId();
-            String companyCode = deptUtil.getCompanyCode(loginUserDeptId);
-            ids = deptUtil.getDeptIds(companyCode);
-        } else {
-            ids = deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
-            ids.add(pageReqVO.getDeptId());
-        }
-        pageReqVO.setDeptIds(ids);
-        IPage<IotDeviceSimple> exceptionDevicePage = iotInspectOrderDetailMapper.getExceptionDevicePage(new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO);
-        PageResult<IotDeviceSimple> result = new PageResult<>(exceptionDevicePage.getRecords(), exceptionDevicePage.getTotal());
-        return success(result);
-    }
-
-
-    @GetMapping("/report/export-excel")
-    @Operation(summary = "导出巡检工单巡检异常点 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order-detail:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportReport(@Valid IotInspectOrderPageReqVO pageReqVO,@RequestHeader("Lang") String lang,
-                                          HttpServletResponse response) throws IOException {
-        Set<Long> ids;
-        if (Objects.isNull(pageReqVO.getDeptId())){
-            Long loginUserDeptId = SecurityFrameworkUtils.getLoginUserDeptId();
-            String companyCode = deptUtil.getCompanyCode(loginUserDeptId);
-            ids = deptUtil.getDeptIds(companyCode);
-            ids.add(pageReqVO.getDeptId());
-        } else {
-            ids = deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
-            ids.add(pageReqVO.getDeptId());
-        }
-        pageReqVO.setDeptIds(ids);
-        List<IotInspectOrderRespVO> bean = iotInspectOrderMapper.selectExport(pageReqVO);
-        List<IotReportInspectOrderRespVO> list = BeanUtils.toBean(bean, IotReportInspectOrderRespVO.class);
-        list.forEach(e ->{
-            if (e.getInspectOrderTitle().contains("~~")){
-                String[] split = e.getInspectOrderTitle().split("~~");
-                if ("zh-CN".equals(lang)) {
-                    e.setInspectOrderTitle(split[0]);
-                }else if ("en".equalsIgnoreCase(lang)) {
-                    if (split[1]!=null&&StringUtils.isNotBlank(split[1])){
-                        e.setInspectOrderTitle(split[1].replaceAll(Pattern.quote("en**"), ""));
-                    }
-                }
-            }
-        });
-        // 导出 Excel
-        ExcelUtils.write(response, "巡检报表统计.xls", "数据", IotReportInspectOrderRespVO.class, list);
-    }
-
-    @GetMapping("/report/exception/device/export-excel")
-    @Operation(summary = "导出巡检工单巡检异常点 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order-detail:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportReportExceptionDevice(@Valid IotInspectOrderPageReqVO pageReqVO,
-                             HttpServletResponse response) throws IOException {
-        Set<Long> ids;
-        if (Objects.isNull(pageReqVO.getDeptId())){
-            Long loginUserDeptId = SecurityFrameworkUtils.getLoginUserDeptId();
-            String companyCode = deptUtil.getCompanyCode(loginUserDeptId);
-            ids = deptUtil.getDeptIds(companyCode);
-        } else {
-            ids = deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
-            ids.add(pageReqVO.getDeptId());
-        }
-        pageReqVO.setDeptIds(ids);
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotDeviceSimple> records = iotInspectOrderDetailMapper.getExceptionDevicePage(new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO).getRecords();
-        // 导出 Excel
-        ExcelUtils.write(response, "巡检异常设备统计.xls", "数据", IotDeviceSimple.class, records);
-    }
-
-}

+ 0 - 194
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/IotInspectOrderDetailController.java

@@ -1,194 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.order;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailSaveReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.stat.DeptUtil;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDetailDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotcountdata.IotCountDataDO;
-import cn.iocoder.yudao.module.pms.service.IotDeviceService;
-import cn.iocoder.yudao.module.pms.service.inspect.IotInspectOrderDetailService;
-import cn.iocoder.yudao.module.pms.service.inspect.IotInspectOrderService;
-import cn.iocoder.yudao.module.pms.service.inspect.IotInspectOrderServiceImpl;
-import cn.iocoder.yudao.module.system.service.dept.DeptService;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-
-@Tag(name = "管理后台 - 巡检工单巡检明细")
-@RestController
-@RequestMapping("/rq/iot-inspect-order-detail")
-@Validated
-public class IotInspectOrderDetailController {
-
-    @Resource
-    private IotInspectOrderDetailService iotInspectOrderDetailService;
-    @Autowired
-    private IotInspectOrderServiceImpl iotInspectOrderServiceImpl;
-    @Autowired
-    private IotDeviceService iotDeviceService;
-    @Autowired
-    private IotInspectOrderService iotInspectOrderService;
-    @Autowired
-    private DeptService deptService;
-    @Autowired
-    private DeptUtil deptUtil;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建巡检工单巡检明细")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order-detail:create')")
-    public CommonResult<Long> createIotInspectOrderDetail(@Valid @RequestBody IotInspectOrderDetailSaveReqVO createReqVO) {
-        return success(iotInspectOrderDetailService.createIotInspectOrderDetail(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新巡检工单巡检明细")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order-detail:update')")
-    public CommonResult<Boolean> updateIotInspectOrderDetail(@Valid @RequestBody IotInspectOrderDetailSaveReqVO updateReqVO) {
-        iotInspectOrderDetailService.updateIotInspectOrderDetail(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除巡检工单巡检明细")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order-detail:delete')")
-    public CommonResult<Boolean> deleteIotInspectOrderDetail(@RequestParam("id") Long id) {
-        iotInspectOrderDetailService.deleteIotInspectOrderDetail(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得巡检工单巡检明细")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order-detail:query')")
-    public CommonResult<IotInspectOrderDetailRespVO> getIotInspectOrderDetail(@RequestParam("id") Long id) {
-        IotInspectOrderDetailDO iotInspectOrderDetail = iotInspectOrderDetailService.getIotInspectOrderDetail(id);
-        return success(BeanUtils.toBean(iotInspectOrderDetail, IotInspectOrderDetailRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得巡检工单巡检明细分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order-detail:query')")
-    public CommonResult<PageResult<IotInspectOrderDetailRespVO>> getIotInspectOrderDetailPage(@Valid IotInspectOrderDetailPageReqVO pageReqVO) {
-        PageResult<IotInspectOrderDetailDO> pageResult = iotInspectOrderDetailService.getIotInspectOrderDetailPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotInspectOrderDetailRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出巡检工单巡检明细 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order-detail:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotInspectOrderDetailExcel(@Valid IotInspectOrderDetailPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotInspectOrderDetailDO> list = iotInspectOrderDetailService.getIotInspectOrderDetailPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "巡检工单巡检明细.xls", "数据", IotInspectOrderDetailRespVO.class,
-                        BeanUtils.toBean(list, IotInspectOrderDetailRespVO.class));
-    }
-
-
-    @GetMapping("/status")
-    @Operation(summary = "获得巡检项状态数量")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-item:query')")
-    public CommonResult<ImmutableList> getIotInspectItemStatus(IotCountDataDO vo) {
-        String companyCode;
-        Set<Long> ids = new HashSet<>();
-        if (Objects.isNull(vo.getDeptId())){
-            Long loginUserDeptId = SecurityFrameworkUtils.getLoginUserDeptId();
-            companyCode = deptUtil.getCompanyCode(loginUserDeptId);
-            ids = deptUtil.getDeptIds(companyCode);
-        } else {
-            companyCode = deptUtil.getCompanyCode(vo.getDeptId());
-            ids = deptService.getChildDeptIdListFromCache(vo.getDeptId());
-            ids.add(vo.getDeptId());
-        }
-        List<IotInspectOrderDetailDO> all = iotInspectOrderDetailService.getListStat(vo, ids);
-        long need = all.stream().filter(e -> Objects.isNull(e.getIfNormal())).count();
-        long normal = all.stream().filter(e -> Objects.nonNull(e.getIfNormal())&&e.getIfNormal()).count();
-        long exception = all.stream().filter(e -> Objects.nonNull(e.getIfNormal())&&!e.getIfNormal()).count();
-        ImmutableMap<String, ? extends Serializable> map = ImmutableMap.of("name", "待填写", "value", need);
-        ImmutableMap<String, ? extends Serializable> map1 = ImmutableMap.of("name", "正常", "value", normal);
-        ImmutableMap<String, ? extends Serializable> map2 = ImmutableMap.of("name", "异常", "value", exception);
-        return success(ImmutableList.of(map,map1,map2));
-    }
-
-    @GetMapping("/report/status")
-    @Operation(summary = "获得报表的异常点数量")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-item:query')")
-    public CommonResult<ImmutableMap<String, ? extends Serializable>> getIotInspectItemStatusReport(IotCountDataDO vo) {
-        Set<Long> ids;
-        if (Objects.isNull(vo.getDeptId())){
-            Long loginUserDeptId = SecurityFrameworkUtils.getLoginUserDeptId();
-            String companyCode = deptUtil.getCompanyCode(loginUserDeptId);
-            ids = deptUtil.getDeptIds(companyCode);
-        } else {
-            ids = deptService.getChildDeptIdListFromCache(vo.getDeptId());
-            ids.add(vo.getDeptId());
-        }
-        Long exceptionReport = iotInspectOrderDetailService.selectExceptionReport(vo, ids);
-        ImmutableMap<String, ? extends Serializable> map2 = ImmutableMap.of("name", "异常", "value", exceptionReport);
-        return success(map2);
-    }
-
-    @GetMapping("/item")
-    public CommonResult<PageResult<IotInspectOrderDetailRespVO>> getItemStatus(IotInspectOrderDetailPageReqVO pageReqVO){
-
-        PageResult<IotInspectOrderDetailDO> deviceStatus = iotInspectOrderDetailService.getOrderDetailItem(pageReqVO);
-        List<IotInspectOrderDetailRespVO> collect = deviceStatus.getList().stream().map(e -> {
-            IotInspectOrderDetailRespVO iotInspectOrderDetailRespVO = new IotInspectOrderDetailRespVO();
-            BeanUtils.copyProperties(e, iotInspectOrderDetailRespVO);
-
-            if (Objects.nonNull(e.getDeviceId())) {
-                IotDeviceDO iotDevice = iotDeviceService.getIotDevice(e.getDeviceId());
-                if (Objects.nonNull(iotDevice)) {
-                    iotInspectOrderDetailRespVO.setDeviceCode(iotDevice.getDeviceCode());
-                    iotInspectOrderDetailRespVO.setDeviceName(iotDevice.getDeviceName());
-                }
-            }
-            if (Objects.nonNull(e.getOrderId())) {
-                IotInspectOrderDO iotInspectOrder = iotInspectOrderService.getIotInspectOrder(e.getOrderId());
-                if (Objects.nonNull(iotInspectOrder)) {
-                    iotInspectOrderDetailRespVO.setOrderName(iotInspectOrder.getInspectOrderTitle());
-                    iotInspectOrderDetailRespVO.setCharge(iotInspectOrder.getChargeName());
-                }
-            }
-
-            return iotInspectOrderDetailRespVO;
-        }).collect(Collectors.toList());
-        return success(new PageResult<>(collect, deviceStatus.getTotal()));
-    }
-}

+ 0 - 37
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/device/IotInspectOrderDevicePageReqVO.java

@@ -1,37 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.device;
-
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 巡检工单设备分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class IotInspectOrderDevicePageReqVO extends PageParam {
-
-    @Schema(description = "工单id", example = "23412")
-    private Long orderId;
-
-    @Schema(description = "设备id", example = "11270")
-    private Long deviceId;
-
-    @Schema(description = "设备编码")
-    private String deviceCode;
-
-    @Schema(description = "设备名称", example = "张三")
-    private String deviceName;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "部门id", example = "26620")
-    private Long deptId;
-
-}

+ 0 - 43
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/device/IotInspectOrderDeviceRespVO.java

@@ -1,43 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.device;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
-
-@Schema(description = "管理后台 - 巡检工单设备 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotInspectOrderDeviceRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20616")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "工单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23412")
-    @ExcelProperty("工单id")
-    private Long orderId;
-
-    @Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11270")
-    @ExcelProperty("设备id")
-    private Long deviceId;
-
-    @Schema(description = "设备编码", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("设备编码")
-    private String deviceCode;
-
-    @Schema(description = "设备名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
-    @ExcelProperty("设备名称")
-    private String deviceName;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    @Schema(description = "部门id", example = "26620")
-    @ExcelProperty("部门id")
-    private Long deptId;
-
-}

+ 0 - 36
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/device/IotInspectOrderDeviceSaveReqVO.java

@@ -1,36 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.device;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-import java.util.*;
-
-@Schema(description = "管理后台 - 巡检工单设备新增/修改 Request VO")
-@Data
-public class IotInspectOrderDeviceSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20616")
-    private Long id;
-
-    @Schema(description = "工单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23412")
-    @NotNull(message = "工单id不能为空")
-    private Long orderId;
-
-    @Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11270")
-    @NotNull(message = "设备id不能为空")
-    private Long deviceId;
-
-    @Schema(description = "设备编码", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "设备编码不能为空")
-    private String deviceCode;
-
-    @Schema(description = "设备名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
-    @NotEmpty(message = "设备名称不能为空")
-    private String deviceName;
-
-    @Schema(description = "部门id", example = "26620")
-    private Long deptId;
-
-}

+ 0 - 14
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectDeviceVo.java

@@ -1,14 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo;
-
-import lombok.Data;
-
-@Data
-public class IotInspectDeviceVo {
-    private String deviceId;
-    private String orderId;
-    private String orderName;
-    private String deviceName;
-    private String deviceCode;
-    private String ifNormal;
-    private String createTime;
-}

+ 0 - 53
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderDetailPageReqVO.java

@@ -1,53 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo;
-
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 巡检工单巡检明细分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class IotInspectOrderDetailPageReqVO extends PageParam {
-
-    @Schema(description = "工单id", example = "9096")
-    private Long orderId;
-
-    @Schema(description = "设备id", example = "28723")
-    private Long deviceId;
-
-    @Schema(description = "巡检项id", example = "14105")
-    private Long itemId;
-
-    @Schema(description = "是否正常")
-    private Boolean ifNormal;
-
-    @Schema(description = "异常描述", example = "你猜")
-    private String description;
-
-    @Schema(description = "图片", example = "https://www.iocoder.cn")
-    private String picUrl;
-
-    @Schema(description = "备注", example = "你猜")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "部门id", example = "26288")
-    private Long deptId;
-    private Set<Long> deptIds;
-
-    private String status;
-
-    private String deviceCode;
-
-    private String deviceName;
-    private String orderName;
-}

+ 0 - 66
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderDetailRespVO.java

@@ -1,66 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
-
-@Schema(description = "管理后台 - 巡检工单巡检明细 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotInspectOrderDetailRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4075")
-//    @ExcelProperty("主键id")
-    private Long id;
-    @ExcelProperty("工单名称")
-    private String orderName;
-    @ExcelProperty("历史编码")
-    private String deviceCode;
-    @ExcelProperty("设备名称")
-    private String deviceName;
-    @ExcelProperty("责任人")
-    private String charge;
-    @Schema(description = "工单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9096")
-//    @ExcelProperty("工单id")
-    private Long orderId;
-
-    @Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28723")
-//    @ExcelProperty("设备id")
-    private Long deviceId;
-
-    @Schema(description = "巡检项id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14105")
-//    @ExcelProperty("巡检项id")
-    private Long itemId;
-    @ExcelProperty("巡检项")
-    private String item;
-
-    @Schema(description = "是否正常", requiredMode = Schema.RequiredMode.REQUIRED)
-//    @ExcelProperty("巡检结果")
-    private Boolean ifNormal;
-
-    @ExcelProperty("巡检结果")
-    private String result;
-    @Schema(description = "异常描述", example = "你猜")
-    @ExcelProperty("异常描述")
-    private String description;
-
-    @Schema(description = "图片", example = "https://www.iocoder.cn")
-    @ExcelProperty("图片")
-    private String picUrl;
-
-    @Schema(description = "备注", example = "你猜")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    @Schema(description = "部门id", example = "26288")
-//    @ExcelProperty("部门id")
-    private Long deptId;
-
-}

+ 0 - 43
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderDetailSaveReqVO.java

@@ -1,43 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import javax.validation.constraints.*;
-
-@Schema(description = "管理后台 - 巡检工单巡检明细新增/修改 Request VO")
-@Data
-public class IotInspectOrderDetailSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4075")
-    private Long id;
-
-    @Schema(description = "工单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9096")
-    @NotNull(message = "工单id不能为空")
-    private Long orderId;
-
-    @Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28723")
-    @NotNull(message = "设备id不能为空")
-    private Long deviceId;
-
-    @Schema(description = "巡检项id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14105")
-    @NotNull(message = "巡检项id不能为空")
-    private Long itemId;
-
-    @Schema(description = "是否正常", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "是否正常不能为空")
-    private Boolean ifNormal;
-
-    @Schema(description = "异常描述", example = "你猜")
-    private String description;
-
-    @Schema(description = "图片", example = "https://www.iocoder.cn")
-    private String picUrl;
-
-    @Schema(description = "备注", example = "你猜")
-    private String remark;
-
-    @Schema(description = "部门id", example = "26288")
-    private Long deptId;
-
-}

+ 0 - 47
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderPageReqVO.java

@@ -1,47 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo;
-
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 巡检工单分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class IotInspectOrderPageReqVO extends PageParam {
-
-    @Schema(description = "巡检工单名")
-    private String inspectOrderTitle;
-
-    @Schema(description = "巡检工单编码")
-    private String inspectOrderCode;
-
-    @Schema(description = "巡检工单状态", example = "1")
-    private String status;
-
-    @Schema(description = "备注", example = "你猜")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "部门id", example = "27771")
-    private Long deptId;
-
-    @Schema(description = "设备id")
-    private String deviceIds;
-
-    private String type;
-
-    private Long charge;
-
-    private Collection<Long> idList;
-    @Schema(description = "部门ids")
-    private Set<Long> deptIds;
-}

+ 0 - 66
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderRespVO.java

@@ -1,66 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo;
-
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.IotInspectOrderController;
-import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDetailDO;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
-
-@Schema(description = "管理后台 - 巡检工单 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotInspectOrderRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30405")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "巡检工单名", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("巡检工单名")
-    private String inspectOrderTitle;
-
-    @Schema(description = "巡检工单编码", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("巡检工单编码")
-    private String inspectOrderCode;
-
-    @Schema(description = "巡检工单状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @ExcelProperty("巡检工单状态")
-    private String status;
-
-    private String orderStatus;
-
-    @Schema(description = "备注", example = "你猜")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    @Schema(description = "部门id", example = "27771")
-    private Long deptId;
-
-    @Schema(description = "设备id")
-    private String deviceIds;
-
-    private String planCode;
-    @ExcelProperty("负责人")
-    private String chargeName;
-    private String type;
-
-    private Long deviceCount;
-    private Long exceptionCount;
-    private Integer needDevice;
-    private LocalDateTime executeDate;
-    private String deviceInfo;
-    private List<IotInspectOrderController.OrderDetail> details;
-
-    private String company;
-    private String project;
-    @ExcelProperty("部门id")
-    private String deptName;
-    private String reason;
-}

+ 0 - 38
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderSaveReqVO.java

@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import javax.validation.constraints.*;
-
-@Schema(description = "管理后台 - 巡检工单新增/修改 Request VO")
-@Data
-public class IotInspectOrderSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30405")
-    private Long id;
-
-    @Schema(description = "巡检工单名", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "巡检工单名不能为空")
-    private String inspectOrderTitle;
-
-    @Schema(description = "巡检工单编码", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "巡检工单编码不能为空")
-    private String inspectOrderCode;
-
-    @Schema(description = "巡检工单状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotEmpty(message = "巡检工单状态不能为空")
-    private String status;
-
-    @Schema(description = "备注", example = "你猜")
-    private String remark;
-
-    @Schema(description = "部门id", example = "27771")
-    private Long deptId;
-
-    @Schema(description = "设备id")
-    private String deviceIds;
-
-    @Schema(description = "理由")
-    private String reason;
-}

+ 0 - 42
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotReportInspectOrderRespVO.java

@@ -1,42 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo;
-
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.IotInspectOrderController;
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "管理后台 - 巡检工单 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotReportInspectOrderRespVO {
-
-
-    @Schema(description = "巡检工单名", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("巡检工单名")
-    private String inspectOrderTitle;
-
-    @Schema(description = "巡检工单编码", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("巡检工单编码")
-    private String inspectOrderCode;
-    @ExcelProperty("公司")
-    private String company;
-    @ExcelProperty("项目部")
-    private String project;
-    @ExcelProperty("所在部门")
-    private String deptName;
-    @ExcelProperty("工单类型")
-    private String type;
-    @Schema(description = "巡检工单状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @ExcelProperty("巡检工单状态")
-    private String orderStatus;
-
-    private String reason;
-    @ExcelProperty("设备明细")
-    private String deviceInfo;
-    @ExcelProperty("负责人")
-    private String chargeName;
-}

+ 0 - 138
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/plan/IotInspectPlanController.java

@@ -1,138 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.plan;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.plan.vo.IotInspectPlanPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.plan.vo.IotInspectPlanRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.plan.vo.IotInspectPlanSaveReqVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectPlanDO;
-import cn.iocoder.yudao.module.pms.service.inspect.IotInspectPlanService;
-import cn.iocoder.yudao.module.system.api.dept.DeptApi;
-import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserUpdateStatusReqVO;
-import com.xingyuv.captcha.util.StringUtils;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-
-@Tag(name = "管理后台 - 巡检计划")
-@RestController
-@RequestMapping("/rq/iot-inspect-plan")
-@Validated
-public class IotInspectPlanController {
-
-    @Resource
-    private IotInspectPlanService iotInspectPlanService;
-    @Resource
-    private AdminUserApi adminUserApi;
-    @Autowired
-    private DeptApi deptApi;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建巡检计划")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-plan:create')")
-    public CommonResult<Long> createIotInspectPlan(@Valid @RequestBody IotInspectPlanSaveReqVO createReqVO) {
-        return success(iotInspectPlanService.createIotInspectPlan(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新巡检计划")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-plan:update')")
-    public CommonResult<Boolean> updateIotInspectPlan(@Valid @RequestBody IotInspectPlanSaveReqVO updateReqVO) {
-        iotInspectPlanService.updateIotInspectPlan(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除巡检计划")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-plan:delete')")
-    public CommonResult<Boolean> deleteIotInspectPlan(@RequestParam("id") Long id) {
-        iotInspectPlanService.deleteIotInspectPlan(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得巡检计划")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-plan:query')")
-    public CommonResult<IotInspectPlanRespVO> getIotInspectPlan(@RequestParam("id") Long id) {
-        IotInspectPlanDO iotInspectPlan = iotInspectPlanService.getIotInspectPlan(id);
-        IotInspectPlanRespVO bean = BeanUtils.toBean(iotInspectPlan, IotInspectPlanRespVO.class);
-//        bean.setCharges(Arrays.asList(iotInspectPlan.getCharge().split(",")));
-        return success(bean);
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得巡检计划分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-plan:query')")
-    public CommonResult<PageResult<IotInspectPlanRespVO>> getIotInspectPlanPage(@Valid IotInspectPlanPageReqVO pageReqVO) {
-        PageResult<IotInspectPlanDO> pageResult = iotInspectPlanService.getIotInspectPlanPage(pageReqVO);
-        List<IotInspectPlanRespVO> collect = pageResult.getList().stream().map(e -> {
-            IotInspectPlanRespVO iotInspectPlanRespVO = new IotInspectPlanRespVO();
-            BeanUtils.copyProperties(e, iotInspectPlanRespVO);
-            if (StringUtils.isNotBlank(e.getCreator())) {
-                AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(e.getCreator()));
-                if (Objects.nonNull(user)) {
-                    iotInspectPlanRespVO.setCreateName(user.getNickname());
-                    if (Objects.nonNull(user.getDeptId())) {
-                        DeptRespDTO dept = deptApi.getDept(user.getDeptId());
-                        iotInspectPlanRespVO.setDeptName(Objects.nonNull(dept)?dept.getName():"");
-                    }
-                }
-            }
-            return iotInspectPlanRespVO;
-        }).collect(Collectors.toList());
-        return success(new PageResult<>(collect, pageResult.getTotal()));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出巡检计划 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-plan:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotInspectPlanExcel(@Valid IotInspectPlanPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotInspectPlanDO> list = iotInspectPlanService.getIotInspectPlanPage(pageReqVO).getList();
-        List<IotInspectPlanRespVO> bean = BeanUtils.toBean(list, IotInspectPlanRespVO.class);
-        List<DeptRespDTO> deptList = deptApi.getDeptList();
-        bean.forEach(e -> {
-            deptList.stream().filter(f -> f.getId().equals(e.getDeptId())).findFirst().ifPresent(f -> {
-                e.setDeptName(f.getName());
-            });
-        });
-        // 导出 Excel
-        ExcelUtils.write(response, "巡检计划.xls", "数据", IotInspectPlanRespVO.class,
-                        BeanUtils.toBean(bean, IotInspectPlanRespVO.class));
-    }
-
-    @PutMapping("/update-status")
-    @Operation(summary = "修改巡检计划状态")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-plan:update')")
-    public CommonResult<Boolean> updateUserStatus(@Valid @RequestBody UserUpdateStatusReqVO reqVO) {
-        iotInspectPlanService.updateInspectPlanStatus(reqVO.getId(), reqVO.getStatus());
-        return success(true);
-    }
-}

+ 0 - 50
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/plan/vo/IotInspectPlanPageReqVO.java

@@ -1,50 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.plan.vo;
-
-import lombok.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import java.math.BigDecimal;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 巡检计划分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class IotInspectPlanPageReqVO extends PageParam {
-
-    @Schema(description = "巡检计划标题")
-    private String planTitle;
-
-    @Schema(description = "巡检计划编号")
-    private String planCode;
-
-    @Schema(description = "周期")
-    private BigDecimal planCycle;
-
-    @Schema(description = "单位")
-    private String planUnit;
-
-    @Schema(description = "负责人")
-    private String charge;
-
-    @Schema(description = "设备")
-    private String deviceIds;
-
-    @Schema(description = "备注", example = "随便")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "部门id", example = "21365")
-    private Long deptId;
-
-    @Schema(description = "状态")
-    private Integer status;
-
-    private String chargeName;
-}

+ 0 - 72
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/plan/vo/IotInspectPlanRespVO.java

@@ -1,72 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.plan.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-import com.alibaba.excel.annotation.*;
-
-@Schema(description = "管理后台 - 巡检计划 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotInspectPlanRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6280")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "巡检计划标题", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("巡检计划标题")
-    private String planTitle;
-
-    @Schema(description = "巡检计划编号", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("巡检计划编号")
-    private String planCode;
-
-    @Schema(description = "周期", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("周期")
-    private BigDecimal planCycle;
-
-    @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("单位")
-    private String planUnit;
-
-    @Schema(description = "负责人", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("负责人")
-    private String charge;
-
-    @Schema(description = "设备", requiredMode = Schema.RequiredMode.REQUIRED)
-//    @ExcelProperty("设备")
-    private String deviceIds;
-
-    @Schema(description = "备注", example = "随便")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    @Schema(description = "部门id", example = "21365")
-    private Long deptId;
-
-    @Schema(description = "状态")
-    private Integer status;
-
-    private String chargeName;
-
-    @Schema(description = "开始执行时间")
-    private String beginCreateTime;
-
-    @Schema(description = "开始执行时间")
-    private String lastCreateTime;
-
-    private List<String> charges;
-
-    private String createName;
-    @ExcelProperty("所在部门")
-    private String deptName;
-}

+ 0 - 55
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/plan/vo/IotInspectPlanSaveReqVO.java

@@ -1,55 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.plan.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-
-import javax.validation.constraints.*;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Schema(description = "管理后台 - 巡检计划新增/修改 Request VO")
-@Data
-public class IotInspectPlanSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6280")
-    private Long id;
-
-    @Schema(description = "巡检计划标题", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "巡检计划标题不能为空")
-    private String planTitle;
-
-    @Schema(description = "巡检计划编号", requiredMode = Schema.RequiredMode.REQUIRED)
-//    @NotEmpty(message = "巡检计划编号不能为空")
-    private String planCode;
-
-    @Schema(description = "周期", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "周期不能为空")
-    private BigDecimal planCycle;
-
-    @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "单位不能为空")
-    private String planUnit;
-
-    @Schema(description = "负责人", requiredMode = Schema.RequiredMode.REQUIRED)
-//    @NotEmpty(message = "负责人不能为空")
-    private String charge;
-
-    @Schema(description = "设备", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "设备不能为空")
-    private String deviceIds;
-
-    @Schema(description = "备注", example = "随便")
-    private String remark;
-
-    @Schema(description = "部门id", example = "21365")
-    private Long deptId;
-
-    @Schema(description = "状态")
-    private Integer status;
-    @Schema(description = "负责人")
-    private List<String> charges;
-
-    @Schema(description = "开始执行时间")
-    private LocalDateTime beginCreateTime;
-}

+ 0 - 137
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/route/IotInspectRouteController.java

@@ -1,137 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.route;
-
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.item.vo.IotInspectItemPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.item.vo.IotInspectItemRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.route.vo.IotInspectRoutePageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.route.vo.IotInspectRouteRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.route.vo.IotInspectRouteSaveReqVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectItemDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectRouteDO;
-import cn.iocoder.yudao.module.pms.service.inspect.IotInspectItemService;
-import cn.iocoder.yudao.module.pms.service.inspect.IotInspectRouteService;
-import cn.iocoder.yudao.module.system.api.dept.DeptApi;
-import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import javax.annotation.Resource;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.security.access.prepost.PreAuthorize;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Operation;
-
-import javax.validation.constraints.*;
-import javax.validation.*;
-import javax.servlet.http.*;
-import java.util.*;
-import java.io.IOException;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
-
-
-@Tag(name = "管理后台 - 巡检路线")
-@RestController
-@RequestMapping("/rq/iot-inspect-route")
-@Validated
-public class IotInspectRouteController {
-
-    @Resource
-    private IotInspectRouteService iotInspectRouteService;
-    @Resource
-    private IotInspectItemService iotInspectItemService;
-    @Autowired
-    private DeptApi deptApi;
-
-    @GetMapping("/items")
-    @Operation(summary = "获得巡检项分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-item:query')")
-    public CommonResult<PageResult<IotInspectItemRespVO>> getIotInspectItemPage(@Valid IotInspectItemPageReqVO pageReqVO) {
-        PageResult<IotInspectItemDO> pageResult = iotInspectItemService.getRouteItem(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotInspectItemRespVO.class));
-    }
-    @PostMapping("/create")
-    @Operation(summary = "创建巡检路线")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-route:create')")
-    public CommonResult<Long> createIotInspectRoute(@Valid @RequestBody IotInspectRouteSaveReqVO createReqVO) {
-        return success(iotInspectRouteService.createIotInspectRoute(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新巡检路线")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-route:update')")
-    public CommonResult<Boolean> updateIotInspectRoute(@Valid @RequestBody IotInspectRouteSaveReqVO updateReqVO) {
-        iotInspectRouteService.updateIotInspectRoute(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除巡检路线")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-route:delete')")
-    public CommonResult<Boolean> deleteIotInspectRoute(@RequestParam("id") Long id) {
-        iotInspectRouteService.deleteIotInspectRoute(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得巡检路线")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-route:query')")
-    public CommonResult<IotInspectRouteRespVO> getIotInspectRoute(@RequestParam("id") Long id) {
-        IotInspectRouteDO iotInspectRoute = iotInspectRouteService.getIotInspectRoute(id);
-        return success(BeanUtils.toBean(iotInspectRoute, IotInspectRouteRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得巡检路线分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-route:query')")
-    public CommonResult<PageResult<IotInspectRouteRespVO>> getIotInspectRoutePage(@Valid IotInspectRoutePageReqVO pageReqVO) {
-        PageResult<IotInspectRouteDO> pageResult = iotInspectRouteService.getIotInspectRoutePage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotInspectRouteRespVO.class));
-    }
-
-    @GetMapping("/plan/page")
-    @Operation(summary = "获得设备巡检路线分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-route:query')")
-    public CommonResult<PageResult<IotInspectRouteRespVO>> getDeviceIotInspectRoutePage(@Valid IotInspectRoutePageReqVO pageReqVO) {
-        PageResult<IotInspectRouteDO> pageResult = iotInspectRouteService.getRoute(pageReqVO);
-        PageResult<IotInspectRouteRespVO> bean = BeanUtils.toBean(pageResult, IotInspectRouteRespVO.class);
-        for (IotInspectRouteRespVO iotInspectRouteRespVO : bean.getList()) {
-            DeptRespDTO dept = deptApi.getDept(iotInspectRouteRespVO.getDeptId());
-            if (Objects.nonNull(dept)) {
-                iotInspectRouteRespVO.setDeptName(dept.getName());
-            }
-        }
-        return success(bean);
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出巡检路线 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-route:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotInspectRouteExcel(@Valid IotInspectRoutePageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotInspectRouteDO> list = iotInspectRouteService.getIotInspectRoutePage(pageReqVO).getList();
-        List<IotInspectRouteRespVO> bean = BeanUtils.toBean(list, IotInspectRouteRespVO.class);
-        List<DeptRespDTO> deptList = deptApi.getDeptList();
-        bean.forEach(e -> {
-            deptList.stream().filter(f -> f.getId().equals(e.getDeptId())).findFirst().ifPresent(f -> {
-                e.setDeptName(f.getName());
-            });
-        });
-        // 导出 Excel
-        ExcelUtils.write(response, "巡检路线.xls", "数据", IotInspectRouteRespVO.class,
-                        BeanUtils.toBean(list, IotInspectRouteRespVO.class));
-    }
-
-}

+ 0 - 50
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/route/vo/IotInspectRoutePageReqVO.java

@@ -1,50 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.route.vo;
-
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 巡检路线分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class IotInspectRoutePageReqVO extends PageParam {
-
-    @Schema(description = "路线名称", example = "张三")
-    private String routeName;
-
-    @Schema(description = "设备分类")
-    private Long deviceClassify;
-
-    @Schema(description = "设备id", example = "6972")
-    private Long deviceId;
-
-    @Schema(description = "设备分类名称", example = "李四")
-    private String deviceClassifyName;
-
-    @Schema(description = "设备名称", example = "王五")
-    private String deviceName;
-
-    @Schema(description = "设备编码")
-    private String deviceCode;
-
-    @Schema(description = "巡检项")
-    private String itemJson;
-
-    @Schema(description = "备注", example = "随便")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "部门id", example = "27993")
-    private Long deptId;
-    private String brandName;
-
-}

+ 0 - 67
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/route/vo/IotInspectRouteRespVO.java

@@ -1,67 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.route.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
-
-@Schema(description = "管理后台 - 巡检路线 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotInspectRouteRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25340")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "路线名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
-    @ExcelProperty("路线名称")
-    private String routeName;
-
-    @Schema(description = "设备分类", requiredMode = Schema.RequiredMode.REQUIRED)
-//    @ExcelProperty("设备分类")
-    private Long deviceClassify;
-
-    @Schema(description = "设备id", example = "6972")
-//    @ExcelProperty("设备id")
-    private Long deviceId;
-
-    @Schema(description = "设备分类名称", example = "李四")
-    @ExcelProperty("设备分类名称")
-    private String deviceClassifyName;
-
-    @Schema(description = "设备名称", example = "王五")
-    @ExcelProperty("设备名称")
-    private String deviceName;
-
-    @Schema(description = "巡检项", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("巡检项")
-    private String itemJson;
-
-    @Schema(description = "备注", example = "随便")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-    @Schema(description = "部门id", example = "27993")
-    private Long deptId;
-
-    @Schema(description = "资产编码")
-    private String deviceCode;
-
-    @Schema(description = "部门名称")
-    @ExcelProperty("所在部门")
-    private String deptName;
-
-    @Schema(description = "路线排序")
-    private Long index;
-    @Schema(description = "路线描述")
-    private String routeDesc;
-    private Long brand;
-    private String brandName;
-}

+ 0 - 50
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/route/vo/IotInspectRouteSaveReqVO.java

@@ -1,50 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.inspect.route.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import javax.validation.constraints.*;
-
-@Schema(description = "管理后台 - 巡检路线新增/修改 Request VO")
-@Data
-public class IotInspectRouteSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25340")
-    private Long id;
-
-    @Schema(description = "路线名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
-    @NotEmpty(message = "路线名称不能为空")
-    private String routeName;
-
-    @Schema(description = "设备分类", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "设备分类不能为空")
-    private Long deviceClassify;
-
-    @Schema(description = "设备id", example = "6972")
-    private Long deviceId;
-
-    @Schema(description = "设备分类名称", example = "李四")
-    private String deviceClassifyName;
-
-    @Schema(description = "设备名称", example = "王五")
-    private String deviceName;
-
-    @Schema(description = "巡检项", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "巡检项不能为空")
-    private String itemJson;
-
-    @Schema(description = "备注", example = "随便")
-    private String remark;
-
-    @Schema(description = "部门id", example = "27993")
-    private Long deptId;
-
-    @Schema(description = "资产编码")
-    private String deviceCode;
-
-    @Schema(description = "路线描述")
-    private String routeDesc;
-
-    private Long brand;
-    private String brandName;
-}

+ 0 - 94
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotattachment/IotAttachmentController.java

@@ -1,94 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.iotattachment;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo.IotAttachmentPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo.IotAttachmentRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo.IotAttachmentSaveReqVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotattachment.IotAttachmentDO;
-import cn.iocoder.yudao.module.pms.service.iotattachment.IotAttachmentService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
-
-@Tag(name = "管理后台 - 附件")
-@RestController
-@RequestMapping("/rq/iot-attachment")
-@Validated
-public class IotAttachmentController {
-
-    @Resource
-    private IotAttachmentService iotAttachmentService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建附件")
-    @PreAuthorize("@ss.hasPermission('rq:iot-attachment:create')")
-    public CommonResult<Long> createIotAttachment(@Valid @RequestBody IotAttachmentSaveReqVO createReqVO) {
-        return success(iotAttachmentService.createIotAttachment(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新附件")
-    @PreAuthorize("@ss.hasPermission('rq:iot-attachment:update')")
-    public CommonResult<Boolean> updateIotAttachment(@Valid @RequestBody IotAttachmentSaveReqVO updateReqVO) {
-        iotAttachmentService.updateIotAttachment(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除附件")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-attachment:delete')")
-    public CommonResult<Boolean> deleteIotAttachment(@RequestParam("id") Long id) {
-        iotAttachmentService.deleteIotAttachment(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得附件")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-attachment:query')")
-    public CommonResult<IotAttachmentRespVO> getIotAttachment(@RequestParam("id") Long id) {
-        IotAttachmentDO iotAttachment = iotAttachmentService.getIotAttachment(id);
-        return success(BeanUtils.toBean(iotAttachment, IotAttachmentRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得附件分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-attachment:query')")
-    public CommonResult<PageResult<IotAttachmentRespVO>> getIotAttachmentPage(@Valid IotAttachmentPageReqVO pageReqVO) {
-        PageResult<IotAttachmentDO> pageResult = iotAttachmentService.getIotAttachmentPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotAttachmentRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出附件 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-attachment:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotAttachmentExcel(@Valid IotAttachmentPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotAttachmentDO> list = iotAttachmentService.getIotAttachmentPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "附件.xls", "数据", IotAttachmentRespVO.class,
-                        BeanUtils.toBean(list, IotAttachmentRespVO.class));
-    }
-
-}

+ 0 - 54
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotattachment/vo/IotAttachmentPageReqVO.java

@@ -1,54 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo;
-
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-import java.util.Collection;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 附件分页 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class IotAttachmentPageReqVO extends PageParam {
-
-    @Schema(description = "所属功能模块(保养/维修/巡检/日报...)")
-    private String category;
-
-    @Schema(description = "业务主键id", example = "3510")
-    private Long bizId;
-
-    @Schema(description = "类别(施工设计/完工报告)", example = "2")
-    private String type;
-
-    @Schema(description = "文件名称", example = "芋艿")
-    private String filename;
-
-    @Schema(description = "文件类型", example = "1")
-    private String fileType;
-
-    @Schema(description = "文件路径")
-    private String filePath;
-
-    @Schema(description = "文件大小")
-    private String fileSize;
-
-    @Schema(description = "备注", example = "随便")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
-    @Schema(description = "业务主键id 集合", example = "3510,3610")
-    private Collection<Long> bizIds;
-
-    @Schema(description = "附件类型 集合", example = "CONSTRUCTION_DESIGN,GEOLOGICAL_DESIGN,COMPLETION_REPORT")
-    private Collection<String> types;
-}

+ 0 - 55
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotattachment/vo/IotAttachmentRespVO.java

@@ -1,55 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Schema(description = "管理后台 - 附件 Response VO")
-@Data
-@ExcelIgnoreUnannotated
-public class IotAttachmentRespVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "21951")
-    @ExcelProperty("主键id")
-    private Long id;
-
-    @Schema(description = "所属功能模块(保养/维修/巡检/日报...)")
-    @ExcelProperty("所属功能模块(保养/维修/巡检/日报...)")
-    private String category;
-
-    @Schema(description = "业务主键id", example = "3510")
-    @ExcelProperty("业务主键id")
-    private Long bizId;
-
-    @Schema(description = "类别(施工设计/完工报告)", example = "2")
-    @ExcelProperty("类别(施工设计/完工报告)")
-    private String type;
-
-    @Schema(description = "文件名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
-    @ExcelProperty("文件名称")
-    private String filename;
-
-    @Schema(description = "文件类型", example = "1")
-    @ExcelProperty("文件类型")
-    private String fileType;
-
-    @Schema(description = "文件路径", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("文件路径")
-    private String filePath;
-
-    @Schema(description = "文件大小")
-    @ExcelProperty("文件大小")
-    private String fileSize;
-
-    @Schema(description = "备注", example = "随便")
-    @ExcelProperty("备注")
-    private String remark;
-
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-}

+ 0 - 41
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotattachment/vo/IotAttachmentSaveReqVO.java

@@ -1,41 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import javax.validation.constraints.NotEmpty;
-
-@Schema(description = "管理后台 - 附件新增/修改 Request VO")
-@Data
-public class IotAttachmentSaveReqVO {
-
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "21951")
-    private Long id;
-
-    @Schema(description = "所属功能模块(保养/维修/巡检/日报...)")
-    private String category;
-
-    @Schema(description = "业务主键id", example = "3510")
-    private Long bizId;
-
-    @Schema(description = "类别(施工设计/完工报告)", example = "2")
-    private String type;
-
-    @Schema(description = "文件名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
-    @NotEmpty(message = "文件名称不能为空")
-    private String filename;
-
-    @Schema(description = "文件类型", example = "1")
-    private String fileType;
-
-    @Schema(description = "文件路径", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "文件路径不能为空")
-    private String filePath;
-
-    @Schema(description = "文件大小")
-    private String fileSize;
-
-    @Schema(description = "备注", example = "随便")
-    private String remark;
-
-}

+ 0 - 193
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotbom/IotBomController.java

@@ -1,193 +0,0 @@
-package cn.iocoder.yudao.module.pms.controller.admin.iotbom;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.util.ObjUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.iotbom.vo.*;
-import cn.iocoder.yudao.module.pms.controller.admin.iotcommonbommaterial.vo.IotCommonBomMaterialSaveReqVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotProductClassifyDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotbom.IotBomDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.iotcommonbommaterial.IotCommonBomMaterialDO;
-import cn.iocoder.yudao.module.pms.service.IotProductClassifyService;
-import cn.iocoder.yudao.module.pms.service.iotbom.IotBomService;
-import cn.iocoder.yudao.module.pms.service.iotcommonbommaterial.IotCommonBomMaterialService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-
-@Tag(name = "管理后台 - PMS BOM 关系")
-@RestController
-@RequestMapping("/rq/iot-bom")
-@Validated
-public class IotBomController {
-
-    @Resource
-    private IotBomService iotBomService;
-    @Resource
-    private IotCommonBomMaterialService iotCommonBomMaterialService;
-    @Resource
-    private IotProductClassifyService iotProductClassifyService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建PMS BOM 关系")
-    @PreAuthorize("@ss.hasPermission('rq:iot-bom:create')")
-    public CommonResult<Long> createIotBom(@Valid @RequestBody IotBomSaveReqVO createReqVO) {
-        return success(iotBomService.createIotBom(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新PMS BOM 关系")
-    @PreAuthorize("@ss.hasPermission('rq:iot-bom:update')")
-    public CommonResult<Boolean> updateIotBom(@Valid @RequestBody IotBomSaveReqVO updateReqVO) {
-        iotBomService.updateIotBom(updateReqVO);
-        return success(true);
-    }
-
-    @PutMapping("/copyCategoryBom")
-    @Operation(summary = "拷贝已有设备分类的BOM")
-    @PreAuthorize("@ss.hasPermission('rq:iot-bom:create')")
-    public CommonResult<Boolean> copyCategoryBom(@Valid @RequestBody IotBomSaveReqVO updateReqVO) {
-        iotBomService.copyCategoryBom(updateReqVO);
-        return success(true);
-    }
-
-    @PutMapping("/updateAlone")
-    @Operation(summary = "更新PMS BOM 关系 只同步没有BOM的设备")
-    @PreAuthorize("@ss.hasPermission('rq:iot-bom:update')")
-    public CommonResult<Boolean> updateAlone(@Valid @RequestBody IotBomSaveReqVO updateReqVO) {
-        iotBomService.updateIotBomAlone(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除PMS BOM 关系")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('rq:iot-bom:delete')")
-    public CommonResult<Boolean> deleteIotBom(@RequestParam("id") Long id) {
-        iotBomService.deleteIotBom(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得PMS BOM 关系")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('rq:iot-bom:query')")
-    public CommonResult<IotBomRespVO> getIotBom(@RequestParam("id") Long id) {
-        IotBomDO iotBom = iotBomService.getIotBom(id);
-        return success(BeanUtils.toBean(iotBom, IotBomRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得PMS BOM 关系分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-bom:query')")
-    public CommonResult<PageResult<IotBomRespVO>> getIotBomPage(@Valid IotBomPageReqVO pageReqVO) {
-        PageResult<IotBomDO> pageResult = iotBomService.getIotBomPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotBomRespVO.class));
-    }
-
-    @GetMapping("/deviceAssociateBomPage")
-    @Operation(summary = "获得PMS 设备关联-BOM 关系分页")
-    @PreAuthorize("@ss.hasPermission('rq:iot-bom:query')")
-    public CommonResult<PageResult<IotBomRespVO>> deviceAssociateBomPage(@Valid IotBomPageReqVO pageReqVO) {
-        PageResult<IotBomDO> pageResult = iotBomService.deviceAssociateBomPage(pageReqVO);
-
-        return success(BeanUtils.toBean(pageResult, IotBomRespVO.class));
-    }
-
-    @GetMapping("/list")
-    @Operation(summary = "获取 Bom树 列表")
-    @PreAuthorize("@ss.hasPermission('rq:iot-bom:query')")
-    public CommonResult<List<IotBomRespVO>> getBomList(IotBomListReqVO reqVO) {
-        List<IotBomDO> list = iotBomService.getBomList(reqVO);
-        if (CollUtil.isEmpty(list)) {
-            return success(Collections.emptyList());
-        }
-        List<Long> bomNodeIds = list.stream()
-                .map(IotBomDO::getId)
-                .collect(Collectors.toList());
-        IotCommonBomMaterialSaveReqVO bomMaterialSaveReqVO = new IotCommonBomMaterialSaveReqVO();
-        bomMaterialSaveReqVO.setBomNodeIds(bomNodeIds);
-        // 查询所有bom节点已经绑定的物料列表
-        List<IotCommonBomMaterialDO> bomMaterials = iotCommonBomMaterialService.getIotCommonBomMaterials(bomMaterialSaveReqVO);
-        Map<Long, Integer> bomMaterialCount = new HashMap<>();
-        if (CollUtil.isNotEmpty(bomMaterials)) {
-            bomMaterials.forEach(material -> {
-                if (bomMaterialCount.containsKey(material.getBomNodeId())) {
-                    bomMaterialCount.put(material.getBomNodeId(), bomMaterialCount.get(material.getBomNodeId())+1);
-                } else {
-                    bomMaterialCount.put(material.getBomNodeId(), 1);
-                }
-            });
-        }
-        // 拼接所属 设备分类 名称
-        Map<Long, IotProductClassifyDO> deviceCategoryMap = iotProductClassifyService.getIotProductClassifyMap(
-                convertList(list, IotBomDO::getDeviceCategoryId));
-        return success(BeanUtils.toBean(list, IotBomRespVO.class, bom -> {
-            Integer materialCount = bomMaterialCount.getOrDefault(bom.getId(), 0);
-            bom.setMaterials(materialCount);
-            if (ObjUtil.isNotEmpty(bom.getDeviceCategoryId())) {
-                if (ObjUtil.isNotEmpty(deviceCategoryMap.get(bom.getDeviceCategoryId()))) {
-                    bom.setDeviceCategoryName(deviceCategoryMap.get(bom.getDeviceCategoryId()).getName());
-                }
-            }
-        }));
-    }
-
-    @GetMapping("/listTree")
-    @Operation(summary = "获取 Bom树 分页 列表")
-    @PreAuthorize("@ss.hasPermission('rq:iot-bom:query')")
-    public CommonResult<PageResult<IotBomRespVO>> getBomTreeList(@Valid IotBomListReqVO reqVO) {
-        PageResult<IotBomRespVO> pageResult = iotBomService.getBomTreePage(reqVO);
-        return success(pageResult);
-    }
-
-    @GetMapping(value = {"/list-all-simple", "/simple-list"})
-    @Operation(summary = "获取Bom精简信息列表", description = "只包含被开启的Bom节点,主要用于前端的下拉选项")
-    public CommonResult<List<IotBomSimpleRespVO>> getSimpleBomList(IotBomListReqVO reqVO) {
-        if (ObjectUtil.isEmpty(reqVO.getDeviceCategoryId())) {
-            return success(CollectionUtil.newArrayList());
-        }
-        reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
-        List<IotBomDO> list = iotBomService.getBomList(reqVO);
-        return success(BeanUtils.toBean(list, IotBomSimpleRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出PMS BOM 关系 Excel")
-    @PreAuthorize("@ss.hasPermission('rq:iot-bom:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIotBomExcel(@Valid IotBomPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotBomDO> list = iotBomService.getIotBomPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "PMS BOM 关系.xls", "数据", IotBomRespVO.class,
-                        BeanUtils.toBean(list, IotBomRespVO.class));
-    }
-
-}

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov