动态决定是否进行相角差校验、角型接线是否使用相别的指标进行正式检测、数模脚本与映射校验时动态补充相角的测试项

This commit is contained in:
caozehui
2025-08-26 18:49:35 +08:00
parent d0f6cc46ad
commit 6ae9037a47
22 changed files with 434 additions and 259 deletions

View File

@@ -130,10 +130,6 @@ public class SocketContrastResponseService {
@Value("${log.homeDir}") @Value("${log.homeDir}")
private String alignDataFilePath; private String alignDataFilePath;
@Value("${phaseAngle.isEnable}")
private Boolean isPhaseAngle;
private static final Map<String, List<String>> testItemCodeMap = new HashMap() {{ private static final Map<String, List<String>> testItemCodeMap = new HashMap() {{
put("FREQ", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.FREQ.getCode())); put("FREQ", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.FREQ.getCode()));
put("V", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(), DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode())); put("V", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(), DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode()));
@@ -275,7 +271,8 @@ public class SocketContrastResponseService {
FormalTestManager.devIdMapComm.putAll(FormalTestManager.standardDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId))); FormalTestManager.devIdMapComm.putAll(FormalTestManager.standardDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId)));
Map<String, Integer> numMap = getContrastTestNum(param.getPairs().keySet().stream().collect(Collectors.toList())); Map<String, Integer> numMap = getContrastTestNum(param.getPairs().keySet().stream().collect(Collectors.toList()));
param.setNumMap(numMap); FormalTestManager.numMap.clear();
FormalTestManager.numMap.putAll(numMap);
SysTestConfig oneConfig = sysTestConfigService.getOneConfig(); SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
if (param.getTestItemList().get(2)) { if (param.getTestItemList().get(2)) {
numMap.forEach((devMonitorId, num) -> { numMap.forEach((devMonitorId, num) -> {
@@ -463,8 +460,8 @@ public class SocketContrastResponseService {
if (successComm.size() == FormalTestManager.monitorMap.size()) { if (successComm.size() == FormalTestManager.monitorMap.size()) {
boolean modelCheckResult = this.modelCheck(param, FormalTestManager.devDataMap, FormalTestManager.monitorMap.get(monitorId1)); boolean modelCheckResult = this.modelCheck(param, FormalTestManager.devDataMap, FormalTestManager.monitorMap.get(monitorId1), true);
modelCheckResult = this.modelCheck(param, FormalTestManager.standardDevDataMap, FormalTestManager.monitorMap.get(monitorId1)) && modelCheckResult; modelCheckResult = this.modelCheck(param, FormalTestManager.standardDevDataMap, FormalTestManager.monitorMap.get(monitorId1), false) && modelCheckResult;
if (!modelCheckResult) { if (!modelCheckResult) {
this.clearData(); this.clearData();
@@ -606,8 +603,17 @@ public class SocketContrastResponseService {
// 进行单个监测点的对齐校验 // 进行单个监测点的对齐校验
if (!successPair.containsKey(devMonitorId)) { if (!successPair.containsKey(devMonitorId)) {
if (this.singleMonitorAlignCheck(FormalTestManager.devDataMap.get(devMonitorId), FormalTestManager.standardDevDataMap.get(standardDevMonitorId))) { if (FormalTestManager.devDataMap.get(devMonitorId).size() >= 5 && FormalTestManager.standardDevDataMap.get(standardDevMonitorId).size() >= 5) {
List<List<DevData>> singleMonitorAlignData = this.getSingleMonitorAlignData(FormalTestManager.devDataMap.get(devMonitorId), FormalTestManager.standardDevDataMap.get(standardDevMonitorId), 5);
// if (this.singleMonitorAlignCheck(FormalTestManager.devDataMap.get(devMonitorId), FormalTestManager.standardDevDataMap.get(standardDevMonitorId))) {
if (singleMonitorAlignData.get(0).size() >= 5 && singleMonitorAlignData.get(1).size() >= 5) {
successPair.put(devMonitorId, standardDevMonitorId); successPair.put(devMonitorId, standardDevMonitorId);
FormalTestManager.devDataMap.get(devMonitorId).clear();
FormalTestManager.devDataMap.get(devMonitorId).addAll(singleMonitorAlignData.get(0));
FormalTestManager.standardDevDataMap.get(standardDevMonitorId).clear();
FormalTestManager.standardDevDataMap.get(standardDevMonitorId).addAll(singleMonitorAlignData.get(1));
//向前端推送实时数据对齐成功的配对 //向前端推送实时数据对齐成功的配对
SocketDataMsg webSend = new SocketDataMsg(); SocketDataMsg webSend = new SocketDataMsg();
@@ -663,6 +669,7 @@ public class SocketContrastResponseService {
} }
} }
} }
}
break; break;
case UNPROCESSED_BUSINESS: case UNPROCESSED_BUSINESS:
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg)); WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg));
@@ -909,14 +916,14 @@ public class SocketContrastResponseService {
adPair.setPlanId(FormalTestManager.currentTestPlan.getId()); adPair.setPlanId(FormalTestManager.currentTestPlan.getId());
adPair.setDevMonitorId(key); adPair.setDevMonitorId(key);
adPair.setStdDevMonitorId(FormalTestManager.pairsIdMap.get(key)); adPair.setStdDevMonitorId(FormalTestManager.pairsIdMap.get(key));
adPair.setNum(param.getNumMap().get(key)); adPair.setNum(FormalTestManager.numMap.get(key));
adPairList.add(adPair); adPairList.add(adPair);
} }
adPairService.saveBatch(adPairList); adPairService.saveBatch(adPairList);
// 原始数据入库 // 原始数据入库
baseDataInsert(false, singleMonitorAlignData.get(0), param.getNumMap(), code); baseDataInsert(false, FormalTestManager.devDataMap.values().stream().flatMap(List::stream).collect(Collectors.toList()), FormalTestManager.numMap, code);
baseDataInsert(true, singleMonitorAlignData.get(1), param.getNumMap(), code); baseDataInsert(true, FormalTestManager.standardDevDataMap.values().stream().flatMap(List::stream).collect(Collectors.toList()), FormalTestManager.numMap, code);
// 进行误差计算 // 进行误差计算
List<DevLineTestResult> allResultList = detectionService.processing( List<DevLineTestResult> allResultList = detectionService.processing(
@@ -925,7 +932,7 @@ public class SocketContrastResponseService {
FormalTestManager.pairsIpMap, FormalTestManager.pairsIpMap,
FormalTestManager.devIdMapComm, FormalTestManager.devIdMapComm,
FormalTestManager.testItemMap.keySet().stream().collect(Collectors.toList()), FormalTestManager.testItemMap.keySet().stream().collect(Collectors.toList()),
errorSysId, FormalTestManager.dataRule, param.getNumMap(), code); errorSysId, FormalTestManager.dataRule, FormalTestManager.numMap, code);
this.clearData(); this.clearData();
@@ -1245,10 +1252,11 @@ public class SocketContrastResponseService {
/** /**
* 模型一致性校验 * 模型一致性校验
* *
* @param param * @param param 预检测参数
* @param dataMap * @param dataMap 收到的数据
* @param isDev 是否是被检设备
*/ */
private boolean modelCheck(PreDetectionParam param, Map<String, List<DevData>> dataMap, PreDetection.MonitorListDTO monitorListDTO) { private boolean modelCheck(PreDetectionParam param, Map<String, List<DevData>> dataMap, PreDetection.MonitorListDTO monitorListDTO, boolean isDev) {
AtomicBoolean flag = new AtomicBoolean(true); AtomicBoolean flag = new AtomicBoolean(true);
dataMap.forEach((k, v) -> { dataMap.forEach((k, v) -> {
v.stream().forEach(devData1 -> { v.stream().forEach(devData1 -> {
@@ -1274,25 +1282,42 @@ public class SocketContrastResponseService {
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.SV_1_49.getCode()); allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.SV_1_49.getCode());
// 如果是在是没有线电压谐波含有率、线电压间谐波含有率,勉强使其通过 // 如果是在是没有线电压谐波含有率、线电压间谐波含有率,勉强使其通过
if (!descList.contains(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PV2_50.getCode())) { String ip = k.split(CnSocketUtil.SPLIT_TAG)[0];
PreDetection preDetection = null;
if (isDev) {
preDetection = FormalTestManager.devList.stream().filter(obj -> obj.getDevIP().equals(ip)).findFirst().orElse(null);
} else {
preDetection = FormalTestManager.standardDevList.stream().filter(obj -> obj.getDevIP().equals(ip)).findFirst().orElse(null);
}
if (ObjectUtil.isNotNull(preDetection)) {
if (preDetection.getUsePhaseIndex() == 1) {
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode());
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1.getCode()); allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1.getCode());
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PV2_50.getCode()); allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PV2_50.getCode());
}
if (!descList.contains(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PSV_1_49.getCode())) {
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1.getCode());
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PSV_1_49.getCode()); allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PSV_1_49.getCode());
} }
} }
}
if (CollUtil.isNotEmpty(descList) && descList.containsAll(allTestItem)) { if (CollUtil.isNotEmpty(descList) && descList.containsAll(allTestItem)) {
// 成功信息 // 成功信息
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode()); webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 1));
} else { } else {
// 错误信息 // 错误信息
allTestItem.removeAll(descList);
String appendMsg = allTestItem.stream().map(obj -> {
String s = obj.split(DetectionCodeEnum.REAL_PREFIX.getCode())[1];
DetectionCodeEnum anEnum = DetectionCodeEnum.getDetectionCodeByCode(s);
return anEnum.getMessage();
}).reduce((a, b) -> a + "" + b).get();
appendMsg += "测试项未通过!";
webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); webSend.setCode(SourceResponseCodeEnum.FAIL.getCode());
webSend.setData(MsgUtil.getMsg(k, FormalTestManager.devNameMapComm, appendMsg));
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
flag.set(false); flag.set(false);
} }
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 1));
}); });
}); });
@@ -1509,6 +1534,12 @@ public class SocketContrastResponseService {
WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend)); WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend));
} }
boolean isPhaseAngle = false;
PreDetection preDetection = FormalTestManager.devList.stream().filter(dev -> dev.getDevId().equals(devMonitorId.split(CnSocketUtil.SPLIT_TAG)[0])).findFirst().orElse(null);
if (ObjectUtil.isNotNull(preDetection)) {
isPhaseAngle = preDetection.getAngle() == 1 ? true : false;
}
// 动态调控是否支持相角差校验 // 动态调控是否支持相角差校验
if (isPhaseAngle) { if (isPhaseAngle) {
// 获取被检设备的额定电流 // 获取被检设备的额定电流
@@ -1681,9 +1712,26 @@ public class SocketContrastResponseService {
if (Objects.nonNull(localDateTime)) { if (Objects.nonNull(localDateTime)) {
String[] splitArr = data.getId().split(CnSocketUtil.SPLIT_TAG); String[] splitArr = data.getId().split(CnSocketUtil.SPLIT_TAG);
String temId = FormalTestManager.devIdMapComm.get(splitArr[0]) + CnSocketUtil.SPLIT_TAG + splitArr[1]; String devId = FormalTestManager.devIdMapComm.get(splitArr[0]);
String temId = devId + CnSocketUtil.SPLIT_TAG + splitArr[1];
List<PreDetection> devInfo = null;
if (isStdDev) {
devInfo = pqStandardDevService.listStandardDevPreDetection(Collections.singletonList(devId));
} else {
devInfo = pqDevService.getDevInfo(Collections.singletonList(devId));
}
for (DevData.SqlDataDTO sqlDataDTO : data.getSqlData()) { for (DevData.SqlDataDTO sqlDataDTO : data.getSqlData()) {
if (devInfo.get(0).getUsePhaseIndex().equals(1)) {
if (DetectionCodeEnum.PVRMS.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.PV2_50.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.PSV_1_49.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.PU1.getCode().equals(sqlDataDTO.getDesc())) {
continue;
}
} else {
if (DetectionCodeEnum.VRMS.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.V2_50.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.SV_1_49.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.U1.getCode().equals(sqlDataDTO.getDesc())) {
continue;
}
}
if (!DetectionCodeEnum.U1.getCode().equals(sqlDataDTO.getDesc()) && !DetectionCodeEnum.PU1.getCode().equals(sqlDataDTO.getDesc()) && !DetectionCodeEnum.I1.getCode().equals(sqlDataDTO.getDesc())) { if (!DetectionCodeEnum.U1.getCode().equals(sqlDataDTO.getDesc()) && !DetectionCodeEnum.PU1.getCode().equals(sqlDataDTO.getDesc()) && !DetectionCodeEnum.I1.getCode().equals(sqlDataDTO.getDesc())) {
DevData.SqlDataDTO.ListDTO listDTO = sqlDataDTO.getList(); DevData.SqlDataDTO.ListDTO listDTO = sqlDataDTO.getList();
ContrastNonHarmonicResult adNonHarmonicResult = new ContrastNonHarmonicResult(); ContrastNonHarmonicResult adNonHarmonicResult = new ContrastNonHarmonicResult();

View File

@@ -37,14 +37,11 @@ import com.njcn.gather.storage.pojo.po.SimAndDigHarmonicResult;
import com.njcn.gather.storage.pojo.po.SimAndDigNonHarmonicResult; import com.njcn.gather.storage.pojo.po.SimAndDigNonHarmonicResult;
import com.njcn.gather.storage.service.DetectionDataDealService; import com.njcn.gather.storage.service.DetectionDataDealService;
import com.njcn.gather.storage.service.SimAndDigHarmonicService; import com.njcn.gather.storage.service.SimAndDigHarmonicService;
import com.njcn.gather.system.cfg.service.ISysTestConfigService;
import com.njcn.gather.system.dictionary.pojo.enums.DictDataEnum; import com.njcn.gather.system.dictionary.pojo.enums.DictDataEnum;
import com.njcn.gather.system.dictionary.pojo.po.DictData; import com.njcn.gather.system.dictionary.pojo.po.DictData;
import com.njcn.gather.system.dictionary.service.IDictDataService; import com.njcn.gather.system.dictionary.service.IDictDataService;
import com.njcn.gather.system.pojo.enums.DicDataEnum; import com.njcn.gather.system.pojo.enums.DicDataEnum;
import com.njcn.gather.system.reg.service.ISysRegResService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.lang.reflect.Field; import java.lang.reflect.Field;
@@ -62,13 +59,11 @@ import java.util.stream.Stream;
@RequiredArgsConstructor @RequiredArgsConstructor
public class SocketDevResponseService { public class SocketDevResponseService {
private List<String> dataTypeList; private Set<String> dataTypeList;
private List<String> icdTypeList; private List<String> icdTypeList;
private final List<String> nonHarmonicList = Stream.of(DicDataEnum.FREQ.getCode(), DicDataEnum.V.getCode(), DicDataEnum.I.getCode(), DicDataEnum.IMBV.getCode(), DicDataEnum.IMBA.getCode(), DicDataEnum.VOLTAGE.getCode(), DicDataEnum.F.getCode()).collect(Collectors.toList()); private final List<String> nonHarmonicList = Stream.of(DicDataEnum.FREQ.getCode(), DicDataEnum.V.getCode(), DicDataEnum.I.getCode(), DicDataEnum.IMBV.getCode(), DicDataEnum.IMBA.getCode(), DicDataEnum.VOLTAGE.getCode(), DicDataEnum.F.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 IPqDevService iPqDevService; private final IPqDevService iPqDevService;
private final IPqDevSubService iPqDevSubService; private final IPqDevSubService iPqDevSubService;
@@ -76,24 +71,16 @@ public class SocketDevResponseService {
private final IPqScriptDtlsService pqScriptDtlsService; private final IPqScriptDtlsService pqScriptDtlsService;
private final DetectionServiceImpl detectionServiceImpl; private final DetectionServiceImpl detectionServiceImpl;
private final DetectionDataDealService detectionDataDealService; private final DetectionDataDealService detectionDataDealService;
private final ISysRegResService iSysRegResService;
private final IPqScriptCheckDataService iPqScriptCheckDataService; private final IPqScriptCheckDataService iPqScriptCheckDataService;
private final ISysTestConfigService sysTestConfigService;
private final SimAndDigHarmonicService adHarmonicService; private final SimAndDigHarmonicService adHarmonicService;
private final IAdPlanService adPlanService; private final IAdPlanService adPlanService;
private final IPqScriptCheckDataService pqScriptCheckDataService;
private final IDictDataService dictDataService; private final IDictDataService dictDataService;
@Value("${phaseAngle.isEnable}")
private Boolean isPhaseAngle;
/** /**
* 存储的装置相序数据 * 存储的装置相序数据
*/ */
List<DevData> devInfo = new ArrayList<>(); List<DevData> devInfo = new ArrayList<>();
//Map<String, DevData> devDataMap = new HashMap<>();
/** /**
* 成功结束的测点 * 成功结束的测点
*/ */
@@ -825,12 +812,24 @@ public class SocketDevResponseService {
icdCheckDataMap.clear(); icdCheckDataMap.clear();
dataTypeList = pqScriptDtlsService.getScriptToIcdCheckInfo(param); dataTypeList = pqScriptDtlsService.getScriptToIcdCheckInfo(param);
icdTypeList = FormalTestManager.devList.stream().map(PreDetection::getIcdType).distinct().collect(Collectors.toList()); icdTypeList = FormalTestManager.devList.stream().map(PreDetection::getIcdType).collect(Collectors.toList());
PreDetection preDetection = FormalTestManager.devList.stream().filter(obj -> obj.getIcdType().equals(icdTypeList.get(0))).findFirst().orElse(null);
boolean angleCheck = false;
if (ObjectUtil.isNotNull(preDetection)) {
angleCheck = preDetection.getAngle() == 1 ? true : false;
}
if (angleCheck) {
dataTypeList.add(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode());
dataTypeList.add(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode());
} else {
dataTypeList.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode());
dataTypeList.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode());
}
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue()); socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.VERIFY_MAPPING$01.getValue()); socketMsg.setOperateCode(SourceOperateCodeEnum.VERIFY_MAPPING$01.getValue());
Map<String, Object> map = new HashMap<>(2); Map<String, Object> map = new HashMap<>(2);
map.put("dataType", dataTypeList); map.put("dataType", new ArrayList<>(dataTypeList));
map.put("icdType", icdTypeList.get(0)); map.put("icdType", icdTypeList.get(0));
socketMsg.setData(JSON.toJSONString(map)); socketMsg.setData(JSON.toJSONString(map));
System.out.println("开始脚本与icd校验:++++++++++"); System.out.println("开始脚本与icd校验:++++++++++");
@@ -841,6 +840,16 @@ public class SocketDevResponseService {
String data = socketDataMsg.getData(); String data = socketDataMsg.getData();
IcdCheckData icdCheckData = JSON.parseObject(data, IcdCheckData.class); IcdCheckData icdCheckData = JSON.parseObject(data, IcdCheckData.class);
boolean isContinue = true; boolean isContinue = true;
List<String> descList = icdCheckData.getResultData().stream().map(
obj -> {
if(DetectionCodeEnum.MAG.getCode().equals(obj.getDesc()) || DetectionCodeEnum.DUR.getCode().equals(obj.getDesc())){
return DetectionCodeEnum.AVG_PREFIX.getCode() + obj.getDesc();
}else{
return DetectionCodeEnum.REAL_PREFIX.getCode() + obj.getDesc();
}
}
).collect(Collectors.toList());
if (descList.containsAll(dataTypeList)) {
for (int i = 0; i < icdCheckData.getResultData().size(); i++) { for (int i = 0; i < icdCheckData.getResultData().size(); i++) {
IcdCheckData.ResultData item = icdCheckData.getResultData().get(i); IcdCheckData.ResultData item = icdCheckData.getResultData().get(i);
Integer errorType = getErrorType(item.getDesc(), item.getPhaseResult()); Integer errorType = getErrorType(item.getDesc(), item.getPhaseResult());
@@ -857,12 +866,14 @@ public class SocketDevResponseService {
webSocketVO.setOperateCode(SourceOperateCodeEnum.VERIFY_MAPPING$01.getValue()); webSocketVO.setOperateCode(SourceOperateCodeEnum.VERIFY_MAPPING$01.getValue());
webSocketVO.setCode(SourceResponseCodeEnum.FAIL.getCode()); webSocketVO.setCode(SourceResponseCodeEnum.FAIL.getCode());
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSocketVO)); WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSocketVO));
CnSocketUtil.quitSend(param); } else {
break; icdCheckDataMap.put(icdCheckData.getIcdType(), icdCheckData);
} }
} }
} else {
isContinue = false;
}
icdCheckDataMap.put(icdCheckData.getIcdType(), icdCheckData);
if (isContinue) { if (isContinue) {
//System.out.println("icdCheckDataMap.size()="+icdCheckDataMap.size()+",icdTypeList.size()="+icdTypeList.size()); //System.out.println("icdCheckDataMap.size()="+icdCheckDataMap.size()+",icdTypeList.size()="+icdTypeList.size());
if (icdCheckDataMap.size() == icdTypeList.size()) { if (icdCheckDataMap.size() == icdTypeList.size()) {
@@ -940,8 +951,21 @@ public class SocketDevResponseService {
// 发送下一个脚本与icd校验 // 发送下一个脚本与icd校验
String icdType = icdTypeList.stream().filter(it -> !icdCheckDataMap.containsKey(it)).findFirst().orElse(null); String icdType = icdTypeList.stream().filter(it -> !icdCheckDataMap.containsKey(it)).findFirst().orElse(null);
if (ObjectUtil.isNotNull(icdType)) { if (ObjectUtil.isNotNull(icdType)) {
PreDetection preDetection = FormalTestManager.devList.stream().filter(obj -> obj.getIcdType().equals(icdType)).findFirst().orElse(null);
boolean angleCheck = false;
if (ObjectUtil.isNotNull(preDetection)) {
angleCheck = preDetection.getAngle() == 1 ? true : false;
}
if (angleCheck) {
dataTypeList.add(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode());
dataTypeList.add(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode());
} else {
dataTypeList.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode());
dataTypeList.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode());
}
Map<String, Object> map = new HashMap<>(2); Map<String, Object> map = new HashMap<>(2);
map.put("dataType", dataTypeList); map.put("dataType", new ArrayList<>(dataTypeList));
map.put("icdType", icdType); map.put("icdType", icdType);
socketMsg.setData(JSON.toJSONString(map)); socketMsg.setData(JSON.toJSONString(map));
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue()); socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
@@ -950,6 +974,23 @@ public class SocketDevResponseService {
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg)); SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
} }
} }
} else {
WebSocketVO<String> webSocketVO = new WebSocketVO<>();
webSocketVO.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
webSocketVO.setOperateCode(SourceOperateCodeEnum.VERIFY_MAPPING$01.getValue());
webSocketVO.setCode(SourceResponseCodeEnum.FAIL.getCode());
dataTypeList.removeAll(descList);
for (String dataType : dataTypeList) {
Map<String, Object> map = new HashMap<>(2);
map.put("icdType", icdCheckData.getIcdType());
DetectionCodeEnum anEnum = DetectionCodeEnum.getDetectionCodeByCode(dataType.replace(DetectionCodeEnum.REAL_PREFIX.getCode(), ""));
map.put("dataType", anEnum.getMessage());
webSocketVO.setData(JSON.toJSONString(map));
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSocketVO));
}
CnSocketUtil.quitSend(param);
} }
} }
break; break;
@@ -1299,7 +1340,7 @@ public class SocketDevResponseService {
checkDataParam.setIsValueTypeName(false); checkDataParam.setIsValueTypeName(false);
List<String> valueType = iPqScriptCheckDataService.getValueType(checkDataParam); List<String> valueType = iPqScriptCheckDataService.getValueType(checkDataParam);
iPqDevService.updateResult(false,param.getDevIds(), valueType, param.getCode(), param.getUserId(), param.getTemperature(), param.getHumidity()); iPqDevService.updateResult(false, param.getDevIds(), valueType, param.getCode(), param.getUserId(), param.getTemperature(), param.getHumidity());
CnSocketUtil.quitSend(param); CnSocketUtil.quitSend(param);
} }
successComm.clear(); successComm.clear();
@@ -1505,9 +1546,10 @@ public class SocketDevResponseService {
private String devMessage(String type, private String devMessage(String type,
List<DevData.SqlDataDTO> data, List<DevData.SqlDataDTO> data,
List<DevData.SqlDataDTO> dataPhase) { List<DevData.SqlDataDTO> dataPhase,
boolean angleCheck) {
StringBuffer str = new StringBuffer(); StringBuffer str = new StringBuffer();
if (isPhaseAngle) { if (angleCheck) {
if (CollUtil.isNotEmpty(data) && CollUtil.isNotEmpty(dataPhase)) { if (CollUtil.isNotEmpty(data) && CollUtil.isNotEmpty(dataPhase)) {
if (data.size() == dataPhase.size()) { if (data.size() == dataPhase.size()) {
DevData.SqlDataDTO.ListDTO dto = data.get(0).getList(); DevData.SqlDataDTO.ListDTO dto = data.get(0).getList();
@@ -1572,7 +1614,13 @@ public class SocketDevResponseService {
} }
compareDev.setDevName(devName); compareDev.setDevName(devName);
compareDev.setLineNum(split[1]); compareDev.setLineNum(split[1]);
getSourceCompareDev(type.get(2), dataV, dataVPhase, compareDev, sourceMessageMap.get(type.get(3)), sourceV, type.get(4));
boolean angleCheck = false;
PreDetection preDetection = FormalTestManager.devList.stream().filter(x -> x.getDevIP().equals(split[0])).findFirst().orElse(null);
if (ObjectUtil.isNotNull(preDetection)) {
angleCheck = preDetection.getAngle() == 1 ? true : false;
}
getSourceCompareDev(type.get(2), dataV, dataVPhase, compareDev, sourceMessageMap.get(type.get(3)), sourceV, type.get(4), angleCheck);
info.add(compareDev); info.add(compareDev);
} }
@@ -1591,20 +1639,19 @@ public class SocketDevResponseService {
SourceCompareDev compareDev, SourceCompareDev compareDev,
String desc, String desc,
List<SourceIssue.ChannelListDTO> channelList, List<SourceIssue.ChannelListDTO> channelList,
String name String name,
boolean angleCheck) {
) {
//源信息 //源信息
Map<String, SourceIssue.ChannelListDTO> sourceMap = channelList.stream() Map<String, SourceIssue.ChannelListDTO> sourceMap = channelList.stream()
.collect(Collectors.toMap(x -> x.getChannelType(), Function.identity())); .collect(Collectors.toMap(x -> x.getChannelType(), Function.identity()));
Boolean a = getaBoolean(sourceMap.get(type + "a"), CollUtil.isNotEmpty(data) ? data.get(0).getList().getA() : null, Boolean a = getaBoolean(sourceMap.get(type + "a"), CollUtil.isNotEmpty(data) ? data.get(0).getList().getA() : null,
CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getA() : null); CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getA() : null, angleCheck);
Boolean b = getaBoolean(sourceMap.get(type + "b"), CollUtil.isNotEmpty(data) ? data.get(0).getList().getB() : null, Boolean b = getaBoolean(sourceMap.get(type + "b"), CollUtil.isNotEmpty(data) ? data.get(0).getList().getB() : null,
CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getB() : null); CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getB() : null, angleCheck);
Boolean c = getaBoolean(sourceMap.get(type + "c"), CollUtil.isNotEmpty(data) ? data.get(0).getList().getC() : null, Boolean c = getaBoolean(sourceMap.get(type + "c"), CollUtil.isNotEmpty(data) ? data.get(0).getList().getC() : null,
CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getC() : null); CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getC() : null, angleCheck);
compareDev.setIsQualified(a && b && c); compareDev.setIsQualified(a && b && c);
compareDev.setDesc(name + (compareDev.getIsQualified() ? "合格->" : "不合格->") + CnSocketUtil.STEP_TAG + desc + CnSocketUtil.STEP_TAG + devMessage(type, data, dataPhase)); compareDev.setDesc(name + (compareDev.getIsQualified() ? "合格->" : "不合格->") + CnSocketUtil.STEP_TAG + desc + CnSocketUtil.STEP_TAG + devMessage(type, data, dataPhase, angleCheck));
return compareDev; return compareDev;
} }
@@ -1616,7 +1663,7 @@ public class SocketDevResponseService {
* @param devPhase 装置返回相角数据 * @param devPhase 装置返回相角数据
* @return * @return
*/ */
private Boolean getaBoolean(SourceIssue.ChannelListDTO channelListDTO, Double devData, Double devPhase) { private Boolean getaBoolean(SourceIssue.ChannelListDTO channelListDTO, Double devData, Double devPhase, boolean angleCheck) {
Boolean isDev = false; Boolean isDev = false;
Boolean isPhase = false; Boolean isPhase = false;
@@ -1625,7 +1672,7 @@ public class SocketDevResponseService {
BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95), BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95),
BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05)); BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05));
} }
if (isPhaseAngle) { if (angleCheck) {
if (ObjectUtil.isNotNull(devPhase)) { if (ObjectUtil.isNotNull(devPhase)) {
isPhase = phaseBoolean(channelListDTO, devPhase); isPhase = phaseBoolean(channelListDTO, devPhase);
} }

View File

@@ -43,7 +43,8 @@ public enum DetectionCodeEnum {
STAR("Star","星型接线"), STAR("Star","星型接线"),
DELTA("Delta","角型接线"), DELTA("Delta","角型接线"),
REAL_PREFIX("real$", "实时数据前缀"); REAL_PREFIX("real$", "实时数据前缀"),
AVG_PREFIX("avg$", "统计数据前缀");
private final String code; private final String code;
private final String message; private final String message;

View File

@@ -42,10 +42,5 @@ public class ContrastDetectionParam {
*/ */
private List<Boolean> testItemList; private List<Boolean> testItemList;
/**
* 第几次监测 key为设备监测点id,value为第几次监测
*/
private Map<String,Integer> numMap;
private String userId; private String userId;
} }

View File

@@ -74,9 +74,4 @@ public class PreDetectionParam {
* 检测项列表。第一个元素为预检测、第二个元素为系数校准、第三个元素为正式检测 * 检测项列表。第一个元素为预检测、第二个元素为系数校准、第三个元素为正式检测
*/ */
private List<Boolean> testItemList; private List<Boolean> testItemList;
/**
* 第几次监测 key为设备监测点id,value为第几次监测
*/
private Map<String, Integer> numMap;
} }

View File

@@ -57,5 +57,7 @@ public class AlignDataVO {
private Double ucStdDev; private Double ucStdDev;
private Double utStdDev; private Double utStdDev;
private String unit;
} }
} }

