代码调整

This commit is contained in:
2025-01-07 20:18:44 +08:00
parent bf11f4c820
commit a5227c372f
14 changed files with 295 additions and 245 deletions

View File

@@ -68,6 +68,7 @@ public class PreDetectionController extends BaseController {
@ApiOperation("开始预检测")
@ApiImplicitParam(name = "param", value = "查询参数", required = true)
public HttpResult<String> startPreTest(@RequestBody PreDetectionParam param){
System.out.println("系数校验controller进入================================22");
String methodDescribe = getMethodDescribe("startPreTest");
preDetectionService.sourceCommunicationCheck(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
@@ -82,6 +83,7 @@ public class PreDetectionController extends BaseController {
@ApiOperation("系数校验")
@ApiImplicitParam(name = "param", value = "查询参数", required = true)
public HttpResult<String> coefficientCheck(@RequestBody PreDetectionParam param){
System.out.println("系数校验controller进入================================");
String methodDescribe = getMethodDescribe("coefficientCheck");
preDetectionService.coefficientCheck(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);

View File

@@ -4,11 +4,9 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.njcn.gather.detection.pojo.dto.DevXiNumData;
import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum;
import com.njcn.gather.detection.pojo.enums.SourceResponseCodeEnum;
import com.njcn.gather.detection.pojo.param.DevPhaseSequenceParam;
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
import com.njcn.gather.detection.pojo.po.DevData;
import com.njcn.gather.detection.pojo.po.SourceCompareDev;
@@ -20,7 +18,6 @@ import com.njcn.gather.detection.util.socket.web.WebSocketHandler;
import com.njcn.gather.device.device.pojo.vo.PreDetection;
import com.njcn.gather.device.device.service.IPqDevService;
import com.njcn.gather.device.script.pojo.param.PqScriptIssueParam;
import com.njcn.gather.device.script.pojo.po.PqScriptCheckData;
import com.njcn.gather.device.script.pojo.po.SourceIssue;
import com.njcn.gather.device.script.service.IPqScriptCheckDataService;
import com.njcn.gather.device.script.service.IPqScriptDtlsService;
@@ -29,11 +26,9 @@ import com.njcn.gather.storage.pojo.po.AdNonHarmonicResult;
import com.njcn.gather.storage.service.DetectionDataDealService;
import com.njcn.gather.system.dictionary.pojo.enums.DictDataEnum;
import com.njcn.gather.system.pojo.enums.DicDataEnum;
import com.njcn.gather.system.reg.pojo.po.SysRegRes;
import com.njcn.gather.system.reg.pojo.vo.SysRegResVO;
import com.njcn.gather.system.reg.service.ISysRegResService;
import lombok.RequiredArgsConstructor;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
@@ -74,7 +69,7 @@ public class SocketDevResponseService {
private final DetectionDataDealService detectionDataDealService;
private final ISysRegResService iSysRegResService;
private final IPqScriptCheckDataService iPqScriptCheckDataService;
private final ExecutorService executorPool = Executors.newFixedThreadPool(5);
private final ExecutorService executorPool = Executors.newFixedThreadPool(10);
/**
@@ -113,18 +108,15 @@ public class SocketDevResponseService {
List<String> successXieyi = new ArrayList<>();
List<String> successXieyi3 = new ArrayList<>();
// List<AdNonHarmonicResult> adNonHarmonicResultList = new ArrayList<>();
//标识当前检测小项是否结束
private Integer dtlsFlag = null;
public void deal(PreDetectionParam param, String msg) throws Exception {
SocketDataMsg socketDataMsg = MsgUtil.socketDataMsg(msg);
String[] tem = socketDataMsg.getRequestId().split("&&");
SourceOperateCodeEnum sourceOperateCodeEnum = SourceOperateCodeEnum.getDictDataEnumByCode(tem[0]);
switch (sourceOperateCodeEnum) {
switch (Objects.requireNonNull(sourceOperateCodeEnum)) {
//设备通讯校验
case YJC_SBTXJY:
devComm(socketDataMsg, param, msg);
@@ -137,7 +129,7 @@ public class SocketDevResponseService {
case YJC_XUJY:
devXu(param, socketDataMsg);
break;
//获取实时数据
//正式检测
case FORMAL_REAL:
realDeal(param, socketDataMsg);
break;
@@ -155,14 +147,8 @@ public class SocketDevResponseService {
}
private void xiDi(List<DevData> devDataList, SourceIssue sourceIssue) {
}
//用于存储所有测点的试试数据
private final List<DevData> realDataXiList = new ArrayList<>();
/**
* 系数校验
*/
@@ -170,17 +156,17 @@ public class SocketDevResponseService {
SourceOperateCodeEnum sourceOperateCodeEnum = SourceOperateCodeEnum.getDictDataEnumByCode(socketDataMsg.getOperateCode());
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
SocketMsg<String> xiSocket = new SocketMsg<>();
xiSocket.setRequestId(SourceOperateCodeEnum.Coefficient_Check.getValue());
switch (sourceOperateCodeEnum) {
switch (Objects.requireNonNull(sourceOperateCodeEnum)) {
case DATA_CHNFACTOR$01:
//获取系数
break;
case DATA_CHNFACTOR$02:
//系数下发后的回调
switch (dictDataEnumByCode) {
//系数下发后的响应
switch (Objects.requireNonNull(dictDataEnumByCode)) {
case SUCCESS:
xiSocket.setRequestId(SourceOperateCodeEnum.Coefficient_Check.getValue());
if (CollUtil.isNotEmpty(XiNumberManager.devXiList)) {
//单台装置系数下发后,需要删除集合中存在的当前装置
@@ -233,9 +219,10 @@ public class SocketDevResponseService {
//quitSend(param);
break;
case COMMUNICATION_ERR:
break;
default:
}
break;
case DEV_DATA_REQUEST_02:
@@ -243,7 +230,6 @@ public class SocketDevResponseService {
String data = socketDataMsg.getData();
DevData devData = JSON.parseObject(data, DevData.class);
if (ObjectUtil.isNotNull(dictDataEnumByCode)) {
SocketMsg<String> socketMsg = new SocketMsg<>();
switch (dictDataEnumByCode) {
case SUCCESS:
realDataXiList.add(devData);
@@ -303,9 +289,16 @@ public class SocketDevResponseService {
XiNumberManager.smallDevXiNumDataMap.put(devIp, devXiNumData);
}
});
if (XiNumberManager.stepNumber == 0) {
//开始发送修改系数命令
xiSocket.setRequestId(SourceOperateCodeEnum.Coefficient_Check.getValue());
xiSocket.setOperateCode(SourceOperateCodeEnum.DATA_CHNFACTOR$02.getValue());
xiSocket.setData(JSON.toJSONString(XiNumberManager.devXiNumDataMap.get(XiNumberManager.devXiList.get(0))));
SocketManager.sendMsg(param.getUserPageId() + handlerStr, JSON.toJSONString(xiSocket));
} else if (XiNumberManager.stepNumber == 1) {
System.out.println("进入小电压步骤》》》》》》》》》》》》》》》》》》》》》》》》");
if (XiNumberManager.stepNumber == 1) {
//判断小电压是否系数超过大电压10%
double limit = 0.1;
XiNumberManager.smallDevXiNumDataMap.forEach((devIp, devXiNumDataBig) -> {
@@ -326,7 +319,10 @@ public class SocketDevResponseService {
boolean vc = isWithinTenPercent(smallF.getUc_gain(), bigF.getUc_gain(), limit);
if (ia && ib && ic && va && vb && vc) {
} else {
System.out.println(devIp);
flag = false;
//继续下发一轮
if (!ia) {
@@ -364,19 +360,15 @@ public class SocketDevResponseService {
//如果差距超过10%则再次下发系数
if (CollUtil.isNotEmpty(XiNumberManager.devXiList)) {
socketMsg.setRequestId(SourceOperateCodeEnum.Coefficient_Check.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.DATA_CHNFACTOR$02.getValue());
socketMsg.setData(JSON.toJSONString(XiNumberManager.devXiNumDataMap.get(XiNumberManager.devXiList.get(0))));
SocketManager.sendMsg(param.getUserPageId() + handlerStr, JSON.toJSONString(socketMsg));
xiSocket.setOperateCode(SourceOperateCodeEnum.DATA_CHNFACTOR$02.getValue());
xiSocket.setData(JSON.toJSONString(XiNumberManager.devXiNumDataMap.get(XiNumberManager.devXiList.get(0))));
SocketManager.sendMsg(param.getUserPageId() + handlerStr, JSON.toJSONString(xiSocket));
} else {
//存在小电压系数在误差范围内情况,直接结束。
sendWebSocket(param.getUserPageId(), SourceOperateCodeEnum.Coefficient_Check.getValue(), SourceOperateCodeEnum.small_end.getValue(), XiNumberManager.devParameterList.get(1));
sendWebSocket(param.getUserPageId(), SourceOperateCodeEnum.Coefficient_Check.getValue(), SourceOperateCodeEnum.big_comp_start.getValue(), XiNumberManager.devParameterList.get(0));
//小电流系数下发完毕;开始重新测试一次大电压
xiSocket.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue());
xiSocket.setRequestId(SourceOperateCodeEnum.Coefficient_Check.getValue());
xiSocket.setData(JSON.toJSONString(XiNumberManager.xiSourceIssueList.get(0)));
SocketManager.sendMsg(param.getUserPageId() + handlerSourceStr, MsgUtil.toJsonWithNewLinePlain(xiSocket));
XiNumberManager.stepNumber = 2;
@@ -386,7 +378,6 @@ public class SocketDevResponseService {
} else if (XiNumberManager.stepNumber == 2) {
//大电压处理
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));
xiSocket.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue());
@@ -410,10 +401,10 @@ public class SocketDevResponseService {
realDataXiList.add(devData);
break;
default:
socketMsg.setRequestId(socketDataMsg.getRequestId());
socketMsg.setOperateCode(socketDataMsg.getOperateCode());
socketMsg.setData(dictDataEnumByCode.getMessage());
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketMsg));
xiSocket.setRequestId(socketDataMsg.getRequestId());
xiSocket.setOperateCode(socketDataMsg.getOperateCode());
xiSocket.setData(dictDataEnumByCode.getMessage());
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(xiSocket));
break;
}
}
@@ -425,6 +416,11 @@ public class SocketDevResponseService {
}
/**
* 系数校验
*/
/**
* 比较两个数的差值,是否再limit范围内
*/
@@ -464,9 +460,9 @@ public class SocketDevResponseService {
coefficientVO.setCIeData(String.valueOf(optionalIC));
if (XiNumberManager.stepNumber == 0 || XiNumberManager.stepNumber == 1) {
Integer aXi = (int) ((optionalA / devParameter.getDevCurr()) * 10000);
Integer bXi = (int) ((optionalB / devParameter.getDevCurr()) * 10000);
Integer cXi = (int) ((optionalC / devParameter.getDevCurr()) * 10000);
Integer aXi = (int) ((optionalA / devParameter.getDevVolt()) * 10000);
Integer bXi = (int) ((optionalB / devParameter.getDevVolt()) * 10000);
Integer cXi = (int) ((optionalC / devParameter.getDevVolt()) * 10000);
Integer aIXi = (int) ((optionalIA / devParameter.getDevCurr()) * 10000);
Integer bIXi = (int) ((optionalIB / devParameter.getDevCurr()) * 10000);
Integer cIXi = (int) ((optionalIC / devParameter.getDevCurr()) * 10000);
@@ -518,10 +514,8 @@ public class SocketDevResponseService {
case SUCCESS:
//通讯校验成功
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, devNameMapComm, 1));
String mId = JSON.parseObject(msg).get("data").toString();
successComm.add(mId);
System.out.println(successComm.size() + "=====" + monitorIdListComm.size());
successComm.add(socketDataMsg.getData());
System.out.println("设备通讯校验全部成功!"+successComm.size() + "=====" + monitorIdListComm.size());
if (successComm.size() == monitorIdListComm.size()) {
SocketDataMsg temMsg = new SocketDataMsg();
@@ -541,7 +535,7 @@ public class SocketDevResponseService {
socketMsg.setData(jsonString);
String json = JSON.toJSONString(socketMsg);
System.out.println("开始协议校验++++++++++");
System.out.println("开始协议校验》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》");
SocketManager.sendMsg(s, json);
}
@@ -571,9 +565,10 @@ public class SocketDevResponseService {
quitSend(param);
break;
default:
WebSocketVO webSocketVO = new WebSocketVO();
WebSocketVO<String> webSocketVO = new WebSocketVO<>();
webSocketVO.setRequestId(SourceOperateCodeEnum.UNKNOWN_OPERATE.getValue());
webSocketVO.setData(SourceOperateCodeEnum.UNKNOWN_OPERATE.getMsg());
webSocketHandler.sendMsgToUser(param.getUserPageId(),JSON.toJSONString(webSocketVO));
break;
}
}
@@ -592,10 +587,8 @@ public class SocketDevResponseService {
if (socketDataMsg.getOperateCode().equals(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue())) {
successXieyi.add(socketDataMsg.getData());
if (successXieyi.size() == monitorIdListComm.size()) {
for (String string : successXieyi) {
//模拟统计协议校验,通讯校验已经校验过,模拟直接推送
SocketDataMsg webSend = new SocketDataMsg();
webSend.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_01.getValue());
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
@@ -604,34 +597,25 @@ public class SocketDevResponseService {
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(webSend, devNameMapComm, 1));
}
//协议3校验
//successXieyi = new ArrayList<>();
List<PreDetection> devList = iPqDevService.getDevInfo(param.getDevIds());
Map<String, List<PreDetection>> map = new HashMap<>(1);
map.put("deviceList", devList);
String jsonString = JSON.toJSONString(map);
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_03.getValue());
socketMsg.setData(jsonString);
String json = JSON.toJSONString(socketMsg);
System.out.println("开始3协议校验++++++++++");
SocketManager.sendMsg(s, json);
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
}
} 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()) {
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());
@@ -653,23 +637,18 @@ public class SocketDevResponseService {
xuMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue() + "&&" + sourceIssues.get(0).getType());
SocketManager.sendMsg(param.getUserPageId() + handlerSourceStr, MsgUtil.toJsonWithNewLinePlain(xuMsg));
} else if (SourceOperateCodeEnum.PRE_TEST.getValue().equals(param.getOperateType())) {
//预检测的相序检测
} else if (SourceOperateCodeEnum.PRE_TEST.getValue().equals(param.getOperateType()) || SourceOperateCodeEnum.COEFFICIENT_TEST.getValue().equals(param.getOperateType())) {
//预检测的相序检测 以及系数校验都需要进行相序检测
issueParam.setIsPhaseSequence(SourceOperateCodeEnum.PHASE_TEST.getValue());
xuMsg.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue());
sourceIssues = pqScriptDtlsService.listSourceIssue(issueParam);
xuMsg.setData(JSON.toJSONString(sourceIssues.get(0)));
SocketManager.sendMsg(param.getUserPageId() + handlerSourceStr, MsgUtil.toJsonWithNewLinePlain(xuMsg));
} else if (SourceOperateCodeEnum.COEFFICIENT_TEST.getValue().equals(param.getOperateType())) {
//系数校验
} else {
/* issueParam.setIsPhaseSequence(SourceOperateCodeEnum.PHASE_TEST.getValue());
xuMsg.setRequestId(SourceOperateCodeEnum.Coefficient_Check.getValue());
sourceIssues = pqScriptDtlsService.listSourceIssue(issueParam);
xuMsg.setData(JSON.toJSONString(sourceIssues.get(0)));
SocketManager.sendMsg(param.getUserPageId() + handlerSourceStr, MsgUtil.toJsonWithNewLinePlain(xuMsg));*/
WebSocketVO<Object> webSocketVO = new WebSocketVO<>();
/* WebSocketVO<Object> webSocketVO = new WebSocketVO<>();
webSocketVO.setRequestId(SourceOperateCodeEnum.Coefficient_Check.getValue());
webSocketVO.setOperateCode(SourceOperateCodeEnum.big_start.getValue());
webSocketVO.setData(XiNumberManager.devParameterList.get(0));
@@ -682,7 +661,7 @@ public class SocketDevResponseService {
XiNumberManager.stepNumber = 0;
XiNumberManager.devXiList.clear();
XiNumberManager.devXiNumDataMap.clear();
XiNumberManager.smallDevXiNumDataMap.clear();
XiNumberManager.smallDevXiNumDataMap.clear();*/
//系数校验只支持单个装置修改系数
@@ -700,12 +679,10 @@ public class SocketDevResponseService {
case DEV_ERROR:
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, devNameMapComm, 2));
quitSend(param);
quitSendSource(param);
break;
case DEV_TARGET:
webSocketHandler.sendMsgToUser(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, devNameMapComm, 2));
quitSend(param);
quitSendSource(param);
break;
case RE_OPERATE:
@@ -714,9 +691,10 @@ public class SocketDevResponseService {
quitSend(param);
break;
default:
WebSocketVO webSocketVO = new WebSocketVO();
WebSocketVO<String> webSocketVO = new WebSocketVO<>();
webSocketVO.setRequestId(SourceOperateCodeEnum.UNKNOWN_OPERATE.getValue());
webSocketVO.setData(SourceOperateCodeEnum.UNKNOWN_OPERATE.getMsg());
webSocketHandler.sendMsgToUser(param.getUserPageId(),JSON.toJSONString(webSocketVO));
break;
}
}
@@ -728,15 +706,18 @@ public class SocketDevResponseService {
public void devXu(PreDetectionParam param, SocketDataMsg socketDataMsg) {
String data = socketDataMsg.getData();
DevData devData = JSON.parseObject(data, DevData.class);
SocketMsg<String> socketMsg = new SocketMsg<>();
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
if (ObjectUtil.isNotNull(dictDataEnumByCode)) {
SocketMsg<String> socketMsg = new SocketMsg<>();
switch (dictDataEnumByCode) {
case SUCCESS:
//webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(MsgUtil.msgToWebData(socketDataMsg,devNameMapComm,1)));
devInfo.add(devData);
success.add(devData.getId());
if (success.size() == monitorIdListComm.size()) {
System.out.println("相序校验接受数据完成---------"+success.size()+"__"+monitorIdListComm.size());
PqScriptIssueParam sourceParam = new PqScriptIssueParam();
sourceParam.setPlanId(param.getPlanId());
sourceParam.setDevIds(param.getDevIds());
@@ -761,20 +742,6 @@ public class SocketDevResponseService {
}
}
String userSource = param.getUserPageId() + handlerSourceStr;
SocketMsg<String> msg = new SocketMsg<>();
/* msg.setRequestId(SourceOperateCodeEnum.QUITE_SOURCE.getValue());
msg.setOperateCode(SourceOperateCodeEnum.CLOSE_GATHER.getValue());
Map<String, String> map = new HashMap<>(1);
map.put("sourceId", sourceIssues.get(0).getSourceId());
msg.setData(JSON.toJSONString(map));
SocketManager.sendMsg(userSource, MsgUtil.toJsonWithNewLinePlain(msg));*/
//同时关闭设备三个步骤
quitSend(param);
//向前端推送消息
SocketDataMsg temMsg = new SocketDataMsg();
temMsg.setCode(SourceResponseCodeEnum.DEV_COMM_ALL_SUCCESS.getCode());
@@ -782,6 +749,31 @@ public class SocketDevResponseService {
temMsg.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue());
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(temMsg));
if(param.getOperateType().equals(SourceOperateCodeEnum.PRE_TEST.getValue())){
System.out.println("预检测流程接受-----------------关闭源");
//同时关闭设备三个步骤
quitSend(param);
}else if(param.getOperateType().equals(SourceOperateCodeEnum.COEFFICIENT_TEST.getValue())){
WebSocketVO<Object> webSocketVO = new WebSocketVO<>();
webSocketVO.setRequestId(SourceOperateCodeEnum.Coefficient_Check.getValue());
webSocketVO.setOperateCode(SourceOperateCodeEnum.big_start.getValue());
webSocketVO.setData(XiNumberManager.devParameterList.get(0));
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(webSocketVO));
socketMsg.setRequestId(SourceOperateCodeEnum.Coefficient_Check.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue());
socketMsg.setData(JSON.toJSONString(XiNumberManager.xiSourceIssueList.get(0)));
SocketManager.sendMsg(param.getUserPageId() + handlerSourceStr, MsgUtil.toJsonWithNewLinePlain(socketMsg));
XiNumberManager.stepNumber = 0;
XiNumberManager.devXiList.clear();
XiNumberManager.devXiNumDataMap.clear();
XiNumberManager.smallDevXiNumDataMap.clear();
System.out.println("开始系数校准》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》");
}
}
break;
case UNPROCESSED_BUSINESS:
@@ -804,10 +796,10 @@ public class SocketDevResponseService {
case RE_OPERATE:
break;
default:
socketMsg.setRequestId(socketDataMsg.getRequestId());
socketMsg.setOperateCode(socketDataMsg.getOperateCode());
socketMsg.setData(dictDataEnumByCode.getMessage());
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketMsg));
WebSocketVO<String> webSocketVO = new WebSocketVO<>();
webSocketVO.setRequestId(SourceOperateCodeEnum.UNKNOWN_OPERATE.getValue());
webSocketVO.setData(SourceOperateCodeEnum.UNKNOWN_OPERATE.getMsg());
webSocketHandler.sendMsgToUser(param.getUserPageId(),JSON.toJSONString(webSocketVO));
break;
}
}
@@ -816,128 +808,114 @@ public class SocketDevResponseService {
/**
* 实时数据
* 正式检测
*/
public void realDeal(PreDetectionParam param, SocketDataMsg socketDataMsg) {
String data = socketDataMsg.getData();
DevData devData = JSON.parseObject(data, DevData.class);
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
SourceIssue sourceIssue = SocketManager.getSourceList().get(0);
if (Objects.nonNull(dtlsFlag)) {
if (!sourceIssue.getIndex().equals(dtlsFlag)) {
}
}
dtlsFlag = sourceIssue.getIndex();
switch (Objects.requireNonNull(dictDataEnumByCode)) {
case SUCCESS:
realDataXiList.add(devData);
successComm.add(socketDataMsg.getRequestId());
realDonging(devData, dictDataEnumByCode, sourceIssue, socketDataMsg, param);
if (successComm.size() == monitorIdListComm.size()) {
//TODO 理论上遇到返回code10200的数量与监测点数量一致则认为数据返回结束但是会存在缺失数据情况,例如有部分装置是没有暂降功能的
System.out.println(sourceIssue.getType() + "_" + sourceIssue.getIndex() + "当前测试小项读取数据已经全部结束。。。。。。。。。");
//开启线程进行入库原始数据操作
baseDataInsert(realDataXiList, sourceIssue, param, SocketManager.valueTypeMap);
}
Map<String, Integer> flag = detectionServiceImpl.text(realDataXiList, param.getErrorSysId(), devIdMapComm, sourceIssue, DictDataEnum.AT_WILL_VALUE);
System.out.println(flag);
public void realDonging(DevData devData, SourceResponseCodeEnum dictDataEnumByCode, SourceIssue sourceIssue, SocketDataMsg socketDataMsg, PreDetectionParam param) {
if (ObjectUtil.isNotNull(dictDataEnumByCode)) {
SocketMsg<String> socketMsg = new SocketMsg<>();
switch (dictDataEnumByCode) {
case SUCCESS:
//List<DevData.SqlDataDTO> sqlDataDTOList = devData.getSqlData();
realDataXiList.add(devData);
successComm.add(socketDataMsg.getRequestId());
long tem = SocketManager.getSourceTarget(sourceIssue.getType()) - 1;
SocketManager.addTargetMap(sourceIssue.getType(), tem);
System.out.println("该大项还有" + tem + "个小项没有进行检测!!!!!!!!");
if (successComm.size() == monitorIdListComm.size()) {
//TODO 理论上遇到返回code10200的数量与监测点数量一致则认为数据返回结束但是会存在缺失数据情况,例如有部分装置是没有暂降功能的
System.out.println(sourceIssue.getType() + "_" + sourceIssue.getIndex() + "当前测试小项读取数据已经全部结束。。。。。。。。。");
if (tem == 0) {
System.out.println(sourceIssue.getType() + sourceIssue.getIndex() + "当前测试大项已经全部结束》》》》》》》》");
//开启线程进行入库原始数据操作
baseDataInsert(realDataXiList, sourceIssue, param, SocketManager.valueTypeMap);
Map<String, Integer> flag = detectionServiceImpl.text(realDataXiList, param.getErrorSysId(), devIdMapComm, sourceIssue, DictDataEnum.AT_WILL_VALUE);
System.out.println(flag);
long tem = SocketManager.getSourceTarget(sourceIssue.getType()) - 1;
SocketManager.addTargetMap(sourceIssue.getType(), tem);
System.out.println("该大项还有" + tem + "个小项没有进行检测!!!!!!!!");
if (tem == 0) {
System.out.println(sourceIssue.getType() + sourceIssue.getIndex() + "当前测试大项已经全部结束》》》》》》》》");
//当val为0则认为大项中的小项已经全部跑完开始组装信息推送给前端
WebSocketVO<List<DevLineTestResult>> webSocketVO = new WebSocketVO<>();
webSocketVO.setRequestId(socketDataMsg.getRequestId().split("&&")[1] + "_End");
//组装实体推送给前台
List<DevLineTestResult> devListRes = new ArrayList<>();
devList.forEach(dev -> {
DevLineTestResult devLineTestResult = new DevLineTestResult();
devLineTestResult.setDeviceId(dev.getDevId());
devLineTestResult.setDeviceName(dev.getDevName());
List<Integer> resultFlagList = new ArrayList<>();
List<PreDetection.MonitorListDTO> monitorListDTOList = dev.getMonitorList();
for (PreDetection.MonitorListDTO point : monitorListDTOList) {
Integer resultFlag = flag.get(dev.getDevIP() + "_" + point.getLine());
resultFlagList.add(resultFlag);
}
devLineTestResult.setChnResult(resultFlagList.toArray(new Integer[monitorListDTOList.size()]));
devListRes.add(devLineTestResult);
});
webSocketVO.setData(devListRes);
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(webSocketVO));
}
System.out.println("当前小项结束进行删除============" + sourceIssue.getType() + "_" + sourceIssue.getIndex());
//当小项结束后需要删除集合中的小项
SocketManager.delSource(sourceIssue.getIndex());
//开始进行下一项检测
List<SourceIssue> sourceIssueList = SocketManager.getSourceList();
if (CollUtil.isNotEmpty(sourceIssueList)) {
SocketMsg<String> xuMsg = new SocketMsg<>();
xuMsg.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue());
//正式检测
SourceIssue sourceIssues = SocketManager.getSourceList().get(0);
xuMsg.setData(JSON.toJSONString(sourceIssues));
xuMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue() + "&&" + sourceIssues.getType());
SocketManager.sendMsg(param.getUserPageId() + handlerSourceStr, MsgUtil.toJsonWithNewLinePlain(xuMsg));
} else {
//TODO 是否最终检测完成需要推送给用户
quitSend(param);
}
successComm.clear();
realDataXiList.clear();
//当val为0则认为大项中的小项已经全部跑完开始组装信息推送给前端
WebSocketVO<List<DevLineTestResult>> webSocketVO = new WebSocketVO<>();
webSocketVO.setRequestId(socketDataMsg.getRequestId().split("&&")[1] + "_End");
//组装实体推送给前台
List<DevLineTestResult> devListRes = new ArrayList<>();
devList.forEach(dev -> {
DevLineTestResult devLineTestResult = new DevLineTestResult();
devLineTestResult.setDeviceId(dev.getDevId());
devLineTestResult.setDeviceName(dev.getDevName());
List<Integer> resultFlagList = new ArrayList<>();
List<PreDetection.MonitorListDTO> monitorListDTOList = dev.getMonitorList();
for (PreDetection.MonitorListDTO point : monitorListDTOList) {
Integer resultFlag = flag.get(dev.getDevIP() + "_" + point.getLine());
resultFlagList.add(resultFlag);
}
devLineTestResult.setChnResult(resultFlagList.toArray(new Integer[monitorListDTOList.size()]));
devListRes.add(devLineTestResult);
});
webSocketVO.setData(devListRes);
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(webSocketVO));
}
break;
System.out.println("当前小项结束进行删除============" + sourceIssue.getType() + "_" + sourceIssue.getIndex());
case UNPROCESSED_BUSINESS:
break;
//当小项结束后需要删除集合中的小项
SocketManager.delSource(sourceIssue.getIndex());
//开始进行下一项检测
List<SourceIssue> sourceIssueList = SocketManager.getSourceList();
if (CollUtil.isNotEmpty(sourceIssueList)) {
SocketMsg<String> xuMsg = new SocketMsg<>();
xuMsg.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue());
case NORMAL_RESPONSE:
realDataXiList.add(devData);
//正式检测
SourceIssue sourceIssues = SocketManager.getSourceList().get(0);
xuMsg.setData(JSON.toJSONString(sourceIssues));
xuMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue() + "&&" + sourceIssues.getType());
SocketManager.sendMsg(param.getUserPageId() + handlerSourceStr, MsgUtil.toJsonWithNewLinePlain(xuMsg));
} else {
//TODO 是否最终检测完成需要推送给用户
quitSend(param);
}
break;
case DEV_ERROR:
successComm.clear();
realDataXiList.clear();
break;
case DEV_TARGET:
}
break;
break;
case RE_OPERATE:
break;
default:
socketMsg.setRequestId(socketDataMsg.getRequestId());
socketMsg.setOperateCode(socketDataMsg.getOperateCode());
socketMsg.setData(dictDataEnumByCode.getMessage());
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketMsg));
break;
}
case UNPROCESSED_BUSINESS:
break;
case NORMAL_RESPONSE:
realDataXiList.add(devData);
break;
case DEV_ERROR:
break;
case DEV_TARGET:
break;
case RE_OPERATE:
break;
case MESSAGE_PARSING_ERROR:
break;
default:
WebSocketVO<String> webSocketVO = new WebSocketVO<>();
webSocketVO.setRequestId(socketDataMsg.getRequestId());
webSocketVO.setOperateCode(socketDataMsg.getOperateCode());
webSocketVO.setData(dictDataEnumByCode.getMessage());
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(webSocketVO));
break;
}
}
/**
* 退出检测返回
*/
@@ -1137,7 +1115,6 @@ public class SocketDevResponseService {
//初始化有效数据数
Map<String, SysRegResVO> sysRegResMap = iSysRegResService.listRegRes();
SocketManager.temXiDevList = new ArrayList<>(devList);
//字典树
SocketManager.valueTypeMap.clear();
@@ -1171,7 +1148,7 @@ public class SocketDevResponseService {
issueParam.setIsPhaseSequence(SourceOperateCodeEnum.COEFFICIENT_TEST.getValue());
List<SourceIssue> sourceIssues = pqScriptDtlsService.listSourceIssue(issueParam);
for (int j = 0; j < sourceIssues.size(); j++) {
if (i == 0) {
if (j == 0) {
sourceIssues.get(j).getChannelList().forEach(it -> {
if (it.getChannelType().contains("U")) {
it.setFAmp(XiNumberManager.devParameterList.get(0).getDevVolt());
@@ -1190,6 +1167,8 @@ public class SocketDevResponseService {
}
}
XiNumberManager.xiSourceIssueList = sourceIssues;
System.out.println(XiNumberManager.xiSourceIssueList);
}
@@ -1222,7 +1201,6 @@ public class SocketDevResponseService {
adNonHarmonicResult.setAdType(checkDataMap.get(sqlDataDTO.getDesc()));
adNonHarmonicResult.setDataType("avg");
Double a = listDTO.getA();
Double b = listDTO.getB();
Double c = listDTO.getC();
@@ -1288,7 +1266,6 @@ public class SocketDevResponseService {
bField.set(adHarmonicResult, b.get(i - 2));
cField.setAccessible(true);
cField.set(adHarmonicResult, c.get(i - 2));
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}

View File

@@ -11,6 +11,7 @@ import com.njcn.gather.detection.pojo.vo.DevLineTestResult;
import com.njcn.gather.detection.pojo.vo.SocketDataMsg;
import com.njcn.gather.detection.pojo.vo.SocketMsg;
import com.njcn.gather.detection.pojo.vo.WebSocketVO;
import com.njcn.gather.detection.util.socket.CnSocketUtil;
import com.njcn.gather.detection.util.socket.MsgUtil;
import com.njcn.gather.detection.util.socket.SocketManager;
import com.njcn.gather.detection.util.socket.cilent.NettyClient;
@@ -77,7 +78,6 @@ public class SocketSourceResponseService {
break;
case QUITE_SOURCE:
quitDeal(socketDataMsg,param);
// System.out.println("关闭源回调:"+msg);
break;
}
@@ -109,7 +109,7 @@ public class SocketSourceResponseService {
phaseSequenceParam.setMoniterIdList(monitorIdList);
phaseSequenceParam.setDataType(Arrays.asList("real$VRMS","real$IRMS"));
phaseSequenceParam.setReadCount(10);
phaseSequenceParam.setIgnoreCount(2);
phaseSequenceParam.setIgnoreCount(7);
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
@@ -148,7 +148,7 @@ public class SocketSourceResponseService {
String s = param.getUserPageId() + DEV;
//开始设备通讯检测(发送设备初始化)
List<PreDetection> devList = iPqDevService.getDevInfo(param.getDevIds());
Map<String, List<PreDetection>> map = new HashMap(1);
Map<String, List<PreDetection>> map = new HashMap<>(1);
map.put("deviceList", devList);
String jsonString = JSON.toJSONString(map);
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_SBTXJY.getValue());
@@ -161,6 +161,9 @@ public class SocketSourceResponseService {
case UNPROCESSED_BUSINESS:
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
break;
case SOURCE_CONNECTION_ERROR:
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
break;
default:
socketMsg = new SocketMsg<>();
socketMsg.setRequestId(socketDataMsg.getRequestId());
@@ -181,7 +184,7 @@ public class SocketSourceResponseService {
private void phaseSequenceDev(PreDetectionParam param, SocketDataMsg socketDataMsg) {
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
if (ObjectUtil.isNotNull(dictDataEnumByCode)) {
SocketMsg<String> socketMsg = new SocketMsg();
SocketMsg<String> socketMsg = new SocketMsg<>();
switch (dictDataEnumByCode) {
case SUCCESS:
//向前端推送信息
@@ -206,6 +209,9 @@ public class SocketSourceResponseService {
case UNPROCESSED_BUSINESS:
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
break;
case MESSAGE_PARSING_ERROR:
CnSocketUtil.quitSendSource(param);
break;
default:
socketMsg.setRequestId(socketDataMsg.getRequestId());
socketMsg.setOperateCode(socketDataMsg.getOperateCode());
@@ -239,11 +245,15 @@ public class SocketSourceResponseService {
socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue()+"&&"+sourceIssue.getType());
int ignoreCount;
if(sourceIssue.getType().equals(DicDataEnum.HP.getCode())||sourceIssue.getType().equals(DicDataEnum.F.getCode())){
ignoreCount = 1;
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_01.getValue());
}else if(DicDataEnum.VOLTAGE.getCode().equals(sourceIssue.getType())){
ignoreCount = 1;
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_03.getValue());
}else {
ignoreCount = 7;
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
}
@@ -253,8 +263,10 @@ public class SocketSourceResponseService {
System.out.println("向装置下发的参数"+comm);
phaseSequenceParam.setMoniterIdList(moniterIdList);
phaseSequenceParam.setDataType(comm);
phaseSequenceParam.setReadCount(1);
phaseSequenceParam.setIgnoreCount(1);
phaseSequenceParam.setReadCount(2);
phaseSequenceParam.setIgnoreCount(ignoreCount);
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
@@ -292,9 +304,7 @@ public class SocketSourceResponseService {
*/
private void quitDeal(SocketDataMsg socketDataMsg, PreDetectionParam param) {
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
SourceOperateCodeEnum operateCodeEnum = SourceOperateCodeEnum.getDictDataEnumByCode(socketDataMsg.getOperateCode());
SocketMsg socketMsg = new SocketMsg();
switch (dictDataEnumByCode) {
switch (Objects.requireNonNull(dictDataEnumByCode)) {
case SUCCESS:
//通讯校验成功
SocketManager.removeUser(param.getUserPageId() + source);
@@ -303,9 +313,7 @@ public class SocketSourceResponseService {
break;
case MESSAGE_PARSING_ERROR:
break;
default:
WebSocketVO webSocketVO = new WebSocketVO();
break;
}

View File

@@ -17,15 +17,29 @@ import java.util.concurrent.ConcurrentHashMap;
*/
public class XiNumberManager {
/**
* 存储大电压,小电压源控制脚本
*/
public static List<SourceIssue> xiSourceIssueList = new ArrayList<>();
/**
* 存储校验系数的装置ip,校验完一个则删除一个
*/
public static List<String> devXiList = new ArrayList<>();
/**
* 存储所有测点的大电压系数
*/
public static Map<String, DevXiNumData> devXiNumDataMap = new ConcurrentHashMap<>();
/**
* 存储所有测点的小电压系数
*/
public static Map<String, DevXiNumData> smallDevXiNumDataMap = new ConcurrentHashMap<>();
//系数校验步数计数器 0.大电压 1.小电压 2.小电压 3.大电压
/**
* 系数校验步数计数器 0.大电压 1.小电压 2.小电压 3.大电压
*/
public static Integer stepNumber = 0;
@@ -33,7 +47,6 @@ public class XiNumberManager {
public static List<CoefficientVO.DevParameter> rateDevParameterList = new ArrayList<>();
}

View File

@@ -46,16 +46,17 @@ public enum SourceOperateCodeEnum {
YJC_SBTXJY("yjc_sbtxjy", "预检测_设备通讯检测"),
YJC_XYJY("yjc_xyjy", "预检测_协议校验"),
YJC_XUJY("YJC_xujy", "相序校验"),
FORMAL_REAL("formal_real","正式检测_获取实时数据"),
FORMAL_STATISTIC("formal_statistic","正式检测_获取统计数据"),
FORMAL_EVENT("formal_event","正式检测_获取暂态数据"),
Coefficient_Check("Coefficient_Check","系数校验"),
QUITE("quit","预监测_关闭设备通讯初始化"),
QUITE_SOURCE("close_source","预监测_关闭源通讯"),
UNKNOWN_OPERATE("unknown_operate","未知的操作返回,请联系管理员排查"),
SOCKET_TIMEOUT("socket_timeout","与源或者装置通讯等待超时"),
Coefficient_Check("Coefficient_Check","系数校验"),
/**

View File

@@ -35,7 +35,8 @@ public enum SourceResponseCodeEnum {
//自定义前端展示消息
SOCKET_ERROR(25000,"服务端连接失败"),
DEV_COMM_ALL_SUCCESS(25001,"校验成功")
DEV_COMM_ALL_SUCCESS(25001,"校验成功"),

View File

@@ -215,7 +215,7 @@ public class DetectionServiceImpl {
result.setAdType(pqErrSysDtls.get(0).getScriptType());
result.setDataType("avg");
if (map.containsKey(TYPE_T)) {
DetectionData t = rangeComparisonList(map.get(TYPE_T), pqErrSysDtls, fData, 1.0, dataRule);
DetectionData t = rangeComparisonList(map.get(TYPE_T), pqErrSysDtls, fData, fData, dataRule);
result.setTValue(JSON.toJSONString(t));
result.setResultFlag(t.getIsData());
} else {
@@ -281,9 +281,9 @@ public class DetectionServiceImpl {
harmonicResult.setSort(sourceIssue.getIndex());
harmonicResult.setAdType(pqErrSysDtls.get(0).getScriptType());
harmonicResult.setDataType("avg");
reflectHarmonic("a", integerBooleanA, harmonicResult);
reflectHarmonic("b", integerBooleanB, harmonicResult);
reflectHarmonic("c", integerBooleanC, harmonicResult);
reflectHarmonic("a", integerBooleanA, harmonicResult, num);
reflectHarmonic("b", integerBooleanB, harmonicResult, num);
reflectHarmonic("c", integerBooleanC, harmonicResult, num);
List<Integer> list = new ArrayList<>();
list.addAll(integerBooleanA.stream().map(DetectionData::getIsData).distinct().collect(Collectors.toList()));
list.addAll(integerBooleanB.stream().map(DetectionData::getIsData).distinct().collect(Collectors.toList()));
@@ -556,12 +556,12 @@ public class DetectionServiceImpl {
return map;
}
private void reflectHarmonic(String phase, List<DetectionData> integerBooleanA, AdHarmonicResult harmonicResult) {
private void reflectHarmonic(String phase, List<DetectionData> integerBooleanA, AdHarmonicResult harmonicResult, Integer num) {
Map<Double, DetectionData> dataMap = integerBooleanA.stream().collect(Collectors.toMap(DetectionData::getNum, Function.identity()));
dataMap.forEach((key, value) -> {
try {
// 设置 id 字段
Field idField = AdHarmonicResult.class.getDeclaredField(phase + "Value" + key.intValue());
// 设置 id 字段;
Field idField = AdHarmonicResult.class.getDeclaredField(phase + "Value" + (num == 1 ? (int) (key + 0.5) : key.intValue()));
idField.setAccessible(true);
if (ObjectUtil.isNull(value.getIsData())) {
idField.set(harmonicResult, value.getData());
@@ -633,7 +633,7 @@ public class DetectionServiceImpl {
}
});
devMap.forEach((harm, harmDataList) -> {
PqErrSysDtls errSysDtl = errSysDtlMap.get(num == 1 ? harm + 0.5 : harm);
PqErrSysDtls errSysDtl = errSysDtlMap.get(harm);
DetectionData data = new DetectionData();
data.setIsData(4);
data.setNum(harm);
@@ -665,7 +665,7 @@ public class DetectionServiceImpl {
*/
private void setDetection(DictDataEnum dataRule, List<Double> harmDataList, PqErrSysDtls errSysDtl, DetectionData data, Double v) {
List<Double> qualifiedList = harmDataList.stream()
.filter(x -> x>0 && NumberUtil.isIn(devSubtractChannelData(x, v, errSysDtl.getErrorValueType()),
.filter(x -> v == 0 ? x == v : NumberUtil.isIn(devSubtractChannelData(x, v, errSysDtl.getErrorValueType()),
BigDecimal.valueOf(-errSysDtl.getMaxErrorValue()),
BigDecimal.valueOf(errSysDtl.getMaxErrorValue()))).collect(Collectors.toList());
data.setRadius(-errSysDtl.getMaxErrorValue() + "~" + errSysDtl.getMaxErrorValue());
@@ -721,8 +721,8 @@ public class DetectionServiceImpl {
DevData.SqlDataHarmDTO harm = devData.getSqlDataHarm().stream().filter(x -> 49 == x.getNum()).collect(Collectors.toList()).stream().findFirst().get();
if (ObjectUtil.isNotNull(fund)) {
harmPut(TYPE_A, map, harmNum, harm, String.valueOf(fund.getList().getA()), num);
harmPut(TYPE_B, map, harmNum, harm, String.valueOf(fund.getList().getA()), num);
harmPut(TYPE_C, map, harmNum, harm, String.valueOf(fund.getList().getA()), num);
harmPut(TYPE_B, map, harmNum, harm, String.valueOf(fund.getList().getB()), num);
harmPut(TYPE_C, map, harmNum, harm, String.valueOf(fund.getList().getC()), num);
} else {
harmPut(TYPE_A, map, harmNum, harm, "1.0", num);
harmPut(TYPE_B, map, harmNum, harm, "1.0", num);
@@ -845,15 +845,18 @@ public class DetectionServiceImpl {
* @return
*/
public BigDecimal devSubtractChannelData(Double devData, Double channelData, Integer errorValueType) {
switch (errorValueType) {
case 2:
return BigDecimal.valueOf(devData - channelData)
.divide(BigDecimal.valueOf(devData), 4, RoundingMode.HALF_UP);
case 3:
return BigDecimal.valueOf(devData - channelData)
.divide(BigDecimal.valueOf(channelData), 4, RoundingMode.HALF_UP);
if (devData != 0) {
switch (errorValueType) {
case 2:
return BigDecimal.valueOf(devData - channelData)
.divide(BigDecimal.valueOf(devData), 4, RoundingMode.HALF_UP);
case 3:
return BigDecimal.valueOf(devData - channelData)
.divide(BigDecimal.valueOf(channelData), 4, RoundingMode.HALF_UP);
}
return BigDecimal.valueOf(devData - channelData);
}
return BigDecimal.valueOf(devData - channelData);
return BigDecimal.valueOf(devData);
}
public BigDecimal divide(Double devData, Double channelData) {
@@ -901,13 +904,13 @@ public class DetectionServiceImpl {
for (Double i : harmNum) {
if (integerListMap.containsKey(i)) {
if (type.equals("A")) {
integerListMap.get(num != 1 ? i : i + 0.5).add(multiply(harm.getList().getA().get((int) (i - num)), fund));
integerListMap.get(i).add(multiply(harm.getList().getA().get((int) (i - num)), fund));
}
if (type.equals("B")) {
integerListMap.get(num != 1 ? i : i + 0.5).add(multiply(harm.getList().getB().get((int) (i - num)), fund));
integerListMap.get(i).add(multiply(harm.getList().getB().get((int) (i - num)), fund));
}
if (type.equals("C")) {
integerListMap.get(num != 1 ? i : i + 0.5).add(multiply(harm.getList().getC().get((int) (i - num)), fund));
integerListMap.get(i).add(multiply(harm.getList().getC().get((int) (i - num)), fund));
}
}
}
@@ -924,7 +927,7 @@ public class DetectionServiceImpl {
if (type.equals("C")) {
integerList.add(multiply(harm.getList().getC().get((int) (i - num)), fund));
}
integerListMap.put(num != 1 ? i : i + 0.5, integerList);
integerListMap.put(i, integerList);
}
map.put(type, integerListMap);
}

View File

@@ -146,6 +146,7 @@ public class PreDetectionServiceImpl implements PreDetectionService {
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
AdPlanSource planSource = adPlanSourceService.getOne(new LambdaQueryWrapper<AdPlanSource>()
@@ -173,7 +174,7 @@ public class PreDetectionServiceImpl implements PreDetectionService {
}
private void sendYtxSocket(PreDetectionParam param) {
AdPlanSource planSource = adPlanSourceService.getOne(new LambdaQueryWrapper<AdPlanSource>()

View File

@@ -79,12 +79,16 @@ public class SocketManager {
*/
private static List<SourceIssue> sourceIssueList = new CopyOnWriteArrayList<>();
//用于存储pq_script_checkdata表里Value_Type与树字典表code
/**
* 用于存储pq_script_checkdata表里Value_Type与树字典表code
*/
public static Map<String, String> valueTypeMap = new HashMap<>();
public static List<PreDetection> temXiDevList = new ArrayList<>();
private static volatile Boolean paused = false;
/**
* 用于存储
*/
public static volatile Map<Integer,Long> clockMap = new ConcurrentHashMap<>();

View File

@@ -54,7 +54,7 @@ public class NettyClient {
//空闲状态的handler
// 添加LineBasedFrameDecoder来按行分割数据
.addLast(new LineBasedFrameDecoder(10240))
.addLast(new IdleStateHandler(10, 0, 0, TimeUnit.SECONDS))
.addLast(new IdleStateHandler(180, 0, 0, TimeUnit.SECONDS))
.addLast(new StringDecoder(CharsetUtil.UTF_8))
.addLast(new StringEncoder(CharsetUtil.UTF_8))
.addLast(handler);

View File

@@ -1,12 +1,23 @@
package com.njcn.gather.detection.util.socket.cilent;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON;
import com.njcn.gather.detection.handler.SocketDevResponseService;
import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum;
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
import com.njcn.gather.detection.pojo.vo.SocketMsg;
import com.njcn.gather.detection.pojo.vo.WebSocketVO;
import com.njcn.gather.detection.util.socket.CnSocketUtil;
import com.njcn.gather.detection.util.socket.MsgUtil;
import com.njcn.gather.detection.util.socket.SocketManager;
import com.njcn.gather.detection.util.socket.WebServiceManager;
import com.njcn.gather.device.script.pojo.po.SourceIssue;
import com.njcn.gather.system.pojo.enums.DicDataEnum;
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.handler.timeout.IdleState;
import io.netty.handler.timeout.IdleStateEvent;
import io.netty.handler.timeout.TimeoutException;
import lombok.RequiredArgsConstructor;
@@ -80,7 +91,32 @@ public class NettyDevClientHandler extends SimpleChannelInboundHandler<String> {
*/
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) {
System.out.println("进入超时。。。。。。");
if (evt instanceof IdleStateEvent) {
if (((IdleStateEvent) evt).state() == IdleState.READER_IDLE) {
if(CollUtil.isNotEmpty(SocketManager.getSourceList())) {
SourceIssue sourceIssue = SocketManager.getSourceList().get(0);
if (sourceIssue.getType().equals(DicDataEnum.F.getCode())) {
//闪变
//CnSocketUtil.quitSend(param);
} else if (sourceIssue.getType().equals(DicDataEnum.VOLTAGE.getCode()) || sourceIssue.getType().equals(DicDataEnum.HP.getCode())) {
CnSocketUtil.quitSend(param);
WebSocketVO<String> socketVO = new WebSocketVO<>();
socketVO.setRequestId(SourceOperateCodeEnum.SOCKET_TIMEOUT.getValue());
socketVO.setOperateCode(sourceIssue.getType());
socketVO.setData(SourceOperateCodeEnum.SOCKET_TIMEOUT.getMsg());
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketVO));
//统计数据项
}else {
//实时数据
CnSocketUtil.quitSend(param);
}
}
}
}
System.out.println("进入10S超时。。。。。。");
//当连接超过10S和发送消息后10S无响应时候关闭channel
}

View File

@@ -51,7 +51,7 @@ public class NettySourceClientHandler extends SimpleChannelInboundHandler<String
*/
@Override
protected void channelRead0(ChannelHandlerContext ctx, String msg) throws InterruptedException {
System.out.println("接收server端数据>>>>>>" + msg);
System.out.println("source接收server端数据>>>>>>" + msg);
try {
sourceResponseService.deal(webUser, msg);
} catch (Exception e) {