代码调整

This commit is contained in:
2025-01-09 14:44:48 +08:00
parent cd78ad0588
commit 0b35ce08b0
15 changed files with 211 additions and 119 deletions

View File

@@ -99,9 +99,9 @@ public class PreDetectionController extends BaseController {
@OperateInfo
@ApiOperation("重新开始检测")
@ApiImplicitParam(name = "param", value = "参数", required = true)
public HttpResult<String> restartTemTest(){
public HttpResult<String> restartTemTest(@RequestBody PreDetectionParam param){
String methodDescribe = getMethodDescribe("restartTemTest");
preDetectionService.restartTemTest(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}

View File

@@ -84,35 +84,31 @@ public class SocketDevResponseService {
List<DevData> devInfo = new ArrayList<>();
Map<String, DevData> devDataMap = new HashMap<>();
/**
* 成功结束的装置
*/
List<String> success = new ArrayList<>();
/**
* 所有装置通道信息
*/
List<String> monitorIdListComm = new ArrayList<>();
/**
* 装置名称
*/
Map<String, String> devNameMapComm = new HashMap<>();
/**
* 装置id
*/
Map<String, String> devIdMapComm = new HashMap<>();
/**
* 成功结束的装置
* 成功结束的测点
*/
List<String> successComm = new ArrayList<>();
/**
* 失败的测点
*/
List<String> failComm = new ArrayList<>();
/**
* 成功结束的装置
*/
Set<String> successDevComm = new HashSet<>();
/**
* 失败结束的装置
*/
Set<String> failDevComm = new HashSet<>();
/**
* 保存成功的协议
*/
List<String> successXieyi = new ArrayList<>();
List<String> successXieyi3 = new ArrayList<>();
DictDataEnum dataRule;
@@ -130,7 +126,7 @@ public class SocketDevResponseService {
break;
//协议校验
case YJC_XYJY:
devXieyi(socketDataMsg, param, msg);
protocolDeal(socketDataMsg, param, msg);
break;
//相序校验
case YJC_XUJY:
@@ -138,7 +134,7 @@ public class SocketDevResponseService {
break;
//正式检测
case FORMAL_REAL:
realDeal(param, socketDataMsg);
formalDeal(param, socketDataMsg);
break;
//系数校验
case Coefficient_Check:
@@ -149,8 +145,6 @@ public class SocketDevResponseService {
quitDeal(socketDataMsg, param, msg);
break;
}
}
@@ -243,8 +237,8 @@ public class SocketDevResponseService {
realDataXiList.add(devData);
successComm.add(devData.getId());
System.out.println(successComm.size() + " ==" + monitorIdListComm.size() + "realDataXiList:" + realDataXiList.size() + "当前步骤" + XiNumberManager.stepNumber);
if (successComm.size() == monitorIdListComm.size()) {
System.out.println(successComm.size() + " ==" + FormalTestManager.monitorIdListComm.size() + "realDataXiList:" + realDataXiList.size() + "当前步骤" + XiNumberManager.stepNumber);
if (successComm.size() == FormalTestManager.monitorIdListComm.size()) {
System.out.println("从装置中已经完成获取原始数据,准备开始计算----------------------");
//获取数据流程结束,先把所有数据存到内存中
Map<String, List<DevData>> realDataXiMap = realDataXiList.stream().collect(Collectors.groupingBy(it -> it.getId().split(splitTag)[0]));
@@ -269,7 +263,7 @@ public class SocketDevResponseService {
String[] splitStr = monitorId.split(splitTag);
coefficientVO.setMonitorNum(splitStr[1]);
coefficientVO.setDevName(devNameMapComm.get(splitStr[0]));
coefficientVO.setDevName(FormalTestManager.devNameMapComm.get(splitStr[0]));
coefficientVO.setDesc((XiNumberManager.stepNumber == 0 || XiNumberManager.stepNumber == 1) ? "系数下装" : "系数校准");
assemblyEntity(list, F, coefficientVO, devParameter);
@@ -520,23 +514,27 @@ public class SocketDevResponseService {
SocketMsg<String> socketMsg = new SocketMsg<>();
switch (Objects.requireNonNull(dictDataEnumByCode)) {
case SUCCESS:
String result = socketDataMsg.getData();
//通讯校验成功
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, devNameMapComm, 1));
successComm.add(socketDataMsg.getData());
System.out.println("设备通讯校验全部成功!" + successComm.size() + "=====" + monitorIdListComm.size());
if (successComm.size() == monitorIdListComm.size()) {
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1));
successDevComm.add(result.split(splitTag)[0]);
successComm.add(result);
System.out.println("设备通讯校验全部成功!" + successComm.size() + "=====" + FormalTestManager.monitorIdListComm.size());
if (successComm.size() == FormalTestManager.monitorIdListComm.size()) {
SocketDataMsg temMsg = new SocketDataMsg();
temMsg.setCode(SourceResponseCodeEnum.DEV_COMM_ALL_SUCCESS.getCode());
temMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_01.getValue());
temMsg.setRequestId(SourceOperateCodeEnum.YJC_SBTXJY.getValue());
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(temMsg));
//开始进行协议校验
List<PreDetection> devList = iPqDevService.getDevInfo(param.getDevIds());
successComm.clear();
successDevComm.clear();
failDevComm.clear();
Map<String, List<PreDetection>> map = new HashMap<>(1);
map.put("deviceList", devList);
map.put("deviceList", FormalTestManager.devList);
String jsonString = JSON.toJSONString(map);
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue());
@@ -547,6 +545,9 @@ public class SocketDevResponseService {
SocketManager.sendMsg(s, json);
}
completeJudgment(param);
break;
case UNPROCESSED_BUSINESS:
@@ -554,12 +555,20 @@ public class SocketDevResponseService {
break;
case DEV_ERROR:
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, devNameMapComm, 2));
CnSocketUtil.quitSend(param);
failDevComm.add(socketDataMsg.getData());
failComm.addAll(FormalTestManager.devMapMonitorNum.get(socketDataMsg.getData()));
System.out.println(failDevComm.size() + "xNNN+" + successDevComm.size());
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0));
completeJudgment(param);
break;
case DEV_TARGET:
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, devNameMapComm, 2));
CnSocketUtil.quitSend(param);
failDevComm.add(socketDataMsg.getData());
failComm.addAll(FormalTestManager.devMapMonitorNum.get(socketDataMsg.getData()));
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0));
completeJudgment(param);
break;
case RE_OPERATE:
//出现已经初始化情况,发送用户用户确认是否继续检测
@@ -579,29 +588,50 @@ public class SocketDevResponseService {
}
}
private void completeJudgment(PreDetectionParam param){
if(successDevComm.size()+failDevComm.size() == FormalTestManager.devList.size() && successComm.size() + failComm.size() == FormalTestManager.monitorIdListComm.size()){
//全部装置返回
if(!failDevComm.isEmpty()){
CnSocketUtil.quitSend(param);
WebSocketVO<String> webSocketVO = new WebSocketVO<>();
webSocketVO.setRequestId(SourceOperateCodeEnum.ERROR_FLOW_END.getValue());
webSocketHandler.sendMsgToUser(param.getUserPageId(),JSON.toJSONString(webSocketVO));
}
successDevComm.clear();
failDevComm.clear();
successComm.clear();
failComm.clear();
}
}
/**
* 装置协议检测
*/
private void devXieyi(SocketDataMsg socketDataMsg, PreDetectionParam param, String msg) {
private void protocolDeal(SocketDataMsg socketDataMsg, PreDetectionParam param, String msg) {
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
SocketMsg<String> socketMsg = new SocketMsg<>();
String s = param.getUserPageId() + handlerStr;
switch (Objects.requireNonNull(dictDataEnumByCode)) {
case SUCCESS:
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, devNameMapComm, 2));
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0));
if (socketDataMsg.getOperateCode().equals(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue())) {
successXieyi.add(socketDataMsg.getData());
if (successXieyi.size() == monitorIdListComm.size()) {
for (String string : successXieyi) {
successDevComm.add(socketDataMsg.getData().split(splitTag)[0]);
successComm.add(socketDataMsg.getData());
if (successComm.size() == FormalTestManager.monitorIdListComm.size()) {
for (String string : successComm) {
//模拟统计协议校验,通讯校验已经校验过,模拟直接推送
SocketDataMsg webSend = new SocketDataMsg();
webSend.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_01.getValue());
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
webSend.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
webSend.setData(string);
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(webSend, devNameMapComm, 1));
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 1));
}
successComm.clear();
successDevComm.clear();
Map<String, List<PreDetection>> map = new HashMap<>(1);
map.put("deviceList", FormalTestManager.devList);
String jsonString = JSON.toJSONString(map);
@@ -611,22 +641,31 @@ public class SocketDevResponseService {
System.out.println("开始3协议校验++++++++++");
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
}
completeJudgment(param);
} else if (socketDataMsg.getOperateCode().equals(SourceOperateCodeEnum.DEV_INIT_GATHER_03.getValue())) {
successXieyi3.add(socketDataMsg.getData());
System.out.println(successXieyi3.size() + "=====" + monitorIdListComm.size());
if (successXieyi3.size() == monitorIdListComm.size()) {
successDevComm.add(socketDataMsg.getData().split(splitTag)[0]);
successComm.add(socketDataMsg.getData());
System.out.println(successComm.size() + "=====" + FormalTestManager.monitorIdListComm.size());
if (successComm.size() == FormalTestManager.monitorIdListComm.size()) {
SocketDataMsg temMsg = new SocketDataMsg();
temMsg.setCode(SourceResponseCodeEnum.DEV_COMM_ALL_SUCCESS.getCode());
temMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_03.getValue());
temMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(temMsg));
//开始下源控制脚本
PqScriptIssueParam issueParam = new PqScriptIssueParam();
issueParam.setPlanId(param.getPlanId());
issueParam.setSourceId(param.getSourceId());
issueParam.setDevIds(param.getDevIds());
issueParam.setScriptId(param.getScriptId());
successComm.clear();
successDevComm.clear();
socketMsg.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue());
List<SourceIssue> sourceIssues;
if (SourceOperateCodeEnum.FORMAL_TEST.getValue().equals(param.getOperateType())) {
@@ -649,6 +688,8 @@ public class SocketDevResponseService {
socketMsg.setData(JSON.toJSONString(sourceIssues.get(0)));
SocketManager.sendMsg(param.getUserPageId() + handlerSourceStr, JSON.toJSONString(socketMsg));
} else if (SourceOperateCodeEnum.TEST_TEM_START.getValue().equals(param.getOperateType())) {
//暂停检测后的继续检测
System.out.println("进入暂停后的继续检测》》》》》》》》》》》》》》》》》》》》》》》》》》》" + "剩余检测小项" + SocketManager.getSourceList().size());
if (CollUtil.isNotEmpty(SocketManager.getSourceList())) {
SourceIssue sourceIssue = SocketManager.getSourceList().get(0);
socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue() + stepTag + sourceIssue.getType());
@@ -661,6 +702,8 @@ public class SocketDevResponseService {
}
successComm.clear();
}
completeJudgment(param);
}
@@ -669,11 +712,13 @@ public class SocketDevResponseService {
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
break;
case DEV_ERROR:
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, devNameMapComm, 2));
failDevComm.add(socketDataMsg.getData());
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0));
CnSocketUtil.quitSend(param);
break;
case DEV_TARGET:
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, devNameMapComm, 2));
failDevComm.add(socketDataMsg.getData());
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0));
CnSocketUtil.quitSend(param);
break;
@@ -705,10 +750,10 @@ public class SocketDevResponseService {
case SUCCESS:
//webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(MsgUtil.msgToWebData(socketDataMsg,devNameMapComm,1)));
devInfo.add(devData);
success.add(devData.getId());
successComm.add(devData.getId());
if (success.size() == monitorIdListComm.size()) {
System.out.println("相序校验接受数据完成---------" + success.size() + "__" + monitorIdListComm.size());
if (successComm.size() == FormalTestManager.monitorIdListComm.size()) {
System.out.println("相序校验接受数据完成---------" + successComm.size() + "__" + FormalTestManager.monitorIdListComm.size());
PqScriptIssueParam sourceParam = new PqScriptIssueParam();
sourceParam.setPlanId(param.getPlanId());
@@ -741,6 +786,7 @@ public class SocketDevResponseService {
temMsg.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue());
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(temMsg));
successComm.clear();
if (param.getOperateType().equals(SourceOperateCodeEnum.PRE_TEST.getValue())) {
System.out.println("预检测流程接受-----------------关闭源");
//同时关闭设备三个步骤
@@ -776,14 +822,15 @@ public class SocketDevResponseService {
devInfo.add(devData);
break;
case DEV_ERROR:
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, devNameMapComm, 2));
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0));
CnSocketUtil.quitSend(param);
break;
case DEV_TARGET:
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, devNameMapComm, 2));
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0));
CnSocketUtil.quitSend(param);
break;
case RE_OPERATE:
CnSocketUtil.quitSend(param);
break;
default:
WebSocketVO<String> webSocketVO = new WebSocketVO<>();
@@ -800,7 +847,7 @@ public class SocketDevResponseService {
/**
* 正式检测
*/
public void realDeal(PreDetectionParam param, SocketDataMsg socketDataMsg) {
public void formalDeal(PreDetectionParam param, SocketDataMsg socketDataMsg) {
String data = socketDataMsg.getData();
DevData devData = JSON.parseObject(data, DevData.class);
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
@@ -813,7 +860,7 @@ public class SocketDevResponseService {
//FormalTestManager.devXiNumDataMap.put(devData.getId(),)
if (successComm.size() == monitorIdListComm.size()) {
if (successComm.size() == FormalTestManager.monitorIdListComm.size()) {
//TODO 理论上遇到返回code10200的数量与监测点数量一致则认为数据返回结束但是会存在缺失数据情况,例如有部分装置是没有暂降功能的
System.out.println(sourceIssue.getType() + splitTag + sourceIssue.getIndex() + "当前测试小项读取数据已经全部结束。。。。。。。。。");
@@ -821,7 +868,7 @@ public class SocketDevResponseService {
baseDataInsert(realDataXiList, sourceIssue, param, SocketManager.valueTypeMap);
//调用判断方法
Map<String, Integer> textResult = detectionServiceImpl.processing(realDataXiList, param, devIdMapComm, sourceIssue, dataRule);
Map<String, Integer> textResult = detectionServiceImpl.processing(realDataXiList, param, FormalTestManager.devIdMapComm, sourceIssue, dataRule);
long tem = SocketManager.getSourceTarget(sourceIssue.getType()) - 1;
SocketManager.addTargetMap(sourceIssue.getType(), tem);
@@ -978,8 +1025,8 @@ public class SocketDevResponseService {
List<SourceCompareDev> info = new ArrayList<>();
String[] split = dev.getId().split(splitTag);
String devName = null;
if (devNameMapComm.containsKey(split[0])) {
devName = devNameMapComm.get(split[0]);
if (FormalTestManager.devNameMapComm.containsKey(split[0])) {
devName = FormalTestManager.devNameMapComm.get(split[0]);
}
List<SourceIssue.ChannelListDTO> channelList = issue.getChannelList();
@@ -1063,29 +1110,42 @@ public class SocketDevResponseService {
}
/**
* 暂停后的重新检测
*/
public void initRestart() {
this.successComm.clear();
this.realDataXiList.clear();
}
/**
* 初始化集合
*/
public void initList(PreDetectionParam param) {
this.monitorIdListComm.clear();
this.successComm.clear();
this.successXieyi.clear();
this.successXieyi3.clear();
FormalTestManager.monitorIdListComm.clear();
FormalTestManager.devList.clear();
SocketManager.valueTypeMap.clear();
SocketManager.clockMap.clear();
successComm.clear();
successDevComm.clear();
failDevComm.clear();
//初始化相序集合
this.devInfo.clear();
this.success.clear();
this.devDataMap.clear();
this.realDataXiList.clear();
FormalTestManager.devList.clear();
List<PreDetection> pqDevList = iPqDevService.getDevInfo(param.getDevIds());
FormalTestManager.devList = pqDevList;
this.monitorIdListComm = pqDevList.stream().flatMap(x -> x.getMonitorList().stream()).map(PreDetection.MonitorListDTO::getLineId).collect(Collectors.toList());
this.devNameMapComm = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevName));
this.devIdMapComm = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId));
SocketManager.clockMap.clear();
FormalTestManager.devMapMonitorNum = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP,it->it.getMonitorList().stream().map(PreDetection.MonitorListDTO::getLineId).collect(Collectors.toList())));
FormalTestManager.monitorIdListComm = pqDevList.stream().flatMap(x -> x.getMonitorList().stream()).map(PreDetection.MonitorListDTO::getLineId).collect(Collectors.toList());
FormalTestManager.devNameMapComm = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevName));
FormalTestManager.devIdMapComm = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId));
//初始化有效数据数
Map<String, SysRegResVO> sysRegResMap = iSysRegResService.listRegRes();
//Map<String, SysRegResVO> sysRegResMap = iSysRegResService.listRegRes();
SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
if (ObjectUtil.isNotNull(oneConfig)) {
@@ -1094,25 +1154,25 @@ public class SocketDevResponseService {
dataRule = DictDataEnum.AT_WILL_VALUE;
}
//字典树
SocketManager.valueTypeMap.clear();
SocketManager.valueTypeMap = iPqScriptCheckDataService.getValueTypeMap(param.getScriptId());
initXiManager(param);
}
//初始化
private void initXiManager(PreDetectionParam param) {
XiNumberManager.devParameterList.clear();
Double v = FormalTestManager.devList.get(0).getDevVolt();
Double i = FormalTestManager.devList.get(0).getDevCurr();
CoefficientVO.DevParameter devParameterBig = new CoefficientVO.DevParameter();
devParameterBig.setDevVolt(BigDecimal.valueOf(v * 1.2).setScale(2, RoundingMode.HALF_UP).doubleValue());
devParameterBig.setDevCurr(BigDecimal.valueOf(i * 1.5).setScale(2, RoundingMode.HALF_UP).doubleValue());
devParameterBig.setDevCurr(BigDecimal.valueOf(i * 1.2).setScale(2, RoundingMode.HALF_UP).doubleValue());
CoefficientVO.DevParameter devParameterSmall = new CoefficientVO.DevParameter();
devParameterSmall.setDevVolt(BigDecimal.valueOf(v * 0.2).setScale(2, RoundingMode.HALF_UP).doubleValue());
devParameterSmall.setDevCurr(BigDecimal.valueOf(i * 0.2).setScale(2, RoundingMode.HALF_UP).doubleValue());
XiNumberManager.devParameterList.clear();
XiNumberManager.devParameterList.add(devParameterBig);
XiNumberManager.devParameterList.add(devParameterSmall);
@@ -1164,7 +1224,7 @@ public class SocketDevResponseService {
if (Objects.nonNull(localDateTime)) {
String[] splitArr = data.getId().split(splitTag);
String temId = devIdMapComm.get(splitArr[0]) + splitTag + splitArr[1];
String temId = FormalTestManager.devIdMapComm.get(splitArr[0]) + splitTag + splitArr[1];
if (nonHarmonicList.contains(sourceIssue.getType())) {
for (DevData.SqlDataDTO sqlDataDTO : data.getSqlData()) {

View File

@@ -83,6 +83,8 @@ public class SocketSourceResponseService {
case QUITE_SOURCE:
quitDeal(socketDataMsg,param);
break;
case YXT:
break;
}
} else {
@@ -160,7 +162,7 @@ public class SocketSourceResponseService {
socketMsg.setData(jsonString);
String json = JSON.toJSONString(socketMsg);
// SocketManager.sendMsg(s,json);
NettyClient.socketClient(ip, port, param.getUserPageId(), json, new NettyDevClientHandler(param, socketDevResponseService));
NettyClient.socketClient(ip, port, param, json, new NettyDevClientHandler(param, socketDevResponseService));
break;
case UNPROCESSED_BUSINESS:
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
@@ -205,7 +207,7 @@ public class SocketSourceResponseService {
DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam();
phaseSequenceParam.setMoniterIdList(moniterIdList);
phaseSequenceParam.setDataType(Arrays.asList("real$VRMS", "real$IRMS"));
phaseSequenceParam.setReadCount(1);
phaseSequenceParam.setReadCount(5);
phaseSequenceParam.setIgnoreCount(10);
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));

View File

@@ -10,8 +10,8 @@ import lombok.Getter;
public enum DetectionResponseEnum {
PLAN_PATTERN_NOT("A020001", "计划模式查询为空"),
SOURCE_INFO_NOT("A020002", "源表信息不存在"),
PLAN_AND_SOURCE_NOT("A020003", "计划和源关系不存在")
PLAN_AND_SOURCE_NOT("A020003", "计划和源关系不存在"),
ITEM_TEST_NOT("A020003", "检测项为空")
;
private String code;

View File

@@ -42,8 +42,8 @@ public enum SourceOperateCodeEnum {
/**
* 请求操作类型对应实体中 requestId
*/
YJC_YTXJY("yjc_ytxjy", "预检测_源通讯检测"),
YJC_SBTXJY("yjc_sbtxjy", "预检测_设备通讯检测"),
YJC_YTXJY("yjc_ytxjy", "源通讯检测"),
YJC_SBTXJY("yjc_sbtxjy", "设备通讯检测"),
YJC_XYJY("yjc_xyjy", "预检测_协议校验"),
YJC_XUJY("YJC_xujy", "相序校验"),
FORMAL_REAL("formal_real","正式检测_获取实时数据"),
@@ -52,6 +52,9 @@ public enum SourceOperateCodeEnum {
Coefficient_Check("Coefficient_Check","系数校验"),
QUITE("quit","预监测_关闭设备通讯初始化"),
QUITE_SOURCE("close_source","预监测_关闭源通讯"),
ERROR_FLOW_END("error_flow_end","当前流程存在异常结束"),
YXT("yxt","心跳"),
UNKNOWN_OPERATE("unknown_operate","未知的操作返回,请联系管理员排查"),
SOCKET_TIMEOUT("socket_timeout","与源或者装置通讯等待超时"),

View File

@@ -36,6 +36,7 @@ public enum SourceResponseCodeEnum {
//自定义前端展示消息
SOCKET_ERROR(25000,"服务端连接失败"),
DEV_COMM_ALL_SUCCESS(25001,"校验成功"),
DEV_COMM_TEST_FAIL(25002,"设备通讯校验失败"),

View File

@@ -17,7 +17,7 @@ public class WebSocketVO<T> {
private String operateCode;
private String code;
private Integer code;
private T data;

View File

@@ -1,6 +1,7 @@
package com.njcn.gather.detection.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -21,6 +22,7 @@ import com.njcn.gather.detection.util.socket.SocketManager;
import com.njcn.gather.detection.util.socket.cilent.NettyClient;
import com.njcn.gather.detection.util.socket.cilent.NettySourceClientHandler;
import com.njcn.gather.device.device.service.IPqDevService;
import com.njcn.gather.device.script.pojo.po.SourceIssue;
import com.njcn.gather.device.script.service.IPqScriptDtlsService;
import com.njcn.gather.device.source.pojo.po.PqSource;
import com.njcn.gather.device.source.pojo.po.SourceInitialize;
@@ -114,7 +116,7 @@ public class PreDetectionServiceImpl implements PreDetectionService {
msg.setOperateCode(SourceOperateCodeEnum.INIT_GATHER.getValue());
msg.setData(JSON.toJSONString(sourceParam));
param.setSourceId(sourceParam.getSourceId());
NettyClient.socketClient(ip, port, param.getUserPageId(), JSON.toJSONString(msg), new NettySourceClientHandler(param, sourceResponseService));
NettyClient.socketClient(ip, port, param, JSON.toJSONString(msg), new NettySourceClientHandler(param, sourceResponseService));
} else {
throw new BusinessException(DetectionResponseEnum.SOURCE_INFO_NOT);
}
@@ -137,7 +139,7 @@ public class PreDetectionServiceImpl implements PreDetectionService {
msg.setOperateCode(SourceOperateCodeEnum.INIT_GATHER.getValue());
msg.setData(JSON.toJSONString(sourceParam));
param.setSourceId(sourceParam.getSourceId());
NettyClient.socketClient(ip, port, param.getUserPageId(), JSON.toJSONString(msg), new NettySourceClientHandler(param, sourceResponseService));
NettyClient.socketClient(ip, port, param, JSON.toJSONString(msg), new NettySourceClientHandler(param, sourceResponseService));
} else {
throw new BusinessException(DetectionResponseEnum.SOURCE_INFO_NOT);
}
@@ -151,7 +153,7 @@ public class PreDetectionServiceImpl implements PreDetectionService {
public boolean startTest(PreDetectionParam param) {
socketDevResponseService.initList(param);
NettyClient.socketClient(ip, port, param.getUserPageId(), "start\n", new NettySourceClientHandler(param, sourceResponseService));
NettyClient.socketClient(ip, port, param, "start\n", new NettySourceClientHandler(param, sourceResponseService));
return true;
}
@@ -169,19 +171,21 @@ public class PreDetectionServiceImpl implements PreDetectionService {
AdPlanSource planSource = adPlanSourceService.getOne(new LambdaQueryWrapper<AdPlanSource>().eq(AdPlanSource::getPlanId, param.getPlanId()));
if (ObjectUtil.isNotNull(planSource)) {
SourceInitialize sourceParam = pqSourceService.getSourceInitializeParam(planSource.getSourceId());
if (ObjectUtil.isNotNull(sourceParam)) {
if (Objects.isNull(sourceParam)) {
throw new BusinessException(DetectionResponseEnum.SOURCE_INFO_NOT);
}
param.setSourceId(sourceParam.getSourceId());
if (CollUtil.isNotEmpty(SocketManager.getSourceList())) {
//开始组装socket报文请求头
socketDevResponseService.initList(param);
socketSourceResponseService.initList(param);
socketDevResponseService.initRestart();
SocketMsg<String> msg = new SocketMsg<>();
msg.setRequestId(SourceOperateCodeEnum.YJC_YTXJY.getValue());
msg.setOperateCode(SourceOperateCodeEnum.INIT_GATHER.getValue());
msg.setData(JSON.toJSONString(sourceParam));
param.setSourceId(sourceParam.getSourceId());
param.setOperateType(SourceOperateCodeEnum.TEST_TEM_START.getValue());
NettyClient.socketClient(ip, port, param.getUserPageId(), JSON.toJSONString(msg), new NettySourceClientHandler(param, sourceResponseService));
NettyClient.socketClient(ip, port, param, JSON.toJSONString(msg), new NettySourceClientHandler(param, sourceResponseService));
} else {
throw new BusinessException(DetectionResponseEnum.SOURCE_INFO_NOT);
throw new BusinessException(DetectionResponseEnum.ITEM_TEST_NOT);
}
} else {
throw new BusinessException(DetectionResponseEnum.PLAN_AND_SOURCE_NOT);

View File

@@ -3,6 +3,7 @@ package com.njcn.gather.detection.util.socket;
import com.njcn.gather.device.device.pojo.vo.PreDetection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -14,23 +15,30 @@ import java.util.concurrent.ConcurrentHashMap;
*/
public class FormalTestManager {
public static Map<String, String> devXiNumDataMap = new ConcurrentHashMap<>();
public static Map<String,List<String>> devMapMonitorNum = new ConcurrentHashMap<>();
/**
* 存储所有准备测试的检测点通道
* 所有参与检测的装置
*/
public static List<String> allMonitorList = new ArrayList<>();
/**
* 存储每个测试项正常结束的监测点通道
*/
public static List<String> monitorSuccessList = new ArrayList<>();
public static List<PreDetection> devList = new ArrayList<>();
/**
* 所有参与检测的监测点
*/
public static List<String> monitorIdListComm = new ArrayList<>();
/**
* 装置名称
*/
public static Map<String, String> devNameMapComm = new HashMap<>();
/**
* 装置id
*/
public static Map<String, String> devIdMapComm = new HashMap<>();
public static Boolean stopFlag = false;

View File

@@ -4,8 +4,10 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.njcn.gather.detection.pojo.enums.SourceResponseCodeEnum;
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
import com.njcn.gather.detection.pojo.vo.SocketDataMsg;
import com.njcn.gather.detection.pojo.vo.WebSocketVO;
import com.njcn.gather.detection.util.socket.CnSocketUtil;
import com.njcn.gather.detection.util.socket.SocketManager;
import com.njcn.gather.detection.util.socket.WebServiceManager;
import io.netty.bootstrap.Bootstrap;
@@ -30,7 +32,7 @@ import java.util.concurrent.TimeUnit;
@Getter
public class NettyClient {
public static void socketClient(String ip, Integer port, String userPageId,String msg, SimpleChannelInboundHandler<String> handler) {
public static void socketClient(String ip, Integer port, PreDetectionParam param, String msg, SimpleChannelInboundHandler<String> handler) {
NioEventLoopGroup group = new NioEventLoopGroup();
Bootstrap bootstrap = new Bootstrap();
try {
@@ -72,14 +74,14 @@ public class NettyClient {
channelFuture.channel().writeAndFlush(msg+"\n");
}
});
NioEventLoopGroup groupByUserId = SocketManager.getGroupByUserId(userPageId + "_Dev");
NioEventLoopGroup groupByUserId = SocketManager.getGroupByUserId(param.getUserPageId() + "_Dev");
if(ObjectUtil.isNotNull(groupByUserId)){
groupByUserId.shutdownGracefully();
}else{
if (handler instanceof NettySourceClientHandler) {
SocketManager.addGroup(userPageId+"_Source",group);
SocketManager.addGroup(param.getUserPageId()+"_Source",group);
}else{
SocketManager.addGroup(userPageId+"_Dev",group);
SocketManager.addGroup(param.getUserPageId()+"_Dev",group);
}
}
} catch (Exception e) {
@@ -94,9 +96,10 @@ public class NettyClient {
if (handler instanceof NettySourceClientHandler) {
socketDataMsg.setOperateCode("Source");
}else{
CnSocketUtil.quitSendSource(param);
socketDataMsg.setOperateCode("Dev");
}
WebServiceManager.sendMsg(userPageId, JSON.toJSONString(socketDataMsg));
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
} finally {
// System.out.println("进入clientSocket最后步骤---------------------");
}

View File

@@ -106,7 +106,7 @@ public class NettySourceClientHandler extends SimpleChannelInboundHandler<String
msg.setRequestId("yxt");
msg.setOperateCode(SourceOperateCodeEnum.HEARTBEAT.getValue());
msg.setData("");
ctx.writeAndFlush(JSON.toJSONString(msg));
ctx.writeAndFlush(JSON.toJSONString(msg)+"\n");
}
} else {
//防止堆栈溢出

View File

@@ -28,6 +28,7 @@ import com.njcn.gather.plan.pojo.vo.AdPlanExcel;
import com.njcn.gather.plan.pojo.vo.AdPlanVO;
import com.njcn.gather.plan.service.IAdPlanService;
import com.njcn.gather.plan.service.IAdPlanSourceService;
import com.njcn.gather.storage.service.TableGenService;
import com.njcn.gather.system.dictionary.pojo.po.DictTree;
import com.njcn.gather.system.dictionary.service.IDictDataService;
import com.njcn.gather.system.dictionary.service.IDictTreeService;
@@ -59,6 +60,7 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
private final IPqSourceService pqSourceService;
private final IPqScriptDtlsService pqScriptDtlsService;
private final IDictTreeService dictTreeService;
private final TableGenService tableGenService;
@Override
public Page<AdPlanVO> listAdPlan(AdPlanParam.QueryParam queryParam) {
@@ -118,7 +120,10 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
pqDevService.updatePqDevTimeCheckResult(param.getDevIds(), TimeCheckResultEnum.UNKNOWN);
}
return this.save(adPlan);
//新增相关计划
this.save(adPlan);
tableGenService.genAdNonHarmonicTable(adPlan.getCode().toString());
return true;
}
@Override

3
storage/README.md Normal file
View File

@@ -0,0 +1,3 @@
#### 简介
检测数据模块主要包含以下功能:
* 计划关联数据管理

View File

@@ -5,6 +5,7 @@ public interface TableGenService {
void genAdNonHarmonicTable(String code);
void delAdNonHarmonicTable(String code);
}

View File

@@ -62,9 +62,11 @@ public class TableGenServiceImpl implements TableGenService {
tableGenMapper.genAdHarmonicTable(sql2);
}
@Override
public void delAdNonHarmonicTable(String code) {
String sql = "DROP TABLE ad_harmonic_"+code+",ad_harmonic_result_"+code+",ad_non_harmonic_"+code+",ad_non_harmonic_result_"+code;
tableGenMapper.genAdHarmonicTable(sql);
}
}