增加部分教学模式,微调部分代码,增加原始数据转换工具类

This commit is contained in:
wr
2025-03-05 11:44:08 +08:00
parent 273dd18405
commit 6fb6733727
7 changed files with 215 additions and 69 deletions

View File

@@ -34,7 +34,6 @@ import org.springframework.web.bind.annotation.*;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@@ -71,6 +70,32 @@ public class PreDetectionController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }
/**
* 关闭检测
*/
@PostMapping("/closeCheck")
@OperateInfo
@ApiOperation("关闭检测")
@ApiImplicitParam(name = "param", value = "查询参数", required = true)
public HttpResult<String> closeCheck(@RequestBody @Validated PreDetectionParam param){
String methodDescribe = getMethodDescribe("closeCheck");
preDetectionService.closeCheck(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
/**
* 下一步检测
*/
@PostMapping("/nextScript")
@OperateInfo
@ApiOperation("下一步检测")
@ApiImplicitParam(name = "param", value = "查询参数", required = true)
public HttpResult<String> nextScript(@RequestBody @Validated PreDetectionParam param){
String methodDescribe = getMethodDescribe("nextScript");
preDetectionService.nextScript(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
/** /**
* 系数校验 * 系数校验

View File

@@ -149,8 +149,6 @@ public class SocketDevResponseService {
} }
/** /**
* 系数校验 * 系数校验
*/ */
@@ -270,7 +268,7 @@ public class SocketDevResponseService {
successComm.add(devData.getId()); successComm.add(devData.getId());
System.out.println(successComm.size() + " ==" + FormalTestManager.monitorIdListComm.size() + "FormalTestManager.realDataXiList:" + FormalTestManager.realDataXiList.size() + "当前步骤" + XiNumberManager.stepNumber); System.out.println(successComm.size() + " ==" + FormalTestManager.monitorIdListComm.size() + "FormalTestManager.realDataXiList:" + FormalTestManager.realDataXiList.size() + "当前步骤" + XiNumberManager.stepNumber);
if (successComm.size() == FormalTestManager.monitorIdListComm.size()) { if (successComm.size() == FormalTestManager.monitorIdListComm.size()) {
processData(param,xiSocket); processData(param, xiSocket);
} }
break; break;
@@ -298,26 +296,25 @@ public class SocketDevResponseService {
} }
private void processData(PreDetectionParam param, SocketMsg<String> xiSocket) {
private void processData(PreDetectionParam param,SocketMsg<String> xiSocket) { System.out.println(XiNumberManager.stepNumber + "从装置中已经完成获取测试数据,准备开始计算----------------------");
System.out.println(XiNumberManager.stepNumber+"从装置中已经完成获取测试数据,准备开始计算----------------------");
Map<String, List<DevData>> realDataXiMap = FormalTestManager.realDataXiList.stream().collect(Collectors.groupingBy(it -> it.getId().split(splitTag)[0])); Map<String, List<DevData>> realDataXiMap = FormalTestManager.realDataXiList.stream().collect(Collectors.groupingBy(it -> it.getId().split(splitTag)[0]));
realDataXiMap.forEach((devIp, dataList) -> processDeviceData(devIp, dataList,param)); realDataXiMap.forEach((devIp, dataList) -> processDeviceData(devIp, dataList, param));
handleStep(XiNumberManager.stepNumber,param,xiSocket); handleStep(XiNumberManager.stepNumber, param, xiSocket);
} }
private void handleStep(int stepNumber, PreDetectionParam param,SocketMsg<String> xiSocket) { private void handleStep(int stepNumber, PreDetectionParam param, SocketMsg<String> xiSocket) {
switch (stepNumber) { switch (stepNumber) {
case 0: case 0:
sendModifyCoefficientCommand(param, xiSocket); sendModifyCoefficientCommand(param, xiSocket);
break; break;
case 1: case 1:
handleSmallVoltageStep(param,xiSocket); handleSmallVoltageStep(param, xiSocket);
break; break;
case 2: case 2:
handleBigVoltageStep(param,xiSocket); handleBigVoltageStep(param, xiSocket);
break; break;
case 3: case 3:
handleFinalStep(param); handleFinalStep(param);
@@ -328,14 +325,14 @@ public class SocketDevResponseService {
/** /**
* 修改系数命令下发 * 修改系数命令下发
*/ */
private void sendModifyCoefficientCommand(PreDetectionParam param,SocketMsg<String> xiSocket) { private void sendModifyCoefficientCommand(PreDetectionParam param, SocketMsg<String> xiSocket) {
xiSocket.setRequestId(SourceOperateCodeEnum.Coefficient_Check.getValue()); xiSocket.setRequestId(SourceOperateCodeEnum.Coefficient_Check.getValue());
xiSocket.setOperateCode(SourceOperateCodeEnum.DATA_CHNFACTOR$02.getValue()); xiSocket.setOperateCode(SourceOperateCodeEnum.DATA_CHNFACTOR$02.getValue());
xiSocket.setData(JSON.toJSONString(XiNumberManager.devXiNumDataMap.get(XiNumberManager.devXiList.get(0)))); xiSocket.setData(JSON.toJSONString(XiNumberManager.devXiNumDataMap.get(XiNumberManager.devXiList.get(0))));
SocketManager.sendMsg(param.getUserPageId() + handlerStr, JSON.toJSONString(xiSocket)); SocketManager.sendMsg(param.getUserPageId() + handlerStr, JSON.toJSONString(xiSocket));
} }
private void handleSmallVoltageStep(PreDetectionParam param,SocketMsg<String> xiSocket) { private void handleSmallVoltageStep(PreDetectionParam param, SocketMsg<String> xiSocket) {
System.out.println("进入小电压步骤》》》》》》》》》》》》》》》》》》》》》》》》"); System.out.println("进入小电压步骤》》》》》》》》》》》》》》》》》》》》》》》》");
double limit = 0.1; double limit = 0.1;
XiNumberManager.smallDevXiNumDataMap.forEach((devIp, devXiNumDataSmall) -> { XiNumberManager.smallDevXiNumDataMap.forEach((devIp, devXiNumDataSmall) -> {
@@ -365,7 +362,7 @@ public class SocketDevResponseService {
} }
private void handleBigVoltageStep(PreDetectionParam param,SocketMsg<String> xiSocket){ private void handleBigVoltageStep(PreDetectionParam param, SocketMsg<String> xiSocket) {
//大电压处理 //大电压处理
sendWebSocket(param.getUserPageId(), SourceOperateCodeEnum.Coefficient_Check.getValue(), SourceOperateCodeEnum.big_comp_end.getValue(), XiNumberManager.devParameterList.get(0)); sendWebSocket(param.getUserPageId(), SourceOperateCodeEnum.Coefficient_Check.getValue(), SourceOperateCodeEnum.big_comp_end.getValue(), XiNumberManager.devParameterList.get(0));
sendWebSocket(param.getUserPageId(), SourceOperateCodeEnum.Coefficient_Check.getValue(), SourceOperateCodeEnum.small_comp_start.getValue(), XiNumberManager.devParameterList.get(1)); sendWebSocket(param.getUserPageId(), SourceOperateCodeEnum.Coefficient_Check.getValue(), SourceOperateCodeEnum.small_comp_start.getValue(), XiNumberManager.devParameterList.get(1));
@@ -378,7 +375,7 @@ public class SocketDevResponseService {
successComm.clear(); successComm.clear();
} }
private void handleFinalStep(PreDetectionParam param){ private void handleFinalStep(PreDetectionParam param) {
sendWebSocket(param.getUserPageId(), SourceOperateCodeEnum.Coefficient_Check.getValue(), SourceOperateCodeEnum.small_comp_end.getValue(), XiNumberManager.devParameterList.get(1)); sendWebSocket(param.getUserPageId(), SourceOperateCodeEnum.Coefficient_Check.getValue(), SourceOperateCodeEnum.small_comp_end.getValue(), XiNumberManager.devParameterList.get(1));
System.out.println("-------------------------已经全部结束----------------------"); System.out.println("-------------------------已经全部结束----------------------");
CnSocketUtil.quitSend(param); CnSocketUtil.quitSend(param);
@@ -446,7 +443,7 @@ public class SocketDevResponseService {
} }
private void processDeviceData(String devIp, List<DevData> dataList,PreDetectionParam param) { private void processDeviceData(String devIp, List<DevData> dataList, PreDetectionParam param) {
AtomicBoolean xiFlag = new AtomicBoolean(true); AtomicBoolean xiFlag = new AtomicBoolean(true);
XiNumberManager.devXiList.add(devIp); XiNumberManager.devXiList.add(devIp);
@@ -468,7 +465,7 @@ public class SocketDevResponseService {
DevXiNumData.GF gfItem = createGFItem(monitorId, F); DevXiNumData.GF gfItem = createGFItem(monitorId, F);
gf.add(gfItem); gf.add(gfItem);
//表格数据 //表格数据
CnSocketUtil.sendToWebSocket(param.getUserPageId(),SourceOperateCodeEnum.Coefficient_Check.getValue(),SourceOperateCodeEnum.DATA_CHNFACTOR$02.getValue(),coefficientVO,null); CnSocketUtil.sendToWebSocket(param.getUserPageId(), SourceOperateCodeEnum.Coefficient_Check.getValue(), SourceOperateCodeEnum.DATA_CHNFACTOR$02.getValue(), coefficientVO, null);
}); });
DevXiNumData devXiNumData = createDevXiNumData(devIp, gf, xiFlag.get()); DevXiNumData devXiNumData = createDevXiNumData(devIp, gf, xiFlag.get());
@@ -785,7 +782,7 @@ public class SocketDevResponseService {
StorageParam storageParam = new StorageParam(); StorageParam storageParam = new StorageParam();
storageParam.setCode(Integer.valueOf(param.getCode())); storageParam.setCode(Integer.valueOf(param.getCode()));
storageParam.setScriptId(param.getScriptId()); storageParam.setScriptId(param.getScriptId());
List<Integer> indexes = adHarmonicService.getIndex(storageParam,true); List<Integer> indexes = adHarmonicService.getIndex(storageParam, true);
issueParam.setIndexList(indexes); issueParam.setIndexList(indexes);
issueParam.setIsPhaseSequence(SourceOperateCodeEnum.COEFFICIENT_TEST.getValue()); issueParam.setIsPhaseSequence(SourceOperateCodeEnum.COEFFICIENT_TEST.getValue());
} else { } else {
@@ -948,7 +945,6 @@ public class SocketDevResponseService {
SocketManager.sendMsg(param.getUserPageId() + handlerStr, JSON.toJSONString(socketMsg)); SocketManager.sendMsg(param.getUserPageId() + handlerStr, JSON.toJSONString(socketMsg));
XiNumberManager.stepNumber = 0; XiNumberManager.stepNumber = 0;
XiNumberManager.devXiList.clear(); XiNumberManager.devXiList.clear();
XiNumberManager.devXiNumDataMap.clear(); XiNumberManager.devXiNumDataMap.clear();
@@ -1047,7 +1043,7 @@ public class SocketDevResponseService {
allDevTestList.clear(); allDevTestList.clear();
CnSocketUtil.sendToWebSocket(param.getUserPageId(), socketDataMsg.getRequestId().split(stepTag)[1] + stepEnd, null, resultList, null); CnSocketUtil.sendToWebSocket(param.getUserPageId(), socketDataMsg.getRequestId().split(stepTag)[1] + stepEnd, null, resultList, null);
} }
if (!param.getIsTeachingMode()) {
//在这一步判断是否已经触发暂停按钮 //在这一步判断是否已经触发暂停按钮
if (FormalTestManager.stopFlag && CollUtil.isNotEmpty(SocketManager.getSourceList())) { if (FormalTestManager.stopFlag && CollUtil.isNotEmpty(SocketManager.getSourceList())) {
FormalTestManager.stopTime = 0; FormalTestManager.stopTime = 0;
@@ -1081,6 +1077,7 @@ public class SocketDevResponseService {
iPqDevService.updateResult(param.getDevIds(), valueType, param.getCode()); iPqDevService.updateResult(param.getDevIds(), valueType, param.getCode());
CnSocketUtil.quitSend(param); CnSocketUtil.quitSend(param);
} }
}
successComm.clear(); successComm.clear();
FormalTestManager.realDataXiList.clear(); FormalTestManager.realDataXiList.clear();
@@ -1111,6 +1108,8 @@ public class SocketDevResponseService {
} }
/* /*
private void processData(List<DevData> FormalTestManager.realDataXiList, List<String> successComm, SourceIssue sourceIssue, PreDetectionParam param, SocketDataMsg socketDataMsg, Object dataRule, String handlerSourceStr) { private void processData(List<DevData> FormalTestManager.realDataXiList, List<String> successComm, SourceIssue sourceIssue, PreDetectionParam param, SocketDataMsg socketDataMsg, Object dataRule, String handlerSourceStr) {
if (SocketManager.clockMap.containsKey(sourceIssue.getIndex())) { if (SocketManager.clockMap.containsKey(sourceIssue.getIndex())) {

View File

@@ -61,4 +61,9 @@ public class PreDetectionParam {
* 自动生成,用于生成数据表后缀 * 自动生成,用于生成数据表后缀
*/ */
private String code; private String code;
/**
* 是否是教学模式
*/
private Boolean isTeachingMode=false;
} }

View File

@@ -31,6 +31,8 @@ public interface PreDetectionService {
boolean restartTemTest(PreDetectionParam param); boolean restartTemTest(PreDetectionParam param);
void closeCheck(PreDetectionParam param);
void nextScript(PreDetectionParam param);
} }

View File

@@ -42,10 +42,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -198,6 +195,39 @@ public class PreDetectionServiceImpl implements PreDetectionService {
return true; return true;
} }
@Override
public void closeCheck(PreDetectionParam param) {
commCheck(param);
specialDeal(param);
}
@Override
public void nextScript(PreDetectionParam param) {
//开始进行下一项检测
SourceIssue sourceIssue = SocketManager.getSourceList().get(0);
long residueCount = SocketManager.getSourceTarget(sourceIssue.getType()) - 1;
List<SourceIssue> sourceIssueList = SocketManager.getSourceList();
if (CollUtil.isNotEmpty(sourceIssueList)) {
SourceIssue sourceIssues = SocketManager.getSourceList().get(0);
if (residueCount == 0) {
CnSocketUtil.sendToWebSocket(param.getUserPageId(), sourceIssues.getType() + "_Start", null, new ArrayList<>(), null);
}
SocketMsg<String> xuMsg = new SocketMsg<>();
xuMsg.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue());
xuMsg.setData(JSON.toJSONString(sourceIssues));
xuMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue() + "&&" + sourceIssues.getType());
SocketManager.sendMsg(param.getUserPageId() + "_Source", JSON.toJSONString(xuMsg));
} else {
//TODO 是否最终检测完成需要推送给用户
PqScriptCheckDataParam checkDataParam = new PqScriptCheckDataParam();
checkDataParam.setScriptId(param.getScriptId());
checkDataParam.setIsValueTypeName(false);
List<String> valueType = iPqScriptCheckDataService.getValueType(checkDataParam);
iPqDevService.updateResult(param.getDevIds(), valueType, param.getCode());
CnSocketUtil.quitSend(param);
}
}
/** /**
* 对重复发起或者异常发起的检测进行关闭源操作 * 对重复发起或者异常发起的检测进行关闭源操作

View File

@@ -34,7 +34,7 @@ public class FormalTestManager {
//用于存储所有测点的试试数据 //用于存储所有测点的实时数据
public static List<DevData> realDataXiList = new ArrayList<>(); public static List<DevData> realDataXiList = new ArrayList<>();

View File

@@ -1,14 +1,21 @@
package com.njcn.gather.detection.util.socket; package com.njcn.gather.detection.util.socket;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.serializer.SerializerFeature;
import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum; import com.njcn.gather.detection.pojo.po.DevData;
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
import com.njcn.gather.detection.pojo.vo.SocketDataMsg; import com.njcn.gather.detection.pojo.vo.SocketDataMsg;
import com.njcn.gather.detection.pojo.vo.SocketMsg; import com.njcn.gather.storage.pojo.po.AdHarmonicResult;
import com.njcn.gather.storage.pojo.po.AdNonHarmonicResult;
import java.lang.reflect.Field;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @author wr * @author wr
@@ -19,9 +26,8 @@ import java.util.Map;
public class MsgUtil { public class MsgUtil {
public static SocketDataMsg socketDataMsg(String textMsg) {
public static SocketDataMsg socketDataMsg(String textMsg){ return JSON.parseObject(textMsg, SocketDataMsg.class);
return JSON.parseObject(textMsg,SocketDataMsg.class);
} }
/** /**
@@ -46,13 +52,12 @@ public class MsgUtil {
/** /**
*
* @param socketDataMsg * @param socketDataMsg
* @param devMap * @param devMap
* @param type 0.装置 1.监测点 * @param type 0.装置 1.监测点
* @return * @return
*/ */
public static String msgToWebData(SocketDataMsg socketDataMsg, Map<String,String> devMap,Integer type){ public static String msgToWebData(SocketDataMsg socketDataMsg, Map<String, String> devMap, Integer type) {
String data = socketDataMsg.getData(); String data = socketDataMsg.getData();
if (StrUtil.isNotBlank(data)) { if (StrUtil.isNotBlank(data)) {
String[] parts = data.split("_"); String[] parts = data.split("_");
@@ -60,10 +65,10 @@ public class MsgUtil {
String key = parts[0]; String key = parts[0];
String newValue = devMap.get(key); String newValue = devMap.get(key);
if (newValue != null) { if (newValue != null) {
if(type == 0) { if (type == 0) {
socketDataMsg.setData(newValue); socketDataMsg.setData(newValue);
}else { } else {
socketDataMsg.setData(newValue+"_"+parts[1]+""); socketDataMsg.setData(newValue + "_" + parts[1] + "");
} }
} }
} }
@@ -71,6 +76,86 @@ public class MsgUtil {
return JSON.toJSONString(socketDataMsg); return JSON.toJSONString(socketDataMsg);
} }
public List<DevData> toList(List<AdNonHarmonicResult> nonHarm, List<AdHarmonicResult> harm) {
List<DevData> info = new ArrayList<>();
if (CollUtil.isNotEmpty(nonHarm)) {
if (CollUtil.isNotEmpty(nonHarm)) {
Map<String, List<AdNonHarmonicResult>> noHarmMap = nonHarm.stream()
.collect(Collectors.groupingBy(x -> x.getMonitorId() + "_" + x.getTimeId().format(DateTimeFormatter.ofPattern(DatePattern.UTC_SIMPLE_MS_PATTERN)) + "_" + x.getSort()));
noHarmMap.forEach((key, value) -> {
String[] split = key.split("_");
DevData data = new DevData();
data.setTime(split[1]);
data.setId(split[0]);
List<DevData.SqlDataDTO> sqlDataDTOS = new ArrayList<>();
DevData.SqlDataDTO sqlDataDTO;
for (AdNonHarmonicResult result : value) {
sqlDataDTO = new DevData.SqlDataDTO();
sqlDataDTO.setType(result.getDataType());
sqlDataDTO.setDesc(result.getAdType());
DevData.SqlDataDTO.ListDTO listDTO = new DevData.SqlDataDTO.ListDTO();
listDTO.setA(StrUtil.isNotBlank(result.getAValue()) ? Double.valueOf(result.getAValue()) : null);
listDTO.setB(StrUtil.isNotBlank(result.getBValue()) ? Double.valueOf(result.getBValue()) : null);
listDTO.setC(StrUtil.isNotBlank(result.getCValue()) ? Double.valueOf(result.getCValue()) : null);
listDTO.setT(StrUtil.isNotBlank(result.getTValue()) ? Double.valueOf(result.getTValue()) : null);
sqlDataDTO.setList(listDTO);
sqlDataDTOS.add(sqlDataDTO);
}
data.setSqlData(sqlDataDTOS);
info.add(data);
});
}
if (CollUtil.isNotEmpty(harm)) {
Map<String, List<AdHarmonicResult>> harmMap = harm.stream()
.collect(Collectors.groupingBy(x -> x.getMonitorId() + "_" + x.getTimeId().format(DateTimeFormatter.ofPattern(DatePattern.UTC_SIMPLE_MS_PATTERN))));
harmMap.forEach((key, value) -> {
List<DevData> collect = info.stream().filter(x -> key.equals(x.getId() + "_" + x.getTime())).collect(Collectors.toList());
List<DevData.SqlDataHarmDTO> sqlDataDTOS = new ArrayList<>();
DevData.SqlDataHarmDTO dataDTO;
for (AdHarmonicResult harmonicResult : value) {
dataDTO = new DevData.SqlDataHarmDTO();
dataDTO.setType(harmonicResult.getDataType());
dataDTO.setDesc(harmonicResult.getAdType());
dataDTO.setNum(49);
DevData.SqlDataHarmDTO.ListDTO listDTO = new DevData.SqlDataHarmDTO.ListDTO();
listDTO.setA(reflectHarmonicValue("a", harmonicResult));
listDTO.setB(reflectHarmonicValue("b", harmonicResult));
listDTO.setC(reflectHarmonicValue("c", harmonicResult));
dataDTO.setList(listDTO);
sqlDataDTOS.add(dataDTO);
}
if (CollUtil.isNotEmpty(collect)) {
collect.get(0).setSqlDataHarm(sqlDataDTOS);
} else {
String[] split = key.split("_");
DevData data = new DevData();
data.setTime(split[1]);
data.setId(split[0]);
data.setSqlDataHarm(sqlDataDTOS);
info.add(data);
}
});
}
}
return info;
}
private List<String> reflectHarmonicValue(String phase, AdHarmonicResult adHarmonicResult) {
List<String> info = new ArrayList<>();
for (int i = 2; i < 50; i++) {
String fieldName = phase + "Value" + i;
try {
Field idField = AdHarmonicResult.class.getDeclaredField(fieldName);
idField.setAccessible(true);
String value = idField.get(adHarmonicResult) + "";
info.add(value);
} catch (NoSuchFieldException | IllegalAccessException e) {
throw new RuntimeException(e);
}
}
return info;
}
} }