소스 검색

Merge remote-tracking branch 'origin/master'

林仔 7 달 전
부모
커밋
a3482f33b5
72개의 변경된 파일4765개의 추가작업 그리고 94개의 파일을 삭제
  1. 8 0
      .idea/.gitignore
  2. 19 0
      .idea/encodings.xml
  3. 6 0
      .idea/junitgenerator-prj-settings.xml
  4. 13 0
      .idea/misc.xml
  5. 10 0
      .idea/runConfigurations.xml
  6. 6 0
      .idea/vcs.xml
  7. 5 0
      environment-service/pom.xml
  8. 13 2
      environment-service/src/main/java/com/zksy/environment/EnvironmentApplication.java
  9. 9 9
      environment-service/src/main/java/com/zksy/environment/config/RSServerService.java
  10. 5 1
      environment-service/src/main/resources/application-dev.yaml
  11. 16 0
      firefighting-pressure-service/pom.xml
  12. 15 2
      firefighting-pressure-service/src/main/java/com/zksy/pressure/PressureApplication.java
  13. 17 0
      firefighting-pressure-service/src/main/java/com/zksy/pressure/domain/Enum/FirefightingDeviceCodeEnum.java
  14. 18 0
      firefighting-pressure-service/src/main/java/com/zksy/pressure/domain/Enum/FirefightingWarningCodeEnum.java
  15. 85 0
      firefighting-pressure-service/src/main/java/com/zksy/pressure/utils/MessageHandler.java
  16. 4 1
      firefighting-pressure-service/src/main/resources/application-dev.yaml
  17. 10 0
      flammable-gas-service/pom.xml
  18. 15 2
      flammable-gas-service/src/main/java/com/zksy/gas/GasApplication.java
  19. 17 0
      flammable-gas-service/src/main/java/com/zksy/gas/domain/Enum/GasDeviceCodeEnum.java
  20. 20 0
      flammable-gas-service/src/main/java/com/zksy/gas/domain/Enum/GasWarningCodeEnum.java
  21. 129 0
      flammable-gas-service/src/main/java/com/zksy/gas/utils/MessageHandler.java
  22. 4 1
      flammable-gas-service/src/main/resources/application-dev.yaml
  23. 1329 0
      logs/pipe-network-service/spring.log
  24. 91 0
      manhole-service/pom.xml
  25. 16 0
      manhole-service/src/main/java/com/zksy/manhole/ManholeApplication.java
  26. 45 0
      manhole-service/src/main/java/com/zksy/manhole/config/NettyServer.java
  27. 75 0
      manhole-service/src/main/java/com/zksy/manhole/config/NettyServerThread.java
  28. 14 0
      manhole-service/src/main/java/com/zksy/manhole/config/RestTemplateConfig.java
  29. 96 0
      manhole-service/src/main/java/com/zksy/manhole/domain/BaseDevices.java
  30. 75 0
      manhole-service/src/main/java/com/zksy/manhole/domain/EquipmentStatus.java
  31. 69 0
      manhole-service/src/main/java/com/zksy/manhole/domain/ManholeData.java
  32. 21 0
      manhole-service/src/main/java/com/zksy/manhole/mapper/BaseDevicesMapper.java
  33. 9 0
      manhole-service/src/main/java/com/zksy/manhole/mapper/EquipmentStatusMapper.java
  34. 9 0
      manhole-service/src/main/java/com/zksy/manhole/mapper/ManholeDataMapper.java
  35. 15 0
      manhole-service/src/main/java/com/zksy/manhole/service/BaseDevicesService.java
  36. 9 0
      manhole-service/src/main/java/com/zksy/manhole/service/EquipmentStatusService.java
  37. 10 0
      manhole-service/src/main/java/com/zksy/manhole/service/ManholeDataService.java
  38. 57 0
      manhole-service/src/main/java/com/zksy/manhole/service/impl/BaseDevicesServiceImpl.java
  39. 12 0
      manhole-service/src/main/java/com/zksy/manhole/service/impl/EquipmentStatusServiceImpl.java
  40. 57 0
      manhole-service/src/main/java/com/zksy/manhole/service/impl/ManholeDataServiceImpl.java
  41. 58 0
      manhole-service/src/main/java/com/zksy/manhole/utils/DataCheckUtil.java
  42. 83 0
      manhole-service/src/main/java/com/zksy/manhole/utils/DataParser.java
  43. 37 0
      manhole-service/src/main/java/com/zksy/manhole/utils/DeviceOfflineCheckTask.java
  44. 92 0
      manhole-service/src/main/java/com/zksy/manhole/utils/MessageHandler.java
  45. 21 0
      manhole-service/src/main/java/com/zksy/manhole/utils/SpringContextUtil.java
  46. 17 0
      manhole-service/src/main/resources/application-dev.yaml
  47. 11 0
      manhole-service/src/main/resources/application-prod.yaml
  48. 41 0
      manhole-service/src/main/resources/bootstrap.yaml
  49. 114 0
      pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/base/EquipmentBaseController.java
  50. 104 0
      pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/base/EquipmentMaintainController.java
  51. 105 0
      pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/base/EquipmentStatusController.java
  52. 99 0
      pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/base/EquipmentTypeController.java
  53. 78 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/domain/EquipmentBase.java
  54. 68 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/domain/EquipmentMaintain.java
  55. 75 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/domain/EquipmentStatus.java
  56. 39 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/domain/EquipmentType.java
  57. 11 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/mapper/EquipmentBaseMapper.java
  58. 9 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/mapper/EquipmentMaintainMapper.java
  59. 9 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/mapper/EquipmentStatusMapper.java
  60. 9 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/mapper/EquipmentTypeMapper.java
  61. 53 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/EquipmentBaseService.java
  62. 36 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/EquipmentMaintainService.java
  63. 34 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/EquipmentStatusService.java
  64. 49 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/EquipmentTypeService.java
  65. 224 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/impl/EquipmentBaseServiceImpl.java
  66. 134 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/impl/EquipmentMaintainServiceImpl.java
  67. 192 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/impl/EquipmentStatusServiceImpl.java
  68. 389 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/impl/EquipmentTypeServiceImpl.java
  69. 101 0
      pipe-network-service/zksy-system/src/main/java/com/zksy/utils/DevicePhoneFetchUtil.java
  70. 1 0
      pom.xml
  71. 15 75
      zk-api-service/src/main/java/com/zksy/api/utils/SmsUtil.java
  72. 4 1
      zk-common/src/main/java/com/zksy/common/utils/RedisUtils.java

+ 8 - 0
.idea/.gitignore

@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/

+ 19 - 0
.idea/encodings.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/environment-service/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/firefighting-pressure-service/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/flammable-gas-service/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/manhole-service/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/manhole-service/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/pipe-network-service/zksy-admin/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/pipe-network-service/zksy-common/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/pipe-network-service/zksy-framework/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/pipe-network-service/zksy-generator/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/pipe-network-service/zksy-quartz/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/pipe-network-service/zksy-system/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/zk-api-service/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/zk-common/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/zk-gateway/src/main/java" charset="UTF-8" />
+  </component>
+</project>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 6 - 0
.idea/junitgenerator-prj-settings.xml


+ 13 - 0
.idea/misc.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+        <option value="$PROJECT_DIR$/manhole-service/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK" />
+</project>

+ 10 - 0
.idea/runConfigurations.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RunConfigurationProducerService">
+    <option name="ignoredProducers">
+      <set>
+        <option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
+      </set>
+    </option>
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>

+ 5 - 0
environment-service/pom.xml

@@ -28,6 +28,11 @@
             <artifactId>zk-api-service</artifactId>
             <version>1.0.0</version>
         </dependency>
+        <dependency>
+            <groupId>com.zksy</groupId>
+            <artifactId>zksy-system</artifactId>
+            <version>3.9.0</version>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>

+ 13 - 2
environment-service/src/main/java/com/zksy/environment/EnvironmentApplication.java

@@ -6,8 +6,19 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.scheduling.annotation.EnableAsync;
 
