动态决定是否进行相角差校验、角型接线是否使用相别的指标进行正式检测、数模脚本与映射校验时动态补充相角的测试项
This commit is contained in:
@@ -130,10 +130,6 @@ public class SocketContrastResponseService {
|
||||
@Value("${log.homeDir}")
|
||||
private String alignDataFilePath;
|
||||
|
||||
@Value("${phaseAngle.isEnable}")
|
||||
private Boolean isPhaseAngle;
|
||||
|
||||
|
||||
private static final Map<String, List<String>> testItemCodeMap = new HashMap() {{
|
||||
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()));
|
||||
@@ -275,7 +271,8 @@ public class SocketContrastResponseService {
|
||||
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()));
|
||||
param.setNumMap(numMap);
|
||||
FormalTestManager.numMap.clear();
|
||||
FormalTestManager.numMap.putAll(numMap);
|
||||
SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
|
||||
if (param.getTestItemList().get(2)) {
|
||||
numMap.forEach((devMonitorId, num) -> {
|
||||
@@ -463,8 +460,8 @@ public class SocketContrastResponseService {
|
||||
|
||||
if (successComm.size() == FormalTestManager.monitorMap.size()) {
|
||||
|
||||
boolean modelCheckResult = this.modelCheck(param, FormalTestManager.devDataMap, FormalTestManager.monitorMap.get(monitorId1));
|
||||
modelCheckResult = this.modelCheck(param, FormalTestManager.standardDevDataMap, FormalTestManager.monitorMap.get(monitorId1)) && modelCheckResult;
|
||||
boolean modelCheckResult = this.modelCheck(param, FormalTestManager.devDataMap, FormalTestManager.monitorMap.get(monitorId1), true);
|
||||
modelCheckResult = this.modelCheck(param, FormalTestManager.standardDevDataMap, FormalTestManager.monitorMap.get(monitorId1), false) && modelCheckResult;
|
||||
if (!modelCheckResult) {
|
||||
this.clearData();
|
||||
|
||||
@@ -606,60 +603,70 @@ public class SocketContrastResponseService {
|
||||
|
||||
// 进行单个监测点的对齐校验
|
||||
if (!successPair.containsKey(devMonitorId)) {
|
||||
if (this.singleMonitorAlignCheck(FormalTestManager.devDataMap.get(devMonitorId), FormalTestManager.standardDevDataMap.get(standardDevMonitorId))) {
|
||||
successPair.put(devMonitorId, 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);
|
||||
|
||||
//向前端推送实时数据对齐成功的配对
|
||||
SocketDataMsg webSend = new SocketDataMsg();
|
||||
webSend.setRequestId(SourceOperateCodeEnum.YJC_ALIGN.getValue());
|
||||
webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
|
||||
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
||||
webSend.setData(MsgUtil.getPairStr(standardDevMonitorId, devMonitorId, FormalTestManager.devNameMapComm));
|
||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
|
||||
// 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);
|
||||
FormalTestManager.devDataMap.get(devMonitorId).clear();
|
||||
FormalTestManager.devDataMap.get(devMonitorId).addAll(singleMonitorAlignData.get(0));
|
||||
|
||||
// 若成功的配对项等于总的配对项,则判定为成功
|
||||
if (successPair.keySet().containsAll(FormalTestManager.pairsIpMap.keySet())) {
|
||||
checkResult = true;
|
||||
scheduledFuture.cancel(true);
|
||||
scheduler.shutdown();
|
||||
FormalTestManager.standardDevDataMap.get(standardDevMonitorId).clear();
|
||||
FormalTestManager.standardDevDataMap.get(standardDevMonitorId).addAll(singleMonitorAlignData.get(1));
|
||||
|
||||
// 将数据推送给前端
|
||||
this.sendAlignDataToWeb(param.getUserPageId());
|
||||
this.saveAlignData();
|
||||
//向前端推送实时数据对齐成功的配对
|
||||
SocketDataMsg webSend = new SocketDataMsg();
|
||||
webSend.setRequestId(SourceOperateCodeEnum.YJC_ALIGN.getValue());
|
||||
webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
|
||||
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
||||
webSend.setData(MsgUtil.getPairStr(standardDevMonitorId, devMonitorId, FormalTestManager.devNameMapComm));
|
||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
|
||||
|
||||
this.clearData();
|
||||
// 若成功的配对项等于总的配对项,则判定为成功
|
||||
if (successPair.keySet().containsAll(FormalTestManager.pairsIpMap.keySet())) {
|
||||
checkResult = true;
|
||||
scheduledFuture.cancel(true);
|
||||
scheduler.shutdown();
|
||||
|
||||
SocketDataMsg webSend1 = new SocketDataMsg();
|
||||
webSend1.setRequestId(SourceOperateCodeEnum.YJC_ALIGN.getValue());
|
||||
webSend1.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
|
||||
webSend1.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送
|
||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend1));
|
||||
// 将数据推送给前端
|
||||
this.sendAlignDataToWeb(param.getUserPageId());
|
||||
this.saveAlignData();
|
||||
|
||||
System.out.println("实时数据对齐校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始相序校验》》》》》》》》》》》》》》》》");
|
||||
this.clearData();
|
||||
|
||||
socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue());
|
||||
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
|
||||
DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam();
|
||||
phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()])));
|
||||
phaseSequenceParam.setDataType(Arrays.asList(
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.U1A.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1A.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I1A.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IRMS.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.V_UNBAN.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I_UNBAN.getCode()));
|
||||
phaseSequenceParam.setReadCount(this.getMaxReadCount(1));
|
||||
phaseSequenceParam.setIgnoreCount(0);
|
||||
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
|
||||
SocketDataMsg webSend1 = new SocketDataMsg();
|
||||
webSend1.setRequestId(SourceOperateCodeEnum.YJC_ALIGN.getValue());
|
||||
webSend1.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
|
||||
webSend1.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送
|
||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend1));
|
||||
|
||||
FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_XUJY;
|
||||
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
|
||||
// 实时数据开始计时
|
||||
SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
|
||||
System.out.println("实时数据对齐校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始相序校验》》》》》》》》》》》》》》》》");
|
||||
|
||||
socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue());
|
||||
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue());
|
||||
DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam();
|
||||
phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()])));
|
||||
phaseSequenceParam.setDataType(Arrays.asList(
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.U1A.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1A.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I1A.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IRMS.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.V_UNBAN.getCode(),
|
||||
DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I_UNBAN.getCode()));
|
||||
phaseSequenceParam.setReadCount(this.getMaxReadCount(1));
|
||||
phaseSequenceParam.setIgnoreCount(0);
|
||||
socketMsg.setData(JSON.toJSONString(phaseSequenceParam));
|
||||
|
||||
FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_XUJY;
|
||||
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
|
||||
// 实时数据开始计时
|
||||
SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -909,14 +916,14 @@ public class SocketContrastResponseService {
|
||||
adPair.setPlanId(FormalTestManager.currentTestPlan.getId());
|
||||
adPair.setDevMonitorId(key);
|
||||
adPair.setStdDevMonitorId(FormalTestManager.pairsIdMap.get(key));
|
||||
adPair.setNum(param.getNumMap().get(key));
|
||||
adPair.setNum(FormalTestManager.numMap.get(key));
|
||||
adPairList.add(adPair);
|
||||
}
|
||||
adPairService.saveBatch(adPairList);
|
||||
|
||||
// 原始数据入库
|
||||
baseDataInsert(false, singleMonitorAlignData.get(0), param.getNumMap(), code);
|
||||
baseDataInsert(true, singleMonitorAlignData.get(1), param.getNumMap(), code);
|
||||
baseDataInsert(false, FormalTestManager.devDataMap.values().stream().flatMap(List::stream).collect(Collectors.toList()), FormalTestManager.numMap, code);
|
||||
baseDataInsert(true, FormalTestManager.standardDevDataMap.values().stream().flatMap(List::stream).collect(Collectors.toList()), FormalTestManager.numMap, code);
|
||||
|
||||
// 进行误差计算
|
||||
List<DevLineTestResult> allResultList = detectionService.processing(
|
||||
@@ -925,7 +932,7 @@ public class SocketContrastResponseService {
|
||||
FormalTestManager.pairsIpMap,
|
||||
FormalTestManager.devIdMapComm,
|
||||
FormalTestManager.testItemMap.keySet().stream().collect(Collectors.toList()),
|
||||
errorSysId, FormalTestManager.dataRule, param.getNumMap(), code);
|
||||
errorSysId, FormalTestManager.dataRule, FormalTestManager.numMap, code);
|
||||
|
||||
this.clearData();
|
||||
|
||||
@@ -1245,10 +1252,11 @@ public class SocketContrastResponseService {
|
||||
/**
|
||||
* 模型一致性校验
|
||||
*
|
||||
* @param param
|
||||
* @param dataMap
|
||||
* @param param 预检测参数
|
||||
* @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);
|
||||
dataMap.forEach((k, v) -> {
|
||||
v.stream().forEach(devData1 -> {
|
||||
@@ -1274,25 +1282,42 @@ public class SocketContrastResponseService {
|
||||
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.SV_1_49.getCode());
|
||||
|
||||
// 如果是在是没有线电压谐波含有率、线电压间谐波含有率,勉强使其通过
|
||||
if (!descList.contains(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PV2_50.getCode())) {
|
||||
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1.getCode());
|
||||
allTestItem.remove(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 (!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());
|
||||
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.PV2_50.getCode());
|
||||
allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PSV_1_49.getCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (CollUtil.isNotEmpty(descList) && descList.containsAll(allTestItem)) {
|
||||
// 成功信息
|
||||
webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode());
|
||||
WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 1));
|
||||
} 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.setData(MsgUtil.getMsg(k, FormalTestManager.devNameMapComm, appendMsg));
|
||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend));
|
||||
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));
|
||||
}
|
||||
|
||||
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) {
|
||||
// 获取被检设备的额定电流
|
||||
@@ -1681,9 +1712,26 @@ public class SocketContrastResponseService {
|
||||
if (Objects.nonNull(localDateTime)) {
|
||||
|
||||
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()) {
|
||||
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())) {
|
||||
DevData.SqlDataDTO.ListDTO listDTO = sqlDataDTO.getList();
|
||||
ContrastNonHarmonicResult adNonHarmonicResult = new ContrastNonHarmonicResult();
|
||||
|
||||
@@ -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.service.DetectionDataDealService;
|
||||
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.po.DictData;
|
||||
import com.njcn.gather.system.dictionary.service.IDictDataService;
|
||||
import com.njcn.gather.system.pojo.enums.DicDataEnum;
|
||||
import com.njcn.gather.system.reg.service.ISysRegResService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
@@ -62,13 +59,11 @@ import java.util.stream.Stream;
|
||||
@RequiredArgsConstructor
|
||||
public class SocketDevResponseService {
|
||||
|
||||
private List<String> dataTypeList;
|
||||
private Set<String> dataTypeList;
|
||||
|
||||
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> 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 IPqDevSubService iPqDevSubService;
|
||||
@@ -76,24 +71,16 @@ public class SocketDevResponseService {
|
||||
private final IPqScriptDtlsService pqScriptDtlsService;
|
||||
private final DetectionServiceImpl detectionServiceImpl;
|
||||
private final DetectionDataDealService detectionDataDealService;
|
||||
private final ISysRegResService iSysRegResService;
|
||||
private final IPqScriptCheckDataService iPqScriptCheckDataService;
|
||||
private final ISysTestConfigService sysTestConfigService;
|
||||
private final SimAndDigHarmonicService adHarmonicService;
|
||||
private final IAdPlanService adPlanService;
|
||||
private final IPqScriptCheckDataService pqScriptCheckDataService;
|
||||
private final IDictDataService dictDataService;
|
||||
@Value("${phaseAngle.isEnable}")
|
||||
private Boolean isPhaseAngle;
|
||||
|
||||
|
||||
/**
|
||||
* 存储的装置相序数据
|
||||
*/
|
||||
List<DevData> devInfo = new ArrayList<>();
|
||||
|
||||
//Map<String, DevData> devDataMap = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 成功结束的测点
|
||||
*/
|
||||
@@ -825,12 +812,24 @@ public class SocketDevResponseService {
|
||||
icdCheckDataMap.clear();
|
||||
|
||||
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.setOperateCode(SourceOperateCodeEnum.VERIFY_MAPPING$01.getValue());
|
||||
Map<String, Object> map = new HashMap<>(2);
|
||||
map.put("dataType", dataTypeList);
|
||||
map.put("dataType", new ArrayList<>(dataTypeList));
|
||||
map.put("icdType", icdTypeList.get(0));
|
||||
socketMsg.setData(JSON.toJSONString(map));
|
||||
System.out.println("开始脚本与icd校验:++++++++++");
|
||||
@@ -841,28 +840,40 @@ public class SocketDevResponseService {
|
||||
String data = socketDataMsg.getData();
|
||||
IcdCheckData icdCheckData = JSON.parseObject(data, IcdCheckData.class);
|
||||
boolean isContinue = true;
|
||||
for (int i = 0; i < icdCheckData.getResultData().size(); i++) {
|
||||
IcdCheckData.ResultData item = icdCheckData.getResultData().get(i);
|
||||
Integer errorType = getErrorType(item.getDesc(), item.getPhaseResult());
|
||||
// 校验脚本与icd校验失败
|
||||
if (errorType.equals(0)) {
|
||||
isContinue = false;
|
||||
Map<String, Object> map = new HashMap<>(2);
|
||||
map.put("icdType", icdCheckData.getIcdType());
|
||||
DetectionCodeEnum anEnum = DetectionCodeEnum.getDetectionCodeByCode(item.getDesc());
|
||||
map.put("dataType", anEnum.getMessage());
|
||||
WebSocketVO<String> webSocketVO = new WebSocketVO<>();
|
||||
webSocketVO.setData(JSON.toJSONString(map));
|
||||
webSocketVO.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
|
||||
webSocketVO.setOperateCode(SourceOperateCodeEnum.VERIFY_MAPPING$01.getValue());
|
||||
webSocketVO.setCode(SourceResponseCodeEnum.FAIL.getCode());
|
||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSocketVO));
|
||||
CnSocketUtil.quitSend(param);
|
||||
break;
|
||||
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++) {
|
||||
IcdCheckData.ResultData item = icdCheckData.getResultData().get(i);
|
||||
Integer errorType = getErrorType(item.getDesc(), item.getPhaseResult());
|
||||
// 校验脚本与icd校验失败
|
||||
if (errorType.equals(0)) {
|
||||
isContinue = false;
|
||||
Map<String, Object> map = new HashMap<>(2);
|
||||
map.put("icdType", icdCheckData.getIcdType());
|
||||
DetectionCodeEnum anEnum = DetectionCodeEnum.getDetectionCodeByCode(item.getDesc());
|
||||
map.put("dataType", anEnum.getMessage());
|
||||
WebSocketVO<String> webSocketVO = new WebSocketVO<>();
|
||||
webSocketVO.setData(JSON.toJSONString(map));
|
||||
webSocketVO.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
|
||||
webSocketVO.setOperateCode(SourceOperateCodeEnum.VERIFY_MAPPING$01.getValue());
|
||||
webSocketVO.setCode(SourceResponseCodeEnum.FAIL.getCode());
|
||||
WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSocketVO));
|
||||
} else {
|
||||
icdCheckDataMap.put(icdCheckData.getIcdType(), icdCheckData);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
isContinue = false;
|
||||
}
|
||||
|
||||
icdCheckDataMap.put(icdCheckData.getIcdType(), icdCheckData);
|
||||
if (isContinue) {
|
||||
//System.out.println("icdCheckDataMap.size()="+icdCheckDataMap.size()+",icdTypeList.size()="+icdTypeList.size());
|
||||
if (icdCheckDataMap.size() == icdTypeList.size()) {
|
||||
@@ -940,8 +951,21 @@ public class SocketDevResponseService {
|
||||
// 发送下一个脚本与icd校验
|
||||
String icdType = icdTypeList.stream().filter(it -> !icdCheckDataMap.containsKey(it)).findFirst().orElse(null);
|
||||
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.put("dataType", dataTypeList);
|
||||
map.put("dataType", new ArrayList<>(dataTypeList));
|
||||
map.put("icdType", icdType);
|
||||
socketMsg.setData(JSON.toJSONString(map));
|
||||
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
|
||||
@@ -950,6 +974,23 @@ public class SocketDevResponseService {
|
||||
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;
|
||||
@@ -1299,7 +1340,7 @@ public class SocketDevResponseService {
|
||||
checkDataParam.setIsValueTypeName(false);
|
||||
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);
|
||||
}
|
||||
successComm.clear();
|
||||
@@ -1505,9 +1546,10 @@ public class SocketDevResponseService {
|
||||
|
||||
private String devMessage(String type,
|
||||
List<DevData.SqlDataDTO> data,
|
||||
List<DevData.SqlDataDTO> dataPhase) {
|
||||
List<DevData.SqlDataDTO> dataPhase,
|
||||
boolean angleCheck) {
|
||||
StringBuffer str = new StringBuffer();
|
||||
if (isPhaseAngle) {
|
||||
if (angleCheck) {
|
||||
if (CollUtil.isNotEmpty(data) && CollUtil.isNotEmpty(dataPhase)) {
|
||||
if (data.size() == dataPhase.size()) {
|
||||
DevData.SqlDataDTO.ListDTO dto = data.get(0).getList();
|
||||
@@ -1572,7 +1614,13 @@ public class SocketDevResponseService {
|
||||
}
|
||||
compareDev.setDevName(devName);
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -1591,20 +1639,19 @@ public class SocketDevResponseService {
|
||||
SourceCompareDev compareDev,
|
||||
String desc,
|
||||
List<SourceIssue.ChannelListDTO> channelList,
|
||||
String name
|
||||
|
||||
) {
|
||||
String name,
|
||||
boolean angleCheck) {
|
||||
//源信息
|
||||
Map<String, SourceIssue.ChannelListDTO> sourceMap = channelList.stream()
|
||||
.collect(Collectors.toMap(x -> x.getChannelType(), Function.identity()));
|
||||
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,
|
||||
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,
|
||||
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.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;
|
||||
}
|
||||
|
||||
@@ -1616,7 +1663,7 @@ public class SocketDevResponseService {
|
||||
* @param devPhase 装置返回相角数据
|
||||
* @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 isPhase = false;
|
||||
|
||||
@@ -1625,7 +1672,7 @@ public class SocketDevResponseService {
|
||||
BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95),
|
||||
BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05));
|
||||
}
|
||||
if (isPhaseAngle) {
|
||||
if (angleCheck) {
|
||||
if (ObjectUtil.isNotNull(devPhase)) {
|
||||
isPhase = phaseBoolean(channelListDTO, devPhase);
|
||||
}
|
||||
|
||||
@@ -43,7 +43,8 @@ public enum DetectionCodeEnum {
|
||||
STAR("Star","星型接线"),
|
||||
DELTA("Delta","角型接线"),
|
||||
|
||||
REAL_PREFIX("real$", "实时数据前缀");
|
||||
REAL_PREFIX("real$", "实时数据前缀"),
|
||||
AVG_PREFIX("avg$", "统计数据前缀");
|
||||
|
||||
private final String code;
|
||||
private final String message;
|
||||
|
||||
@@ -42,10 +42,5 @@ public class ContrastDetectionParam {
|
||||
*/
|
||||
private List<Boolean> testItemList;
|
||||
|
||||
/**
|
||||
* 第几次监测 key为设备监测点id,value为第几次监测
|
||||
*/
|
||||
private Map<String,Integer> numMap;
|
||||
|
||||
private String userId;
|
||||
}
|
||||
|
||||
@@ -74,9 +74,4 @@ public class PreDetectionParam {
|
||||
* 检测项列表。第一个元素为预检测、第二个元素为系数校准、第三个元素为正式检测
|
||||
*/
|
||||
private List<Boolean> testItemList;
|
||||
|
||||
/**
|
||||
* 第几次监测 key为设备监测点id,value为第几次监测
|
||||
*/
|
||||
private Map<String, Integer> numMap;
|
||||
}
|
||||
|
||||
@@ -57,5 +57,7 @@ public class AlignDataVO {
|
||||
private Double ucStdDev;
|
||||
|
||||
private Double utStdDev;
|
||||
|
||||
private String unit;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.util.DetectionUtil;
|
||||
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.po.PqErrSysDtls;
|
||||
import com.njcn.gather.err.pojo.vo.ErrDtlsCheckDataVO;
|
||||
@@ -62,6 +64,7 @@ public class DetectionServiceImpl {
|
||||
private final DetectionDataDealService detectionDataDealService;
|
||||
private final ISysTestConfigService sysTestConfigService;
|
||||
private final IPqMonitorService pqMonitorService;
|
||||
private final IPqDevService pqDevService;
|
||||
|
||||
public static final String TYPE_A = "A";
|
||||
public static final String TYPE_B = "B";
|
||||
@@ -119,6 +122,8 @@ public class DetectionServiceImpl {
|
||||
*/
|
||||
case FREQ:
|
||||
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_DUR:
|
||||
return isVoltageQualified(dev, devIdMapComm, errDtlsCheckData, sourceIssue, dataRule, code, oneConfig.getScale());
|
||||
case P:
|
||||
return isQualified(dev, devIdMapComm, errDtlsCheckData, P, sourceIssue, dataRule, code, oneConfig.getScale());
|
||||
default:
|
||||
return isUnknownQualified(dev, devIdMapComm, errDtlsCheckData, sourceIssue, dataRule, code, oneConfig.getScale());
|
||||
}
|
||||
@@ -1127,6 +1130,7 @@ public class DetectionServiceImpl {
|
||||
|
||||
}
|
||||
map.forEach((typeKey, typeValue) -> {
|
||||
typeValue.remove(0.0);
|
||||
typeValue.forEach((key, value) -> {
|
||||
value.sort(Comparator.comparing(Double::doubleValue).reversed());
|
||||
if (CollUtil.isNotEmpty(value)) {
|
||||
@@ -1568,7 +1572,8 @@ public class DetectionServiceImpl {
|
||||
boolean isStar = DetectionCodeEnum.STAR.getCode().equals(pqMonitor.getConnection());
|
||||
boolean isDelta = DetectionCodeEnum.DELTA.getCode().equals(pqMonitor.getConnection());
|
||||
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();
|
||||
}
|
||||
Double fIn = pqMonitorService.getRatedCurrent(devMonitorId);
|
||||
@@ -1599,7 +1604,8 @@ public class DetectionServiceImpl {
|
||||
break;
|
||||
case VRMS:
|
||||
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;
|
||||
case IRMS:
|
||||
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;
|
||||
case V2_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;
|
||||
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;
|
||||
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;
|
||||
case SV_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;
|
||||
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;
|
||||
case UNKNOWN_ERROR:
|
||||
break;
|
||||
@@ -1638,6 +1644,37 @@ public class DetectionServiceImpl {
|
||||
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 type U或I、用来区分电压或电流
|
||||
* @param harmonicFlag 1:间谐波,2:谐波
|
||||
* @param isDelta 是否角型接法
|
||||
* @param isUseDelta 是否使用角型接线的一些指标
|
||||
* @param dataRule 数据处理原则
|
||||
* @param num 第几次检测
|
||||
* @param code 结果表code
|
||||
@@ -1738,7 +1775,7 @@ public class DetectionServiceImpl {
|
||||
String type,
|
||||
Double fData,
|
||||
Integer harmonicFlag,
|
||||
boolean isDelta,
|
||||
boolean isUseDelta,
|
||||
DictDataEnum dataRule,
|
||||
Integer num,
|
||||
String code,
|
||||
@@ -1749,17 +1786,17 @@ public class DetectionServiceImpl {
|
||||
String harmCode = "";
|
||||
if (U.equals(type)) {
|
||||
fundCode = DetectionCodeEnum.U1.getCode();
|
||||
if (isDelta) {
|
||||
if (isUseDelta) {
|
||||
fundCode = DetectionCodeEnum.PU1.getCode();
|
||||
}
|
||||
if (harmonicFlag == 1) {
|
||||
harmCode = DetectionCodeEnum.SV_1_49.getCode();
|
||||
if (isDelta) {
|
||||
if (isUseDelta) {
|
||||
harmCode = DetectionCodeEnum.PSV_1_49.getCode();
|
||||
}
|
||||
} else {
|
||||
harmCode = DetectionCodeEnum.V2_50.getCode();
|
||||
if (isDelta) {
|
||||
if (isUseDelta) {
|
||||
harmCode = DetectionCodeEnum.PV2_50.getCode();
|
||||
}
|
||||
}
|
||||
@@ -1831,25 +1868,12 @@ public class DetectionServiceImpl {
|
||||
List<DevData.SqlDataDTO> devSqlData = dev.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());
|
||||
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());
|
||||
|
||||
// 如果角型接法中,不存在线电压有效值,则取相电压有效值进行计算
|
||||
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()))
|
||||
.map(x -> x.getA().doubleValue())
|
||||
.collect(Collectors.toList()));
|
||||
@@ -1993,31 +2017,32 @@ public class DetectionServiceImpl {
|
||||
|
||||
Optional<DevData.SqlDataDTO> first1 = Optional.empty();
|
||||
Optional<DevData.SqlDataDTO> first2 = Optional.empty();
|
||||
|
||||
if (CollUtil.isNotEmpty(devSqlData) && CollUtil.isNotEmpty(standardDevSqlData)) {
|
||||
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();
|
||||
}
|
||||
// 如果角型接法中,不存在线电压谐波电压基波有效值,则取相电压谐波电压基波有效值进行计算
|
||||
if (!first1.isPresent()) {
|
||||
if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
|
||||
first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
|
||||
}
|
||||
} else {
|
||||
// 防止出现有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)) {
|
||||
first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
|
||||
}
|
||||
}
|
||||
if (!first2.isPresent()) {
|
||||
if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
|
||||
first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
|
||||
}
|
||||
} else {
|
||||
// 防止出现有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)) {
|
||||
first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
|
||||
}
|
||||
}
|
||||
// // 如果角型接法中,不存在线电压谐波电压基波有效值,则取相电压谐波电压基波有效值进行计算
|
||||
// if (!first1.isPresent()) {
|
||||
// if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
|
||||
// first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
|
||||
// }
|
||||
// } else {
|
||||
// // 防止出现有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)) {
|
||||
// first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
|
||||
// }
|
||||
// }
|
||||
// if (!first2.isPresent()) {
|
||||
// if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) {
|
||||
// first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
|
||||
// }
|
||||
// } else {
|
||||
// // 防止出现有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)) {
|
||||
// first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst();
|
||||
// }
|
||||
// }
|
||||
|
||||
DevData.SqlDataDTO fund1 = 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> stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> x.getDesc().equals(harmCode)).collect(Collectors.toList());
|
||||
|
||||
// 如果角型接法中,不存在线电压谐波电压含有率,则取相电压谐波电压含有率进行计算
|
||||
if (CollUtil.isEmpty(devHarmList)) {
|
||||
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());
|
||||
}
|
||||
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());
|
||||
}
|
||||
}
|
||||
if (CollUtil.isEmpty(stdDevHarmList)) {
|
||||
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());
|
||||
}
|
||||
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());
|
||||
}
|
||||
}
|
||||
// // 如果角型接法中,不存在线电压谐波电压含有率,则取相电压谐波电压含有率进行计算
|
||||
// if (CollUtil.isEmpty(devHarmList)) {
|
||||
// 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());
|
||||
// }
|
||||
// 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());
|
||||
// }
|
||||
// }
|
||||
// if (CollUtil.isEmpty(stdDevHarmList)) {
|
||||
// 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());
|
||||
// }
|
||||
// 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());
|
||||
// }
|
||||
// }
|
||||
|
||||
if (CollUtil.isNotEmpty(devHarmList) && CollUtil.isNotEmpty(stdDevHarmList)) {
|
||||
DevData.SqlDataHarmDTO devHarm = devHarmList.get(0);
|
||||
|
||||
@@ -385,7 +385,6 @@ public class PreDetectionServiceImpl implements PreDetectionService {
|
||||
PreDetectionParam preDetectionParam = new PreDetectionParam();
|
||||
preDetectionParam.setUserPageId(param.getLoginName());
|
||||
preDetectionParam.setTestItemList(param.getTestItemList());
|
||||
preDetectionParam.setNumMap(param.getNumMap());
|
||||
preDetectionParam.setDevIds(param.getDevIds());
|
||||
preDetectionParam.setUserId(param.getUserId());
|
||||
WebServiceManager.addPreDetectionParam(param.getLoginName(), preDetectionParam);
|
||||
|
||||
@@ -90,7 +90,7 @@ public class FormalTestManager {
|
||||
public static PatternEnum patternEnum;
|
||||
|
||||
/**
|
||||
* 比对式检测-检测项。key为检测项id,value为检测项code
|
||||
* 比对式检测-检测项。key为检测项code,value为检测项id
|
||||
*/
|
||||
public static Map<String, String> testItemMap = new HashMap<>();
|
||||
|
||||
@@ -123,4 +123,9 @@ public class FormalTestManager {
|
||||
* 是否要移除和通信模块的socket连接
|
||||
*/
|
||||
public static Boolean isRemoveSocket = true;
|
||||
|
||||
/**
|
||||
* 第几次监测 key为设备监测点id,value为第几次监测
|
||||
*/
|
||||
public static Map<String, Integer> numMap = new HashMap<>();
|
||||
}
|
||||
|
||||
@@ -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] + "路\"";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取消息
|
||||
*
|
||||
* @param monitorId 监测点id
|
||||
* @param devMap key为设备ip,value为设备名称
|
||||
* @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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +126,6 @@ public class NettyClient {
|
||||
PreDetectionParam preDetectionParam = new PreDetectionParam();
|
||||
preDetectionParam.setUserPageId(param.getLoginName());
|
||||
preDetectionParam.setTestItemList(param.getTestItemList());
|
||||
preDetectionParam.setNumMap(param.getNumMap());
|
||||
preDetectionParam.setDevIds(param.getDevIds());
|
||||
preDetectionParam.setUserId(param.getUserId());
|
||||
NettyContrastClientHandler handler = new NettyContrastClientHandler(preDetectionParam, socketContrastResponseService);
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
<result column="Dev_Chns" property="devChns"/>
|
||||
<result column="Dev_Volt" property="devVolt"/>
|
||||
<result column="Dev_Curr" property="devCurr"/>
|
||||
<result column="Angle" property="angle"/>
|
||||
<result column="Use_Phase_Index" property="usePhaseIndex"/>
|
||||
|
||||
<collection
|
||||
property="monitorList"
|
||||
@@ -35,7 +37,9 @@
|
||||
p.name as icdType,
|
||||
t.Dev_Chns,
|
||||
t.Dev_Volt,
|
||||
t.Dev_Curr
|
||||
t.Dev_Curr,
|
||||
p.Angle,
|
||||
p.Use_Phase_Index
|
||||
FROM
|
||||
pq_dev d
|
||||
inner join pq_dev_type t on d.Dev_Type = t.id
|
||||
|
||||
@@ -15,13 +15,8 @@
|
||||
<result column="Dev_Chns" property="devChns"/>
|
||||
<result column="Dev_Volt" property="devVolt"/>
|
||||
<result column="Dev_Curr" property="devCurr"/>
|
||||
|
||||
<!-- <collection-->
|
||||
<!-- property="monitorList"-->
|
||||
<!-- column="{ devId = Id}"-->
|
||||
<!-- select="com.njcn.gather.monitor.mapper.PqMonitorMapper.selectMonitorInfo"-->
|
||||
<!-- >-->
|
||||
<!-- </collection>-->
|
||||
<result column="Angle" property="angle"/>
|
||||
<result column="Use_Phase_Index" property="usePhaseIndex"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="listStandardDevPreDetection" resultMap="standardDevResultMap">
|
||||
@@ -36,7 +31,9 @@
|
||||
icd_path.Name as icdType,
|
||||
dev_type.Dev_Chns,
|
||||
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
|
||||
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
|
||||
|
||||
@@ -54,6 +54,18 @@ public class PreDetection {
|
||||
@JSONField(name = "icdType")
|
||||
private String icdType;
|
||||
|
||||
/**
|
||||
* 是否支持相角。0:不支持,1:支持
|
||||
*/
|
||||
@JSONField(name = "angle")
|
||||
private Integer angle;
|
||||
|
||||
/**
|
||||
* 角型接线时是否使用相别的指标来进行检测,0表示否,1表示是
|
||||
*/
|
||||
@JSONField(name = "usePhaseIndex")
|
||||
private Integer usePhaseIndex;
|
||||
|
||||
/**
|
||||
* 装置识别码(3ds加密)
|
||||
*/
|
||||
|
||||
@@ -144,10 +144,10 @@ public class PqErrSysController extends BaseController {
|
||||
@GetMapping("/getTestItems")
|
||||
@ApiOperation("根据误差体系id获取测试项")
|
||||
@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");
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,5 +86,5 @@ public interface IPqErrSysService extends IService<PqErrSys> {
|
||||
* @param id 误差体系id
|
||||
* @return
|
||||
*/
|
||||
List<Map<String, String>> getTestItems(String id);
|
||||
Map<String, String> getTestItems(String id);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.gather.err.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.text.StrPool;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@@ -128,7 +129,7 @@ public class PqErrSysServiceImpl extends ServiceImpl<PqErrSysMapper, PqErrSys> i
|
||||
@Override
|
||||
public List<Map<String, Object>> listAllPqErrSys() {
|
||||
List<PqErrSys> pqErrSysList = this.lambdaQuery()
|
||||
.eq(PqErrSys::getEnable,DataStateEnum.ENABLE.getCode())
|
||||
.eq(PqErrSys::getEnable, DataStateEnum.ENABLE.getCode())
|
||||
.eq(PqErrSys::getState, DataStateEnum.ENABLE.getCode()).list();
|
||||
List<Map<String, Object>> result = pqErrSysList.stream().map(pqErrSys -> {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
@@ -209,24 +210,36 @@ public class PqErrSysServiceImpl extends ServiceImpl<PqErrSysMapper, PqErrSys> i
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查重复
|
||||
*
|
||||
* @param param 检测参数
|
||||
* @param param 检测参数
|
||||
* @param isExcludeSelf 是否排除自己
|
||||
*/
|
||||
private void checkRepeat(PqErrSysParam param, boolean isExcludeSelf) {
|
||||
QueryWrapper<PqErrSys> wrapper = new QueryWrapper<>();
|
||||
wrapper.eq("Standard_Name", param.getStandardName())
|
||||
.eq("Standard_Time",param.getStandardTime()+"-01-01")
|
||||
.eq("Dev_Level",param.getDevLevel())
|
||||
.eq("Standard_Time", param.getStandardTime() + "-01-01")
|
||||
.eq("Dev_Level", param.getDevLevel())
|
||||
.eq("state", DataStateEnum.ENABLE.getCode());
|
||||
if (isExcludeSelf) {
|
||||
if(param instanceof PqErrSysParam.UpdateParam){
|
||||
if (param instanceof PqErrSysParam.UpdateParam) {
|
||||
wrapper.ne("Id", ((PqErrSysParam.UpdateParam) param).getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1523,21 +1523,28 @@ public class ResultServiceImpl implements IResultService {
|
||||
allResultList.addAll(contrastHarmonicResults);
|
||||
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));
|
||||
devMonitorIdMap.forEach((devMonitorId, resultList) -> {
|
||||
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());
|
||||
String[] split = devMonitorId.split(CnSocketUtil.SPLIT_TAG);
|
||||
chnMap.put(split[1], numList);
|
||||
|
||||
if (ObjectUtil.isNull(queryParam.getNum())) {
|
||||
formContentVO.setCheckNum(maxNum);
|
||||
} else {
|
||||
formContentVO.setCheckNum(queryParam.getNum());
|
||||
}
|
||||
});
|
||||
|
||||
if (ObjectUtil.isNull(queryParam.getNum())) {
|
||||
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 {
|
||||
formContentVO.setCheckNum(queryParam.getNum());
|
||||
}
|
||||
|
||||
formContentVO.setChnMap(chnMap);
|
||||
return formContentVO;
|
||||
}
|
||||
@@ -1553,19 +1560,31 @@ public class ResultServiceImpl implements IResultService {
|
||||
List<String> adTypeList = childDictTreeList.stream().map(DictTree::getId).collect(Collectors.toList());
|
||||
DictTree dictTree = dictTreeList.get(0);
|
||||
|
||||
contrastResultVO.setResultMap(this.getResultMap(dictTree, adTypeList, queryParam.getDeviceId() + CnSocketUtil.SPLIT_TAG + queryParam.getChnNum(), queryParam.getNum(), String.valueOf(plan.getCode())));
|
||||
contrastResultVO.setRawDataMap(this.getRawDataMap(dictTree, adTypeList, queryParam.getDeviceId() + CnSocketUtil.SPLIT_TAG + queryParam.getChnNum(), queryParam.getNum(), String.valueOf(plan.getCode())));
|
||||
String unit = StorageUtil.unit(dictTree.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;
|
||||
}
|
||||
|
||||
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<>();
|
||||
|
||||
List<ContrastNonHarmonicResult> contrastNonHarmonicResults = contrastNonHarmonicService.listAllResultData(code, num, monitorId, adTypeList);
|
||||
List<ContrastHarmonicResult> contrastHarmonicResults = contrastHarmonicService.listAllResultData(code, num, monitorId, adTypeList);
|
||||
|
||||
String unit = StorageUtil.unit(dictTree.getCode());
|
||||
|
||||
if (CollUtil.isNotEmpty(contrastNonHarmonicResults)) {
|
||||
ContrastNonHarmonicResult contrastNonHarmonicResult = contrastNonHarmonicResults.get(0);
|
||||
List<RawResultDataVO.DetectionData> aList = JSON.parseArray(contrastNonHarmonicResult.getAValue() + "", RawResultDataVO.DetectionData.class);
|
||||
@@ -1612,22 +1631,13 @@ public class ResultServiceImpl implements IResultService {
|
||||
List<Double> harmonicNum = null;
|
||||
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());
|
||||
unit = "%";
|
||||
if (DicDataEnum.HI.getCode().equals(dictTree.getCode())) {
|
||||
unit = "A";
|
||||
}
|
||||
}
|
||||
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());
|
||||
unit = "%";
|
||||
if (DicDataEnum.HSI.getCode().equals(dictTree.getCode())) {
|
||||
unit = "A";
|
||||
}
|
||||
}
|
||||
for (Double n : harmonicNum) {
|
||||
try {
|
||||
int i = StorageUtil.isHarmOrInHarm(n).intValue();
|
||||
String finalUnit = unit;
|
||||
|
||||
Field fieldA = contrastHarmonicResult.getClass().getDeclaredField("aValue" + i);
|
||||
fieldA.setAccessible(true);
|
||||
@@ -1645,7 +1655,7 @@ public class ResultServiceImpl implements IResultService {
|
||||
for (int j = 0; j < aList.size(); j++) {
|
||||
RawResultDataVO dataVO = new RawResultDataVO();
|
||||
dataVO.setHarmNum(n);
|
||||
dataVO.setUnit(finalUnit);
|
||||
dataVO.setUnit(unit);
|
||||
dataVO.setDataA(aList.get(j));
|
||||
dataVO.setDataB(bList.get(j));
|
||||
dataVO.setDataC(cList.get(j));
|
||||
@@ -1664,35 +1674,41 @@ public class ResultServiceImpl implements IResultService {
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
private Map<String, List<AlignDataVO.RawData>> getRawDataMap(DictTree dictTree, List<String> adTypeList, String monitorId, Integer num, String code) {
|
||||
Map<String, List<AlignDataVO.RawData>> resultMap = new LinkedHashMap<>();
|
||||
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>> rawMap = new LinkedHashMap<>();
|
||||
|
||||
List<ContrastNonHarmonicResult> devNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(code, num, 0, monitorId, adTypeList);
|
||||
List<ContrastNonHarmonicResult> stdDevNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(code, num, 1, monitorId, adTypeList);
|
||||
List<ContrastHarmonicResult> devHarmonicRawDataList = contrastHarmonicService.listAllRawData(code, num, 0, 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<>();
|
||||
for (int i = 0; i < devNonHarmonicRawDataList.size(); i++) {
|
||||
AlignDataVO.RawData rawDataVO = new AlignDataVO.RawData();
|
||||
rawDataVO.setUnit(unit);
|
||||
ContrastNonHarmonicResult contrastNonHarmonicResult = devNonHarmonicRawDataList.get(i);
|
||||
rawDataVO.setTimeDev(String.valueOf(contrastNonHarmonicResult.getTimeId()));
|
||||
rawDataVO.setUaDev(getValue(contrastNonHarmonicResult.getAValue()));
|
||||
rawDataVO.setTimeDev(contrastNonHarmonicResult.getTimeId().format(dtf));
|
||||
|
||||
rawDataVO.setUbDev(getValue(contrastNonHarmonicResult.getBValue()));
|
||||
rawDataVO.setUcDev(getValue(contrastNonHarmonicResult.getCValue()));
|
||||
rawDataVO.setUtDev(getValue(contrastNonHarmonicResult.getTValue()));
|
||||
|
||||
contrastNonHarmonicResult = stdDevNonHarmonicRawDataList.get(i);
|
||||
rawDataVO.setTimeStdDev(String.valueOf(contrastNonHarmonicResult.getTimeId()));
|
||||
rawDataVO.setUaStdDev(getValue(contrastNonHarmonicResult.getAValue()));
|
||||
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.setUcStdDev(getValue(contrastNonHarmonicResult.getCValue()));
|
||||
}
|
||||
|
||||
rawDataVO.setUbStdDev(getValue(contrastNonHarmonicResult.getBValue()));
|
||||
rawDataVO.setUcStdDev(getValue(contrastNonHarmonicResult.getCValue()));
|
||||
rawDataVO.setUtStdDev(getValue(contrastNonHarmonicResult.getTValue()));
|
||||
|
||||
rawDataVOList.add(rawDataVO);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(rawDataVOList)) {
|
||||
resultMap.put(dictTree.getName(), rawDataVOList);
|
||||
rawMap.put(dictTree.getName(), rawDataVOList);
|
||||
}
|
||||
|
||||
if (CollUtil.isNotEmpty(devHarmonicRawDataList) && CollUtil.isNotEmpty(stdDevHarmonicRawDataList)) {
|
||||
@@ -1708,11 +1724,12 @@ public class ResultServiceImpl implements IResultService {
|
||||
int i = StorageUtil.isHarmOrInHarm(n).intValue();
|
||||
for (int j = 0; j < devHarmonicRawDataList.size(); j++) {
|
||||
AlignDataVO.RawData rawDataVO = new AlignDataVO.RawData();
|
||||
rawDataVO.setUnit(unit);
|
||||
ContrastHarmonicResult devHarmonicResult = devHarmonicRawDataList.get(j);
|
||||
ContrastHarmonicResult stdDevHarmonicResult = stdDevHarmonicRawDataList.get(j);
|
||||
|
||||
rawDataVO.setTimeDev(String.valueOf(devHarmonicResult.getTimeId()));
|
||||
rawDataVO.setTimeStdDev(String.valueOf(stdDevHarmonicResult.getTimeId()));
|
||||
rawDataVO.setTimeDev(devHarmonicResult.getTimeId().format(dtf));
|
||||
rawDataVO.setTimeStdDev(stdDevHarmonicResult.getTimeId().format(dtf));
|
||||
|
||||
try {
|
||||
Field fieldA = devHarmonicResult.getClass().getDeclaredField("aValue" + i);
|
||||
@@ -1751,11 +1768,11 @@ public class ResultServiceImpl implements IResultService {
|
||||
}
|
||||
rawDataVOList1.add(rawDataVO);
|
||||
}
|
||||
resultMap.put(String.valueOf(n), rawDataVOList1);
|
||||
rawMap.put(String.valueOf(n), rawDataVOList1);
|
||||
}
|
||||
}
|
||||
|
||||
return resultMap;
|
||||
return rawMap;
|
||||
}
|
||||
|
||||
private Double getValue(String value) {
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.njcn.gather.script.pojo.po.SourceIssue;
|
||||
import com.njcn.gather.script.pojo.vo.PqScriptDtlDataVO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author caozehui
|
||||
@@ -130,9 +131,11 @@ public interface IPqScriptDtlsService extends IService<PqScriptDtls> {
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
List<String> getScriptToIcdCheckInfo(PreDetectionParam param);
|
||||
Set<String> getScriptToIcdCheckInfo(PreDetectionParam param);
|
||||
|
||||
/**
|
||||
* 根据脚本id获取脚本详情数据
|
||||
*
|
||||
* @param scriptId 脚本id
|
||||
*/
|
||||
List<PqScriptDtlDataVO> getScriptDtlsDataList(String scriptId);
|
||||
|
||||
@@ -719,7 +719,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getScriptToIcdCheckInfo(PreDetectionParam param) {
|
||||
public Set<String> getScriptToIcdCheckInfo(PreDetectionParam param) {
|
||||
PqScriptIssueParam issueParam = new PqScriptIssueParam();
|
||||
issueParam.setSourceId(param.getSourceId());
|
||||
issueParam.setDevIds(param.getDevIds());
|
||||
@@ -730,7 +730,7 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
sourceIssues.forEach(x -> {
|
||||
dataTypeSet.addAll(x.getDevValueTypeList());
|
||||
});
|
||||
return new ArrayList<>(dataTypeSet);
|
||||
return dataTypeSet;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user