View File

@@ -16,6 +16,8 @@ import com.njcn.gather.detection.pojo.vo.DetectionData;
import com.njcn.gather.detection.pojo.vo.DevLineTestResult; import com.njcn.gather.detection.pojo.vo.DevLineTestResult;
import com.njcn.gather.detection.util.DetectionUtil; import com.njcn.gather.detection.util.DetectionUtil;
import com.njcn.gather.detection.util.socket.CnSocketUtil; import com.njcn.gather.detection.util.socket.CnSocketUtil;
import com.njcn.gather.device.pojo.vo.PreDetection;
import com.njcn.gather.device.service.IPqDevService;
import com.njcn.gather.err.pojo.param.PqErrSysParam; import com.njcn.gather.err.pojo.param.PqErrSysParam;
import com.njcn.gather.err.pojo.po.PqErrSysDtls; import com.njcn.gather.err.pojo.po.PqErrSysDtls;
import com.njcn.gather.err.pojo.vo.ErrDtlsCheckDataVO; import com.njcn.gather.err.pojo.vo.ErrDtlsCheckDataVO;
@@ -62,6 +64,7 @@ public class DetectionServiceImpl {
private final DetectionDataDealService detectionDataDealService; private final DetectionDataDealService detectionDataDealService;
private final ISysTestConfigService sysTestConfigService; private final ISysTestConfigService sysTestConfigService;
private final IPqMonitorService pqMonitorService; private final IPqMonitorService pqMonitorService;
private final IPqDevService pqDevService;
public static final String TYPE_A = "A"; public static final String TYPE_A = "A";
public static final String TYPE_B = "B"; public static final String TYPE_B = "B";
@@ -119,6 +122,8 @@ public class DetectionServiceImpl {
*/ */
case FREQ: case FREQ:
return isQualified(dev, devIdMapComm, errDtlsCheckData, F, sourceIssue, dataRule, code, oneConfig.getScale()); return isQualified(dev, devIdMapComm, errDtlsCheckData, F, sourceIssue, dataRule, code, oneConfig.getScale());
case P:
return isQualified(dev, devIdMapComm, errDtlsCheckData, P, sourceIssue, dataRule, code, oneConfig.getScale());
/** /**
* 电压 * 电压
*/ */
@@ -193,8 +198,6 @@ public class DetectionServiceImpl {
case VOLTAGE_MAG: case VOLTAGE_MAG:
case VOLTAGE_DUR: case VOLTAGE_DUR:
return isVoltageQualified(dev, devIdMapComm, errDtlsCheckData, sourceIssue, dataRule, code, oneConfig.getScale()); return isVoltageQualified(dev, devIdMapComm, errDtlsCheckData, sourceIssue, dataRule, code, oneConfig.getScale());
case P:
return isQualified(dev, devIdMapComm, errDtlsCheckData, P, sourceIssue, dataRule, code, oneConfig.getScale());
default: default:
return isUnknownQualified(dev, devIdMapComm, errDtlsCheckData, sourceIssue, dataRule, code, oneConfig.getScale()); return isUnknownQualified(dev, devIdMapComm, errDtlsCheckData, sourceIssue, dataRule, code, oneConfig.getScale());
} }
@@ -1127,6 +1130,7 @@ public class DetectionServiceImpl {
} }
map.forEach((typeKey, typeValue) -> { map.forEach((typeKey, typeValue) -> {
typeValue.remove(0.0);
typeValue.forEach((key, value) -> { typeValue.forEach((key, value) -> {
value.sort(Comparator.comparing(Double::doubleValue).reversed()); value.sort(Comparator.comparing(Double::doubleValue).reversed());
if (CollUtil.isNotEmpty(value)) { if (CollUtil.isNotEmpty(value)) {
@@ -1568,7 +1572,8 @@ public class DetectionServiceImpl {
boolean isStar = DetectionCodeEnum.STAR.getCode().equals(pqMonitor.getConnection()); boolean isStar = DetectionCodeEnum.STAR.getCode().equals(pqMonitor.getConnection());
boolean isDelta = DetectionCodeEnum.DELTA.getCode().equals(pqMonitor.getConnection()); boolean isDelta = DetectionCodeEnum.DELTA.getCode().equals(pqMonitor.getConnection());
Double fUn = pqMonitorService.getRatedVoltage(devMonitorId); Double fUn = pqMonitorService.getRatedVoltage(devMonitorId);
if (isStar) { boolean isExitDelta = this.isExitDeltaIndex(devIdMapComm.get(split1[0]), devDataList);
if (isStar || !isExitDelta) {
fUn = BigDecimal.valueOf(fUn).divide(BigDecimal.valueOf(Math.sqrt(3)), oneConfig.getScale(), RoundingMode.HALF_UP).doubleValue(); fUn = BigDecimal.valueOf(fUn).divide(BigDecimal.valueOf(Math.sqrt(3)), oneConfig.getScale(), RoundingMode.HALF_UP).doubleValue();
} }
Double fIn = pqMonitorService.getRatedCurrent(devMonitorId); Double fIn = pqMonitorService.getRatedCurrent(devMonitorId);
@@ -1599,7 +1604,8 @@ public class DetectionServiceImpl {
break; break;
case VRMS: case VRMS:
case PVRMS: case PVRMS:
resultMap.put(PowerIndexEnum.V.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fUn, (isStar ? DetectionCodeEnum.VRMS.getCode() : DetectionCodeEnum.PVRMS.getCode()), dataRule, num, code, oneConfig.getScale())); // 如果是角型接法且存在角型接法的一些指标,则不进行使用角型接线的指标。反之,则使用相别的指标。
resultMap.put(PowerIndexEnum.V.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fUn, (isDelta && isExitDelta ? DetectionCodeEnum.PVRMS.getCode() : DetectionCodeEnum.VRMS.getCode()), dataRule, num, code, oneConfig.getScale()));
break; break;
case IRMS: case IRMS:
resultMap.put(PowerIndexEnum.I.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fIn, DetectionCodeEnum.IRMS.getCode(), dataRule, num, code, oneConfig.getScale())); resultMap.put(PowerIndexEnum.I.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fIn, DetectionCodeEnum.IRMS.getCode(), dataRule, num, code, oneConfig.getScale()));
@@ -1615,20 +1621,20 @@ public class DetectionServiceImpl {
break; break;
case V2_50: case V2_50:
case PV2_50: case PV2_50:
resultMap.put(PowerIndexEnum.HV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, HARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale())); resultMap.put(PowerIndexEnum.HV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, HARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale()));
break; break;
case I2_50: case I2_50:
resultMap.put(PowerIndexEnum.HI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, HARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale())); resultMap.put(PowerIndexEnum.HI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, HARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale()));
break; break;
case P2_50: case P2_50:
resultMap.put(PowerIndexEnum.HP.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn * fIn, HARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale())); resultMap.put(PowerIndexEnum.HP.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, HP, fUn * fIn, HARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale()));
break; break;
case SV_1_49: case SV_1_49:
case PSV_1_49: case PSV_1_49:
resultMap.put(PowerIndexEnum.HSV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, INHARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale())); resultMap.put(PowerIndexEnum.HSV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, INHARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale()));
break; break;
case SI_1_49: case SI_1_49:
resultMap.put(PowerIndexEnum.HSI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, INHARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale())); resultMap.put(PowerIndexEnum.HSI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, INHARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale()));
break; break;
case UNKNOWN_ERROR: case UNKNOWN_ERROR:
break; break;
@@ -1638,6 +1644,37 @@ public class DetectionServiceImpl {
return resultMap; return resultMap;
} }
/**
* 判断是否存在角型接法的一些线电压指标
*
* @param devId 设备id
* @param devDataList 监测点数据
* @return
*/
private boolean isExitDeltaIndex(String devId, List<DevData> devDataList) {
if (CollUtil.isNotEmpty(devDataList)) {
List<String> deltaIndex = Arrays.asList(DetectionCodeEnum.PVRMS.getCode(),
DetectionCodeEnum.PV2_50.getCode(),
DetectionCodeEnum.PSV_1_49.getCode(),
DetectionCodeEnum.PU1.getCode());
DevData devData = devDataList.get(0);
List<DevData.SqlDataDTO> sqlData = devData.getSqlData();
List<DevData.SqlDataHarmDTO> sqlDataHarm = devData.getSqlDataHarm();
if (CollUtil.isNotEmpty(sqlData) && CollUtil.isNotEmpty(sqlDataHarm)) {
List<String> descList = sqlData.stream().map(DevData.SqlDataDTO::getDesc).filter(desc -> deltaIndex.contains(desc)).collect(Collectors.toList());
descList.addAll(sqlDataHarm.stream().map(DevData.SqlDataHarmDTO::getDesc).filter(desc -> deltaIndex.contains(desc)).collect(Collectors.toList()));
if (descList.containsAll(deltaIndex)) {
List<PreDetection> devInfo = pqDevService.getDevInfo(Collections.singletonList(devId));
if (devInfo.get(0).getUsePhaseIndex() == 1) {
return true;
}
}
}
}
return false;
}
/** /**
* 处理非谐波数据 * 处理非谐波数据
@@ -1724,7 +1761,7 @@ public class DetectionServiceImpl {
* @param fData 额定值 * @param fData 额定值
* @param type U或I、用来区分电压或电流 * @param type U或I、用来区分电压或电流
* @param harmonicFlag 1间谐波2谐波 * @param harmonicFlag 1间谐波2谐波
* @param isDelta 是否角型接法 * @param isUseDelta 是否使用角型接线的一些指标
* @param dataRule 数据处理原则 * @param dataRule 数据处理原则
* @param num 第几次检测 * @param num 第几次检测
* @param code 结果表code * @param code 结果表code
@@ -1738,7 +1775,7 @@ public class DetectionServiceImpl {
String type, String type,
Double fData, Double fData,
Integer harmonicFlag, Integer harmonicFlag,
boolean isDelta, boolean isUseDelta,
DictDataEnum dataRule, DictDataEnum dataRule,
Integer num, Integer num,
String code, String code,
@@ -1749,17 +1786,17 @@ public class DetectionServiceImpl {
String harmCode = ""; String harmCode = "";
if (U.equals(type)) { if (U.equals(type)) {
fundCode = DetectionCodeEnum.U1.getCode(); fundCode = DetectionCodeEnum.U1.getCode();
if (isDelta) { if (isUseDelta) {
fundCode = DetectionCodeEnum.PU1.getCode(); fundCode = DetectionCodeEnum.PU1.getCode();
} }
if (harmonicFlag == 1) { if (harmonicFlag == 1) {
harmCode = DetectionCodeEnum.SV_1_49.getCode(); harmCode = DetectionCodeEnum.SV_1_49.getCode();
if (isDelta) { if (isUseDelta) {
harmCode = DetectionCodeEnum.PSV_1_49.getCode(); harmCode = DetectionCodeEnum.PSV_1_49.getCode();
} }
} else { } else {
harmCode = DetectionCodeEnum.V2_50.getCode(); harmCode = DetectionCodeEnum.V2_50.getCode();
if (isDelta) { if (isUseDelta) {
harmCode = DetectionCodeEnum.PV2_50.getCode(); harmCode = DetectionCodeEnum.PV2_50.getCode();
} }
} }
@@ -1831,25 +1868,12 @@ public class DetectionServiceImpl {
List<DevData.SqlDataDTO> devSqlData = dev.get(i).getSqlData(); List<DevData.SqlDataDTO> devSqlData = dev.get(i).getSqlData();
List<DevData.SqlDataDTO> standardDevSqlData = standardDev.get(i).getSqlData(); List<DevData.SqlDataDTO> standardDevSqlData = standardDev.get(i).getSqlData();
List<DevData.SqlDataDTO.ListDTO> devList = devSqlData.stream().filter(j -> desc.equals(j.getDesc())) String finalDesc = desc;
List<DevData.SqlDataDTO.ListDTO> devList = devSqlData.stream().filter(j -> finalDesc.equals(j.getDesc()))
.map(DevData.SqlDataDTO::getList).collect(Collectors.toList()); .map(DevData.SqlDataDTO::getList).collect(Collectors.toList());
List<DevData.SqlDataDTO.ListDTO> standardDevList = standardDevSqlData.stream().filter(j -> desc.equals(j.getDesc())) List<DevData.SqlDataDTO.ListDTO> standardDevList = standardDevSqlData.stream().filter(j -> finalDesc.equals(j.getDesc()))
.map(DevData.SqlDataDTO::getList).collect(Collectors.toList()); .map(DevData.SqlDataDTO::getList).collect(Collectors.toList());
// 如果角型接法中,不存在线电压有效值,则取相电压有效值进行计算
if (CollUtil.isEmpty(devList)) {
if (desc.equals(DetectionCodeEnum.PVRMS.getCode())) {
devList = devSqlData.stream().filter(j -> DetectionCodeEnum.VRMS.getCode().equals(j.getDesc()))
.map(DevData.SqlDataDTO::getList).collect(Collectors.toList());
}
}
if (CollUtil.isEmpty(standardDevList)) {
if (desc.equals(DetectionCodeEnum.PVRMS.getCode())) {
standardDevList = standardDevSqlData.stream().filter(j -> DetectionCodeEnum.VRMS.getCode().equals(j.getDesc()))
.map(DevData.SqlDataDTO::getList).collect(Collectors.toList());
}
}
aDev.addAll(devList.stream().filter(x -> ObjectUtil.isNotNull(x.getA())) aDev.addAll(devList.stream().filter(x -> ObjectUtil.isNotNull(x.getA()))
.map(x -> x.getA().doubleValue()) .map(x -> x.getA().doubleValue())
.collect(Collectors.toList())); .collect(Collectors.toList()));
@@ -1993,31 +2017,32 @@ public class DetectionServiceImpl {
Optional<DevData.SqlDataDTO> first1 = Optional.empty(); Optional<DevData.SqlDataDTO> first1 = Optional.empty();
Optional<DevData.SqlDataDTO> first2 = Optional.empty(); Optional<DevData.SqlDataDTO> first2 = Optional.empty();
if (CollUtil.isNotEmpty(devSqlData) && CollUtil.isNotEmpty(standardDevSqlData)) { if (CollUtil.isNotEmpty(devSqlData) && CollUtil.isNotEmpty(standardDevSqlData)) {
first1 = devSqlData.stream().filter(j -> fundCode.equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); first1 = devSqlData.stream().filter(j -> fundCode.equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
first2 = standardDevSqlData.stream().filter(j -> fundCode.equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); first2 = standardDevSqlData.stream().filter(j -> fundCode.equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
} }
// 如果角型接法中,不存在线电压谐波电压基波有效值,则取相电压谐波电压基波有效值进行计算 // // 如果角型接法中,不存在线电压谐波电压基波有效值,则取相电压谐波电压基波有效值进行计算
if (!first1.isPresent()) { // if (!first1.isPresent()) {
if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) { // if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); // first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
} // }
} else { // } else {
// 防止出现有PU1而没有PV2_50、SV_1_49的情况 // // 防止出现有PU1而没有PV2_50、SV_1_49的情况
if ((DetectionCodeEnum.PV2_50.getCode().equals(harmCode) || DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) && DetectionCodeEnum.PU1.getCode().equals(fundCode)) { // if ((DetectionCodeEnum.PV2_50.getCode().equals(harmCode) || DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) && DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); // first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
} // }
} // }
if (!first2.isPresent()) { // if (!first2.isPresent()) {
if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) { // if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); // first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
} // }
} else { // } else {
// 防止出现有PU1而没有PV2_50、SV_1_49的情况 // // 防止出现有PU1而没有PV2_50、SV_1_49的情况
if ((DetectionCodeEnum.PV2_50.getCode().equals(harmCode) || DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) && DetectionCodeEnum.PU1.getCode().equals(fundCode)) { // if ((DetectionCodeEnum.PV2_50.getCode().equals(harmCode) || DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) && DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); // first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
} // }
} // }
DevData.SqlDataDTO fund1 = null; DevData.SqlDataDTO fund1 = null;
DevData.SqlDataDTO fund2 = null; DevData.SqlDataDTO fund2 = null;
@@ -2031,23 +2056,23 @@ public class DetectionServiceImpl {
List<DevData.SqlDataHarmDTO> devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> x.getDesc().equals(harmCode)).collect(Collectors.toList()); List<DevData.SqlDataHarmDTO> devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> x.getDesc().equals(harmCode)).collect(Collectors.toList());
List<DevData.SqlDataHarmDTO> stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> x.getDesc().equals(harmCode)).collect(Collectors.toList()); List<DevData.SqlDataHarmDTO> stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> x.getDesc().equals(harmCode)).collect(Collectors.toList());
// 如果角型接法中,不存在线电压谐波电压含有率,则取相电压谐波电压含有率进行计算 // // 如果角型接法中,不存在线电压谐波电压含有率,则取相电压谐波电压含有率进行计算
if (CollUtil.isEmpty(devHarmList)) { // if (CollUtil.isEmpty(devHarmList)) {
if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) { // if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) {
devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.V2_50.getCode().equals(x.getDesc())).collect(Collectors.toList()); // devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.V2_50.getCode().equals(x.getDesc())).collect(Collectors.toList());
} // }
if (DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) { // if (DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) {
devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.SV_1_49.getCode().equals(x.getDesc())).collect(Collectors.toList()); // devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.SV_1_49.getCode().equals(x.getDesc())).collect(Collectors.toList());
} // }
} // }
if (CollUtil.isEmpty(stdDevHarmList)) { // if (CollUtil.isEmpty(stdDevHarmList)) {
if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) { // if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) {
stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.V2_50.getCode().equals(x.getDesc())).collect(Collectors.toList()); // stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.V2_50.getCode().equals(x.getDesc())).collect(Collectors.toList());
} // }
if (DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) { // if (DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) {
stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.SV_1_49.getCode().equals(x.getDesc())).collect(Collectors.toList()); // stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.SV_1_49.getCode().equals(x.getDesc())).collect(Collectors.toList());
} // }
} // }
if (CollUtil.isNotEmpty(devHarmList) && CollUtil.isNotEmpty(stdDevHarmList)) { if (CollUtil.isNotEmpty(devHarmList) && CollUtil.isNotEmpty(stdDevHarmList)) {
DevData.SqlDataHarmDTO devHarm = devHarmList.get(0); DevData.SqlDataHarmDTO devHarm = devHarmList.get(0);

View File

@@ -385,7 +385,6 @@ public class PreDetectionServiceImpl implements PreDetectionService {
PreDetectionParam preDetectionParam = new PreDetectionParam(); PreDetectionParam preDetectionParam = new PreDetectionParam();
preDetectionParam.setUserPageId(param.getLoginName()); preDetectionParam.setUserPageId(param.getLoginName());
preDetectionParam.setTestItemList(param.getTestItemList()); preDetectionParam.setTestItemList(param.getTestItemList());
preDetectionParam.setNumMap(param.getNumMap());
preDetectionParam.setDevIds(param.getDevIds()); preDetectionParam.setDevIds(param.getDevIds());
preDetectionParam.setUserId(param.getUserId()); preDetectionParam.setUserId(param.getUserId());
WebServiceManager.addPreDetectionParam(param.getLoginName(), preDetectionParam); WebServiceManager.addPreDetectionParam(param.getLoginName(), preDetectionParam);

View File

@@ -90,7 +90,7 @@ public class FormalTestManager {
public static PatternEnum patternEnum; public static PatternEnum patternEnum;
/** /**
* 比对式检测-检测项。key为检测项id,value为检测项code * 比对式检测-检测项。key为检测项code,value为检测项id
*/ */
public static Map<String, String> testItemMap = new HashMap<>(); public static Map<String, String> testItemMap = new HashMap<>();
@@ -123,4 +123,9 @@ public class FormalTestManager {
* 是否要移除和通信模块的socket连接 * 是否要移除和通信模块的socket连接
*/ */
public static Boolean isRemoveSocket = true; public static Boolean isRemoveSocket = true;
/**
* 第几次监测 key为设备监测点id,value为第几次监测
*/
public static Map<String, Integer> numMap = new HashMap<>();
} }

View File

@@ -83,4 +83,17 @@ public class MsgUtil {
return "被检设备\"" + devMap.get(split1[0]) + CnSocketUtil.SPLIT_TAG + split1[1] + "\"" + " -> 标准设备\"" + devMap.get(split2[0]) + CnSocketUtil.SPLIT_TAG + split2[1] + "\""; return "被检设备\"" + devMap.get(split1[0]) + CnSocketUtil.SPLIT_TAG + split1[1] + "\"" + " -> 标准设备\"" + devMap.get(split2[0]) + CnSocketUtil.SPLIT_TAG + split2[1] + "\"";
} }
} }
/**
* 获取消息
*
* @param monitorId 监测点id
* @param devMap key为设备ipvalue为设备名称
* @param appendMsg 附加的消息
* @return
*/
public static String getMsg(String monitorId, Map<String, String> devMap, String appendMsg) {
String[] split1 = monitorId.split("_");
return "\"" + devMap.get(split1[0]) + CnSocketUtil.SPLIT_TAG + "" + split1[1] + "\"" + appendMsg;
}
} }

View File

@@ -126,7 +126,6 @@ public class NettyClient {
PreDetectionParam preDetectionParam = new PreDetectionParam(); PreDetectionParam preDetectionParam = new PreDetectionParam();
preDetectionParam.setUserPageId(param.getLoginName()); preDetectionParam.setUserPageId(param.getLoginName());
preDetectionParam.setTestItemList(param.getTestItemList()); preDetectionParam.setTestItemList(param.getTestItemList());
preDetectionParam.setNumMap(param.getNumMap());
preDetectionParam.setDevIds(param.getDevIds()); preDetectionParam.setDevIds(param.getDevIds());
preDetectionParam.setUserId(param.getUserId()); preDetectionParam.setUserId(param.getUserId());
NettyContrastClientHandler handler = new NettyContrastClientHandler(preDetectionParam, socketContrastResponseService); NettyContrastClientHandler handler = new NettyContrastClientHandler(preDetectionParam, socketContrastResponseService);

View File

@@ -15,6 +15,8 @@
<result column="Dev_Chns" property="devChns"/> <result column="Dev_Chns" property="devChns"/>
<result column="Dev_Volt" property="devVolt"/> <result column="Dev_Volt" property="devVolt"/>
<result column="Dev_Curr" property="devCurr"/> <result column="Dev_Curr" property="devCurr"/>
<result column="Angle" property="angle"/>
<result column="Use_Phase_Index" property="usePhaseIndex"/>
<collection <collection
property="monitorList" property="monitorList"
@@ -35,7 +37,9 @@
p.name as icdType, p.name as icdType,
t.Dev_Chns, t.Dev_Chns,
t.Dev_Volt, t.Dev_Volt,
t.Dev_Curr t.Dev_Curr,
p.Angle,
p.Use_Phase_Index
FROM FROM
pq_dev d pq_dev d
inner join pq_dev_type t on d.Dev_Type = t.id inner join pq_dev_type t on d.Dev_Type = t.id

View File

@@ -15,13 +15,8 @@
<result column="Dev_Chns" property="devChns"/> <result column="Dev_Chns" property="devChns"/>
<result column="Dev_Volt" property="devVolt"/> <result column="Dev_Volt" property="devVolt"/>
<result column="Dev_Curr" property="devCurr"/> <result column="Dev_Curr" property="devCurr"/>
<result column="Angle" property="angle"/>
<!-- <collection--> <result column="Use_Phase_Index" property="usePhaseIndex"/>
<!-- property="monitorList"-->
<!-- column="{ devId = Id}"-->
<!-- select="com.njcn.gather.monitor.mapper.PqMonitorMapper.selectMonitorInfo"-->
<!-- >-->
<!-- </collection>-->
</resultMap> </resultMap>
<select id="listStandardDevPreDetection" resultMap="standardDevResultMap"> <select id="listStandardDevPreDetection" resultMap="standardDevResultMap">
@@ -36,7 +31,9 @@
icd_path.Name as icdType, icd_path.Name as icdType,
dev_type.Dev_Chns, dev_type.Dev_Chns,
dev_type.Dev_Volt, dev_type.Dev_Volt,
dev_type.Dev_Curr dev_type.Dev_Curr,
icd_path.Angle,
icd_path.Use_Phase_Index
from pq_standard_dev standard_dev from pq_standard_dev standard_dev
inner join pq_dev_type dev_type on standard_dev.Dev_Type = dev_type.id inner join pq_dev_type dev_type on standard_dev.Dev_Type = dev_type.id
inner join pq_icd_path icd_path on dev_type.icd = icd_path.id inner join pq_icd_path icd_path on dev_type.icd = icd_path.id

View File

@@ -54,6 +54,18 @@ public class PreDetection {
@JSONField(name = "icdType") @JSONField(name = "icdType")
private String icdType; private String icdType;
/**
* 是否支持相角。0不支持1支持
*/
@JSONField(name = "angle")
private Integer angle;
/**
* 角型接线时是否使用相别的指标来进行检测0表示否1表示是
*/
@JSONField(name = "usePhaseIndex")
private Integer usePhaseIndex;
/** /**
* 装置识别码3ds加密 * 装置识别码3ds加密
*/ */

View File

@@ -144,10 +144,10 @@ public class PqErrSysController extends BaseController {
@GetMapping("/getTestItems") @GetMapping("/getTestItems")
@ApiOperation("根据误差体系id获取测试项") @ApiOperation("根据误差体系id获取测试项")
@ApiImplicitParam(name = "id", value = "误差体系id", required = true) @ApiImplicitParam(name = "id", value = "误差体系id", required = true)
public HttpResult<List<Map<String, String>>> getTestItems(@RequestParam("id") String id) { public HttpResult<Map<String, String>> getTestItems(@RequestParam("id") String id) {
String methodDescribe = getMethodDescribe("getTestItems"); String methodDescribe = getMethodDescribe("getTestItems");
LogUtil.njcnDebug(log, "{}获取测试项ID为{}", methodDescribe, id); LogUtil.njcnDebug(log, "{}获取测试项ID为{}", methodDescribe, id);
List<Map<String, String>> result = pqErrSysService.getTestItems(id); Map<String, String> result = pqErrSysService.getTestItems(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
} }
} }

View File

@@ -86,5 +86,5 @@ public interface IPqErrSysService extends IService<PqErrSys> {
* @param id 误差体系id * @param id 误差体系id
* @return * @return
*/ */
List<Map<String, String>> getTestItems(String id); Map<String, String> getTestItems(String id);
} }

View File

@@ -1,6 +1,7 @@
package com.njcn.gather.err.service.impl; package com.njcn.gather.err.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.text.StrPool; import cn.hutool.core.text.StrPool;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -128,7 +129,7 @@ public class PqErrSysServiceImpl extends ServiceImpl<PqErrSysMapper, PqErrSys> i
@Override @Override
public List<Map<String, Object>> listAllPqErrSys() { public List<Map<String, Object>> listAllPqErrSys() {
List<PqErrSys> pqErrSysList = this.lambdaQuery() List<PqErrSys> pqErrSysList = this.lambdaQuery()
.eq(PqErrSys::getEnable,DataStateEnum.ENABLE.getCode()) .eq(PqErrSys::getEnable, DataStateEnum.ENABLE.getCode())
.eq(PqErrSys::getState, DataStateEnum.ENABLE.getCode()).list(); .eq(PqErrSys::getState, DataStateEnum.ENABLE.getCode()).list();
List<Map<String, Object>> result = pqErrSysList.stream().map(pqErrSys -> { List<Map<String, Object>> result = pqErrSysList.stream().map(pqErrSys -> {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
@@ -209,7 +210,19 @@ public class PqErrSysServiceImpl extends ServiceImpl<PqErrSysMapper, PqErrSys> i
} }
@Override @Override
public List<Map<String, String>> getTestItems(String id) { public Map<String, String> getTestItems(String id) {
List<PqErrSysDtls> pqErrSysDtls = pqErrSysDtlsService.listPqErrSysDtlsByPqErrSysId(id);
List<String> scriptTypeList = pqErrSysDtls.stream().map(PqErrSysDtls::getScriptType).distinct().collect(Collectors.toList());
List<DictTree> dictTreeList = dictTreeService.lambdaQuery().in(CollUtil.isNotEmpty(scriptTypeList), DictTree::getId, scriptTypeList).list();
if (CollUtil.isNotEmpty(dictTreeList)) {
List<String> pids = dictTreeList.stream().map(DictTree::getPid).collect(Collectors.toList());
List<DictTree> parentDictTreeList = dictTreeService.listByIds(pids);
Map<String, String> map = new HashMap<>();
parentDictTreeList.forEach(dictTree -> {
map.put(dictTree.getId(), dictTree.getName());
});
return map;
}
return null; return null;
} }
@@ -222,11 +235,11 @@ public class PqErrSysServiceImpl extends ServiceImpl<PqErrSysMapper, PqErrSys> i
private void checkRepeat(PqErrSysParam param, boolean isExcludeSelf) { private void checkRepeat(PqErrSysParam param, boolean isExcludeSelf) {
QueryWrapper<PqErrSys> wrapper = new QueryWrapper<>(); QueryWrapper<PqErrSys> wrapper = new QueryWrapper<>();
wrapper.eq("Standard_Name", param.getStandardName()) wrapper.eq("Standard_Name", param.getStandardName())
.eq("Standard_Time",param.getStandardTime()+"-01-01") .eq("Standard_Time", param.getStandardTime() + "-01-01")
.eq("Dev_Level",param.getDevLevel()) .eq("Dev_Level", param.getDevLevel())
.eq("state", DataStateEnum.ENABLE.getCode()); .eq("state", DataStateEnum.ENABLE.getCode());
if (isExcludeSelf) { if (isExcludeSelf) {
if(param instanceof PqErrSysParam.UpdateParam){ if (param instanceof PqErrSysParam.UpdateParam) {
wrapper.ne("Id", ((PqErrSysParam.UpdateParam) param).getId()); wrapper.ne("Id", ((PqErrSysParam.UpdateParam) param).getId());
} }
} }

View File

@@ -1523,20 +1523,27 @@ public class ResultServiceImpl implements IResultService {
allResultList.addAll(contrastHarmonicResults); allResultList.addAll(contrastHarmonicResults);
allResultList.addAll(contrastNonHarmonicResults); allResultList.addAll(contrastNonHarmonicResults);
Map<String, List<Integer>> chnMap = new HashMap<>(); Map<String, List<Integer>> chnMap = new TreeMap<>();
Map<String, List<ContrastBaseResult>> devMonitorIdMap = allResultList.stream().collect(Collectors.groupingBy(ContrastBaseResult::getDevMonitorId)); Map<String, List<ContrastBaseResult>> devMonitorIdMap = allResultList.stream().collect(Collectors.groupingBy(ContrastBaseResult::getDevMonitorId));
devMonitorIdMap.forEach((devMonitorId, resultList) -> { devMonitorIdMap.forEach((devMonitorId, resultList) -> {
Integer maxNum = resultList.stream().map(ContrastBaseResult::getNum).max(Comparator.comparing(Integer::valueOf)).orElse(1); Integer maxNum = resultList.stream().map(ContrastBaseResult::getNum).max(Comparator.comparing(Integer::valueOf)).orElse(1);
List<Integer> numList = Stream.iterate(1, n -> n + 1).limit(maxNum).collect(Collectors.toList()); List<Integer> numList = Stream.iterate(1, n -> n + 1).limit(maxNum).collect(Collectors.toList());
String[] split = devMonitorId.split(CnSocketUtil.SPLIT_TAG); String[] split = devMonitorId.split(CnSocketUtil.SPLIT_TAG);
chnMap.put(split[1], numList); chnMap.put(split[1], numList);
});
if (ObjectUtil.isNull(queryParam.getNum())) { if (ObjectUtil.isNull(queryParam.getNum())) {
formContentVO.setCheckNum(maxNum); if (StrUtil.isNotBlank(queryParam.getChnNum())) {
List<Integer> integers = chnMap.get(queryParam.getChnNum());
formContentVO.setCheckNum(integers.get(integers.size() - 1));
} else {
List<String> keyList = chnMap.keySet().stream().collect(Collectors.toList());
List<Integer> integers = chnMap.get(keyList.get(0));
formContentVO.setCheckNum(integers.get(integers.size() - 1));
}
} else { } else {
formContentVO.setCheckNum(queryParam.getNum()); formContentVO.setCheckNum(queryParam.getNum());
} }
});
formContentVO.setChnMap(chnMap); formContentVO.setChnMap(chnMap);
return formContentVO; return formContentVO;
@@ -1553,19 +1560,31 @@ public class ResultServiceImpl implements IResultService {
List<String> adTypeList = childDictTreeList.stream().map(DictTree::getId).collect(Collectors.toList()); List<String> adTypeList = childDictTreeList.stream().map(DictTree::getId).collect(Collectors.toList());
DictTree dictTree = dictTreeList.get(0); DictTree dictTree = dictTreeList.get(0);
contrastResultVO.setResultMap(this.getResultMap(dictTree, adTypeList, queryParam.getDeviceId() + CnSocketUtil.SPLIT_TAG + queryParam.getChnNum(), queryParam.getNum(), String.valueOf(plan.getCode()))); String unit = StorageUtil.unit(dictTree.getCode());
contrastResultVO.setRawDataMap(this.getRawDataMap(dictTree, adTypeList, queryParam.getDeviceId() + CnSocketUtil.SPLIT_TAG + queryParam.getChnNum(), queryParam.getNum(), String.valueOf(plan.getCode()))); if (DicDataEnum.HV.getCode().equals(dictTree.getCode()) || DicDataEnum.HI.getCode().equals(dictTree.getCode())) {
unit = "%";
if (DicDataEnum.HI.getCode().equals(dictTree.getCode())) {
unit = "A";
}
}
if (DicDataEnum.HSV.getCode().equals(dictTree.getCode()) || DicDataEnum.HSI.getCode().equals(dictTree.getCode())) {
unit = "%";
if (DicDataEnum.HSI.getCode().equals(dictTree.getCode())) {
unit = "A";
}
}
contrastResultVO.setResultMap(this.getResultMap(dictTree, adTypeList, queryParam.getDeviceId() + CnSocketUtil.SPLIT_TAG + queryParam.getChnNum(), unit, queryParam.getNum(), String.valueOf(plan.getCode())));
contrastResultVO.setRawDataMap(this.getRawDataMap(dictTree, adTypeList, queryParam.getDeviceId() + CnSocketUtil.SPLIT_TAG + queryParam.getChnNum(), unit, queryParam.getNum(), String.valueOf(plan.getCode())));
return contrastResultVO; return contrastResultVO;
} }
private Map<String, List<RawResultDataVO>> getResultMap(DictTree dictTree, List<String> adTypeList, String monitorId, Integer num, String code) { private Map<String, List<RawResultDataVO>> getResultMap(DictTree dictTree, List<String> adTypeList, String monitorId, String unit, Integer num, String code) {
Map<String, List<RawResultDataVO>> resultMap = new LinkedHashMap<>(); Map<String, List<RawResultDataVO>> resultMap = new LinkedHashMap<>();
List<ContrastNonHarmonicResult> contrastNonHarmonicResults = contrastNonHarmonicService.listAllResultData(code, num, monitorId, adTypeList); List<ContrastNonHarmonicResult> contrastNonHarmonicResults = contrastNonHarmonicService.listAllResultData(code, num, monitorId, adTypeList);
List<ContrastHarmonicResult> contrastHarmonicResults = contrastHarmonicService.listAllResultData(code, num, monitorId, adTypeList); List<ContrastHarmonicResult> contrastHarmonicResults = contrastHarmonicService.listAllResultData(code, num, monitorId, adTypeList);
String unit = StorageUtil.unit(dictTree.getCode());
if (CollUtil.isNotEmpty(contrastNonHarmonicResults)) { if (CollUtil.isNotEmpty(contrastNonHarmonicResults)) {
ContrastNonHarmonicResult contrastNonHarmonicResult = contrastNonHarmonicResults.get(0); ContrastNonHarmonicResult contrastNonHarmonicResult = contrastNonHarmonicResults.get(0);
List<RawResultDataVO.DetectionData> aList = JSON.parseArray(contrastNonHarmonicResult.getAValue() + "", RawResultDataVO.DetectionData.class); List<RawResultDataVO.DetectionData> aList = JSON.parseArray(contrastNonHarmonicResult.getAValue() + "", RawResultDataVO.DetectionData.class);
@@ -1612,22 +1631,13 @@ public class ResultServiceImpl implements IResultService {
List<Double> harmonicNum = null; List<Double> harmonicNum = null;
if (DicDataEnum.HV.getCode().equals(dictTree.getCode()) || DicDataEnum.HI.getCode().equals(dictTree.getCode())) { if (DicDataEnum.HV.getCode().equals(dictTree.getCode()) || DicDataEnum.HI.getCode().equals(dictTree.getCode())) {
harmonicNum = Stream.iterate(2.0, n -> n + 1).limit(49).collect(Collectors.toList()); harmonicNum = Stream.iterate(2.0, n -> n + 1).limit(49).collect(Collectors.toList());
unit = "%";
if (DicDataEnum.HI.getCode().equals(dictTree.getCode())) {
unit = "A";
}
} }
if (DicDataEnum.HSV.getCode().equals(dictTree.getCode()) || DicDataEnum.HSI.getCode().equals(dictTree.getCode())) { if (DicDataEnum.HSV.getCode().equals(dictTree.getCode()) || DicDataEnum.HSI.getCode().equals(dictTree.getCode())) {
harmonicNum = Stream.iterate(0.5, n -> n + 1).limit(50).collect(Collectors.toList()); harmonicNum = Stream.iterate(0.5, n -> n + 1).limit(50).collect(Collectors.toList());
unit = "%";
if (DicDataEnum.HSI.getCode().equals(dictTree.getCode())) {
unit = "A";
}
} }
for (Double n : harmonicNum) { for (Double n : harmonicNum) {
try { try {
int i = StorageUtil.isHarmOrInHarm(n).intValue(); int i = StorageUtil.isHarmOrInHarm(n).intValue();
String finalUnit = unit;
Field fieldA = contrastHarmonicResult.getClass().getDeclaredField("aValue" + i); Field fieldA = contrastHarmonicResult.getClass().getDeclaredField("aValue" + i);
fieldA.setAccessible(true); fieldA.setAccessible(true);
@@ -1645,7 +1655,7 @@ public class ResultServiceImpl implements IResultService {
for (int j = 0; j < aList.size(); j++) { for (int j = 0; j < aList.size(); j++) {
RawResultDataVO dataVO = new RawResultDataVO(); RawResultDataVO dataVO = new RawResultDataVO();
dataVO.setHarmNum(n); dataVO.setHarmNum(n);
dataVO.setUnit(finalUnit); dataVO.setUnit(unit);
dataVO.setDataA(aList.get(j)); dataVO.setDataA(aList.get(j));
dataVO.setDataB(bList.get(j)); dataVO.setDataB(bList.get(j));
dataVO.setDataC(cList.get(j)); dataVO.setDataC(cList.get(j));
@@ -1664,35 +1674,41 @@ public class ResultServiceImpl implements IResultService {
return resultMap; return resultMap;
} }
private Map<String, List<AlignDataVO.RawData>> getRawDataMap(DictTree dictTree, List<String> adTypeList, String monitorId, Integer num, String code) { private Map<String, List<AlignDataVO.RawData>> getRawDataMap(DictTree dictTree, List<String> adTypeList, String monitorId, String unit, Integer num, String code) {
Map<String, List<AlignDataVO.RawData>> resultMap = new LinkedHashMap<>(); Map<String, List<AlignDataVO.RawData>> rawMap = new LinkedHashMap<>();
List<ContrastNonHarmonicResult> devNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(code, num, 0, monitorId, adTypeList); List<ContrastNonHarmonicResult> devNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(code, num, 0, monitorId, adTypeList);
List<ContrastNonHarmonicResult> stdDevNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(code, num, 1, monitorId, adTypeList); List<ContrastNonHarmonicResult> stdDevNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(code, num, 1, monitorId, adTypeList);
List<ContrastHarmonicResult> devHarmonicRawDataList = contrastHarmonicService.listAllRawData(code, num, 0, monitorId, adTypeList); List<ContrastHarmonicResult> devHarmonicRawDataList = contrastHarmonicService.listAllRawData(code, num, 0, monitorId, adTypeList);
List<ContrastHarmonicResult> stdDevHarmonicRawDataList = contrastHarmonicService.listAllRawData(code, num, 1, monitorId, adTypeList); List<ContrastHarmonicResult> stdDevHarmonicRawDataList = contrastHarmonicService.listAllRawData(code, num, 1, monitorId, adTypeList);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
List<AlignDataVO.RawData> rawDataVOList = new ArrayList<>(); List<AlignDataVO.RawData> rawDataVOList = new ArrayList<>();
for (int i = 0; i < devNonHarmonicRawDataList.size(); i++) { for (int i = 0; i < devNonHarmonicRawDataList.size(); i++) {
AlignDataVO.RawData rawDataVO = new AlignDataVO.RawData(); AlignDataVO.RawData rawDataVO = new AlignDataVO.RawData();
rawDataVO.setUnit(unit);
ContrastNonHarmonicResult contrastNonHarmonicResult = devNonHarmonicRawDataList.get(i); ContrastNonHarmonicResult contrastNonHarmonicResult = devNonHarmonicRawDataList.get(i);
rawDataVO.setTimeDev(String.valueOf(contrastNonHarmonicResult.getTimeId())); rawDataVO.setTimeDev(contrastNonHarmonicResult.getTimeId().format(dtf));
rawDataVO.setUaDev(getValue(contrastNonHarmonicResult.getAValue()));
rawDataVO.setUbDev(getValue(contrastNonHarmonicResult.getBValue())); rawDataVO.setUbDev(getValue(contrastNonHarmonicResult.getBValue()));
rawDataVO.setUcDev(getValue(contrastNonHarmonicResult.getCValue()));
rawDataVO.setUtDev(getValue(contrastNonHarmonicResult.getTValue())); rawDataVO.setUtDev(getValue(contrastNonHarmonicResult.getTValue()));
contrastNonHarmonicResult = stdDevNonHarmonicRawDataList.get(i); contrastNonHarmonicResult = stdDevNonHarmonicRawDataList.get(i);
rawDataVO.setTimeStdDev(String.valueOf(contrastNonHarmonicResult.getTimeId())); rawDataVO.setTimeStdDev(contrastNonHarmonicResult.getTimeId().format(dtf));
if (!DicDataEnum.IMBV.getCode().equals(dictTree.getCode()) && !DicDataEnum.IMBA.getCode().equals(dictTree.getCode())) {
rawDataVO.setUaDev(getValue(contrastNonHarmonicResult.getAValue()));
rawDataVO.setUcDev(getValue(contrastNonHarmonicResult.getCValue()));
rawDataVO.setUaStdDev(getValue(contrastNonHarmonicResult.getAValue())); rawDataVO.setUaStdDev(getValue(contrastNonHarmonicResult.getAValue()));
rawDataVO.setUbStdDev(getValue(contrastNonHarmonicResult.getBValue()));
rawDataVO.setUcStdDev(getValue(contrastNonHarmonicResult.getCValue())); rawDataVO.setUcStdDev(getValue(contrastNonHarmonicResult.getCValue()));
}
rawDataVO.setUbStdDev(getValue(contrastNonHarmonicResult.getBValue()));
rawDataVO.setUtStdDev(getValue(contrastNonHarmonicResult.getTValue())); rawDataVO.setUtStdDev(getValue(contrastNonHarmonicResult.getTValue()));
rawDataVOList.add(rawDataVO); rawDataVOList.add(rawDataVO);
} }
if (CollUtil.isNotEmpty(rawDataVOList)) { if (CollUtil.isNotEmpty(rawDataVOList)) {
resultMap.put(dictTree.getName(), rawDataVOList); rawMap.put(dictTree.getName(), rawDataVOList);
} }
if (CollUtil.isNotEmpty(devHarmonicRawDataList) && CollUtil.isNotEmpty(stdDevHarmonicRawDataList)) { if (CollUtil.isNotEmpty(devHarmonicRawDataList) && CollUtil.isNotEmpty(stdDevHarmonicRawDataList)) {
@@ -1708,11 +1724,12 @@ public class ResultServiceImpl implements IResultService {
int i = StorageUtil.isHarmOrInHarm(n).intValue(); int i = StorageUtil.isHarmOrInHarm(n).intValue();
for (int j = 0; j < devHarmonicRawDataList.size(); j++) { for (int j = 0; j < devHarmonicRawDataList.size(); j++) {
AlignDataVO.RawData rawDataVO = new AlignDataVO.RawData(); AlignDataVO.RawData rawDataVO = new AlignDataVO.RawData();
rawDataVO.setUnit(unit);
ContrastHarmonicResult devHarmonicResult = devHarmonicRawDataList.get(j); ContrastHarmonicResult devHarmonicResult = devHarmonicRawDataList.get(j);
ContrastHarmonicResult stdDevHarmonicResult = stdDevHarmonicRawDataList.get(j); ContrastHarmonicResult stdDevHarmonicResult = stdDevHarmonicRawDataList.get(j);
rawDataVO.setTimeDev(String.valueOf(devHarmonicResult.getTimeId())); rawDataVO.setTimeDev(devHarmonicResult.getTimeId().format(dtf));
rawDataVO.setTimeStdDev(String.valueOf(stdDevHarmonicResult.getTimeId())); rawDataVO.setTimeStdDev(stdDevHarmonicResult.getTimeId().format(dtf));
try { try {
Field fieldA = devHarmonicResult.getClass().getDeclaredField("aValue" + i); Field fieldA = devHarmonicResult.getClass().getDeclaredField("aValue" + i);
@@ -1751,11 +1768,11 @@ public class ResultServiceImpl implements IResultService {
} }
rawDataVOList1.add(rawDataVO); rawDataVOList1.add(rawDataVO);
} }
resultMap.put(String.valueOf(n), rawDataVOList1); rawMap.put(String.valueOf(n), rawDataVOList1);
} }
} }
return resultMap; return rawMap;
} }
private Double getValue(String value) { private Double getValue(String value) {

View File

@@ -11,6 +11,7 @@ import com.njcn.gather.script.pojo.po.SourceIssue;
import com.njcn.gather.script.pojo.vo.PqScriptDtlDataVO; import com.njcn.gather.script.pojo.vo.PqScriptDtlDataVO;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* @author caozehui * @author caozehui
@@ -130,9 +131,11 @@ public interface IPqScriptDtlsService extends IService<PqScriptDtls> {
* @param param * @param param
* @return * @return
*/ */
List<String> getScriptToIcdCheckInfo(PreDetectionParam param); Set<String> getScriptToIcdCheckInfo(PreDetectionParam param);
/** /**
* 根据脚本id获取脚本详情数据 * 根据脚本id获取脚本详情数据
*
* @param scriptId 脚本id * @param scriptId 脚本id
*/ */
List<PqScriptDtlDataVO> getScriptDtlsDataList(String scriptId); List<PqScriptDtlDataVO> getScriptDtlsDataList(String scriptId);

View File

@@ -719,7 +719,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
} }
@Override @Override
public List<String> getScriptToIcdCheckInfo(PreDetectionParam param) { public Set<String> getScriptToIcdCheckInfo(PreDetectionParam param) {
PqScriptIssueParam issueParam = new PqScriptIssueParam(); PqScriptIssueParam issueParam = new PqScriptIssueParam();
issueParam.setSourceId(param.getSourceId()); issueParam.setSourceId(param.getSourceId());
issueParam.setDevIds(param.getDevIds()); issueParam.setDevIds(param.getDevIds());
@@ -730,7 +730,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
sourceIssues.forEach(x -> { sourceIssues.forEach(x -> {
dataTypeSet.addAll(x.getDevValueTypeList()); dataTypeSet.addAll(x.getDevValueTypeList());
}); });
return new ArrayList<>(dataTypeSet); return dataTypeSet;
} }
@Override @Override

View File

@@ -27,7 +27,7 @@
<otherwise> <otherwise>
Script_Id CHAR(32) NOT NULL COMMENT '检测脚本表Id', Script_Id CHAR(32) NOT NULL COMMENT '检测脚本表Id',
Sort int(4) NOT NULL COMMENT '总检测脚本中的测试项序号', Sort int(4) NOT NULL COMMENT '总检测脚本中的测试项序号',
PRIMARY KEY (Monitor_Id, Time_Id, Script_Id, Sort, AD_Type) PRIMARY KEY (Dev_Monitor_Id, Time_Id, Script_Id, Sort, AD_Type)
</otherwise> </otherwise>
</choose> </choose>
) COMMENT='非谐波类原始数据表'; ) COMMENT='非谐波类原始数据表';
@@ -64,7 +64,7 @@
<otherwise> <otherwise>
Script_Id CHAR(32) NOT NULL COMMENT '检测脚本表Id', Script_Id CHAR(32) NOT NULL COMMENT '检测脚本表Id',
Sort int(4) NOT NULL COMMENT '总检测脚本中的测试项序号', Sort int(4) NOT NULL COMMENT '总检测脚本中的测试项序号',
PRIMARY KEY (Monitor_Id, Script_Id, Sort, AD_Type) PRIMARY KEY (Dev_Monitor_Id, Script_Id, Sort, AD_Type)
</otherwise> </otherwise>
</choose> </choose>
) COMMENT='非谐波类检测结果表'; ) COMMENT='非谐波类检测结果表';

View File

@@ -53,7 +53,7 @@ public class TableGenServiceImpl implements TableGenService {
: :
" Script_Id CHAR(32) NOT NULL COMMENT '检测脚本表Id',\n" + " Script_Id CHAR(32) NOT NULL COMMENT '检测脚本表Id',\n" +
" Sort int(4) NOT NULL COMMENT '总检测脚本中的测试项序号',\n" + " Sort int(4) NOT NULL COMMENT '总检测脚本中的测试项序号',\n" +
" PRIMARY KEY (Monitor_Id, Time_Id, Script_Id, Sort, AD_Type)\n" " PRIMARY KEY (Dev_Monitor_Id, Time_Id, Script_Id, Sort, AD_Type)\n"
) + ") COMMENT='谐波类原始数据表';"; ) + ") COMMENT='谐波类原始数据表';";
tableGenMapper.genAdHarmonicTable(sql); tableGenMapper.genAdHarmonicTable(sql);
@@ -79,7 +79,7 @@ public class TableGenServiceImpl implements TableGenService {
: :
" Script_Id CHAR(32) NOT NULL COMMENT '检测脚本表Id',\n" + " Script_Id CHAR(32) NOT NULL COMMENT '检测脚本表Id',\n" +
" Sort int(4) NOT NULL COMMENT '总检测脚本中的测试项序号',\n" + " Sort int(4) NOT NULL COMMENT '总检测脚本中的测试项序号',\n" +
" PRIMARY KEY (Monitor_Id,Script_Id, Sort, AD_Type)\n" " PRIMARY KEY (Dev_Monitor_Id,Script_Id, Sort, AD_Type)\n"
) + ") COMMENT='谐波类检测结果表';"; ) + ") COMMENT='谐波类检测结果表';";
tableGenMapper.genAdHarmonicTable(sql2); tableGenMapper.genAdHarmonicTable(sql2);
} }