代码调整

This commit is contained in:
2025-01-03 16:31:53 +08:00
parent 97c6e7a1e1
commit 38ffc6926d
7 changed files with 78 additions and 50 deletions

View File

@@ -28,6 +28,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.springframework.stereotype.Service;
@@ -53,24 +56,24 @@ public class SocketDevResponseService {
private final String handlerStr = "_Dev";
private final String handlerSourceStr = "_Source";
// ISO 8601格式
private final DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;
private final Integer[] resCount = {0,20,5,1};
//private final List<String> dicDataList = Stream.of(DicDataEnum.FREQ.getCode(),DicDataEnum.V.getCode())
private final List<String> nonHarmonicList = Stream.of(DicDataEnum.FREQ.getCode(),DicDataEnum.V.getCode(),DicDataEnum.I.getCode(),DicDataEnum.IMBV.getCode(),DicDataEnum.IMBA.getCode()).collect(Collectors.toList());
private final List<String> harmonicList = Stream.of(DicDataEnum.HV.getCode(),DicDataEnum.HI.getCode(),DicDataEnum.HP.getCode(),DicDataEnum.HSV.getCode(),DicDataEnum.HSI.getCode()).collect(Collectors.toList());
private final WebSocketHandler webSocketHandler;
private final IPqDevService iPqDevService;
private final IPqScriptDtlsService scriptDtlsService;
private final IPqScriptDtlsService pqScriptDtlsService;
private final DetectionServiceImpl detectionServiceImpl;
private final DetectionDataDealService detectionDataDealService;
private final ISysRegResService iSysRegResService;
private final ExecutorService executorPool = Executors.newFixedThreadPool(5);
/**
* 存储的装置相序数据
*/
@@ -87,7 +90,6 @@ public class SocketDevResponseService {
*/
List<String> monitorIdListComm = new ArrayList<>();
private List<PreDetection> devList = new ArrayList<>();
/**
* 装置名称
@@ -102,15 +104,13 @@ public class SocketDevResponseService {
*/
List<String> successComm = new ArrayList<>();
/**
* 保存成功的协议
*/
List<String> successXieyi = new ArrayList<>();
List<String> successXieyi3 = new ArrayList<>();
List<AdNonHarmonicResult> adNonHarmonicResultList = new ArrayList<>();
// List<AdNonHarmonicResult> adNonHarmonicResultList = new ArrayList<>();
public void deal(PreDetectionParam param, String msg) throws Exception{
@@ -341,7 +341,7 @@ public class SocketDevResponseService {
DevData devData = JSON.parseObject(data, DevData.class);
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
if (ObjectUtil.isNotNull(dictDataEnumByCode)) {
SocketMsg socketMsg = new SocketMsg();
SocketMsg<String> socketMsg = new SocketMsg<>();
switch (dictDataEnumByCode) {
case SUCCESS:
//webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(MsgUtil.msgToWebData(socketDataMsg,devNameMapComm,1)));
@@ -442,15 +442,15 @@ public class SocketDevResponseService {
String data = socketDataMsg.getData();
DevData devData = JSON.parseObject(data, DevData.class);
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
SourceIssue sourceIssue = SocketManager.getSourceList().get(0);
test(devData, dictDataEnumByCode, sourceIssue, socketDataMsg, param);
realDonging(devData, dictDataEnumByCode, sourceIssue, socketDataMsg, param);
}
public void test(DevData devData, SourceResponseCodeEnum dictDataEnumByCode, SourceIssue sourceIssue, SocketDataMsg socketDataMsg, PreDetectionParam param) {
public void realDonging(DevData devData, SourceResponseCodeEnum dictDataEnumByCode, SourceIssue sourceIssue, SocketDataMsg socketDataMsg, PreDetectionParam param) {
if (ObjectUtil.isNotNull(dictDataEnumByCode)) {
SocketMsg<String> socketMsg = new SocketMsg<>();
switch (dictDataEnumByCode) {
@@ -461,6 +461,9 @@ public class SocketDevResponseService {
System.out.println("获取devData数量............." + devDataList.size());
if (successComm.size() == monitorIdListComm.size()) {
//TODO 理论上遇到返回code10200的数量与监测点数量一致则认为数据返回结束但是会存在缺失数据情况,例如有部分装置是没有暂降功能的
System.out.println(sourceIssue.getType() +"_"+ sourceIssue.getIndex() + "当前测试小项读取数据已经全部结束。。。。。。。。。");
//原始数据入库
@@ -501,6 +504,7 @@ public class SocketDevResponseService {
webSocketVO.setData(devListRes);
webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(webSocketVO));
}
System.out.println("当前小项结束进行删除============"+sourceIssue.getType()+"_"+sourceIssue.getIndex());
@@ -517,6 +521,9 @@ public class SocketDevResponseService {
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();
@@ -557,13 +564,13 @@ public class SocketDevResponseService {
private void quitDeal(SocketDataMsg socketDataMsg, PreDetectionParam param, String msg) {
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
SourceOperateCodeEnum operateCodeEnum = SourceOperateCodeEnum.getDictDataEnumByCode(socketDataMsg.getOperateCode());
SocketMsg socketMsg = new SocketMsg();
SocketMsg<String> socketMsg = new SocketMsg<>();
String s = param.getUserPageId() + handlerStr;
switch (dictDataEnumByCode) {
switch (Objects.requireNonNull(dictDataEnumByCode)) {
case SUCCESS:
//通讯校验成功
switch (operateCodeEnum) {
switch (Objects.requireNonNull(operateCodeEnum)) {
case QUIT_INIT_01:
//关闭所有
SocketManager.removeUser(s);
@@ -579,6 +586,8 @@ public class SocketDevResponseService {
socketMsg.setOperateCode("QUIT_FUNEND$02");
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
break;
default:
}
break;
case UNPROCESSED_BUSINESS:
@@ -733,7 +742,6 @@ public class SocketDevResponseService {
this.success = new ArrayList<>();
this.devDataMap = new HashMap<>();
this.adNonHarmonicResultList.clear();
this.devDataList.clear();
this.devList.clear();
@@ -745,6 +753,10 @@ public class SocketDevResponseService {
this.devNameMapComm = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevName));
this.devIdMapComm = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId));
//初始化有效数据数
Map<String, SysRegResVO> sysRegResMap = iSysRegResService.listRegRes();
}
@@ -756,7 +768,6 @@ public class SocketDevResponseService {
*/
private void baseDataInsert(List<DevData> devDataList,SourceIssue sourceIssue,PreDetectionParam param){
Runnable runnable = () -> {
DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME; // ISO 8601格式
List<AdNonHarmonicResult> adNonHarmonicResultList = new ArrayList<>();
List<AdHarmonicResult> adHarmonicResultList = new ArrayList<>();
@@ -764,17 +775,18 @@ public class SocketDevResponseService {
LocalDateTime localDateTime = timeFormat(data.getTime(),formatter);
if(Objects.nonNull(localDateTime)){
if(Stream.of("FREQ","V","IMBA","P","I","IMBV").collect(Collectors.toList()).contains(sourceIssue.getType())){
String[] splitArr = data.getId().split("_");
String temId = devDataMap.get(splitArr[0]).getId()+"_"+splitArr[1];
if(nonHarmonicList.contains(sourceIssue.getType())){
AdNonHarmonicResult adNonHarmonicResult = new AdNonHarmonicResult();
adNonHarmonicResult.setTimeId(localDateTime);
adNonHarmonicResult.setMonitorId(data.getId());
adNonHarmonicResult.setMonitorId(temId);
adNonHarmonicResult.setScriptId(param.getScriptId());
adNonHarmonicResult.setSort(sourceIssue.getIndex());
adNonHarmonicResult.setAdType(sourceIssue.getId());
adNonHarmonicResult.setDataType("avg");
DevData.SqlDataDTO.ListDTO tem = data.getSqlData().get(0).getList();
Double a = tem.getA();
Double b = tem.getB();
Double c = tem.getC();
@@ -793,27 +805,31 @@ public class SocketDevResponseService {
}
adNonHarmonicResultList.add(adNonHarmonicResult);
}else {
//DevData.SqlDataDTO.ListDTO vvv = data.getSqlData().get(0).getList();
AdHarmonicResult adHarmonicResult = new AdHarmonicResult();
adHarmonicResult.setTimeId(localDateTime);
adHarmonicResult.setMonitorId(data.getId());
adHarmonicResult.setMonitorId(temId);
adHarmonicResult.setScriptId(param.getScriptId());
adHarmonicResult.setSort(sourceIssue.getIndex());
adHarmonicResult.setAdType(sourceIssue.getId());
adHarmonicResult.setDataType("avg");
/* Double aV = vvv.getA();
Double bV = vvv.getB();
Double cV = vvv.getC();
if(Objects.nonNull(aV)){
adHarmonicResult.setAValue1(aV.toString());
if(DicDataEnum.HI.getCode().equals(sourceIssue.getType())||DicDataEnum.HSI.getCode().equals(sourceIssue.getType())){
DevData.SqlDataDTO.ListDTO vvv = data.getSqlData().get(0).getList();
Double aV = vvv.getA();
Double bV = vvv.getB();
Double cV = vvv.getC();
if (Objects.nonNull(aV)) {
adHarmonicResult.setAValue1(String.format("%.7f", aV));
}
if (Objects.nonNull(bV)) {
adHarmonicResult.setBValue1(String.format("%.7f", bV));
}
if (Objects.nonNull(cV)) {
adHarmonicResult.setCValue1(String.format("%.7f", cV));
}
}
if(Objects.nonNull(bV)){
adHarmonicResult.setBValue1(bV.toString());
}
if(Objects.nonNull(cV)){
adHarmonicResult.setCValue1(cV.toString());
}*/
DevData.SqlDataHarmDTO.ListDTO tem = data.getSqlDataHarm().get(0).getList();
List<String> a = tem.getA();
List<String> b = tem.getB();
@@ -841,7 +857,6 @@ public class SocketDevResponseService {
}
adHarmonicResultList.add(adHarmonicResult);
}
}
}

View File

@@ -205,8 +205,8 @@ public class SocketSourceResponseService {
System.out.println("向装置下发的参数"+comm);
phaseSequenceParam.setMoniterIdList(moniterIdList);
phaseSequenceParam.setDataType(comm);
phaseSequenceParam.setReadCount(2);
phaseSequenceParam.setIgnoreCount(10);
phaseSequenceParam.setReadCount(1);
phaseSequenceParam.setIgnoreCount(1);
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));

View File

@@ -22,6 +22,16 @@ public class PreDetectionParam {
*/
private String planId;
/**
* 检测计划code
*/
private String planCode;
/**
* 数字、模拟、比对
*/
private String pattern;
/**
* 用户功能组成唯一标识 zhangsan_test
*/

View File

@@ -236,7 +236,7 @@ public class DetectionServiceImpl {
DetectionData c = rangeComparisonList(map.get(TYPE_C), pqErrSysDtls, fData, channelTypeCList.get(0).getFAmp(), dataRule);
result.setCValue(c.getData() + "_" + c.getIsData()+"_"+c.getResultData());
List<Integer> numbers = Arrays.asList(a.getIsData(), b.getIsData(), a.getIsData()).stream().distinct().collect(Collectors.toList());
List<Integer> numbers = Arrays.asList(a.getIsData(), b.getIsData(), c.getIsData()).stream().distinct().collect(Collectors.toList());
return getAdNonHarmonicResult(result, numbers);
}
return result;
@@ -280,8 +280,8 @@ public class DetectionServiceImpl {
harmonicResult.setAdType(pqErrSysDtls.get(0).getScriptType());
harmonicResult.setDataType("avg");
reflectHarmonic("a", integerBooleanA, harmonicResult);
reflectHarmonic("b", integerBooleanA, harmonicResult);
reflectHarmonic("c", integerBooleanA, harmonicResult);
reflectHarmonic("b", integerBooleanB, harmonicResult);
reflectHarmonic("c", integerBooleanC, harmonicResult);
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()));
@@ -346,9 +346,9 @@ public class DetectionServiceImpl {
.filter(x -> TYPE_C.equals(x.getPhase()))
.collect(Collectors.toList());
DetectionData c = rangeComparisonList(map.get(TYPE_C), pqErrSysDtls, fData, channelTypeCList.get(0).getValue(), dataRule);
result.setCValue(c.getData() + "_" + c.getIsData()+"_"+b.getResultData());
result.setCValue(c.getData() + "_" + c.getIsData()+"_"+c.getResultData());
List<Integer> numbers = Arrays.asList(a.getIsData(), b.getIsData(), a.getIsData());
List<Integer> numbers = Arrays.asList(a.getIsData(), b.getIsData(), c.getIsData());
return getAdNonHarmonicResult(result, numbers);
}else{
List<PqScriptCheckData> channelTypeBList = checkData.stream()
@@ -467,7 +467,7 @@ public class DetectionServiceImpl {
DetectionData c = rangeComparisonList(mag.get(TYPE_C), magErrList, fData, retainCTime, dataRule);
result.setCValue(c.getData() + "_" + c.getIsData()+"_"+c.getResultData());
List<Integer> numbers = Arrays.asList(a.getIsData(), b.getIsData(), a.getIsData()).stream().distinct().collect(Collectors.toList());
List<Integer> numbers = Arrays.asList(a.getIsData(), b.getIsData(), c.getIsData()).stream().distinct().collect(Collectors.toList());
return getAdNonHarmonicResult(result, numbers);
}
@@ -525,7 +525,7 @@ public class DetectionServiceImpl {
.sorted(Comparator.comparing(Double::doubleValue).reversed())
.collect(Collectors.toList());
b = list.stream()
.filter(x -> ObjectUtil.isNotNull(x.getA()))
.filter(x -> ObjectUtil.isNotNull(x.getB()))
.map(DevData.SqlDataDTO.ListDTO::getB)
.sorted(Comparator.comparing(Double::doubleValue).reversed())
.collect(Collectors.toList());

View File

@@ -75,6 +75,8 @@ public class SocketManager {
*/
private static List<SourceIssue> sourceIssueList = new CopyOnWriteArrayList<>();
private static volatile Boolean paused = false;
public static void addSourceList(List<SourceIssue> sList) {

View File

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

View File

@@ -12,15 +12,16 @@ public enum DicDataEnum {
FREQ("FREQ","频率"),
V("V","电压"),
I("I","电流"),
IMBV("IMBV","三相电压不平衡度"),
IMBA("IMBA","三相电流不平衡度"),
HV("HV","谐波电压"),
HI("HI","谐波电流"),
HP("HP","谐波有功功率"),
HSV("HSV","间谐波电压"),
HSI("V","间谐波电流"),
VOLTAGE("VOLTAGE","暂态"),
I("I","电流"),
IMBV("IMBV","三相电压不平衡度"),
IMBA("IMBA","三相电流不平衡度"),
F("F","闪变"),