预检测时进行录波校验、完善监测点结果修改逻辑
This commit is contained in:
@@ -41,4 +41,15 @@ public interface DetectionDataDealService extends IReplenishMybatisService<SimAn
|
||||
* @return
|
||||
*/
|
||||
Integer getMonitorResult(String monitorId, List<String> adTypes, String dataSource, Integer num, Integer waveNum, String code);
|
||||
|
||||
/**
|
||||
* 获取指定检测次数下,最后一次合格录波的组数,如果没有合格的录波,则返回-1
|
||||
*
|
||||
* @param monitorId
|
||||
* @param adTypes
|
||||
* @param num
|
||||
* @param code
|
||||
* @return
|
||||
*/
|
||||
Map<Integer, Integer> getWaveNumResultMap(String monitorId, List<String> adTypes, Integer num, String code);
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* 接收检测的原始数据以及计算后的结果
|
||||
@@ -227,8 +228,11 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
|
||||
.like(ContrastNonHarmonicResult::getDevMonitorId, monitorId)
|
||||
.in(CollUtil.isNotEmpty(adTypes), ContrastNonHarmonicResult::getAdType, adTypes)
|
||||
.eq(ContrastNonHarmonicResult::getDataType, dataSource)
|
||||
.eq(ContrastNonHarmonicResult::getNum, num)
|
||||
.eq(ObjectUtil.isNotEmpty(waveNum), ContrastNonHarmonicResult::getWaveNum, waveNum);
|
||||
.eq(ContrastNonHarmonicResult::getNum, num);
|
||||
if (ObjectUtil.isNotEmpty(waveNum)) {
|
||||
List<Integer> waveNumList = Stream.iterate(1, i -> i + 1).limit(waveNum).collect(Collectors.toList());
|
||||
wrapper1.in(ContrastNonHarmonicResult::getWaveNum, waveNumList);
|
||||
}
|
||||
|
||||
List<ContrastNonHarmonicResult> nonHarmonicResultList = contrastNonHarmonicService.list(wrapper1);
|
||||
DynamicTableNameHandler.remove();
|
||||
@@ -250,13 +254,59 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
|
||||
return isResultFlag(resultFlagList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Integer, Integer> getWaveNumResultMap(String monitorId, List<String> adTypes, Integer num, String code) {
|
||||
DynamicTableNameHandler.setTableName("ad_non_harmonic_result_" + code);
|
||||
LambdaQueryWrapper<ContrastNonHarmonicResult> wrapper1 = new LambdaQueryWrapper<ContrastNonHarmonicResult>()
|
||||
.like(ContrastNonHarmonicResult::getDevMonitorId, monitorId)
|
||||
.in(CollUtil.isNotEmpty(adTypes), ContrastNonHarmonicResult::getAdType, adTypes)
|
||||
.isNotNull(ContrastNonHarmonicResult::getWaveNum)
|
||||
.eq(ContrastNonHarmonicResult::getNum, num);
|
||||
|
||||
List<ContrastNonHarmonicResult> nonHarmonicResultList = contrastNonHarmonicService.list(wrapper1);
|
||||
DynamicTableNameHandler.remove();
|
||||
|
||||
DynamicTableNameHandler.setTableName("ad_harmonic_result_" + code);
|
||||
LambdaQueryWrapper<ContrastHarmonicResult> wrapper2 = new LambdaQueryWrapper<ContrastHarmonicResult>()
|
||||
.like(ContrastHarmonicResult::getDevMonitorId, monitorId)
|
||||
.in(CollUtil.isNotEmpty(adTypes), ContrastHarmonicResult::getAdType, adTypes)
|
||||
.isNotNull(ContrastHarmonicResult::getWaveNum)
|
||||
.eq(ContrastHarmonicResult::getNum, num);
|
||||
|
||||
List<ContrastHarmonicResult> harmonicResultList = contrastHarmonicService.list(wrapper2);
|
||||
DynamicTableNameHandler.remove();
|
||||
|
||||
TreeMap<Integer, List<ContrastNonHarmonicResult>> waveMap1 = nonHarmonicResultList.stream().collect(Collectors.groupingBy(ContrastNonHarmonicResult::getWaveNum, TreeMap::new, Collectors.toList()));
|
||||
TreeMap<Integer, List<ContrastHarmonicResult>> waveMap2 = harmonicResultList.stream().collect(Collectors.groupingBy(ContrastHarmonicResult::getWaveNum, TreeMap::new, Collectors.toList()));
|
||||
|
||||
Map<Integer, List<Integer>> waveResultMap = new HashMap<>();
|
||||
waveMap1.forEach((waveNum, vList) -> {
|
||||
List<Integer> resultFlagList = waveResultMap.getOrDefault(waveNum, new ArrayList<>());
|
||||
resultFlagList.addAll(vList.stream().map(ContrastNonHarmonicResult::getResultFlag).collect(Collectors.toList()));
|
||||
waveResultMap.put(waveNum, resultFlagList);
|
||||
});
|
||||
waveMap2.forEach((waveNum, vList) -> {
|
||||
List<Integer> resultFlagList = waveResultMap.getOrDefault(waveNum, new ArrayList<>());
|
||||
resultFlagList.addAll(vList.stream().map(ContrastHarmonicResult::getResultFlag).collect(Collectors.toList()));
|
||||
waveResultMap.put(waveNum, resultFlagList);
|
||||
});
|
||||
|
||||
Map<Integer, Integer> result = new TreeMap<>();
|
||||
waveResultMap.forEach((waveNum, resultFlagList) -> {
|
||||
Integer resultFlag = isResultFlag(resultFlagList);
|
||||
result.put(waveNum, resultFlag);
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static Integer isResultFlag(List<Integer> resultFlags) {
|
||||
// 检测结果(0:不符合 1:符合 2:/[未检测无结果])
|
||||
//脚本结果是 1.符合 2.不符合 4.未检测无结果 5.不参与误差比较
|
||||
resultFlags = resultFlags.stream().filter(x -> 4 != x && 5 != x).distinct().collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(resultFlags)) {
|
||||
if (resultFlags.contains(2)) {
|
||||
return 0;
|
||||
return 2;
|
||||
} else {
|
||||
switch (resultFlags.get(0)) {
|
||||
case 1:
|
||||
|
||||
Reference in New Issue
Block a user