diff --git a/analysis/event/event-api/pom.xml b/analysis/event/event-api/pom.xml
index 9e8cf67..9c2716c 100644
--- a/analysis/event/event-api/pom.xml
+++ b/analysis/event/event-api/pom.xml
@@ -16,5 +16,30 @@
8
8
+
+
+ com.njcn
+ common-core
+ ${project.version}
+
+
+
+ com.njcn
+ common-microservice
+ ${project.version}
+
+
+ com.njcn.platform
+ data-processing-api
+ 1.0.0
+ compile
+
+
+ com.njcn.platform
+ message-api
+ 1.0.0
+ compile
+
+
diff --git a/analysis/event/event-api/src/main/java/com/njcn/event/api/EventAnalysisFeignClient.java b/analysis/event/event-api/src/main/java/com/njcn/event/api/EventAnalysisFeignClient.java
new file mode 100644
index 0000000..b5dea9a
--- /dev/null
+++ b/analysis/event/event-api/src/main/java/com/njcn/event/api/EventAnalysisFeignClient.java
@@ -0,0 +1,28 @@
+package com.njcn.event.api;
+
+import com.njcn.common.pojo.constant.ServerInfo;
+import com.njcn.common.pojo.response.HttpResult;
+import com.njcn.event.api.fallback.EventAnalysisFeignClientFallbackFactory;
+import com.njcn.message.messagedto.MessageDataDTO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+/**
+ * Description:
+ * Date: 2025/01/15 下午 3:52【需求编号】
+ *
+ * @author clam
+ * @version V1.0.0
+ */
+@FeignClient(
+ value = ServerInfo.PLATFORM_STAT_BOOT,
+ path = "/eventAnalysis",
+ fallbackFactory = EventAnalysisFeignClientFallbackFactory.class,
+ contextId = "analysis")
+public interface EventAnalysisFeignClient {
+ @PostMapping("/analysis")
+ HttpResult analysis(@RequestBody List messageList);
+}
diff --git a/analysis/event/event-api/src/main/java/com/njcn/event/api/fallback/EventAnalysisFeignClientFallbackFactory.java b/analysis/event/event-api/src/main/java/com/njcn/event/api/fallback/EventAnalysisFeignClientFallbackFactory.java
new file mode 100644
index 0000000..a0c07ec
--- /dev/null
+++ b/analysis/event/event-api/src/main/java/com/njcn/event/api/fallback/EventAnalysisFeignClientFallbackFactory.java
@@ -0,0 +1,44 @@
+package com.njcn.event.api.fallback;
+
+import com.njcn.common.pojo.enums.response.CommonResponseEnum;
+import com.njcn.common.pojo.exception.BusinessException;
+import com.njcn.common.pojo.response.HttpResult;
+import com.njcn.event.api.EventAnalysisFeignClient;
+import com.njcn.event.utils.EventEnumUtil;
+import com.njcn.message.messagedto.MessageDataDTO;
+import feign.hystrix.FallbackFactory;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * Description:
+ * Date: 2025/01/15 下午 3:55【需求编号】
+ *
+ * @author clam
+ * @version V1.0.0
+ */
+@Slf4j
+@Component
+public class EventAnalysisFeignClientFallbackFactory implements FallbackFactory {
+
+ @Override
+ public EventAnalysisFeignClient create(Throwable throwable) {
+ //判断抛出异常是否为解码器抛出的业务异常
+ Enum> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
+ if (throwable.getCause() instanceof BusinessException) {
+ BusinessException businessException = (BusinessException) throwable.getCause();
+ exceptionEnum = EventEnumUtil.getExceptionEnum(businessException.getResult());
+ }
+ Enum> finalExceptionEnum = exceptionEnum;
+ return new EventAnalysisFeignClient() {
+
+ @Override
+ public HttpResult analysis(List messageList) {
+ log.error("{}异常,降级处理,异常为:{}", "暂态消息数据解析", throwable.toString());
+ throw new BusinessException(finalExceptionEnum);
+ }
+ };
+ }
+}
diff --git a/analysis/event/event-api/src/main/java/com/njcn/event/api/fallback/package-info.java b/analysis/event/event-api/src/main/java/com/njcn/event/api/fallback/package-info.java
new file mode 100644
index 0000000..119a422
--- /dev/null
+++ b/analysis/event/event-api/src/main/java/com/njcn/event/api/fallback/package-info.java
@@ -0,0 +1,8 @@
+/**
+ * Description:feign回调函数包
+ * Date: 2025/01/23 下午 1:50【需求编号】
+ *
+ * @author clam
+ * @version V1.0.0
+ */
+package com.njcn.event.api.fallback;
\ No newline at end of file
diff --git a/analysis/event/event-api/src/main/java/com/njcn/event/api/package-info.java b/analysis/event/event-api/src/main/java/com/njcn/event/api/package-info.java
new file mode 100644
index 0000000..9dfbfcb
--- /dev/null
+++ b/analysis/event/event-api/src/main/java/com/njcn/event/api/package-info.java
@@ -0,0 +1,8 @@
+/**
+ * Description:对外接口包
+ * Date: 2025/01/23 下午 1:48【需求编号】
+ *
+ * @author clam
+ * @version V1.0.0
+ */
+package com.njcn.event.api;
\ No newline at end of file
diff --git a/analysis/event/event-api/src/main/java/com/njcn/event/enums/EventResponseEnum.java b/analysis/event/event-api/src/main/java/com/njcn/event/enums/EventResponseEnum.java
new file mode 100644
index 0000000..f197bbd
--- /dev/null
+++ b/analysis/event/event-api/src/main/java/com/njcn/event/enums/EventResponseEnum.java
@@ -0,0 +1,23 @@
+package com.njcn.event.enums;
+
+import lombok.Getter;
+
+/**
+ * @author hongawen
+ * @version 1.0.0
+ * @date 2021年12月20日 09:56
+ */
+@Getter
+public enum EventResponseEnum {
+ STAT_COMMON_ERROR("A00550","暂态数据解析模块异常"),
+ ;
+
+ private final String code;
+
+ private final String message;
+
+ EventResponseEnum(String code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+}
diff --git a/analysis/stat/stat-api/src/main/java/com/njcn/stat/messagedto/EventDTO.java b/analysis/event/event-api/src/main/java/com/njcn/event/messagedto/EventDTO.java
similarity index 96%
rename from analysis/stat/stat-api/src/main/java/com/njcn/stat/messagedto/EventDTO.java
rename to analysis/event/event-api/src/main/java/com/njcn/event/messagedto/EventDTO.java
index 9965de7..d60a9e4 100644
--- a/analysis/stat/stat-api/src/main/java/com/njcn/stat/messagedto/EventDTO.java
+++ b/analysis/event/event-api/src/main/java/com/njcn/event/messagedto/EventDTO.java
@@ -1,4 +1,4 @@
-package com.njcn.stat.messagedto;
+package com.njcn.event.messagedto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
diff --git a/analysis/event/event-api/src/main/java/com/njcn/event/messagedto/MessageEventDataSet.java b/analysis/event/event-api/src/main/java/com/njcn/event/messagedto/MessageEventDataSet.java
new file mode 100644
index 0000000..0b757c2
--- /dev/null
+++ b/analysis/event/event-api/src/main/java/com/njcn/event/messagedto/MessageEventDataSet.java
@@ -0,0 +1,31 @@
+package com.njcn.event.messagedto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * Description:
+ * Date: 2024/11/8 14:11【需求编号】
+ *
+ * @author clam
+ * @version V1.0.0
+ */
+@Data
+public class MessageEventDataSet implements Serializable {
+ private Integer FLAG;
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+ @JsonSerialize(using = LocalDateTimeSerializer.class)
+ private LocalDateTime TIME;
+ @JsonProperty("VOLTAGE")
+ private EventDTO volTage;
+
+}
diff --git a/analysis/event/event-boot/pom.xml b/analysis/event/event-boot/pom.xml
index 5facfda..ff7ed20 100644
--- a/analysis/event/event-boot/pom.xml
+++ b/analysis/event/event-boot/pom.xml
@@ -38,6 +38,24 @@
mybatis-spring
2.0.5
+
+ com.njcn.platform
+ message-api
+ 1.0.0
+ compile
+
+
+ com.njcn.platform
+ data-processing-api
+ 1.0.0
+ compile
+
+
+ com.njcn.platform
+ event-api
+ 1.0.0
+ compile
+
diff --git a/analysis/event/event-boot/src/main/java/com/njcn/event/controller/EventAnalysisController.java b/analysis/event/event-boot/src/main/java/com/njcn/event/controller/EventAnalysisController.java
new file mode 100644
index 0000000..b926643
--- /dev/null
+++ b/analysis/event/event-boot/src/main/java/com/njcn/event/controller/EventAnalysisController.java
@@ -0,0 +1,48 @@
+package com.njcn.event.controller;
+
+import com.njcn.common.pojo.annotation.OperateInfo;
+import com.njcn.common.pojo.enums.common.LogEnum;
+import com.njcn.common.pojo.enums.response.CommonResponseEnum;
+import com.njcn.common.pojo.response.HttpResult;
+import com.njcn.common.utils.HttpResultUtil;
+import com.njcn.event.service.EventAnalysisService;
+import com.njcn.message.messagedto.MessageDataDTO;
+import com.njcn.web.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * Description:
+ * Date: 2025/01/15 下午 2:10【需求编号】
+ *
+ * @author clam
+ * @version V1.0.0
+ */
+@Slf4j
+@RestController
+@RequestMapping("/eventAnalysis")
+@Api(tags = "事件解析")
+@AllArgsConstructor
+public class EventAnalysisController extends BaseController {
+
+ private final EventAnalysisService eventAnalysisService;
+
+ @OperateInfo(info = LogEnum.BUSINESS_COMMON)
+ @PostMapping("/analysis")
+ @ApiOperation("数据解析")
+ public HttpResult analysis(@RequestBody List messageList){
+ String methodDescribe = getMethodDescribe("analysis");
+
+ eventAnalysisService.analysis(messageList);
+
+ return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, CommonResponseEnum.SUCCESS.getMessage(), methodDescribe);
+ }
+}
diff --git a/analysis/event/event-boot/src/main/java/com/njcn/event/service/EventAnalysisService.java b/analysis/event/event-boot/src/main/java/com/njcn/event/service/EventAnalysisService.java
new file mode 100644
index 0000000..39e1504
--- /dev/null
+++ b/analysis/event/event-boot/src/main/java/com/njcn/event/service/EventAnalysisService.java
@@ -0,0 +1,17 @@
+package com.njcn.event.service;
+
+
+import com.njcn.message.messagedto.MessageDataDTO;
+
+import java.util.List;
+
+/**
+ * Description:
+ * Date: 2025/01/15 下午 2:51【需求编号】
+ *
+ * @author clam
+ * @version V1.0.0
+ */
+public interface EventAnalysisService {
+ void analysis(List messageList);
+}
diff --git a/analysis/event/event-boot/src/main/java/com/njcn/event/service/impl/EventAnalysisServiceImpl.java b/analysis/event/event-boot/src/main/java/com/njcn/event/service/impl/EventAnalysisServiceImpl.java
new file mode 100644
index 0000000..ba8c179
--- /dev/null
+++ b/analysis/event/event-boot/src/main/java/com/njcn/event/service/impl/EventAnalysisServiceImpl.java
@@ -0,0 +1,67 @@
+package com.njcn.event.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.njcn.dataProcess.api.LnDataDealFeignClient;
+import com.njcn.dataProcess.api.RmpEventDetailFeignClient;
+import com.njcn.dataProcess.dto.*;
+import com.njcn.event.messagedto.EventDTO;
+import com.njcn.event.messagedto.MessageEventDataSet;
+import com.njcn.event.service.EventAnalysisService;
+import com.njcn.message.enums.DataTypeEnum;
+import com.njcn.message.messagedto.MessageDataDTO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Description:
+ * Date: 2025/01/15 下午 2:51【需求编号】
+ *
+ * @author clam
+ * @version V1.0.0
+ */
+@Service
+public class EventAnalysisServiceImpl implements EventAnalysisService {
+
+ @Autowired
+ private RmpEventDetailFeignClient rmpEventDetailFeignClient;
+
+
+ @Override
+ public void analysis(List messageList) {
+
+
+ messageList.forEach(messageDataDTO->{
+ Integer dataType = messageDataDTO.getDataType();
+ String lineId = messageDataDTO.getMonitor();
+ String value = messageDataDTO.getValue();
+
+ if(Objects.equals(DataTypeEnum.EVENT.getCode(),dataType)){
+ MessageEventDataSet messageEventDataSet = JSONObject.parseObject(value, MessageEventDataSet.class);
+ RmpEventDetailDTO rmpEventDetailDTO = new RmpEventDetailDTO();
+ EventDTO volTage = messageEventDataSet.getVolTage();
+ if(Objects.nonNull(volTage)){
+ rmpEventDetailDTO.setMeasurementPointId(lineId);
+ rmpEventDetailDTO.setEventType(volTage.getDiskind());
+ rmpEventDetailDTO.setAdvanceType(volTage.getDiskind());
+
+ rmpEventDetailDTO.setStartTime(volTage.getStarttime());
+ rmpEventDetailDTO.setDuration(volTage.getDur());
+ rmpEventDetailDTO.setFeatureAmplitude(volTage.getMag());
+ rmpEventDetailDTO.setPhase(volTage.getPhasic());
+ rmpEventDetailDTO.setWavePath(volTage.getCfgFile().substring(0, volTage.getCfgFile().lastIndexOf("/")));
+
+ rmpEventDetailFeignClient.batchInsertion(rmpEventDetailDTO);
+
+ }
+
+ }
+ });
+
+
+ }
+}
diff --git a/analysis/stat/stat-boot/src/main/java/com/njcn/stat/service/impl/MessageAnalysisServiceImpl.java b/analysis/stat/stat-boot/src/main/java/com/njcn/stat/service/impl/MessageAnalysisServiceImpl.java
index dddf9ac..cad19bc 100644
--- a/analysis/stat/stat-boot/src/main/java/com/njcn/stat/service/impl/MessageAnalysisServiceImpl.java
+++ b/analysis/stat/stat-boot/src/main/java/com/njcn/stat/service/impl/MessageAnalysisServiceImpl.java
@@ -34,8 +34,8 @@ public class MessageAnalysisServiceImpl implements MessageAnalysisService {
private LnDataDealFeignClient lnDataDealFeignClient;
- @Autowired
- private RmpEventDetailFeignClient rmpEventDetailFeignClient;
+// @Autowired
+// private RmpEventDetailFeignClient rmpEventDetailFeignClient;
@Override
public void analysis(List messageList) {
//12张表数据
@@ -442,30 +442,32 @@ public class MessageAnalysisServiceImpl implements MessageAnalysisService {
- }else if(Objects.equals(DataTypeEnum.EVENT.getCode(),dataType)){
- MessageEventDataSet messageEventDataSet = JSONObject.parseObject(value, MessageEventDataSet.class);
- RmpEventDetailDTO rmpEventDetailDTO = new RmpEventDetailDTO();
- EventDTO volTage = messageEventDataSet.getVolTage();
- if(Objects.nonNull(volTage)){
- rmpEventDetailDTO.setMeasurementPointId(lineId);
- rmpEventDetailDTO.setEventType(volTage.getDiskind());
- rmpEventDetailDTO.setAdvanceType(volTage.getDiskind());
-
- rmpEventDetailDTO.setStartTime(volTage.getStarttime());
- rmpEventDetailDTO.setDuration(volTage.getDur());
- rmpEventDetailDTO.setFeatureAmplitude(volTage.getMag());
- rmpEventDetailDTO.setPhase(volTage.getPhasic());
- rmpEventDetailDTO.setWavePath(volTage.getCfgFile().substring(0, volTage.getCfgFile().lastIndexOf("/")));
-
-
- rmpEventDetailFeignClient.batchInsertion(rmpEventDetailDTO);
-
- }
-
-
-
-
}
+ // todo 暂态数据切换到另外一个topic
+// else if(Objects.equals(DataTypeEnum.EVENT.getCode(),dataType)){
+// MessageEventDataSet messageEventDataSet = JSONObject.parseObject(value, MessageEventDataSet.class);
+// RmpEventDetailDTO rmpEventDetailDTO = new RmpEventDetailDTO();
+// EventDTO volTage = messageEventDataSet.getVolTage();
+// if(Objects.nonNull(volTage)){
+// rmpEventDetailDTO.setMeasurementPointId(lineId);
+// rmpEventDetailDTO.setEventType(volTage.getDiskind());
+// rmpEventDetailDTO.setAdvanceType(volTage.getDiskind());
+//
+// rmpEventDetailDTO.setStartTime(volTage.getStarttime());
+// rmpEventDetailDTO.setDuration(volTage.getDur());
+// rmpEventDetailDTO.setFeatureAmplitude(volTage.getMag());
+// rmpEventDetailDTO.setPhase(volTage.getPhasic());
+// rmpEventDetailDTO.setWavePath(volTage.getCfgFile().substring(0, volTage.getCfgFile().lastIndexOf("/")));
+//
+//
+// rmpEventDetailFeignClient.batchInsertion(rmpEventDetailDTO);
+//
+// }
+//
+//
+//
+//
+// }
});
LnDataDTO lnDataDTO = new LnDataDTO();
lnDataDTO.setDataVList(dataVList);
diff --git a/message/message-api/src/main/java/com/njcn/message/enums/DeviceRebootType.java b/message/message-api/src/main/java/com/njcn/message/enums/DeviceRebootType.java
new file mode 100644
index 0000000..2af4788
--- /dev/null
+++ b/message/message-api/src/main/java/com/njcn/message/enums/DeviceRebootType.java
@@ -0,0 +1,31 @@
+package com.njcn.message.enums;
+
+/**
+ * Description:
+ * Date: 2024/12/17 10:04【需求编号】
+ *
+ * @author clam
+ * @version V1.0.0
+ */
+public interface DeviceRebootType {
+ /***
+ * 1. 新增终端台账
+ */
+ String ADD_TERMINAL = "add_terminal";
+
+ /***
+ * 1. 删除终端台账
+ */
+ String DELETE_TERMINAL = "delete_terminal";
+
+
+ /***
+ *修改终端 新增/删除/监测点台账
+ */
+ String LEDGER_MODIFY = "ledger_modify";
+ /**
+ * Icd变更
+ */
+ String ICD_CHANGE = "icd_change";
+
+}
diff --git a/message/message-api/src/main/java/com/njcn/message/message/DeviceRebootMessage.java b/message/message-api/src/main/java/com/njcn/message/message/DeviceRebootMessage.java
index 3885cfb..9f559a0 100644
--- a/message/message-api/src/main/java/com/njcn/message/message/DeviceRebootMessage.java
+++ b/message/message-api/src/main/java/com/njcn/message/message/DeviceRebootMessage.java
@@ -43,6 +43,7 @@ public class DeviceRebootMessage {
private String series;
//终端识别码
private String devKey;
+ private Integer processNo;
//
private List monitorData;
diff --git a/message/message-api/src/main/java/com/njcn/message/utils/MessageEnumUtil.java b/message/message-api/src/main/java/com/njcn/message/utils/MessageEnumUtil.java
index d249177..8ab4ef5 100644
--- a/message/message-api/src/main/java/com/njcn/message/utils/MessageEnumUtil.java
+++ b/message/message-api/src/main/java/com/njcn/message/utils/MessageEnumUtil.java
@@ -8,7 +8,7 @@ import com.njcn.common.utils.EnumUtils;
import com.njcn.message.enums.MessageResponseEnum;
import javax.validation.constraints.NotNull;
-import java.util.Objects;
+import java.util.*;
/**
* @author hongawen
@@ -42,5 +42,20 @@ public class MessageEnumUtil {
return commonResponseEnum;
}
+ public static void main(String[] args) {
+ Map processCountMap = null;
+ processCountMap = new HashMap<>();
+ processCountMap.put(1,0);
+ processCountMap.put(2,0);
+ processCountMap.put(3,0);
+ processCountMap.put(4,0);
+ //获取数量最少的线程号
+ Optional minKey = processCountMap.entrySet()
+ .stream()
+ .min(Comparator.comparingInt(e -> e.getValue()))
+ .map(Map.Entry::getKey);
+ System.out.println(minKey.orElse(2));
+ }
+
}
diff --git a/message/message-boot/src/main/java/com/njcn/message/websocket/WebSocketServer.java b/message/message-boot/src/main/java/com/njcn/message/websocket/WebSocketServer.java
index 837a125..193263f 100644
--- a/message/message-boot/src/main/java/com/njcn/message/websocket/WebSocketServer.java
+++ b/message/message-boot/src/main/java/com/njcn/message/websocket/WebSocketServer.java
@@ -2,8 +2,7 @@ package com.njcn.message.websocket;
import com.alibaba.fastjson.JSONObject;
-import com.njcn.device.pq.api.LineFeignClient;
-import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
+
import com.njcn.message.message.AskRealDataMessage;
import com.njcn.message.produce.template.AskRealDataMessaggeTemplate;
import com.njcn.middle.rocket.domain.BaseMessage;