脚本详情项禁用后,该脚本详情项的结果不参与装置的检测结果

This commit is contained in:
caozehui
2025-03-11 15:31:26 +08:00
parent c60d41af10
commit 708a4e6fbd
4 changed files with 63 additions and 44 deletions

View File

@@ -37,8 +37,8 @@ import com.njcn.gather.script.service.IPqScriptDtlsService;
import com.njcn.gather.script.service.IPqScriptService; import com.njcn.gather.script.service.IPqScriptService;
import com.njcn.gather.source.pojo.po.PqSource; import com.njcn.gather.source.pojo.po.PqSource;
import com.njcn.gather.source.service.IPqSourceService; import com.njcn.gather.source.service.IPqSourceService;
import com.njcn.gather.storage.mapper.DetectionDataDealMapper;
import com.njcn.gather.storage.pojo.param.StorageParam; import com.njcn.gather.storage.pojo.param.StorageParam;
import com.njcn.gather.storage.pojo.po.AdBaseResult;
import com.njcn.gather.storage.service.AdHarmonicService; import com.njcn.gather.storage.service.AdHarmonicService;
import com.njcn.gather.storage.service.AdNonHarmonicService; import com.njcn.gather.storage.service.AdNonHarmonicService;
import com.njcn.gather.storage.service.TableGenService; import com.njcn.gather.storage.service.TableGenService;
@@ -95,7 +95,6 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
private final ISysTestConfigService sysTestConfigService; private final ISysTestConfigService sysTestConfigService;
private final IDevTypeService devTypeService; private final IDevTypeService devTypeService;
private final IDictTypeService dictTypeService; private final IDictTypeService dictTypeService;
private final AdNonHarmonicService adNonHarmonicService;
private final AdHarmonicService adHarmonicService; private final AdHarmonicService adHarmonicService;
@Override @Override
@@ -382,7 +381,7 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
StorageParam storageParam = new StorageParam(); StorageParam storageParam = new StorageParam();
storageParam.setCode(Integer.valueOf(adPlan.getCode())); storageParam.setCode(Integer.valueOf(adPlan.getCode()));
storageParam.setScriptId(adPlan.getScriptId()); storageParam.setScriptId(adPlan.getScriptId());
List<Integer> indexes = adHarmonicService.getIndex(storageParam,true); List<Integer> indexes = adHarmonicService.getIndex(storageParam, true);
scriptDtlsList = scriptDtlsList.stream().filter(obj -> indexes.contains(obj.getScriptIndex())).collect(Collectors.toList()); scriptDtlsList = scriptDtlsList.stream().filter(obj -> indexes.contains(obj.getScriptIndex())).collect(Collectors.toList());
} }

View File

@@ -3,9 +3,17 @@ package com.njcn.gather.storage.mapper;
import com.njcn.db.mybatisplus.mapper.BatchBaseMapper; import com.njcn.db.mybatisplus.mapper.BatchBaseMapper;
import com.njcn.gather.storage.pojo.po.AdHarmonicResult; import com.njcn.gather.storage.pojo.po.AdHarmonicResult;
import java.util.List;
public interface DetectionDataDealMapper extends BatchBaseMapper<AdHarmonicResult> { public interface DetectionDataDealMapper extends BatchBaseMapper<AdHarmonicResult> {
/**
* 根据设备ID查询禁用的脚本详情索引
*
* @param devId
* @return
*/
List<Integer> listDisabledScriptDtlIndexs(String devId);

View File

@@ -3,6 +3,14 @@
<mapper namespace="com.njcn.gather.storage.mapper.DetectionDataDealMapper"> <mapper namespace="com.njcn.gather.storage.mapper.DetectionDataDealMapper">
<select id="listDisabledScriptDtlIndexs" resultType="java.lang.Integer">
select distinct dtls.Script_Index
from pq_script_dtls dtls
inner join ad_plan plan on dtls.Script_Id = plan.Script_Id
inner join pq_dev dev on dev.Plan_Id = plan.id
where dev.id = #{devId}
and dev.State = 1
and dtls.Enable = 0
</select>
</mapper> </mapper>

View File

@@ -26,6 +26,7 @@ import java.util.stream.Collectors;
public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<DetectionDataDealMapper, AdHarmonicResult> implements DetectionDataDealService { public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<DetectionDataDealMapper, AdHarmonicResult> implements DetectionDataDealService {
private final AdNonHarmonicService adNonHarmonicService; private final AdNonHarmonicService adNonHarmonicService;
private final DetectionDataDealMapper detectionDataDealMapper;
@Override @Override
@@ -34,10 +35,10 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
String adNonTable = "ad_non_harmonic_"; String adNonTable = "ad_non_harmonic_";
DynamicTableNameHandler.setTableName(adNonTable + code); DynamicTableNameHandler.setTableName(adNonTable + code);
List<String> monitorIds = adNonHarmonicResultList.stream().map(AdNonHarmonicResult::getMonitorId).distinct().collect(Collectors.toList()); List<String> monitorIds = adNonHarmonicResultList.stream().map(AdNonHarmonicResult::getMonitorId).distinct().collect(Collectors.toList());
if(CollUtil.isNotEmpty(monitorIds)){ if (CollUtil.isNotEmpty(monitorIds)) {
adNonHarmonicService.remove(new LambdaQueryWrapper<AdNonHarmonicResult>().in(AdNonHarmonicResult::getMonitorId, monitorIds) adNonHarmonicService.remove(new LambdaQueryWrapper<AdNonHarmonicResult>().in(AdNonHarmonicResult::getMonitorId, monitorIds)
.eq(AdNonHarmonicResult::getScriptId,adNonHarmonicResultList.get(0).getScriptId()) .eq(AdNonHarmonicResult::getScriptId, adNonHarmonicResultList.get(0).getScriptId())
.eq(AdNonHarmonicResult::getSort,adNonHarmonicResultList.get(0).getSort())); .eq(AdNonHarmonicResult::getSort, adNonHarmonicResultList.get(0).getSort()));
adNonHarmonicService.saveBatch(adNonHarmonicResultList, 100); adNonHarmonicService.saveBatch(adNonHarmonicResultList, 100);
} }
DynamicTableNameHandler.remove(); DynamicTableNameHandler.remove();
@@ -50,10 +51,10 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
String adTable = "ad_harmonic_"; String adTable = "ad_harmonic_";
DynamicTableNameHandler.setTableName(adTable + code); DynamicTableNameHandler.setTableName(adTable + code);
List<String> monitorIds = adHarmonicResultList.stream().map(AdHarmonicResult::getMonitorId).distinct().collect(Collectors.toList()); List<String> monitorIds = adHarmonicResultList.stream().map(AdHarmonicResult::getMonitorId).distinct().collect(Collectors.toList());
if(CollUtil.isNotEmpty(monitorIds)){ if (CollUtil.isNotEmpty(monitorIds)) {
this.remove(new LambdaQueryWrapper<AdHarmonicResult>().in(AdHarmonicResult::getMonitorId, monitorIds) this.remove(new LambdaQueryWrapper<AdHarmonicResult>().in(AdHarmonicResult::getMonitorId, monitorIds)
.eq(AdHarmonicResult::getScriptId,adHarmonicResultList.get(0).getScriptId()) .eq(AdHarmonicResult::getScriptId, adHarmonicResultList.get(0).getScriptId())
.eq(AdHarmonicResult::getSort,adHarmonicResultList.get(0).getSort())); .eq(AdHarmonicResult::getSort, adHarmonicResultList.get(0).getSort()));
this.saveBatch(adHarmonicResultList, 100); this.saveBatch(adHarmonicResultList, 100);
} }
@@ -67,10 +68,10 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
String adNonTableResult = "ad_non_harmonic_result_"; String adNonTableResult = "ad_non_harmonic_result_";
DynamicTableNameHandler.setTableName(adNonTableResult + code); DynamicTableNameHandler.setTableName(adNonTableResult + code);
List<String> monitorIds = adNonHarmonicResultList.stream().map(AdNonHarmonicResult::getMonitorId).distinct().collect(Collectors.toList()); List<String> monitorIds = adNonHarmonicResultList.stream().map(AdNonHarmonicResult::getMonitorId).distinct().collect(Collectors.toList());
if(CollUtil.isNotEmpty(monitorIds)){ if (CollUtil.isNotEmpty(monitorIds)) {
adNonHarmonicService.remove(new LambdaQueryWrapper<AdNonHarmonicResult>().in(AdNonHarmonicResult::getMonitorId, monitorIds) adNonHarmonicService.remove(new LambdaQueryWrapper<AdNonHarmonicResult>().in(AdNonHarmonicResult::getMonitorId, monitorIds)
.eq(AdNonHarmonicResult::getScriptId,adNonHarmonicResultList.get(0).getScriptId()) .eq(AdNonHarmonicResult::getScriptId, adNonHarmonicResultList.get(0).getScriptId())
.eq(AdNonHarmonicResult::getSort,adNonHarmonicResultList.get(0).getSort())); .eq(AdNonHarmonicResult::getSort, adNonHarmonicResultList.get(0).getSort()));
adNonHarmonicService.saveBatch(adNonHarmonicResultList, 100); adNonHarmonicService.saveBatch(adNonHarmonicResultList, 100);
} }
DynamicTableNameHandler.remove(); DynamicTableNameHandler.remove();
@@ -83,10 +84,10 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
String adTableResult = "ad_harmonic_result_"; String adTableResult = "ad_harmonic_result_";
DynamicTableNameHandler.setTableName(adTableResult + code); DynamicTableNameHandler.setTableName(adTableResult + code);
List<String> monitorIds = adHarmonicResultList.stream().map(AdHarmonicResult::getMonitorId).distinct().collect(Collectors.toList()); List<String> monitorIds = adHarmonicResultList.stream().map(AdHarmonicResult::getMonitorId).distinct().collect(Collectors.toList());
if(CollUtil.isNotEmpty(monitorIds)){ if (CollUtil.isNotEmpty(monitorIds)) {
this.remove(new LambdaQueryWrapper<AdHarmonicResult>().in(AdHarmonicResult::getMonitorId, monitorIds) this.remove(new LambdaQueryWrapper<AdHarmonicResult>().in(AdHarmonicResult::getMonitorId, monitorIds)
.eq(AdHarmonicResult::getScriptId,adHarmonicResultList.get(0).getScriptId()) .eq(AdHarmonicResult::getScriptId, adHarmonicResultList.get(0).getScriptId())
.eq(AdHarmonicResult::getSort,adHarmonicResultList.get(0).getSort())); .eq(AdHarmonicResult::getSort, adHarmonicResultList.get(0).getSort()));
this.saveBatch(adHarmonicResultList, 100); this.saveBatch(adHarmonicResultList, 100);
} }
DynamicTableNameHandler.remove(); DynamicTableNameHandler.remove();
@@ -94,59 +95,62 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl<Detect
} }
@Override @Override
public Map<String, Integer> devResult(List<String> ids,List<String> valueType,String code) { public Map<String, Integer> devResult(List<String> ids, List<String> valueType, String code) {
List<AdNonHarmonicResult> noHarm=new ArrayList<>(); List<Integer> disabledScriptDtlIndexs = detectionDataDealMapper.listDisabledScriptDtlIndexs(ids.get(0));
List<AdNonHarmonicResult> noHarm = new ArrayList<>();
for (String id : ids) { for (String id : ids) {
DynamicTableNameHandler.setTableName("ad_non_harmonic_result_" + code); DynamicTableNameHandler.setTableName("ad_non_harmonic_result_" + code);
noHarm.addAll(adNonHarmonicService.list( new LambdaQueryWrapper<AdNonHarmonicResult>() noHarm.addAll(adNonHarmonicService.list(new LambdaQueryWrapper<AdNonHarmonicResult>()
.like(AdNonHarmonicResult::getMonitorId,id) .like(AdNonHarmonicResult::getMonitorId, id)
.in(CollUtil.isNotEmpty(valueType),AdNonHarmonicResult::getAdType,valueType) .notIn(CollUtil.isNotEmpty(disabledScriptDtlIndexs), AdNonHarmonicResult::getSort, disabledScriptDtlIndexs)
)) ; .in(CollUtil.isNotEmpty(valueType), AdNonHarmonicResult::getAdType, valueType)
));
} }
DynamicTableNameHandler.remove(); DynamicTableNameHandler.remove();
List<AdHarmonicResult> harm=new ArrayList<>(); List<AdHarmonicResult> harm = new ArrayList<>();
for (String id : ids) { for (String id : ids) {
DynamicTableNameHandler.setTableName("ad_harmonic_result_" + code); DynamicTableNameHandler.setTableName("ad_harmonic_result_" + code);
harm.addAll(this.list( new LambdaQueryWrapper<AdHarmonicResult>() harm.addAll(this.list(new LambdaQueryWrapper<AdHarmonicResult>()
.like(AdHarmonicResult::getMonitorId,id) .like(AdHarmonicResult::getMonitorId, id)
.in(CollUtil.isNotEmpty(valueType),AdHarmonicResult::getAdType,valueType) .notIn(CollUtil.isNotEmpty(disabledScriptDtlIndexs), AdHarmonicResult::getSort, disabledScriptDtlIndexs)
)) ; .in(CollUtil.isNotEmpty(valueType), AdHarmonicResult::getAdType, valueType)
));
} }
DynamicTableNameHandler.remove(); DynamicTableNameHandler.remove();
Map<String, List<Integer>> noHarmMap = noHarm.stream().collect(Collectors.groupingBy(x -> x.getMonitorId().split("_")[0], Map<String, List<Integer>> noHarmMap = noHarm.stream().collect(Collectors.groupingBy(x -> x.getMonitorId().split("_")[0],
Collectors.mapping(AdNonHarmonicResult::getResultFlag, Collectors.toList()))); Collectors.mapping(AdNonHarmonicResult::getResultFlag, Collectors.toList())));
Map<String, List<Integer>> harmMap = harm.stream().collect(Collectors.groupingBy(x -> x.getMonitorId().split("_")[0], Map<String, List<Integer>> harmMap = harm.stream().collect(Collectors.groupingBy(x -> x.getMonitorId().split("_")[0],
Collectors.mapping(AdHarmonicResult::getResultFlag, Collectors.toList()))); Collectors.mapping(AdHarmonicResult::getResultFlag, Collectors.toList())));
Map<String, Integer> map=new HashMap<>(2); Map<String, Integer> map = new HashMap<>(2);
for (String id : ids) { for (String id : ids) {
List<Integer> resultFlags=new ArrayList<>(); List<Integer> resultFlags = new ArrayList<>();
if(noHarmMap.containsKey(id)){ if (noHarmMap.containsKey(id)) {
resultFlags.addAll(noHarmMap.get(id)); resultFlags.addAll(noHarmMap.get(id));
} }
if(harmMap.containsKey(id)){ if (harmMap.containsKey(id)) {
resultFlags.addAll(harmMap.get(id)); resultFlags.addAll(harmMap.get(id));
} }
map.put(id,isResultFlag(resultFlags)); map.put(id, isResultFlag(resultFlags));
} }
return map; return map;
} }
private static Integer isResultFlag(List<Integer> resultFlags) { private static Integer isResultFlag(List<Integer> resultFlags) {
// 检测结果0:不符合 1:符合 2:/[未检测无结果]) // 检测结果0:不符合 1:符合 2:/[未检测无结果])
//脚本结果是 1.符合 2.不符合 4.未检测无结果 //脚本结果是 1.符合 2.不符合 4.未检测无结果
resultFlags = resultFlags.stream().filter(x->4!=x).distinct().collect(Collectors.toList()); resultFlags = resultFlags.stream().filter(x -> 4 != x).distinct().collect(Collectors.toList());
if (CollUtil.isNotEmpty(resultFlags)) { if (CollUtil.isNotEmpty(resultFlags)) {
if (resultFlags.contains(2)) { if (resultFlags.contains(2)) {
return 0; return 0;
}else{ } else {
switch (resultFlags.get(0)){ switch (resultFlags.get(0)) {
case 1: case 1:
return 1; return 1;
case 2: case 2:
return 0; return 0;
} }
} }
} }
return 1; return 1;
} }