-@MapperScan(basePackages = "com.zksy.environment.mapper")
-@SpringBootApplication(scanBasePackages = {"com.zksy.environment","com.zksy.api"})
+@MapperScan({
+        "com.zksy.environment.mapper",
+        "com.zksy.base.mapper",
+        "com.zksy.system.mapper"
+})
+@SpringBootApplication(scanBasePackages = {
+        "com.zksy.environment", // 默认就会扫描,不写也行
+        "com.zksy.api",         // 需要跨模块时再加
+        "com.zksy.base.service",
+        "com.zksy.system.service",
+        "com.zksy.common",
+        "com.zksy.utils"
+})
 public class EnvironmentApplication {
     public static void main(String[] args) {
         SpringApplication.run(EnvironmentApplication.class, args);

+ 9 - 9
environment-service/src/main/java/com/zksy/environment/config/RSServerService.java

@@ -3,6 +3,7 @@ package com.zksy.environment.config;
 import com.zksy.api.utils.SmsUtil;
 import com.zksy.environment.domain.ERealTimeData;
 import com.zksy.environment.mapper.ERealTimeDataMapper;
+import com.zksy.utils.DevicePhoneFetchUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -12,7 +13,6 @@ import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
-import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -38,6 +38,8 @@ public class RSServerService {
 
     @Autowired
     private SmsUtil smsUtil;
+    @Autowired
+    private DevicePhoneFetchUtil devicePhoneFetchUtil;
 
     @PostConstruct
     public void init() {
@@ -107,12 +109,7 @@ public class RSServerService {
 
                 @Override
                 public void receiveRealtimeData(RealTimeData data) {
-                    // 1. 定义必须传入的报警手机号列表(可根据实际场景从配置/数据库获取)
-                    List<String> mandatoryAlarmPhones = Arrays.asList(
-                            "15773238205",
-                            "19892389826"
-                            // 可根据设备类型/节点ID动态调整
-                    );
+
                     for (NodeData nd : data.getNodeList()) {
                         try {
                             ERealTimeData realTimeData = new ERealTimeData();
@@ -128,8 +125,11 @@ public class RSServerService {
                             realTimeData.setCreateTime(LocalDateTime.now());
                             realTimeDataMapper.insert(realTimeData);
 
-                            // 2. 必须传入第三个参数(报警手机号列表)
-                            smsUtil.checkDeviceAlarmAndSend(data, nd, mandatoryAlarmPhones);
+                            //获取能够发送的手机号
+                            List<String> devicePhoneList = devicePhoneFetchUtil.getPhoneListByDeviceId(String.valueOf(data.getDeviceId()));
+
+                            //传入手机号参数
+                            smsUtil.checkDeviceAlarmAndSend(data, nd, devicePhoneList);
                         } catch (Exception e) {
                             log.error("实时数据入库失败:设备ID={}, 节点ID={}", data.getDeviceId(), nd.getNodeId(), e);
                         }

+ 5 - 1
environment-service/src/main/resources/application-dev.yaml

@@ -14,4 +14,8 @@ spring:
       discovery:
         server-addr: 192.168.110.30:8848
       config:
-        server-addr: 192.168.110.30:8848
+        server-addr: 192.168.110.30:8848
+
+mybatis-plus:
+  type-aliases-package: com.zksy.environment.domain, com.zksy.common.core.domain.entity,com.zksy.system.domain
+  mapper-locations: classpath*:mapper/**/*Mapper.xml

+ 16 - 0
firefighting-pressure-service/pom.xml

@@ -24,6 +24,22 @@
             <artifactId>zk-common</artifactId>
             <version>1.0.0</version>
         </dependency>
+        <dependency>
+            <groupId>com.zksy</groupId>
+            <artifactId>zk-api-service</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.zksy</groupId>
+            <artifactId>zksy-system</artifactId>
+            <version>3.9.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter-test</artifactId>
+            <version>3.0.5</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>

+ 15 - 2
firefighting-pressure-service/src/main/java/com/zksy/pressure/PressureApplication.java

@@ -6,8 +6,21 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.scheduling.annotation.EnableAsync;
 
-@MapperScan(basePackages = "com.zksy.pressure.mapper")
-@SpringBootApplication(scanBasePackages = {"com.zksy.pressure","com.zksy.api"})
+//@MapperScan(basePackages = "com.zksy.pressure.mapper")
+//@SpringBootApplication(scanBasePackages = {"com.zksy.pressure","com.zksy.api"})
+@MapperScan({
+        "com.zksy.pressure.mapper",
+        "com.zksy.base.mapper",
+        "com.zksy.system.mapper"
+})
+@SpringBootApplication(scanBasePackages = {
+        "com.zksy.pressure",
+        "com.zksy.api",
+        "com.zksy.base.service",
+        "com.zksy.system.service",
+        "com.zksy.common",
+        "com.zksy.utils"
+})
 public class PressureApplication {
     public static void main(String[] args) {
         SpringApplication.run(PressureApplication.class, args);

+ 17 - 0
firefighting-pressure-service/src/main/java/com/zksy/pressure/domain/Enum/FirefightingDeviceCodeEnum.java

@@ -0,0 +1,17 @@
+package com.zksy.pressure.domain.Enum;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 设备编码枚举(新增)
+ */
+@Getter
+@AllArgsConstructor
+public enum FirefightingDeviceCodeEnum {
+    //firefighting
+    FIREFIGHTING_DEVICE("1302100007", "消防设备"); // 对应数据库中的设备编码
+
+    private final String code;  // 设备编码
+    private final String name;  // 设备名称
+}

+ 18 - 0
firefighting-pressure-service/src/main/java/com/zksy/pressure/domain/Enum/FirefightingWarningCodeEnum.java

@@ -0,0 +1,18 @@
+package com.zksy.pressure.domain.Enum;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 预警编码枚举(替代原WarningTypeEnum)
+ */
+@Getter
+@AllArgsConstructor
+public enum FirefightingWarningCodeEnum {
+
+    PRESSURE("WARN-PRESSURE","消防压力过高预警",50.0);
+
+    private final String code;       // 预警编码(对应数据库)
+    private final String name;       // 预警名称
+    private final double defaultVal; // 默认阈值(数据库未配置时使用)
+}

+ 85 - 0
firefighting-pressure-service/src/main/java/com/zksy/pressure/utils/MessageHandler.java

@@ -1,9 +1,16 @@
 package com.zksy.pressure.utils;
 
 import cn.hutool.core.lang.UUID;
+import com.alibaba.fastjson.JSONObject;
+import com.zksy.api.domain.WarningThreshold;
+import com.zksy.api.service.WarningThresholdService;
+import com.zksy.api.utils.SmsUtil;
 import com.zksy.common.exception.InvalidMessageException;
+import com.zksy.pressure.domain.Enum.FirefightingDeviceCodeEnum;
+import com.zksy.pressure.domain.Enum.FirefightingWarningCodeEnum;
 import com.zksy.pressure.domain.FirefightingPressure;
 import com.zksy.pressure.service.FirefightingPressureService;
+import com.zksy.utils.DevicePhoneFetchUtil;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import io.netty.channel.ChannelHandler;
@@ -15,6 +22,11 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
 @ChannelHandler.Sharable
 @Slf4j
 @Component
@@ -22,6 +34,12 @@ public class MessageHandler extends ChannelInboundHandlerAdapter {
 	private static Logger logger = LoggerFactory.getLogger(MessageHandler.class);
 	private final FirefightingPressureService firefightingPressureService;
 	@Autowired
+	private WarningThresholdService service;
+	@Autowired
+	private SmsUtil smsUtil;
+	@Autowired
+	private DevicePhoneFetchUtil devicePhoneFetchUtil;
+	@Autowired
 	public MessageHandler(FirefightingPressureService firefightingPressureService) {
 		this.firefightingPressureService = firefightingPressureService;
 	}
@@ -59,6 +77,8 @@ public class MessageHandler extends ChannelInboundHandlerAdapter {
 				//String addressCode = resultData.getAddressCode();
 				//DeviceOfflineCheckTask.deviceLastReceiveTimeMap.put(addressCode, new Date());
 				firefightingPressureService.save(resultData);
+
+				checkIfSmsAlertNeeded(resultData);
 			}
 		} catch (InvalidMessageException e) {
 			logger.error("数据入库失败: {}", e.getMessage());
@@ -115,4 +135,69 @@ public class MessageHandler extends ChannelInboundHandlerAdapter {
 			logger.error("发送数据失败: {}", e.getMessage());
 		}
 	}
+	//检查是否会触发短信预警
+	public void checkIfSmsAlertNeeded(FirefightingPressure resultData){
+		try {
+			//用遥测站地址作为设备的设备编号
+			String deviceId = resultData.getTelemeteringStation();
+			//1、获取到压力阈值
+			Double warningValue = null;
+			//1.1获取到设备编码
+			String deviceWarningCode = FirefightingDeviceCodeEnum.FIREFIGHTING_DEVICE.getCode();
+			FirefightingWarningCodeEnum targetWarningType=FirefightingWarningCodeEnum.PRESSURE;
+
+			String warningCode = targetWarningType.getCode();
+			String warningMsg = targetWarningType.getName();
+			try {
+				//1.2根据设备编码获取压力阈值
+				WarningThreshold threshold = service.getWarningThresholdByDeviceAndCode(deviceWarningCode, warningCode);
+				warningValue = threshold.getWarningValue();
+			} catch (Exception e) {
+				log.error("查询预警阈值失败");
+			}
+			//1.2获取到实际压力值
+			Double pressureValue = resultData.getPressureValue();
+			boolean isOverThreshold = pressureValue > warningValue;
+			//1.3超出了阈值则发送短信,设备编号这里不是很清楚
+			if(isOverThreshold){
+				sendMessage(deviceId,warningMsg,resultData.getLongitude(),resultData.getLatitude());
+			}
+			if(resultData.getD14()==1){
+				sendMessage(deviceId,"压力变幅报警",resultData.getLongitude(),resultData.getLatitude());
+			}
+			if(resultData.getD13()==1){
+				sendMessage(deviceId,"压力下下限报警",resultData.getLongitude(),resultData.getLatitude());
+			}
+			if(resultData.getD12()==1){
+				sendMessage(deviceId,"压力上上限报警",resultData.getLongitude(),resultData.getLatitude());
+			}
+			if(resultData.getD11()==1){
+				sendMessage(deviceId,"压力下线报警",resultData.getLongitude(),resultData.getLatitude());
+			}
+			if(resultData.getD10()==1){
+				sendMessage(deviceId,"压力上限报警",resultData.getLongitude(),resultData.getLatitude());
+			}
+			if(resultData.getD9()==1){
+				sendMessage(deviceId,"传感器状态",resultData.getLongitude(),resultData.getLatitude());
+			}
+			if(resultData.getD1()==1){
+				sendMessage(deviceId,"倾斜报警1",resultData.getLongitude(),resultData.getLatitude());
+			}
+		} catch (Exception e) {
+			log.error("设备报警处理失败");
+		}
+
+	}
+	//构造发送短信参数&&发送短信
+	public void sendMessage(String deviceNo,String alarmType,BigDecimal lng,BigDecimal lat){
+		// 构造短信参数
+		JSONObject params = new JSONObject();
+		params.put("deviceNo", deviceNo);
+		params.put("alarmType", alarmType);
+		// 经纬度处理(为执行信息处理)
+		params.put("location", String.format("经纬度:%.6f,%.8f", lng, lat));
+		List<String> phoneListByDeviceId = devicePhoneFetchUtil.getPhoneListByDeviceId(deviceNo);
+		Map<String, Boolean> sendResults = smsUtil.sendBatchSms(phoneListByDeviceId, params.toJSONString());
+		log.info("发送信息完成");
+	}
 }

+ 4 - 1
firefighting-pressure-service/src/main/resources/application-dev.yaml

@@ -14,4 +14,7 @@ spring:
       discovery:
         server-addr: 192.168.110.30:8848
       config:
-        server-addr: 192.168.110.30:8848
+        server-addr: 192.168.110.30:8848
+mybatis-plus:
+  type-aliases-package: com.zksy.pressure.domain, com.zksy.common.core.domain.entity,com.zksy.system.domain
+  mapper-locations: classpath*:mapper/**/*Mapper.xml

+ 10 - 0
flammable-gas-service/pom.xml

@@ -24,6 +24,16 @@
             <artifactId>zk-common</artifactId>
             <version>1.0.0</version>
         </dependency>
+        <dependency>
+            <groupId>com.zksy</groupId>
+            <artifactId>zk-api-service</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.zksy</groupId>
+            <artifactId>zksy-system</artifactId>
+            <version>3.9.0</version>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>

+ 15 - 2
flammable-gas-service/src/main/java/com/zksy/gas/GasApplication.java

@@ -5,8 +5,21 @@ import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
-@MapperScan(basePackages = "com.zksy.gas.mapper")
-@SpringBootApplication(scanBasePackages = {"com.zksy.gas","com.zksy.api"})
+//@MapperScan(basePackages = "com.zksy.gas.mapper")
+//@SpringBootApplication(scanBasePackages = {"com.zksy.gas","com.zksy.api"})
+@MapperScan({
+        "com.zksy.gas.mapper",
+        "com.zksy.base.mapper",
+        "com.zksy.system.mapper"
+})
+@SpringBootApplication(scanBasePackages = {
+        "com.zksy.gas",
+        "com.zksy.api",
+        "com.zksy.base.service",
+        "com.zksy.system.service",
+        "com.zksy.common",
+        "com.zksy.utils"
+})
 public class GasApplication {
     public static void main(String[] args) {
         SpringApplication.run(GasApplication.class, args);

+ 17 - 0
flammable-gas-service/src/main/java/com/zksy/gas/domain/Enum/GasDeviceCodeEnum.java

@@ -0,0 +1,17 @@
+package com.zksy.gas.domain.Enum;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 设备编码枚举(新增)
+ */
+@Getter
+@AllArgsConstructor
+public enum GasDeviceCodeEnum {
+    //firefighting
+    FIREFIGHTING_DEVICE("xxxxxxx", "可燃气体监测仪"); // 对应数据库中的设备编码
+
+    private final String code;  // 设备编码
+    private final String name;  // 设备名称
+}

+ 20 - 0
flammable-gas-service/src/main/java/com/zksy/gas/domain/Enum/GasWarningCodeEnum.java

@@ -0,0 +1,20 @@
+package com.zksy.gas.domain.Enum;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 预警编码枚举(替代原WarningTypeEnum)
+ */
+@Getter
+@AllArgsConstructor
+public enum GasWarningCodeEnum {
+
+    TEMPERATRUE("WARN-GAS-TEMPERATRUE","可燃气体温度预警",50.0),
+    HUMIDITY("WARN-GAS-HUMIDITY","可燃气体湿度预警",50.0),
+    GASCONCENTRATION("WARN-GAS-CONCENTRATION","可燃气体浓度预警",50.0);
+
+    private final String code;       // 预警编码(对应数据库)
+    private final String name;       // 预警名称
+    private final double defaultVal; // 默认阈值(数据库未配置时使用)
+}

+ 129 - 0
flammable-gas-service/src/main/java/com/zksy/gas/utils/MessageHandler.java

@@ -1,9 +1,16 @@
 package com.zksy.gas.utils;
 
 import cn.hutool.core.lang.UUID;
+import com.alibaba.fastjson.JSONObject;
+import com.zksy.api.domain.WarningThreshold;
+import com.zksy.api.service.WarningThresholdService;
+import com.zksy.api.utils.SmsUtil;
 import com.zksy.common.exception.InvalidMessageException;
+import com.zksy.gas.domain.Enum.GasDeviceCodeEnum;
+import com.zksy.gas.domain.Enum.GasWarningCodeEnum;
 import com.zksy.gas.domain.GasMonitorData;
 import com.zksy.gas.service.GasMonitorDataService;
+import com.zksy.utils.DevicePhoneFetchUtil;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import io.netty.channel.ChannelHandler;
@@ -11,13 +18,17 @@ import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import io.netty.handler.timeout.ReadTimeoutException;
 import io.netty.util.ReferenceCountUtil;
+import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.math.BigDecimal;
 import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
 
 @ChannelHandler.Sharable
 @Slf4j
@@ -25,6 +36,13 @@ import java.util.Arrays;
 public class MessageHandler extends ChannelInboundHandlerAdapter {
 	private static Logger logger = LoggerFactory.getLogger(MessageHandler.class);
 	private final GasMonitorDataService service;
+	@Autowired
+	private WarningThresholdService warningThresholdService;
+	@Autowired
+	private SmsUtil smsUtil;
+	@Autowired
+	private DevicePhoneFetchUtil devicePhoneFetchUtil;
+
 	@Autowired
 	public MessageHandler(GasMonitorDataService firefightingPressureService) {
 		this.service = firefightingPressureService;
@@ -92,7 +110,9 @@ public class MessageHandler extends ChannelInboundHandlerAdapter {
 			com.zksy.gas.domain.GasMonitorData resultData = DataParser.parseMessage(msgBytes);
 			resultData.setId(java.util.UUID.randomUUID().toString());
 			service.save(resultData);
+			checkIfSmsAlertNeeded(resultData);
 			logger.info("数据解析入库成功: {}", resultData);
+
 		} catch (InvalidMessageException e) {
 			logger.error("数据校验失败: {}", e.getMessage());
 			ctx.writeAndFlush(Unpooled.copiedBuffer("数据校验失败".getBytes()));
@@ -153,4 +173,113 @@ public class MessageHandler extends ChannelInboundHandlerAdapter {
 			logger.error("发送数据失败: {}", e.getMessage());
 		}
 	}
+	public void checkIfSmsAlertNeeded(GasMonitorData resultData){
+
+		//用MAC地址作为设备的设备编号
+		String deviceId = resultData.getMacAddress();
+
+		//获取温度阈值
+		String deviceWarningCode = GasDeviceCodeEnum.FIREFIGHTING_DEVICE.getCode();
+		GasWarningCodeEnum temTargetWarningType=GasWarningCodeEnum.TEMPERATRUE;
+		String temWarningCode = temTargetWarningType.getCode();
+		String temWarningMsg = temTargetWarningType.getName();
+		Double temWarningValue = checkTemAndHum(deviceWarningCode, temWarningCode);
+		//获取湿度阈值
+		GasWarningCodeEnum humTargetWarningType=GasWarningCodeEnum.HUMIDITY;
+		String humWarningCode = humTargetWarningType.getCode();
+		String humWarningMsg = humTargetWarningType.getName();
+		Double humWarningValue = checkTemAndHum(deviceWarningCode, humWarningCode);
+		//获取气体浓度阈值
+		GasWarningCodeEnum gasTargetWarningType=GasWarningCodeEnum.GASCONCENTRATION;
+		String gasWarningCode = gasTargetWarningType.getCode();
+		String gasWarningMsg = gasTargetWarningType.getName();
+		Double gasWarningValue = checkTemAndHum(deviceWarningCode, gasWarningCode);
+
+		//判断温度
+		float temperature = resultData.getTemperature();
+		boolean temperatureIsOverThreshold = temperature > temWarningValue;
+		if(temperatureIsOverThreshold){
+			sendMessage(deviceId,temWarningMsg,resultData.getLongitude(),resultData.getLatitude());
+		}
+		//判断湿度
+		float humidity = resultData.getHumidity();
+		boolean humidityIsOverThreshold=humidity>humWarningValue;
+		if(humidityIsOverThreshold){
+			sendMessage(deviceId,humWarningMsg,resultData.getLongitude(),resultData.getLatitude());
+		}
+		//判断气体浓度
+		BigDecimal gasConcentration = resultData.getGasConcentration();
+		float actualGasConcentration=gasConcentration.floatValue();
+		boolean concentrationIsOverThreshold=actualGasConcentration>gasWarningValue;
+		if(concentrationIsOverThreshold){
+			sendMessage(deviceId,gasWarningMsg,resultData.getLongitude(),resultData.getLatitude());
+		}
+		//获取到的数据逐一进行判断
+		Map<String, Boolean> alarmBits = resultData.parseAlarmBits();
+		if(alarmBits.get("unknownAlarm")){
+			sendMessage(deviceId,"未知报警",resultData.getLongitude(),resultData.getLatitude());
+		}
+		if(alarmBits.get("highAlarm")){
+			sendMessage(deviceId,"高报警",resultData.getLongitude(),resultData.getLatitude());
+		}
+		if(alarmBits.get("overRange")){
+			sendMessage(deviceId,"超量程",resultData.getLongitude(),resultData.getLatitude());
+		}
+		if(alarmBits.get("calibrationCycle")){
+			sendMessage(deviceId,"标定周期",resultData.getLongitude(),resultData.getLatitude());
+		}
+		if(alarmBits.get("overLife")){
+			sendMessage(deviceId,"超寿命",resultData.getLongitude(),resultData.getLatitude());
+		}
+		if(alarmBits.get("fallAlarm")){
+			sendMessage(deviceId,"跌倒报警",resultData.getLongitude(),resultData.getLatitude());
+		}
+		if(alarmBits.get("undervoltage")){
+			sendMessage(deviceId,"欠压报警",resultData.getLongitude(),resultData.getLatitude());
+		}
+		if(alarmBits.get("rangeAlarm")){
+			sendMessage(deviceId,"区间报警",resultData.getLongitude(),resultData.getLatitude());
+		}
+		if(alarmBits.get("keyAlarm")){
+			sendMessage(deviceId,"按键报警",resultData.getLongitude(),resultData.getLatitude());
+		}
+		if(alarmBits.get("vibrationAlarm")){
+			sendMessage(deviceId,"震动报警",resultData.getLongitude(),resultData.getLatitude());
+		}
+		if(alarmBits.get("waterLevelAlarm")){
+			sendMessage(deviceId,"水位报警",resultData.getLongitude(),resultData.getLatitude());
+		}
+		if(alarmBits.get("powerOffAlarm")){
+			sendMessage(deviceId,"断电报警",resultData.getLongitude(),resultData.getLatitude());
+		}
+		if(alarmBits.get("sensorFault")){
+			sendMessage(deviceId,"传感器故障",resultData.getLongitude(),resultData.getLatitude());
+		}
+		if(alarmBits.get("overHumidity")){
+			sendMessage(deviceId,"超湿报警",resultData.getLongitude(),resultData.getLatitude());
+		}
+		if(alarmBits.get("overTemperature")){
+			sendMessage(deviceId,"超温报警",resultData.getLongitude(),resultData.getLatitude());
+		}
+		if(alarmBits.get("systemFault")){
+			sendMessage(deviceId,"系统故障",resultData.getLongitude(),resultData.getLatitude());
+		}
+	}
+	public Double checkTemAndHum(String deviceWarningCode,String warningCode){
+		//获取数据库中的阈值
+		WarningThreshold threshold = warningThresholdService.getWarningThresholdByDeviceAndCode(deviceWarningCode, warningCode);
+		return threshold.getWarningValue();
+	}
+	//构造发送短信参数&&发送短信
+	public void sendMessage(String deviceNo, String alarmType, BigDecimal lng, BigDecimal lat){
+		// 构造短信参数
+		JSONObject params = new JSONObject();
+		params.put("deviceNo", deviceNo);
+		params.put("alarmType", alarmType);
+		// 经纬度处理(位置)
+		params.put("location", String.format("经纬度:%.6f,%.8f", lng, lat));
+		List<String> phoneListByDeviceId = devicePhoneFetchUtil.getPhoneListByDeviceId(deviceNo);
+		Map<String, Boolean> sendResults = smsUtil.sendBatchSms(phoneListByDeviceId, params.toJSONString());
+		log.info("发送信息完成");
+	}
 }

+ 4 - 1
flammable-gas-service/src/main/resources/application-dev.yaml

@@ -14,4 +14,7 @@ spring:
       discovery:
         server-addr: 192.168.110.30:8848
       config:
-        server-addr: 192.168.110.30:8848
+        server-addr: 192.168.110.30:8848
+mybatis-plus:
+  type-aliases-package: com.zksy.gas.domain, com.zksy.common.core.domain.entity,com.zksy.system.domain
+  mapper-locations: classpath*:mapper/**/*Mapper.xml

+ 1329 - 0
logs/pipe-network-service/spring.log

@@ -0,0 +1,1329 @@
+15:03:18:734  INFO 19360 --- [restartedMain] com.zksy.ZksyApplication                 : The following 1 profile is active: "dev"
+15:03:22:685  INFO 19360 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
+15:03:22:688  INFO 19360 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+15:03:22:785  INFO 19360 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 74 ms. Found 0 Redis repository interfaces.
+15:03:23:217  INFO 19360 --- [restartedMain] o.s.cloud.context.scope.GenericScope     : BeanFactory id=55f8de3b-8490-3efe-a8b8-17aefe459bc3
+15:03:24:443  INFO 19360 --- [restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8301 (http)
+15:03:24:476  INFO 19360 --- [restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
+15:03:24:476  INFO 19360 --- [restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.106]
+15:03:24:504  WARN 19360 --- [restartedMain] o.a.c.webresources.DirResourceSet        : Disabled the global canonical file name cache to protect against CVE-2024-56337 when starting the WebResourceSet at [D:\temp\tomcat-docbase.8301.9155027092681418250] which is part of the web application []
+15:03:24:642  INFO 19360 --- [restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
+15:03:24:643  INFO 19360 --- [restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5896 ms
+15:03:25:375 DEBUG 19360 --- [restartedMain] c.z.f.s.f.JwtAuthenticationTokenFilter   : Filter 'jwtAuthenticationTokenFilter' configured for use
+15:03:26:360  INFO 19360 --- [restartedMain] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited
+15:03:29:030  INFO 19360 --- [restartedMain] c.a.c.sentinel.SentinelWebMvcConfigurer  : [Sentinel Starter] register SentinelWebInterceptor with urlPatterns: [/**].
+15:03:29:290  INFO 19360 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Using default implementation for ThreadExecutor
+15:03:29:301  INFO 19360 --- [restartedMain] org.quartz.core.SchedulerSignalerImpl    : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+15:03:29:301  INFO 19360 --- [restartedMain] org.quartz.core.QuartzScheduler          : Quartz Scheduler v.2.3.2 created.
+15:03:29:302  INFO 19360 --- [restartedMain] org.quartz.simpl.RAMJobStore             : RAMJobStore initialized.
+15:03:29:303  INFO 19360 --- [restartedMain] org.quartz.core.QuartzScheduler          : Scheduler meta-data: Quartz Scheduler (v2.3.2) 'quartzScheduler' with instanceId 'NON_CLUSTERED'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
+
+15:03:29:303  INFO 19360 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance.
+15:03:29:303  INFO 19360 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Quartz scheduler version: 2.3.2
+15:03:29:303  INFO 19360 --- [restartedMain] org.quartz.core.QuartzScheduler          : JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@418720e4
+15:03:29:960  INFO 19360 --- [restartedMain] o.s.s.web.DefaultSecurityFilterChain     : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@5dc38da1, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@61f2340c, org.springframework.security.web.context.SecurityContextPersistenceFilter@1928004c, org.springframework.security.web.header.HeaderWriterFilter@201070d6, org.springframework.web.filter.CorsFilter@35c57c88, org.springframework.security.web.authentication.logout.LogoutFilter@76b35d90, org.springframework.web.filter.CorsFilter@35c57c88, com.zksy.framework.security.filter.JwtAuthenticationTokenFilter@36b72bed, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@776643d0, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@5fceeba5, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@6dd1c449, org.springframework.security.web.session.SessionManagementFilter@5977cfd6, org.springframework.security.web.access.ExceptionTranslationFilter@230932eb, org.springframework.security.web.access.intercept.AuthorizationFilter@25fa672]
+15:03:30:346  WARN 19360 --- [restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : Unable to start LiveReload server
+15:03:30:977  INFO 19360 --- [restartedMain] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2ControllerWebMvc#getDocumentation(String, HttpServletRequest)]
+15:03:31:833  WARN 19360 --- [restartedMain] iguration$LoadBalancerCaffeineWarnLogger : Spring Cloud LoadBalancer is currently working with the default cache. While this cache implementation is useful for development and tests, it's recommended to use Caffeine cache in production.You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.
+15:03:31:968  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [RpcClientFactory] create a new rpc client of 88dec009-e754-4ae7-9b5f-0bb59104d424
+15:03:31:969  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [88dec009-e754-4ae7-9b5f-0bb59104d424] RpcClient init label, labels = {module=naming, source=sdk}
+15:03:31:972  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [88dec009-e754-4ae7-9b5f-0bb59104d424] RpcClient init, ServerListFactory = com.alibaba.nacos.client.naming.core.ServerListManager
+15:03:31:972  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [88dec009-e754-4ae7-9b5f-0bb59104d424] Registry connection listener to current client:com.alibaba.nacos.client.naming.remote.gprc.redo.NamingGrpcRedoService
+15:03:31:973  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [88dec009-e754-4ae7-9b5f-0bb59104d424] Register server push request handler:com.alibaba.nacos.client.naming.remote.gprc.NamingPushRequestHandler
+15:03:31:973  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [88dec009-e754-4ae7-9b5f-0bb59104d424] Try to connect to server on start up, server: {serverIp = '192.168.110.30', server main port = 8848}
+15:03:32:106  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [88dec009-e754-4ae7-9b5f-0bb59104d424] Success to connect to server [192.168.110.30:8848] on start up, connectionId = 1761030211803_192.168.110.126_5311
+15:03:32:106  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [88dec009-e754-4ae7-9b5f-0bb59104d424] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$ConnectResetRequestHandler
+15:03:32:106  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [88dec009-e754-4ae7-9b5f-0bb59104d424] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$$Lambda$491/0x000000080045d840
+15:03:32:106  INFO 19360 --- [com.alibaba.nacos.client.remote.worker] com.alibaba.nacos.common.remote.client   : [88dec009-e754-4ae7-9b5f-0bb59104d424] Notify connected event to listeners.
+15:03:32:178  WARN 19360 --- [restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'; nested exception is org.springframework.boot.web.server.PortInUseException: Port 8301 is already in use
+15:03:32:725  INFO 19360 --- [nacos-grpc-client-executor-4] com.alibaba.nacos.common.remote.client   : [88dec009-e754-4ae7-9b5f-0bb59104d424] Receive server push request, request = NotifySubscriberRequest, requestId = 27
+15:03:32:742  INFO 19360 --- [nacos-grpc-client-executor-4] com.alibaba.nacos.common.remote.client   : [88dec009-e754-4ae7-9b5f-0bb59104d424] Ack server push request, request = NotifySubscriberRequest, requestId = 27
+15:03:32:843  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : Shutdown rpc client, set status to shutdown
+15:03:32:843  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : Shutdown client event executor java.util.concurrent.ScheduledThreadPoolExecutor@6d35d898[Running, pool size = 2, active threads = 2, queued tasks = 0, completed tasks = 0]
+15:03:32:843  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : Close current connection 1761030211803_192.168.110.126_5311
+15:03:32:851  INFO 19360 --- [restartedMain] c.a.n.c.remote.client.grpc.GrpcClient    : Shutdown grpc executor java.util.concurrent.ThreadPoolExecutor@27876cee[Running, pool size = 5, active threads = 0, queued tasks = 0, completed tasks = 5]
+15:03:32:853  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [RpcClientFactory] create a new rpc client of c47ae6ad-bbfa-44d5-aacd-0852e2dba6af
+15:03:32:853  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [c47ae6ad-bbfa-44d5-aacd-0852e2dba6af] RpcClient init label, labels = {module=naming, source=sdk}
+15:03:32:854  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [c47ae6ad-bbfa-44d5-aacd-0852e2dba6af] RpcClient init, ServerListFactory = com.alibaba.nacos.client.naming.core.ServerListManager
+15:03:32:854  INFO 19360 --- [grpc-nio-worker-ELG-1-4] c.a.n.s.i.g.i.AbstractClientStream       : Received trailers on closed stream:
+ Metadata()
+ {2}
+15:03:32:855  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [c47ae6ad-bbfa-44d5-aacd-0852e2dba6af] Registry connection listener to current client:com.alibaba.nacos.client.naming.remote.gprc.redo.NamingGrpcRedoService
+15:03:32:855  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [c47ae6ad-bbfa-44d5-aacd-0852e2dba6af] Register server push request handler:com.alibaba.nacos.client.naming.remote.gprc.NamingPushRequestHandler
+15:03:32:855  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [c47ae6ad-bbfa-44d5-aacd-0852e2dba6af] Try to connect to server on start up, server: {serverIp = '192.168.110.30', server main port = 8848}
+15:03:32:982  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [c47ae6ad-bbfa-44d5-aacd-0852e2dba6af] Success to connect to server [192.168.110.30:8848] on start up, connectionId = 1761030212679_192.168.110.126_5314
+15:03:32:982  INFO 19360 --- [com.alibaba.nacos.client.remote.worker] com.alibaba.nacos.common.remote.client   : [c47ae6ad-bbfa-44d5-aacd-0852e2dba6af] Notify connected event to listeners.
+15:03:32:982  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [c47ae6ad-bbfa-44d5-aacd-0852e2dba6af] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$ConnectResetRequestHandler
+15:03:32:982  INFO 19360 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [c47ae6ad-bbfa-44d5-aacd-0852e2dba6af] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$$Lambda$491/0x000000080045d840
+15:03:32:998  INFO 19360 --- [restartedMain] o.s.s.quartz.SchedulerFactoryBean        : Shutting down Quartz Scheduler
+15:03:32:998  INFO 19360 --- [restartedMain] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED shutting down.
+15:03:32:998  INFO 19360 --- [restartedMain] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED paused.
+15:03:32:999  INFO 19360 --- [restartedMain] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete.
+15:03:32:999  INFO 19360 --- [restartedMain] sys-user                                 : ====关闭后台任务任务线程池====
+15:03:33:001  WARN 19360 --- [restartedMain] .s.c.a.CommonAnnotationBeanPostProcessor : Destroy method on bean with name 'shutdownManager' threw an exception: java.lang.ExceptionInInitializerError
+15:03:33:002  INFO 19360 --- [restartedMain] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closing ...
+15:03:33:100  INFO 19360 --- [restartedMain] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closed
+15:03:33:244  INFO 19360 --- [restartedMain] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
+15:03:33:266  INFO 19360 --- [restartedMain] ConditionEvaluationReportLoggingListener : 
+
+Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
+15:03:33:309 ERROR 19360 --- [restartedMain] o.s.b.d.LoggingFailureAnalysisReporter   : 
+
+***************************
+APPLICATION FAILED TO START
+***************************
+
+Description:
+
+Web server failed to start. Port 8301 was already in use.
+
+Action:
+
+Identify and stop the process that's listening on port 8301 or configure this application to listen on another port.
+
+15:03:34:245  WARN 19360 --- [Thread-4] c.a.n.common.http.HttpClientBeanHolder   : [HttpClientBeanHolder] Start destroying common HttpClient
+15:03:34:245  WARN 19360 --- [Thread-8] c.a.nacos.common.notify.NotifyCenter     : [NotifyCenter] Start destroying Publisher
+15:04:12:007  INFO 21576 --- [restartedMain] com.zksy.ZksyApplication                 : The following 1 profile is active: "dev"
+15:04:13:158  INFO 21576 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
+15:04:13:161  INFO 21576 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+15:04:13:238  INFO 21576 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 64 ms. Found 0 Redis repository interfaces.
+15:04:13:565  INFO 21576 --- [restartedMain] o.s.cloud.context.scope.GenericScope     : BeanFactory id=55f8de3b-8490-3efe-a8b8-17aefe459bc3
+15:04:14:460  INFO 21576 --- [restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8301 (http)
+15:04:14:485  INFO 21576 --- [restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
+15:04:14:486  INFO 21576 --- [restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.106]
+15:04:14:510  WARN 21576 --- [restartedMain] o.a.c.webresources.DirResourceSet        : Disabled the global canonical file name cache to protect against CVE-2024-56337 when starting the WebResourceSet at [D:\temp\tomcat-docbase.8301.10221936922023876319] which is part of the web application []
+15:04:14:640  INFO 21576 --- [restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
+15:04:14:640  INFO 21576 --- [restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2621 ms
+15:04:15:240 DEBUG 21576 --- [restartedMain] c.z.f.s.f.JwtAuthenticationTokenFilter   : Filter 'jwtAuthenticationTokenFilter' configured for use
+15:04:16:084  INFO 21576 --- [restartedMain] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited
+15:04:18:312  INFO 21576 --- [restartedMain] c.a.c.sentinel.SentinelWebMvcConfigurer  : [Sentinel Starter] register SentinelWebInterceptor with urlPatterns: [/**].
+15:04:18:578  INFO 21576 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Using default implementation for ThreadExecutor
+15:04:18:589  INFO 21576 --- [restartedMain] org.quartz.core.SchedulerSignalerImpl    : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+15:04:18:589  INFO 21576 --- [restartedMain] org.quartz.core.QuartzScheduler          : Quartz Scheduler v.2.3.2 created.
+15:04:18:590  INFO 21576 --- [restartedMain] org.quartz.simpl.RAMJobStore             : RAMJobStore initialized.
+15:04:18:590  INFO 21576 --- [restartedMain] org.quartz.core.QuartzScheduler          : Scheduler meta-data: Quartz Scheduler (v2.3.2) 'quartzScheduler' with instanceId 'NON_CLUSTERED'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
+
+15:04:18:591  INFO 21576 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance.
+15:04:18:591  INFO 21576 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Quartz scheduler version: 2.3.2
+15:04:18:591  INFO 21576 --- [restartedMain] org.quartz.core.QuartzScheduler          : JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@1d7d5c9
+15:04:19:396  INFO 21576 --- [restartedMain] o.s.s.web.DefaultSecurityFilterChain     : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@62233136, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@16007e09, org.springframework.security.web.context.SecurityContextPersistenceFilter@176938a9, org.springframework.security.web.header.HeaderWriterFilter@56180682, org.springframework.web.filter.CorsFilter@25f71236, org.springframework.security.web.authentication.logout.LogoutFilter@16cb565, org.springframework.web.filter.CorsFilter@25f71236, com.zksy.framework.security.filter.JwtAuthenticationTokenFilter@210dc718, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1f930314, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1ba7b62, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2146cd04, org.springframework.security.web.session.SessionManagementFilter@55a6afed, org.springframework.security.web.access.ExceptionTranslationFilter@4cf11d45, org.springframework.security.web.access.intercept.AuthorizationFilter@77fb8b58]
+15:04:19:909  INFO 21576 --- [restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
+15:04:20:722  INFO 21576 --- [restartedMain] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2ControllerWebMvc#getDocumentation(String, HttpServletRequest)]
+15:04:21:757  WARN 21576 --- [restartedMain] iguration$LoadBalancerCaffeineWarnLogger : Spring Cloud LoadBalancer is currently working with the default cache. While this cache implementation is useful for development and tests, it's recommended to use Caffeine cache in production.You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.
+15:04:21:915  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [RpcClientFactory] create a new rpc client of b8d3f680-dcaa-4e95-b8fe-fab566ec7c2b
+15:04:21:916  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [b8d3f680-dcaa-4e95-b8fe-fab566ec7c2b] RpcClient init label, labels = {module=naming, source=sdk}
+15:04:21:918  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [b8d3f680-dcaa-4e95-b8fe-fab566ec7c2b] RpcClient init, ServerListFactory = com.alibaba.nacos.client.naming.core.ServerListManager
+15:04:21:919  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [b8d3f680-dcaa-4e95-b8fe-fab566ec7c2b] Registry connection listener to current client:com.alibaba.nacos.client.naming.remote.gprc.redo.NamingGrpcRedoService
+15:04:21:919  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [b8d3f680-dcaa-4e95-b8fe-fab566ec7c2b] Register server push request handler:com.alibaba.nacos.client.naming.remote.gprc.NamingPushRequestHandler
+15:04:21:920  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [b8d3f680-dcaa-4e95-b8fe-fab566ec7c2b] Try to connect to server on start up, server: {serverIp = '192.168.110.30', server main port = 8848}
+15:04:22:045  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [b8d3f680-dcaa-4e95-b8fe-fab566ec7c2b] Success to connect to server [192.168.110.30:8848] on start up, connectionId = 1761030261748_192.168.110.126_45568
+15:04:22:045  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [b8d3f680-dcaa-4e95-b8fe-fab566ec7c2b] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$ConnectResetRequestHandler
+15:04:22:045  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [b8d3f680-dcaa-4e95-b8fe-fab566ec7c2b] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$$Lambda$491/0x000000080045d840
+15:04:22:045  INFO 21576 --- [com.alibaba.nacos.client.remote.worker] com.alibaba.nacos.common.remote.client   : [b8d3f680-dcaa-4e95-b8fe-fab566ec7c2b] Notify connected event to listeners.
+15:04:22:168  INFO 21576 --- [restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8301 (http) with context path ''
+15:04:22:182  INFO 21576 --- [restartedMain] c.a.c.n.registry.NacosServiceRegistry    : nacos registry, DEFAULT_GROUP pipe-network-service 192.168.220.1:8301 register finished
+15:04:22:427  INFO 21576 --- [restartedMain] d.s.w.p.DocumentationPluginsBootstrapper : Documentation plugins bootstrapped
+15:04:22:431  INFO 21576 --- [restartedMain] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
+15:04:22:476  INFO 21576 --- [restartedMain] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
+15:04:22:521  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cacheUsingGET_1
+15:04:22:528  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: clearCacheAllUsingDELETE_1
+15:04:22:534  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: clearCacheKeyUsingDELETE_1
+15:04:22:536  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: clearCacheNameUsingDELETE_1
+15:04:22:537  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getCacheKeysUsingGET_1
+15:04:22:538  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getCacheValueUsingGET_1
+15:04:22:539  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_1
+15:04:22:546  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getCodeUsingGET_1
+15:04:22:548  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: uploadFileUsingPOST_1
+15:04:22:549  WARN 21576 --- [restartedMain] s.d.s.w.r.p.ParameterDataTypeReader      : Trying to infer dataType java.util.List<org.springframework.web.multipart.MultipartFile>
+15:04:22:549  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: uploadFilesUsingPOST_1
+15:04:22:551  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: fileDownloadUsingGET_1
+15:04:22:552  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: resourceDownloadUsingGET_1
+15:04:22:558  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAlarmsUsingGET_1
+15:04:22:559  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getDailyStatsUsingGET_1
+15:04:22:561  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getLatestUsingGET_1
+15:04:22:563  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getTrendUsingGET_1
+15:04:22:566  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAlarmCountsUsingGET_1
+15:04:22:567  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAveragePressureUsingGET_1
+15:04:22:568  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getDailyStatsUsingGET_2
+15:04:22:568  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getDailyStatsUsingGET_3
+15:04:22:569  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getPressureDistributionUsingGET_1
+15:04:22:571  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getSignalVsPressureUsingGET_1
+15:04:22:573  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_2
+15:04:22:574  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_3
+15:04:22:584  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_1
+15:04:22:586  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_1
+15:04:22:587  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getConfigKeyUsingGET_1
+15:04:22:588  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_4
+15:04:22:588  INFO 21576 --- [nacos-grpc-client-executor-5] com.alibaba.nacos.common.remote.client   : [b8d3f680-dcaa-4e95-b8fe-fab566ec7c2b] Receive server push request, request = NotifySubscriberRequest, requestId = 28
+15:04:22:588  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_5
+15:04:22:589  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: refreshCacheUsingDELETE_1
+15:04:22:591  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_1
+15:04:22:614  INFO 21576 --- [nacos-grpc-client-executor-5] com.alibaba.nacos.common.remote.client   : [b8d3f680-dcaa-4e95-b8fe-fab566ec7c2b] Ack server push request, request = NotifySubscriberRequest, requestId = 28
+15:04:22:624  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_1
+15:04:22:626  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_1
+15:04:22:632  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_2
+15:04:22:633  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_3
+15:04:22:633  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_2
+15:04:22:634  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_3
+15:04:22:635  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: excludeChildUsingGET_1
+15:04:22:635  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_6
+15:04:22:635  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_7
+15:04:22:643  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_2
+15:04:22:643  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_3
+15:04:22:644  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_2
+15:04:22:644  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_3
+15:04:22:650  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_4
+15:04:22:651  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_5
+15:04:22:652  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: dictTypeUsingGET_1
+15:04:22:653  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_4
+15:04:22:653  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_5
+15:04:22:654  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_8
+15:04:22:654  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_9
+15:04:22:655  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_4
+15:04:22:656  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_5
+15:04:22:661  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_4
+15:04:22:662  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_5
+15:04:22:663  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_2
+15:04:22:663  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_3
+15:04:22:668  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_6
+15:04:22:668  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_7
+15:04:22:669  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_6
+15:04:22:669  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_7
+15:04:22:670  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_10
+15:04:22:671  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_11
+15:04:22:671  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_1
+15:04:22:672  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: refreshCacheUsingDELETE_2
+15:04:22:672  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: refreshCacheUsingDELETE_3
+15:04:22:672  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_6
+15:04:22:673  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_7
+15:04:22:677  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_6
+15:04:22:678  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_7
+15:04:22:679  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_4
+15:04:22:679  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_5
+15:04:22:680  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingGET_1
+15:04:22:680  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingHEAD_1
+15:04:22:681  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingPOST_1
+15:04:22:681  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingPUT_1
+15:04:22:681  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingPATCH_1
+15:04:22:682  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingDELETE_1
+15:04:22:682  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingOPTIONS_1
+15:04:22:682  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingTRACE_1
+15:04:22:683  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_12
+15:04:22:683  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_13
+15:04:22:684  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getRoutersUsingGET_1
+15:04:22:685  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: loginUsingPOST_1
+15:04:22:687  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: loginNoNeedAuthUsingPOST_1
+15:04:22:688  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cleanUsingDELETE_1
+15:04:22:689  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_8
+15:04:22:689  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_9
+15:04:22:690  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: unlockUsingGET_1
+15:04:22:695  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_8
+15:04:22:695  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_9
+15:04:22:696  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_6
+15:04:22:696  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_7
+15:04:22:701  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_8
+15:04:22:701  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_9
+15:04:22:703  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_8
+15:04:22:703  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_9
+15:04:22:704  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_14
+15:04:22:704  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_15
+15:04:22:709  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_10
+15:04:22:709  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_11
+15:04:22:710  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_10
+15:04:22:710  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_11
+15:04:22:711  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: roleMenuTreeselectUsingGET_1
+15:04:22:712  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: treeselectUsingGET_1
+15:04:22:715  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_10
+15:04:22:716  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_11
+15:04:22:717  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_10
+15:04:22:717  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_11
+15:04:22:717  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_16
+15:04:22:717  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_17
+15:04:22:719  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_12
+15:04:22:719  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_13
+15:04:22:724  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_12
+15:04:22:724  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_13
+15:04:22:725  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cleanUsingDELETE_2
+15:04:22:726  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cleanUsingDELETE_3
+15:04:22:726  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_14
+15:04:22:727  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_15
+15:04:22:735  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_14
+15:04:22:736  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_15
+15:04:22:738  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_8
+15:04:22:739  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_9
+15:04:22:745  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_12
+15:04:22:746  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_13
+15:04:22:747  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_12
+15:04:22:749  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_13
+15:04:22:749  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_18
+15:04:22:750  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_19
+15:04:22:750  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_2
+15:04:22:750  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_3
+15:04:22:751  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_16
+15:04:22:751  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_17
+15:04:22:755  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_16
+15:04:22:756  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_17
+15:04:22:757  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_10
+15:04:22:757  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_11
+15:04:22:758  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: avatarUsingPOST_1
+15:04:22:759  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: profileUsingGET_1
+15:04:22:772  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updateProfileUsingPUT_1
+15:04:22:773  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updatePwdUsingPUT_1
+15:04:22:775  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: registerUsingPOST_1
+15:04:22:779  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_14
+15:04:22:779  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_15
+15:04:22:782  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cancelAuthUserUsingPUT_1
+15:04:22:782  WARN 21576 --- [restartedMain] s.d.s.w.r.p.ParameterDataTypeReader      : Trying to infer dataType java.lang.Long[]
+15:04:22:783  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cancelAuthUserAllUsingPUT_1
+15:04:22:784  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: changeStatusUsingPUT_1
+15:04:22:785  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: dataScopeUsingPUT_1
+15:04:22:785  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deptTreeUsingGET_1
+15:04:22:786  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_14
+15:04:22:786  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_15
+15:04:22:786  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_20
+15:04:22:787  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_21
+15:04:22:787  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_4
+15:04:22:787  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_5
+15:04:22:788  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_18
+15:04:22:788  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_19
+15:04:22:788  WARN 21576 --- [restartedMain] s.d.s.w.r.p.ParameterDataTypeReader      : Trying to infer dataType java.lang.Long[]
+15:04:22:789  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: selectAuthUserAllUsingPUT_1
+15:04:22:804  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: allocatedListUsingGET_1
+15:04:22:807  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_18
+15:04:22:807  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_19
+15:04:22:813  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: unallocatedListUsingGET_1
+15:04:22:815  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_12
+15:04:22:816  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_13
+15:04:22:818  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_16
+15:04:22:819  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_17
+15:04:22:819  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: authRoleUsingGET_1
+15:04:22:820  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: changeStatusUsingPUT_2
+15:04:22:821  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: changeStatusUsingPUT_3
+15:04:22:822  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deptTreeUsingGET_2
+15:04:22:822  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deptTreeUsingGET_3
+15:04:22:823  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_16
+15:04:22:823  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_17
+15:04:22:824  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_22
+15:04:22:824  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_23
+15:04:22:824  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_24
+15:04:22:825  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_25
+15:04:22:825  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: importDataUsingPOST_1
+15:04:22:826  WARN 21576 --- [restartedMain] s.d.s.w.r.p.ParameterDataTypeReader      : Trying to infer dataType java.lang.Long[]
+15:04:22:826  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: insertAuthRoleUsingPUT_1
+15:04:22:827  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_20
+15:04:22:827  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_21
+15:04:22:828  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: resetPwdUsingPUT_1
+15:04:22:830  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_20
+15:04:22:830  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_21
+15:04:22:832  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_14
+15:04:22:832  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_15
+15:04:22:833  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: importTemplateUsingPOST_1
+15:04:22:834  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: forceLogoutUsingDELETE_1
+15:04:22:835  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_22
+15:04:22:835  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_23
+15:04:22:844  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getUserUsingGET_1
+15:04:22:846  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteUsingDELETE_1
+15:04:22:852  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveUsingPOST_1
+15:04:22:854  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updateUsingPUT_1
+15:04:22:856  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: userListUsingGET_1
+15:04:22:860  INFO 21576 --- [restartedMain] o.s.s.quartz.SchedulerFactoryBean        : Starting Quartz Scheduler now
+15:04:22:860  INFO 21576 --- [restartedMain] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED started.
+15:04:22:870  INFO 21576 --- [restartedMain] com.zksy.ZksyApplication                 : Started ZksyApplication in 14.064 seconds (JVM running for 16.411)
+15:04:22:879  INFO 21576 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=pipe-network-service.yaml, group=DEFAULT_GROUP
+15:04:22:881  INFO 21576 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=pipe-network-service-dev.yaml, group=DEFAULT_GROUP
+15:04:22:882  INFO 21576 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=pipe-network-service, group=DEFAULT_GROUP
+15:07:06:302  INFO 21576 --- [File Watcher] rtingClassPathChangeChangedEventListener : Restarting due to 334 class path changes (0 additions, 334 deletions, 0 modifications)
+15:07:06:306  INFO 21576 --- [Thread-12] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED paused.
+15:07:08:120  INFO 21576 --- [Thread-12] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
+15:07:08:156  WARN 21576 --- [Thread-12] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [lettuce-timer-3-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
+ java.base@11.0.15.1/java.lang.Thread.sleep(Native Method)
+ app//io.netty.util.HashedWheelTimer$Worker.waitForNextTick(HashedWheelTimer.java:600)
+ app//io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:496)
+ app//io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
+ java.base@11.0.15.1/java.lang.Thread.run(Thread.java:834)
+15:07:08:219  INFO 21576 --- [Thread-12] c.a.c.n.registry.NacosServiceRegistry    : De-registering from Nacos Server now...
+15:07:08:243  INFO 21576 --- [Thread-12] c.a.c.n.registry.NacosServiceRegistry    : De-registration finished.
+15:07:08:589  INFO 21576 --- [Thread-12] com.alibaba.nacos.common.remote.client   : Shutdown rpc client, set status to shutdown
+15:07:08:589  INFO 21576 --- [Thread-12] com.alibaba.nacos.common.remote.client   : Shutdown client event executor java.util.concurrent.ScheduledThreadPoolExecutor@e930d24[Running, pool size = 2, active threads = 2, queued tasks = 0, completed tasks = 0]
+15:07:08:590  INFO 21576 --- [Thread-12] com.alibaba.nacos.common.remote.client   : Close current connection 1761030261748_192.168.110.126_45568
+15:07:08:602  INFO 21576 --- [Thread-12] c.a.n.c.remote.client.grpc.GrpcClient    : Shutdown grpc executor java.util.concurrent.ThreadPoolExecutor@3de99b04[Running, pool size = 5, active threads = 1, queued tasks = 0, completed tasks = 41]
+15:07:08:628  INFO 21576 --- [Thread-12] o.s.s.quartz.SchedulerFactoryBean        : Shutting down Quartz Scheduler
+15:07:08:629  INFO 21576 --- [Thread-12] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED shutting down.
+15:07:08:629  INFO 21576 --- [Thread-12] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED paused.
+15:07:08:631  INFO 21576 --- [Thread-12] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete.
+15:07:08:631  INFO 21576 --- [Thread-12] sys-user                                 : ====关闭后台任务任务线程池====
+15:07:08:632  INFO 21576 --- [nacos-grpc-client-executor-41] c.a.n.c.remote.client.grpc.GrpcClient    : [1761030261748_192.168.110.126_45568]Ignore complete event,isRunning:false,isAbandon=false
+15:07:08:633  WARN 21576 --- [Thread-12] .s.c.a.CommonAnnotationBeanPostProcessor : Destroy method on bean with name 'shutdownManager' threw an exception: java.lang.NoClassDefFoundError: com/zksy/framework/manager/AsyncManager
+15:07:08:636  INFO 21576 --- [Thread-12] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closing ...
+15:07:08:667  INFO 21576 --- [Thread-12] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closed
+15:07:37:581  INFO 21576 --- [restartedMain] com.zksy.ZksyApplication                 : The following 1 profile is active: "dev"
+15:07:42:109  INFO 21576 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
+15:07:42:110  INFO 21576 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+15:07:42:215  INFO 21576 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 104 ms. Found 0 Redis repository interfaces.
+15:07:42:369  WARN 21576 --- [Thread-8] c.a.nacos.common.notify.NotifyCenter     : [NotifyCenter] Start destroying Publisher
+15:07:42:369  WARN 21576 --- [Thread-4] c.a.n.common.http.HttpClientBeanHolder   : [HttpClientBeanHolder] Start destroying common HttpClient
+15:07:42:371  WARN 21576 --- [Thread-8] c.a.nacos.common.notify.NotifyCenter     : [NotifyCenter] Destruction of the end
+15:07:42:371  WARN 21576 --- [Thread-4] c.a.n.common.http.HttpClientBeanHolder   : [HttpClientBeanHolder] Destruction of the end
+15:07:42:516  INFO 21576 --- [restartedMain] o.s.cloud.context.scope.GenericScope     : BeanFactory id=a1f17350-71ec-332d-930d-f4d24e7be2fa
+15:07:43:688  INFO 21576 --- [restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8301 (http)
+15:07:43:915  INFO 21576 --- [restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 6328 ms
+15:07:45:198 DEBUG 21576 --- [restartedMain] c.z.f.s.f.JwtAuthenticationTokenFilter   : Filter 'jwtAuthenticationTokenFilter' configured for use
+15:07:47:261  INFO 21576 --- [restartedMain] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2} inited
+15:07:49:779  INFO 21576 --- [restartedMain] c.a.c.sentinel.SentinelWebMvcConfigurer  : [Sentinel Starter] register SentinelWebInterceptor with urlPatterns: [/**].
+15:07:50:182  INFO 21576 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Using default implementation for ThreadExecutor
+15:07:50:183  INFO 21576 --- [restartedMain] org.quartz.core.SchedulerSignalerImpl    : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+15:07:50:183  INFO 21576 --- [restartedMain] org.quartz.core.QuartzScheduler          : Quartz Scheduler v.2.3.2 created.
+15:07:50:183  INFO 21576 --- [restartedMain] org.quartz.simpl.RAMJobStore             : RAMJobStore initialized.
+15:07:50:183  INFO 21576 --- [restartedMain] org.quartz.core.QuartzScheduler          : Scheduler meta-data: Quartz Scheduler (v2.3.2) 'quartzScheduler' with instanceId 'NON_CLUSTERED'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
+
+15:07:50:183  INFO 21576 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance.
+15:07:50:183  INFO 21576 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Quartz scheduler version: 2.3.2
+15:07:50:184  INFO 21576 --- [restartedMain] org.quartz.core.QuartzScheduler          : JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@452afa3e
+15:07:50:643  INFO 21576 --- [restartedMain] o.s.s.web.DefaultSecurityFilterChain     : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@9e49959, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@258dab06, org.springframework.security.web.context.SecurityContextPersistenceFilter@432cbc5e, org.springframework.security.web.header.HeaderWriterFilter@26195aa2, org.springframework.web.filter.CorsFilter@5907bccb, org.springframework.security.web.authentication.logout.LogoutFilter@37c4c0fe, org.springframework.web.filter.CorsFilter@5907bccb, com.zksy.framework.security.filter.JwtAuthenticationTokenFilter@296a7b33, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@45a8b96, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@6f231bb5, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@41c31f80, org.springframework.security.web.session.SessionManagementFilter@12be5a2d, org.springframework.security.web.access.ExceptionTranslationFilter@2551b45b, org.springframework.security.web.access.intercept.AuthorizationFilter@22b1ce85]
+15:07:50:907  INFO 21576 --- [restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
+15:07:51:443  INFO 21576 --- [restartedMain] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2ControllerWebMvc#getDocumentation(String, HttpServletRequest)]
+15:07:52:067  WARN 21576 --- [restartedMain] iguration$LoadBalancerCaffeineWarnLogger : Spring Cloud LoadBalancer is currently working with the default cache. While this cache implementation is useful for development and tests, it's recommended to use Caffeine cache in production.You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.
+15:07:52:155  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [RpcClientFactory] create a new rpc client of 96ba91a8-1a3b-408b-ba5f-a735d1b5015a
+15:07:52:155  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [96ba91a8-1a3b-408b-ba5f-a735d1b5015a] RpcClient init label, labels = {module=naming, source=sdk}
+15:07:52:155  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [96ba91a8-1a3b-408b-ba5f-a735d1b5015a] RpcClient init, ServerListFactory = com.alibaba.nacos.client.naming.core.ServerListManager
+15:07:52:155  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [96ba91a8-1a3b-408b-ba5f-a735d1b5015a] Registry connection listener to current client:com.alibaba.nacos.client.naming.remote.gprc.redo.NamingGrpcRedoService
+15:07:52:155  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [96ba91a8-1a3b-408b-ba5f-a735d1b5015a] Register server push request handler:com.alibaba.nacos.client.naming.remote.gprc.NamingPushRequestHandler
+15:07:52:156  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [96ba91a8-1a3b-408b-ba5f-a735d1b5015a] Try to connect to server on start up, server: {serverIp = '192.168.110.30', server main port = 8848}
+15:07:52:302  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [96ba91a8-1a3b-408b-ba5f-a735d1b5015a] Success to connect to server [192.168.110.30:8848] on start up, connectionId = 1761030471979_192.168.110.126_40255
+15:07:52:302  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [96ba91a8-1a3b-408b-ba5f-a735d1b5015a] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$ConnectResetRequestHandler
+15:07:52:302  INFO 21576 --- [com.alibaba.nacos.client.remote.worker] com.alibaba.nacos.common.remote.client   : [96ba91a8-1a3b-408b-ba5f-a735d1b5015a] Notify connected event to listeners.
+15:07:52:302  INFO 21576 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [96ba91a8-1a3b-408b-ba5f-a735d1b5015a] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$$Lambda$491/0x000000080045d840
+15:07:52:355  INFO 21576 --- [restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8301 (http) with context path ''
+15:07:52:366  INFO 21576 --- [restartedMain] c.a.c.n.registry.NacosServiceRegistry    : nacos registry, DEFAULT_GROUP pipe-network-service 192.168.220.1:8301 register finished
+15:07:52:596  INFO 21576 --- [restartedMain] d.s.w.p.DocumentationPluginsBootstrapper : Documentation plugins bootstrapped
+15:07:52:597  INFO 21576 --- [restartedMain] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
+15:07:52:628  INFO 21576 --- [restartedMain] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
+15:07:52:638  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cacheUsingGET_1
+15:07:52:639  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: clearCacheAllUsingDELETE_1
+15:07:52:640  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: clearCacheKeyUsingDELETE_1
+15:07:52:640  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: clearCacheNameUsingDELETE_1
+15:07:52:641  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getCacheKeysUsingGET_1
+15:07:52:641  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getCacheValueUsingGET_1
+15:07:52:642  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_1
+15:07:52:644  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getCodeUsingGET_1
+15:07:52:645  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: uploadFileUsingPOST_1
+15:07:52:646  WARN 21576 --- [restartedMain] s.d.s.w.r.p.ParameterDataTypeReader      : Trying to infer dataType java.util.List<org.springframework.web.multipart.MultipartFile>
+15:07:52:646  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: uploadFilesUsingPOST_1
+15:07:52:646  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: fileDownloadUsingGET_1
+15:07:52:647  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: resourceDownloadUsingGET_1
+15:07:52:649  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAlarmsUsingGET_1
+15:07:52:650  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getDailyStatsUsingGET_1
+15:07:52:650  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getLatestUsingGET_1
+15:07:52:651  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getTrendUsingGET_1
+15:07:52:653  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAlarmCountsUsingGET_1
+15:07:52:654  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAveragePressureUsingGET_1
+15:07:52:655  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getDailyStatsUsingGET_2
+15:07:52:656  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getDailyStatsUsingGET_3
+15:07:52:656  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getPressureDistributionUsingGET_1
+15:07:52:657  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getSignalVsPressureUsingGET_1
+15:07:52:658  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_2
+15:07:52:658  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_3
+15:07:52:669  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_1
+15:07:52:670  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_1
+15:07:52:671  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getConfigKeyUsingGET_1
+15:07:52:671  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_4
+15:07:52:671  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_5
+15:07:52:671  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: refreshCacheUsingDELETE_1
+15:07:52:672  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_1
+15:07:52:680  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_1
+15:07:52:680  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_1
+15:07:52:684  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_2
+15:07:52:684  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_3
+15:07:52:685  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_2
+15:07:52:685  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_3
+15:07:52:686  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: excludeChildUsingGET_1
+15:07:52:686  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_6
+15:07:52:686  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_7
+15:07:52:691  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_2
+15:07:52:691  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_3
+15:07:52:691  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_2
+15:07:52:692  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_3
+15:07:52:694  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_4
+15:07:52:695  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_5
+15:07:52:695  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: dictTypeUsingGET_1
+15:07:52:696  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_4
+15:07:52:696  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_5
+15:07:52:696  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_8
+15:07:52:696  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_9
+15:07:52:697  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_4
+15:07:52:697  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_5
+15:07:52:701  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_4
+15:07:52:701  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_5
+15:07:52:702  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_2
+15:07:52:702  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_3
+15:07:52:705  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_6
+15:07:52:705  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_7
+15:07:52:705  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_6
+15:07:52:706  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_7
+15:07:52:706  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_10
+15:07:52:706  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_11
+15:07:52:706  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_1
+15:07:52:707  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: refreshCacheUsingDELETE_2
+15:07:52:707  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: refreshCacheUsingDELETE_3
+15:07:52:707  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_6
+15:07:52:708  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_7
+15:07:52:711  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_6
+15:07:52:711  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_7
+15:07:52:712  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_4
+15:07:52:712  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_5
+15:07:52:712  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingGET_1
+15:07:52:713  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingHEAD_1
+15:07:52:713  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingPOST_1
+15:07:52:713  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingPUT_1
+15:07:52:714  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingPATCH_1
+15:07:52:714  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingDELETE_1
+15:07:52:714  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingOPTIONS_1
+15:07:52:714  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingTRACE_1
+15:07:52:716  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_12
+15:07:52:716  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_13
+15:07:52:716  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getRoutersUsingGET_1
+15:07:52:717  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: loginUsingPOST_1
+15:07:52:718  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: loginNoNeedAuthUsingPOST_1
+15:07:52:720  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cleanUsingDELETE_1
+15:07:52:721  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_8
+15:07:52:721  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_9
+15:07:52:721  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: unlockUsingGET_1
+15:07:52:725  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_8
+15:07:52:725  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_9
+15:07:52:726  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_6
+15:07:52:726  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_7
+15:07:52:730  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_8
+15:07:52:730  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_9
+15:07:52:730  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_8
+15:07:52:731  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_9
+15:07:52:731  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_14
+15:07:52:731  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_15
+15:07:52:735  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_10
+15:07:52:735  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_11
+15:07:52:736  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_10
+15:07:52:736  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_11
+15:07:52:736  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: roleMenuTreeselectUsingGET_1
+15:07:52:737  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: treeselectUsingGET_1
+15:07:52:740  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_10
+15:07:52:740  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_11
+15:07:52:740  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_10
+15:07:52:740  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_11
+15:07:52:741  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_16
+15:07:52:741  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_17
+15:07:52:741  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_12
+15:07:52:742  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_13
+15:07:52:745  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_12
+15:07:52:746  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_13
+15:07:52:747  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cleanUsingDELETE_2
+15:07:52:747  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cleanUsingDELETE_3
+15:07:52:748  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_14
+15:07:52:748  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_15
+15:07:52:752  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_14
+15:07:52:752  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_15
+15:07:52:753  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_8
+15:07:52:753  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_9
+15:07:52:756  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_12
+15:07:52:756  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_13
+15:07:52:757  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_12
+15:07:52:757  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_13
+15:07:52:757  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_18
+15:07:52:757  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_19
+15:07:52:757  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_2
+15:07:52:758  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_3
+15:07:52:758  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_16
+15:07:52:758  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_17
+15:07:52:762  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_16
+15:07:52:762  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_17
+15:07:52:763  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_10
+15:07:52:763  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_11
+15:07:52:764  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: avatarUsingPOST_1
+15:07:52:765  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: profileUsingGET_1
+15:07:52:771  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updateProfileUsingPUT_1
+15:07:52:772  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updatePwdUsingPUT_1
+15:07:52:774  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: registerUsingPOST_1
+15:07:52:777  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_14
+15:07:52:777  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_15
+15:07:52:779  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cancelAuthUserUsingPUT_1
+15:07:52:779  WARN 21576 --- [restartedMain] s.d.s.w.r.p.ParameterDataTypeReader      : Trying to infer dataType java.lang.Long[]
+15:07:52:779  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cancelAuthUserAllUsingPUT_1
+15:07:52:779  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: changeStatusUsingPUT_1
+15:07:52:780  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: dataScopeUsingPUT_1
+15:07:52:780  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deptTreeUsingGET_1
+15:07:52:780  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_14
+15:07:52:782  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_15
+15:07:52:782  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_20
+15:07:52:782  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_21
+15:07:52:782  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_4
+15:07:52:782  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_5
+15:07:52:782  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_18
+15:07:52:782  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_19
+15:07:52:782  WARN 21576 --- [restartedMain] s.d.s.w.r.p.ParameterDataTypeReader      : Trying to infer dataType java.lang.Long[]
+15:07:52:783  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: selectAuthUserAllUsingPUT_1
+15:07:52:792  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: allocatedListUsingGET_1
+15:07:52:793  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_18
+15:07:52:794  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_19
+15:07:52:796  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: unallocatedListUsingGET_1
+15:07:52:796  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_12
+15:07:52:796  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_13
+15:07:52:799  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_16
+15:07:52:799  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_17
+15:07:52:799  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: authRoleUsingGET_1
+15:07:52:800  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: changeStatusUsingPUT_2
+15:07:52:800  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: changeStatusUsingPUT_3
+15:07:52:801  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deptTreeUsingGET_2
+15:07:52:801  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deptTreeUsingGET_3
+15:07:52:802  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_16
+15:07:52:802  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_17
+15:07:52:802  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_22
+15:07:52:803  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_23
+15:07:52:803  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_24
+15:07:52:803  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_25
+15:07:52:804  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: importDataUsingPOST_1
+15:07:52:804  WARN 21576 --- [restartedMain] s.d.s.w.r.p.ParameterDataTypeReader      : Trying to infer dataType java.lang.Long[]
+15:07:52:804  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: insertAuthRoleUsingPUT_1
+15:07:52:805  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_20
+15:07:52:805  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_21
+15:07:52:806  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: resetPwdUsingPUT_1
+15:07:52:808  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_20
+15:07:52:808  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_21
+15:07:52:810  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_14
+15:07:52:810  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_15
+15:07:52:811  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: importTemplateUsingPOST_1
+15:07:52:812  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: forceLogoutUsingDELETE_1
+15:07:52:813  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_22
+15:07:52:813  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_23
+15:07:52:816  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getUserUsingGET_1
+15:07:52:817  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteUsingDELETE_1
+15:07:52:821  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveUsingPOST_1
+15:07:52:823  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updateUsingPUT_1
+15:07:52:825  INFO 21576 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: userListUsingGET_1
+15:07:52:825  INFO 21576 --- [restartedMain] o.s.s.quartz.SchedulerFactoryBean        : Starting Quartz Scheduler now
+15:07:52:825  INFO 21576 --- [restartedMain] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED started.
+15:07:52:830  INFO 21576 --- [restartedMain] com.zksy.ZksyApplication                 : Started ZksyApplication in 16.723 seconds (JVM running for 226.371)
+15:07:52:833  INFO 21576 --- [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED paused.
+15:07:52:834  INFO 21576 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=pipe-network-service.yaml, group=DEFAULT_GROUP
+15:07:52:834  INFO 21576 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=pipe-network-service-dev.yaml, group=DEFAULT_GROUP
+15:07:52:834  INFO 21576 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=null.properties, group=DEFAULT_GROUP
+15:07:52:834  INFO 21576 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=pipe-network-service, group=DEFAULT_GROUP
+15:07:52:836  INFO 21576 --- [restartedMain] .ConditionEvaluationDeltaLoggingListener : Condition evaluation unchanged
+15:07:52:913  INFO 21576 --- [nacos-grpc-client-executor-5] com.alibaba.nacos.common.remote.client   : [96ba91a8-1a3b-408b-ba5f-a735d1b5015a] Receive server push request, request = NotifySubscriberRequest, requestId = 29
+15:07:52:926  INFO 21576 --- [nacos-grpc-client-executor-5] com.alibaba.nacos.common.remote.client   : [96ba91a8-1a3b-408b-ba5f-a735d1b5015a] Ack server push request, request = NotifySubscriberRequest, requestId = 29
+15:07:53:245  INFO 21576 --- [SpringApplicationShutdownHook] c.a.c.n.registry.NacosServiceRegistry    : De-registering from Nacos Server now...
+15:07:53:249  INFO 21576 --- [SpringApplicationShutdownHook] c.a.c.n.registry.NacosServiceRegistry    : De-registration finished.
+15:07:53:573  INFO 21576 --- [SpringApplicationShutdownHook] com.alibaba.nacos.common.remote.client   : Shutdown rpc client, set status to shutdown
+15:07:53:574  INFO 21576 --- [SpringApplicationShutdownHook] com.alibaba.nacos.common.remote.client   : Shutdown client event executor java.util.concurrent.ScheduledThreadPoolExecutor@57edf216[Running, pool size = 2, active threads = 2, queued tasks = 0, completed tasks = 0]
+15:07:53:574  INFO 21576 --- [SpringApplicationShutdownHook] com.alibaba.nacos.common.remote.client   : Close current connection 1761030471979_192.168.110.126_40255
+15:07:53:577  INFO 21576 --- [SpringApplicationShutdownHook] c.a.n.c.remote.client.grpc.GrpcClient    : Shutdown grpc executor java.util.concurrent.ThreadPoolExecutor@1990ca67[Running, pool size = 8, active threads = 0, queued tasks = 0, completed tasks = 8]
+15:07:53:582  INFO 21576 --- [SpringApplicationShutdownHook] o.s.s.quartz.SchedulerFactoryBean        : Shutting down Quartz Scheduler
+15:07:53:582  INFO 21576 --- [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED shutting down.
+15:07:53:582  INFO 21576 --- [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED paused.
+15:07:53:582  INFO 21576 --- [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete.
+15:07:53:582  INFO 21576 --- [SpringApplicationShutdownHook] sys-user                                 : ====关闭后台任务任务线程池====
+15:07:53:587  WARN 21576 --- [SpringApplicationShutdownHook] .s.c.a.CommonAnnotationBeanPostProcessor : Destroy method on bean with name 'shutdownManager' threw an exception: java.lang.ExceptionInInitializerError
+15:07:53:589  INFO 21576 --- [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2} closing ...
+15:07:53:606  INFO 21576 --- [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2} closed
+15:08:07:056  INFO 20984 --- [restartedMain] com.zksy.ZksyApplication                 : The following 1 profile is active: "dev"
+15:08:08:470  INFO 20984 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
+15:08:08:473  INFO 20984 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+15:08:08:568  INFO 20984 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 79 ms. Found 0 Redis repository interfaces.
+15:08:08:997  INFO 20984 --- [restartedMain] o.s.cloud.context.scope.GenericScope     : BeanFactory id=a1f17350-71ec-332d-930d-f4d24e7be2fa
+15:08:09:950  INFO 20984 --- [restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8301 (http)
+15:08:09:982  INFO 20984 --- [restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
+15:08:09:982  INFO 20984 --- [restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.106]
+15:08:10:000  WARN 20984 --- [restartedMain] o.a.c.webresources.DirResourceSet        : Disabled the global canonical file name cache to protect against CVE-2024-56337 when starting the WebResourceSet at [D:\temp\tomcat-docbase.8301.12219039259048091038] which is part of the web application []
+15:08:10:130  INFO 20984 --- [restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
+15:08:10:130  INFO 20984 --- [restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3060 ms
+15:08:10:626 DEBUG 20984 --- [restartedMain] c.z.f.s.f.JwtAuthenticationTokenFilter   : Filter 'jwtAuthenticationTokenFilter' configured for use
+15:08:11:378  INFO 20984 --- [restartedMain] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited
+15:08:13:763  INFO 20984 --- [restartedMain] c.a.c.sentinel.SentinelWebMvcConfigurer  : [Sentinel Starter] register SentinelWebInterceptor with urlPatterns: [/**].
+15:08:14:214  INFO 20984 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Using default implementation for ThreadExecutor
+15:08:14:225  INFO 20984 --- [restartedMain] org.quartz.core.SchedulerSignalerImpl    : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+15:08:14:226  INFO 20984 --- [restartedMain] org.quartz.core.QuartzScheduler          : Quartz Scheduler v.2.3.2 created.
+15:08:14:226  INFO 20984 --- [restartedMain] org.quartz.simpl.RAMJobStore             : RAMJobStore initialized.
+15:08:14:227  INFO 20984 --- [restartedMain] org.quartz.core.QuartzScheduler          : Scheduler meta-data: Quartz Scheduler (v2.3.2) 'quartzScheduler' with instanceId 'NON_CLUSTERED'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
+
+15:08:14:227  INFO 20984 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance.
+15:08:14:227  INFO 20984 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Quartz scheduler version: 2.3.2
+15:08:14:228  INFO 20984 --- [restartedMain] org.quartz.core.QuartzScheduler          : JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@740ef271
+15:08:14:856  INFO 20984 --- [restartedMain] o.s.s.web.DefaultSecurityFilterChain     : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@10a92586, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@1d9b028c, org.springframework.security.web.context.SecurityContextPersistenceFilter@6f91a548, org.springframework.security.web.header.HeaderWriterFilter@6f7d0454, org.springframework.web.filter.CorsFilter@56b7bc30, org.springframework.security.web.authentication.logout.LogoutFilter@b278c67, org.springframework.web.filter.CorsFilter@56b7bc30, com.zksy.framework.security.filter.JwtAuthenticationTokenFilter@4f4dd759, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@73e4a65f, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@127d72b6, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@5ac8020, org.springframework.security.web.session.SessionManagementFilter@371d83b6, org.springframework.security.web.access.ExceptionTranslationFilter@1eba80e, org.springframework.security.web.access.intercept.AuthorizationFilter@3b46f808]
+15:08:15:235  INFO 20984 --- [restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
+15:08:15:869  INFO 20984 --- [restartedMain] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2ControllerWebMvc#getDocumentation(String, HttpServletRequest)]
+15:08:16:893  WARN 20984 --- [restartedMain] iguration$LoadBalancerCaffeineWarnLogger : Spring Cloud LoadBalancer is currently working with the default cache. While this cache implementation is useful for development and tests, it's recommended to use Caffeine cache in production.You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.
+15:08:17:056  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [RpcClientFactory] create a new rpc client of 5077cf24-2ca5-4144-8e6d-8e22afea3207
+15:08:17:056  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [5077cf24-2ca5-4144-8e6d-8e22afea3207] RpcClient init label, labels = {module=naming, source=sdk}
+15:08:17:059  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [5077cf24-2ca5-4144-8e6d-8e22afea3207] RpcClient init, ServerListFactory = com.alibaba.nacos.client.naming.core.ServerListManager
+15:08:17:059  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [5077cf24-2ca5-4144-8e6d-8e22afea3207] Registry connection listener to current client:com.alibaba.nacos.client.naming.remote.gprc.redo.NamingGrpcRedoService
+15:08:17:060  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [5077cf24-2ca5-4144-8e6d-8e22afea3207] Register server push request handler:com.alibaba.nacos.client.naming.remote.gprc.NamingPushRequestHandler
+15:08:17:061  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [5077cf24-2ca5-4144-8e6d-8e22afea3207] Try to connect to server on start up, server: {serverIp = '192.168.110.30', server main port = 8848}
+15:08:17:185  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [5077cf24-2ca5-4144-8e6d-8e22afea3207] Success to connect to server [192.168.110.30:8848] on start up, connectionId = 1761030496882_192.168.110.126_48608
+15:08:17:185  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [5077cf24-2ca5-4144-8e6d-8e22afea3207] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$ConnectResetRequestHandler
+15:08:17:185  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [5077cf24-2ca5-4144-8e6d-8e22afea3207] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$$Lambda$491/0x000000080045d840
+15:08:17:185  INFO 20984 --- [com.alibaba.nacos.client.remote.worker] com.alibaba.nacos.common.remote.client   : [5077cf24-2ca5-4144-8e6d-8e22afea3207] Notify connected event to listeners.
+15:08:17:274  INFO 20984 --- [restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8301 (http) with context path ''
+15:08:17:284  INFO 20984 --- [restartedMain] c.a.c.n.registry.NacosServiceRegistry    : nacos registry, DEFAULT_GROUP pipe-network-service 192.168.220.1:8301 register finished
+15:08:17:542  INFO 20984 --- [restartedMain] d.s.w.p.DocumentationPluginsBootstrapper : Documentation plugins bootstrapped
+15:08:17:546  INFO 20984 --- [restartedMain] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
+15:08:17:597  INFO 20984 --- [restartedMain] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
+15:08:17:644  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cacheUsingGET_1
+15:08:17:652  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: clearCacheAllUsingDELETE_1
+15:08:17:659  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: clearCacheKeyUsingDELETE_1
+15:08:17:660  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: clearCacheNameUsingDELETE_1
+15:08:17:661  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getCacheKeysUsingGET_1
+15:08:17:663  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getCacheValueUsingGET_1
+15:08:17:664  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_1
+15:08:17:672  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getCodeUsingGET_1
+15:08:17:674  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: uploadFileUsingPOST_1
+15:08:17:675  WARN 20984 --- [restartedMain] s.d.s.w.r.p.ParameterDataTypeReader      : Trying to infer dataType java.util.List<org.springframework.web.multipart.MultipartFile>
+15:08:17:675  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: uploadFilesUsingPOST_1
+15:08:17:677  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: fileDownloadUsingGET_1
+15:08:17:678  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: resourceDownloadUsingGET_1
+15:08:17:685  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAlarmsUsingGET_1
+15:08:17:686  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getDailyStatsUsingGET_1
+15:08:17:688  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getLatestUsingGET_1
+15:08:17:689  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getTrendUsingGET_1
+15:08:17:693  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAlarmCountsUsingGET_1
+15:08:17:694  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAveragePressureUsingGET_1
+15:08:17:695  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getDailyStatsUsingGET_2
+15:08:17:695  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getDailyStatsUsingGET_3
+15:08:17:696  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getPressureDistributionUsingGET_1
+15:08:17:697  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getSignalVsPressureUsingGET_1
+15:08:17:699  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_2
+15:08:17:700  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_3
+15:08:17:708  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_1
+15:08:17:710  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_1
+15:08:17:711  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getConfigKeyUsingGET_1
+15:08:17:712  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_4
+15:08:17:712  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_5
+15:08:17:713  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: refreshCacheUsingDELETE_1
+15:08:17:714  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_1
+15:08:17:728  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_1
+15:08:17:729  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_1
+15:08:17:736  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_2
+15:08:17:736  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_3
+15:08:17:737  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_2
+15:08:17:738  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_3
+15:08:17:739  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: excludeChildUsingGET_1
+15:08:17:739  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_6
+15:08:17:739  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_7
+15:08:17:746  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_2
+15:08:17:746  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_3
+15:08:17:747  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_2
+15:08:17:748  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_3
+15:08:17:752  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_4
+15:08:17:753  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_5
+15:08:17:754  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: dictTypeUsingGET_1
+15:08:17:755  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_4
+15:08:17:755  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_5
+15:08:17:756  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_8
+15:08:17:756  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_9
+15:08:17:757  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_4
+15:08:17:757  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_5
+15:08:17:762  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_4
+15:08:17:762  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_5
+15:08:17:765  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_2
+15:08:17:765  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_3
+15:08:17:771  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_6
+15:08:17:771  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_7
+15:08:17:772  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_6
+15:08:17:773  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_7
+15:08:17:773  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_10
+15:08:17:774  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_11
+15:08:17:774  INFO 20984 --- [nacos-grpc-client-executor-5] com.alibaba.nacos.common.remote.client   : [5077cf24-2ca5-4144-8e6d-8e22afea3207] Receive server push request, request = NotifySubscriberRequest, requestId = 30
+15:08:17:776  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_1
+15:08:17:776  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: refreshCacheUsingDELETE_2
+15:08:17:776  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: refreshCacheUsingDELETE_3
+15:08:17:777  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_6
+15:08:17:777  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_7
+15:08:17:782  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_6
+15:08:17:782  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_7
+15:08:17:783  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_4
+15:08:17:798  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_5
+15:08:17:799  INFO 20984 --- [nacos-grpc-client-executor-5] com.alibaba.nacos.common.remote.client   : [5077cf24-2ca5-4144-8e6d-8e22afea3207] Ack server push request, request = NotifySubscriberRequest, requestId = 30
+15:08:17:800  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingGET_1
+15:08:17:801  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingHEAD_1
+15:08:17:802  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingPOST_1
+15:08:17:802  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingPUT_1
+15:08:17:802  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingPATCH_1
+15:08:17:803  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingDELETE_1
+15:08:17:803  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingOPTIONS_1
+15:08:17:803  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingTRACE_1
+15:08:17:806  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_12
+15:08:17:806  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_13
+15:08:17:807  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getRoutersUsingGET_1
+15:08:17:808  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: loginUsingPOST_1
+15:08:17:811  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: loginNoNeedAuthUsingPOST_1
+15:08:17:813  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cleanUsingDELETE_1
+15:08:17:814  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_8
+15:08:17:814  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_9
+15:08:17:815  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: unlockUsingGET_1
+15:08:17:820  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_8
+15:08:17:820  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_9
+15:08:17:821  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_6
+15:08:17:821  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_7
+15:08:17:827  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_8
+15:08:17:827  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_9
+15:08:17:828  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_8
+15:08:17:828  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_9
+15:08:17:829  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_14
+15:08:17:829  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_15
+15:08:17:834  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_10
+15:08:17:834  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_11
+15:08:17:834  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_10
+15:08:17:835  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_11
+15:08:17:835  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: roleMenuTreeselectUsingGET_1
+15:08:17:837  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: treeselectUsingGET_1
+15:08:17:840  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_10
+15:08:17:840  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_11
+15:08:17:841  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_10
+15:08:17:841  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_11
+15:08:17:842  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_16
+15:08:17:843  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_17
+15:08:17:844  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_12
+15:08:17:844  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_13
+15:08:17:849  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_12
+15:08:17:849  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_13
+15:08:17:851  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cleanUsingDELETE_2
+15:08:17:851  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cleanUsingDELETE_3
+15:08:17:851  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_14
+15:08:17:852  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_15
+15:08:17:857  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_14
+15:08:17:857  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_15
+15:08:17:859  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_8
+15:08:17:859  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_9
+15:08:17:862  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_12
+15:08:17:863  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_13
+15:08:17:863  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_12
+15:08:17:863  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_13
+15:08:17:864  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_18
+15:08:17:864  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_19
+15:08:17:865  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_2
+15:08:17:865  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_3
+15:08:17:865  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_16
+15:08:17:865  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_17
+15:08:17:870  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_16
+15:08:17:870  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_17
+15:08:17:871  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_10
+15:08:17:871  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_11
+15:08:17:873  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: avatarUsingPOST_1
+15:08:17:874  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: profileUsingGET_1
+15:08:17:884  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updateProfileUsingPUT_1
+15:08:17:886  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updatePwdUsingPUT_1
+15:08:17:888  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: registerUsingPOST_1
+15:08:17:892  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_14
+15:08:17:892  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_15
+15:08:17:893  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cancelAuthUserUsingPUT_1
+15:08:17:894  WARN 20984 --- [restartedMain] s.d.s.w.r.p.ParameterDataTypeReader      : Trying to infer dataType java.lang.Long[]
+15:08:17:894  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cancelAuthUserAllUsingPUT_1
+15:08:17:895  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: changeStatusUsingPUT_1
+15:08:17:896  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: dataScopeUsingPUT_1
+15:08:17:896  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deptTreeUsingGET_1
+15:08:17:897  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_14
+15:08:17:897  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_15
+15:08:17:898  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_20
+15:08:17:898  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_21
+15:08:17:898  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_4
+15:08:17:898  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_5
+15:08:17:899  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_18
+15:08:17:899  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_19
+15:08:17:899  WARN 20984 --- [restartedMain] s.d.s.w.r.p.ParameterDataTypeReader      : Trying to infer dataType java.lang.Long[]
+15:08:17:900  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: selectAuthUserAllUsingPUT_1
+15:08:17:911  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: allocatedListUsingGET_1
+15:08:17:913  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_18
+15:08:17:913  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_19
+15:08:17:916  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: unallocatedListUsingGET_1
+15:08:17:917  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_12
+15:08:17:918  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_13
+15:08:17:921  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_16
+15:08:17:921  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_17
+15:08:17:922  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: authRoleUsingGET_1
+15:08:17:923  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: changeStatusUsingPUT_2
+15:08:17:923  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: changeStatusUsingPUT_3
+15:08:17:924  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deptTreeUsingGET_2
+15:08:17:924  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deptTreeUsingGET_3
+15:08:17:925  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_16
+15:08:17:925  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_17
+15:08:17:926  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_22
+15:08:17:926  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_23
+15:08:17:927  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_24
+15:08:17:927  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_25
+15:08:17:927  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: importDataUsingPOST_1
+15:08:17:928  WARN 20984 --- [restartedMain] s.d.s.w.r.p.ParameterDataTypeReader      : Trying to infer dataType java.lang.Long[]
+15:08:17:928  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: insertAuthRoleUsingPUT_1
+15:08:17:929  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_20
+15:08:17:929  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_21
+15:08:17:930  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: resetPwdUsingPUT_1
+15:08:17:932  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_20
+15:08:17:932  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_21
+15:08:17:934  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_14
+15:08:17:935  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_15
+15:08:17:935  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: importTemplateUsingPOST_1
+15:08:17:937  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: forceLogoutUsingDELETE_1
+15:08:17:938  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_22
+15:08:17:938  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_23
+15:08:17:947  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getUserUsingGET_1
+15:08:17:949  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteUsingDELETE_1
+15:08:17:956  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveUsingPOST_1
+15:08:17:959  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updateUsingPUT_1
+15:08:17:961  INFO 20984 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: userListUsingGET_1
+15:08:17:965  INFO 20984 --- [restartedMain] o.s.s.quartz.SchedulerFactoryBean        : Starting Quartz Scheduler now
+15:08:17:965  INFO 20984 --- [restartedMain] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED started.
+15:08:17:975  INFO 20984 --- [restartedMain] com.zksy.ZksyApplication                 : Started ZksyApplication in 14.286 seconds (JVM running for 16.637)
+15:08:17:983  INFO 20984 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=pipe-network-service.yaml, group=DEFAULT_GROUP
+15:08:17:986  INFO 20984 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=pipe-network-service-dev.yaml, group=DEFAULT_GROUP
+15:08:17:986  INFO 20984 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=pipe-network-service, group=DEFAULT_GROUP
+15:10:13:152  INFO 20984 --- [File Watcher] rtingClassPathChangeChangedEventListener : Restarting due to 350 class path changes (0 additions, 350 deletions, 0 modifications)
+15:10:13:157  INFO 20984 --- [Thread-12] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED paused.
+15:10:14:106  INFO 20984 --- [Thread-12] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
+15:10:14:125  WARN 20984 --- [Thread-12] o.a.c.loader.WebappClassLoaderBase       : The web application [ROOT] appears to have started a thread named [lettuce-timer-3-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
+ java.base@11.0.15.1/java.lang.Thread.sleep(Native Method)
+ app//io.netty.util.HashedWheelTimer$Worker.waitForNextTick(HashedWheelTimer.java:600)
+ app//io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:496)
+ app//io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
+ java.base@11.0.15.1/java.lang.Thread.run(Thread.java:834)
+15:10:14:243  INFO 20984 --- [Thread-12] c.a.c.n.registry.NacosServiceRegistry    : De-registering from Nacos Server now...
+15:10:14:276  INFO 20984 --- [Thread-12] c.a.c.n.registry.NacosServiceRegistry    : De-registration finished.
+15:10:14:635  INFO 20984 --- [Thread-12] com.alibaba.nacos.common.remote.client   : Shutdown rpc client, set status to shutdown
+15:10:14:635  INFO 20984 --- [Thread-12] com.alibaba.nacos.common.remote.client   : Shutdown client event executor java.util.concurrent.ScheduledThreadPoolExecutor@1e28bcdc[Running, pool size = 2, active threads = 2, queued tasks = 0, completed tasks = 0]
+15:10:14:636  INFO 20984 --- [Thread-12] com.alibaba.nacos.common.remote.client   : Close current connection 1761030496882_192.168.110.126_48608
+15:10:14:647  INFO 20984 --- [Thread-12] c.a.n.c.remote.client.grpc.GrpcClient    : Shutdown grpc executor java.util.concurrent.ThreadPoolExecutor@214dc8c4[Running, pool size = 5, active threads = 1, queued tasks = 0, completed tasks = 31]
+15:10:14:667  INFO 20984 --- [nacos-grpc-client-executor-31] c.a.n.c.remote.client.grpc.GrpcClient    : [1761030496882_192.168.110.126_48608]Ignore complete event,isRunning:false,isAbandon=false
+15:10:14:672  INFO 20984 --- [Thread-12] o.s.s.quartz.SchedulerFactoryBean        : Shutting down Quartz Scheduler
+15:10:14:673  INFO 20984 --- [Thread-12] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED shutting down.
+15:10:14:673  INFO 20984 --- [Thread-12] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED paused.
+15:10:14:677  INFO 20984 --- [Thread-12] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete.
+15:10:14:678  INFO 20984 --- [Thread-12] sys-user                                 : ====关闭后台任务任务线程池====
+15:10:14:679  WARN 20984 --- [Thread-12] .s.c.a.CommonAnnotationBeanPostProcessor : Destroy method on bean with name 'shutdownManager' threw an exception: java.lang.NoClassDefFoundError: com/zksy/framework/manager/AsyncManager
+15:10:14:682  INFO 20984 --- [Thread-12] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closing ...
+15:10:14:724  INFO 20984 --- [Thread-12] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closed
+15:10:39:704  INFO 20984 --- [restartedMain] com.zksy.ZksyApplication                 : The following 1 profile is active: "dev"
+15:10:42:186  INFO 20984 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
+15:10:42:186  INFO 20984 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+15:10:42:509  INFO 20984 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 322 ms. Found 0 Redis repository interfaces.
+15:10:42:703  INFO 20984 --- [restartedMain] o.s.cloud.context.scope.GenericScope     : BeanFactory id=a61994de-512a-3190-8774-cdca1d46c0da
+15:10:43:051  INFO 20984 --- [restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8301 (http)
+15:10:43:051  INFO 20984 --- [restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
+15:10:43:051  INFO 20984 --- [restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.106]
+15:10:43:102  INFO 20984 --- [restartedMain] o.a.c.c.C.[Tomcat-2].[localhost].[/]     : Initializing Spring embedded WebApplicationContext
+15:10:43:102  INFO 20984 --- [restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3392 ms
+15:10:43:385 DEBUG 20984 --- [restartedMain] c.z.f.s.f.JwtAuthenticationTokenFilter   : Filter 'jwtAuthenticationTokenFilter' configured for use
+15:10:44:695  INFO 20984 --- [restartedMain] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2} inited
+15:10:49:369  INFO 20984 --- [restartedMain] c.a.c.sentinel.SentinelWebMvcConfigurer  : [Sentinel Starter] register SentinelWebInterceptor with urlPatterns: [/**].
+15:10:52:264  INFO 20984 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Using default implementation for ThreadExecutor
+15:10:52:265  INFO 20984 --- [restartedMain] org.quartz.core.SchedulerSignalerImpl    : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+15:10:52:266  INFO 20984 --- [restartedMain] org.quartz.core.QuartzScheduler          : Quartz Scheduler v.2.3.2 created.
+15:10:52:266  INFO 20984 --- [restartedMain] org.quartz.simpl.RAMJobStore             : RAMJobStore initialized.
+15:10:52:266  INFO 20984 --- [restartedMain] org.quartz.core.QuartzScheduler          : Scheduler meta-data: Quartz Scheduler (v2.3.2) 'quartzScheduler' with instanceId 'NON_CLUSTERED'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
+
+15:10:52:266  INFO 20984 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance.
+15:10:52:266  INFO 20984 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Quartz scheduler version: 2.3.2
+15:10:52:266  INFO 20984 --- [restartedMain] org.quartz.core.QuartzScheduler          : JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@5e974656
+15:10:52:834  WARN 20984 --- [Thread-8] c.a.nacos.common.notify.NotifyCenter     : [NotifyCenter] Start destroying Publisher
+15:10:52:835  WARN 20984 --- [Thread-4] c.a.n.common.http.HttpClientBeanHolder   : [HttpClientBeanHolder] Start destroying common HttpClient
+15:10:52:835  WARN 20984 --- [Thread-8] c.a.nacos.common.notify.NotifyCenter     : [NotifyCenter] Destruction of the end
+15:10:52:836  WARN 20984 --- [Thread-4] c.a.n.common.http.HttpClientBeanHolder   : [HttpClientBeanHolder] Destruction of the end
+15:10:53:011  INFO 20984 --- [restartedMain] o.s.s.web.DefaultSecurityFilterChain     : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@64cda33, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@38daae3c, org.springframework.security.web.context.SecurityContextPersistenceFilter@3439b7f3, org.springframework.security.web.header.HeaderWriterFilter@67ead5a3, org.springframework.web.filter.CorsFilter@39878864, org.springframework.security.web.authentication.logout.LogoutFilter@18a4b300, org.springframework.web.filter.CorsFilter@39878864, com.zksy.framework.security.filter.JwtAuthenticationTokenFilter@cacf29d, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@3220aedb, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@2ec23ef0, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@8c2d9c8, org.springframework.security.web.session.SessionManagementFilter@3b7cbe42, org.springframework.security.web.access.ExceptionTranslationFilter@3707a61c, org.springframework.security.web.access.intercept.AuthorizationFilter@5ecc1c8a]
+15:10:55:456  INFO 20984 --- [restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
+15:10:57:253  INFO 20984 --- [restartedMain] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2ControllerWebMvc#getDocumentation(String, HttpServletRequest)]
+15:10:58:023  WARN 20984 --- [restartedMain] iguration$LoadBalancerCaffeineWarnLogger : Spring Cloud LoadBalancer is currently working with the default cache. While this cache implementation is useful for development and tests, it's recommended to use Caffeine cache in production.You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.
+15:10:58:113  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [RpcClientFactory] create a new rpc client of 132ab20d-27df-4769-9dbe-9d62d8977e7d
+15:10:58:114  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [132ab20d-27df-4769-9dbe-9d62d8977e7d] RpcClient init label, labels = {module=naming, source=sdk}
+15:10:58:114  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [132ab20d-27df-4769-9dbe-9d62d8977e7d] RpcClient init, ServerListFactory = com.alibaba.nacos.client.naming.core.ServerListManager
+15:10:58:114  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [132ab20d-27df-4769-9dbe-9d62d8977e7d] Registry connection listener to current client:com.alibaba.nacos.client.naming.remote.gprc.redo.NamingGrpcRedoService
+15:10:58:114  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [132ab20d-27df-4769-9dbe-9d62d8977e7d] Register server push request handler:com.alibaba.nacos.client.naming.remote.gprc.NamingPushRequestHandler
+15:10:58:115  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [132ab20d-27df-4769-9dbe-9d62d8977e7d] Try to connect to server on start up, server: {serverIp = '192.168.110.30', server main port = 8848}
+15:10:58:243  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [132ab20d-27df-4769-9dbe-9d62d8977e7d] Success to connect to server [192.168.110.30:8848] on start up, connectionId = 1761030657931_192.168.110.126_20873
+15:10:58:243  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [132ab20d-27df-4769-9dbe-9d62d8977e7d] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$ConnectResetRequestHandler
+15:10:58:243  INFO 20984 --- [com.alibaba.nacos.client.remote.worker] com.alibaba.nacos.common.remote.client   : [132ab20d-27df-4769-9dbe-9d62d8977e7d] Notify connected event to listeners.
+15:10:58:243  INFO 20984 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [132ab20d-27df-4769-9dbe-9d62d8977e7d] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$$Lambda$491/0x000000080045d840
+15:10:58:283  INFO 20984 --- [restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8301 (http) with context path ''
+15:10:58:289  INFO 20984 --- [restartedMain] c.a.c.n.registry.NacosServiceRegistry    : nacos registry, DEFAULT_GROUP pipe-network-service 192.168.220.1:8301 register finished
+15:10:58:520  INFO 20984 --- [restartedMain] d.s.w.p.DocumentationPluginsBootstrapper : Documentation plugins bootstrapped
+15:10:58:521  INFO 20984 --- [restartedMain] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
+15:10:58:529  INFO 20984 --- [restartedMain] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
+15:10:58:530  INFO 20984 --- [restartedMain] o.s.s.quartz.SchedulerFactoryBean        : Starting Quartz Scheduler now
+15:10:58:530  INFO 20984 --- [restartedMain] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED started.
+15:10:58:535  INFO 20984 --- [restartedMain] com.zksy.ZksyApplication                 : Started ZksyApplication in 19.977 seconds (JVM running for 177.196)
+15:10:58:537  INFO 20984 --- [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED paused.
+15:10:58:537  INFO 20984 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=pipe-network-service.yaml, group=DEFAULT_GROUP
+15:10:58:538  INFO 20984 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=pipe-network-service-dev.yaml, group=DEFAULT_GROUP
+15:10:58:538  INFO 20984 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=null.properties, group=DEFAULT_GROUP
+15:10:58:539  INFO 20984 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=pipe-network-service, group=DEFAULT_GROUP
+15:10:58:540  INFO 20984 --- [restartedMain] .ConditionEvaluationDeltaLoggingListener : Condition evaluation unchanged
+15:10:58:817  INFO 20984 --- [nacos-grpc-client-executor-5] com.alibaba.nacos.common.remote.client   : [132ab20d-27df-4769-9dbe-9d62d8977e7d] Receive server push request, request = NotifySubscriberRequest, requestId = 31
+15:10:58:831  INFO 20984 --- [nacos-grpc-client-executor-5] com.alibaba.nacos.common.remote.client   : [132ab20d-27df-4769-9dbe-9d62d8977e7d] Ack server push request, request = NotifySubscriberRequest, requestId = 31
+15:10:58:909  INFO 20984 --- [SpringApplicationShutdownHook] c.a.c.n.registry.NacosServiceRegistry    : De-registering from Nacos Server now...
+15:10:58:913  INFO 20984 --- [SpringApplicationShutdownHook] c.a.c.n.registry.NacosServiceRegistry    : De-registration finished.
+15:10:59:246  INFO 20984 --- [SpringApplicationShutdownHook] com.alibaba.nacos.common.remote.client   : Shutdown rpc client, set status to shutdown
+15:10:59:246  INFO 20984 --- [SpringApplicationShutdownHook] com.alibaba.nacos.common.remote.client   : Shutdown client event executor java.util.concurrent.ScheduledThreadPoolExecutor@347af534[Running, pool size = 2, active threads = 2, queued tasks = 0, completed tasks = 0]
+15:10:59:246  INFO 20984 --- [SpringApplicationShutdownHook] com.alibaba.nacos.common.remote.client   : Close current connection 1761030657931_192.168.110.126_20873
+15:10:59:246  INFO 20984 --- [SpringApplicationShutdownHook] c.a.n.c.remote.client.grpc.GrpcClient    : Shutdown grpc executor java.util.concurrent.ThreadPoolExecutor@289b8ac4[Running, pool size = 8, active threads = 0, queued tasks = 0, completed tasks = 8]
+15:10:59:251  INFO 20984 --- [SpringApplicationShutdownHook] o.s.s.quartz.SchedulerFactoryBean        : Shutting down Quartz Scheduler
+15:10:59:251  INFO 20984 --- [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED shutting down.
+15:10:59:251  INFO 20984 --- [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED paused.
+15:10:59:251  INFO 20984 --- [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete.
+15:10:59:251  INFO 20984 --- [SpringApplicationShutdownHook] sys-user                                 : ====关闭后台任务任务线程池====
+15:10:59:254  WARN 20984 --- [SpringApplicationShutdownHook] .s.c.a.CommonAnnotationBeanPostProcessor : Destroy method on bean with name 'shutdownManager' threw an exception: java.lang.ExceptionInInitializerError
+15:10:59:256  INFO 20984 --- [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2} closing ...
+15:10:59:270  INFO 20984 --- [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2} closed
+15:11:11:793  INFO 22772 --- [restartedMain] com.zksy.ZksyApplication                 : The following 1 profile is active: "dev"
+15:11:13:032  INFO 22772 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
+15:11:13:033  INFO 22772 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+15:11:13:114  INFO 22772 --- [restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 67 ms. Found 0 Redis repository interfaces.
+15:11:13:448  INFO 22772 --- [restartedMain] o.s.cloud.context.scope.GenericScope     : BeanFactory id=a48a6b09-08b4-3dc3-8eab-abef2c5cd465
+15:11:14:312  INFO 22772 --- [restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8301 (http)
+15:11:14:337  INFO 22772 --- [restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
+15:11:14:338  INFO 22772 --- [restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.106]
+15:11:14:361  WARN 22772 --- [restartedMain] o.a.c.webresources.DirResourceSet        : Disabled the global canonical file name cache to protect against CVE-2024-56337 when starting the WebResourceSet at [D:\temp\tomcat-docbase.8301.3986256975503063924] which is part of the web application []
+15:11:14:488  INFO 22772 --- [restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
+15:11:14:488  INFO 22772 --- [restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2685 ms
+15:11:15:094 DEBUG 22772 --- [restartedMain] c.z.f.s.f.JwtAuthenticationTokenFilter   : Filter 'jwtAuthenticationTokenFilter' configured for use
+15:11:15:945  INFO 22772 --- [restartedMain] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited
+15:11:18:522  INFO 22772 --- [restartedMain] c.a.c.sentinel.SentinelWebMvcConfigurer  : [Sentinel Starter] register SentinelWebInterceptor with urlPatterns: [/**].
+15:11:18:801  INFO 22772 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Using default implementation for ThreadExecutor
+15:11:18:811  INFO 22772 --- [restartedMain] org.quartz.core.SchedulerSignalerImpl    : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+15:11:18:811  INFO 22772 --- [restartedMain] org.quartz.core.QuartzScheduler          : Quartz Scheduler v.2.3.2 created.
+15:11:18:812  INFO 22772 --- [restartedMain] org.quartz.simpl.RAMJobStore             : RAMJobStore initialized.
+15:11:18:813  INFO 22772 --- [restartedMain] org.quartz.core.QuartzScheduler          : Scheduler meta-data: Quartz Scheduler (v2.3.2) 'quartzScheduler' with instanceId 'NON_CLUSTERED'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
+
+15:11:18:813  INFO 22772 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance.
+15:11:18:813  INFO 22772 --- [restartedMain] org.quartz.impl.StdSchedulerFactory      : Quartz scheduler version: 2.3.2
+15:11:18:813  INFO 22772 --- [restartedMain] org.quartz.core.QuartzScheduler          : JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@479b4a1a
+15:11:19:569  INFO 22772 --- [restartedMain] o.s.s.web.DefaultSecurityFilterChain     : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@111539f, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@7b1a5880, org.springframework.security.web.context.SecurityContextPersistenceFilter@53a8ad9a, org.springframework.security.web.header.HeaderWriterFilter@71a08651, org.springframework.web.filter.CorsFilter@5b48ad40, org.springframework.security.web.authentication.logout.LogoutFilter@62096662, org.springframework.web.filter.CorsFilter@5b48ad40, com.zksy.framework.security.filter.JwtAuthenticationTokenFilter@562c2b87, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6d982c03, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@30dbe72e, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@52b01c90, org.springframework.security.web.session.SessionManagementFilter@58479efe, org.springframework.security.web.access.ExceptionTranslationFilter@628cd36a, org.springframework.security.web.access.intercept.AuthorizationFilter@739d7438]
+15:11:19:984  INFO 22772 --- [restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
+15:11:20:733  INFO 22772 --- [restartedMain] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2ControllerWebMvc#getDocumentation(String, HttpServletRequest)]
+15:11:21:664  WARN 22772 --- [restartedMain] iguration$LoadBalancerCaffeineWarnLogger : Spring Cloud LoadBalancer is currently working with the default cache. While this cache implementation is useful for development and tests, it's recommended to use Caffeine cache in production.You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.
+15:11:21:818  INFO 22772 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [RpcClientFactory] create a new rpc client of 5ea7ec3c-3477-4b1b-a501-91c2c74df7a0
+15:11:21:818  INFO 22772 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [5ea7ec3c-3477-4b1b-a501-91c2c74df7a0] RpcClient init label, labels = {module=naming, source=sdk}
+15:11:21:820  INFO 22772 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [5ea7ec3c-3477-4b1b-a501-91c2c74df7a0] RpcClient init, ServerListFactory = com.alibaba.nacos.client.naming.core.ServerListManager
+15:11:21:820  INFO 22772 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [5ea7ec3c-3477-4b1b-a501-91c2c74df7a0] Registry connection listener to current client:com.alibaba.nacos.client.naming.remote.gprc.redo.NamingGrpcRedoService
+15:11:21:821  INFO 22772 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [5ea7ec3c-3477-4b1b-a501-91c2c74df7a0] Register server push request handler:com.alibaba.nacos.client.naming.remote.gprc.NamingPushRequestHandler
+15:11:21:822  INFO 22772 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [5ea7ec3c-3477-4b1b-a501-91c2c74df7a0] Try to connect to server on start up, server: {serverIp = '192.168.110.30', server main port = 8848}
+15:11:21:955  INFO 22772 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [5ea7ec3c-3477-4b1b-a501-91c2c74df7a0] Success to connect to server [192.168.110.30:8848] on start up, connectionId = 1761030681642_192.168.110.126_58590
+15:11:21:955  INFO 22772 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [5ea7ec3c-3477-4b1b-a501-91c2c74df7a0] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$ConnectResetRequestHandler
+15:11:21:955  INFO 22772 --- [com.alibaba.nacos.client.remote.worker] com.alibaba.nacos.common.remote.client   : [5ea7ec3c-3477-4b1b-a501-91c2c74df7a0] Notify connected event to listeners.
+15:11:21:955  INFO 22772 --- [restartedMain] com.alibaba.nacos.common.remote.client   : [5ea7ec3c-3477-4b1b-a501-91c2c74df7a0] Register server push request handler:com.alibaba.nacos.common.remote.client.RpcClient$$Lambda$491/0x000000080045d840
+15:11:22:031  INFO 22772 --- [restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8301 (http) with context path ''
+15:11:22:042  INFO 22772 --- [restartedMain] c.a.c.n.registry.NacosServiceRegistry    : nacos registry, DEFAULT_GROUP pipe-network-service 192.168.220.1:8301 register finished
+15:11:22:379  INFO 22772 --- [restartedMain] d.s.w.p.DocumentationPluginsBootstrapper : Documentation plugins bootstrapped
+15:11:22:382  INFO 22772 --- [restartedMain] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
+15:11:22:436  INFO 22772 --- [restartedMain] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
+15:11:22:489  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cacheUsingGET_1
+15:11:22:497  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: clearCacheAllUsingDELETE_1
+15:11:22:502  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: clearCacheKeyUsingDELETE_1
+15:11:22:503  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: clearCacheNameUsingDELETE_1
+15:11:22:504  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getCacheKeysUsingGET_1
+15:11:22:506  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getCacheValueUsingGET_1
+15:11:22:507  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_1
+15:11:22:514  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getCodeUsingGET_1
+15:11:22:517  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: uploadFileUsingPOST_1
+15:11:22:518  WARN 22772 --- [restartedMain] s.d.s.w.r.p.ParameterDataTypeReader      : Trying to infer dataType java.util.List<org.springframework.web.multipart.MultipartFile>
+15:11:22:519  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: uploadFilesUsingPOST_1
+15:11:22:521  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: fileDownloadUsingGET_1
+15:11:22:522  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: resourceDownloadUsingGET_1
+15:11:22:529  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAlarmsUsingGET_1
+15:11:22:531  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getDailyStatsUsingGET_1
+15:11:22:533  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getLatestUsingGET_1
+15:11:22:534  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getTrendUsingGET_1
+15:11:22:545  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: findByPageUsingGET_1
+15:11:22:547  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteBatchByIdUsingDELETE_1
+15:11:22:548  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteByIdUsingDELETE_1
+15:11:22:549  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_1
+15:11:22:550  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getListUsingGET_1
+15:11:22:553  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveUsingPOST_1
+15:11:22:557  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveBatchUsingPOST_1
+15:11:22:559  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updateByIdUsingPUT_1
+15:11:22:562  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: findByPageUsingGET_2
+15:11:22:563  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: findByPageUsingGET_3
+15:11:22:564  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteBatchByIdUsingDELETE_2
+15:11:22:564  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteBatchByIdUsingDELETE_3
+15:11:22:565  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteByIdUsingDELETE_2
+15:11:22:566  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteByIdUsingDELETE_3
+15:11:22:566  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_2
+15:11:22:567  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_3
+15:11:22:567  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getListUsingGET_2
+15:11:22:568  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getListUsingGET_3
+15:11:22:572  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveUsingPOST_2
+15:11:22:573  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveUsingPOST_3
+15:11:22:574  INFO 22772 --- [nacos-grpc-client-executor-6] com.alibaba.nacos.common.remote.client   : [5ea7ec3c-3477-4b1b-a501-91c2c74df7a0] Receive server push request, request = NotifySubscriberRequest, requestId = 32
+15:11:22:575  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveBatchUsingPOST_2
+15:11:22:576  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveBatchUsingPOST_3
+15:11:22:577  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updateByIdUsingPUT_2
+15:11:22:577  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updateByIdUsingPUT_3
+15:11:22:581  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: findByPageUsingGET_4
+15:11:22:581  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: findByPageUsingGET_5
+15:11:22:581  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteBatchByIdUsingDELETE_4
+15:11:22:582  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteBatchByIdUsingDELETE_5
+15:11:22:582  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteByIdUsingDELETE_4
+15:11:22:583  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteByIdUsingDELETE_5
+15:11:22:583  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_4
+15:11:22:583  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_5
+15:11:22:585  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getListUsingGET_4
+15:11:22:586  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getListUsingGET_5
+15:11:22:590  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveUsingPOST_4
+15:11:22:590  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveUsingPOST_5
+15:11:22:592  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveBatchUsingPOST_4
+15:11:22:592  INFO 22772 --- [nacos-grpc-client-executor-6] com.alibaba.nacos.common.remote.client   : [5ea7ec3c-3477-4b1b-a501-91c2c74df7a0] Ack server push request, request = NotifySubscriberRequest, requestId = 32
+15:11:22:592  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveBatchUsingPOST_5
+15:11:22:593  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updateByIdUsingPUT_4
+15:11:22:594  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updateByIdUsingPUT_5
+15:11:22:599  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: findByPageUsingGET_6
+15:11:22:599  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: findByPageUsingGET_7
+15:11:22:600  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteBatchByIdUsingDELETE_6
+15:11:22:601  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteBatchByIdUsingDELETE_7
+15:11:22:601  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteByIdUsingDELETE_6
+15:11:22:602  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteByIdUsingDELETE_7
+15:11:22:602  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_6
+15:11:22:603  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getByIdUsingGET_7
+15:11:22:603  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getListUsingGET_6
+15:11:22:604  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getListUsingGET_7
+15:11:22:605  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveUsingPOST_6
+15:11:22:606  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveUsingPOST_7
+15:11:22:607  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveBatchUsingPOST_6
+15:11:22:607  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveBatchUsingPOST_7
+15:11:22:608  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updateByIdUsingPUT_6
+15:11:22:608  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updateByIdUsingPUT_7
+15:11:22:611  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAlarmCountsUsingGET_1
+15:11:22:612  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAveragePressureUsingGET_1
+15:11:22:614  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getDailyStatsUsingGET_2
+15:11:22:614  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getDailyStatsUsingGET_3
+15:11:22:615  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getPressureDistributionUsingGET_1
+15:11:22:616  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getSignalVsPressureUsingGET_1
+15:11:22:618  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_2
+15:11:22:618  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_3
+15:11:22:624  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_1
+15:11:22:625  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_1
+15:11:22:626  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getConfigKeyUsingGET_1
+15:11:22:627  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_4
+15:11:22:627  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_5
+15:11:22:628  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: refreshCacheUsingDELETE_1
+15:11:22:628  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_1
+15:11:22:648  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_1
+15:11:22:650  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_1
+15:11:22:656  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_2
+15:11:22:657  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_3
+15:11:22:658  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_2
+15:11:22:658  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_3
+15:11:22:659  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: excludeChildUsingGET_1
+15:11:22:660  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_6
+15:11:22:660  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_7
+15:11:22:668  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_2
+15:11:22:668  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_3
+15:11:22:669  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_2
+15:11:22:669  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_3
+15:11:22:673  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_4
+15:11:22:674  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_5
+15:11:22:676  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: dictTypeUsingGET_1
+15:11:22:677  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_4
+15:11:22:677  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_5
+15:11:22:678  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_8
+15:11:22:679  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_9
+15:11:22:680  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_4
+15:11:22:680  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_5
+15:11:22:686  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_4
+15:11:22:686  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_5
+15:11:22:687  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_2
+15:11:22:688  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_3
+15:11:22:693  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_6
+15:11:22:694  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_7
+15:11:22:695  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_6
+15:11:22:695  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_7
+15:11:22:696  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_10
+15:11:22:696  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_11
+15:11:22:697  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_1
+15:11:22:697  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: refreshCacheUsingDELETE_2
+15:11:22:697  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: refreshCacheUsingDELETE_3
+15:11:22:698  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_6
+15:11:22:698  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_7
+15:11:22:703  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_6
+15:11:22:703  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_7
+15:11:22:704  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_4
+15:11:22:704  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_5
+15:11:22:705  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingGET_1
+15:11:22:705  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingHEAD_1
+15:11:22:706  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingPOST_1
+15:11:22:706  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingPUT_1
+15:11:22:706  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingPATCH_1
+15:11:22:707  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingDELETE_1
+15:11:22:707  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingOPTIONS_1
+15:11:22:707  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: indexUsingTRACE_1
+15:11:22:709  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_12
+15:11:22:709  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_13
+15:11:22:710  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getRoutersUsingGET_1
+15:11:22:712  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: loginUsingPOST_1
+15:11:22:713  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: loginNoNeedAuthUsingPOST_1
+15:11:22:715  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cleanUsingDELETE_1
+15:11:22:716  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_8
+15:11:22:716  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_9
+15:11:22:717  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: unlockUsingGET_1
+15:11:22:722  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_8
+15:11:22:722  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_9
+15:11:22:723  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_6
+15:11:22:723  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_7
+15:11:22:729  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_8
+15:11:22:729  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_9
+15:11:22:730  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_8
+15:11:22:730  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_9
+15:11:22:731  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_14
+15:11:22:731  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_15
+15:11:22:736  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_10
+15:11:22:737  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_11
+15:11:22:737  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_10
+15:11:22:738  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_11
+15:11:22:739  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: roleMenuTreeselectUsingGET_1
+15:11:22:740  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: treeselectUsingGET_1
+15:11:22:744  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_10
+15:11:22:744  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_11
+15:11:22:745  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_10
+15:11:22:745  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_11
+15:11:22:746  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_16
+15:11:22:746  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_17
+15:11:22:746  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_12
+15:11:22:746  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_13
+15:11:22:751  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_12
+15:11:22:751  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_13
+15:11:22:753  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cleanUsingDELETE_2
+15:11:22:753  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cleanUsingDELETE_3
+15:11:22:754  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_14
+15:11:22:754  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_15
+15:11:22:760  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_14
+15:11:22:760  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_15
+15:11:22:762  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_8
+15:11:22:762  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_9
+15:11:22:765  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_12
+15:11:22:765  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_13
+15:11:22:766  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_12
+15:11:22:766  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_13
+15:11:22:767  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_18
+15:11:22:767  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_19
+15:11:22:767  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_2
+15:11:22:768  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_3
+15:11:22:768  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_16
+15:11:22:768  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_17
+15:11:22:774  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_16
+15:11:22:775  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_17
+15:11:22:776  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_10
+15:11:22:776  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_11
+15:11:22:777  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: avatarUsingPOST_1
+15:11:22:778  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: profileUsingGET_1
+15:11:22:790  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updateProfileUsingPUT_1
+15:11:22:791  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updatePwdUsingPUT_1
+15:11:22:794  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: registerUsingPOST_1
+15:11:22:797  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_14
+15:11:22:798  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_15
+15:11:22:799  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cancelAuthUserUsingPUT_1
+15:11:22:800  WARN 22772 --- [restartedMain] s.d.s.w.r.p.ParameterDataTypeReader      : Trying to infer dataType java.lang.Long[]
+15:11:22:801  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: cancelAuthUserAllUsingPUT_1
+15:11:22:803  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: changeStatusUsingPUT_1
+15:11:22:804  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: dataScopeUsingPUT_1
+15:11:22:805  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deptTreeUsingGET_1
+15:11:22:805  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_14
+15:11:22:806  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_15
+15:11:22:806  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_20
+15:11:22:806  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_21
+15:11:22:807  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_4
+15:11:22:807  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: optionselectUsingGET_5
+15:11:22:808  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_18
+15:11:22:809  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_19
+15:11:22:809  WARN 22772 --- [restartedMain] s.d.s.w.r.p.ParameterDataTypeReader      : Trying to infer dataType java.lang.Long[]
+15:11:22:810  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: selectAuthUserAllUsingPUT_1
+15:11:22:824  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: allocatedListUsingGET_1
+15:11:22:826  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_18
+15:11:22:826  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_19
+15:11:22:829  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: unallocatedListUsingGET_1
+15:11:22:831  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_12
+15:11:22:831  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_13
+15:11:22:834  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_16
+15:11:22:834  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addUsingPOST_17
+15:11:22:835  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: authRoleUsingGET_1
+15:11:22:836  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: changeStatusUsingPUT_2
+15:11:22:836  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: changeStatusUsingPUT_3
+15:11:22:838  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deptTreeUsingGET_2
+15:11:22:838  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deptTreeUsingGET_3
+15:11:22:839  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_16
+15:11:22:839  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: editUsingPUT_17
+15:11:22:840  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_22
+15:11:22:841  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_23
+15:11:22:841  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_24
+15:11:22:841  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getInfoUsingGET_25
+15:11:22:842  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: importDataUsingPOST_1
+15:11:22:843  WARN 22772 --- [restartedMain] s.d.s.w.r.p.ParameterDataTypeReader      : Trying to infer dataType java.lang.Long[]
+15:11:22:843  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: insertAuthRoleUsingPUT_1
+15:11:22:843  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_20
+15:11:22:843  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeUsingDELETE_21
+15:11:22:845  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: resetPwdUsingPUT_1
+15:11:22:847  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_20
+15:11:22:848  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_21
+15:11:22:850  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_14
+15:11:22:850  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: exportUsingPOST_15
+15:11:22:851  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: importTemplateUsingPOST_1
+15:11:22:853  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: forceLogoutUsingDELETE_1
+15:11:22:853  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_22
+15:11:22:854  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listUsingGET_23
+15:11:22:863  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getUserUsingGET_1
+15:11:22:865  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteUsingDELETE_1
+15:11:22:871  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveUsingPOST_8
+15:11:22:871  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveUsingPOST_9
+15:11:22:874  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: updateUsingPUT_1
+15:11:22:876  INFO 22772 --- [restartedMain] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: userListUsingGET_1
+15:11:22:881  INFO 22772 --- [restartedMain] o.s.s.quartz.SchedulerFactoryBean        : Starting Quartz Scheduler now
+15:11:22:881  INFO 22772 --- [restartedMain] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED started.
+15:11:22:893  INFO 22772 --- [restartedMain] com.zksy.ZksyApplication                 : Started ZksyApplication in 14.416 seconds (JVM running for 16.078)
+15:11:22:903  INFO 22772 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=pipe-network-service.yaml, group=DEFAULT_GROUP
+15:11:22:905  INFO 22772 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=pipe-network-service-dev.yaml, group=DEFAULT_GROUP
+15:11:22:906  INFO 22772 --- [restartedMain] c.a.c.n.refresh.NacosContextRefresher    : [Nacos Config] Listening config: dataId=pipe-network-service, group=DEFAULT_GROUP
+15:17:39:639  WARN 22772 --- [Thread-4] c.a.n.common.http.HttpClientBeanHolder   : [HttpClientBeanHolder] Start destroying common HttpClient
+15:17:39:639  WARN 22772 --- [Thread-8] c.a.nacos.common.notify.NotifyCenter     : [NotifyCenter] Start destroying Publisher
+15:17:39:640  WARN 22772 --- [Thread-8] c.a.nacos.common.notify.NotifyCenter     : [NotifyCenter] Destruction of the end
+15:17:39:640  WARN 22772 --- [Thread-4] c.a.n.common.http.HttpClientBeanHolder   : [HttpClientBeanHolder] Destruction of the end
+15:17:39:644  INFO 22772 --- [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED paused.
+15:17:40:109  INFO 22772 --- [SpringApplicationShutdownHook] c.a.c.n.registry.NacosServiceRegistry    : De-registering from Nacos Server now...
+15:17:40:115  INFO 22772 --- [SpringApplicationShutdownHook] c.a.c.n.registry.NacosServiceRegistry    : De-registration finished.
+15:17:40:462  INFO 22772 --- [SpringApplicationShutdownHook] com.alibaba.nacos.common.remote.client   : Shutdown rpc client, set status to shutdown
+15:17:40:464  INFO 22772 --- [SpringApplicationShutdownHook] com.alibaba.nacos.common.remote.client   : Shutdown client event executor java.util.concurrent.ScheduledThreadPoolExecutor@774c4294[Running, pool size = 2, active threads = 2, queued tasks = 0, completed tasks = 0]
+15:17:40:464  INFO 22772 --- [SpringApplicationShutdownHook] com.alibaba.nacos.common.remote.client   : Close current connection 1761030681642_192.168.110.126_58590
+15:17:40:470  INFO 22772 --- [nacos-grpc-client-executor-84] c.a.n.c.remote.client.grpc.GrpcClient    : [1761030681642_192.168.110.126_58590]Ignore complete event,isRunning:false,isAbandon=false
+15:17:40:477  INFO 22772 --- [SpringApplicationShutdownHook] c.a.n.c.remote.client.grpc.GrpcClient    : Shutdown grpc executor java.util.concurrent.ThreadPoolExecutor@43c29360[Running, pool size = 5, active threads = 0, queued tasks = 0, completed tasks = 85]
+15:17:40:486  INFO 22772 --- [SpringApplicationShutdownHook] o.s.s.quartz.SchedulerFactoryBean        : Shutting down Quartz Scheduler
+15:17:40:486  INFO 22772 --- [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED shutting down.
+15:17:40:486  INFO 22772 --- [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED paused.
+15:17:40:487  INFO 22772 --- [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler          : Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete.
+15:17:40:487  INFO 22772 --- [SpringApplicationShutdownHook] sys-user                                 : ====关闭后台任务任务线程池====
+15:17:40:491  WARN 22772 --- [SpringApplicationShutdownHook] .s.c.a.CommonAnnotationBeanPostProcessor : Destroy method on bean with name 'shutdownManager' threw an exception: java.lang.ExceptionInInitializerError
+15:17:40:494  INFO 22772 --- [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closing ...
+15:17:40:536  INFO 22772 --- [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closed

+ 91 - 0
manhole-service/pom.xml

@@ -0,0 +1,91 @@
+<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.zksy</groupId>
+        <artifactId>pipe-ner-server</artifactId>
+        <version>1.0.0</version>
+    </parent>
+    <artifactId>manhole-service</artifactId>
+<!--    <groupId>com.zksy.manhole</groupId>-->
+    <properties>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <!--common-->
+        <dependency>
+            <groupId>com.zksy</groupId>
+            <artifactId>zk-common</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.zksy</groupId>
+            <artifactId>zksy-common</artifactId>
+            <version>3.9.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <!--数据库-->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <!--mybatis-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.5.5</version>
+        </dependency>
+        <!--nacos 服务注册发现-->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+        <!--负载均衡-->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
+        </dependency>
+        <!--统一配置管理-->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+        <!--加载bootstrap-->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-bootstrap</artifactId>
+        </dependency>
+        <!--redis-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+        <!--sentinel-->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+        </dependency>
+        <!--netty依赖-->
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 16 - 0
manhole-service/src/main/java/com/zksy/manhole/ManholeApplication.java

@@ -0,0 +1,16 @@
+package com.zksy.manhole;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+@SpringBootApplication
+@MapperScan(basePackages = "com.zksy.manhole.mapper")
+@EnableScheduling
+public class ManholeApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(ManholeApplication.class, args);
+        System.out.println("井盖服务启动成功");
+    }
+}

+ 45 - 0
manhole-service/src/main/java/com/zksy/manhole/config/NettyServer.java

@@ -0,0 +1,45 @@
+package com.zksy.manhole.config;
+
+import io.netty.channel.EventLoopGroup;
+import io.netty.channel.socket.SocketChannel;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+
+@Slf4j
+@Component
+public class NettyServer {
+
+	private static Logger logger = LoggerFactory.getLogger(NettyServer.class);
+
+	// 保存客户端连接的通道引用
+	public static SocketChannel sc = null;
+
+	public static EventLoopGroup acceptor;
+	public static EventLoopGroup worker;
+
+	@Autowired
+	private NettyServerThread nettyServerThread;
+
+	@PostConstruct
+	public void init() {
+		new Thread(() -> nettyServerThread.startServer()).start();
+		System.out.println("nettyServer启动");
+		logger.info("nettyServer启动");
+	}
+
+	@PreDestroy
+	public void exit() {
+		if (acceptor != null) {
+			acceptor.shutdownGracefully();
+		}
+		if (worker != null) {
+			worker.shutdownGracefully();
+		}
+	}
+}

+ 75 - 0
manhole-service/src/main/java/com/zksy/manhole/config/NettyServerThread.java

@@ -0,0 +1,75 @@
+package com.zksy.manhole.config;
+
+import com.zksy.manhole.utils.MessageHandler;
+import io.netty.bootstrap.ServerBootstrap;
+import io.netty.channel.ChannelFuture;
+import io.netty.channel.ChannelInitializer;
+import io.netty.channel.ChannelOption;
+import io.netty.channel.EventLoopGroup;
+import io.netty.channel.nio.NioEventLoopGroup;
+import io.netty.channel.socket.SocketChannel;
+import io.netty.channel.socket.nio.NioServerSocketChannel;
+import io.netty.handler.timeout.IdleStateHandler;
+import io.netty.handler.timeout.ReadTimeoutHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.TimeUnit;
+
+@Slf4j
+@Component
+public class NettyServerThread {
+	@Value("${netty.port:20011}")
+	private int port;
+	private static Logger logger = LoggerFactory.getLogger(NettyServerThread.class);
+
+	public void startServer() {
+		System.out.println("Netty服务启动端口号" + port);
+		EventLoopGroup acceptor = new NioEventLoopGroup();
+		EventLoopGroup worker = new NioEventLoopGroup();
+		NettyServer.acceptor = acceptor;
+		NettyServer.worker = worker;
+		ServerBootstrap bootstrap = new ServerBootstrap();
+
+		// 添加boss和worker组
+		bootstrap.group(acceptor, worker);
+		//这句是指定允许等待accept的最大连接数量,我只需要连一个客户端,这里就关掉了,java默认是50个
+		// bootstrap.option(ChannelOption.SO_BACKLOG, 1024);
+		bootstrap.option(ChannelOption.TCP_NODELAY, true);
+		// 用于构造socketchannel工厂
+		bootstrap.channel(NioServerSocketChannel.class);
+
+		/**
+		 * 传入自定义客户端Handle(处理消息)
+		 */
+		bootstrap.childHandler(new ChannelInitializer<SocketChannel>() {
+			@Override
+			public void initChannel(SocketChannel ch) throws Exception {
+				logger.info("来自" + ch.remoteAddress() + "的新连接接入");
+				// 注册handler
+				ch.pipeline().addLast(new ReadTimeoutHandler(10));// 超时时间,10s内没有从通道(Channel)读取到任何数据
+				ch.pipeline().addLast(new MessageHandler());
+			}
+		});
+
+		// 绑定端口,开始接收进来的连接
+		ChannelFuture f;
+		try {
+			f = bootstrap.bind(port).sync();
+			// 等待服务器 socket 关闭 。
+			f.channel().closeFuture().sync();
+		} catch (InterruptedException e) {
+			e.printStackTrace();
+		} finally {
+			if (acceptor != null) {
+				acceptor.shutdownGracefully();
+			}
+			if (worker != null) {
+				worker.shutdownGracefully();
+			}
+		}
+	}
+}

+ 14 - 0
manhole-service/src/main/java/com/zksy/manhole/config/RestTemplateConfig.java

@@ -0,0 +1,14 @@
+package com.zksy.manhole.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.client.RestTemplate;
+
+@Configuration
+public class RestTemplateConfig {
+
+    @Bean
+    public RestTemplate restTemplate() {
+        return new RestTemplate();
+    }
+}

+ 96 - 0
manhole-service/src/main/java/com/zksy/manhole/domain/BaseDevices.java

@@ -0,0 +1,96 @@
+package com.zksy.manhole.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 设备基础信息
+ * @TableName base_devices
+ */
+@TableName(value ="equipment_base")
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "设备基础信息")
+public class BaseDevices implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "equipment_id", type = IdType.ASSIGN_UUID)
+    @ApiModelProperty(value = "主键")
+    /**
+     * 设备唯一ID(主键)
+     */
+    private String equipmentId;
+
+    /**
+     * 设备编码(唯一标识)
+     */
+    @ApiModelProperty(value = "设备编码")
+    private String equipmentCode;
+
+    /**
+     * 设备名称
+     */
+    @ApiModelProperty(value = "设备名称")
+    private String equipmentName;
+
+    /**
+     * 设备型号
+     */
+    @ApiModelProperty(value = "设备型号")
+    private String equipmentModel;
+
+    /**
+     * 设备规格参数
+     */
+    @ApiModelProperty(value = "设备规格参数")
+    private String equipmentSpec;
+
+    /**
+     * 设备制造商
+     */
+    @ApiModelProperty(value = "设备制造商")
+    private String manufacturer;
+
+    /**
+     * 设备生产日期
+     */
+    @ApiModelProperty(value = "设备生产日期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+//    private LocalDateTime productionDate;
+    private Date productionDate;
+
+    /**
+     * 设备类别ID(关联equipment_type表)
+     */
+    @ApiModelProperty(value = "设备类别ID")
+    private String equipmentTypeId;
+
+    /**
+     * 设备资产价值(元)
+     */
+    @ApiModelProperty(value = "设备资产价值")
+    private Double assetValue;
+
+    /**
+     * 预计使用年限(年)
+     */
+    @ApiModelProperty(value = "预计使用年限")
+    private Integer useLife;
+
+    /**
+     * 备注信息
+     */
+    @ApiModelProperty(value = "备注信息")
+    private String remark;
+}

+ 75 - 0
manhole-service/src/main/java/com/zksy/manhole/domain/EquipmentStatus.java

@@ -0,0 +1,75 @@
+package com.zksy.manhole.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 设备状态表
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("equipment_status")
+public class EquipmentStatus {
+
+    @TableId(value = "status_id", type = IdType.ASSIGN_UUID)
+    /**
+     * 状态记录ID(主键)
+     */
+    private String statusId;
+
+    /**
+     * 设备ID(关联equipment_base表)
+     */
+    private String equipmentId;
+
+    /**
+     * 设备当前状态:1-在用,2-闲置,3-维修,4-报废,5-待入库
+     */
+    private Integer currentStatus;
+
+    /**
+     * 报警状态(0-正常,1-报警)
+     */
+    private Integer alarmStatus;
+
+    /**
+     * 在线状态(0-离线,1-在线)
+     */
+    private Integer onlineStatus;
+
+    /**
+     * 负责人ID(可关联用户表)
+     */
+    private Long userId;
+
+    /**
+     * 安装/存放地址
+     */
+    private String installationAddr;
+
+    /**
+     * 最后一次维护日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date lastMaintainDate;
+
+    /**
+     * 下次预计维护日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date nextMaintainDate;
+
+    /**
+     * 状态更新时间
+     */
+    private LocalDateTime statusUpdateTime;
+}

+ 69 - 0
manhole-service/src/main/java/com/zksy/manhole/domain/ManholeData.java

@@ -0,0 +1,69 @@
+package com.zksy.manhole.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+@Data
+@TableName("jg_device_data")
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "读取井盖数据")
+public class ManholeData {
+
+    @ApiModelProperty(value = "主键")
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    @ApiModelProperty(value = "版本号")
+    private String versionNumber;
+
+    @ApiModelProperty(value = "电池电量")
+    private String batteryLevel;
+
+    @ApiModelProperty(value = "上传时间")
+    private String uploadTime;
+
+    @ApiModelProperty(value = "温度值")
+    private String temperatureValue;
+
+    @ApiModelProperty(value = "信号量")
+    private String signalStrength;
+
+    @ApiModelProperty(value = "报警状态(0正常,1报警)")
+    private String alarmStatus;
+
+    @ApiModelProperty(value = "角度报警阈值")
+    private String angleAlarmThreshold;
+
+    @ApiModelProperty(value = "倾斜角度")
+    private String tiltAngle;
+
+    @ApiModelProperty(value = "激活状态")
+    private String activationStatus;
+
+    @ApiModelProperty(value = "水浸报警状态(0正常,1报警)")
+    private String waterInfiltrationAlarmStatus;
+
+    @ApiModelProperty(value = "水位报警状态(0正常,1报警)")
+    private String waterLevelAlarmStatus;
+
+    @ApiModelProperty(value = "SIM 卡号")
+    private String simCardNumber;
+
+    @ApiModelProperty(value = "IMEI 卡号")
+    private String imeiCardNumber;
+
+    @ApiModelProperty(value = "原始数据")
+    private String originalData;
+
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+}

+ 21 - 0
manhole-service/src/main/java/com/zksy/manhole/mapper/BaseDevicesMapper.java

@@ -0,0 +1,21 @@
+package com.zksy.manhole.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zksy.manhole.domain.BaseDevices;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @author Administrator
+* @description 针对表【base_devices(设备基础信息)】的数据库操作Mapper
+* @createDate 2025-03-13 11:50:13
+* @Entity com.zksy.basicData.domain.BaseDevices
+*/
+@Mapper
+public interface BaseDevicesMapper extends BaseMapper<BaseDevices> {
+
+}
+
+
+
+

+ 9 - 0
manhole-service/src/main/java/com/zksy/manhole/mapper/EquipmentStatusMapper.java

@@ -0,0 +1,9 @@
+package com.zksy.manhole.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zksy.manhole.domain.EquipmentStatus;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface EquipmentStatusMapper extends BaseMapper<EquipmentStatus> {
+}

+ 9 - 0
manhole-service/src/main/java/com/zksy/manhole/mapper/ManholeDataMapper.java

@@ -0,0 +1,9 @@
+package com.zksy.manhole.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zksy.manhole.domain.ManholeData;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ManholeDataMapper extends BaseMapper<ManholeData> {
+}

+ 15 - 0
manhole-service/src/main/java/com/zksy/manhole/service/BaseDevicesService.java

@@ -0,0 +1,15 @@
+package com.zksy.manhole.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zksy.manhole.domain.BaseDevices;
+
+/**
+* @author Administrator
+* @description 针对表【base_devices(设备基础信息)】的数据库操作Service
+* @createDate 2025-03-13 11:50:13
+*/
+public interface BaseDevicesService extends IService<BaseDevices> {
+
+    void getByDeviceNumberStatus(String deviceNumber,Integer queryStatus,Integer updateStatus);
+}

+ 9 - 0
manhole-service/src/main/java/com/zksy/manhole/service/EquipmentStatusService.java

@@ -0,0 +1,9 @@
+package com.zksy.manhole.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zksy.manhole.domain.EquipmentStatus;
+import org.springframework.stereotype.Service;
+
+@Service
+public interface EquipmentStatusService extends IService<EquipmentStatus> {
+}

+ 10 - 0
manhole-service/src/main/java/com/zksy/manhole/service/ManholeDataService.java

@@ -0,0 +1,10 @@
+package com.zksy.manhole.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zksy.manhole.domain.ManholeData;
+
+import java.util.List;
+
+public interface ManholeDataService extends IService<ManholeData> {
+    public Integer saveManholeData(ManholeData result);
+}

+ 57 - 0
manhole-service/src/main/java/com/zksy/manhole/service/impl/BaseDevicesServiceImpl.java

@@ -0,0 +1,57 @@
+package com.zksy.manhole.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import com.zksy.common.exception.ServiceException;
+import com.zksy.manhole.domain.BaseDevices;
+import com.zksy.manhole.domain.EquipmentStatus;
+import com.zksy.manhole.mapper.BaseDevicesMapper;
+import com.zksy.manhole.mapper.EquipmentStatusMapper;
+import com.zksy.manhole.service.BaseDevicesService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+* @author Administrator
+* @description 针对表【base_devices(设备基础信息)】的数据库操作Service实现
+* @createDate 2025-03-13 11:50:13
+*/
+@Service
+public class BaseDevicesServiceImpl extends ServiceImpl<BaseDevicesMapper, BaseDevices> implements BaseDevicesService {
+
+    @Autowired
+    private BaseDevicesMapper baseDevicesMapper;
+
+    @Autowired
+    private EquipmentStatusMapper equipmentStatusMapper;
+
+    @Override
+    public void getByDeviceNumberStatus(String deviceNumber,Integer queryStatus,Integer updateStatus) {
+        LambdaQueryWrapper<BaseDevices> wrapper = new LambdaQueryWrapper<>();
+        //设备编号
+        wrapper.eq(BaseDevices::getEquipmentCode, deviceNumber);
+        //根据设备编号获取到设备id
+        BaseDevices device = baseDevicesMapper.selectOne(wrapper);
+        if(device==null){
+            throw new ServiceException("设备不存在");
+        }
+        //在线状态,从状态表中获取
+        String deviceEquipmentId = device.getEquipmentId();
+        LambdaQueryWrapper<EquipmentStatus> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(EquipmentStatus::getEquipmentId,deviceEquipmentId);
+        queryWrapper.eq(EquipmentStatus::getOnlineStatus,queryStatus);
+
+        EquipmentStatus equipmentStatus = equipmentStatusMapper.selectOne(queryWrapper);
+
+        //修改状态表
+        if(equipmentStatus != null){
+            equipmentStatus.setOnlineStatus(updateStatus);
+            equipmentStatusMapper.updateById(equipmentStatus);
+        }
+    }
+}
+
+
+
+

+ 12 - 0
manhole-service/src/main/java/com/zksy/manhole/service/impl/EquipmentStatusServiceImpl.java

@@ -0,0 +1,12 @@
+package com.zksy.manhole.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zksy.manhole.domain.EquipmentStatus;
+import com.zksy.manhole.mapper.EquipmentStatusMapper;
+import com.zksy.manhole.service.EquipmentStatusService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class EquipmentStatusServiceImpl extends ServiceImpl<EquipmentStatusMapper, EquipmentStatus>
+        implements EquipmentStatusService {
+}

+ 57 - 0
manhole-service/src/main/java/com/zksy/manhole/service/impl/ManholeDataServiceImpl.java

@@ -0,0 +1,57 @@
+package com.zksy.manhole.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zksy.manhole.domain.BaseDevices;
+import com.zksy.manhole.domain.ManholeData;
+import com.zksy.manhole.mapper.BaseDevicesMapper;
+import com.zksy.manhole.mapper.ManholeDataMapper;
+import com.zksy.manhole.service.BaseDevicesService;
+import com.zksy.manhole.service.ManholeDataService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author Administrator
+ * @version 1.0
+ * @project dh-server-micro
+ * @description
+ * @date 2025/2/20 10:55:03
+ */
+@Service
+public class ManholeDataServiceImpl extends ServiceImpl<ManholeDataMapper, ManholeData> implements ManholeDataService {
+    @Autowired
+    private ManholeDataMapper manholeDataMapper;
+    @Autowired
+    private BaseDevicesService baseDevicesService;
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Value("${websocket.url:http://127.0.0.1:8103}")
+    private String BASE_URL;
+    @Override
+    public Integer saveManholeData(ManholeData result) {
+        Integer resultData = manholeDataMapper.insert(result);
+        // 更新设备状态为在线
+        baseDevicesService.getByDeviceNumberStatus(result.getImeiCardNumber(),0,1);
+
+        /*if(resultData > 0 && Integer.parseInt(result.getTiltAngle()) > 60) {
+            String url = BASE_URL + "/push/pushAll?msg=" + result.getTiltAngle();
+            try {
+                // 调用目标接口并获取响应实体
+                ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
+                System.out.println("webSocket响应:" + response.getBody());
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }*/
+        return resultData;
+    }
+}

+ 58 - 0
manhole-service/src/main/java/com/zksy/manhole/utils/DataCheckUtil.java

@@ -0,0 +1,58 @@
+package com.zksy.manhole.utils;
+
+/**
+ * @Description
+ * @Date 2025- 03-06-上午 9:02
+ * @auther tuDouSi
+ */
+public class DataCheckUtil {
+    /**
+     *
+     * @description: crc16校验,输入一个数据,返回一个数组.
+     * @param str
+     * @return 返回两个校验码,低字节在前,高字节在后
+     *
+     */
+    public static String crc16(String str) {
+        int[] data = hexStringToIntArray(str);
+        int xda, xdapoly;
+        int i, j, xdabit;
+        xda = 0xFFFF;
+        xdapoly = 0xA001;
+        for (i = 0; i < data.length; i++) {
+            xda ^= data[i];
+            for (j = 0; j < 8; j++) {
+                xdabit = (int) (xda & 0x01);
+                xda >>= 1;
+                if (xdabit == 1) {
+                    xda ^= xdapoly;
+                }
+            }
+        }
+        byte[] temdata = new byte[2];
+        temdata[0] = (byte) (xda & 0xFF);
+        temdata[1] = (byte) (xda >> 8);
+        return bytesToHexString(temdata);
+    }
+    // 将十六进制字符串转换为整数数组
+    private static int[] hexStringToIntArray(String str) {
+        if (str.length() % 2 != 0) {
+            throw new IllegalArgumentException("Hex string length must be even");
+        }
+
+        int[] result = new int[str.length() / 2];
+        for (int i = 0; i < str.length(); i += 2) {
+            result[i / 2] = Integer.parseInt(str.substring(i, i + 2), 16);
+        }
+        return result;
+    }
+
+    // 将字节数组转换为十六进制字符串
+    private static String bytesToHexString(byte[] bytes) {
+        StringBuilder sb = new StringBuilder();
+        for (byte b : bytes) {
+            sb.append(String.format("%02X", b));
+        }
+        return sb.toString();
+    }
+}

+ 83 - 0
manhole-service/src/main/java/com/zksy/manhole/utils/DataParser.java

@@ -0,0 +1,83 @@
+package com.zksy.manhole.utils;
+
+import com.zksy.manhole.domain.ManholeData;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Slf4j
+public class DataParser {
+    private static Logger logger = LoggerFactory.getLogger(DataParser.class);
+
+    public static ManholeData parseMessage(String msgString) {
+        ManholeData result = new ManholeData();
+        try {
+            List<String> dataParts = new ArrayList<>();
+            for (int i = 0; i < msgString.length(); i += 2) {
+                int end = Math.min(i + 2, msgString.length());
+                dataParts.add(msgString.substring(i, end));
+            }
+            getStringList(dataParts,7);
+            String res1 = getStringList(dataParts,2);
+            result.setVersionNumber(String.valueOf(Integer.parseInt(res1, 16)));
+            String res2 = getStringList(dataParts,2);
+            result.setBatteryLevel(String.valueOf(Integer.parseInt(res2, 16)));
+            String res3 = getStringList(dataParts,2);
+            result.setUploadTime(String.valueOf(Integer.parseInt(res3, 16)));
+            String res4 = getStringList(dataParts,4);
+            result.setTemperatureValue(String.valueOf(Integer.parseInt(res4, 16)));
+            String res5 = getStringList(dataParts,2);
+            result.setSignalStrength(String.valueOf(Integer.parseInt(res5, 16)));
+            String res6 = getStringList(dataParts,2);
+            result.setAlarmStatus(String.valueOf(Integer.parseInt(res6, 16)));
+            String res7 = getStringList(dataParts,4);
+            result.setAngleAlarmThreshold(String.valueOf(Integer.parseInt(res7, 16)));
+            String res8 = getStringList(dataParts,4);
+            result.setTiltAngle(String.valueOf(Integer.parseInt(res8, 16)));
+            String res9 = getStringList(dataParts,2);
+            result.setActivationStatus(String.valueOf(Integer.parseInt(res9, 16)));
+            String res10 = getStringList(dataParts,2);
+            result.setWaterInfiltrationAlarmStatus(String.valueOf(Integer.parseInt(res10, 16)));
+            String res11 = getStringList(dataParts,2);
+            result.setWaterLevelAlarmStatus(String.valueOf(Integer.parseInt(res11, 16)));
+            String res12 = getStringList(dataParts,20);
+            result.setSimCardNumber(hexToAscii(res12));
+            String res13 = getStringList(dataParts,15);
+            result.setImeiCardNumber(hexToAscii(res13));
+            result.setOriginalData(msgString);
+            result.setCreateTime(new Date());
+
+        } catch (Exception e) {
+            logger.error("解析消息时出错", e);
+        }
+        return result;
+    }
+    // 十六进制转 ASCII 码的方法
+    public static String hexToAscii(String hex) {
+        StringBuilder ascii = new StringBuilder();
+        for (int i = 0; i < hex.length(); i += 2) {
+            String str = hex.substring(i, i + 2);
+            ascii.append((char) Integer.parseInt(str, 16));
+        }
+        return ascii.toString();
+    }
+    public static String shiftFromList(List<String> list) {
+        if (list == null || list.isEmpty()) {
+            return null; // 或者抛出异常,根据需求决定
+        }
+        return list.remove(0);
+    }
+
+    private static String getStringList(List<String> dataParts,Integer q) {
+        StringBuilder res1 = new StringBuilder();
+        for (int i = 0; i < q; i++) {
+            res1.append(shiftFromList(dataParts));
+        }
+        return res1.toString();
+    }
+}

+ 37 - 0
manhole-service/src/main/java/com/zksy/manhole/utils/DeviceOfflineCheckTask.java

@@ -0,0 +1,37 @@
+package com.zksy.manhole.utils;
+
+import com.zksy.manhole.service.BaseDevicesService;
+import com.zksy.manhole.service.ManholeDataService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+public class DeviceOfflineCheckTask {
+    private static final Logger logger = LoggerFactory.getLogger(DeviceOfflineCheckTask.class);
+
+    // 用于存储设备编号及其最后一次接收数据的时间
+    public static Map<String, Date> deviceLastReceiveTimeMap = new HashMap<>();
+    @Autowired
+    private BaseDevicesService baseDevicesService;
+
+    // 定时检查设备是否离线
+    @Scheduled(fixedRate = 24 * 60 * 60 * 1000) // 每24小时执行一次
+    public void checkDeviceOffline() {
+        Date now = new Date();
+        for (Map.Entry<String, Date> entry : deviceLastReceiveTimeMap.entrySet()) {
+            long diff = now.getTime() - entry.getValue().getTime();
+            // 如果设备在 23 小时内没有接收数据,则认为设备离线
+            if (diff > 23 * 60 * 60 * 1000) {
+                baseDevicesService.getByDeviceNumberStatus(entry.getKey(), 1, 0);
+                logger.info("设备 {} 已离线", entry.getKey());
+            }
+        }
+    }
+}

+ 92 - 0
manhole-service/src/main/java/com/zksy/manhole/utils/MessageHandler.java

@@ -0,0 +1,92 @@
+package com.zksy.manhole.utils;
+
+import com.zksy.common.exception.InvalidMessageException;
+import com.zksy.manhole.domain.ManholeData;
+import com.zksy.manhole.service.ManholeDataService;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.ChannelInboundHandlerAdapter;
+import io.netty.handler.timeout.ReadTimeoutException;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.Date;
+
+@Slf4j
+public class MessageHandler extends ChannelInboundHandlerAdapter {
+	private static Logger logger = LoggerFactory.getLogger(MessageHandler.class);
+
+	@Autowired
+	private ManholeDataService messageParseResultService;
+
+	public MessageHandler() {
+		this.messageParseResultService = SpringContextUtil.getBean(ManholeDataService.class);
+	}
+
+	@Override
+	public void channelRead(ChannelHandlerContext ctx, Object msg) {
+		try {
+			ByteBuf msgByteBuf = (ByteBuf) msg;
+			if (msgByteBuf == null || !msgByteBuf.isReadable()) {
+				logger.warn("接收到无效的消息");
+				return;
+			}
+			logger.info("接收到 {} 字节的数据,来自: {}", msgByteBuf.readableBytes(), ctx.channel().remoteAddress());
+			byte[] msgBytes = new byte[msgByteBuf.readableBytes()];
+			msgByteBuf.readBytes(msgBytes);
+			String result = printHexBinary(msgBytes);
+			String msgString = result.replaceAll("\\s", "");
+			String CRCString = msgString.substring(msgString.length() - 4);
+			String bodyResult = msgString.substring(0, msgString.length() - 4);
+			String codeString = DataCheckUtil.crc16(bodyResult);
+			System.out.println("校验码:" + CRCString + "-----------生成的校验码:" + codeString);
+			if (!CRCString.equals(codeString)) {
+				throw new InvalidMessageException("数据校验不成功");
+			} else {
+				ManholeData resultData = DataParser.parseMessage(msgString);
+				// 更新设备最后一次接收数据的时间
+				String imeiCardNumber = resultData.getImeiCardNumber();
+				DeviceOfflineCheckTask.deviceLastReceiveTimeMap.put(imeiCardNumber, new Date());
+				messageParseResultService.saveManholeData(resultData);
+			}
+		} catch (InvalidMessageException e) {
+			logger.error("数据入库失败: {}", e.getMessage());
+			ctx.writeAndFlush(Unpooled.copiedBuffer("数据入库失败".getBytes()));
+		}
+	}
+
+	private String printHexBinary(byte[] bytes) {
+		StringBuilder sb = new StringBuilder();
+		for (byte b : bytes) {
+			sb.append(String.format("%02X ", b));
+		}
+		System.out.println("Received raw data: " + sb.toString());
+		logger.info("Received raw data: " + sb.toString());
+		return sb.toString();
+	}
+
+	@Override
+	public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
+		if (cause instanceof ReadTimeoutException) {
+			logger.info("来自" + ctx.channel().remoteAddress() + "的连接超时断开");
+		} else {
+			cause.printStackTrace();
+			logger.info("来自" + ctx.channel().remoteAddress() + "的连接异常断开");
+			ctx.close();
+		}
+	}
+
+	@Override
+	public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
+		ctx.flush();
+	}
+
+	@Override
+	public void channelUnregistered(ChannelHandlerContext ctx) throws Exception {
+		logger.info("来自" + ctx.channel().remoteAddress() + "的连接主动断开");
+		ctx.fireChannelUnregistered();
+	}
+}

+ 21 - 0
manhole-service/src/main/java/com/zksy/manhole/utils/SpringContextUtil.java

@@ -0,0 +1,21 @@
+package com.zksy.manhole.utils;
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+@Component
+public class SpringContextUtil implements ApplicationContextAware {
+
+    private static ApplicationContext applicationContext;
+
+    @Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        SpringContextUtil.applicationContext = applicationContext;
+    }
+
+    public static <T> T getBean(Class<T> clazz) {
+        return applicationContext.getBean(clazz);
+    }
+}

+ 17 - 0
manhole-service/src/main/resources/application-dev.yaml

@@ -0,0 +1,17 @@
+zksy:
+  db:
+    host: 192.168.110.30
+    un: root
+    pw: 123
+    port: 3307
+    database: pipe-ner
+spring:
+  redis:
+    host: 192.168.110.30
+    port: 6379
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 192.168.110.30:8848
+      config:
+        server-addr: 192.168.110.30:8848

+ 11 - 0
manhole-service/src/main/resources/application-prod.yaml

@@ -0,0 +1,11 @@
+zksy:
+  db:
+    host: 47.107.107.47
+    un: root
+    pw: d$3%#*(jnhUDGHB]z0x876c~
+    port: 3306
+    database: pipe-ner
+spring:
+  redis:
+    host: 47.107.107.47
+    port: 6379

+ 41 - 0
manhole-service/src/main/resources/bootstrap.yaml

@@ -0,0 +1,41 @@
+spring:
+  application:
+    name: manhole-service
+  profiles:
+    active: dev
+  servlet:
+    multipart:
+      max-file-size: 100MB
+      max-request-size: 100MB
+  main:
+    allow-bean-definition-overriding: true
+  cloud:
+    sentinel:
+      transport:
+#        dashboard: 172.16.102.52:8090
+        dashboard: 192.168.110.30:8090
+      http-method-specify: true
+    nacos:
+      discovery:
+#        server-addr: 172.16.102.52:8848
+#        namespace: 99a7b129-faed-4b32-bcbf-54acd7ffd372
+         server-addr: 192.168.110.30:8848
+         namespace: e9d81ef8-7c78-4ad6-9121-79bb8c0926bd
+      config:
+#        server-addr: 172.16.102.52:8848
+#        namespace: 99a7b129-faed-4b32-bcbf-54acd7ffd372
+        server-addr: 192.168.110.30:8848
+        namespace: e9d81ef8-7c78-4ad6-9121-79bb8c0926bd
+        file-extension: yaml
+        shared-configs:
+          - dataId: manhole-service.yaml
+          - dataId: zksy-shared-jdbc.yaml
+          - dataId: zksy-shared-log.yaml
+device:
+  check:
+    interval: 120000
+websocket:
+  url: http://127.0.0.1:8103
+netty:
+  # 端口号
+  port: 20011

+ 114 - 0
pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/base/EquipmentBaseController.java

@@ -0,0 +1,114 @@
+package com.zksy.web.controller.base;
+
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zksy.base.domain.EquipmentBase;
+import com.zksy.base.service.EquipmentBaseService;
+import com.zksy.common.annotation.Anonymous;
+import com.zksy.common.annotation.Log;
+import com.zksy.common.core.domain.AjaxResult;
+import com.zksy.common.enums.BusinessType;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 设备基础信息
+ */
+@Slf4j
+@RestController
+@RequestMapping("/EquipmentBase")
+public class EquipmentBaseController {
+
+    @Autowired
+    private EquipmentBaseService service;
+
+    @GetMapping("/getById/{id}")
+    @ApiOperation(value = "设备基础信息搜索getById")
+    @Anonymous
+    public AjaxResult getById(@PathVariable String id) {
+        EquipmentBase equipmentBase = service.getById(id);
+        if(equipmentBase==null){
+            return AjaxResult.error("该设备信息不存在");
+        }
+        return AjaxResult.success(equipmentBase);
+    }
+
+    //TODO 待优化
+    @Anonymous
+    @GetMapping("/findByPage")
+    @ApiOperation(value = "设备基础信息分页")
+    public Page findByPage(long pageNum, long pageSize,
+                           @RequestParam(required = false)String equipmentCode,
+                           @RequestParam(required = false)String equipmentName,
+                           @RequestParam(required = false)String equipmentModel,
+                           @RequestParam(required = false)String manufacturer) throws Exception {
+        return service.findByPage(pageNum, pageSize, equipmentCode,equipmentName,equipmentModel,manufacturer);
+    }
+
+    @Anonymous
+    @GetMapping("/getList")
+    @ApiOperation(value = "查询所有设备基础信息")
+    public AjaxResult getList() throws Exception {
+        return AjaxResult.success(service.list());
+    }
+
+    @Anonymous
+    @PostMapping("/save")
+    @ApiOperation(value = "新增设备基础信息")
+    @Log(title = "新增设备基础信息", businessType = BusinessType.INSERT)
+    public AjaxResult save(@RequestBody EquipmentBase entity) {
+        boolean saved = service.saveWithCheck(entity);
+        return saved ? AjaxResult.success("新增成功",saved)
+                : AjaxResult.error("新增失败",saved);
+    }
+
+    @Anonymous
+    @PostMapping("/saveBatch")
+    @ApiOperation(value = "设备基础信息批量新增")
+    @Log(title = "批量新增设备基础信息", businessType = BusinessType.INSERT)
+    public AjaxResult saveBatch(@RequestBody List<EquipmentBase> entityList) {
+        // 基础校验:列表不能为空
+        if (CollectionUtils.isEmpty(entityList)) {
+            return AjaxResult.error("批量新增失败:设备列表不能为空");
+        }
+
+        boolean saved = service.saveBatchWithCheck(entityList);
+        return saved ? AjaxResult.success("新增成功",saved)
+                : AjaxResult.error("新增失败",saved);
+    }
+
+    @Anonymous
+    @PutMapping("/updateById")
+    @ApiOperation(value = "设备基础信息修改")
+    @Log(title = "修改设备基础信息", businessType = BusinessType.UPDATE)
+    public AjaxResult updateById(@RequestBody EquipmentBase entity) {
+        boolean updated = service.updateWithCheck(entity);
+        return updated ? AjaxResult.success("修改成功",updated)
+                : AjaxResult.error("修改失败",updated);
+    }
+
+    @Anonymous
+    @DeleteMapping("/deleteById")
+    @ApiOperation(value = "设备基础信息删除")
+    @Log(title = "删除设备基础信息", businessType = BusinessType.DELETE)
+    public AjaxResult deleteById(String id) {
+        boolean deleted = service.removeWithCheck(id);
+        return deleted ? AjaxResult.success("删除成功",deleted)
+                : AjaxResult.error("删除失败",deleted);
+    }
+
+    @Anonymous
+    @DeleteMapping("/deleteBatchById")
+    @ApiOperation(value = "设备基础信息批量删除")
+    @Log(title = "设备基础信息批量删除", businessType = BusinessType.DELETE)
+    public AjaxResult deleteBatchById(@RequestParam List<String> ids) {
+        boolean deleted = service.removeBatchWithCheck(ids);
+        return deleted ? AjaxResult.success("删除成功",deleted)
+                : AjaxResult.error("删除失败",deleted);
+    }
+}

+ 104 - 0
pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/base/EquipmentMaintainController.java

@@ -0,0 +1,104 @@
+package com.zksy.web.controller.base;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zksy.base.domain.EquipmentMaintain;
+import com.zksy.base.service.EquipmentMaintainService;
+import com.zksy.common.annotation.Log;
+import com.zksy.common.core.domain.AjaxResult;
+import com.zksy.common.enums.BusinessType;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 设备维护记录
+ */
+@Slf4j
+@RestController
+@RequestMapping("/EquipmentMaintain")
+public class EquipmentMaintainController {
+
+    @Autowired
+    private EquipmentMaintainService service;
+
+    @GetMapping("/getById/{id}")
+    @ApiOperation(value = "设备维护记录搜索getById")
+    public AjaxResult getById(@PathVariable String id) {
+        EquipmentMaintain equipmentMaintain = service.getById(id);
+        if(equipmentMaintain==null){
+            return AjaxResult.error("该设备维护记录不存在");
+        }
+        return AjaxResult.success(equipmentMaintain);
+    }
+
+    //TODO 查询条件待完善
+    @GetMapping("/findByPage")
+    @ApiOperation(value = "设备维护记录分页")
+    public Page findByPage(long pageNum, long pageSize,
+                           @RequestParam(required = false)String maintainId,
+                           @RequestParam(required = false)String equipmentId,
+                           @RequestParam(required = false)String maintainType,
+                           @RequestParam(required = false)String maintainPerson) throws Exception {
+        return service.findByPage(pageNum, pageSize, maintainId,equipmentId,maintainType,maintainPerson);
+    }
+
+    @GetMapping("/getList")
+    @ApiOperation(value = "查询所有设备维护记录")
+    public AjaxResult getList() throws Exception {
+        return AjaxResult.success(service.list());
+    }
+
+    @PostMapping("/save")
+    @ApiOperation(value = "新增设备维护记录")
+    @Log(title = "新增设备维护记录", businessType = BusinessType.INSERT)
+    public AjaxResult save(@RequestBody EquipmentMaintain entity) {
+        boolean saved = service.saveWithCheck(entity);
+        return saved ? AjaxResult.success("新增成功",saved)
+                : AjaxResult.error("新增失败",saved);
+    }
+
+    @PostMapping("/saveBatch")
+    @ApiOperation(value = "设备维护记录批量新增")
+    @Log(title = "批量新增设备维护记录", businessType = BusinessType.INSERT)
+    public AjaxResult saveBatch(@RequestBody List<EquipmentMaintain> entityList) {
+        // 基础校验:列表不能为空
+        if (CollectionUtils.isEmpty(entityList)) {
+            return AjaxResult.error("批量新增失败:设备维护记录列表不能为空");
+        }
+
+        boolean saved = service.saveBatchWithCheck(entityList);
+        return saved ? AjaxResult.success("新增成功",saved)
+                : AjaxResult.error("新增失败",saved);
+    }
+
+    @PutMapping("/updateById")
+    @ApiOperation(value = "设备维护记录修改")
+    @Log(title = "修改设备维护记录", businessType = BusinessType.UPDATE)
+    public AjaxResult updateById(@RequestBody EquipmentMaintain entity) {
+        boolean updated = service.updateWithCheck(entity);
+        return updated ? AjaxResult.success("修改成功",updated)
+                : AjaxResult.error("修改失败",updated);
+    }
+
+    @DeleteMapping("/deleteById")
+    @ApiOperation(value = "设备维护记录删除")
+    @Log(title = "删除设备维护记录", businessType = BusinessType.DELETE)
+    public AjaxResult deleteById(String id) {
+        boolean deleted = service.removeById(id);
+        return deleted ? AjaxResult.success("删除成功",deleted)
+                : AjaxResult.error("删除失败",deleted);
+    }
+
+    @DeleteMapping("/deleteBatchById")
+    @ApiOperation(value = "设备维护记录批量删除")
+    @Log(title = "设备维护记录批量删除", businessType = BusinessType.DELETE)
+    public AjaxResult deleteBatchById(@RequestParam List<String> ids) {
+        boolean deleted = service.removeByIds(ids);
+        return deleted ? AjaxResult.success("删除成功",deleted)
+                : AjaxResult.error("删除失败",deleted);
+    }
+}

+ 105 - 0
pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/base/EquipmentStatusController.java

@@ -0,0 +1,105 @@
+package com.zksy.web.controller.base;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zksy.base.domain.EquipmentStatus;
+import com.zksy.base.service.EquipmentStatusService;
+import com.zksy.common.annotation.Log;
+import com.zksy.common.core.domain.AjaxResult;
+import com.zksy.common.enums.BusinessType;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 设备状态
+ */
+@Slf4j
+@RestController
+@RequestMapping("/EquipmentStatus")
+public class EquipmentStatusController {
+
+    @Autowired
+    private EquipmentStatusService service;
+
+    @GetMapping("/getById/{id}")
+    @ApiOperation(value = "设备状态搜索getById")
+    public AjaxResult getById(@PathVariable String id) {
+        EquipmentStatus equipmentStatus = service.getById(id);
+        if(equipmentStatus==null){
+            return AjaxResult.error("该设备状态不存在");
+        }
+        return AjaxResult.success(equipmentStatus);
+    }
+
+    @GetMapping("/findByPage")
+    @ApiOperation(value = "设备状态分页")
+    public Page findByPage(long pageNum, long pageSize,
+                           @RequestParam(required = false) String statusId,
+                           @RequestParam(required = false) String equipmentId,
+                           @RequestParam(required = false) Integer currentStatus,
+                           @RequestParam(required = false) Integer alarmStatus,
+                           @RequestParam(required = false) Integer onlineStatus,
+                           @RequestParam(required = false) Long userId) throws Exception {
+        return service.findByPage(pageNum, pageSize, statusId,equipmentId,currentStatus,alarmStatus,onlineStatus,userId);
+    }
+
+    @GetMapping("/getList")
+    @ApiOperation(value = "查询所有设备状态")
+    public AjaxResult getList() throws Exception {
+        return AjaxResult.success(service.list());
+    }
+
+    @PostMapping("/save")
+    @ApiOperation(value = "新增设备状态")
+    @Log(title = "新增设备状态", businessType = BusinessType.INSERT)
+    public AjaxResult save(@RequestBody EquipmentStatus entity) {
+        boolean saved = service.saveWithCheck(entity);
+        return saved ? AjaxResult.success("新增成功",saved)
+                : AjaxResult.error("新增失败",saved);
+    }
+
+    @PostMapping("/saveBatch")
+    @ApiOperation(value = "设备状态批量新增")
+    @Log(title = "批量新增设备状态", businessType = BusinessType.INSERT)
+    public AjaxResult saveBatch(@RequestBody List<EquipmentStatus> entityList) {
+        // 基础校验:列表不能为空
+        if (CollectionUtils.isEmpty(entityList)) {
+            return AjaxResult.error("批量新增失败:设备状态列表不能为空");
+        }
+
+        boolean saved = service.saveBatchWithCheck(entityList);
+        return saved ? AjaxResult.success("新增成功",saved)
+                : AjaxResult.error("新增失败",saved);
+    }
+
+    @PutMapping("/updateById")
+    @ApiOperation(value = "设备状态修改")
+    @Log(title = "修改设备状态", businessType = BusinessType.UPDATE)
+    public AjaxResult updateById(@RequestBody EquipmentStatus entity) {
+        boolean updated = service.updateWithCheck(entity);
+        return updated ? AjaxResult.success("修改成功",updated)
+                : AjaxResult.error("修改失败",updated);
+    }
+
+    @DeleteMapping("/deleteById")
+    @ApiOperation(value = "设备状态删除")
+    @Log(title = "删除设备状态", businessType = BusinessType.DELETE)
+    public AjaxResult deleteById(String id) {
+        boolean deleted = service.removeById(id);
+        return deleted ? AjaxResult.success("删除成功",deleted)
+                : AjaxResult.error("删除失败",deleted);
+    }
+
+    @DeleteMapping("/deleteBatchById")
+    @ApiOperation(value = "设备状态批量删除")
+    @Log(title = "设备状态批量删除", businessType = BusinessType.DELETE)
+    public AjaxResult deleteBatchById(@RequestParam List<String> ids) {
+        boolean deleted = service.removeByIds(ids);
+        return deleted ? AjaxResult.success("删除成功",deleted)
+                : AjaxResult.error("删除失败",deleted);
+    }
+}

+ 99 - 0
pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/base/EquipmentTypeController.java

@@ -0,0 +1,99 @@
+package com.zksy.web.controller.base;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zksy.base.domain.EquipmentType;
+import com.zksy.base.service.EquipmentTypeService;
+import com.zksy.common.annotation.Log;
+import com.zksy.common.core.domain.AjaxResult;
+import com.zksy.common.enums.BusinessType;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Slf4j
+@RestController
+@RequestMapping("/EquipmentType")
+public class EquipmentTypeController {
+
+    @Autowired
+    private EquipmentTypeService service;
+
+    @GetMapping("/getById/{id}")
+    @ApiOperation(value = "设备类别搜索getById")
+    public AjaxResult getById(@PathVariable String id) {
+        EquipmentType equipmentType = service.getById(id);
+        if(equipmentType==null){
+            return AjaxResult.error("该设备类别不存在");
+        }
+        return AjaxResult.success(equipmentType);
+    }
+
+    @GetMapping("/findByPage")
+    @ApiOperation(value = "设备类别分页")
+    public Page findByPage(long pageNum, long pageSize,
+                           @RequestParam(required = false)String typeId,
+                           @RequestParam(required = false)String typeName,
+                           @RequestParam(required = false)String parentTypeId) throws Exception {
+        return service.findByPage(pageNum, pageSize, typeId,typeName,parentTypeId);
+    }
+
+    @GetMapping("/getList")
+    @ApiOperation(value = "查询所有设备类别")
+    public AjaxResult getList() throws Exception {
+        return AjaxResult.success(service.list());
+    }
+
+    @PostMapping("/save")
+    @ApiOperation(value = "新增设备类别")
+    @Log(title = "新增设备类别", businessType = BusinessType.INSERT)
+    public AjaxResult save(@RequestBody EquipmentType entity) {
+        boolean saved = service.saveWithCheck(entity);
+        return saved ? AjaxResult.success("新增成功",saved)
+                : AjaxResult.error("新增失败",saved);
+    }
+
+    @PostMapping("/saveBatch")
+    @ApiOperation(value = "设备类别批量新增")
+    @Log(title = "批量新增设备类别", businessType = BusinessType.INSERT)
+    public AjaxResult saveBatch(@RequestBody List<EquipmentType> entityList) {
+        // 基础校验:列表不能为空
+        if (CollectionUtils.isEmpty(entityList)) {
+            return AjaxResult.error("批量新增失败:设备类别列表不能为空");
+        }
+
+        boolean saved = service.saveBatchWithCheck(entityList);
+        return saved ? AjaxResult.success("新增成功",saved)
+                : AjaxResult.error("新增失败",saved);
+    }
+
+    @PutMapping("/updateById")
+    @ApiOperation(value = "设备类别修改")
+    @Log(title = "修改设备类别", businessType = BusinessType.UPDATE)
+    public AjaxResult updateById(@RequestBody EquipmentType entity) {
+        boolean updated = service.updateWithCheck(entity);
+        return updated ? AjaxResult.success("修改成功",updated)
+                : AjaxResult.error("修改失败",updated);
+    }
+
+    @DeleteMapping("/deleteById")
+    @ApiOperation(value = "设备类别删除")
+    @Log(title = "删除设备类别", businessType = BusinessType.DELETE)
+    public AjaxResult deleteById(String id) {
+        boolean deleted = service.removeWithCheck(id);
+        return deleted ? AjaxResult.success("删除成功",deleted)
+                : AjaxResult.error("删除失败",deleted);
+    }
+
+    @DeleteMapping("/deleteBatchById")
+    @ApiOperation(value = "设备类别批量删除")
+    @Log(title = "设备类别批量删除", businessType = BusinessType.DELETE)
+    public AjaxResult deleteBatchById(@RequestParam List<String> ids) {
+        boolean deleted = service.removeBatchWithCheck(ids);
+        return deleted ? AjaxResult.success("删除成功",deleted)
+                : AjaxResult.error("删除失败",deleted);
+    }
+}

+ 78 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/domain/EquipmentBase.java

@@ -0,0 +1,78 @@
+package com.zksy.base.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * 设备基础信息表
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("equipment_base")
+public class EquipmentBase {
+
+    @TableId(value = "equipment_id", type = IdType.ASSIGN_UUID)
+    /**
+     * 设备唯一ID(主键)
+     */
+    private String equipmentId;
+
+    /**
+     * 设备编码(唯一标识)
+     */
+    private String equipmentCode;
+
+    /**
+     * 设备名称
+     */
+    private String equipmentName;
+
+    /**
+     * 设备型号
+     */
+    private String equipmentModel;
+
+    /**
+     * 设备规格参数
+     */
+    private String equipmentSpec;
+
+    /**
+     * 设备制造商
+     */
+    private String manufacturer;
+
+    /**
+     * 设备生产日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date productionDate;
+
+    /**
+     * 设备类别ID(关联equipment_type表)
+     */
+    private String equipmentTypeId;
+
+    /**
+     * 设备资产价值(元)
+     */
+    private Double assetValue;
+
+    /**
+     * 预计使用年限(年)
+     */
+    private Integer useLife;
+
+    /**
+     * 备注信息
+     */
+    private String remark;
+}

+ 68 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/domain/EquipmentMaintain.java

@@ -0,0 +1,68 @@
+package com.zksy.base.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * 设备维护记录表
+ */
+@TableName("equipment_maintain")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class EquipmentMaintain {
+
+    @TableId(value = "maintain_id", type = IdType.ASSIGN_UUID)
+    /**
+     * 维护记录ID(主键)
+     */
+    private String maintainId;
+
+    /**
+     * 设备ID(关联equipment_base表)
+     */
+    private String equipmentId;
+
+    /**
+     * 维护类型(日常保养、故障维修、定期检测等)
+     */
+    private String maintainType;
+
+    /**
+     * 维护内容详情
+     */
+    private String maintainContent;
+
+    /**
+     * 维护人
+     */
+    private String maintainPerson;
+
+    /**
+     * 维护人联系方式
+     */
+    private Integer maintainPersonPhone;
+
+    /**
+     * 维护日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date maintainDate;
+
+    /**
+     * 维护费用(元)
+     */
+    private Double maintainCost;
+
+    /**
+     * 维护备注信息
+     */
+    private String maintainRemark;
+}

+ 75 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/domain/EquipmentStatus.java

@@ -0,0 +1,75 @@
+package com.zksy.base.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 设备状态表
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("equipment_status")
+public class EquipmentStatus {
+
+    @TableId(value = "status_id", type = IdType.ASSIGN_UUID)
+    /**
+     * 状态记录ID(主键)
+     */
+    private String statusId;
+
+    /**
+     * 设备ID(关联equipment_base表)
+     */
+    private String equipmentId;
+
+    /**
+     * 设备当前状态:1-在用,2-闲置,3-维修,4-报废,5-待入库
+     */
+    private Integer currentStatus;
+
+    /**
+     * 报警状态(0-正常,1-报警)
+     */
+    private Integer alarmStatus;
+
+    /**
+     * 在线状态(0-离线,1-在线)
+     */
+    private Integer onlineStatus;
+
+    /**
+     * 负责人ID(可关联用户表)
+     */
+    private Long userId;
+
+    /**
+     * 安装/存放地址
+     */
+    private String installationAddr;
+
+    /**
+     * 最后一次维护日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date lastMaintainDate;
+
+    /**
+     * 下次预计维护日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date nextMaintainDate;
+
+    /**
+     * 状态更新时间
+     */
+    private LocalDateTime statusUpdateTime;
+}

+ 39 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/domain/EquipmentType.java

@@ -0,0 +1,39 @@
+package com.zksy.base.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 设备类别表
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("equipment_type")
+public class EquipmentType {
+
+    @TableId(value = "type_id", type = IdType.ASSIGN_UUID)
+    /**
+     * 类别ID(主键)
+     */
+    private String typeId;
+
+    /**
+     * 类别名称(如生产设备、办公设备等)
+     */
+    private String typeName;
+
+    /**
+     * 父类别ID,用于多级分类,0表示无父类
+     */
+    private String parentTypeId;
+
+    /**
+     * 类别备注信息
+     */
+    private String typeRemark;
+}

+ 11 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/mapper/EquipmentBaseMapper.java

@@ -0,0 +1,11 @@
+package com.zksy.base.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zksy.base.domain.EquipmentBase;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface EquipmentBaseMapper extends BaseMapper<EquipmentBase>{
+
+//    EquipmentBase getByIdTest(String id);
+}

+ 9 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/mapper/EquipmentMaintainMapper.java

@@ -0,0 +1,9 @@
+package com.zksy.base.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zksy.base.domain.EquipmentMaintain;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface EquipmentMaintainMapper extends BaseMapper<EquipmentMaintain> {
+}

+ 9 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/mapper/EquipmentStatusMapper.java

@@ -0,0 +1,9 @@
+package com.zksy.base.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zksy.base.domain.EquipmentStatus;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface EquipmentStatusMapper extends BaseMapper<EquipmentStatus> {
+}

+ 9 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/mapper/EquipmentTypeMapper.java

@@ -0,0 +1,9 @@
+package com.zksy.base.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zksy.base.domain.EquipmentType;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface EquipmentTypeMapper extends BaseMapper<EquipmentType> {
+}

+ 53 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/EquipmentBaseService.java

@@ -0,0 +1,53 @@
+package com.zksy.base.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zksy.base.domain.EquipmentBase;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public interface EquipmentBaseService extends IService<EquipmentBase> {
+
+    Page<EquipmentBase> findByPage(long pageNum, long pageSize,
+                                   String equipmentCode,String equipmentName,
+                                   String equipmentModel,String manufacturer);
+
+    /**
+     * 新增仪器信息
+     * @param entity
+     * @return
+     */
+    boolean saveWithCheck(EquipmentBase entity);
+
+    /**
+     * 新增仪器信息
+     * @param entityList
+     * @return
+     */
+    boolean saveBatchWithCheck(List<EquipmentBase> entityList);
+
+    /**
+     * 修改仪器信息
+     * @param entity
+     * @return
+     */
+    boolean updateWithCheck(EquipmentBase entity);
+
+    /**
+     * 删除设备基础信息
+     * @param id
+     * @return
+     */
+    boolean removeWithCheck(String id);
+
+    /**
+     * 设备基础信息批量删除
+     * @param ids
+     * @return
+     */
+    boolean removeBatchWithCheck(List<String> ids);
+
+//    EquipmentBase getByIdTest(String id);
+}

+ 36 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/EquipmentMaintainService.java

@@ -0,0 +1,36 @@
+package com.zksy.base.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zksy.base.domain.EquipmentMaintain;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public interface EquipmentMaintainService extends IService<EquipmentMaintain> {
+    Page<EquipmentMaintain> findByPage(long pageNum, long pageSize,
+                                       String maintainId,String equipmentId,
+                                       String maintainType,String maintainPerson);
+
+    /**
+     * 新增设备维护记录
+     * @param entity
+     * @return
+     */
+    boolean saveWithCheck(EquipmentMaintain entity);
+
+    /**
+     * 批量新增设备维护记录
+     * @param entityList
+     * @return
+     */
+    boolean saveBatchWithCheck(List<EquipmentMaintain> entityList);
+
+    /**
+     * 修改设备维护记录
+     * @param entity
+     * @return
+     */
+    boolean updateWithCheck(EquipmentMaintain entity);
+}

+ 34 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/EquipmentStatusService.java

@@ -0,0 +1,34 @@
+package com.zksy.base.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zksy.base.domain.EquipmentStatus;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public interface EquipmentStatusService extends IService<EquipmentStatus> {
+
+    Page<EquipmentStatus> findByPage(long pageNum, long pageSize, String statusId,String equipmentId,Integer currentStatus,Integer alarmStatus,Integer onlineStatus,Long userId);
+    /**
+     * 批量新增仪器状态
+     * @param entityList
+     * @return
+     */
+    boolean saveBatchWithCheck(List<EquipmentStatus> entityList);
+
+    /**
+     * 新增仪器状态
+     * @param entity
+     * @return
+     */
+    boolean saveWithCheck(EquipmentStatus entity);
+
+    /**
+     * 修改仪器状态
+     * @param entity
+     * @return
+     */
+    boolean updateWithCheck(EquipmentStatus entity);
+}

+ 49 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/EquipmentTypeService.java

@@ -0,0 +1,49 @@
+package com.zksy.base.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zksy.base.domain.EquipmentType;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public interface EquipmentTypeService extends IService<EquipmentType> {
+
+    Page<EquipmentType> findByPage(long pageNum, long pageSize, String typeId,String typeName,String parentTypeId);
+
+    /**
+     * 新增设备类别
+     * @param entity
+     * @return
+     */
+    boolean saveWithCheck(EquipmentType entity);
+
+    /**
+     * 批量新增设备类别
+     * @param entityList
+     * @return
+     */
+    boolean saveBatchWithCheck(List<EquipmentType> entityList);
+
+    /**
+     * 设备类别修改
+     * @param entity
+     * @return
+     */
+    boolean updateWithCheck(EquipmentType entity);
+
+    /**
+     * 设备类别删除
+     * @param id
+     * @return
+     */
+    boolean removeWithCheck(String id);
+
+    /**
+     * 设备类别批量删除
+     * @param ids
+     * @return
+     */
+    boolean removeBatchWithCheck(List<String> ids);
+}

+ 224 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/impl/EquipmentBaseServiceImpl.java

@@ -0,0 +1,224 @@
+package com.zksy.base.service.impl;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zksy.base.domain.EquipmentBase;
+import com.zksy.base.domain.EquipmentMaintain;
+import com.zksy.base.domain.EquipmentStatus;
+import com.zksy.base.domain.EquipmentType;
+import com.zksy.base.mapper.EquipmentBaseMapper;
+import com.zksy.base.mapper.EquipmentMaintainMapper;
+import com.zksy.base.mapper.EquipmentStatusMapper;
+import com.zksy.base.mapper.EquipmentTypeMapper;
+import com.zksy.base.service.EquipmentBaseService;
+import com.zksy.common.exception.ServiceException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+public class EquipmentBaseServiceImpl extends ServiceImpl<EquipmentBaseMapper, EquipmentBase>
+        implements EquipmentBaseService {
+
+    @Autowired
+    private EquipmentTypeMapper equipmentTypeMapper;
+
+    @Autowired
+    private EquipmentMaintainMapper equipmentMaintainMapper;
+
+    @Autowired
+    private EquipmentStatusMapper equipmentStatusMapper;
+
+//    @Autowired
+//    private EquipmentBaseMapper equipmentBaseMapper;
+
+    @Override
+    public Page<EquipmentBase> findByPage(long pageNum, long pageSize,
+                                          String equipmentCode,String equipmentName,
+                                          String equipmentModel,String manufacturer) {
+        Page<EquipmentBase> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<EquipmentBase> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(EquipmentBase::getEquipmentCode,equipmentCode)
+                .eq(EquipmentBase::getEquipmentName,equipmentName)
+                .eq(EquipmentBase::getEquipmentModel,equipmentModel)
+                .eq(EquipmentBase::getManufacturer,manufacturer);
+        return this.page(page,queryWrapper);
+    }
+
+    /**
+     * 新增仪器信息
+     * @param entity
+     * @return
+     */
+    @Override
+    public boolean saveWithCheck(EquipmentBase entity) {
+        String equipmentTypeId = entity.getEquipmentTypeId();
+        EquipmentType equipmentType = equipmentTypeMapper.selectById(equipmentTypeId);
+        if(equipmentType==null){
+            throw new ServiceException("设备类型不存在,请检查equipment_type_id:");
+        }
+        //校验设备编码是否已存在
+        LambdaQueryWrapper<EquipmentBase> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(EquipmentBase::getEquipmentCode, entity.getEquipmentCode());
+        long count = this.count(queryWrapper);
+        if (count > 0) {
+            throw new ServiceException("设备编码已存在,请更换:" + entity.getEquipmentCode());
+        }
+        return this.save(entity);
+    }
+
+    /**
+     * 批量新增
+     * @param entityList
+     * @return
+     */
+    @Override
+    public boolean saveBatchWithCheck(List<EquipmentBase> entityList) {
+
+        //是否有重复编码
+        Set<String> codeSet = new HashSet<>();
+        for (EquipmentBase entity : entityList) {
+            String code = entity.getEquipmentCode();
+            if (codeSet.contains(code)) {
+                throw new ServiceException("列表中存在重复编码:" + code);
+            }
+            codeSet.add(code);
+        }
+
+        //校验
+        for (EquipmentBase entity : entityList) {
+            //校验设备类型是否存在
+            if (equipmentTypeMapper.selectById(entity.getEquipmentTypeId()) == null) {
+                throw new ServiceException("设备类型不存在:" + entity.getEquipmentTypeId());
+            }
+            //校验设备编码是否已存在
+            LambdaQueryWrapper<EquipmentBase> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(EquipmentBase::getEquipmentCode, entity.getEquipmentCode());
+            if (this.count(wrapper) > 0) {
+                throw new ServiceException("设备编码已存在:" + entity.getEquipmentCode());
+            }
+        }
+        //保存
+        return this.saveBatch(entityList);
+    }
+
+    /**
+     * 修改仪器信息
+     * @param entity
+     * @return
+     */
+    @Override
+    @Transactional
+    public boolean updateWithCheck(EquipmentBase entity) {
+        //设备是否存在
+        String equipmentId = entity.getEquipmentId();
+        if (this.getById(equipmentId) == null) {
+            throw new ServiceException("设备不存在,无法修改:" + equipmentId);
+        }
+
+        //修改设备类型ID,需要校验新类型是否存在
+        String newTypeId = entity.getEquipmentTypeId();
+        if (newTypeId != null && equipmentTypeMapper.selectById(newTypeId) == null) {
+            throw new ServiceException("设备类型不存在:" + newTypeId);
+        }
+
+        //修改设备编码,需要校验新编码是否已被使用
+        String newCode = entity.getEquipmentCode();
+        if (newCode != null) {
+            LambdaQueryWrapper<EquipmentBase> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(EquipmentBase::getEquipmentCode, newCode)
+                    .ne(EquipmentBase::getEquipmentId, equipmentId); // 排除自身
+            if (this.count(wrapper) > 0) {
+                throw new ServiceException("设备编码已被使用:" + newCode);
+            }
+        }
+        //修改
+        return this.updateById(entity);
+    }
+
+    /**
+     * 删除设备基础信息
+     * @param equipmentId
+     * @return
+     */
+    @Override
+    @Transactional
+    public boolean removeWithCheck(String equipmentId) {
+        //校验设备是否存在
+        EquipmentBase equipment = this.getById(equipmentId);
+        if (equipment == null) {
+            throw new ServiceException("设备不存在:" + equipmentId);
+        }
+
+        //删除关联的维护记录
+        LambdaQueryWrapper<EquipmentMaintain> maintainWrapper = new LambdaQueryWrapper<>();
+        maintainWrapper.eq(EquipmentMaintain::getEquipmentId, equipmentId);
+        equipmentMaintainMapper.delete(maintainWrapper);
+        log.info("已删除设备[{}]的维护记录", equipmentId);
+
+        //删除关联的状态记录
+        LambdaQueryWrapper<EquipmentStatus> statusWrapper = new LambdaQueryWrapper<>();
+        statusWrapper.eq(EquipmentStatus::getEquipmentId, equipmentId);
+        equipmentStatusMapper.delete(statusWrapper);
+        log.info("已删除设备[{}]的状态记录", equipmentId);
+
+        //删除设备
+        boolean deleted = this.baseMapper.deleteById(equipmentId) > 0;
+        return deleted;
+    }
+
+    /**
+     * 设备基础信息批量删除
+     * @param equipmentIds
+     * @return
+     */
+    @Override
+    @Transactional
+    public boolean removeBatchWithCheck(List<String> equipmentIds) {
+        if (CollectionUtils.isEmpty(equipmentIds)) {
+            throw new ServiceException("批量删除失败:设备ID列表不能为空");
+        }
+
+        //校验设备是否存在
+        List<EquipmentBase> existEquipments = this.listByIds(equipmentIds);
+        if (existEquipments.isEmpty()) {
+            throw new ServiceException("批量删除失败:所有设备ID均不存在");
+        }
+        // 提取存在的设备ID
+        List<String> existIds = existEquipments.stream()
+                .map(EquipmentBase::getEquipmentId)
+                .collect(Collectors.toList());
+        //无效ID
+        List<String> invalidIds = equipmentIds.stream()
+                .filter(id -> !existIds.contains(id))
+                .collect(Collectors.toList());
+        if (!invalidIds.isEmpty()) {
+            log.warn("批量删除中存在无效设备ID:{}", invalidIds);
+        }
+
+        //批量删除关联的维护记录
+        LambdaQueryWrapper<EquipmentMaintain> maintainWrapper = new LambdaQueryWrapper<>();
+        maintainWrapper.in(EquipmentMaintain::getEquipmentId, existIds);
+        equipmentMaintainMapper.delete(maintainWrapper);
+        log.info("已批量删除{}条设备的维护记录", existIds.size());
+
+        //批量删除关联的状态记录
+        LambdaQueryWrapper<EquipmentStatus> statusWrapper = new LambdaQueryWrapper<>();
+        statusWrapper.in(EquipmentStatus::getEquipmentId, existIds);
+        equipmentStatusMapper.delete(statusWrapper);
+        log.info("已批量删除{}条设备的状态记录", existIds.size());
+        //删除
+        return this.removeByIds(existIds);
+    }
+
+}

+ 134 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/impl/EquipmentMaintainServiceImpl.java

@@ -0,0 +1,134 @@
+package com.zksy.base.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zksy.base.domain.EquipmentBase;
+import com.zksy.base.domain.EquipmentMaintain;
+import com.zksy.base.mapper.EquipmentBaseMapper;
+import com.zksy.base.mapper.EquipmentMaintainMapper;
+import com.zksy.base.service.EquipmentMaintainService;
+import com.zksy.common.exception.ServiceException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@Service
+public class EquipmentMaintainServiceImpl extends ServiceImpl<EquipmentMaintainMapper, EquipmentMaintain>
+        implements EquipmentMaintainService {
+
+    @Autowired
+    private EquipmentBaseMapper equipmentBaseMapper;
+
+    @Override
+    public Page<EquipmentMaintain> findByPage(long pageNum, long pageSize,
+                                              String maintainId,String equipmentId,
+                                              String maintainType,String maintainPerson) {
+        Page<EquipmentMaintain> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<EquipmentMaintain> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(EquipmentMaintain::getMaintainId,maintainId)
+                    .eq(EquipmentMaintain::getEquipmentId,equipmentId)
+                    .eq(EquipmentMaintain::getMaintainType,maintainType)
+                    .eq(EquipmentMaintain::getMaintainPerson,maintainPerson);
+        return this.page(page,queryWrapper);
+    }
+
+    /**
+     * 新增设备维护记录
+     * @param entity
+     * @return
+     */
+    @Override
+    public boolean saveWithCheck(EquipmentMaintain entity) {
+        //校验关联的设备是否存在
+        String equipmentId = entity.getEquipmentId();
+        if (equipmentBaseMapper.selectById(equipmentId) == null) {
+            throw new ServiceException("关联的设备不存在:" + equipmentId);
+        }
+        //新增
+        return this.save(entity);
+    }
+
+    /**
+     * 批量新增设备维护记录
+     * @param entityList
+     * @return
+     */
+    @Override
+    @Transactional
+    public boolean saveBatchWithCheck(List<EquipmentMaintain> entityList) {
+        //批量校验设备ID是否存在
+        Set<String> equipmentIds = entityList.stream()
+                .map(EquipmentMaintain::getEquipmentId)
+                .collect(Collectors.toSet());
+        List<String> existEquipmentIds = equipmentBaseMapper.selectBatchIds(equipmentIds).stream()
+                .map(EquipmentBase::getEquipmentId)
+                .collect(Collectors.toList());
+        Set<String> invalidEquipmentIds = equipmentIds.stream()
+                .filter(id -> !existEquipmentIds.contains(id))
+                .collect(Collectors.toSet());
+
+        if (!invalidEquipmentIds.isEmpty()) {
+            throw new ServiceException("存在无效的设备ID:" + invalidEquipmentIds);
+        }
+
+        //校验
+        for (EquipmentMaintain entity : entityList) {
+            //校验关联的设备是否存在
+            String equipmentId = entity.getEquipmentId();
+            if (equipmentBaseMapper.selectById(equipmentId) == null) {
+                throw new ServiceException("关联的设备不存在:" + equipmentId + "(维护记录ID:" + entity.getMaintainId() + ")");
+            }
+
+            //校验核心必填字段
+//            if (entity.getMaintainPersonPhone() != null) {
+//                String phoneStr = String.valueOf(entity.getMaintainPersonPhone());
+//                if (phoneStr.length() != 11) {
+//                    throw new ServiceException("维护人手机号格式错误(需11位):" + phoneStr + "(维护记录ID:" + entity.getMaintainId() + ")");
+//                }
+//            }
+        }
+
+        //批量新增
+        return this.saveBatch(entityList);
+    }
+
+    /**
+     * 修改设备维护记录
+     * @param entity
+     * @return
+     */
+    @Override
+    @Transactional
+    public boolean updateWithCheck(EquipmentMaintain entity) {
+        //是否存在
+        String maintainId = entity.getMaintainId();
+        EquipmentMaintain oldRecord = this.getById(maintainId);
+        if (oldRecord == null) {
+            throw new ServiceException("维护记录不存在:" + maintainId);
+        }
+
+        //修改设备ID,需校验新设备是否存在
+        String newEquipmentId = entity.getEquipmentId();
+        if (newEquipmentId != null && !newEquipmentId.equals(oldRecord.getEquipmentId())) {
+            if (equipmentBaseMapper.selectById(newEquipmentId) == null) {
+                throw new ServiceException("新关联的设备不存在:" + newEquipmentId);
+            }
+        }
+
+//        //校验核心字段格式(可选)
+//        if (entity.getMaintainPersonPhone() != null) {
+//            String phoneStr = String.valueOf(entity.getMaintainPersonPhone());
+//            if (phoneStr.length() != 11) {
+//                throw new ServiceException("维护人手机号格式错误(需11位):" + phoneStr);
+//            }
+//        }
+
+        //更新
+        return this.updateById(entity);
+    }
+}

+ 192 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/impl/EquipmentStatusServiceImpl.java

@@ -0,0 +1,192 @@
+package com.zksy.base.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zksy.base.domain.EquipmentBase;
+import com.zksy.base.domain.EquipmentStatus;
+import com.zksy.base.mapper.EquipmentBaseMapper;
+import com.zksy.base.mapper.EquipmentStatusMapper;
+import com.zksy.base.service.EquipmentStatusService;
+import com.zksy.common.core.domain.entity.SysUser;
+import com.zksy.common.exception.ServiceException;
+import com.zksy.system.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@Service
+public class EquipmentStatusServiceImpl extends ServiceImpl<EquipmentStatusMapper, EquipmentStatus>
+        implements EquipmentStatusService {
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+    @Autowired
+    private EquipmentBaseMapper equipmentBaseMapper;
+
+    @Override
+    public Page<EquipmentStatus> findByPage(long pageNum, long pageSize,
+                                            String statusId,String equipmentId,
+                                            Integer currentStatus,Integer alarmStatus,
+                                            Integer onlineStatus,Long userId) {
+        Page<EquipmentStatus> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<EquipmentStatus> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(EquipmentStatus::getStatusId,statusId)
+                    .eq(EquipmentStatus::getCurrentStatus,currentStatus)
+                    .eq(EquipmentStatus::getAlarmStatus,alarmStatus)
+                    .eq(EquipmentStatus::getOnlineStatus,onlineStatus)
+                    .eq(EquipmentStatus::getUserId,userId);
+        return this.page(page,queryWrapper);
+    }
+
+    /**
+     * 新增仪器状态
+     * @param entity
+     * @return
+     */
+    @Override
+    public boolean saveWithCheck(EquipmentStatus entity) {
+        //校验关联的设备是否存在
+        String equipmentId = entity.getEquipmentId();
+        if (equipmentBaseMapper.selectById(equipmentId) == null) {
+            throw new ServiceException("关联的设备不存在:" + equipmentId);
+        }
+
+        //校验设备是否已存在状态记录
+        LambdaQueryWrapper<EquipmentStatus> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(EquipmentStatus::getEquipmentId, equipmentId);
+        if (this.count(wrapper) > 0) {
+            throw new ServiceException("该设备已存在状态记录,不可重复新增:" + equipmentId);
+        }
+
+        //校验当前状态值是否合法(1-在用,2-闲置,3-维修,4-报废,5-待入库)
+        Integer currentStatus = entity.getCurrentStatus();
+        if (currentStatus == null || currentStatus < 1 || currentStatus > 5) {
+            throw new ServiceException("设备状态值无效,必须为1-5之间的整数:" + currentStatus);
+        }
+
+        //校验负责人ID
+        Long userId = entity.getUserId();
+        if (userId != null) {
+            SysUser user = sysUserService.selectUserById(userId);
+            if (user == null || "2".equals(user.getDelFlag())) { // 排除已删除的用户
+                throw new ServiceException("负责人ID不存在或已删除:" + userId);
+            }
+        }
+        //新增
+        return this.save(entity);
+    }
+
+    /**
+     * 批量新增仪器状态
+     * @param entityList
+     * @return
+     */
+    @Override
+    @Transactional
+    public boolean saveBatchWithCheck(List<EquipmentStatus> entityList) {
+        //批量校验id
+        List<String> equipmentIds = entityList.stream()
+                .map(EquipmentStatus::getEquipmentId)
+                .collect(Collectors.toList());
+
+        Set<String> duplicateEqIds = new HashSet<>();
+        Set<String> tempEqIds = new HashSet<>();
+        for (String eqId : equipmentIds) {
+            if (tempEqIds.contains(eqId)) {
+                duplicateEqIds.add(eqId);
+            } else {
+                tempEqIds.add(eqId);
+            }
+        }
+        if (!duplicateEqIds.isEmpty()) {
+            throw new ServiceException("批量列表中存在重复设备ID:" + duplicateEqIds);
+        }
+
+        // 校验设备是否存在,外键
+        List<String> existEqIds = equipmentBaseMapper.selectBatchIds(equipmentIds).stream()
+                .map(EquipmentBase::getEquipmentId)
+                .collect(Collectors.toList());
+        Set<String> invalidEqIds = equipmentIds.stream()
+                .filter(id -> !existEqIds.contains(id))
+                .collect(Collectors.toSet());
+        if (!invalidEqIds.isEmpty()) {
+            throw new ServiceException("存在无效的设备ID:" + invalidEqIds);
+        }
+
+        // 校验这些设备是否已存在状态记录
+        LambdaQueryWrapper<EquipmentStatus> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(EquipmentStatus::getEquipmentId, equipmentIds);
+        List<String> alreadyExistEqIds = this.list(wrapper).stream()
+                .map(EquipmentStatus::getEquipmentId)
+                .collect(Collectors.toList());
+        if (!alreadyExistEqIds.isEmpty()) {
+            throw new ServiceException("以下设备已存在状态记录,不能重复新增:" + alreadyExistEqIds);
+        }
+
+        //校验
+        for (EquipmentStatus entity : entityList) {
+            //校验状态值范围是否合法
+            Integer status = entity.getCurrentStatus();
+            if (status == null || status < 1 || status > 5) {
+                throw new ServiceException("设备状态值无效(必须为1-5):" + status + "(状态记录ID:" + entity.getStatusId() + ")");
+            }
+
+            //校验负责人ID
+            Long userId = entity.getUserId();
+            if (userId != null) {
+                SysUser user = sysUserService.selectUserById(userId);
+                if (user == null || "2".equals(user.getDelFlag())) { // 检查用户是否存在且未被删除
+                    throw new ServiceException("负责人不存在或已删除:" + userId + "(状态记录ID:" + entity.getStatusId() + ")");
+                }
+            }
+        }
+        //批量新增
+        return this.saveBatch(entityList);
+    }
+
+    /**
+     * 修改仪器状态
+     * @param entity
+     * @return
+     */
+    @Override
+    public boolean updateWithCheck(EquipmentStatus entity) {
+        //校验当前状态记录是否存在
+        String statusId = entity.getStatusId();
+        EquipmentStatus oldStatus = this.getById(statusId);
+        if (oldStatus == null) {
+            throw new ServiceException("设备状态记录不存在:" + statusId);
+        }
+
+        //校验设备ID是否被篡改
+        String newEqId = entity.getEquipmentId();
+        String oldEqId = oldStatus.getEquipmentId();
+        if (newEqId != null && !newEqId.equals(oldEqId)) {
+            throw new ServiceException("不允许修改设备ID(如需更换设备,请删除旧记录后重新新增)");
+        }
+
+        //校验状态值合法性
+        Integer status = entity.getCurrentStatus();
+        if (status != null && (status < 1 || status > 5)) {
+            throw new ServiceException("设备状态值无效(必须为1-5):" + status);
+        }
+
+        // 校验负责人ID
+        Long newUserId = entity.getUserId();
+        if (newUserId != null) {
+            SysUser user = sysUserService.selectUserById(newUserId);
+            if (user == null || "2".equals(user.getDelFlag())) {
+                throw new ServiceException("负责人不存在或已删除:" + newUserId);
+            }
+        }
+        //更新
+        return this.updateById(entity);
+    }
+}

+ 389 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/base/service/impl/EquipmentTypeServiceImpl.java

@@ -0,0 +1,389 @@
+package com.zksy.base.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zksy.base.domain.EquipmentBase;
+import com.zksy.base.domain.EquipmentType;
+import com.zksy.base.mapper.EquipmentBaseMapper;
+import com.zksy.base.mapper.EquipmentTypeMapper;
+import com.zksy.base.service.EquipmentBaseService;
+import com.zksy.base.service.EquipmentTypeService;
+import com.zksy.common.exception.ServiceException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+//TODO 这里代码待检查
+@Slf4j
+@Service
+public class EquipmentTypeServiceImpl extends ServiceImpl<EquipmentTypeMapper, EquipmentType>
+        implements EquipmentTypeService {
+
+    @Autowired
+    private EquipmentBaseMapper equipmentBaseMapper;
+
+    @Autowired
+    private EquipmentBaseService equipmentBaseService;
+
+    @Override
+    public Page<EquipmentType> findByPage(long pageNum, long pageSize, String typeId,String typeName,String parentTypeId) {
+        Page<EquipmentType> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<EquipmentType> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(EquipmentType::getTypeId,typeId)
+                    .eq(EquipmentType::getTypeName,typeName)
+                    .eq(EquipmentType::getParentTypeId,parentTypeId);
+        return this.page(page,queryWrapper);
+    }
+
+    /**
+     * 新增设备类别
+     * @param entity
+     * @return
+     */
+    @Override
+    public boolean saveWithCheck(EquipmentType entity) {
+        //校验父类别是否存在
+        String parentId = entity.getParentTypeId();
+        // 0表示无父类,无需校验
+        if (!"0".equals(parentId)) {
+            EquipmentType parent = this.getById(parentId);
+            if (parent == null) {
+                throw new ServiceException("父类别不存在:" + parentId);
+            }
+        }
+
+        //校验同一父类别下,类别名称是否重复
+        LambdaQueryWrapper<EquipmentType> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(EquipmentType::getParentTypeId, parentId)
+                .eq(EquipmentType::getTypeName, entity.getTypeName());
+        if (this.count(wrapper) > 0) {
+            throw new ServiceException("同一父类别下已存在同名类别:" + entity.getTypeName());
+        }
+        //新增
+        return this.save(entity);
+    }
+
+    @Override
+    @Transactional
+    public boolean saveBatchWithCheck(List<EquipmentType> entityList) {
+
+        Set<String> parentIds = new HashSet<>(); // 所有父类别ID
+        Map<String, Set<String>> sameParentNames = new HashMap<>(); // 同一父类下的名称集合
+
+        for (EquipmentType entity : entityList) {
+            String parentId = entity.getParentTypeId() == null ? "0" : entity.getParentTypeId();
+            parentIds.add(parentId);
+
+            // 检查列表内同一父类下是否有重复名称
+            sameParentNames.computeIfAbsent(parentId, k -> new HashSet<>())
+                    .add(entity.getTypeName());
+        }
+
+        //批量校验父类别是否存在
+        List<String> existParentIds = this.listByIds(parentIds).stream()
+                .map(EquipmentType::getTypeId)
+                .collect(Collectors.toList());
+        // 过滤出不存在的父类别ID
+        Set<String> invalidParentIds = parentIds.stream()
+                .filter(id -> !"0".equals(id) && !existParentIds.contains(id))
+                .collect(Collectors.toSet());
+        if (!invalidParentIds.isEmpty()) {
+            throw new ServiceException("存在无效父类别ID:" + invalidParentIds);
+        }
+
+        //校验数据库中是否存在同名类别
+        for (Map.Entry<String, Set<String>> entry : sameParentNames.entrySet()) {
+            String parentId = entry.getKey();
+            Set<String> names = entry.getValue();
+
+            LambdaQueryWrapper<EquipmentType> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(EquipmentType::getParentTypeId, parentId)
+                    .in(EquipmentType::getTypeName, names);
+
+            List<String> existNames = this.list(wrapper).stream()
+                    .map(EquipmentType::getTypeName)
+                    .collect(Collectors.toList());
+            if (!existNames.isEmpty()) {
+                throw new ServiceException("父类别[" + parentId + "]下已存在同名类别:" + existNames);
+            }
+        }
+
+        //批量保存
+        return this.saveBatch(entityList);
+    }
+
+    /**
+     * 设备类别修改
+     * @param entity
+     * @return
+     */
+    @Override
+    @Transactional
+    public boolean updateWithCheck(EquipmentType entity) {
+        //校验当前类别是否存在
+        String typeId = entity.getTypeId();
+        EquipmentType oldType = this.getById(typeId);
+        if (oldType == null) {
+            throw new ServiceException("设备类别不存在:" + typeId);
+        }
+
+        //处理父类别变更
+        String newParentId = entity.getParentTypeId() == null ? "0" : entity.getParentTypeId();
+        String oldParentId = oldType.getParentTypeId() == null ? "0" : oldType.getParentTypeId();
+
+        if (!newParentId.equals(oldParentId)) {
+            //新父类别必须存在
+            if (!"0".equals(newParentId)) {
+                EquipmentType newParent = this.getById(newParentId);
+                if (newParent == null) {
+                    throw new ServiceException("新父类别不存在:" + newParentId);
+                }
+                if (isChildOrSelf(newParentId, typeId)) {
+                    throw new ServiceException("不能将自身或子类别设为父类别:" + newParentId);
+                }
+            }
+        }
+
+        //处理类别名称修改
+        String newName = entity.getTypeName();
+        if (newName != null && !newName.equals(oldType.getTypeName())) {
+            // 同一父类别下不能有同名
+            LambdaQueryWrapper<EquipmentType> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(EquipmentType::getParentTypeId, newParentId)
+                    .eq(EquipmentType::getTypeName, newName)
+                    .ne(EquipmentType::getTypeId, typeId); // 排除自身
+
+            if (this.count(wrapper) > 0) {
+                throw new ServiceException("父类别[" + newParentId + "]下已存在同名类别:" + newName);
+            }
+        }
+
+        //更新
+        return this.updateById(entity);
+    }
+
+    /**
+     * 设备类别删除
+     * @param typeId
+     * @return
+     */
+    @Transactional
+    public boolean removeWithCheck1(String typeId) {
+        // 校验类别是否存在
+        EquipmentType type = this.getById(typeId);
+        if (type == null) {
+            throw new ServiceException("设备类别不存在:" + typeId);
+        }
+
+        //校验是否有子设备关联
+        LambdaQueryWrapper<EquipmentBase> eqWrapper = new LambdaQueryWrapper<>();
+        eqWrapper.eq(EquipmentBase::getEquipmentTypeId, typeId);
+        //TODO 待完善
+        long relatedEqCount = equipmentBaseMapper.selectCount(eqWrapper);
+        if (relatedEqCount > 0) {
+            throw new ServiceException("该类别下存在" + relatedEqCount + "台设备,无法删除");
+        }
+
+        //校验是否有子类别依赖
+        LambdaQueryWrapper<EquipmentType> childWrapper = new LambdaQueryWrapper<>();
+        childWrapper.eq(EquipmentType::getParentTypeId, typeId);
+        long childTypeCount = this.count(childWrapper);
+        if (childTypeCount > 0) {
+            throw new ServiceException("该类别下存在" + childTypeCount + "个子类别,无法删除");
+        }
+
+        // 4. 执行删除
+//        boolean deleted = this.removeById(typeId);
+//        if (!deleted) {
+//            throw new ServiceException("设备类别删除失败:" + typeId);
+//        }
+        return this.removeById(typeId);
+    }
+
+    /**
+     * 设备类别批量删除
+     * @param typeIds
+     * @return
+     */
+
+    @Transactional
+    //TODO 这部分逻辑待优化,考虑删还是不删除,的概率是要删的
+    public boolean removeBatchWithCheck1(List<String> typeIds) {
+        // 1. 基础校验:ID列表不能为空
+        if (CollectionUtils.isEmpty(typeIds)) {
+            throw new ServiceException("批量删除失败:类别ID列表不能为空");
+        }
+
+        // 2. 校验类别是否存在(过滤无效ID)
+        List<EquipmentType> existTypes = this.listByIds(typeIds);
+        if (existTypes.isEmpty()) {
+            throw new ServiceException("批量删除失败:所有类别ID均不存在");
+        }
+        List<String> existIds = existTypes.stream()
+                .map(EquipmentType::getTypeId)
+                .collect(Collectors.toList());
+        // 记录无效ID(仅警告,不阻断)
+        List<String> invalidIds = typeIds.stream()
+                .filter(id -> !existIds.contains(id))
+                .collect(Collectors.toList());
+        if (!invalidIds.isEmpty()) {
+            log.warn("批量删除中存在无效类别ID:{}", invalidIds);
+        }
+
+        // 3. 校验是否有关联设备(批量检查)
+        LambdaQueryWrapper<EquipmentBase> eqWrapper = new LambdaQueryWrapper<>();
+        eqWrapper.in(EquipmentBase::getEquipmentTypeId, existIds);
+        //TODO 待完善,不确定方法用对没
+        List<String> relatedTypeIds = equipmentBaseMapper.selectList(eqWrapper).stream()
+                .map(EquipmentBase::getEquipmentTypeId)
+                .distinct() // 去重,获取有设备关联的类别ID
+                .collect(Collectors.toList());
+        if (!relatedTypeIds.isEmpty()) {
+            throw new ServiceException("以下类别存在关联设备,无法删除:" + relatedTypeIds);
+        }
+
+        // 4. 校验是否有子类别依赖(批量检查)
+        LambdaQueryWrapper<EquipmentType> childWrapper = new LambdaQueryWrapper<>();
+        childWrapper.in(EquipmentType::getParentTypeId, existIds);
+        List<String> hasChildTypeIds = this.list(childWrapper).stream()
+                .map(EquipmentType::getParentTypeId)
+                .distinct() // 去重,获取有子类别依赖的类别ID
+                .collect(Collectors.toList());
+        if (!hasChildTypeIds.isEmpty()) {
+            throw new ServiceException("以下类别存在子类别,无法删除:" + hasChildTypeIds);
+        }
+
+        // 5. 执行批量删除
+//        boolean deleted = this.removeByIds(existIds);
+//        if (!deleted) {
+//            throw new ServiceException("设备类别批量删除失败");
+//        }
+//        log.info("成功批量删除{}个设备类别", existIds.size());
+        return this.removeByIds(existIds);
+    }
+
+    /**
+     * 设备类别删除(强制删除,先删关联数据)
+     */
+    @Override
+    @Transactional
+    public boolean removeWithCheck(String typeId) {
+        // 校验类别是否存在
+        EquipmentType type = this.getById(typeId);
+        if (type == null) {
+            throw new ServiceException("设备类别不存在:" + typeId);
+        }
+
+        // 先删除关联的设备
+        LambdaQueryWrapper<EquipmentBase> eqWrapper = new LambdaQueryWrapper<>();
+        eqWrapper.eq(EquipmentBase::getEquipmentTypeId, typeId);
+        //TODO 待完善,不确定方法用对没
+        List<String> relatedEqIds = equipmentBaseMapper.selectList(eqWrapper).stream()
+                .map(EquipmentBase::getEquipmentId)
+                .collect(Collectors.toList());
+        if (!relatedEqIds.isEmpty()) {
+            equipmentBaseService.removeBatchWithCheck(relatedEqIds);
+            log.info("已级联删除类别[{}]关联的{}台设备", typeId, relatedEqIds.size());
+        }
+
+        // 先删除子类别
+        LambdaQueryWrapper<EquipmentType> childWrapper = new LambdaQueryWrapper<>();
+        childWrapper.eq(EquipmentType::getParentTypeId, typeId);
+        List<String> childTypeIds = this.list(childWrapper).stream()
+                .map(EquipmentType::getTypeId)
+                .collect(Collectors.toList());
+        if (!childTypeIds.isEmpty()) {
+            this.removeBatchWithCheck(childTypeIds); // 调用批量删除方法处理子类别
+            log.info("已删除类别[{}]的{}个子类别", typeId, childTypeIds.size());
+        }
+        //删除
+        return this.removeById(typeId);
+    }
+
+    /**
+     * 设备类别批量删除(强制删除,先删关联数据)
+     */
+    @Override
+    @Transactional
+    public boolean removeBatchWithCheck(List<String> typeIds) {
+        if (CollectionUtils.isEmpty(typeIds)) {
+            throw new ServiceException("批量删除失败:类别ID列表不能为空");
+        }
+
+        //校验类别是否存在
+        List<EquipmentType> existTypes = this.listByIds(typeIds);
+        if (existTypes.isEmpty()) {
+            throw new ServiceException("批量删除失败:所有类别ID均不存在");
+        }
+        List<String> existIds = existTypes.stream()
+                .map(EquipmentType::getTypeId)
+                .collect(Collectors.toList());
+        List<String> invalidIds = typeIds.stream()
+                .filter(id -> !existIds.contains(id))
+                .collect(Collectors.toList());
+        if (!invalidIds.isEmpty()) {
+            log.warn("批量删除中存在无效类别ID:{}", invalidIds);
+        }
+
+        //先批量删除所有关联的设备
+        LambdaQueryWrapper<EquipmentBase> eqWrapper = new LambdaQueryWrapper<>();
+        eqWrapper.in(EquipmentBase::getEquipmentTypeId, existIds);
+        //TODO 待完善,不确定方法用对没
+        List<String> relatedEqIds = equipmentBaseMapper.selectList(eqWrapper).stream()
+                .map(EquipmentBase::getEquipmentId)
+                .collect(Collectors.toList());
+        if (!relatedEqIds.isEmpty()) {
+            equipmentBaseService.removeBatchWithCheck(relatedEqIds);
+            log.info("已批量级联删除{}台关联设备", relatedEqIds.size());
+        }
+
+        //先批量删除所有子类别
+        List<String> allChildTypeIds = new ArrayList<>();
+        collectAllChildTypes(existIds, allChildTypeIds); // 递归收集所有子类别ID
+        if (!allChildTypeIds.isEmpty()) {
+            this.removeBatchWithCheck(allChildTypeIds); // 批量删除所有子类别
+            log.info("已批量删除{}个子类别", allChildTypeIds.size());
+        }
+
+        return this.removeByIds(existIds);
+    }
+
+    /**
+     * 递归收集所有层级的子类别ID
+     */
+    private void collectAllChildTypes(List<String> parentTypeIds, List<String> allChildTypeIds) {
+        LambdaQueryWrapper<EquipmentType> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(EquipmentType::getParentTypeId, parentTypeIds);
+        List<String> childIds = this.list(wrapper).stream()
+                .map(EquipmentType::getTypeId)
+                .collect(Collectors.toList());
+        if (!childIds.isEmpty()) {
+            allChildTypeIds.addAll(childIds);
+            collectAllChildTypes(childIds, allChildTypeIds); // 递归收集下一级子类别
+        }
+    }
+
+    //检查targetId是否是currentId的子类别或自身
+    private boolean isChildOrSelf(String targetId, String currentId) {
+        if (targetId.equals(currentId)) {
+            //自身不能作为父类别
+            return true;
+        }
+        // 查询targetId的所有子类别
+        LambdaQueryWrapper<EquipmentType> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(EquipmentType::getParentTypeId, targetId);
+        List<EquipmentType> children = this.list(wrapper);
+        for (EquipmentType child : children) {
+            if (child.getTypeId().equals(currentId) || isChildOrSelf(child.getTypeId(), currentId)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}

+ 101 - 0
pipe-network-service/zksy-system/src/main/java/com/zksy/utils/DevicePhoneFetchUtil.java

@@ -0,0 +1,101 @@
+package com.zksy.utils;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zksy.base.domain.EquipmentMaintain;
+import com.zksy.base.domain.EquipmentStatus;
+import com.zksy.base.service.EquipmentMaintainService;
+import com.zksy.base.service.EquipmentStatusService;
+import com.zksy.common.core.domain.entity.SysUser;
+import com.zksy.system.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+//
+@Component
+public class DevicePhoneFetchUtil {
+
+    //换了一种方式注入,待测试
+    @Autowired
+    private  EquipmentMaintainService equipmentMaintainService;
+    @Autowired
+    private  EquipmentStatusService equipmentStatusService;
+    @Autowired
+    private  ISysUserService sysUserService;
+
+//    private final EquipmentMaintainService equipmentMaintainService;
+//    private final EquipmentStatusService equipmentStatusService;
+//    private final ISysUserService sysUserService;
+//
+//    public DevicePhoneFetchUtil(EquipmentMaintainService equipmentMaintainService,
+//                                EquipmentStatusService equipmentStatusService,
+//                                ISysUserService sysUserService) {
+//        this.equipmentMaintainService = equipmentMaintainService;
+//        this.equipmentStatusService = equipmentStatusService;
+//        this.sysUserService = sysUserService;
+//    }
+
+    /**
+     * 根据设备ID获取所有关联手机号
+     * @param deviceId 设备ID
+     * @return 去重后的有效手机号列表
+     */
+    public List<String> getPhoneListByDeviceId(String deviceId) {
+        Set<String> phoneSet = new HashSet<>();
+
+        //获取维护表中的手机号
+        addAllMaintainPersonPhones(phoneSet, deviceId);
+        //获取用户表的手机号
+        addUserPhoneByStatus(phoneSet, deviceId);
+        return phoneSet.stream()
+                .filter(this::isValidPhone)
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 收集该设备所有维护记录中的维护人手机号
+     */
+    private void addAllMaintainPersonPhones(Set<String> phoneSet, String deviceId) {
+        LambdaQueryWrapper<EquipmentMaintain> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(EquipmentMaintain::getEquipmentId, deviceId);
+
+        List<EquipmentMaintain> maintainList = equipmentMaintainService.list(queryWrapper);
+        if (maintainList.isEmpty()) {
+            return;
+        }
+        maintainList.forEach(maintain -> {
+            String phone = String.valueOf(maintain.getMaintainPersonPhone());
+            phoneSet.add(phone);
+        });
+    }
+
+    /**
+     * 从设备状态表关联用户表获取负责人手机号
+     */
+    private void addUserPhoneByStatus(Set<String> phoneSet, String deviceId) {
+
+        LambdaQueryWrapper<EquipmentStatus> statusWrapper = new LambdaQueryWrapper<>();
+        statusWrapper.eq(EquipmentStatus::getEquipmentId, deviceId);
+        EquipmentStatus equipmentStatus = equipmentStatusService.getOne(statusWrapper);
+
+        if (equipmentStatus == null || equipmentStatus.getUserId() == null) {
+            return;
+        }
+        SysUser sysUser = sysUserService.selectUserById(equipmentStatus.getUserId());
+
+        //0代表存在的用户
+        if (sysUser != null && sysUser.getPhonenumber() != null && sysUser.getDelFlag().equals("0")) {
+            phoneSet.add(sysUser.getPhonenumber());
+        }
+    }
+
+    /**
+     * 校验手机号格式(11位数字)
+     */
+    private boolean isValidPhone(String phone) {
+        return phone != null && phone.matches("^1[3-9]\\d{9}$");
+    }
+}

+ 1 - 0
pom.xml

@@ -14,6 +14,7 @@
         <module>zk-gateway</module>
         <module>zk-common</module>
         <module>zk-api-service</module>
+        <module>manhole-service</module>
         <module>firefighting-pressure-service</module>
         <module>flammable-gas-service</module>
     </modules>

+ 15 - 75
zk-api-service/src/main/java/com/zksy/api/utils/SmsUtil.java

@@ -4,7 +4,8 @@ import com.alibaba.fastjson.JSONObject;
 import com.aliyun.auth.credentials.Credential;
 import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
 import com.aliyun.sdk.service.dysmsapi20170525.AsyncClient;
-import com.aliyun.sdk.service.dysmsapi20170525.models.*;
+import com.aliyun.sdk.service.dysmsapi20170525.models.SendBatchSmsRequest;
+import com.aliyun.sdk.service.dysmsapi20170525.models.SendBatchSmsResponse;
 import com.google.gson.Gson;
 import com.zksy.api.config.AliyunSmsConfig;
 import com.zksy.api.domain.Enum.DeviceCodeEnum;
@@ -19,7 +20,9 @@ import rk.netDevice.sdk.p2.NodeData;
 import rk.netDevice.sdk.p2.RealTimeData;
 
 import java.time.Duration;
-import java.util.*;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 
@@ -35,13 +38,9 @@ public class SmsUtil {
     // 报警缓存和冷却时间
 //    private static final Map<String, Long> ALARM_CACHE = new ConcurrentHashMap<>();
 //    private static final long ALARM_COOLDOWN_MS = 5 * 60 * 1000;
-    //TODO 假数据
-    private static final List<String> DEFAULT_ALARM_PHONES = Arrays.asList(
-            "15773238205", "19892389826"
-    );
 
     @Autowired
-    public SmsUtil(AliyunSmsConfig aliyunSmsConfig,WarningThresholdService service) {
+    public SmsUtil(AliyunSmsConfig aliyunSmsConfig, WarningThresholdService service) {
         this.aliyunSmsConfig = aliyunSmsConfig;
         this.service=service;
 
@@ -65,39 +64,6 @@ public class SmsUtil {
             throw new RuntimeException("短信服务初始化异常", e); // 初始化失败应快速失败
         }
     }
-
-    /**
-     * 发送单条短信
-     * @param phoneNumber 接收短信的手机号
-     * @param templateParam 短信模板参数,JSON格式字符串
-     * @return 是否发送成功
-     */
-    public boolean sendSms(String phoneNumber, String templateParam) {
-        try {
-            // 构建发送短信请求
-            SendSmsRequest sendSmsRequest = SendSmsRequest.builder()
-                    .phoneNumbers(phoneNumber)
-                    .signName(aliyunSmsConfig.getSignName())
-                    .templateCode(aliyunSmsConfig.getTemplateCode())
-                    .templateParam(templateParam)
-                    .build();
-
-            // 发送短信
-            CompletableFuture<SendSmsResponse> response = client.sendSms(sendSmsRequest);
-            SendSmsResponse resp = response.get();
-
-            // 处理响应结果
-            SendSmsResponseBody body = resp.getBody();
-            System.out.println("短信发送响应: " + new Gson().toJson(body));
-
-            // 返回发送结果,"OK"表示成功
-            return "OK".equals(body.getCode());
-        } catch (Exception e) {
-            System.err.println("发送短信失败: " + e.getMessage());
-            e.printStackTrace();
-            return false;
-        }
-    }
     /**
      * 批量发送相同内容的短信给多个手机号
      * @param phoneNumbers 接收短信的手机号列表
@@ -105,21 +71,18 @@ public class SmsUtil {
      * @return 发送结果,key为手机号,value为是否成功
      */
     public Map<String, Boolean> sendBatchSms(List<String> phoneNumbers, String templateParam) {
-        // 入参校验
         if (phoneNumbers == null || phoneNumbers.isEmpty()) {
             log.warn("批量发送短信失败:手机号列表为空");
             return Collections.emptyMap();
         }
 
         try {
-            //生成与手机号数量相同的签名列表
             List<String> signNames = phoneNumbers.stream()
-                    .map(phone -> aliyunSmsConfig.getSignName()) // 复制签名,与手机号数量一致
+                    .map(phone -> aliyunSmsConfig.getSignName())
                     .collect(Collectors.toList());
 
-            //生成与手机号数量相同的模板参数列表
             List<String> templateParams = phoneNumbers.stream()
-                    .map(phone -> templateParam) // 复制参数,与手机号数量一致
+                    .map(phone -> templateParam)
                     .collect(Collectors.toList());
 
             //构建批量发送请求
@@ -134,7 +97,6 @@ public class SmsUtil {
             CompletableFuture<SendBatchSmsResponse> response = client.sendBatchSms(request);
             SendBatchSmsResponse resp = response.get();
 
-            //System.out.println("批量短信发送响应: " + new Gson().toJson(resp.getBody()));
             log.info("批量短信发送响应: {}",new Gson().toJson(resp.getBody()));
             return phoneNumbers.stream()
                     .collect(Collectors.toMap(
@@ -142,7 +104,6 @@ public class SmsUtil {
                             phone -> "OK".equals(resp.getBody().getCode())
                     ));
         } catch (Exception e) {
-            //System.err.println("批量发送短信失败: " + e.getMessage());
             log.error("批量短信发送响应: {}",e.getMessage());
             e.printStackTrace();
             return phoneNumbers.stream()
@@ -154,10 +115,9 @@ public class SmsUtil {
     }
     /**
      * 检查设备数据是否触发报警并发送短信
-     * 优化点:根据node_id确定唯一warningCode,直接查询单个阈值
      */
     public boolean checkDeviceAlarmAndSend(RealTimeData realTimeData, NodeData nodeData, List<String> alarmPhones) {
-        // 入参校验
+
         if (realTimeData == null || nodeData == null) {
             log.error("预警参数异常:设备数据或节点数据为空");
             return false;
@@ -174,10 +134,6 @@ public class SmsUtil {
         }
 
         try {
-            // 确定报警接收人
-            List<String> targetAlarmPhones = alarmPhones != null && !alarmPhones.isEmpty()
-                    ? alarmPhones
-                    : DEFAULT_ALARM_PHONES;
 
             //TODO 冷处理待定
 //            String cacheKey = realTimeData.getDeviceId() + "_" + nodeId;
@@ -196,11 +152,10 @@ public class SmsUtil {
             String warningCode = targetWarningType.getCode();
             String warningMsg = targetWarningType.getName();
 
-            // 直接查询该预警类型的阈值(无需查所有再筛选)
+            // 直接查询该预警类型的阈值
             double actualThreshold;
             try {
                 String deviceCode = DeviceCodeEnum.ENVIRONMENT_DEVICE.getCode();
-                // 调用新的Service方法:根据设备编码+单个预警编码查询
                 WarningThreshold threshold = service.getWarningThresholdByDeviceAndCode(deviceCode, warningCode);
 
                 // 优先使用数据库配置,无配置则用枚举默认值
@@ -215,41 +170,26 @@ public class SmsUtil {
             // 获取当前节点的指标数值
             double currentValue = getCurrentValueByNodeId(nodeData, nodeId);
 
-            // 判断是否超限(统一逻辑)
             boolean isOverThreshold = currentValue > actualThreshold;
 
-            // 调试日志
             log.debug("设备{}节点{} - 预警类型:{},当前值:{},阈值:{},是否超限:{}",
                     realTimeData.getDeviceId(), nodeId, warningMsg, currentValue, actualThreshold, isOverThreshold);
 
-            // 触发报警
+            // 超过期限,触发报警
             if (isOverThreshold) {
-//                Map<String, Object> alarmInfo = new HashMap<>();
-//                alarmInfo.put("alarmType", warningMsg);
-//                alarmInfo.put("currentValue", currentValue);
-//                alarmInfo.put("threshold", actualThreshold);
-//                alarmInfo.put("nodeId", nodeId);
-
                 log.warn("设备{}节点{}触发预警:{}(当前值:{} > 阈值:{})",
                         realTimeData.getDeviceId(), nodeId, warningMsg, currentValue, actualThreshold);
 
                 // 构造短信参数
                 JSONObject params = new JSONObject();
-//                params.put("name", "系统管理员");
                 params.put("deviceNo", realTimeData.getDeviceId());
-//                params.put("alarmTime", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
                 params.put("alarmType", warningMsg);
-                // 经纬度处理
+                // 经纬度处理(为执行信息处理)
                 double lng = nodeData.getLng();
                 double lat = nodeData.getLat();
                 params.put("location", String.format("经纬度:%.6f,%.8f", lng, lat));
 
-//                params.put("alarmDetails", new Gson().toJson(alarmInfo));
-//                params.put("contactPerson", "设备维护组");
-//                params.put("contactPhone", "13888888888");
-
-                // 发送短信
-                Map<String, Boolean> sendResults = this.sendBatchSms(targetAlarmPhones, params.toJSONString());
+                Map<String, Boolean> sendResults = this.sendBatchSms(alarmPhones, params.toJSONString());
                 long successCount = sendResults.values().stream().filter(Boolean::booleanValue).count();
                 log.info("设备{}报警短信发送完成,成功{}条,失败{}条",
                         realTimeData.getDeviceId(), successCount, sendResults.size() - successCount);
@@ -284,10 +224,10 @@ public class SmsUtil {
      */
     private double getCurrentValueByNodeId(NodeData nodeData, int nodeId) {
         if (nodeId == 1) {
-            // 节点1:悬浮物(floatValue字段)
+            // 节点1需要特殊处理,取悬浮物字段(floatValue字段)
             return nodeData.getFloatValue();
         } else {
-            // 节点2-5:使用hum字段
+            // 其他节点取hum字段
             return nodeData.getHum();
         }
     }

+ 4 - 1
zk-common/src/main/java/com/zksy/common/utils/RedisUtils.java

@@ -4,9 +4,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
+
 @Component
 public class RedisUtils {
-    @Autowired
+//    @Autowired
+    @Resource
     private RedisTemplate<String, Object> redisTemplate;
     public void set(String key, Object value) {
         redisTemplate.opsForValue().set(key, value);

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.