raojiang 6 miesięcy temu
rodzic
commit
5ff3fa9b4f
100 zmienionych plików z 6795 dodań i 0 usunięć
  1. 140 0
      common/common-core/pom.xml
  2. 171 0
      common/common-core/src/main/java/com/hdkj/hussar/ApiResponse.java
  3. 89 0
      common/common-core/src/main/java/com/hdkj/hussar/HussarException.java
  4. 9 0
      common/common-core/src/main/java/com/hdkj/hussar/IResultCode.java
  5. 27 0
      common/common-core/src/main/java/com/hdkj/hussar/ResultCode.java
  6. 32 0
      common/common-core/src/main/java/com/hdkj/lt/base/annotations/DateTimeValid.java
  7. 56 0
      common/common-core/src/main/java/com/hdkj/lt/base/annotations/DecimalFormat.java
  8. 29 0
      common/common-core/src/main/java/com/hdkj/lt/base/annotations/EnumValid.java
  9. 17 0
      common/common-core/src/main/java/com/hdkj/lt/base/annotations/LogExecutionTime.java
  10. 17 0
      common/common-core/src/main/java/com/hdkj/lt/base/annotations/MybatisLikeInterceptorMethod.java
  11. 37 0
      common/common-core/src/main/java/com/hdkj/lt/base/annotations/RegexValid.java
  12. 31 0
      common/common-core/src/main/java/com/hdkj/lt/base/annotations/SpecialCharValid.java
  13. 76 0
      common/common-core/src/main/java/com/hdkj/lt/base/constants/CommonConstant.java
  14. 131 0
      common/common-core/src/main/java/com/hdkj/lt/base/constants/DictConstants.java
  15. 130 0
      common/common-core/src/main/java/com/hdkj/lt/base/constants/ErrorLogConstant.java
  16. 55 0
      common/common-core/src/main/java/com/hdkj/lt/base/constants/NotificationConstant.java
  17. 60 0
      common/common-core/src/main/java/com/hdkj/lt/base/constants/RedisKeyConstants.java
  18. 58 0
      common/common-core/src/main/java/com/hdkj/lt/base/constants/RegexPatternConstant.java
  19. 47 0
      common/common-core/src/main/java/com/hdkj/lt/base/constants/RocketMQConstants.java
  20. 17 0
      common/common-core/src/main/java/com/hdkj/lt/base/constants/RoleConstants.java
  21. 61 0
      common/common-core/src/main/java/com/hdkj/lt/base/constants/SymbolConstants.java
  22. 99 0
      common/common-core/src/main/java/com/hdkj/lt/base/constants/SystemGlobalConstant.java
  23. 44 0
      common/common-core/src/main/java/com/hdkj/lt/base/constraints/DateTimeValidator.java
  24. 86 0
      common/common-core/src/main/java/com/hdkj/lt/base/constraints/EnumValidator.java
  25. 41 0
      common/common-core/src/main/java/com/hdkj/lt/base/constraints/SpecialCharValidator.java
  26. 57 0
      common/common-core/src/main/java/com/hdkj/lt/base/constraints/StringContentValidator.java
  27. 50 0
      common/common-core/src/main/java/com/hdkj/lt/base/enums/AccountStatusEnum.java
  28. 35 0
      common/common-core/src/main/java/com/hdkj/lt/base/enums/BaseValidEnum.java
  29. 45 0
      common/common-core/src/main/java/com/hdkj/lt/base/enums/ChangeTypeEnum.java
  30. 34 0
      common/common-core/src/main/java/com/hdkj/lt/base/enums/CommonUnitEnum.java
  31. 52 0
      common/common-core/src/main/java/com/hdkj/lt/base/enums/ErrorLevelEnum.java
  32. 56 0
      common/common-core/src/main/java/com/hdkj/lt/base/enums/EventTypeEnum.java
  33. 37 0
      common/common-core/src/main/java/com/hdkj/lt/base/enums/FaultTypeEnum.java
  34. 56 0
      common/common-core/src/main/java/com/hdkj/lt/base/enums/OperationStepEnum.java
  35. 67 0
      common/common-core/src/main/java/com/hdkj/lt/base/enums/OrganTypeEnum.java
  36. 55 0
      common/common-core/src/main/java/com/hdkj/lt/base/enums/ScoreIndicatorEnum.java
  37. 40 0
      common/common-core/src/main/java/com/hdkj/lt/base/enums/YesOrNoEnum.java
  38. 56 0
      common/common-core/src/main/java/com/hdkj/lt/base/exception/BusinessException.java
  39. 61 0
      common/common-core/src/main/java/com/hdkj/lt/base/exception/ExceptionCast.java
  40. 30 0
      common/common-core/src/main/java/com/hdkj/lt/base/model/entity/BaseTreeEntity.java
  41. 42 0
      common/common-core/src/main/java/com/hdkj/lt/base/model/entity/Entity.java
  42. 69 0
      common/common-core/src/main/java/com/hdkj/lt/base/model/entity/FhzgBaseEntity.java
  43. 97 0
      common/common-core/src/main/java/com/hdkj/lt/base/model/entity/OssEntity.java
  44. 86 0
      common/common-core/src/main/java/com/hdkj/lt/base/model/entity/SuperEntity.java
  45. 53 0
      common/common-core/src/main/java/com/hdkj/lt/base/model/request/PaginationParam.java
  46. 18 0
      common/common-core/src/main/java/com/hdkj/lt/base/model/response/PageVO.java
  47. 148 0
      common/common-core/src/main/java/com/hdkj/lt/base/model/response/ResultCode.java
  48. 146 0
      common/common-core/src/main/java/com/hdkj/lt/base/serializer/BigDecimalSerializer.java
  49. 77 0
      common/common-core/src/main/java/com/hdkj/lt/base/serializer/DecimalFormatJsonDeserializer.java
  50. 116 0
      common/common-core/src/main/java/com/hdkj/lt/base/serializer/StringFormatSerializer.java
  51. 30 0
      common/common-core/src/main/java/com/hdkj/lt/core/aspect/ExecutionTimeLogger.java
  52. 48 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/EventQueryDTO.java
  53. 57 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgDistCustomerDTO.java
  54. 39 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgFaultAwaitTransferUsersCountDTO.java
  55. 51 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgFaultDistCustomerDTO.java
  56. 42 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgFaultDistMappingFileDTO.java
  57. 86 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgFaultTransferSchemePathDetailDTO.java
  58. 41 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgFaultTransferSchemeUsersReqDTO.java
  59. 84 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgGridOperationAbnormalityDTO.java
  60. 39 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgPlanAwaitTransferUsersCountDTO.java
  61. 13 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgPlanTransferSchemeAllSwitchDTO.java
  62. 41 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgPlanTransferSchemeEvaluationIndexDTO.java
  63. 86 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgPlanTransferSchemePathDetailDTO.java
  64. 45 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgPlanTransferSchemeUsersReqDTO.java
  65. 172 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgSwitchProtectionSettingsBaseReadExcelConfig.java
  66. 59 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/SchemeQueryDTO.java
  67. 127 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/StateEstimation.java
  68. 32 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/StrategyconfigDetailEntryDTO.java
  69. 45 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/TransferSchemeEvaluationReqDTO.java
  70. 15 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/TransformerNameDTO.java
  71. 57 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/UserListQueryDTO.java
  72. 50 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/AwaitTransferPathVO.java
  73. 77 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/AwaitTransferUserVO.java
  74. 32 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/BreakerAreaVO.java
  75. 40 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/EvaluationHeadVO.java
  76. 51 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/FhzgDistLineSwitchSectionVO.java
  77. 42 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/FhzgPlanDistMappingFileVO.java
  78. 46 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/FhzgPlanTransferSchemeStrategyScoreVO.java
  79. 53 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/OppositePathVO.java
  80. 70 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/SchemeScoreListVO.java
  81. 48 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferDistributionVoltageVO.java
  82. 40 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferLineLossDetailVO.java
  83. 34 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferLineLossVO.java
  84. 56 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferLoseUserVO.java
  85. 59 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferPathVO.java
  86. 36 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferSchemeEvaluationIndexVO.java
  87. 48 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferSchemeStrategyScoreVO.java
  88. 103 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferSchemeVO.java
  89. 98 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferSwitchingSequenceVO.java
  90. 46 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/WholeStationPowerCutBaseVO.java
  91. 40 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/WholeStationPowerCutSchemeScoreVO.java
  92. 55 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/WholeStationPowerCutSchemeVO.java
  93. 44 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/WholeStationPowerCutTransferPathVO.java
  94. 45 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/WholeStationPowerCutTransferUserVO.java
  95. 122 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/WholeStationPowerCutVO.java
  96. 99 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/po/CustomerPowerProtectionConfig.java
  97. 86 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/po/CustomerPowerProtectionConfigHist.java
  98. 77 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/po/DisableLlkgConfig.java
  99. 630 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/po/DwdShbDsFeederBase.java
  100. 216 0
      common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/po/DwdShbDsSwitchBase.java

+ 140 - 0
common/common-core/pom.xml

@@ -10,5 +10,145 @@
 
 	<artifactId>common-core</artifactId>
 
