重新计算、更换误差体系接口调整,cp95处理原则调整、检测结果原始数据调整

This commit is contained in:
caozehui
2025-11-26 18:33:35 +08:00
parent 3f94012faa
commit 68d96e67aa
3 changed files with 74 additions and 64 deletions

View File

@@ -1567,6 +1567,9 @@ public class DetectionServiceImpl {
private Map<String, Integer> singleMonitorProcessing(List<DevData> devDataList, List<DevData> standardDevDataList, Map<String, String> devIdMapComm, List<String> testItemCodeList, String errorSysId, DictDataEnum dataRule, Integer num, String code, Integer waveNum, DataSourceEnum dataSourceEnum) {
Map<String, Integer> resultMap = new HashMap<>();
if (CollUtil.isNotEmpty(devDataList) && CollUtil.isNotEmpty(standardDevDataList) && CollUtil.isNotEmpty(testItemCodeList)) {
devDataList = devDataList.stream().sorted(Comparator.comparing(DevData::getTime)).collect(Collectors.toList());
standardDevDataList = standardDevDataList.stream().sorted(Comparator.comparing(DevData::getTime)).collect(Collectors.toList());
// 处理谐波数据
SysTestConfig oneConfig = sysTestConfigService.getOneConfig();
String[] split1 = devDataList.get(0).getId().split("_");
String devMonitorId = devIdMapComm.get(split1[0]) + "_" + split1[1];
@@ -2196,66 +2199,66 @@ public class DetectionServiceImpl {
.map(x -> x.getT().doubleValue())
.collect(Collectors.toList()));
}
List<Integer> aIdxs = DetectionUtil.sort(aDev, false);
List<Integer> bIdxs = DetectionUtil.sort(bDev, false);
List<Integer> cIdxs = DetectionUtil.sort(cDev, false);
List<Integer> tIdxs = DetectionUtil.sort(tDev, false);
List<Integer> aIdxs = DetectionUtil.sort(aStandardDev, false);
List<Integer> bIdxs = DetectionUtil.sort(bStandardDev, false);
List<Integer> cIdxs = DetectionUtil.sort(cStandardDev, false);
List<Integer> tIdxs = DetectionUtil.sort(tStandardDev, false);
switch (dataRule) {
case SECTION_VALUE:
if (aDev.size() > 2) {
aDev.remove(aIdxs.get(0));
aDev.remove(aIdxs.get(aIdxs.size() - 1));
List<Double> newArray = DetectionUtil.getNewArray(aStandardDev, aIdxs.subList(1, aIdxs.size() - 1));
aStandardDev.clear();
aStandardDev.addAll(newArray);
if (aStandardDev.size() > 2) {
aStandardDev.remove(aIdxs.get(0));
aStandardDev.remove(aIdxs.get(aIdxs.size() - 1));
List<Double> newArray = DetectionUtil.getNewArray(aDev, aIdxs.subList(1, aIdxs.size() - 1));
aDev.clear();
aDev.addAll(newArray);
}
if (bDev.size() > 2) {
bDev.remove(bIdxs.get(0));
bDev.remove(bIdxs.get(bIdxs.size() - 1));
List<Double> newArray = DetectionUtil.getNewArray(bStandardDev, bIdxs.subList(1, bIdxs.size() - 1));
bStandardDev.clear();
bStandardDev.addAll(newArray);
if (bStandardDev.size() > 2) {
bStandardDev.remove(bIdxs.get(0));
bStandardDev.remove(bIdxs.get(bIdxs.size() - 1));
List<Double> newArray = DetectionUtil.getNewArray(bDev, bIdxs.subList(1, bIdxs.size() - 1));
bDev.clear();
bDev.addAll(newArray);
}
if (cDev.size() > 2) {
cDev.remove(cIdxs.get(0));
cDev.remove(cIdxs.get(cIdxs.size() - 1));
List<Double> newArray = DetectionUtil.getNewArray(cStandardDev, cIdxs.subList(1, cIdxs.size() - 1));
cStandardDev.clear();
cStandardDev.addAll(newArray);
if (cStandardDev.size() > 2) {
cStandardDev.remove(cIdxs.get(0));
cStandardDev.remove(cIdxs.get(cIdxs.size() - 1));
List<Double> newArray = DetectionUtil.getNewArray(cDev, cIdxs.subList(1, cIdxs.size() - 1));
cDev.clear();
cDev.addAll(newArray);
}
if (tDev.size() > 2) {
tDev.remove(tIdxs.get(0));
tDev.remove(tIdxs.get(tIdxs.size() - 1));
List<Double> newArray = DetectionUtil.getNewArray(tStandardDev, tIdxs.subList(1, tIdxs.size() - 1));
tStandardDev.clear();
tStandardDev.addAll(newArray);
if (tStandardDev.size() > 2) {
tStandardDev.remove(tIdxs.get(0));
tStandardDev.remove(tIdxs.get(tIdxs.size() - 1));
List<Double> newArray = DetectionUtil.getNewArray(tDev, tIdxs.subList(1, tIdxs.size() - 1));
tDev.clear();
tDev.addAll(newArray);
}
break;
case CP95_VALUE:
if (CollUtil.isNotEmpty(aDev)) {
int cp95Idx = DetectionUtil.getCP95Idx(aDev);
aDev = Collections.singletonList(aDev.get(cp95Idx));
if (CollUtil.isNotEmpty(aStandardDev)) {
int cp95Idx = DetectionUtil.getCP95Idx(aStandardDev);
aStandardDev = Collections.singletonList(aStandardDev.get(cp95Idx));
aDev = Collections.singletonList(aDev.get(aIdxs.get(cp95Idx)));
}
if (CollUtil.isNotEmpty(bDev)) {
int cp95Idx = DetectionUtil.getCP95Idx(bDev);
bDev = Collections.singletonList(bDev.get(cp95Idx));
if (CollUtil.isNotEmpty(bStandardDev)) {
int cp95Idx = DetectionUtil.getCP95Idx(bStandardDev);
bStandardDev = Collections.singletonList(bStandardDev.get(cp95Idx));
bDev = Collections.singletonList(bDev.get(bIdxs.get(cp95Idx)));
}
if (CollUtil.isNotEmpty(cDev)) {
int cp95Idx = DetectionUtil.getCP95Idx(cDev);
cDev = Collections.singletonList(cDev.get(cp95Idx));
if (CollUtil.isNotEmpty(cStandardDev)) {
int cp95Idx = DetectionUtil.getCP95Idx(cStandardDev);
cStandardDev = Collections.singletonList(cStandardDev.get(cp95Idx));
cDev = Collections.singletonList(cDev.get(cIdxs.get(cp95Idx)));
}
if (CollUtil.isNotEmpty(tDev)) {
int cp95Idx = DetectionUtil.getCP95Idx(tDev);
tDev = Collections.singletonList(tDev.get(cp95Idx));
if (CollUtil.isNotEmpty(tStandardDev)) {
int cp95Idx = DetectionUtil.getCP95Idx(tStandardDev);
tStandardDev = Collections.singletonList(tStandardDev.get(cp95Idx));
tDev = Collections.singletonList(tDev.get(tIdxs.get(cp95Idx)));
}
break;

View File

@@ -2,6 +2,7 @@ package com.njcn.gather.result.pojo.param;
import com.njcn.common.pojo.constant.PatternRegex;
import com.njcn.gather.pojo.constant.DetectionValidMessage;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -100,5 +101,8 @@ public class ResultParam {
@ApiModelProperty(value = "模式Id", required = true)
private String patternId;
@ApiModelProperty(value = "通道号", required = true)
private String chnNum;
}
}

View File

@@ -983,7 +983,7 @@ public class ResultServiceImpl implements IResultService {
DictData dictData = dictDataService.getDictDataById(param.getPatternId());
if (PatternEnum.CONTRAST.getValue().equals(dictData.getCode())) {
this.createTempResultTable(param.getCode() + "_temp", true);
this.contrastCalculateResult(param.getPlanId(), param.getCode() + "_temp", param.getErrorSysId(), param.getDeviceId());
this.contrastCalculateResult(param.getPlanId(), param.getCode() + "_temp", param.getErrorSysId(), param.getDeviceId(), param.getChnNum());
} else {
this.createTempResultTable(param.getCode() + "_temp", false);
this.simAndDigCalculateResult(param.getPlanId(), param.getScriptId(), param.getCode() + "_temp", param.getErrorSysId(), param.getDeviceId());
@@ -1000,7 +1000,7 @@ public class ResultServiceImpl implements IResultService {
public void reCalculate(ResultParam.ChangeErrorSystemParam param) {
DictData dictData = dictDataService.getDictDataById(param.getPatternId());
if (PatternEnum.CONTRAST.getValue().equals(dictData.getCode())) {
this.contrastCalculateResult(param.getPlanId(), param.getCode(), param.getErrorSysId(), param.getDeviceId());
this.contrastCalculateResult(param.getPlanId(), param.getCode(), param.getErrorSysId(), param.getDeviceId(), param.getChnNum());
} else {
this.simAndDigCalculateResult(param.getPlanId(), param.getScriptId(), param.getCode(), param.getErrorSysId(), param.getDeviceId());
}
@@ -2872,23 +2872,23 @@ public class ResultServiceImpl implements IResultService {
for (int i = 0; i < devNonHarmonicRawDataList.size(); i++) {
AlignDataVO.RawData rawDataVO = new AlignDataVO.RawData();
rawDataVO.setUnit(unit);
ContrastNonHarmonicResult contrastNonHarmonicResult = devNonHarmonicRawDataList.get(i);
rawDataVO.setTimeDev(contrastNonHarmonicResult.getTimeId().format(dtf));
ContrastNonHarmonicResult contrastNonHarmonicResultDev = devNonHarmonicRawDataList.get(i);
rawDataVO.setTimeDev(contrastNonHarmonicResultDev.getTimeId().format(dtf));
rawDataVO.setUbDev(getValue(contrastNonHarmonicResult.getBValue()));
rawDataVO.setUtDev(getValue(contrastNonHarmonicResult.getTValue()));
rawDataVO.setUbDev(getValue(contrastNonHarmonicResultDev.getBValue()));
rawDataVO.setUtDev(getValue(contrastNonHarmonicResultDev.getTValue()));
contrastNonHarmonicResult = stdDevNonHarmonicRawDataList.get(i);
rawDataVO.setTimeStdDev(contrastNonHarmonicResult.getTimeId().format(dtf));
ContrastNonHarmonicResult contrastNonHarmonicResultStdDev = stdDevNonHarmonicRawDataList.get(i);
rawDataVO.setTimeStdDev(contrastNonHarmonicResultStdDev.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.setUaDev(getValue(contrastNonHarmonicResultDev.getAValue()));
rawDataVO.setUcDev(getValue(contrastNonHarmonicResultDev.getCValue()));
rawDataVO.setUaStdDev(getValue(contrastNonHarmonicResultStdDev.getAValue()));
rawDataVO.setUcStdDev(getValue(contrastNonHarmonicResultStdDev.getCValue()));
}
rawDataVO.setUbStdDev(getValue(contrastNonHarmonicResult.getBValue()));
rawDataVO.setUtStdDev(getValue(contrastNonHarmonicResult.getTValue()));
rawDataVO.setUbStdDev(getValue(contrastNonHarmonicResultStdDev.getBValue()));
rawDataVO.setUtStdDev(getValue(contrastNonHarmonicResultStdDev.getTValue()));
rawDataVOList.add(rawDataVO);
}
@@ -3144,8 +3144,9 @@ public class ResultServiceImpl implements IResultService {
* @param code
* @param errorSysId
* @param deviceId
* @param chnNum
*/
private void contrastCalculateResult(String planId, String code, String errorSysId, String deviceId) {
private void contrastCalculateResult(String planId, String code, String errorSysId, String deviceId, String chnNum) {
String oldCode = code.replace("_temp", "");
Map<String, String> devIdMapComm = new HashMap<>();
@@ -3204,9 +3205,11 @@ public class ResultServiceImpl implements IResultService {
.set(PqMonitor::getResultType, null)
.set(PqMonitor::getQualifiedNum, 0)
.eq(PqMonitor::getDevId, deviceId)
.eq(PqMonitor::getNum, Integer.parseInt(chnNum))
.eq(PqMonitor::getCheckFlag, 1)
.update();
List<AdPair> adPairList = adPairService.listByDevIds(Arrays.asList(deviceId));
String monitorId = deviceId + CnSocketUtil.SPLIT_TAG + chnNum;
List<AdPair> adPairList = adPairService.listByDevIds(Arrays.asList(monitorId));
Map<Integer, List<AdPair>> numAdPairsMap = adPairList.stream().collect(Collectors.groupingBy(AdPair::getNum, Collectors.toList()));
numAdPairsMap.forEach((num, pairList) -> {
@@ -3227,10 +3230,10 @@ public class ResultServiceImpl implements IResultService {
devIdMapComm.put(standardDev.getIp(), standardDev.getId());
});
List<ContrastNonHarmonicResult> devNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(oldCode, num, null, false, null, 0, deviceId, null);
List<ContrastNonHarmonicResult> stdDevNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(oldCode, num, null, false, null, 1, deviceId, null);
List<ContrastHarmonicResult> devHarmonicRawDataList = contrastHarmonicService.listAllRawData(oldCode, num, null, false, null, 0, deviceId, null);
List<ContrastHarmonicResult> stdDevHarmonicRawDataList = contrastHarmonicService.listAllRawData(oldCode, num, null, false, null, 1, deviceId, null);
List<ContrastNonHarmonicResult> devNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(oldCode, num, null, false, null, 0, monitorId, null);
List<ContrastNonHarmonicResult> stdDevNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(oldCode, num, null, false, null, 1, monitorId, null);
List<ContrastHarmonicResult> devHarmonicRawDataList = contrastHarmonicService.listAllRawData(oldCode, num, null, false, null, 0, monitorId, null);
List<ContrastHarmonicResult> stdDevHarmonicRawDataList = contrastHarmonicService.listAllRawData(oldCode, num, null, false, null, 1, monitorId, null);
List<DevData> devData = contrastToList(devNonHarmonicRawDataList, devHarmonicRawDataList, testItemMap, 0);
List<DevData> standardDevData = contrastToList(stdDevNonHarmonicRawDataList, stdDevHarmonicRawDataList, testItemMap, 1);
@@ -3247,10 +3250,10 @@ public class ResultServiceImpl implements IResultService {
AdPlanTestConfig adPlanTestConfig = adPlanTestConfigService.getByPlanId(planId);
for (int i = 1; i <= adPlanTestConfig.getWaveRecord(); i++) {
devNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(oldCode, num, i, true, null, 0, deviceId, null);
stdDevNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(oldCode, num, i, true, null, 1, deviceId, null);
devHarmonicRawDataList = contrastHarmonicService.listAllRawData(oldCode, num, i, true, null, 0, deviceId, null);
stdDevHarmonicRawDataList = contrastHarmonicService.listAllRawData(oldCode, num, i, true, null, 1, deviceId, null);
devNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(oldCode, num, i, true, null, 0, monitorId, null);
stdDevNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(oldCode, num, i, true, null, 1, monitorId, null);
devHarmonicRawDataList = contrastHarmonicService.listAllRawData(oldCode, num, i, true, null, 0, monitorId, null);
stdDevHarmonicRawDataList = contrastHarmonicService.listAllRawData(oldCode, num, i, true, null, 1, monitorId, null);
devData = contrastToList(devNonHarmonicRawDataList, devHarmonicRawDataList, testItemMap, 0);
standardDevData = contrastToList(stdDevNonHarmonicRawDataList, stdDevHarmonicRawDataList, testItemMap, 1);