+	<properties>
+		<easypoi.version>4.3.0</easypoi.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>com.baomidou</groupId>
+			<artifactId>mybatis-plus-boot-starter</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-redis</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.google.code.gson</groupId>
+			<artifactId>gson</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-logging</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>commons-fileupload</groupId>
+			<artifactId>commons-fileupload</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.reflections</groupId>
+			<artifactId>reflections</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.deepoove</groupId>
+			<artifactId>poi-tl</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>io.jsonwebtoken</groupId>
+			<artifactId>jjwt</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>com.hdkj.components</groupId>
+			<artifactId>poi-spring-boot-starter</artifactId>
+			<exclusions>
+				<exclusion>
+					<groupId>cn.afterturn</groupId>
+					<artifactId>easypoi-base</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>cn.afterturn</groupId>
+					<artifactId>easypoi-web</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>cn.afterturn</groupId>
+			<artifactId>easypoi-annotation</artifactId>
+			<version>${easypoi.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>cn.afterturn</groupId>
+			<artifactId>easypoi-base</artifactId>
+			<version>${easypoi.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>cn.afterturn</groupId>
+			<artifactId>easypoi-web</artifactId>
+			<version>${easypoi.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>easyexcel</artifactId>
+			<version>3.0.5</version>
+		</dependency>
+		<dependency>
+			<groupId>com.google.guava</groupId>
+			<artifactId>guava</artifactId>
+			<version>31.1-jre</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.alibaba.nacos</groupId>
+			<artifactId>nacos-client</artifactId>
+		</dependency>
+		<!-- 单元测试 start -->
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-test</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-test</artifactId>
+		</dependency>
+		<!-- 单元测试 end -->
+		<!-- oss 上传相关依赖 -->
+		<dependency>
+			<groupId>com.aliyun.oss</groupId>
+			<artifactId>aliyun-sdk-oss</artifactId>
+		</dependency>
+		<!-- websocket 长连接 -->
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-websocket</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.aliyun.openservices</groupId>
+			<artifactId>ons-client</artifactId>
+		</dependency>
+		<!-- 加此依赖是为了重写RemoteAuditLogService,防止研发网启动业务服务时启动审计日志报错 -->
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-openfeign-core</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>com.hdkj</groupId>
+			<artifactId>swagger</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-jdbc</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>fastjson</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>com.alibaba.fastjson2</groupId>
+			<artifactId>fastjson2</artifactId>
+		</dependency>
+	</dependencies>
 
 </project>

+ 171 - 0
common/common-core/src/main/java/com/hdkj/hussar/ApiResponse.java

@@ -0,0 +1,171 @@
+package com.hdkj.hussar;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import java.util.Optional;
+import org.springframework.lang.Nullable;
+import org.springframework.util.ObjectUtils;
+
+@ApiModel(
+        description = "响应信息主体"
+)
+public class ApiResponse<T> implements Serializable {
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty(
+            value = "状态码",
+            required = true
+    )
+    private int code;
+    @ApiModelProperty(
+            value = "是否成功",
+            required = true
+    )
+    private boolean success;
+    @ApiModelProperty("承载数据")
+    private T data;
+    @ApiModelProperty(
+            value = "返回消息",
+            required = true
+    )
+    private String msg;
+
+    private ApiResponse(IResultCode resultCode) {
+        this(resultCode, null, resultCode.getMessage());
+    }
+
+    private ApiResponse(IResultCode resultCode, String msg) {
+        this(resultCode,null, msg);
+    }
+
+    private ApiResponse(IResultCode resultCode, T data, String msg) {
+        this(resultCode.getCode(), data, msg);
+    }
+
+    public ApiResponse() {
+    }
+
+    private ApiResponse(int code, T data, String msg) {
+        this.code = code;
+        this.data = data;
+        this.msg = msg;
+        this.success = ResultCode.SUCCESS.code == code;
+    }
+
+    private static <T> ApiResponse<T> createInstance(T data, int code, String msg) {
+        ApiResponse<T> apiResponse = new ApiResponse();
+        apiResponse.setCode(code);
+        apiResponse.setData(data);
+        apiResponse.setMsg(msg);
+        apiResponse.setSuccess(ResultCode.SUCCESS.code == code);
+        return apiResponse;
+    }
+
+    private static <T> ApiResponse<T> createInstance(T data, IResultCode resultCode) {
+        ApiResponse<T> apiResponse = new ApiResponse();
+        apiResponse.setCode(resultCode.getCode());
+        apiResponse.setData(data);
+        apiResponse.setMsg(resultCode.getMessage());
+        apiResponse.setSuccess(ResultCode.SUCCESS.code == resultCode.getCode());
+        return apiResponse;
+    }
+
+    public static boolean isSuccess(@Nullable ApiResponse<?> result) {
+        return (Boolean)Optional.ofNullable(result).map((x) -> {
+            return ObjectUtils.nullSafeEquals(ResultCode.SUCCESS.code, x.code);
+        }).orElse(Boolean.FALSE);
+    }
+
+    public static boolean isNotSuccess(@Nullable ApiResponse<?> result) {
+        return !isSuccess(result);
+    }
+
+    public static <T> ApiResponse<T> success(T data, String msg) {
+        return createInstance(data, ResultCode.SUCCESS.getCode(), msg);
+    }
+
+    public static <T> ApiResponse<T> success(T data) {
+        return createInstance(data, ResultCode.SUCCESS);
+    }
+
+    public static <T> ApiResponse<T> success(int code, T data, String msg) {
+        return createInstance(data, code, msg);
+    }
+
+    public static <T> ApiResponse<T> success(String msg) {
+        return createInstance(null, ResultCode.SUCCESS.getCode(), msg);
+    }
+
+    public static <T> ApiResponse<T> success() {
+        return createInstance(null, ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.message);
+    }
+
+    public static <T> ApiResponse<T> success(int code, String msg) {
+        return createInstance(null, code, msg);
+    }
+
+    public static <T> ApiResponse<T> success(IResultCode resultCode) {
+        return createInstance(null, resultCode);
+    }
+
+    public static <T> ApiResponse<T> success(IResultCode resultCode, String msg) {
+        return createInstance(null, resultCode.getCode(), msg);
+    }
+
+    public static <T> ApiResponse<T> fail(String msg) {
+        return createInstance(null, ResultCode.FAILURE.getCode(), msg);
+    }
+
+    public static <T> ApiResponse<T> fail(int code, T data, String msg) {
+        return createInstance(data, code, msg);
+    }
+
+    public static <T> ApiResponse<T> fail(int code, String msg) {
+        return createInstance(null, code, msg);
+    }
+
+    public static <T> ApiResponse<T> fail(IResultCode resultCode) {
+        return createInstance(null, resultCode);
+    }
+
+    public static <T> ApiResponse<T> fail(IResultCode resultCode, String msg) {
+        return createInstance(null, resultCode.getCode(), msg);
+    }
+
+    public static <T> ApiResponse<T> status(boolean flag) {
+        return flag ? success(ResultCode.SUCCESS.getMessage()) : fail(ResultCode.FAILURE.getMessage());
+    }
+
+    public int getCode() {
+        return this.code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public boolean isSuccess() {
+        return this.success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    public T getData() {
+        return this.data;
+    }
+
+    public void setData(T data) {
+        this.data = data;
+    }
+
+    public String getMsg() {
+        return this.msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+}

+ 89 - 0
common/common-core/src/main/java/com/hdkj/hussar/HussarException.java

@@ -0,0 +1,89 @@
+package com.hdkj.hussar;
+
+import org.springframework.util.ObjectUtils;
+
+/**
+ * @author rj
+ * @date 2026/1/28 9:51
+ * @description
+ */
+public class HussarException extends RuntimeException {
+    private static final long serialVersionUID = -7369999214547220108L;
+    private Integer exceptionCode = 10001;
+    private String message;
+
+    public static void throwBy(boolean flag, String message) {
+        if (flag) {
+            throw new HussarException(message);
+        }
+    }
+
+    public static void throwBy(boolean flag, Integer exceptionCode, String message) {
+        if (flag) {
+            throw new HussarException(exceptionCode, message);
+        }
+    }
+
+    public static void throwByNull(Object value, String message) {
+        if (ObjectUtils.isEmpty(value)) {
+            throw new HussarException(message);
+        }
+    }
+
+    public static void throwByNull(Object value, Integer exceptionCode, String message) {
+        if (ObjectUtils.isEmpty(value)) {
+            throw new HussarException(exceptionCode, message);
+        }
+    }
+
+    public HussarException() {
+    }
+
+    public HussarException(Integer exceptionCode, String message) {
+        super(message);
+        this.exceptionCode = exceptionCode;
+        this.message = message;
+    }
+
+    public HussarException(Integer exceptionCode, String message, Throwable cause) {
+        super(message, cause);
+        this.exceptionCode = exceptionCode;
+        this.message = message;
+    }
+
+    public HussarException(Integer exceptionCode) {
+        super("操作失败");
+        this.exceptionCode = exceptionCode;
+        this.message = "操作失败";
+    }
+
+    public HussarException(String message) {
+        super(message);
+        this.message = message;
+    }
+
+    public HussarException(String message, Throwable cause) {
+        super(message, cause);
+        this.message = message;
+    }
+
+    public HussarException(Throwable cause) {
+        super(cause);
+    }
+
+    public Integer getExceptionCode() {
+        return this.exceptionCode;
+    }
+
+    public void setExceptionCode(Integer exceptionCode) {
+        this.exceptionCode = exceptionCode;
+    }
+
+    public String getMessage() {
+        return this.message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+}

+ 9 - 0
common/common-core/src/main/java/com/hdkj/hussar/IResultCode.java

@@ -0,0 +1,9 @@
+package com.hdkj.hussar;
+
+import java.io.Serializable;
+
+public interface IResultCode extends Serializable {
+    String getMessage();
+
+    int getCode();
+}

+ 27 - 0
common/common-core/src/main/java/com/hdkj/hussar/ResultCode.java

@@ -0,0 +1,27 @@
+package com.hdkj.hussar;
+
+
+public enum ResultCode implements IResultCode {
+    SUCCESS(10000, "操作成功"),
+    FAILURE(10001, "业务异常"),
+    UN_AUTHORIZED(100002, "请求未授权"),
+    REQ_REJECT(10003, "请求被拒绝"),
+    DEFAULT_UNAUTHORIZED_MESSAGE(10000, "签名认证失败"),
+    NO_EXIST_RESOURCE(10001, "不存在可下放的资源");
+
+    final int code;
+    final String message;
+
+    public String getMessage() {
+        return this.message;
+    }
+
+    public int getCode() {
+        return this.code;
+    }
+
+    private ResultCode(int code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+}

+ 32 - 0
common/common-core/src/main/java/com/hdkj/lt/base/annotations/DateTimeValid.java

@@ -0,0 +1,32 @@
+package com.hdkj.lt.base.annotations;
+
+import com.hdkj.lt.base.constraints.DateTimeValidator;
+import com.jxdinfo.hussar.platform.core.utils.date.format.DatePattern;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @Description: 日期时间字符串校验
+ * @Author: wenhao
+ * @Create: 2021/10/20 11:12
+ * @Version: 1.0
+ */
+@Target({ElementType.FIELD, ElementType.PARAMETER})
+@Retention(RetentionPolicy.RUNTIME)
+@Constraint(validatedBy = DateTimeValidator.class)
+public @interface DateTimeValid {
+
+    String message() default "format incorrect";
+
+    String format() default DatePattern.NORM_DATETIME_PATTERN;
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+
+}

+ 56 - 0
common/common-core/src/main/java/com/hdkj/lt/base/annotations/DecimalFormat.java

@@ -0,0 +1,56 @@
+package com.hdkj.lt.base.annotations;
+
+import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.hdkj.lt.base.serializer.DecimalFormatJsonDeserializer;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.math.RoundingMode;
+
+/**
+ * @Description: 反序列化时格式化小数类型
+ * @Author: wenhao
+ * @Create: 2022/10/18 14:05
+ * @Version: 1.0
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.FIELD, ElementType.METHOD})
+@JacksonAnnotationsInside
+@JsonDeserialize(using = DecimalFormatJsonDeserializer.class)
+public @interface DecimalFormat {
+
+    /**
+     * 小数点后保留的位数
+     *
+     * @return
+     */
+    int scale() default 2;
+
+    /**
+     * 是否抛出异常,不抛出异常但是出现了异常的情况会返回默认值
+     *
+     * @return
+     */
+    boolean isThrowException() default true;
+
+    /**
+     * 默认值,值不是数字或空字符串的情况返回该值
+     */
+    double defaultVal() default 0.0;
+
+    /**
+     * 格式化的规则,默认四舍五入
+     */
+    RoundingMode roundMode() default RoundingMode.HALF_UP;
+
+    /**
+     * 是否保留无效0后缀
+     *
+     * @return
+     */
+    boolean isTrailingZeros() default false;
+
+}

+ 29 - 0
common/common-core/src/main/java/com/hdkj/lt/base/annotations/EnumValid.java

@@ -0,0 +1,29 @@
+package com.hdkj.lt.base.annotations;
+
+import com.hdkj.lt.base.constraints.EnumValidator;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.*;
+
+/**
+ * @Description: 枚举校验
+ * @Author: wenhao
+ * @Create: 2022/08/15 11:12
+ * @Version: 1.0
+ */
+@Target({ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Constraint(validatedBy = EnumValidator.class)
+@Documented
+public @interface EnumValid {
+
+    String message() default "枚举不符合规范";
+
+    Class<?> enumClass();
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+
+}

+ 17 - 0
common/common-core/src/main/java/com/hdkj/lt/base/annotations/LogExecutionTime.java

@@ -0,0 +1,17 @@
+package com.hdkj.lt.base.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @Description 打印执行时间
+ * @Author wucx
+ * @Date 2023/6/8 10:06
+ * @Version 1.0
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface LogExecutionTime {
+}

+ 17 - 0
common/common-core/src/main/java/com/hdkj/lt/base/annotations/MybatisLikeInterceptorMethod.java

@@ -0,0 +1,17 @@
+package com.hdkj.lt.base.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @Description 通配符拦截注解
+ * @Author wucx
+ * @Date 2024/7/10 17:27
+ * @Version 1.0
+ */
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface MybatisLikeInterceptorMethod {
+}

+ 37 - 0
common/common-core/src/main/java/com/hdkj/lt/base/annotations/RegexValid.java

@@ -0,0 +1,37 @@
+package com.hdkj.lt.base.annotations;
+
+import com.hdkj.lt.base.constraints.StringContentValidator;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @Description: 字符串内容正则校验
+ * @Author: wenhao
+ * @Create: 2022/10/17 14:25
+ * @Version: 1.0
+ */
+@Target({ElementType.FIELD, ElementType.PARAMETER})
+@Retention(RetentionPolicy.RUNTIME)
+@Constraint(validatedBy = StringContentValidator.class)
+public @interface RegexValid {
+
+    // 提示信息
+    String message() default "params incorrect";
+
+    // 字符串正则校验属性
+    String regex() default StringUtils.EMPTY;
+
+    // 指定字符串值,格式如:01,02,03
+    String value() default StringUtils.EMPTY;
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+
+}

+ 31 - 0
common/common-core/src/main/java/com/hdkj/lt/base/annotations/SpecialCharValid.java

@@ -0,0 +1,31 @@
+package com.hdkj.lt.base.annotations;
+
+import com.hdkj.lt.base.constraints.SpecialCharValidator;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.*;
+
+/**
+ * @Description 特殊字符验证(\ / : * ? " < > |)
+ * @Author wucx
+ * @Date 2024/7/15 10:08
+ * @Version 1.0
+ */
+@Target({ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+@Constraint(validatedBy = SpecialCharValidator.class)
+@Documented
+public @interface SpecialCharValid {
+    // 提示信息
+    String message() default "不能包含下列任何字符:\\ / : * ? \" < > |";
+
+    // 验证字段名称 用于追加提示信息
+    String fieldName() default StringUtils.EMPTY;
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+
+}

+ 76 - 0
common/common-core/src/main/java/com/hdkj/lt/base/constants/CommonConstant.java

@@ -0,0 +1,76 @@
+package com.hdkj.lt.base.constants;
+
+public class CommonConstant {
+
+    /**
+     * 时间格式化-星期
+     */
+    public static final String WEEK_FORMAT = "EEEE";
+
+
+    /**
+     * 总计的字符串
+     */
+    public static final String TOTAL_STR = "总计";
+
+    /**
+     * 操作类型 0
+     */
+    public static final String ZERO = "0";
+
+    /**
+     * 操作类型 1
+     */
+    public static final String ONE = "1";
+
+    /**
+     * 操作类型 2
+     */
+    public static final String TWO = "2";
+
+    /**
+     * 操作类型 3
+     */
+    public static final String THREE = "3";
+
+    /**
+     * 操作类型 4
+     */
+    public static final String FOUR = "4";
+
+    /**
+     * 操作类型 5
+     */
+    public static final String FIVE = "5";
+
+    /**
+     * 操作类型 6
+     */
+    public static final String SIX = "6";
+
+    /**
+     * 操作类型 7
+     */
+    public static final String SEVEN = "7";
+
+    /**
+     * 操作类型 8
+     */
+    public static final String EIGHT = "8";
+
+    /**
+     * 字符串FORMAT
+     */
+    public static final String FEEDER = "feeder";
+    public static final String mvtrans = "mvTrans";
+    public static final String energyconsumer = "energyConsumer";
+    public static final String PV = "pv";
+    public static final String SEGMENT = "segment";
+    public static final String SWITCH = "switch";
+
+
+    public static final String EXCEL_SUFFIX_XLSX = ".xlsx";
+
+    public static final String EXCEL_SUFFIX_XLS = ".xls";
+
+}

+ 131 - 0
common/common-core/src/main/java/com/hdkj/lt/base/constants/DictConstants.java

@@ -0,0 +1,131 @@
+package com.hdkj.lt.base.constants;
+
+/**
+ * @Description:
+ * @Author: wenhao
+ * @Create: 2024/05/23 14:12
+ * @Version: 1.0
+ */
+public final class DictConstants {
+
+    /**
+     * 数据主题
+     */
+    public static final String DATA_THEME_CODE = "data_theme";
+
+    /**
+     * 电压等级
+     */
+    public static final String VOLTAGE_LEVEL_CODE = "voltage_level";
+
+    /**
+     * 数据总览验收状态
+     */
+    public static final String OVERVIEW_CHECK_STATUS = "overview_check_status";
+
+    /**
+     * 设备类型
+     */
+    public static final String DEVICE_TYPE = "device_type";
+
+    /**
+     * 设备类型
+     */
+    public static final String QW_DEVICE_TYPE = "qw_device_type";
+
+    /**
+     * 拓扑逻辑性校验字段类
+     */
+    public static final String TOPOLOGICAL_CHECK_TYPE = "topological_check_type";
+
+    /**
+     * 拓扑连通性问题类型
+     */
+    public static final String TOPOLOGICAL_CHECK_PROBLEM_TYPE = "topological_check_problem_type";
+
+    /**
+     * 问题工单Tab标签
+     */
+    public static final String ISSUE_ORDER_TAB = "issue_order_tab";
+
+    /**
+     * 设备运行状态
+     */
+    public static final String PSR_STATE = "psr_state";
+
+    /**
+     * 设备运行状态映射
+     */
+    public static final String PSR_STATE_MAPPING_ZXB = "psr_state_mapping_zxb";
+
+    /**
+     * 快捷菜单默认配置
+     */
+    public static final String DEFAULT_SHORTCUT = "default_shortcut";
+
+    /**
+     * 来源系统
+     */
+    public static final String SYS_SOURCE = "sys_source";
+
+    /**
+     * 设备类型:开关
+     */
+    public static final String KG_PSR_TYPE = "PD_11100000,PD_30700002,PD_30700000,PD_30500000,PD_30500089,PD_30500099,PD_11200000,PD_11400000";
+    /**
+     * 设备类型:配变  todo 确认配变包含的类型
+     */
+    public static final String PB_PSR_TYPE = "PD_11000000,PD_11000001,PD_11000002,PD_11000003,PD_30200002,PD_30200003,PD_30200004,PD_30200005";
+
+    /**
+     * 用户类型:低压
+     */
+    public static final String LOW_USER_TYPE = "2";
+    /**
+     * 用户类型:中压
+     */
+    public static final String MID_USER_TYPE = "1";
+
+    /**
+     * 评分策略:计划停电
+     */
+    public static final Integer SCORE_PLAN_POWER_CUT = 0;
+
+    /**
+     * 评分策略:抢修复电
+     */
+    public static final Integer SCORE_POWER_REPAIR = 1;
+
+    /**
+     * 评分策略:运行调优
+     */
+    public static final Integer SCORE_OPERATION_OPTIMIZATION = 2;
+
+    //故障停电设备类型
+    public static final String OUTAGE_TYPE_ZX = "01"; //整线
+    public static final String OUTAGE_TYPE_ZXS = "02"; //支线
+    public static final String OUTAGE_TYPE_PB = "03"; //配变
+    public static final String OUTAGE_TYPE_ZY = "08"; //中压
+
+    public static final String FAULT_DIRECT_PSR_TYPE = "0305,0307,0111,0112";
+
+    //日志相关字典
+    /**
+     * 来源系统
+     */
+    public static final String SOURCE_SYSTEM = "source_system";
+    /**
+     * 环节
+     */
+    public static final String LOG_STAGE = "log_stage";
+    /**
+     * 事件类型
+     */
+    public static final String EVENT_TYPE = "event_type";
+    /**
+     * 严重程度
+     */
+    public static final String ERROR_LEVEL = "error_level";
+
+
+}

+ 130 - 0
common/common-core/src/main/java/com/hdkj/lt/base/constants/ErrorLogConstant.java

@@ -0,0 +1,130 @@
+package com.hdkj.lt.base.constants;
+
+/**
+ * @Description:
+ * @Author: LiuAini
+ * @Date: 2025/7/18 11:29
+ * @Version: v1.0
+ */
+public class ErrorLogConstant {
+
+    public static class EventType{
+        /**
+         * 图模
+         */
+        public static final String TOPO_DATA = "1";
+        /**
+         * 成图
+         */
+        public static final String TOPO_FILE = "2";
+        /**
+         * 计划
+         */
+        public static final String PLAN = "3";
+        /**
+         * 故障
+         */
+        public static final String FAULT = "4";
+        /**
+         * 调优
+         */
+        public static final String ABNORMAL = "5";
+    }
+
+    public static class ErrorLevel{
+
+        /**
+         * 严重(Fatal)
+         */
+        public static final String FATAL = "Fatal";
+        /**
+         * 错误(Error)
+         */
+        public static final String ERROR = "Error";
+        /**
+         * 警告(Warning)
+         */
+        public static final String WARNING = "Warning";
+        /**
+         * 调试输出(Info)
+         */
+        public static final String INFO = "Info";
+    }
+
+    /**
+     * 环节
+     */
+    public static class Stage{
+
+        /**
+         * 拓扑解析
+         */
+        public static final String ANALYSIS_TOPO = "1";
+        /**
+         * 计划接入
+         */
+        public static final String PLAN_JOIN = "2";
+        /**
+         * 故障方案获取
+         */
+        public static final String GET_FAULT = "3";
+        /**
+         * 计划方案获取
+         */
+        public static final String GET_PLAN = "4";
+        /**
+         * 故障停电接入
+         */
+        public static final String FAULT_OUTAGE_JOIN = "5";
+        /**
+         * 运行调优方案获取
+         */
+        public static final String GET_ABNORMAL = "6";
+        /**
+         * 运行调优-负载率事件接入
+         */
+        public static final String ABNORMAL_EVENT_JOIN = "7";
+        /**
+         * 动态成图
+         */
+        public static final String GET_SVG_TOPO = "8";
+    }
+    /**
+     * 步骤
+     */
+    public static class OperationStep{
+
+        /**
+         *
+         */
+        public static final String FATAL = "Fatal";
+        /**
+         * 错误(Error)
+         */
+        public static final String ERROR = "Error";
+        /**
+         * 警告(Warning)
+         */
+        public static final String WARNING = "Warning";
+        /**
+         * 调试输出(Info)
+         */
+        public static final String INFO = "Info";
+    }
+
+    /**
+     * 来源系统
+     */
+    public static class SourceSystem{
+        /**
+         * 计算推演
+         */
+        public static final String JSTY = "1";
+        /**
+         * 负荷转供
+         */
+        public static final String FHZG = "2";
+    }
+
+
+}

+ 55 - 0
common/common-core/src/main/java/com/hdkj/lt/base/constants/NotificationConstant.java

@@ -0,0 +1,55 @@
+package com.hdkj.lt.base.constants;
+
+/**
+ * @author : liuaini
+ * @version : 1.0
+ * @description :
+ * @createTime : 2024/6/21 11:01
+ */
+public class NotificationConstant {
+
+    /**
+     * 维度种类
+     */
+    public static final class DimensionType{
+
+        /**
+         * 所有基础数据分类汇总
+         */
+        public static final String ALL_BASIC_DATA_TYPE = "all_basic_data_type";
+        /**
+         * 基础数据分类(任务分类)
+         */
+        public static final String BASIC_DATA_TYPE = "basic_data_type";
+        /**
+         * 源端系统
+         */
+        public static final String SYSTEM_TYPE = "system_type";
+
+    }
+
+    /**
+     * 图表分类
+     */
+    public static final class ChartsType{
+        /**
+         * 地图
+         */
+        public static final String CHART_MAP = "10";
+        /**
+         * 饼图
+         */
+        public static final String CHART_PIE = "20";
+
+        /**
+         * 卡片
+         */
+        public static final String CHART_CARD = "30";
+        /**
+         * 柱状图
+         */
+        public static final String CHART_BAR = "40";
+
+    }
+
+}

+ 60 - 0
common/common-core/src/main/java/com/hdkj/lt/base/constants/RedisKeyConstants.java

@@ -0,0 +1,60 @@
+package com.hdkj.lt.base.constants;
+
+/**
+ * @Description:
+ * @Author: wenhao
+ * @Create: 2024/04/03 10:36
+ * @Version: 1.0
+ */
+public class RedisKeyConstants {
+
+    // 用户缓存key
+    public static final String CACHE_KEY_USERS_HASH = "CACHE_USERS_HASH";
+
+    // 校验用户活跃
+    public static final String CACHE_KEY_USERS_INDIES = "CACHE_USERS_INDIES";
+
+    // 组织机构缓存key
+    public static final String CACHE_KEY_STRU_HASH = "CACHE_STRU_HASH";
+
+    // 组织机构缓存key
+    public static final String CACHE_KEY_ORGAN_HASH = "CACHE_ORGAN_HASH";
+
+    // 角色缓存key
+    public static final String CACHE_KEY_ROLES_HASH = "CACHE_ROLES_HASH";
+
+    // 数据字典缓存key
+    public static final String CACHE_KEY_DICT_HASH = "CACHE_DICT_HASH";
+
+    // 异步处理队列 start
+    public static final String ASYNC_QUEUE_ANALYSIS_TRANSFER_RESULT_TICKET = "analysisTransferResultTicket";
+
+    public static final String ASYNC_QUEUE_TO_ANALYSIS_RESULT_TICKET = "analysisToAnalysisResultTicket";
+
+    public static final String ASYNC_POWER_CUT_RESULT_TOPIC_TICKET = "powerCutResultTicket";
+
+    public static final String ASYNC_QUEUE_SCHEME_SCORE_TICKET = "schemeScoreTicket";
+
+    // 异步处理队列 end
+
+    // 组织机构
+    public static final String SYS_ORGAN = "SYS_ORGAN:";
+
+    // 组织机构数
+    public static final String PROVINCE_ORG_TREE = "PROVINCE_ORG_TREE:";
+
+
+    public static final String STRU_TREE_RESP_DTO = "StruTreeRespDTO";
+
+    public static final String CACHE_KEY_FEEDER_HASH = "CACHE_KEY_FEEDER_HASH";
+
+    // 组织机构树 缓存key
+    public static final String CACHE_KEY_STRU_TREE_HASH = "CACHE_KEY_STRU_TREE_HASH";
+
+    // 动画反演数据
+    public static final String CACHE_KEY_CARTOON_DATA = "CACHE_KEY_CARTOON_DATA:";
+
+    //拓扑解析
+    public static final String ERROR_CACHE_KEY_TOPO_DATA = "ERROR_CACHE_KEY_TOPO_DATA:";
+
+}

+ 58 - 0
common/common-core/src/main/java/com/hdkj/lt/base/constants/RegexPatternConstant.java

@@ -0,0 +1,58 @@
+package com.hdkj.lt.base.constants;
+
+/**
+ * @Description: 正则表达式常量类
+ * @Author: wenhao
+ * @Create: 2022/10/18 11:04
+ * @Version: 1.0
+ */
+public final class RegexPatternConstant {
+    // 只允许中文、英文、数字包括下划线
+    public final static String BASIC_REGEX = "^[\\u4E00-\\u9FA5A-Za-z0-9_]+$";
+
+    // Email地址
+    public final static String EMAIL_REGEX = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
+
+    // URL格式
+    public final static String URL_REGEX = "[a-zA-z]+:// [^\\s]*";
+
+    // 移动电话
+    public final static String MOBILE_PHONE_REGEX = "^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$";
+
+    // 固定电话
+    public final static String FIX_PHONE_REGEX = "\\d{3}-\\d{8}|\\d{4}-\\d{7}";
+
+    // 身份证格式
+    public final static String IDENTITY_REGEX = "(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}[0-9Xx]$)|(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)";
+
+    // 日期(年月日)格式
+    public final static String NORM_DATE_REGEX = "^\\d{4}-\\d{1,2}-\\d{1,2}";
+
+    // 时间(时分秒)格式
+    public final static String NORM_TIME_REGEX = "^\\d{1,2}:\\d{1,2}:\\d{1,2}";
+
+    // 日期(年月日时分秒)格式
+    public final static String NORM_DATETIME_REGEX = "^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}:\\d{1,2}:\\d{1,2}";
+
+    // 账号必须以字母开头,允许5-16字节,允许字母数字下划线
+    public final static String ACCOUNT_REGEX = "^[a-zA-Z][a-zA-Z0-9_]{4,15}$";
+
+    // 密码必须包含字母、数字和特殊字符的组合,长度在8-16之间
+    public final static String CIPHER_REGEX = "^(?=.*\\d)(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,16}$";
+
+    // 中文内容格式
+    public final static String CHINESE_REGEX = "[\\u4e00-\\u9fa5]{0,}$";
+
+    // 双字节内容格式
+    public final static String DOUBLE_BYTE_REGEX = "[^\\x00-\\xff]{0,}$";
+
+    // 邮政编码格式
+    public final static String ZIP_CODE_REGEX = "[1-9]\\d{5}(?!\\d)";
+
+    // IP地址格式
+    public final static String IP_ADDRESS_REGEX = "\\d+\\.\\d+\\.\\d+\\.\\d+";
+
+    // 非零数字格式
+    public final static String NONZERO_NUMBER_REGEX = "^[1-9]\\d{0,}$";
+
+}

+ 47 - 0
common/common-core/src/main/java/com/hdkj/lt/base/constants/RocketMQConstants.java

@@ -0,0 +1,47 @@
+package com.hdkj.lt.base.constants;
+
+/**
+ * @Description: 消息队列的topoc-id
+ * @Author: wenhao
+ * @Create: 2024/06/06 10:55
+ * @Version: 1.0
+ */
+public final class RocketMQConstants {
+
+    // topic-id start
+    /**
+     * 解析转供方案结果
+     */
+    public static final String TOPIC_ID_ANALYSIS_TRANSFER_RESULT_TICKET = "analysis-transfer-result-topic";
+
+    /**
+     * 停电计划 topic,解析生成停电范围
+     */
+    public static final String TOPIC_ID_POWER_CUT_RESULT_TICKET = "power-cut-result-topic";
+
+    /**
+     * 解析完停电范围后,推给下一级用于调用计算推演平台
+     */
+    public static final String TOPIC_ID_TO_ANALYSIS_RESULT_TICKET = "to-analysis-result-topic";
+
+    /**
+     * 转供方案结果评分
+     */
+    public static final String TOPIC_ID_FHZG_SCHEME_SCORE_RESULT_TICKET = "fhzg-scheme-score-topic";
+
+    /**
+     * 接收停电计划解析完成消息
+     */
+    public static final String TOPIC_ID_SOLUTION_OPERATION_TICKET = "fhzg_solution_operation";
+
+    /**
+     * 处理线路拓扑数据
+     */
+    public static final String TOPIC_ID_DO_CITY_FEEDER_TOPO_TICKET = "do-city-feeder-topo";
+
+    /**
+     * 处理配电线路动态映射表数据
+     */
+    public static final String TOPIC_ID_DIST_LINE_MAPPING_FILE_TICKET = "dist_line-mapping-file-topic";
+    // topic-id end
+}

+ 17 - 0
common/common-core/src/main/java/com/hdkj/lt/base/constants/RoleConstants.java

@@ -0,0 +1,17 @@
+package com.hdkj.lt.base.constants;
+
+/**
+ * @Description:
+ * @Author: wenhao
+ * @Create: 2024/05/28 20:20
+ * @Version: 1.0
+ */
+public final class RoleConstants {
+
+    /**
+     * 超级管理员角色
+     */
+    public static final String ROLE_PERMISSION_SUPER_ADMIN_ROLE = "superadmin_role";
+
+
+}

+ 61 - 0
common/common-core/src/main/java/com/hdkj/lt/base/constants/SymbolConstants.java

@@ -0,0 +1,61 @@
+package com.hdkj.lt.base.constants;
+
+/**
+ * @Description: 各种符号常量
+ * @Author: wenhao
+ * @Create: 2024/05/29 13:30
+ * @Version: 1.0
+ */
+public final class SymbolConstants {
+
+    /**
+     * 英文分号
+     */
+    public static final String SEMICOLON_EN = ";";
+
+    /**
+     * 中文分号
+     */
+    public static final String SEMICOLON_ZH = ";";
+
+    /**
+     * 英文冒号
+     */
+    public static final String COLON_EN = ":";
+
+    /**
+     * 中文冒号
+     */
+    public static final String COLON_ZH = ":";
+
+    /**
+     * 英文逗号
+     */
+    public static final String COMMA_EN = ",";
+
+    /**
+     * 中文逗号
+     */
+    public static final String COMMA_ZH = ",";
+
+    /**
+     * 正斜杠
+     */
+    public static final String FORWARD_SLASH = "/";
+
+    /**
+     * 反斜杠
+     */
+    public static final String BACK_SLASH = "\\";
+
+    /**
+     * 左括号
+     */
+    public static final String ARRAY_LEFT = "[";
+
+    /**
+     * 右括号
+     */
+    public static final String ARRAY_RIGHT = "]";
+
+}

+ 99 - 0
common/common-core/src/main/java/com/hdkj/lt/base/constants/SystemGlobalConstant.java

@@ -0,0 +1,99 @@
+package com.hdkj.lt.base.constants;
+
+/**
+ * @Description: 系统全局常量配置
+ * @Author: wenhao
+ * @Create: 2023/08/02 15:30
+ * @Version: 1.0
+ */
+public final class SystemGlobalConstant {
+    // 超级管理员账号
+    public static final String SUPERADMIN_ACCOUNT = "superadmin";
+
+    // 启动root包前缀
+    public static final String HUSSAR_ROOT_PACKAGE = "com.jxdinfo.hussar";
+
+    // 启动base包前缀
+    public static final String HUSSAR_BASE_PACKAGE = "com.jxdinfo.hussar.modulename";
+
+    // 启动base-dao包前缀
+    public static final String HUSSAR_DAO_PACKAGE = "com.jxdinfo.hussar.modulename.**.dao";
+
+    // 启动bizms-base包前缀
+    public static final String BIZMS_BASE_PACKAGE = "com.hdkj.lt";
+
+    // 启动bizms-dao包前缀
+    public static final String BIZMS_DAO_PACKAGE = "com.hdkj.lt.**.dao";
+
+    // 启动bizms-mapper包前缀
+    public static final String BIZMS_MAPPER_PACKAGE = "com.hdkj.lt.**.mapper";
+
+    // ---------------------------------- 服务名称 start ----------------------------------
+    // 网关服务
+    public static final String SERVICE_NAME_GATEWAY = "hussar-cloud-gateway";
+
+    // WEB服务
+    public static final String SERVICE_NAME_WEB = "hussar-web";
+
+    // 认证服务
+    public static final String SERVICE_NAME_AUTH = "hussar-cloud-auth";
+
+    // oss服务
+    public static final String SERVICE_NAME_OSS = "hussar-cloud-oss";
+
+    // 流程服务
+    public static final String SERVICE_NAME_WORKFLOW = "hussar-workflow";
+
+    // 任务调度服务
+    public static final String SERVICE_NAME_HUSSAR_JOB = "hussar-cloud-job";
+
+    // 负荷转供文件服务
+    public static final String SERVICE_NAME_LOAD_TRANSFER_IO = "load-transfer-io";
+
+    // 负荷转供定时任务服务
+    public static final String SERVICE_NAME_LOAD_TRANSFER_JOB = "load-transfer-job";
+
+    // 负荷转供异步消息服务
+    public static final String SERVICE_NAME_LOAD_TRANSFER_MQ = "load-transfer-mq";
+
+    // 负荷转供系统集成服务
+    public static final String SERVICE_NAME_LOAD_TRANSFER_SI = "load-transfer-si";
+
+    // 负荷转供系统业务功能服务
+    public static final String SERVICE_NAME_LOAD_TRANSFER_BF = "load-transfer-bf";
+
+    // SVG成图功能服务
+    public static final String SERVICE_NAME_SVG_GENERATION = "pwfhzg-encrypted";
+    // ---------------------------------- 服务名称 end ----------------------------------
+
+    // 附件数据来源 - 管理信息大区
+    public static final String FILE_DATA_SOURCES_MANAGE_INFO_AREA = "0";
+
+    // 附件数据来源 - 互联网大区
+    public static final String FILE_DATA_SOURCES_INTERNET_REGION = "1";
+
+    // 组织机构类型 - 国网
+    public static final String ORGAN_TYPE_STATE = "99";
+
+    // 组织机构类型 - 省公司
+    public static final String ORGAN_TYPE_PROVINCE = "1";
+
+    // 组织机构类型 - 地市
+    public static final String ORGAN_TYPE_CITY = "4";
+
+    // 组织机构类型 - 区县
+    public static final String ORGAN_TYPE_COUNTY = "5";
+
+    // 组织机构类型 - 班组
+    public static final String ORGAN_TYPE_TEAM = "6";
+
+    // 组织机构类型 - 供电所
+    public static final String ORGAN_TYPE_STATION = "7";
+
+    // 组织机构类型 - 人员
+    public static final String ORGAN_TYPE_USER = "9";
+
+    // 导出最大数量
+    public static final Long EXPORT_LIMIT = 5000L;
+
+}

+ 44 - 0
common/common-core/src/main/java/com/hdkj/lt/base/constraints/DateTimeValidator.java

@@ -0,0 +1,44 @@
+package com.hdkj.lt.base.constraints;
+
+import com.hdkj.lt.base.annotations.DateTimeValid;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+
+/**
+ * @Description: 日期时间字符串校验器
+ * @Author: wenhao
+ * @Create: 2021/10/20 11:16
+ * @Version: 1.0
+ */
+public class DateTimeValidator implements ConstraintValidator<DateTimeValid, String> {
+
+    private DateTimeValid dateTimeValid;
+
+    @Override
+    public void initialize(DateTimeValid dateTimeValid) {
+        this.dateTimeValid = dateTimeValid;
+    }
+
+    @Override
+    public boolean isValid(String value, ConstraintValidatorContext context) {
+        // 如果value为空则不进行格式验证,为空验证可以使用 @NotBlank @NotNull @NotEmpty 等注解来进行控制,职责分离
+        if (StringUtils.isBlank(value)) {
+            return true;
+        }
+        String format = dateTimeValid.format();
+        if (value.length() != format.length()) {
+            return false;
+        }
+        try {
+            new SimpleDateFormat(format).parse(value);
+        } catch (ParseException e) {
+            return false;
+        }
+        return true;
+    }
+
+}

+ 86 - 0
common/common-core/src/main/java/com/hdkj/lt/base/constraints/EnumValidator.java

@@ -0,0 +1,86 @@
+package com.hdkj.lt.base.constraints;
+
+import com.google.common.collect.Lists;
+import com.hdkj.lt.base.annotations.EnumValid;
+import com.hdkj.lt.base.enums.BaseValidEnum;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * @Description: 枚举校验器
+ * @Author: wenhao
+ * @Create: 2022/08/15 11:16
+ * @Version: 1.0
+ */
+public class EnumValidator implements ConstraintValidator<EnumValid, Object> {
+
+    private Class<?> enumClass;
+
+    @Override
+    public void initialize(EnumValid enumValid) {
+        this.enumClass = enumValid.enumClass();
+    }
+
+    @Override
+    public boolean isValid(Object value, ConstraintValidatorContext context) {
+        Class<?>[] interfaces = enumClass.getInterfaces();
+        if (!needValidate(interfaces)) {
+            return true;
+        }
+        try {
+            return validate(value);
+        } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
+            e.printStackTrace();
+        }
+        return false;
+    }
+
+    /**
+     * 是否需要校验,只有实现了BaseValidEnum接口,才需要校验
+     *
+     * @param interfaces
+     * @return
+     */
+    private boolean needValidate(Class<?>[] interfaces) {
+        for (Class<?> inter : interfaces) {
+            if (inter.getName().equals(BaseValidEnum.class.getName())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private boolean validate(Object value) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
+        Method valuesMethod = enumClass.getMethod(BaseValidEnum.VALUES_METHOD);
+        if (Objects.isNull(valuesMethod)) {
+            return true;
+        }
+        // 如果是空时 交给NotEmpty等注解判断
+        if (Objects.isNull(value) || Objects.equals(StringUtils.EMPTY, value)) {
+            return true;
+        }
+        BaseValidEnum<?>[] validEnums = (BaseValidEnum<?>[]) valuesMethod.invoke(null);
+        List<Object> validValues = Lists.newArrayList(Optional.of(value).map(e -> e.toString().split(",")).orElse(null));
+        for (Object validValue : validValues) {
+            boolean validRes = false; //枚举值比对,默认比对值错误
+            for (BaseValidEnum<?> validEnum : validEnums) {
+                if (Objects.equals(validEnum.getCode(), validValue)) {
+                    validRes = true; //相同比对成功
+                    break;
+                }
+            }
+            if (!validRes) { //只要是有一次比对错误就给 校验结果赋值,多次赋值也没关系
+                return false;
+            }
+        }
+        return true;
+    }
+
+}

+ 41 - 0
common/common-core/src/main/java/com/hdkj/lt/base/constraints/SpecialCharValidator.java

@@ -0,0 +1,41 @@
+package com.hdkj.lt.base.constraints;
+
+import com.hdkj.lt.base.annotations.SpecialCharValid;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @Description: 字符串特殊字符校验器(\ / : * ? " < > |)
+ * @Author: wucx
+ * @Create: 2022/10/17 14:26
+ * @Version: 1.0
+ */
+public class SpecialCharValidator implements ConstraintValidator<SpecialCharValid, String> {
+
+    private final Pattern PATTERN = Pattern.compile("[\\:*?\"<>|/]");
+    private SpecialCharValid specialCharValid;
+
+    @Override
+    public void initialize(SpecialCharValid specialCharValid) {
+        this.specialCharValid = specialCharValid;
+    }
+
+    @Override
+    public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
+        // 如果value为空则不进行格式验证,为空验证可以使用 @NotBlank @NotNull @NotEmpty 等注解来进行控制,职责分离
+        if (StringUtils.isBlank(value)) {
+            return true;
+        }
+        constraintValidatorContext.disableDefaultConstraintViolation();
+        String result = String.format("%s%s", specialCharValid.fieldName(), specialCharValid.message());
+        constraintValidatorContext.buildConstraintViolationWithTemplate(result).addConstraintViolation();
+        // 校验指定值是否包含特殊字符
+        Matcher matcher = PATTERN.matcher(value);
+        return !matcher.find();
+    }
+
+}

+ 57 - 0
common/common-core/src/main/java/com/hdkj/lt/base/constraints/StringContentValidator.java

@@ -0,0 +1,57 @@
+package com.hdkj.lt.base.constraints;
+
+import com.hdkj.lt.base.annotations.RegexValid;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import java.util.Optional;
+import java.util.regex.Pattern;
+
+/**
+ * @Description: 字符串内容正则校验器
+ * @Author: wenhao
+ * @Create: 2022/10/17 14:26
+ * @Version: 1.0
+ */
+public class StringContentValidator implements ConstraintValidator<RegexValid, String> {
+
+    private RegexValid regexValid;
+
+    @Override
+    public void initialize(RegexValid regexValid) {
+        this.regexValid = regexValid;
+    }
+
+    @Override
+    public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
+        // 如果value为空则不进行格式验证,为空验证可以使用 @NotBlank @NotNull @NotEmpty 等注解来进行控制,职责分离
+        if (StringUtils.isBlank(value)) {
+            return true;
+        }
+        // 校验指定值是否正确
+        String validValueStr = Optional.of(regexValid.value()).orElse(StringUtils.EMPTY);
+        if (StringUtils.isNotBlank(validValueStr)) {
+            for (String inputValue : value.split(",")) {
+                boolean validRes = false; //默认校验不通过
+                for (String validValue : validValueStr.split(",")) {
+                    if (StringUtils.equals(inputValue, validValue)) {
+                        validRes = true;
+                        break;
+                    }
+                }
+                if (!validRes) { //只要是有一次比对错误就给 校验结果赋值,多次赋值也没关系
+                    return false;
+                }
+            }
+            return true;
+        }
+        // 校验正则是否匹配
+        String validRegex = Optional.of(regexValid.regex()).orElse(StringUtils.EMPTY);
+        if (StringUtils.isNotBlank(validRegex)) {
+            return Pattern.matches(validRegex, value);
+        }
+        return true;
+    }
+
+}

+ 50 - 0
common/common-core/src/main/java/com/hdkj/lt/base/enums/AccountStatusEnum.java

@@ -0,0 +1,50 @@
+package com.hdkj.lt.base.enums;
+
+/**
+ * @Description: 用户账号状态标识
+ * @Author: wenhao
+ * @Create: 2023/03/24 15:52
+ * @Version: 1.0
+ */
+public enum AccountStatusEnum implements BaseValidEnum<String> {
+
+    /**
+     * 激活
+     */
+    ACTIVATE("1", "激活"),
+
+    /**
+     * 已删除
+     */
+    DELETED("2", "删除"),
+
+    /**
+     * 休眠
+     */
+    SLEEPED("3", "休眠"),
+
+    /**
+     * 注销
+     */
+    CANCELED("4", "注销");
+
+    final String code;
+
+    final String desc;
+
+    AccountStatusEnum(String code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    @Override
+    public String getDesc() {
+        return this.desc;
+    }
+
+}

+ 35 - 0
common/common-core/src/main/java/com/hdkj/lt/base/enums/BaseValidEnum.java

@@ -0,0 +1,35 @@
+package com.hdkj.lt.base.enums;
+
+import lombok.SneakyThrows;
+
+import java.lang.reflect.Method;
+import java.util.Objects;
+
+/**
+ * @Description: 枚举数据校验接口
+ * @Author: wenhao
+ * @Create: 2022/08/14 11:04
+ * @Version: 1.0
+ */
+public interface BaseValidEnum<T> {
+
+    String VALUES_METHOD = "values";
+
+    T getCode();
+
+    String getDesc();
+
+    // 根据code获取枚举类实例
+    @SneakyThrows(ReflectiveOperationException.class)
+    static <T> BaseValidEnum<T> getByCode(T code, Class<?> clazz) {
+        Method valuesMethod = clazz.getMethod(VALUES_METHOD);
+        BaseValidEnum<T>[] validEnums = (BaseValidEnum<T>[]) valuesMethod.invoke(null);
+        for (BaseValidEnum<T> value : validEnums) {
+            if (Objects.equals(String.valueOf(value.getCode()), String.valueOf(code))) {
+                return value;
+            }
+        }
+        return null;
+    }
+
+}

+ 45 - 0
common/common-core/src/main/java/com/hdkj/lt/base/enums/ChangeTypeEnum.java

@@ -0,0 +1,45 @@
+package com.hdkj.lt.base.enums;
+
+/**
+ * @Description: 数据变化类型标识
+ * @Author: wenhao
+ * @Create: 2023/03/24 15:52
+ * @Version: 1.0
+ */
+public enum ChangeTypeEnum implements BaseValidEnum<String> {
+
+    /**
+     * 删除
+     */
+    DELETE("delete", "删除"),
+
+    /**
+     * 新增
+     */
+    INSERT("insert", "新增"),
+
+    /**
+     * 修改
+     */
+    UPDATE("update", "修改");
+
+    final String code;
+
+    final String desc;
+
+    ChangeTypeEnum(String code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    @Override
+    public String getDesc() {
+        return this.desc;
+    }
+
+}

+ 34 - 0
common/common-core/src/main/java/com/hdkj/lt/base/enums/CommonUnitEnum.java

@@ -0,0 +1,34 @@
+package com.hdkj.lt.base.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 公共枚举
+ *
+ * @author gdm
+ * @date 2024-04-23
+ */
+@Getter
+@AllArgsConstructor
+public enum CommonUnitEnum {
+    P("kW", "有功"),
+    Q("Mvar", "无功"),
+    I("A", "电流"),
+    U("kV", "电压"),
+    MS("ms", "毫秒"),
+    ZERO("0", "零"),
+    ONE("1", "一"),
+    TWO("2", "二"),
+    Three("3", "三"),
+    FOUR("4", "四"),
+    FIVE("5", "五"),
+    SIX("6", "六"),
+    SEVEN("7", "七"),
+    EIGHT("8", "八"),
+    NINE("9", "九"),
+    TEN("10", "十");
+
+    private final String code;
+    private final String name;
+}

+ 52 - 0
common/common-core/src/main/java/com/hdkj/lt/base/enums/ErrorLevelEnum.java

@@ -0,0 +1,52 @@
+package com.hdkj.lt.base.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @Description: 日志严重程度
+ * @Author: liuAini
+ * @Create: 2025/07/18 10:55
+ * @Version: 1.0
+ */
+@Getter
+@AllArgsConstructor
+public enum ErrorLevelEnum {
+    /**
+     * 严重
+     */
+    FATAL("Fatal", "严重"),
+    /**
+     * 错误
+     */
+    ERROR("Error", "错误"),
+    /**
+     * 警告
+     */
+    WARNING("Warning", "警告"),
+    /**
+     * 调试输出
+     */
+    INFO("Info", "调试输出");
+
+    final String code;
+    final String name;
+
+
+    public static String getErrorLevelCode(String name) {
+        for (ErrorLevelEnum errorLevelEnum : ErrorLevelEnum.values()) {
+            if (errorLevelEnum.getName().equals(name)) {
+                return errorLevelEnum.getCode();
+            }
+        }
+        return null;
+    }
+    public static String getErrorLevelName(String code) {
+        for (ErrorLevelEnum errorLevelEnum : ErrorLevelEnum.values()) {
+            if (errorLevelEnum.getCode().equals(code)) {
+                return errorLevelEnum.getName();
+            }
+        }
+        return null;
+    }
+}

+ 56 - 0
common/common-core/src/main/java/com/hdkj/lt/base/enums/EventTypeEnum.java

@@ -0,0 +1,56 @@
+package com.hdkj.lt.base.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @Description: 日志事件类型
+ * @Author: liuAini
+ * @Create: 2025/07/18 10:55
+ * @Version: 1.0
+ */
+@Getter
+@AllArgsConstructor
+public enum EventTypeEnum {
+    /**
+     * 图模
+     */
+    TOPO_DATA("1", "图模"),
+    /**
+     * 成图
+     */
+    TOPO_FILE("2", "成图"),
+    /**
+     * 计划
+     */
+    PLAN("3", "计划"),
+    /**
+     * 故障
+     */
+    FAULT("4", "故障"),
+    /**
+     * 调优
+     */
+    ABNORMAL("5", "调优");
+
+    final String code;
+    final String name;
+
+
+    public static String getEventTypeCode(String name) {
+        for (EventTypeEnum typeEnum : EventTypeEnum.values()) {
+            if (typeEnum.getName().equals(name)) {
+                return typeEnum.getCode();
+            }
+        }
+        return null;
+    }
+    public static String getEventTypeName(String code) {
+        for (EventTypeEnum typeEnum : EventTypeEnum.values()) {
+            if (typeEnum.getCode().equals(code)) {
+                return typeEnum.getName();
+            }
+        }
+        return null;
+    }
+}

+ 37 - 0
common/common-core/src/main/java/com/hdkj/lt/base/enums/FaultTypeEnum.java

@@ -0,0 +1,37 @@
+package com.hdkj.lt.base.enums;
+
+/**
+ * @author lisonglin
+ * @date: 2025/5/30
+ * @Description
+ */
+public enum FaultTypeEnum implements BaseValidEnum<Integer>{
+
+
+    FAULT_Type_ZX(0,"整线停电"),
+
+    FAULT_Type_FD(1,"分段停电"),
+
+    FAULT_Type_FZ(2, "分支停电");
+
+
+
+    final Integer code;
+
+    final String desc;
+
+    FaultTypeEnum(Integer code, String desc){
+        this.code = code;
+        this.desc = desc;
+    }
+
+    @Override
+    public Integer getCode() {
+        return this.code;
+    }
+
+    @Override
+    public String getDesc() {
+        return this.desc;
+    }
+}

+ 56 - 0
common/common-core/src/main/java/com/hdkj/lt/base/enums/OperationStepEnum.java

@@ -0,0 +1,56 @@
+package com.hdkj.lt.base.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @Description: 日志步骤
+ * @Author: liuAini
+ * @Create: 2025/07/18 10:55
+ * @Version: 1.0
+ */
+@Getter
+@AllArgsConstructor
+public enum OperationStepEnum {
+    /**
+     * 图模获取
+     */
+    TMHQ("1", "图模获取"),
+    /**
+     * 图模解析
+     */
+    TMJX("2", "图模解析"),
+    /**
+     * 拓扑解析
+     */
+    TPJX("3", "拓扑解析"),
+    /**
+     * 故障
+     */
+    FAULT("4", "故障"),
+    /**
+     * 调优
+     */
+    ABNORMAL("5", "调优");
+
+    final String code;
+    final String name;
+
+
+    public static String getEventTypeCode(String name) {
+        for (OperationStepEnum typeEnum : OperationStepEnum.values()) {
+            if (typeEnum.getName().equals(name)) {
+                return typeEnum.getCode();
+            }
+        }
+        return null;
+    }
+    public static String getEventTypeName(String code) {
+        for (OperationStepEnum typeEnum : OperationStepEnum.values()) {
+            if (typeEnum.getCode().equals(code)) {
+                return typeEnum.getName();
+            }
+        }
+        return null;
+    }
+}

+ 67 - 0
common/common-core/src/main/java/com/hdkj/lt/base/enums/OrganTypeEnum.java

@@ -0,0 +1,67 @@
+package com.hdkj.lt.base.enums;
+
+/**
+ * @Description: 组织机构类型
+ * @Author: wenhao
+ * @Create: 2023/03/24 15:52
+ * @Version: 1.0
+ */
+public enum OrganTypeEnum implements BaseValidEnum<String> {
+
+    /**
+     * 省公司
+     */
+    PROVINCE("1", "sgs", "省公司"),
+
+    /**
+     * 地市
+     */
+    CITY("4", "ds", "地市"),
+
+    /**
+     * 区县
+     */
+    COUNTY("5", "qx", "区县"),
+
+    /**
+     * 班组
+     */
+    TEAM("6", "bs", "班组"),
+
+    /**
+     * 小组(预留,目前不存在)
+     */
+    GROUP("0", "xz", "小组"),
+
+    /**
+     * 人员
+     */
+    USER("9", "ry", "人员");
+
+    final String code;
+
+    final String desc;
+
+    final String typeName;
+
+    OrganTypeEnum(String code, String desc, String typeName) {
+        this.code = code;
+        this.desc = desc;
+        this.typeName = typeName;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    @Override
+    public String getDesc() {
+        return this.desc;
+    }
+
+    public String getTypeName() {
+        return this.typeName;
+    }
+
+}

+ 55 - 0
common/common-core/src/main/java/com/hdkj/lt/base/enums/ScoreIndicatorEnum.java

@@ -0,0 +1,55 @@
+package com.hdkj.lt.base.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author rj
+ * @date 2025/5/30 16:18
+ * @description
+ */
+@Getter
+@AllArgsConstructor
+public enum ScoreIndicatorEnum {
+    /**
+     * 评分指标:非自动化开关操作次数(次)
+     */
+    NON_AUTO_SWITCH_OPERATION_TIMES("nonAutoSwitchOperationTimes", "非自动化开关操作次数(次)"),
+    /**
+     * 评分指标:损失户数(户)
+     */
+    LOSS_USERS("lossUsers", "损失户数(户)"),
+    /**
+     * 评分指标:转出负荷比例(%)
+     */
+    TRANSFER_LOAD_RATIO("transferLoadRatio", "转出负荷比例(%)"),
+    /**
+     * 评分指标:对侧线路最大负载率(%)
+     */
+    OPPOSITE_LINE_MAX_LOAD_RATE("oppositeLineMaxLoadRate", "对侧线路最大负载率(%)"),
+    /**
+     * 评分指标:配变低电压(台)
+     */
+    DISTRIBUTION_TRANSFORMER_VOLTAGE("distributionTransformerVoltage", "配变低电压(台)"),
+    /**
+     * 评分指标:开关操作次数(次)
+     */
+    SWITCH_OPERATION_TIMES("switchOperationTimes", "开关操作次数(次)"),
+    /**
+     * 评分指标:损失保电用户数
+     */
+    LOSS_POWER_SECURED_USERS("lossPowerSecuredUsers","保电用户失电(户)");
+
+    final String indicatorCode;
+    final String indicatorName;
+
+
+    public static String getIndicatorCode(String indicatorName) {
+        for (ScoreIndicatorEnum indicatorEnum : ScoreIndicatorEnum.values()) {
+            if (indicatorEnum.getIndicatorCode().equals(indicatorName)) {
+                return indicatorEnum.getIndicatorCode();
+            }
+        }
+        return null;
+    }
+}

+ 40 - 0
common/common-core/src/main/java/com/hdkj/lt/base/enums/YesOrNoEnum.java

@@ -0,0 +1,40 @@
+package com.hdkj.lt.base.enums;
+
+/**
+ * @Description:
+ * @Author: wenhao
+ * @Create: 2023/04/14 15:41
+ * @Version: 1.0
+ */
+public enum YesOrNoEnum implements BaseValidEnum<String> {
+
+    /**
+     * 否
+     */
+    NO("0", "否"),
+
+    /**
+     * 是
+     */
+    YES("1", "是");
+
+    final String code;
+
+    final String desc;
+
+    YesOrNoEnum(String code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    @Override
+    public String getDesc() {
+        return this.desc;
+    }
+
+}

+ 56 - 0
common/common-core/src/main/java/com/hdkj/lt/base/exception/BusinessException.java

@@ -0,0 +1,56 @@
+package com.hdkj.lt.base.exception;
+
+import com.hdkj.hussar.IResultCode;
+
+/**
+ * @Description:
+ * @Author: wenhao
+ * @Create: 2022/08/12 17:49
+ * @Version: 1.0
+ */
+public class BusinessException extends RuntimeException {
+
+    private IResultCode resultCode;
+
+    public BusinessException(String message) {
+        super(message);
+    }
+
+    public BusinessException(IResultCode resultCode) {
+        this.resultCode = resultCode;
+    }
+
+    public BusinessException(String message, IResultCode resultCode) {
+        super(message);
+        this.resultCode = resultCode;
+    }
+
+    public BusinessException(String message, Throwable cause, IResultCode resultCode) {
+        super(message, cause);
+        this.resultCode = resultCode;
+    }
+
+    public BusinessException(Throwable cause, IResultCode resultCode) {
+        super(cause);
+        this.resultCode = resultCode;
+    }
+
+    public BusinessException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace, IResultCode resultCode) {
+        super(message, cause, enableSuppression, writableStackTrace);
+        this.resultCode = resultCode;
+    }
+
+    public IResultCode getResultCode() {
+        return resultCode;
+    }
+
+    public void setResultCode(IResultCode resultCode) {
+        this.resultCode = resultCode;
+    }
+
+    @Override
+    public String getMessage() {
+        return super.getMessage();
+    }
+
+}

+ 61 - 0
common/common-core/src/main/java/com/hdkj/lt/base/exception/ExceptionCast.java

@@ -0,0 +1,61 @@
+package com.hdkj.lt.base.exception;
+
+import com.hdkj.hussar.IResultCode;
+
+/**
+ * @Description: 用于抛出自定义异常的类
+ * @Author: wenhao
+ * @Create: 2021/09/08 16:15
+ * @Version: 1.0
+ */
+public class ExceptionCast {
+
+    /**
+     * 抛出异常
+     *
+     * @param resultCode 错误代码
+     */
+    public static void cast(IResultCode resultCode) {
+        cast(null, resultCode);
+    }
+
+    /**
+     * 抛出异常
+     *
+     * @param errorMessage 异常信息
+     */
+    public static void cast(String errorMessage) {
+        cast(errorMessage, null);
+    }
+
+    /**
+     * 抛出异常
+     *
+     * @param errorMessage 异常信息
+     * @param errorCode    操作代码
+     */
+    public static void cast(String errorMessage, int errorCode) {
+        cast(new IResultCode() {
+            @Override
+            public String getMessage() {
+                return errorMessage;
+            }
+
+            @Override
+            public int getCode() {
+                return errorCode;
+            }
+        });
+    }
+
+    /**
+     * 抛出异常
+     *
+     * @param errorMessage 异常信息
+     * @param resultCode   操作代码
+     */
+    public static void cast(String errorMessage, IResultCode resultCode) {
+        throw new BusinessException(errorMessage, resultCode);
+    }
+
+}

+ 30 - 0
common/common-core/src/main/java/com/hdkj/lt/base/model/entity/BaseTreeEntity.java

@@ -0,0 +1,30 @@
+package com.hdkj.lt.base.model.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author wucx
+ * @Date 2022/10/14 16:05
+ * @Version 1.0
+ */
+@Setter
+@Getter
+@ApiModel("标准树形结构VO")
+public class BaseTreeEntity<T> {
+
+    @ApiModelProperty(value = "树形节点ID")
+    private String id;
+
+    @ApiModelProperty(value = "树形节点父ID")
+    private String pid;
+
+    @ApiModelProperty(value = "树形结构子节点")
+    private List<T> children;
+
+}

+ 42 - 0
common/common-core/src/main/java/com/hdkj/lt/base/model/entity/Entity.java

@@ -0,0 +1,42 @@
+package com.hdkj.lt.base.model.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import lombok.experimental.Accessors;
+import lombok.experimental.SuperBuilder;
+
+import java.time.LocalDateTime;
+
+/**
+ * @Description: 基础实体
+ * @Author: wenhao
+ * @Create: 2022/05/15 10:13
+ * @Version: 1.0
+ */
+@Getter
+@Setter
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = true)
+public class Entity extends SuperEntity {
+
+    private static final long serialVersionUID = 7896551300681366235L;
+
+    public static final String UPDATE_BY = "updateBy";
+
+    public static final String UPDATE_TIME = "updateTime";
+
+    @ApiModelProperty(value = "最后更新人ID")
+    @TableField(value = "UPDATE_BY", fill = FieldFill.INSERT_UPDATE)
+    protected Long updateBy;
+
+    @ApiModelProperty(value = "最后更新时间")
+    @TableField(value = "UPDATE_TIME", fill = FieldFill.INSERT_UPDATE)
+    protected LocalDateTime updateTime;
+
+}

+ 69 - 0
common/common-core/src/main/java/com/hdkj/lt/base/model/entity/FhzgBaseEntity.java

@@ -0,0 +1,69 @@
+package com.hdkj.lt.base.model.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jxdinfo.hussar.platform.core.base.entity.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+
+/**
+ * @Description
+ * @Author wcx
+ * @Date 2025/5/15 18:10
+ * @Version 1.0
+ */
+@Data
+@Accessors(chain = true)
+public class FhzgBaseEntity implements BaseEntity {
+    /**
+     * 代理主键
+     */
+    @ApiModelProperty("代理主键")
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    protected Long id;
+
+    /**
+     * 创建人
+     */
+    @ApiModelProperty("创建人")
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    protected Long creator;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty("创建时间")
+    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    protected LocalDateTime createTime;
+
+    /**
+     * 最后一次修改人
+     */
+    @ApiModelProperty("最后一次修改人")
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    protected Long lastEditor;
+
+    /**
+     * 最后一次修改时间
+     */
+    @ApiModelProperty("最后一次修改时间")
+    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    protected LocalDateTime lastTime;
+
+    public FhzgBaseEntity setCreator(Long creator) {
+        this.creator = creator;
+        this.lastEditor = creator;
+        return this;
+    }
+
+    public FhzgBaseEntity setCreateTime(LocalDateTime createTime) {
+        this.createTime = createTime;
+        this.lastTime = createTime;
+        return this;
+    }
+}

+ 97 - 0
common/common-core/src/main/java/com/hdkj/lt/base/model/entity/OssEntity.java

@@ -0,0 +1,97 @@
+package com.hdkj.lt.base.model.entity;
+
+import com.hdkj.lt.base.annotations.DateTimeValid;
+import com.jxdinfo.hussar.platform.core.utils.date.format.DatePattern;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import lombok.experimental.Accessors;
+import lombok.experimental.SuperBuilder;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description:
+ * @Author: wenhao
+ * @Create: 2022/09/17 10:29
+ * @Version: 1.0
+ */
+@Getter
+@Setter
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel("oss附件信息")
+public class OssEntity {
+
+    @ApiModelProperty("文件id(管理信息大区ossid)")
+    @NotEmpty(message = "文件id不能为空")
+    private String id;
+
+    @ApiModelProperty("互联网大区ossid")
+    private String internetRegionOssid;
+
+    @ApiModelProperty("数据来源,0-内网;1-外网")
+    private String dataSources;
+
+    @ApiModelProperty("同步状态(内外网文件同步时使用):0-未同步;1-已同步")
+    private String syncStatus;
+
+    @ApiModelProperty("附件名称")
+    @NotEmpty(message = "附件名称不能为空")
+    private String attachmentName;
+
+    @ApiModelProperty("附件路径")
+    private String attachmentDir;
+
+    @ApiModelProperty("附件类型")
+    @NotEmpty(message = "附件类型不能为空")
+    private String attachmentType; //附件原始类型,如:jpg.avi等
+
+    @ApiModelProperty("文件大小")
+    @NotNull(message = "文件大小不能为空")
+    private long bytes;
+
+    @ApiModelProperty("文件路径")
+    @NotEmpty(message = "文件路径不能为空")
+    private String path;
+
+    @ApiModelProperty("文件名称")
+    @NotEmpty(message = "文件名称不能为空")
+    private String fileName;
+
+    @ApiModelProperty("文件类型")
+    private String fileType;
+
+    @ApiModelProperty("上传人")
+    @NotEmpty(message = "上传人不能为空")
+    private String uploadPer;
+
+    @ApiModelProperty("上传时间")
+    @NotEmpty(message = "上传时间不能为空")
+    @DateTimeValid(message = "上传时间格式应为:" + DatePattern.NORM_DATETIME_PATTERN)
+    private String uploadDate;
+
+    @ApiModelProperty("创建人")
+    @NotEmpty(message = "创建人不能为空")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    @NotEmpty(message = "创建时间不能为空")
+    @DateTimeValid(message = "创建时间格式应为:" + DatePattern.NORM_DATETIME_PATTERN)
+    private String createTime;
+
+    @ApiModelProperty("最后一次修改人")
+    @NotEmpty(message = "最后一次修改人不能为空")
+    private String lastEditor;
+
+    @ApiModelProperty("最后一次修改时间")
+    @NotEmpty(message = "最后一次修改时间不能为空")
+    @DateTimeValid(message = "最后一次修改时间格式应为:" + DatePattern.NORM_DATETIME_PATTERN)
+    private String lastTime;
+
+}

+ 86 - 0
common/common-core/src/main/java/com/hdkj/lt/base/model/entity/SuperEntity.java

@@ -0,0 +1,86 @@
+package com.hdkj.lt.base.model.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jxdinfo.hussar.platform.core.base.entity.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import lombok.experimental.Accessors;
+import lombok.experimental.SuperBuilder;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.validation.groups.Default;
+import java.time.LocalDateTime;
+import java.util.Objects;
+
+/**
+ * @Description: 超类基础实体
+ * @Author: wenhao
+ * @Create: 2022/05/15 10:08
+ * @Version: 1.0
+ */
+@Getter
+@Setter
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+@ToString
+@EqualsAndHashCode
+public class SuperEntity implements BaseEntity/*, Cloneable*/ {
+
+    private static final long serialVersionUID = -2945108025807370046L;
+
+    public static final String CREATE_BY = "createBy";
+
+    public static final String CREATE_TIME = "createTime";
+
+    public static final String IS_DELETE = "isDelete";
+
+    @ApiModelProperty(value = "创建人ID")
+    @TableField(value = "CREATE_BY", fill = FieldFill.INSERT)
+    protected Long createBy;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "CREATE_TIME", fill = FieldFill.INSERT)
+    protected LocalDateTime createTime;
+
+    @ApiModelProperty(value = "是否删除")
+    @TableField(value = "IS_DELETE", fill = FieldFill.INSERT)
+    protected String isDelete;
+
+    public String getTableName() {
+        TableName tableNameAnno = this.getClass().getDeclaredAnnotation(TableName.class);
+        if (Objects.nonNull(tableNameAnno)) {
+            return tableNameAnno.value();
+        }
+        return StringUtils.EMPTY;
+    }
+
+    /*@Override
+    public Object clone() {
+        // 支持克隆,提高性能,仅仅是浅克隆
+        try {
+            return super.clone();
+        } catch (CloneNotSupportedException e) {
+            ExceptionCast.cast("clone failed");
+        }
+        return null;
+    }*/
+
+    /**
+     * 保存和缺省验证组
+     */
+    public interface Save extends Default {
+
+    }
+
+    /**
+     * 更新和缺省验证组
+     */
+    public interface Update extends Default {
+
+    }
+
+}

+ 53 - 0
common/common-core/src/main/java/com/hdkj/lt/base/model/request/PaginationParam.java

@@ -0,0 +1,53 @@
+package com.hdkj.lt.base.model.request;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description: 在前后端交互时,如果使用mybatis plus的分页对象Page作为控制层请求参数时,未对分页参数进行合法校验,此处是为了重写分页属性,对属性进行合法校验
+ * @Author: wenhao
+ * @Create: 2022/10/22 12:51
+ * @Version: 1.0
+ */
+@ApiModel(value = "分页查询公共类")
+public class PaginationParam<T> extends Page<T> {
+
+    /**
+     * 当前页码
+     */
+    @ApiModelProperty(value = "当前页码", required = true)
+    @NotNull(message = "当前页码不能为空")
+    @Min(value = 1L, message = "当前页面参数必须大于等于1")
+    @Max(value = Long.MAX_VALUE, message = "当前页面参数输入过大")
+    @Getter
+    public long current;
+
+    /**
+     * 每页显示记录数
+     */
+    @ApiModelProperty(value = "每页显示记录数", required = true)
+    @NotNull(message = "每页显示记录数不能为空")
+    @Min(value = 1L, message = "每页显示记录数参数必须大于等于1")
+    @Max(value = Long.MAX_VALUE, message = "每页显示记录数参数输入过大")
+    @Getter
+    public long size;
+
+    @Override
+    public Page<T> setCurrent(long current) {
+        this.current = current;
+        return super.setCurrent(current);
+    }
+
+    @Override
+    public Page<T> setSize(long size) {
+        this.size = size;
+        return super.setSize(size);
+    }
+
+}

+ 18 - 0
common/common-core/src/main/java/com/hdkj/lt/base/model/response/PageVO.java

@@ -0,0 +1,18 @@
+package com.hdkj.lt.base.model.response;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author rj
+ * @date 2025/7/12 18:26
+ * @description
+ */
+@Data
+public class PageVO<T> {
+    private Long total;
+    private Long pageNum;
+    private Long pageSize;
+    private List<T> records;
+}

+ 148 - 0
common/common-core/src/main/java/com/hdkj/lt/base/model/response/ResultCode.java

@@ -0,0 +1,148 @@
+package com.hdkj.lt.base.model.response;
+
+import com.hdkj.hussar.IResultCode;
+
+import java.util.Objects;
+
+/**
+ * @Description: 返回状态码,轻骑兵平台已存在该类,这里重新实现,可直接追加
+ * @Author: wenhao
+ * @Create: 2022/08/12 17:51
+ * @Version: 1.0
+ */
+public enum ResultCode implements IResultCode {
+
+    /**
+     * 未知异常,请联系管理员
+     */
+    UNKNOWN(-1, "未知异常,请联系管理员"),
+    /**
+     * 请求未授权
+     */
+    UN_AUTHORIZED(401, "请求未授权"),
+    /**
+     * 客户端请求未授权
+     */
+    CLIENT_UN_AUTHORIZED(401, "客户端请求未授权"),
+    /**
+     * 没找到请求
+     */
+    NOT_FOUND(404, "404 没找到请求"),
+    /**
+     * 消息不能读取
+     */
+    MSG_NOT_READABLE(400, "消息不能读取"),
+    /**
+     * 不支持当前请求方法
+     */
+    METHOD_NOT_SUPPORTED(405, "不支持当前请求方法"),
+    /**
+     * 不支持当前请求数据格式
+     */
+    CONTENT_TYPE_NOT_SUPPORTED(406, "不支持当前请求数据格式"),
+    /**
+     * 不支持当前媒体类型
+     */
+    MEDIA_TYPE_NOT_SUPPORTED(415, "不支持当前媒体类型"),
+    /**
+     * 请求被拒绝
+     */
+    REQ_REJECT(403, "请求被拒绝"),
+    /**
+     * 请求重复,请稍后重试
+     */
+    REQ_REPETITION(407, "请求重复,请稍后重试"),
+    /**
+     * 锁等待超时
+     */
+    GET_LOCK_FAIL(408, "锁等待超时"),
+    /**
+     * 服务器异常
+     */
+    INTERNAL_SERVER_ERROR(500, "服务器异常"),
+    /**
+     * 非法参数
+     */
+    INVALID_PARAM(400, "非法参数"),
+    /**
+     * 缺少必要的请求参数
+     */
+    PARAM_MISS(400, "缺少必要的请求参数"),
+    /**
+     * 请求参数类型错误
+     */
+    PARAM_TYPE_ERROR(400, "请求参数类型错误"),
+    /**
+     * 请求参数绑定错误
+     */
+    PARAM_BIND_ERROR(400, "请求参数绑定错误"),
+    /**
+     * 参数校验失败
+     */
+    PARAM_VALID_ERROR(400, "参数校验失败"),
+    /**
+     * 网关超时
+     */
+    GATEWAY_CONNECT_TIME_OUT(000020, "网关超时"),
+    /**
+     * 服务未找到
+     */
+    GATEWAY_NOT_FOUND_SERVICE(000404, "服务未找到"),
+    /**
+     * 网关异常
+     */
+    GATEWAY_ERROR(000500, "网关异常"),
+    /**
+     * 无效token
+     */
+    INVALID_TOKEN(010010, "无效token"),
+    /**
+     * feign 服务间调用异常
+     */
+    FEIGN_TRANSFER_ERROR(15572, "feign 服务间调用异常"),
+    /**
+     *
+     */
+    INVALID_LOGIN(10099, "登录失效"),
+    /**
+     * 未知错误
+     */
+    SERVER_ERROR(99999, "未知错误");
+
+
+    int code; //操作代码
+
+    String message; //提示信息
+
+    public int getCode() {
+        return this.code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public String getMessage() {
+        return this.message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    ResultCode(final int code, final String message) {
+        this.code = code;
+        this.message = message;
+    }
+
+    public static ResultCode getByCode(int code) {
+        ResultCode[] values = values();
+        for (ResultCode item : values) {
+            if (Objects.equals(item.getCode(), code)) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+}

+ 146 - 0
common/common-core/src/main/java/com/hdkj/lt/base/serializer/BigDecimalSerializer.java

@@ -0,0 +1,146 @@
+package com.hdkj.lt.base.serializer;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Objects;
+
+/**
+ * @Description:
+ * @Author: wenhao
+ * @Create: 2022/10/18 15:10
+ * @Version: 1.0
+ */
+public class BigDecimalSerializer {
+
+    /**
+     * 去除无效0后缀
+     */
+    public static class StripTrailingZerosSerializer extends JsonSerializer<BigDecimal> {
+
+        @Override
+        public void serialize(BigDecimal value, JsonGenerator generator, SerializerProvider provider) throws IOException {
+            if (Objects.nonNull(value)) {
+                generator.writeNumber(value.stripTrailingZeros().toPlainString());
+            } else {
+                generator.writeNull();
+            }
+        }
+
+    }
+
+    /**
+     * 四舍五入,保留2位小数点,去除无效0后缀
+     */
+    public static class Keep2DecimalSerializer extends JsonSerializer<BigDecimal> {
+
+        @Override
+        public void serialize(BigDecimal value, JsonGenerator generator, SerializerProvider provider) throws IOException {
+            if (Objects.nonNull(value)) {
+                generator.writeNumber(value.setScale(2, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString());
+            } else {
+                generator.writeNull();
+            }
+        }
+
+    }
+
+    /**
+     * 四舍五入,保留3位小数点,去除无效0后缀
+     */
+    public static class Keep3DecimalSerializer extends JsonSerializer<BigDecimal> {
+
+        @Override
+        public void serialize(BigDecimal value, JsonGenerator generator, SerializerProvider provider) throws IOException {
+            if (Objects.nonNull(value)) {
+                generator.writeNumber(value.setScale(3, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString());
+            } else {
+                generator.writeNull();
+            }
+        }
+
+    }
+
+    /**
+     * 四舍五入,保留4位小数点,去除无效0后缀
+     */
+    public static class Keep4DecimalSerializer extends JsonSerializer<BigDecimal> {
+
+        @Override
+        public void serialize(BigDecimal value, JsonGenerator generator, SerializerProvider provider) throws IOException {
+            if (Objects.nonNull(value)) {
+                generator.writeNumber(value.setScale(4, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString());
+            } else {
+                generator.writeNull();
+            }
+        }
+
+    }
+
+    /**
+     * 四舍五入,保留6位小数点,去除无效0后缀
+     */
+    public static class Keep6DecimalSerializer extends JsonSerializer<BigDecimal> {
+
+        @Override
+        public void serialize(BigDecimal value, JsonGenerator generator, SerializerProvider provider) throws IOException {
+            if (Objects.nonNull(value)) {
+                generator.writeNumber(value.setScale(6, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString());
+            } else {
+                generator.writeNull();
+            }
+        }
+
+    }
+
+    /**
+     * 四舍五入,保留10位小数点,去除无效0后缀
+     */
+    public static class Keep10DecimalSerializer extends JsonSerializer<BigDecimal> {
+
+        @Override
+        public void serialize(BigDecimal value, JsonGenerator generator, SerializerProvider provider) throws IOException {
+            if (Objects.nonNull(value)) {
+                generator.writeNumber(value.setScale(10, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString());
+            } else {
+                generator.writeNull();
+            }
+        }
+
+    }
+    /**
+     * 四舍五入,保留2位小数点,直接截取(非四舍五入)
+     */
+    public static class Keep2DecimalDownSerializer extends JsonSerializer<BigDecimal> {
+
+        @Override
+        public void serialize(BigDecimal value, JsonGenerator generator, SerializerProvider provider) throws IOException {
+            if (Objects.nonNull(value)) {
+                generator.writeNumber(value.setScale(2, BigDecimal.ROUND_DOWN));
+            } else {
+                generator.writeNull();
+            }
+        }
+    }
+
+
+    /**
+     * 四舍五入,保留2位小数点,去除无效0后缀
+     */
+    public static class Keep2DoubleSerializer extends JsonSerializer<Double> {
+
+        @Override
+        public void serialize(Double value, JsonGenerator generator, SerializerProvider provider) throws IOException {
+            if (Objects.nonNull(value)) {
+                generator.writeNumber( BigDecimal.valueOf(value).setScale(2, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString());
+            } else {
+                generator.writeNull();
+            }
+        }
+
+    }
+}

+ 77 - 0
common/common-core/src/main/java/com/hdkj/lt/base/serializer/DecimalFormatJsonDeserializer.java

@@ -0,0 +1,77 @@
+package com.hdkj.lt.base.serializer;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+import com.hdkj.lt.base.annotations.DecimalFormat;
+import org.apache.commons.lang3.StringUtils;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @Description:
+ * @Author: wenhao
+ * @Create: 2022/10/18 14:07
+ * @Version: 1.0
+ */
+public class DecimalFormatJsonDeserializer extends JsonDeserializer<Object> {
+
+    private static final Pattern NUMBER_PATTERN = Pattern.compile("-?[0-9]+.?[0-9]*");
+
+    @Override
+    public Object deserialize(JsonParser parser, DeserializationContext context) {
+        // 默认是要抛出异常的,如果出现异常并且没有抛出异常的情况需要返回默认值
+        boolean isThrowException = true;
+        double defaultVal = 0.0;
+        // 当前转换的字段的类型
+        Class<?> type = null;
+        try {
+            String numStr = parser.getText();
+            Class<?> clazz = parser.getCurrentValue().getClass();
+            Field field = clazz.getDeclaredField(parser.getCurrentName());
+            // 加了注解才会进入到这个方法,这里就不再校验注解为null的情况
+            DecimalFormat annotation = field.getAnnotation(DecimalFormat.class);
+            // 保留的小数位数
+            int scale = annotation.scale();
+            // 是否抛出异常
+            isThrowException = annotation.isThrowException();
+            // 默认值
+            defaultVal = annotation.defaultVal();
+            // 格式化的规则,默认是四舍五入
+            RoundingMode roundMode = annotation.roundMode();
+            // 需要转换的字段类型
+            type = field.getType();
+            // 空字符串和非数字字符
+            if (StringUtils.isEmpty(numStr) || !isNumeric(numStr)) {
+                if (type == String.class) {
+                    return String.valueOf(defaultVal);
+                }
+                return defaultVal;
+            }
+            BigDecimal decimalValue = new BigDecimal(numStr);
+            if (type == String.class) {
+                return decimalValue.setScale(scale, roundMode).toString();
+            }
+            return decimalValue.setScale(scale, roundMode).doubleValue();
+        } catch (Exception e) {
+            if (isThrowException) {
+                throw new RuntimeException(e.getMessage());
+            } else {
+                if (type == String.class) {
+                    return String.valueOf(defaultVal);
+                }
+                return defaultVal;
+            }
+        }
+    }
+
+    public boolean isNumeric(String str) {
+        Matcher isNum = NUMBER_PATTERN.matcher(str);
+        return isNum.matches();
+    }
+
+}

+ 116 - 0
common/common-core/src/main/java/com/hdkj/lt/base/serializer/StringFormatSerializer.java

@@ -0,0 +1,116 @@
+package com.hdkj.lt.base.serializer;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+/**
+ *
+ * @author luorui
+ * @date 2025/7/8 9:21
+ * @discription
+ *
+ **/
+public class StringFormatSerializer {
+
+
+    /**
+     *
+     * 将科学计数法的字符串,转换成四舍五入保留2位的形式
+     * 1.可能为 null
+     * 2.可能是NaN
+     * 3.浮点型小数
+     * 4.科学计数法
+     * 5.要求四舍五入保留2位小数
+     */
+    public static class Keep2StringSerializer extends JsonSerializer<String> {
+        @Override
+        public void serialize(String value, JsonGenerator generator, SerializerProvider provider) throws IOException {
+            //1.可能为 null
+            if (value == null || value.trim().isEmpty() || "null".equalsIgnoreCase(value.trim())) {
+                generator.writeNull();
+                return;
+            }
+            //2.可能是NaN
+            if ("NaN".equalsIgnoreCase(value.trim())) {
+                generator.writeNull();
+                return;
+            }
+            //3.浮点型小数 4.科学计数法
+            try {
+                BigDecimal bd = new BigDecimal(value.trim());
+                //5要求四舍五入保留2位小数
+                String formatted = bd.setScale(2, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString();
+                generator.writeString(formatted);
+            } catch (Exception e) {
+                generator.writeNull();
+            }
+        }
+
+    }
+
+    /**
+     *
+     * 将科学计数法的字符串,转换成四舍五入保留2位的形式
+     * 1.可能为 null
+     * 2.可能是NaN
+     * 3.浮点型小数
+     * 4.科学计数法
+     * 5.要求四舍五入保留3位小数
+     */
+    public static class Keep3StringSerializer extends JsonSerializer<String> {
+        @Override
+        public void serialize(String value, JsonGenerator generator, SerializerProvider provider) throws IOException {
+            //1.可能为 null
+            if (value == null || value.trim().isEmpty() || "null".equalsIgnoreCase(value.trim())) {
+                generator.writeNull();
+                return;
+            }
+            //2.可能是NaN
+            if ("NaN".equalsIgnoreCase(value.trim())) {
+                generator.writeNull();
+                return;
+            }
+            //3.浮点型小数 4.科学计数法
+            try {
+                BigDecimal bd = new BigDecimal(value.trim());
+                //5要求四舍五入保留2位小数
+                String formatted = bd.setScale(3, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString();
+                generator.writeString(formatted);
+            } catch (Exception e) {
+                generator.writeNull();
+            }
+        }
+
+    }
+
+
+    /**
+     *
+     * 对字符串格式
+     * 1.可能为 null
+     * 2.可能是NaN
+     */
+    public static class NaNStringSerializer extends JsonSerializer<String> {
+        @Override
+        public void serialize(String value, JsonGenerator generator, SerializerProvider provider) throws IOException {
+            //1.可能为 null
+            if (value == null || value.trim().isEmpty() || "null".equalsIgnoreCase(value.trim())) {
+                generator.writeNull();
+                return;
+            }
+            //2.可能是NaN
+            if ("NaN".equalsIgnoreCase(value.trim())) {
+                generator.writeNull();
+                return;
+            }
+            generator.writeString(value);
+        }
+
+    }
+
+}

+ 30 - 0
common/common-core/src/main/java/com/hdkj/lt/core/aspect/ExecutionTimeLogger.java

@@ -0,0 +1,30 @@
+package com.hdkj.lt.core.aspect;
+
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description 打印执行时间
+ * @Author wcx
+ * @Date 2023/6/8 9:56
+ * @Version 1.0
+ */
+@Aspect
+@Component
+@Slf4j
+public class ExecutionTimeLogger {
+
+    // Aop打印执行时间
+    @Around("@annotation(com.hdkj.lt.base.annotations.LogExecutionTime)")
+    public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {
+        Long startTime = System.currentTimeMillis();
+        Object result = joinPoint.proceed();
+        Long endTime = System.currentTimeMillis();
+        log.info("{} 执行时间:{} ms", joinPoint.getSignature(), endTime - startTime);
+        return result;
+    }
+
+}

+ 48 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/EventQueryDTO.java

@@ -0,0 +1,48 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class EventQueryDTO {
+
+    /**
+     * 故障id
+     */
+    @ApiModelProperty(value = "故障id")
+    private Long planId;
+
+    /**
+     * 方案id
+     */
+    @ApiModelProperty(value = "方案id")
+    private Long schemeId;
+
+    /**
+     * 开关动作id
+     */
+    @ApiModelProperty(value = "开关动作id")
+    private Long switchingId;
+
+
+    @ApiModelProperty(value = "对侧线路id")
+    private Long capacityId;
+
+    @ApiModelProperty(value = "开关段范围id")
+    private Long sectionId;
+
+    /**
+     * 分页页长
+     */
+
+    private Integer pageSize = 10;
+
+    /**
+     * 分页页码
+     */
+    private Integer pageNum = 1;
+
+
+    private Integer offset;
+
+}

+ 57 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgDistCustomerDTO.java

@@ -0,0 +1,57 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class FhzgDistCustomerDTO {
+
+    /**
+     * 计划停电id
+     */
+    @ApiModelProperty(value = "计划停电ID(fhzg_plan_power_cut.id)")
+    private Long planId;
+
+    /**
+     * 计划编码
+     */
+    @ApiModelProperty(value = "计划编码")
+    private String planNo;
+
+    /**
+     * 用户类型
+     */
+    @ApiModelProperty(value = "光伏用户类型:0-非光伏,1-中压光伏,2-低压光伏")
+    private String userType;
+
+    /**
+     * 用户名称
+     */
+    @ApiModelProperty(value = "户名")
+    private String custName;
+
+    /**
+     * 对侧线路名称
+     **/
+    @ApiModelProperty(value = "对侧线路名称")
+    private String lineName;
+
+    /**
+     * 分页页长
+     */
+    private Long pageSize;
+
+    /**
+     * 分页页码
+     */
+    private Long pageNum;
+
+    /**
+     * 用户名称(变压器)
+     */
+    @ApiModelProperty(value = "用户名称")
+    private String transformerName;
+
+
+
+}

+ 39 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgFaultAwaitTransferUsersCountDTO.java

@@ -0,0 +1,39 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.hdkj.lt.base.serializer.BigDecimalSerializer;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author luorui
+ * @date 2025/5/19 16:46
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class FhzgFaultAwaitTransferUsersCountDTO implements Serializable {
+
+    //故障停电主键id
+    private Long faultId;
+
+    // 重要用户数量
+    private Integer transferCriticalUsers;
+
+    // 敏感用户数量
+    private Integer transferSensitiveUsers;
+
+    //用户负荷
+    @JsonSerialize(using = BigDecimalSerializer.Keep6DecimalSerializer.class)
+    private BigDecimal userLoads;
+
+    //用户数量
+    private Integer userCount;
+
+    //保电用户数量
+    private Integer protectUsers;
+}

+ 51 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgFaultDistCustomerDTO.java

@@ -0,0 +1,51 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class FhzgFaultDistCustomerDTO {
+
+    /**
+     * 故障停电id
+     */
+    @ApiModelProperty(value = "故障停电ID(fhzg_fault_power_cut.id)")
+    private Long faultId;
+
+    /**
+     * 用户类型
+     */
+    @ApiModelProperty(value = "光伏用户类型:0-非光伏,1-中压光伏,2-低压光伏")
+    private String userType;
+
+    /**
+     * 用户名称
+     */
+    @ApiModelProperty(value = "户名")
+    private String custName;
+
+    /**
+     * 对侧线路名称
+     **/
+    @ApiModelProperty(value = "对侧线路名称")
+    private String lineName;
+
+    /**
+     * 分页页长
+     */
+    private Long pageSize;
+
+    /**
+     * 分页页码
+     */
+    private Long pageNum;
+
+    /**
+     * 用户名称(变压器)
+     */
+    @ApiModelProperty(value = "用户名称")
+    private String transformerName;
+
+
+
+}

+ 42 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgFaultDistMappingFileDTO.java

@@ -0,0 +1,42 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author luorui
+ * @date 2025/5/16 11:09
+ * 线路图信息
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class FhzgFaultDistMappingFileDTO implements Serializable {
+
+
+    /**
+     * 主建ID
+     */
+    private Long id;
+    /**
+     * 故障停电ID
+     */
+    private Long faultId;
+    /**
+     * 配电馈线线路ID
+     */
+    private String lineId;
+    /**
+     * 附件ID
+     */
+    private Long fileId;
+    /**
+     * 附件类型(1:单线SVG图,2:单线图XML,3:开关段图,4:一级联络图,5:运行调优图)
+     */
+    private String fileType;
+
+
+}

+ 86 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgFaultTransferSchemePathDetailDTO.java

@@ -0,0 +1,86 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.hdkj.lt.base.serializer.BigDecimalSerializer;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author luorui
+ * @date 2025/5/15 17:53
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class FhzgFaultTransferSchemePathDetailDTO implements Serializable {
+    /**
+     * 主建ID
+     */
+    private Long id;
+
+    /**
+     * 方案id(fhzg_fault_transfer_scheme.id)
+     */
+    private Long schemeId;
+    /**
+     * 对侧联络线路ID
+     */
+    private String oppositeLineId;
+    /**
+     * 对侧联络线路名称
+     */
+    private String oppositeLineName;
+    /**
+     * 开关ID(展开动作联络开关ID)
+     */
+    private String switchId;
+    /**
+     * 开关名称(展开动作联络开关名称)
+     */
+    private String switchName;
+    /**
+     * 带供开关段ID(联络开关带供开关段,多个开关段时用,隔开)
+     */
+    private String switchSectionId;
+    /**
+     * 带供开关段名称(联络开关带供开关段,多个开关段时用,隔开)
+     */
+    private String switchSectionName;
+    /**
+     * 开关段负荷(supplyArea添加的breakerPsrIds及负荷信息,累加计算)
+     */
+    @JsonSerialize(using = BigDecimalSerializer.Keep6DecimalSerializer.class)
+    private BigDecimal switchSectionLoads;
+    /**
+     * 终点开关ID(多个开关时用,隔开)
+     */
+    private String endSwitchId;
+    /**
+     * 终点开关名称(多个开关时用,隔开)
+     */
+    private String endSwitchName;
+    /**
+     * 起点开关名称
+     */
+    private String startSwitchId;
+    /**
+     * 终点开关名称
+     */
+    private String startSwitchName;
+    /**
+     * 带供负载率
+     */
+    @JsonSerialize(using = BigDecimalSerializer.Keep2DecimalSerializer.class)
+    private BigDecimal loadFactor;
+    /**
+     * 带转供负荷累计总数
+     */
+    @JsonSerialize(using = BigDecimalSerializer.Keep6DecimalSerializer.class)
+    private BigDecimal totalSwitchSectionLoads;
+
+
+}

+ 41 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgFaultTransferSchemeUsersReqDTO.java

@@ -0,0 +1,41 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author luorui
+ * @date 2025/5/17 11:16
+ * 损失用户查询条件
+ *
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class FhzgFaultTransferSchemeUsersReqDTO implements Serializable {
+
+    /**
+     * 组合方案ID
+     */
+    private Long id;
+
+    /**
+     * 查询类型,1-损失用户,2-失电用户(要用,敏感,保电用户)
+     */
+    private String queryType;
+
+    /**
+     * 分页页长
+     */
+    private Long pageSize;
+
+    /**
+     * 分页页码
+     */
+    private Long pageNum;
+
+
+}

+ 84 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgGridOperationAbnormalityDTO.java

@@ -0,0 +1,84 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+public class FhzgGridOperationAbnormalityDTO {
+
+    /**
+     * 分页页长
+     */
+    private Integer pageSize;
+
+    /**
+     * 分页页码
+     */
+    private Integer pageNum;
+
+    /**
+     * 线路名称
+     */
+    @ApiModelProperty(value = "线路名称")
+    private String feederName;
+
+    /**
+     * 所属区县编码
+     */
+    @ApiModelProperty(value = "所属区县")
+    private String countyCode;
+
+    /**
+     * 运行异常转供id
+     */
+    @ApiModelProperty(value = "运行异常转供id")
+    private String oaId;
+
+    /**
+     * 越限开始时间
+     */
+    @ApiModelProperty(value = "越限开始时间")
+    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime volStartTime;
+
+    /**
+     * 越限结束时间
+     */
+    @ApiModelProperty(value = "越限结束时间")
+    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime volEndTime;
+
+    /**
+     * 转供前负载率(0重载,1超载)
+     */
+    @ApiModelProperty(value = "转供前负载率状态(0重载,1超载)")
+    private List<Integer> loadTypeBefore;
+
+    /**
+     * 转供后负载率(0重载,1超载,2负载率上升,3负载率下降)
+     */
+    @ApiModelProperty(value = "转供后负载率状态(0重载,1超载,2负载率上升,3负载率下降)")
+    private List<Integer> loadTypeAfter;
+
+    /**
+     * 转供前电压越限状态(0越上限,1越下限)
+     */
+    @ApiModelProperty(value = "转供前电压越限状态(0越上限,1越下限)")
+    private List<Integer> voltageTypeBefore;
+
+    /**
+     * 转供后电压越限状态(0越上限,1越下限)
+     */
+    @ApiModelProperty(value = "转供后电压越限状态(0越上限,1越下限)")
+    private List<Integer> voltageTypeAfter;
+
+    /**
+     * 区县Id集合,查询条件,如果 前端传了countyCode,则不需要设置值
+     */
+    private List<Long> countyCodeList;
+
+}

+ 39 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgPlanAwaitTransferUsersCountDTO.java

@@ -0,0 +1,39 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.hdkj.lt.base.serializer.BigDecimalSerializer;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author luorui
+ * @date 2025/5/19 16:46
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class FhzgPlanAwaitTransferUsersCountDTO implements Serializable {
+
+    //停电计划主键id
+    private Long planId;
+
+    // 重要用户数量
+    private Integer transferCriticalUsers;
+
+    // 敏感用户数量
+    private Integer transferSensitiveUsers;
+
+    //用户负荷
+    @JsonSerialize(using = BigDecimalSerializer.Keep6DecimalSerializer.class)
+    private BigDecimal userLoads;
+
+    //用户数量
+    private Integer userCount;
+
+    //保电用户
+    private Integer protectUsers;
+}

+ 13 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgPlanTransferSchemeAllSwitchDTO.java

@@ -0,0 +1,13 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import lombok.Data;
+
+/**
+ * @author rj
+ * @date 2025/6/30 19:43
+ * @description
+ */
+@Data
+public class FhzgPlanTransferSchemeAllSwitchDTO {
+    private Long schemeId;
+}

+ 41 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgPlanTransferSchemeEvaluationIndexDTO.java

@@ -0,0 +1,41 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.hdkj.lt.base.serializer.BigDecimalSerializer;
+import com.hdkj.lt.core.bizms.modle.po.plan.FhzgPlanTransferSchemeEvaluationIndex;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author luorui
+ * @date 2025/5/23 15:12
+ */
+@Data
+@Accessors(chain = true)
+public class FhzgPlanTransferSchemeEvaluationIndexDTO extends FhzgPlanTransferSchemeEvaluationIndex implements Serializable {
+
+    /**
+     * 方案名称
+     **/
+    private Long schemeId;
+
+    /**
+     * 方案名称
+     **/
+    private String schemeName;
+
+    /**
+     * 方案状态
+     **/
+    private String schemeState;
+
+    /**
+     * 方案评分
+     */
+    @JsonSerialize(using = BigDecimalSerializer.Keep2DecimalSerializer.class)
+    private BigDecimal evaluationScore;
+
+}

+ 86 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgPlanTransferSchemePathDetailDTO.java

@@ -0,0 +1,86 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.hdkj.lt.base.serializer.BigDecimalSerializer;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author luorui
+ * @date 2025/5/15 17:53
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class FhzgPlanTransferSchemePathDetailDTO implements Serializable {
+    /**
+     * 主建ID
+     */
+    private Long id;
+
+    /**
+     * 方案id(fhzg_plan_transfer_scheme.id)
+     */
+    private Long schemeId;
+    /**
+     * 对侧联络线路ID
+     */
+    private String oppositeLineId;
+    /**
+     * 对侧联络线路名称
+     */
+    private String oppositeLineName;
+    /**
+     * 开关ID(展开动作联络开关ID)
+     */
+    private String switchId;
+    /**
+     * 开关名称(展开动作联络开关名称)
+     */
+    private String switchName;
+    /**
+     * 带供开关段ID(联络开关带供开关段,多个开关段时用,隔开)
+     */
+    private String switchSectionId;
+    /**
+     * 带供开关段名称(联络开关带供开关段,多个开关段时用,隔开)
+     */
+    private String switchSectionName;
+    /**
+     * 开关段负荷(supplyArea添加的breakerPsrIds及负荷信息,累加计算)
+     */
+    @JsonSerialize(using = BigDecimalSerializer.Keep6DecimalSerializer.class)
+    private BigDecimal switchSectionLoads;
+    /**
+     * 终点开关ID(多个开关时用,隔开)
+     */
+    private String endSwitchId;
+    /**
+     * 终点开关名称(多个开关时用,隔开)
+     */
+    private String endSwitchName;
+    /**
+     * 起点开关名称
+     */
+    private String startSwitchId;
+    /**
+     * 终点开关名称
+     */
+    private String startSwitchName;
+    /**
+     * 带供负载率
+     */
+    @JsonSerialize(using = BigDecimalSerializer.Keep2DecimalSerializer.class)
+    private BigDecimal loadFactor;
+    /**
+     * 带转供负荷累计总数
+     */
+    @JsonSerialize(using = BigDecimalSerializer.Keep6DecimalSerializer.class)
+    private BigDecimal totalSwitchSectionLoads;
+
+
+}

+ 45 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgPlanTransferSchemeUsersReqDTO.java

@@ -0,0 +1,45 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author luorui
+ * @date 2025/5/17 11:16
+ * 损失用户查询条件
+ *
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class FhzgPlanTransferSchemeUsersReqDTO implements Serializable {
+
+    /**
+     * 组合方案ID
+     */
+    private Long id;
+
+    /**
+     * 查询类型,1-损失用户,2-失电用户(要用,敏感,保电用户)
+     */
+    private String queryType;
+
+    /**
+     * 分页页长
+     */
+    private Long pageSize;
+
+    /**
+     * 分页页码
+     */
+    private Long pageNum;
+
+    /**
+     * 计划停电区域方案ID(fhzg_plan_transfer_scheme.id)
+     */
+    private Long schemeId;
+
+}

+ 172 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/FhzgSwitchProtectionSettingsBaseReadExcelConfig.java

@@ -0,0 +1,172 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import com.hdkj.lt.utils.poi.BaseReadExcelConfig;
+import com.hdkj.lt.utils.poi.ExcelImport;
+import lombok.Data;
+
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author luorui
+ * @date 2025/6/16 17:13
+ */
+@Data
+public class FhzgSwitchProtectionSettingsBaseReadExcelConfig implements BaseReadExcelConfig {
+
+    public static final String SHEET_NAME = "sheet1";
+
+    /**
+     * 所属区县
+     */
+    @ExcelImport("maintOrgName")
+    private String maintOrgName;
+
+    /**
+     * 所属线路
+     */
+    @ExcelImport("feederName")
+    private String feederName;
+
+    /**
+     * 开关名称
+     */
+    @ExcelImport("switchName")
+    private String switchName;
+    /**
+     * 开关id
+     */
+    @ExcelImport(value = "switchId", required = true)
+    private String switchId;
+
+    /**
+     * 是否联络开关 1-是,0-否
+     */
+    @ExcelImport("isContactSwitch")
+    private String isContactSwitch;
+    /**
+     * 联络是否有效,1-有效,0-无效
+     */
+    @ExcelImport("contactEffective")
+    private String contactEffective;
+
+
+    /**
+     * 开关隐患类型
+     */
+    @ExcelImport("hazardType")
+    private String hazardType;
+
+    /**
+     * 开关描述
+     */
+    @ExcelImport(value = "hazardDesc")
+    private String hazardDesc;
+
+
+    /**
+     * 过流I段定值
+     */
+    @ExcelImport("oc1Value")
+    private String oc1Value;
+
+    /**
+     * 过流I段延迟
+     */
+    @ExcelImport("oc1Delay")
+    private String oc1Delay;
+
+    /**
+     * 设置类型1-告警,2-跳闸
+     */
+    @ExcelImport("oc1Setting")
+    private String oc1Setting;
+
+    /**
+     * 过流II段定值
+     */
+    @ExcelImport("oc2Value")
+    private String oc2Value;
+
+    /**
+     * 过流II段延迟
+     */
+    @ExcelImport("oc2Delay")
+    private String oc2Delay;
+    /**
+     * 设置类型1-告警,2-跳闸
+     */
+    @ExcelImport("oc2Setting")
+    private String oc2Setting;
+
+    /**
+     * 过流III段定值
+     */
+    @ExcelImport("oc3Value")
+    private String oc3Value;
+
+    /**
+     * 过流III段延迟
+     */
+    @ExcelImport("oc3Delay")
+    private String oc3Delay;
+
+    /**
+     * 设置类型1-告警,2-跳闸
+     */
+    @ExcelImport("oc3Setting")
+    private String oc3Setting;
+
+    //保护投退 (0-退出 1-投入)
+    @ExcelImport("protEnableStatus")
+    private String protEnableStatus;
+
+    //重合闸 (0-退出 1-投入)
+    @ExcelImport("recloseEnableStatus")
+    private String recloseEnableStatus;
+
+    /**
+     *
+     * @author luorui
+     * @date 2025/6/16 14:53
+     * @discription
+     *
+     **/
+    public static BaseReadExcelConfig[] values() {
+        FhzgSwitchProtectionSettingsBaseReadExcelConfig fhzgSwitchProtectionSettingsBaseReadExcelConfig = new FhzgSwitchProtectionSettingsBaseReadExcelConfig();
+        BaseReadExcelConfig[] configs = new BaseReadExcelConfig[1];
+        configs[0] = fhzgSwitchProtectionSettingsBaseReadExcelConfig;
+        return configs;
+    }
+
+    @Override
+    public String getSheetName() {
+        return SHEET_NAME;
+    }
+
+    @Override
+    public String getCode() {
+        return SHEET_NAME;
+    }
+
+    @Override
+    public int getStartRead() {
+        return 1;
+    }
+
+    //导出数据的表头顺序是按照当前对象属性列表顺序赋值的所以,excel中表头的属性顺序要和对象中属性顺序保持一致
+    @Override
+    public List<String> getColumns() {
+        Field[] fields = FhzgSwitchProtectionSettingsBaseReadExcelConfig.class.getDeclaredFields();
+        List<String> fileNameList = Arrays.stream(fields).map(Field::getName).collect(Collectors.toList());
+        return fileNameList;
+    }
+
+    @Override
+    public Map<String, String> getHeaderCol() {
+        return null;
+    }
+}

+ 59 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/SchemeQueryDTO.java

@@ -0,0 +1,59 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SchemeQueryDTO {
+
+    /**
+     * 线路Id
+     */
+    @ApiModelProperty(value = "停电计划id")
+    private String feederId;
+    /**
+     * 停电计划id
+     */
+    @ApiModelProperty(value = "停电计划id")
+    private Long planId;
+
+    /**
+     * 计划方案id
+     */
+    @ApiModelProperty(value = "方案id")
+    private Long schemeId;
+
+    /**
+     * 开关动作id
+     */
+    @ApiModelProperty(value = "开关动作id")
+    private Long switchingId;
+
+
+    @ApiModelProperty(value = "对侧线路id")
+    private Long capacityId;
+
+    @ApiModelProperty(value = "开关段范围id")
+    private Long sectionId;
+
+    /**
+     * 分页页长
+     */
+
+    private Integer pageSize = 10;
+
+    /**
+     * 负荷段开关ID
+     */
+    @ApiModelProperty(value = "负荷段开关ID")
+    private String loadSwitchId;
+
+    /**
+     * 分页页码
+     */
+    private Integer pageNum = 1;
+
+
+    private Integer offset;
+
+}

+ 127 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/StateEstimation.java

@@ -0,0 +1,127 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class StateEstimation {
+
+    /**
+     * 设备数据集合
+     */
+    private List<StateEstimationCommonResult> periodEquipResult;
+
+    /**
+     * 线路状估数据集合
+     */
+    private List<StateEstimationCommonResult> periodFeederSeResult;
+
+//    /**
+//     *  公变状估数据集合
+//     */
+//    private List<StateEstimationSwitchResult> periodMVTransSeResult;
+//
+//    /**
+//     * 中压用户估数据集合
+//     */
+//    private List<StateEstimationSwitchResult> periodEnergyConsumerSeResult;
+//
+//    /**
+//     * 中压光伏状估数据集合
+//     */
+//    private List<StateEstimationSwitchResult> periodPVSeResult;
+//
+//    /**
+//     * 线路段状估数据集合
+//     */
+//    private List<StateEstimationSwitchResult> periodSegmentSeResult;
+
+    /**
+     * 开关状估数据集合
+     */
+    private List<StateEstimationSwitchResult> periodSwitchSeResult;
+
+    private List<String> pointTime;
+
+    @Data
+    public static class StateEstimationCommonResult {
+        /**
+         * 设备 ID
+         */
+        private String psrId;
+        /**
+         * 设备类型
+         */
+        private String psrType;
+        /**
+         * 负 载 率 集 合 ( 1 天 96 个点)
+         */
+        private List<String> loadRates;
+        /**
+         * 量测有功集合(1 天 96 个点)
+         */
+        private List<String> seiPs;
+        /**
+         * 量测无功集合(1 天 96 个点)
+         */
+        private List<String> seiQs;
+        /**
+         * 量测电压集合(1 天 96 个点)
+         */
+        private List<String> seiUs;
+        /**
+         * 量测电流集合(1 天 96 个点)
+         */
+        private List<String> seiIs;
+        /**
+         * 状估有功集合(1 天 96 个点)
+         */
+        private List<String> seoPs;
+        /**
+         * 状估无功集合(1 天 96 个点)
+         */
+        private List<String> seoQs;
+        /**
+         * 状估电压集合(1 天 96 个点)
+         */
+        private List<String> seoUs;
+        /**
+         * 状估电流集合(1 天 96 个点)
+         */
+        private List<String> seoIs;
+
+        /**
+         * 开关是否为自动化开关
+         */
+        private String isAuto;
+
+    }
+
+    @Data
+    public static class StateEstimationSwitchResult extends StateEstimationCommonResult {
+        /**
+         * 分合状态量测值
+         */
+        private List<String> seiStatuss;
+        /**
+         * 分合状态估计值量测值
+         */
+        private List<String> seoStatuss;
+        /**
+         * 所属线路ID
+         */
+        private String feederId;
+        /**
+         * 是否自动化设备
+         */
+        private String isAuto;
+    }
+
+}

+ 32 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/StrategyconfigDetailEntryDTO.java

@@ -0,0 +1,32 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class StrategyconfigDetailEntryDTO  {
+    private Long id;
+    /**
+     * 策略配置ID
+     */
+    private Long strategyId;
+    /**
+     * 指标名称
+     */
+    private String indicatorName;
+    /**
+     * 指标Code
+     */
+    private String indicatorCode;
+    /**
+     * 优先级
+     */
+    private Integer priority;
+    /**
+     * 是否启用 0:启用,1:未启用
+     */
+    private Integer enable;
+}

+ 45 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/TransferSchemeEvaluationReqDTO.java

@@ -0,0 +1,45 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author luorui
+ * @date 2025/5/23 15:30
+ */
+@Data
+public class TransferSchemeEvaluationReqDTO implements Serializable {
+
+
+    /**
+     * 方案id
+     */
+    private Long schemeId;
+
+    /**
+     * 计划停电ID
+     */
+    private Long planId;
+    /**
+     * 分页页长
+     */
+    private Long pageSize;
+
+    /**
+     * 分页页码
+     */
+    private Long pageNum;
+
+    /**
+     * 开关类型
+     */
+    private String switchType;
+
+    /**
+     * 故障停电ID
+     */
+    private Long faultId;
+
+}

+ 15 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/TransformerNameDTO.java

@@ -0,0 +1,15 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import lombok.Data;
+
+/**
+ * @author rj
+ * @date 2025/8/14 16:01
+ * @description
+ */
+@Data
+public class TransformerNameDTO {
+    private String joinEc;
+    private String dedicatedName;
+    private String transformerName;
+}

+ 57 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/UserListQueryDTO.java

@@ -0,0 +1,57 @@
+package com.hdkj.lt.core.bizms.modle.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author luorui
+ * @date 2025/6/11 16:36
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class UserListQueryDTO implements Serializable {
+
+    /**
+     * 查询用户类型,1-主干线路负荷点,2-开关段负荷点
+     */
+    private String queryType;
+    /**
+     * 负荷开关段id(psrId)
+     */
+    private String loadSwitchId;
+
+    /**
+     * 线路id(psrId)
+     */
+    private String lineId;
+    /**
+     * 分页页长
+     */
+    private Long pageSize;
+
+    /**
+     * 分页页码
+     */
+    private Long pageNum;
+
+    /**
+     * 中压接入点ID(psrId)
+     */
+    private String joinEc;
+
+    /**
+     * 新增不同场景下查询条件(计划/故障/线路/方案/运行调优ID)
+     */
+    private String objId;
+
+    /**
+     * 搜索设备id
+     */
+    private String psrId;
+}

+ 50 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/AwaitTransferPathVO.java

@@ -0,0 +1,50 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 14:12
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AwaitTransferPathVO {
+
+    /**
+     * 馈线Id
+     */
+    private String lineId;
+
+    /**
+     * 馈线名称
+     */
+    private String lineName;
+
+    /**
+     * 负荷(kW)
+     */
+    private BigDecimal loads;
+
+    /**
+     * 额定电流(单位A)
+     */
+    private BigDecimal rateCurrent;
+
+    /**
+     * 联络开关id
+     */
+    private String switchId;
+
+    /**
+     * 待转供线路路径开关渲染,(初始渲染对侧线路用)
+     */
+    private List<BreakerAreaVO> breakerAreaVOList;
+
+
+}

+ 77 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/AwaitTransferUserVO.java

@@ -0,0 +1,77 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 14:12
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AwaitTransferUserVO {
+
+    /**
+     * 用户Id
+     */
+    private String userId;
+    /**
+     * 用户Id
+     */
+    private String userName;
+
+    /**
+     * 用户类型
+     */
+    private String userType;
+
+    /**
+     * 所属馈线Id
+     */
+    private String lineId;
+
+    /**
+     * 所属馈线名称
+     */
+    private String lineName;
+
+    /**
+     * 用户负荷(kW)
+     */
+    private BigDecimal userLoads;
+
+
+    /**
+     * 负荷点开关id
+     */
+    private String  loadSwitchId;
+
+    /**
+     * 是否重要用户:0-否,1-是
+     */
+    private String isCriticalUser;
+
+    /**
+     * 是否敏感用户:0-否,1-是
+     */
+    private String isSensitiveUser;
+
+    /**
+     * 是否双电源用户:0-否,1-是
+     */
+    private String isDualPower;
+
+    /**
+     * 是否保电用户:0-否,1-是
+     */
+    private String isProtectPower;
+
+
+    // todo  用户电流,电压,功率曲线图数据
+
+
+}

+ 32 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/BreakerAreaVO.java

@@ -0,0 +1,32 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+public class BreakerAreaVO implements Serializable {
+
+    @ApiModelProperty(value = "是否整线开关;1 是 0 否")
+    String isFullLine;
+
+    @ApiModelProperty(value = "开始开关")
+    String startSwitch;
+
+    @ApiModelProperty(value = "中间开关")
+    List<String> midSwitch;
+
+    @ApiModelProperty(value = "终止开关开关")
+    List<String> endSwitch;
+
+    @ApiModelProperty(value = "对侧联络线路ID")
+    String oppositeLineId;
+}

+ 40 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/EvaluationHeadVO.java

@@ -0,0 +1,40 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author luorui
+ * @date 2025/5/23 15:05
+ * <p>
+ * 评比指标信息
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class EvaluationHeadVO implements Serializable {
+
+
+    /**
+     * 指标code
+     **/
+    private String code;
+    /**
+     * 指标名称
+     **/
+    private String name;
+    /**
+     * 是否策略指标 1-是,0-否
+     **/
+    private int isStrategy;
+
+    /**
+     * 排序 策略指标在上固定指标在下
+     **/
+    private int sort;
+
+
+}

+ 51 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/FhzgDistLineSwitchSectionVO.java

@@ -0,0 +1,51 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author rj
+ * @date 2025/7/2 9:13
+ * @description
+ */
+@Data
+public class FhzgDistLineSwitchSectionVO {
+    /**
+     * 主键
+     */
+    private Long id;
+    /**
+     * 计划/故障/线路/方案/运行调优ID
+     */
+    private String objId;
+    /**
+     * 起点开关ID
+     */
+    private String startSwitchId;
+    /**
+     * 终点开关ID(多个,拼接)
+     */
+    private String endSwitchId;
+    /**
+     * 开关数
+     */
+    private Long switchCount;
+    /**
+     * 公变数
+     */
+    private Long gbCount;
+    /**
+     * 配变数
+     */
+    private Long pbCount;
+    /**
+     * 负荷点详情SVG附件ID
+     */
+    private Long fileId;
+
+    /**
+     * 缩略图中隐藏的开关
+     */
+    List<String> otherkglist;
+}

+ 42 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/FhzgPlanDistMappingFileVO.java

@@ -0,0 +1,42 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author luorui
+ * @date 2025/5/16 11:09
+ * 线路图信息
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class FhzgPlanDistMappingFileVO implements Serializable {
+
+
+    /**
+     * 主建ID
+     */
+    private Long id;
+    /**
+     * 计划ID
+     */
+    private Long planId;
+    /**
+     * 配电馈线线路ID
+     */
+    private String lineId;
+    /**
+     * 附件ID
+     */
+    private Long fileId;
+    /**
+     * 附件类型(1:单线SVG图,2:单线图XML,3:开关段图,4:一级联络图,5:运行调优图)
+     */
+    private String fileType;
+
+
+}

+ 46 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/FhzgPlanTransferSchemeStrategyScoreVO.java

@@ -0,0 +1,46 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.hdkj.lt.base.serializer.BigDecimalSerializer;
+import com.hdkj.lt.core.bizms.modle.po.plan.FhzgPlanTransferSchemeStrategyScore;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author luorui
+ * @date 2025/5/23 17:43
+ *
+ * 方案评分详情
+ */
+@Data
+public class FhzgPlanTransferSchemeStrategyScoreVO extends FhzgPlanTransferSchemeStrategyScore implements Serializable {
+
+    /**
+     * 方案名称
+     **/
+    private Long schemeId;
+
+    /**
+     * 方案名称
+     **/
+    private String schemeName;
+
+    /**
+     * 方案状态
+     **/
+    private String schemeState;
+
+    /**
+     * 方案评分
+     */
+    @JsonSerialize(using = BigDecimalSerializer.Keep2DecimalSerializer.class)
+    private BigDecimal evaluationScore;
+
+    /**
+     * 策略id
+     */
+    private Long strategyId;
+
+}

+ 53 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/OppositePathVO.java

@@ -0,0 +1,53 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 14:59
+ * <p>
+ * 带供路径
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+public class OppositePathVO {
+
+    /**
+     * 本侧线路名称
+     **/
+    private String lineId;
+
+    /**
+     * 本侧线路名称
+     **/
+    private String lineName;
+
+    /**
+     * 带供负荷(MW)
+     */
+    private String carriedLoad;
+    /**
+     * 额定电流
+     */
+    private String rateCurrent;
+    /**
+     * 带供后电流
+     */
+    private String afterI;
+    /**
+     * 带供后负载率(%)
+     */
+    private String afterTransferLoadRate;
+    /**
+     * 转供路径查询开关段( 渲染对侧线路用)
+     */
+    private List<BreakerAreaVO> breakerAreaVOList;
+
+}

+ 70 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/SchemeScoreListVO.java

@@ -0,0 +1,70 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 14:27
+ *
+ * 方案评分数据
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class SchemeScoreListVO {
+
+    /**
+     * 方案id
+     */
+    private String schemeId;
+
+    /**
+     * 方案名称
+     */
+    private String schemeName;
+
+    /**
+     * 方案状态,01-已确认,02-未确认
+     */
+    private String schemeState;
+
+    /**
+     * 待转供负荷(MW)
+     */
+    private String toBeTransferLoad;
+
+    /**
+     * 带供负荷(MW)
+     */
+    private String carriedLoad;
+
+    /**
+     * 转出负荷比例(%)
+     */
+    private String transferLoadRatio;
+
+
+    /**
+     * 待转供负荷(MW)得分
+     */
+    private String toBeTransferLoadScore;
+
+    /**
+     * 带供负荷(MW)得分
+     */
+    private String carriedLoadScore;
+
+    /**
+     * 转出负荷比例(%)得分
+     */
+    private String transferLoadRatioScore;
+
+    /**
+     * 方案综合评分
+     */
+    private String evaluationScore;
+
+
+}

+ 48 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferDistributionVoltageVO.java

@@ -0,0 +1,48 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 15:14
+ * 配变低电压
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+public class TransferDistributionVoltageVO {
+
+    /**
+     * 用户id
+     **/
+    private String userId;
+
+    /**
+     * 用户名称
+     **/
+    private String userName;
+
+    /**
+     * 用户类型
+     **/
+    private String userType;
+
+    /**
+     * 转供后电压
+     **/
+    private String afterTransferVol;
+
+    /**
+     * 电压越限幅度(%)
+     **/
+    private String volOverLimit;
+    /**
+     * 电压越限类型(1越下限 2越上限 3未越限)
+     */
+    private String volType;
+
+}

+ 40 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferLineLossDetailVO.java

@@ -0,0 +1,40 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 15:17
+ * 线路损坏
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+public class TransferLineLossDetailVO {
+
+    /**
+     * 线路名称
+     **/
+    private String lineId;
+
+    /**
+     * 线路名称
+     **/
+    private String lineName;
+
+    /**
+     * 转供前线损
+     **/
+    private String beforeTransferLineLoss;
+
+    /**
+     * 转供后线损
+     **/
+    private String afterTransferLineLoss;
+
+
+}

+ 34 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferLineLossVO.java

@@ -0,0 +1,34 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 15:17
+ * 线路损坏
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class TransferLineLossVO {
+
+    /**
+     * 转供前线损(kW)
+     **/
+    private String beforeTransferLineLossCount;
+
+    /**
+     * 转供后线损(kW)
+     **/
+    private String afterTransferLineLossCount;
+
+    /**
+     * 转供线损列表
+     **/
+    private List<TransferLineLossDetailVO> transferLineLossDetailVOList;
+
+}

+ 56 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferLoseUserVO.java

@@ -0,0 +1,56 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 15:13
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class TransferLoseUserVO {
+    /**
+     * 用户id
+     **/
+    private String userId;
+
+    /**
+     * 用户名称
+     **/
+    private String userName;
+
+    /**
+     * 配变类型
+     **/
+    private String transferType;
+
+    /**
+     * 用户类型
+     **/
+    private String userType;
+
+    /**
+     * 是否重要用户:0-否,1-是
+     */
+    private String isCriticalUser;
+
+    /**
+     * 是否敏感用户:0-否,1-是
+     */
+    private String isSensitiveUser;
+
+    /**
+     * 是否双电源用户:0-否,1-是
+     */
+    private String isDualPower;
+
+    /**
+     * 是否保电用户:0-否,1-是
+     */
+    private String isProtectPower;
+
+
+}

+ 59 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferPathVO.java

@@ -0,0 +1,59 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 14:59
+ *
+ * 方案转供路径
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+public class TransferPathVO {
+
+    /**
+     * 本侧线路名称
+     **/
+    private String lineId;
+
+    /**
+     * 本侧线路名称
+     **/
+    private String lineName;
+
+    /**
+     * 对侧联络线路ID
+     */
+    private String oppositeLineId;
+
+    /**
+     * 对侧联络线路名称
+     */
+    private String oppositeLineName;
+
+    /**
+     * 转出负荷(MW)
+     */
+    private String transferLoad;
+    /**
+     * 转出负荷比例(%)
+     */
+    private String transferLoadRatio;
+    /**
+     * 带供负荷(MW)
+     */
+    private String carriedLoad;
+    /**
+     * 转供路径查询开关段( 渲染对侧线路用)
+     */
+    private List<BreakerAreaVO> breakerAreaVOList;
+
+}

+ 36 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferSchemeEvaluationIndexVO.java

@@ -0,0 +1,36 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+
+import com.hdkj.lt.core.bizms.modle.dto.FhzgPlanTransferSchemeEvaluationIndexDTO;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author luorui
+ * @date 2025/5/23 15:00
+ * 摘要模式评比指标
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class TransferSchemeEvaluationIndexVO implements Serializable  {
+
+    /**
+     *
+     *表头信息
+     *
+     **/
+    private List<EvaluationHeadVO> headList;
+
+    /**
+     *
+     *方案指标列表
+     *
+     **/
+    private List<FhzgPlanTransferSchemeEvaluationIndexDTO> shemeList;
+
+}

+ 48 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferSchemeStrategyScoreVO.java

@@ -0,0 +1,48 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author luorui
+ * @date 2025/5/23 15:00
+ * 摘要模式评比指标
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class TransferSchemeStrategyScoreVO implements Serializable  {
+
+    /**
+     *
+     *策略版本名称
+     *
+     **/
+    private String versionName;
+
+    /**
+     *
+     * 应用场景,0:计划停电 1:抢修复电 2:运行调优
+     *
+     **/
+    private Integer transferStrategy;
+
+    /**
+     *
+     *表头信息
+     *
+     **/
+    private List<EvaluationHeadVO> headList;
+
+    /**
+     *
+     *方案指标列表
+     *
+     **/
+    private List<FhzgPlanTransferSchemeStrategyScoreVO> strategyScoreList;
+
+}

+ 103 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferSchemeVO.java

@@ -0,0 +1,103 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 14:47
+ * <p>
+ * 转供方案数据
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class TransferSchemeVO {
+    /**
+     * 方案编码
+     */
+    private String schemeId;
+
+    /**
+     * 方案名称
+     */
+    private String schemeName;
+
+
+    /**
+     * 方案是否推荐(0-校验失败,1-推荐)
+     */
+    private String schemeCheck;
+
+    /**
+     * 方案综合评分
+     */
+    private String evaluationScore;
+
+    /**
+     * 开关动作次数(自动和人工)
+     */
+    private Integer switchOperationTimes;
+
+    /**
+     * 人工开关动作次数
+     */
+    private Integer nonAutoSwitchOperationTimes;
+
+    /**
+     * 转供路径明细
+     */
+    private List<TransferPathVO> transferPathVOList;
+
+    /**
+     * 带路径明细
+     */
+    private List<OppositePathVO> oppositePathVOList;
+
+    /**
+     * 开关动作顺序
+     */
+    private List<TransferSwitchingSequenceVO> transferSwitchingSequenceVOList;
+
+    /**
+     * 可靠性校验-损失用户
+     */
+    private List<TransferLoseUserVO> transferLoseUserVOList;
+
+    /**
+     * 可靠性校验-配变低电压
+     */
+    private List<TransferDistributionVoltageVO> transferDistributionVoltageVOList;
+
+    /**
+     * 可靠性校验-线损分析
+     */
+    private TransferLineLossVO transferLineLossVO;
+
+    /**
+     * 图上开关段用户数、配变数、附件、用户列表信息(负荷点信息)
+     */
+    private List<FhzgDistLineSwitchSectionVO> distLineSwitchSectionVOList;
+
+    /**
+     * 停电事件线路文件列表
+     */
+    private List<FhzgPlanDistMappingFileVO> fileList;
+
+    /**
+     * 站内开关(初始渲染线路用)
+     */
+    private List<BreakerAreaVO> breakerAreaVOList;
+
+    /**
+     * 站外开关(初始渲染对侧线路用)
+     */
+    private List<BreakerAreaVO> outsideBreakerAreaVOList;
+    /***
+     * 方案id
+     */
+    private String fileId;
+}

+ 98 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/TransferSwitchingSequenceVO.java

@@ -0,0 +1,98 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 15:03
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+public class TransferSwitchingSequenceVO {
+
+    /**
+     * 开关动作顺序
+     */
+    private Integer switchingSeq;
+
+    /**
+     * 开关动作顺序Id
+     */
+    private Long switchingId;
+    /**
+     * 所属线路Id
+     */
+    private String lineId;
+
+    /**
+     * 所属线路Id
+     */
+    private String lineName;
+
+    /**
+     * 开关ID(依据breakerOperationInfo返回信息开关PSRID)
+     */
+    private String switchId;
+    /**
+     * 开关名称(依据breakerOperationInfo返回信息breakerName)
+     */
+    private String switchName;
+
+    /**
+     * 是否三遥开关(自动化类型autoType为auto3Y的为`是`,其他为`否`)
+     */
+    private String isAutoSwitch;
+    /**
+     * 动作内容(依据breakerOperationInfo返回信息breakerOperation, 1-合,0-分)
+     */
+    private String operationContent;
+
+    /**
+     * 合环校验结果(1-通过,0-不通过)
+     */
+    private String loopCloseCheck;
+
+//    /**
+//     * 合环校验详情
+//     */
+//    private SwitchingLoopCheckVO switchingLoopCheckVO;
+//
+//    /**
+//     * 合环路径开关电流列表
+//     */
+//    private List<SwitchingLoopSwVO> switchingLoopSwVOList;
+//
+//    /**
+//     * 合环路径导线电流列表
+//     */
+//    private List<SwitchingLoopSegVO> switchingLoopSegVOList;
+
+
+    /**
+     * 终态校验结果(1-通过,0-不通过)
+     */
+    private String finalStateCheck;
+
+//    /**
+//     * 终态校验详情
+//     */
+//    private FinalStateCheckVO finalStateCheckVO;
+//
+//    /**
+//     * 终态校验路径开关电流列表
+//     */
+//    private List<FhzgPlanTransferSchemeFinalSwitchCurrentDetailDTO> switchingFinalSwVOList;
+//
+//    /**
+//     * 终态校验路径导线电流列表
+//     */
+//    private List<FhzgPlanTransferSchemeFinalSegmentCurrentDetailDTO> switchingFinalSegVOList;
+
+
+}

+ 46 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/WholeStationPowerCutBaseVO.java

@@ -0,0 +1,46 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 14:41
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class WholeStationPowerCutBaseVO {
+
+    /**
+     * 变电站Id
+     */
+    private String stationId;
+
+    /**
+     * 变电站名称
+     */
+    private String stationName;
+
+    /**
+     * 区县Id
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private Long countyCode;
+
+    /**
+     * 区县名称
+     */
+    private String countyName;
+
+    /**
+     * 计划停电开始时间
+     */
+    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime planStartTime;
+
+}

+ 40 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/WholeStationPowerCutSchemeScoreVO.java

@@ -0,0 +1,40 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 14:05
+ *
+ * 电站停电 方案评分数据
+ *
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class WholeStationPowerCutSchemeScoreVO {
+    /**
+     * 计划id
+     */
+    private Long id;
+
+
+    private TransferSchemeStrategyScoreVO transferSchemeStrategyScoreVO;
+
+
+    private TransferSchemeEvaluationIndexVO transferSchemeEvaluationIndexVO;
+    /**
+     * 站内开关(初始渲染线路用)
+     */
+    private List<BreakerAreaVO> breakerAreaVOList;
+
+    /**
+     * 站外开关(初始渲染对侧线路用)
+     */
+    private List<BreakerAreaVO> outsideBreakerAreaVOList;
+}

+ 55 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/WholeStationPowerCutSchemeVO.java

@@ -0,0 +1,55 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 14:05
+ *
+ * 电站停电 方案数据
+ *
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class WholeStationPowerCutSchemeVO {
+    /**
+     * 计划id
+     */
+    private Long id;
+
+    /**
+     * 计划停电基础信息
+     */
+    private WholeStationPowerCutBaseVO powerCut;
+
+    /**
+     * 推荐方案数量
+     */
+    private Integer checkSuccessCount;
+
+    /**
+     * 校验失败方案数量
+     */
+    private Integer checkFailCount;
+
+    /**
+     * 转供方案列表
+     */
+    private List<TransferSchemeVO> schemeList;
+
+
+    /**
+     * 站内开关(初始渲染线路用)
+     */
+    private List<BreakerAreaVO> breakerAreaVOList;
+
+    /**
+     * 站外开关(初始渲染对侧线路用)
+     */
+    private List<BreakerAreaVO> outsideBreakerAreaVOList;
+}

+ 44 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/WholeStationPowerCutTransferPathVO.java

@@ -0,0 +1,44 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 14:05
+ *
+ * 电站停电待转供路径数据
+ *
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class WholeStationPowerCutTransferPathVO {
+    /**
+     * 计划id
+     */
+    private Long id;
+
+    /**
+     * 计划停电基础信息
+     */
+    private WholeStationPowerCutBaseVO powerCut;
+
+    /**
+     * 待转供路径列表
+     */
+    private List<AwaitTransferPathVO> awaitTransferPathVOList;
+
+    /**
+     * 站内开关(初始渲染线路用)
+     */
+    private List<BreakerAreaVO> breakerAreaVOList;
+
+    /**
+     * 站外开关(初始渲染对侧线路用)
+     */
+    private List<BreakerAreaVO> outsideBreakerAreaVOList;
+}

+ 45 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/WholeStationPowerCutTransferUserVO.java

@@ -0,0 +1,45 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 14:05
+ *
+ * 电站停电 待转供用户数据
+ *
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class WholeStationPowerCutTransferUserVO {
+    /**
+     * 计划id
+     */
+    private Long id;
+
+    /**
+     * 计划停电基础信息
+     */
+    private WholeStationPowerCutBaseVO powerCut;
+
+    /**
+     * 待转供路径列表
+     */
+    private List<AwaitTransferUserVO> awaitTransferUserVOList;
+
+    /**
+     * 站内开关(初始渲染线路用)
+     */
+    private List<BreakerAreaVO> breakerAreaVOList;
+
+    /**
+     * 站外开关(初始渲染对侧线路用)
+     */
+    private List<BreakerAreaVO> outsideBreakerAreaVOList;
+
+}

+ 122 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/dto/wholeStation/WholeStationPowerCutVO.java

@@ -0,0 +1,122 @@
+package com.hdkj.lt.core.bizms.modle.dto.wholeStation;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @author luorui
+ * @date 2025/8/15 11:10
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class WholeStationPowerCutVO {
+
+    /**
+     * 计划id
+     */
+    private Long id;
+
+    /**
+     * 事件id
+     */
+    private Long eventId;
+
+    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime planCreateTime;
+
+    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    /**
+     * 计划状态
+     */
+    private String planState;
+
+    /**
+     * 方案状态,01-已确认,02-未确认
+     */
+    private String schemeState;
+
+    /**
+     * 计划停电开始时间
+     */
+    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime planStartTime;
+
+    /**
+     * 计划停电结束时间
+     */
+    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime planEndTime;
+
+    /**
+     * 变电站Id
+     */
+    private String stationId;
+
+    /**
+     * 变电站名称
+     */
+    private String stationName;
+
+    /**
+     * 区县Id
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private Long countyCode;
+
+    /**
+     * 区县名称
+     */
+    private String countyName;
+
+    /**
+     * 待转供路线条数
+     */
+    private Integer transferLineCount;
+
+    /**
+     * 待转供负荷(kW)
+     */
+    private String transferLoads;
+
+    /**
+     * 待转供用户
+     */
+    private Integer userCount;
+
+    // 重要用户
+    private Integer transferCriticalUsers;
+
+    // 敏感用户
+    private Integer transferSensitiveUsers;
+
+    //保电用户
+    private Integer protectUsers;
+
+    /**
+     * 停电事件线路文件列表
+     */
+    private List<FhzgPlanDistMappingFileVO> fileList;
+
+    /**
+     * 图上开关段用户数、配变数、附件、用户列表信息(负荷点信息)
+     */
+    private List<FhzgDistLineSwitchSectionVO> distLineSwitchSectionVOList;
+
+    /**
+     * 站内开关(初始渲染线路用)
+     */
+    private List<BreakerAreaVO> breakerAreaVOList;
+
+    /**
+     * 站外开关(初始渲染对侧线路用)
+     */
+    private List<BreakerAreaVO> outsideBreakerAreaVOList;
+}

+ 99 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/po/CustomerPowerProtectionConfig.java

@@ -0,0 +1,99 @@
+package com.hdkj.lt.core.bizms.modle.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 保电用户配置信息
+ * </p>
+ *
+ * @author luorui
+ * @since 2025-06-05
+ */
+@Getter
+@Setter
+@TableName("fhzg_customer_power_protection_config")
+public class CustomerPowerProtectionConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 所属变压器编码(变压器psr_id),(关联fhzg_dist_transformer_customer表transformer_no)
+     */
+    @TableField("transformer_no")
+    private String transformerNo;
+
+    /**
+     * 所属变压器名称
+     */
+    @TableField("transformer_name")
+    private String transformerName;
+
+
+    /**
+     * 公变-01 中压用户接入点-02
+     */
+    @TableField("publ_clg_flag")
+    private String publClgFlag;
+
+    /**
+     * 专变列表
+     */
+    @TableField("transformer_list")
+    private String transformerList;
+
+    /**
+     * 保电开始时间
+     */
+    @TableField("protection_start_time")
+    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime protectionStartTime;
+
+    /**
+     * 保电结束时间
+     */
+    @TableField("protection_end_time")
+    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime protectionEndTime;
+
+    /**
+     * 创建人
+     */
+    @TableField("creator")
+    private Long creator;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    /**
+     * 最后一次修改人
+     */
+    @TableField("last_editor")
+    private Long lastEditor;
+
+    /**
+     * 最后一次修改时间
+     */
+    @TableField("last_time")
+    private LocalDateTime lastTime;
+
+
+}

+ 86 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/po/CustomerPowerProtectionConfigHist.java

@@ -0,0 +1,86 @@
+package com.hdkj.lt.core.bizms.modle.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 保电用户配置信息历史表
+ * </p>
+ *
+ * @author luorui
+ * @since 2025-06-05
+ */
+@Getter
+@Setter
+@TableName("fhzg_customer_power_protection_config_hist")
+public class CustomerPowerProtectionConfigHist implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id",type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 所属变压器编码(变压器psr_id),(关联fhzg_dist_transformer_customer表transformer_no)
+     */
+    @TableField("transformer_no")
+    private String transformerNo;
+
+    /**
+     * 所属变压器名称
+     */
+    @TableField("transformer_name")
+    private String transformerName;
+
+    /**
+     * 保电开始时间
+     */
+    @TableField("protection_start_time")
+    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime protectionStartTime;
+
+    /**
+     * 保电结束时间
+     */
+    @TableField("protection_end_time")
+    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime protectionEndTime;
+
+    /**
+     * 创建人
+     */
+    @TableField("creator")
+    private Long creator;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    /**
+     * 最后一次修改人
+     */
+    @TableField("last_editor")
+    private Long lastEditor;
+
+    /**
+     * 最后一次修改时间
+     */
+    @TableField("last_time")
+    private LocalDateTime lastTime;
+
+
+}

+ 77 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/po/DisableLlkgConfig.java

@@ -0,0 +1,77 @@
+package com.hdkj.lt.core.bizms.modle.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 联络开关黑名单配置表
+ * </p>
+ *
+ * @author luorui
+ * @since 2025-08-08
+ */
+@Getter
+@Setter
+@TableName("t_disable_llkg_config")
+public class DisableLlkgConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 联络开关ID
+     */
+    @TableField("llsb_id")
+    private String llsbId;
+
+    /**
+     * 地市编码
+     */
+    @TableField("city_code")
+    private String cityCode;
+
+    /**
+     * 配置类型:0-系统判定无效,1-人工设置无效,2-系统判定有效,3-人工设置有效
+     */
+    @TableField("llsb_type")
+    private String llsbType;
+
+    /**
+     * 创建人
+     */
+    @TableField("creator")
+    private Long creator;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    /**
+     * 最后一次修改人
+     */
+    @TableField("last_editor")
+    private Long lastEditor;
+
+    /**
+     * 最后一次修改时间
+     */
+    @TableField("last_time")
+    private LocalDateTime lastTime;
+
+
+}

+ 630 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/po/DwdShbDsFeederBase.java

@@ -0,0 +1,630 @@
+package com.hdkj.lt.core.bizms.modle.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.hdkj.lt.base.serializer.BigDecimalSerializer;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 配电设备_配电馈线台账表
+ * @TableName dwd_shb_ds_feeder_base
+ */
+@TableName(value ="dwd_shb_ds_feeder_base")
+@Data
+public class DwdShbDsFeederBase implements Serializable {
+    /**
+     * 资源ID
+     */
+    @TableId
+    private String psrId;
+
+    /**
+     * 资产ID
+     */
+    private String astId;
+
+    /**
+     * 设备名称
+     */
+    private String name;
+
+    /**
+     * 电压等级
+     */
+    private String voltageLevel;
+
+    /**
+     * 电压等级名称
+     */
+    private String voltageLevelName;
+
+    /**
+     * 电缆长度
+     */
+    @JsonSerialize(using = BigDecimalSerializer.Keep2DecimalSerializer.class)
+    private BigDecimal cableLength;
+
+    /**
+     * 电缆接线方式
+     */
+    private String cableMethod;
+
+    /**
+     * 电缆接线方式名称
+     */
+    private String cableMethodName;
+
+    /**
+     * 运行状态
+     */
+    private String psrState;
+
+    /**
+     * 运行状态名称
+     */
+    private String psrStateName;
+
+    /**
+     * 营配标识
+     */
+    private String pubPrivFlag;
+
+    /**
+     * 营配标识名称
+     */
+    private String pubPrivFlagName;
+
+    /**
+     * 参考长度
+     */
+    @JsonSerialize(using = BigDecimalSerializer.Keep2DecimalSerializer.class)
+    private BigDecimal referenceLength;
+
+    /**
+     * 运行编号
+     */
+    private String runDevName;
+
+    /**
+     * 起点间隔
+     */
+    private String startBay;
+
+    /**
+     * 起点电站
+     */
+    private String startStation;
+
+    /**
+     * 起始电站名称
+     */
+    private String startStationName;
+
+    /**
+     * 起始电站类型
+     */
+    private String startStationType;
+
+    /**
+     * 起点开关
+     */
+    private String startSwitch;
+
+    /**
+     * 起点开关名称
+     */
+    private String startSwitchName;
+
+    /**
+     * 起始开关类型
+     */
+    private String startSwitchType;
+
+    /**
+     * 投运日期
+     */
+    private Date startTime;
+
+    /**
+     * 供电半径
+     */
+    @JsonSerialize(using = BigDecimalSerializer.Keep2DecimalSerializer.class)
+    private BigDecimal supplyRadius;
+
+    /**
+     * 供电区域
+     */
+    private String supplyArea;
+
+    /**
+     * 供电区域名称
+     */
+    private String supplyAreaName;
+
+    /**
+     * 地区特征
+     */
+    private String regionalism;
+
+    /**
+     * 地区特征名称
+     */
+    private String regionalismName;
+
+    /**
+     * 营销用户户号
+     */
+    private String consNo;
+
+    /**
+     * 所属调度机构
+     */
+    private String dispatchOrg;
+
+    /**
+     * 所属调度机构名称
+     */
+    private String dispatchOrgName;
+
+    /**
+     * 所属调度编码
+     */
+    private String dispatchLevel;
+
+    /**
+     * 所属调度名称
+     */
+    private String dispatchLevelName;
+
+    /**
+     * 设备主人
+     */
+    private String equipmentOwner;
+
+    /**
+     * 设备主人名称
+     */
+    private String equipmentOwnerName;
+
+    /**
+     * 架设方式
+     */
+    private String erectionMethod;
+
+    /**
+     * 架设方式名称
+     */
+    private String erectionMethodName;
+
+    /**
+     * 馈线容量
+     */
+    @JsonSerialize(using = BigDecimalSerializer.Keep2DecimalSerializer.class)
+    private BigDecimal feederRateCapacity;
+
+    /**
+     * 重要程度
+     */
+    private String importance;
+
+    /**
+     * 重要程度名称
+     */
+    private String importanceName;
+
+    /**
+     * 是否集中式电供暖
+     */
+    private String isCentralizedelechtg;
+
+    /**
+     * 是否大馈线
+     */
+    private String isDaFeeder;
+
+    /**
+     * 是否分散式电供暖
+     */
+    private String isDistributedelechtg;
+
+    /**
+     * 是否农网
+     */
+    private String isRural;
+
+    /**
+     * 是否农网名称
+     */
+    private String isRuralName;
+
+    /**
+     * 线路总长度
+     */
+    @JsonSerialize(using = BigDecimalSerializer.Keep2DecimalSerializer.class)
+    private BigDecimal length;
+
+    /**
+     * 所属地市
+     */
+    private String city;
+
+    /**
+     * 所属地市名称
+     */
+    private String cityName;
+
+    /**
+     * 运维单位
+     */
+    private String maintOrg;
+
+    /**
+     * 运维单位名称
+     */
+    private String maintOrgName;
+
+    /**
+     * 维护班组
+     */
+    private String maintGroup;
+
+    /**
+     * 维护班组名称
+     */
+    private String maintGroupName;
+
+    /**
+     * 常规带电母线
+     */
+    private String normalEnergizingBusbar;
+
+    /**
+     * 架空长度
+     */
+    @JsonSerialize(using = BigDecimalSerializer.Keep2DecimalSerializer.class)
+    private BigDecimal overheadLength;
+
+    /**
+     * 架空接线方式
+     */
+    private String overheadMethod;
+
+    /**
+     * 架空接线方式名称
+     */
+    private String overheadMethodName;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 资产性质
+     */
+    private String astNature;
+
+    /**
+     * 资产性质名称
+     */
+    private String astNatureName;
+
+    /**
+     * 资产单位
+     */
+    private String astOrg;
+
+    /**
+     * 资产单位名称
+     */
+    private String astOrgName;
+
+    /**
+     * 设备状态
+     */
+    private String deployState;
+
+    /**
+     * 设备状态名称
+     */
+    private String deployStateName;
+
+    /**
+     * 设备编码
+     */
+    private String equipCode;
+
+    /**
+     * 是否代维
+     */
+    private String isCommission;
+
+    /**
+     * 是否代维名称
+     */
+    private String isCommissionName;
+
+    /**
+     * 投运日期
+     */
+    private Date operateDate;
+
+    /**
+     * 设备来源
+     */
+    private String source;
+
+    /**
+     * 设备来源名称
+     */
+    private String sourceName;
+
+    /**
+     * 创建时间
+     */
+    private Date ctime;
+
+    /**
+     * 最后更新日期
+     */
+    private Date lastUpdateTime;
+
+    /**
+     * 删除标识
+     */
+    private String delFlag;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        DwdShbDsFeederBase other = (DwdShbDsFeederBase) that;
+        return (this.getPsrId() == null ? other.getPsrId() == null : this.getPsrId().equals(other.getPsrId()))
+            && (this.getAstId() == null ? other.getAstId() == null : this.getAstId().equals(other.getAstId()))
+            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
+            && (this.getVoltageLevel() == null ? other.getVoltageLevel() == null : this.getVoltageLevel().equals(other.getVoltageLevel()))
+            && (this.getVoltageLevelName() == null ? other.getVoltageLevelName() == null : this.getVoltageLevelName().equals(other.getVoltageLevelName()))
+            && (this.getCableLength() == null ? other.getCableLength() == null : this.getCableLength().equals(other.getCableLength()))
+            && (this.getCableMethod() == null ? other.getCableMethod() == null : this.getCableMethod().equals(other.getCableMethod()))
+            && (this.getCableMethodName() == null ? other.getCableMethodName() == null : this.getCableMethodName().equals(other.getCableMethodName()))
+            && (this.getPsrState() == null ? other.getPsrState() == null : this.getPsrState().equals(other.getPsrState()))
+            && (this.getPsrStateName() == null ? other.getPsrStateName() == null : this.getPsrStateName().equals(other.getPsrStateName()))
+            && (this.getPubPrivFlag() == null ? other.getPubPrivFlag() == null : this.getPubPrivFlag().equals(other.getPubPrivFlag()))
+            && (this.getPubPrivFlagName() == null ? other.getPubPrivFlagName() == null : this.getPubPrivFlagName().equals(other.getPubPrivFlagName()))
+            && (this.getReferenceLength() == null ? other.getReferenceLength() == null : this.getReferenceLength().equals(other.getReferenceLength()))
+            && (this.getRunDevName() == null ? other.getRunDevName() == null : this.getRunDevName().equals(other.getRunDevName()))
+            && (this.getStartBay() == null ? other.getStartBay() == null : this.getStartBay().equals(other.getStartBay()))
+            && (this.getStartStation() == null ? other.getStartStation() == null : this.getStartStation().equals(other.getStartStation()))
+            && (this.getStartStationName() == null ? other.getStartStationName() == null : this.getStartStationName().equals(other.getStartStationName()))
+            && (this.getStartStationType() == null ? other.getStartStationType() == null : this.getStartStationType().equals(other.getStartStationType()))
+            && (this.getStartSwitch() == null ? other.getStartSwitch() == null : this.getStartSwitch().equals(other.getStartSwitch()))
+            && (this.getStartSwitchName() == null ? other.getStartSwitchName() == null : this.getStartSwitchName().equals(other.getStartSwitchName()))
+            && (this.getStartSwitchType() == null ? other.getStartSwitchType() == null : this.getStartSwitchType().equals(other.getStartSwitchType()))
+            && (this.getStartTime() == null ? other.getStartTime() == null : this.getStartTime().equals(other.getStartTime()))
+            && (this.getSupplyRadius() == null ? other.getSupplyRadius() == null : this.getSupplyRadius().equals(other.getSupplyRadius()))
+            && (this.getSupplyArea() == null ? other.getSupplyArea() == null : this.getSupplyArea().equals(other.getSupplyArea()))
+            && (this.getSupplyAreaName() == null ? other.getSupplyAreaName() == null : this.getSupplyAreaName().equals(other.getSupplyAreaName()))
+            && (this.getRegionalism() == null ? other.getRegionalism() == null : this.getRegionalism().equals(other.getRegionalism()))
+            && (this.getRegionalismName() == null ? other.getRegionalismName() == null : this.getRegionalismName().equals(other.getRegionalismName()))
+            && (this.getConsNo() == null ? other.getConsNo() == null : this.getConsNo().equals(other.getConsNo()))
+            && (this.getDispatchOrg() == null ? other.getDispatchOrg() == null : this.getDispatchOrg().equals(other.getDispatchOrg()))
+            && (this.getDispatchOrgName() == null ? other.getDispatchOrgName() == null : this.getDispatchOrgName().equals(other.getDispatchOrgName()))
+            && (this.getDispatchLevel() == null ? other.getDispatchLevel() == null : this.getDispatchLevel().equals(other.getDispatchLevel()))
+            && (this.getDispatchLevelName() == null ? other.getDispatchLevelName() == null : this.getDispatchLevelName().equals(other.getDispatchLevelName()))
+            && (this.getEquipmentOwner() == null ? other.getEquipmentOwner() == null : this.getEquipmentOwner().equals(other.getEquipmentOwner()))
+            && (this.getEquipmentOwnerName() == null ? other.getEquipmentOwnerName() == null : this.getEquipmentOwnerName().equals(other.getEquipmentOwnerName()))
+            && (this.getErectionMethod() == null ? other.getErectionMethod() == null : this.getErectionMethod().equals(other.getErectionMethod()))
+            && (this.getErectionMethodName() == null ? other.getErectionMethodName() == null : this.getErectionMethodName().equals(other.getErectionMethodName()))
+            && (this.getFeederRateCapacity() == null ? other.getFeederRateCapacity() == null : this.getFeederRateCapacity().equals(other.getFeederRateCapacity()))
+            && (this.getImportance() == null ? other.getImportance() == null : this.getImportance().equals(other.getImportance()))
+            && (this.getImportanceName() == null ? other.getImportanceName() == null : this.getImportanceName().equals(other.getImportanceName()))
+            && (this.getIsCentralizedelechtg() == null ? other.getIsCentralizedelechtg() == null : this.getIsCentralizedelechtg().equals(other.getIsCentralizedelechtg()))
+            && (this.getIsDaFeeder() == null ? other.getIsDaFeeder() == null : this.getIsDaFeeder().equals(other.getIsDaFeeder()))
+            && (this.getIsDistributedelechtg() == null ? other.getIsDistributedelechtg() == null : this.getIsDistributedelechtg().equals(other.getIsDistributedelechtg()))
+            && (this.getIsRural() == null ? other.getIsRural() == null : this.getIsRural().equals(other.getIsRural()))
+            && (this.getIsRuralName() == null ? other.getIsRuralName() == null : this.getIsRuralName().equals(other.getIsRuralName()))
+            && (this.getLength() == null ? other.getLength() == null : this.getLength().equals(other.getLength()))
+            && (this.getCity() == null ? other.getCity() == null : this.getCity().equals(other.getCity()))
+            && (this.getCityName() == null ? other.getCityName() == null : this.getCityName().equals(other.getCityName()))
+            && (this.getMaintOrg() == null ? other.getMaintOrg() == null : this.getMaintOrg().equals(other.getMaintOrg()))
+            && (this.getMaintOrgName() == null ? other.getMaintOrgName() == null : this.getMaintOrgName().equals(other.getMaintOrgName()))
+            && (this.getMaintGroup() == null ? other.getMaintGroup() == null : this.getMaintGroup().equals(other.getMaintGroup()))
+            && (this.getMaintGroupName() == null ? other.getMaintGroupName() == null : this.getMaintGroupName().equals(other.getMaintGroupName()))
+            && (this.getNormalEnergizingBusbar() == null ? other.getNormalEnergizingBusbar() == null : this.getNormalEnergizingBusbar().equals(other.getNormalEnergizingBusbar()))
+            && (this.getOverheadLength() == null ? other.getOverheadLength() == null : this.getOverheadLength().equals(other.getOverheadLength()))
+            && (this.getOverheadMethod() == null ? other.getOverheadMethod() == null : this.getOverheadMethod().equals(other.getOverheadMethod()))
+            && (this.getOverheadMethodName() == null ? other.getOverheadMethodName() == null : this.getOverheadMethodName().equals(other.getOverheadMethodName()))
+            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
+            && (this.getAstNature() == null ? other.getAstNature() == null : this.getAstNature().equals(other.getAstNature()))
+            && (this.getAstNatureName() == null ? other.getAstNatureName() == null : this.getAstNatureName().equals(other.getAstNatureName()))
+            && (this.getAstOrg() == null ? other.getAstOrg() == null : this.getAstOrg().equals(other.getAstOrg()))
+            && (this.getAstOrgName() == null ? other.getAstOrgName() == null : this.getAstOrgName().equals(other.getAstOrgName()))
+            && (this.getDeployState() == null ? other.getDeployState() == null : this.getDeployState().equals(other.getDeployState()))
+            && (this.getDeployStateName() == null ? other.getDeployStateName() == null : this.getDeployStateName().equals(other.getDeployStateName()))
+            && (this.getEquipCode() == null ? other.getEquipCode() == null : this.getEquipCode().equals(other.getEquipCode()))
+            && (this.getIsCommission() == null ? other.getIsCommission() == null : this.getIsCommission().equals(other.getIsCommission()))
+            && (this.getIsCommissionName() == null ? other.getIsCommissionName() == null : this.getIsCommissionName().equals(other.getIsCommissionName()))
+            && (this.getOperateDate() == null ? other.getOperateDate() == null : this.getOperateDate().equals(other.getOperateDate()))
+            && (this.getSource() == null ? other.getSource() == null : this.getSource().equals(other.getSource()))
+            && (this.getSourceName() == null ? other.getSourceName() == null : this.getSourceName().equals(other.getSourceName()))
+            && (this.getCtime() == null ? other.getCtime() == null : this.getCtime().equals(other.getCtime()))
+            && (this.getLastUpdateTime() == null ? other.getLastUpdateTime() == null : this.getLastUpdateTime().equals(other.getLastUpdateTime()))
+            && (this.getDelFlag() == null ? other.getDelFlag() == null : this.getDelFlag().equals(other.getDelFlag()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getPsrId() == null) ? 0 : getPsrId().hashCode());
+        result = prime * result + ((getAstId() == null) ? 0 : getAstId().hashCode());
+        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
+        result = prime * result + ((getVoltageLevel() == null) ? 0 : getVoltageLevel().hashCode());
+        result = prime * result + ((getVoltageLevelName() == null) ? 0 : getVoltageLevelName().hashCode());
+        result = prime * result + ((getCableLength() == null) ? 0 : getCableLength().hashCode());
+        result = prime * result + ((getCableMethod() == null) ? 0 : getCableMethod().hashCode());
+        result = prime * result + ((getCableMethodName() == null) ? 0 : getCableMethodName().hashCode());
+        result = prime * result + ((getPsrState() == null) ? 0 : getPsrState().hashCode());
+        result = prime * result + ((getPsrStateName() == null) ? 0 : getPsrStateName().hashCode());
+        result = prime * result + ((getPubPrivFlag() == null) ? 0 : getPubPrivFlag().hashCode());
+        result = prime * result + ((getPubPrivFlagName() == null) ? 0 : getPubPrivFlagName().hashCode());
+        result = prime * result + ((getReferenceLength() == null) ? 0 : getReferenceLength().hashCode());
+        result = prime * result + ((getRunDevName() == null) ? 0 : getRunDevName().hashCode());
+        result = prime * result + ((getStartBay() == null) ? 0 : getStartBay().hashCode());
+        result = prime * result + ((getStartStation() == null) ? 0 : getStartStation().hashCode());
+        result = prime * result + ((getStartStationName() == null) ? 0 : getStartStationName().hashCode());
+        result = prime * result + ((getStartStationType() == null) ? 0 : getStartStationType().hashCode());
+        result = prime * result + ((getStartSwitch() == null) ? 0 : getStartSwitch().hashCode());
+        result = prime * result + ((getStartSwitchName() == null) ? 0 : getStartSwitchName().hashCode());
+        result = prime * result + ((getStartSwitchType() == null) ? 0 : getStartSwitchType().hashCode());
+        result = prime * result + ((getStartTime() == null) ? 0 : getStartTime().hashCode());
+        result = prime * result + ((getSupplyRadius() == null) ? 0 : getSupplyRadius().hashCode());
+        result = prime * result + ((getSupplyArea() == null) ? 0 : getSupplyArea().hashCode());
+        result = prime * result + ((getSupplyAreaName() == null) ? 0 : getSupplyAreaName().hashCode());
+        result = prime * result + ((getRegionalism() == null) ? 0 : getRegionalism().hashCode());
+        result = prime * result + ((getRegionalismName() == null) ? 0 : getRegionalismName().hashCode());
+        result = prime * result + ((getConsNo() == null) ? 0 : getConsNo().hashCode());
+        result = prime * result + ((getDispatchOrg() == null) ? 0 : getDispatchOrg().hashCode());
+        result = prime * result + ((getDispatchOrgName() == null) ? 0 : getDispatchOrgName().hashCode());
+        result = prime * result + ((getDispatchLevel() == null) ? 0 : getDispatchLevel().hashCode());
+        result = prime * result + ((getDispatchLevelName() == null) ? 0 : getDispatchLevelName().hashCode());
+        result = prime * result + ((getEquipmentOwner() == null) ? 0 : getEquipmentOwner().hashCode());
+        result = prime * result + ((getEquipmentOwnerName() == null) ? 0 : getEquipmentOwnerName().hashCode());
+        result = prime * result + ((getErectionMethod() == null) ? 0 : getErectionMethod().hashCode());
+        result = prime * result + ((getErectionMethodName() == null) ? 0 : getErectionMethodName().hashCode());
+        result = prime * result + ((getFeederRateCapacity() == null) ? 0 : getFeederRateCapacity().hashCode());
+        result = prime * result + ((getImportance() == null) ? 0 : getImportance().hashCode());
+        result = prime * result + ((getImportanceName() == null) ? 0 : getImportanceName().hashCode());
+        result = prime * result + ((getIsCentralizedelechtg() == null) ? 0 : getIsCentralizedelechtg().hashCode());
+        result = prime * result + ((getIsDaFeeder() == null) ? 0 : getIsDaFeeder().hashCode());
+        result = prime * result + ((getIsDistributedelechtg() == null) ? 0 : getIsDistributedelechtg().hashCode());
+        result = prime * result + ((getIsRural() == null) ? 0 : getIsRural().hashCode());
+        result = prime * result + ((getIsRuralName() == null) ? 0 : getIsRuralName().hashCode());
+        result = prime * result + ((getLength() == null) ? 0 : getLength().hashCode());
+        result = prime * result + ((getCity() == null) ? 0 : getCity().hashCode());
+        result = prime * result + ((getCityName() == null) ? 0 : getCityName().hashCode());
+        result = prime * result + ((getMaintOrg() == null) ? 0 : getMaintOrg().hashCode());
+        result = prime * result + ((getMaintOrgName() == null) ? 0 : getMaintOrgName().hashCode());
+        result = prime * result + ((getMaintGroup() == null) ? 0 : getMaintGroup().hashCode());
+        result = prime * result + ((getMaintGroupName() == null) ? 0 : getMaintGroupName().hashCode());
+        result = prime * result + ((getNormalEnergizingBusbar() == null) ? 0 : getNormalEnergizingBusbar().hashCode());
+        result = prime * result + ((getOverheadLength() == null) ? 0 : getOverheadLength().hashCode());
+        result = prime * result + ((getOverheadMethod() == null) ? 0 : getOverheadMethod().hashCode());
+        result = prime * result + ((getOverheadMethodName() == null) ? 0 : getOverheadMethodName().hashCode());
+        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
+        result = prime * result + ((getAstNature() == null) ? 0 : getAstNature().hashCode());
+        result = prime * result + ((getAstNatureName() == null) ? 0 : getAstNatureName().hashCode());
+        result = prime * result + ((getAstOrg() == null) ? 0 : getAstOrg().hashCode());
+        result = prime * result + ((getAstOrgName() == null) ? 0 : getAstOrgName().hashCode());
+        result = prime * result + ((getDeployState() == null) ? 0 : getDeployState().hashCode());
+        result = prime * result + ((getDeployStateName() == null) ? 0 : getDeployStateName().hashCode());
+        result = prime * result + ((getEquipCode() == null) ? 0 : getEquipCode().hashCode());
+        result = prime * result + ((getIsCommission() == null) ? 0 : getIsCommission().hashCode());
+        result = prime * result + ((getIsCommissionName() == null) ? 0 : getIsCommissionName().hashCode());
+        result = prime * result + ((getOperateDate() == null) ? 0 : getOperateDate().hashCode());
+        result = prime * result + ((getSource() == null) ? 0 : getSource().hashCode());
+        result = prime * result + ((getSourceName() == null) ? 0 : getSourceName().hashCode());
+        result = prime * result + ((getCtime() == null) ? 0 : getCtime().hashCode());
+        result = prime * result + ((getLastUpdateTime() == null) ? 0 : getLastUpdateTime().hashCode());
+        result = prime * result + ((getDelFlag() == null) ? 0 : getDelFlag().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", psrId=").append(psrId);
+        sb.append(", astId=").append(astId);
+        sb.append(", name=").append(name);
+        sb.append(", voltageLevel=").append(voltageLevel);
+        sb.append(", voltageLevelName=").append(voltageLevelName);
+        sb.append(", cableLength=").append(cableLength);
+        sb.append(", cableMethod=").append(cableMethod);
+        sb.append(", cableMethodName=").append(cableMethodName);
+        sb.append(", psrState=").append(psrState);
+        sb.append(", psrStateName=").append(psrStateName);
+        sb.append(", pubPrivFlag=").append(pubPrivFlag);
+        sb.append(", pubPrivFlagName=").append(pubPrivFlagName);
+        sb.append(", referenceLength=").append(referenceLength);
+        sb.append(", runDevName=").append(runDevName);
+        sb.append(", startBay=").append(startBay);
+        sb.append(", startStation=").append(startStation);
+        sb.append(", startStationName=").append(startStationName);
+        sb.append(", startStationType=").append(startStationType);
+        sb.append(", startSwitch=").append(startSwitch);
+        sb.append(", startSwitchName=").append(startSwitchName);
+        sb.append(", startSwitchType=").append(startSwitchType);
+        sb.append(", startTime=").append(startTime);
+        sb.append(", supplyRadius=").append(supplyRadius);
+        sb.append(", supplyArea=").append(supplyArea);
+        sb.append(", supplyAreaName=").append(supplyAreaName);
+        sb.append(", regionalism=").append(regionalism);
+        sb.append(", regionalismName=").append(regionalismName);
+        sb.append(", consNo=").append(consNo);
+        sb.append(", dispatchOrg=").append(dispatchOrg);
+        sb.append(", dispatchOrgName=").append(dispatchOrgName);
+        sb.append(", dispatchLevel=").append(dispatchLevel);
+        sb.append(", dispatchLevelName=").append(dispatchLevelName);
+        sb.append(", equipmentOwner=").append(equipmentOwner);
+        sb.append(", equipmentOwnerName=").append(equipmentOwnerName);
+        sb.append(", erectionMethod=").append(erectionMethod);
+        sb.append(", erectionMethodName=").append(erectionMethodName);
+        sb.append(", feederRateCapacity=").append(feederRateCapacity);
+        sb.append(", importance=").append(importance);
+        sb.append(", importanceName=").append(importanceName);
+        sb.append(", isCentralizedelechtg=").append(isCentralizedelechtg);
+        sb.append(", isDaFeeder=").append(isDaFeeder);
+        sb.append(", isDistributedelechtg=").append(isDistributedelechtg);
+        sb.append(", isRural=").append(isRural);
+        sb.append(", isRuralName=").append(isRuralName);
+        sb.append(", length=").append(length);
+        sb.append(", city=").append(city);
+        sb.append(", cityName=").append(cityName);
+        sb.append(", maintOrg=").append(maintOrg);
+        sb.append(", maintOrgName=").append(maintOrgName);
+        sb.append(", maintGroup=").append(maintGroup);
+        sb.append(", maintGroupName=").append(maintGroupName);
+        sb.append(", normalEnergizingBusbar=").append(normalEnergizingBusbar);
+        sb.append(", overheadLength=").append(overheadLength);
+        sb.append(", overheadMethod=").append(overheadMethod);
+        sb.append(", overheadMethodName=").append(overheadMethodName);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", astNature=").append(astNature);
+        sb.append(", astNatureName=").append(astNatureName);
+        sb.append(", astOrg=").append(astOrg);
+        sb.append(", astOrgName=").append(astOrgName);
+        sb.append(", deployState=").append(deployState);
+        sb.append(", deployStateName=").append(deployStateName);
+        sb.append(", equipCode=").append(equipCode);
+        sb.append(", isCommission=").append(isCommission);
+        sb.append(", isCommissionName=").append(isCommissionName);
+        sb.append(", operateDate=").append(operateDate);
+        sb.append(", source=").append(source);
+        sb.append(", sourceName=").append(sourceName);
+        sb.append(", ctime=").append(ctime);
+        sb.append(", lastUpdateTime=").append(lastUpdateTime);
+        sb.append(", delFlag=").append(delFlag);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 216 - 0
common/common-core/src/main/java/com/hdkj/lt/core/bizms/modle/po/DwdShbDsSwitchBase.java

@@ -0,0 +1,216 @@
+package com.hdkj.lt.core.bizms.modle.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 配电开关台账台账信息
+ * @TableName dwd_shb_ds_switch_base
+ */
+@TableName(value ="dwd_shb_ds_switch_base")
+@Data
+public class DwdShbDsSwitchBase implements Serializable {
+    /**
+     * 资源id
+     */
+    @TableId
+    private String psrId;
+
+    /**
+     * 资产id
+     */
+    private String astId;
+
+    /**
+     * 设备名称
+     */
+    private String name;
+
+    /**
+     * 设备类型
+     */
+    private String psrType;
+
+    /**
+     * 全路径名称
+     */
+    private String fullPathName;
+
+    /**
+     * 所属馈线id
+     */
+    private String feeder;
+
+    /**
+     * 所属馈线名称
+     */
+    private String feederName;
+
+    /**
+     * 所属主干/分支线
+     */
+    private String branchFeeder;
+
+    /**
+     * 所属主干/分支线名称
+     */
+    private String branchFeederName;
+
+    /**
+     * 所属站房
+     */
+    private String station;
+
+    /**
+     * 所属站房名称
+     */
+    private String stationName;
+
+    /**
+     * 所属站房类型
+     */
+    private String stationType;
+
+    /**
+     * 所属站房类型名称
+     */
+    private String stationTypeName;
+
+    /**
+     * 电压等级
+     */
+    private String voltageLevel;
+
+    /**
+     * 电压等级名称
+     */
+    private String voltageLevelName;
+
+    /**
+     * 开关作用
+     */
+    private String switchRole;
+
+    /**
+     * 开关作用名称
+     */
+    private String switchRoleName;
+
+    /**
+     * 是否配自开关(0否,1是)
+     */
+    private String isDaSwitch;
+
+    /**
+     * 所属地市
+     */
+    private String city;
+
+    /**
+     * 所属地市名称
+     */
+    private String cityName;
+
+    /**
+     * 运维单位
+     */
+    private String maintOrg;
+
+    /**
+     * 运维单位名称
+     */
+    private String maintOrgName;
+
+    /**
+     * 维护班组
+     */
+    private String maintGroup;
+
+    /**
+     * 维护班组名称
+     */
+    private String maintGroupName;
+
+    /**
+     * 设备主人
+     */
+    private String equipmentOwner;
+
+    /**
+     * 设备主人名称
+     */
+    private String equipmentOwnerName;
+
+    /**
+     * 运行状态
+     */
+    private String psrState;
+
+    /**
+     * 运行状态名称
+     */
+    private String psrStateName;
+
+    /**
+     * 设备状态
+     */
+    private String deployState;
+
+    /**
+     * 设备状态名称
+     */
+    private String deployStateName;
+
+    /**
+     * 投运日期
+     */
+    private Date startTime;
+
+    /**
+     * 退运日期
+     */
+    private Date stopTime;
+
+    /**
+     * 设备型号
+     */
+    private String model;
+
+    /**
+     * 生产厂家
+     */
+    private String manufacturer;
+
+    /**
+     * 操作方式(01手动,02电动,02遥控)
+     */
+    private String operationMode;
+
+    /**
+     * 营配标识(0运检,1营销)
+     */
+    private String pubPrivFlag;
+
+    /**
+     * 营配标识名称
+     */
+    private String pubPrivFlagName;
+
+    /**
+     * 额定电流
+     */
+    private Double ratedCurrent;
+
+    /**
+     * 删除标识
+     */
+    private String delFlag;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików