UPDATE: 完善。

This commit is contained in:
贾同学
2025-09-25 11:10:50 +08:00
parent 2dcf90d6c7
commit dc34bd9b44
4 changed files with 50 additions and 19 deletions

View File

@@ -1,5 +1,6 @@
package com.njcn.gather.device.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.db.mybatisplus.bo.BaseEntity;
import lombok.Data;
@@ -72,5 +73,8 @@ public class PqStandardDev extends BaseEntity implements Serializable {
private String devKey;
private Integer state;
@TableField(exist = false)
private boolean disabled;
}

View File

@@ -18,6 +18,8 @@ import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.poi.PullDown;
import com.njcn.common.utils.EncryptionUtil;
import com.njcn.gather.device.mapper.PqStandardDevMapper;
import com.njcn.gather.device.pojo.enums.CheckStateEnum;
import com.njcn.gather.device.pojo.enums.CommonEnum;
import com.njcn.gather.device.pojo.param.PqStandardDevParam;
import com.njcn.gather.device.pojo.po.PqStandardDev;
import com.njcn.gather.device.pojo.vo.PqStandardDevExcel;
@@ -316,27 +318,30 @@ public class PqStandardDevServiceImpl extends ServiceImpl<PqStandardDevMapper, P
// 获取对应检测计划
List<String> planIds = boundList.stream().map(AdPlanStandardDev::getPlanId).collect(Collectors.toList());
IAdPlanService adPlanService = SpringUtil.getBean(IAdPlanService.class);
List<AdPlan> planList = adPlanService.listByIds(planIds);
List<AdPlan> planList = adPlanService.lambdaQuery().in(AdPlan::getId, planIds).eq(AdPlan::getState, DataStateEnum.ENABLE.getCode()).list();
// 区分主计划和子计划
List<AdPlan> mainPlanList = planList.stream().filter(plan -> plan.getFatherPlanId() == null).collect(Collectors.toList());
List<AdPlan> subPlanList = planList.stream().filter(plan -> plan.getFatherPlanId() != null).collect(Collectors.toList());
List<AdPlan> mainPlanList = planList.stream().filter(plan -> plan.getFatherPlanId().equals(CommonEnum.FATHER_ID.getValue())).collect(Collectors.toList());
List<AdPlan> subPlanList = planList.stream().filter(plan -> !plan.getFatherPlanId().equals(CommonEnum.FATHER_ID.getValue())).collect(Collectors.toList());
List<String> excludePlanIds = new ArrayList<>();
// 主计划直接排除
// 主计划未完成直接排除
if (CollectionUtil.isNotEmpty(mainPlanList)) {
List<String> excludeMainPlanIds = mainPlanList.stream().filter(plan -> plan.getTestState() != 2).map(plan -> plan.getId()).collect(Collectors.toList());
excludePlanIds.addAll(excludeMainPlanIds);
List<String> excludeMainPlanIds = mainPlanList.stream().filter(plan -> !plan.getTestState().equals(CheckStateEnum.CHECKED.getValue())).map(AdPlan::getId).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(excludeMainPlanIds)) {
excludePlanIds.addAll(excludeMainPlanIds);
}
}
// 子计划需要判断其主计划, 如果主计划未完成则排除
if (CollectionUtil.isNotEmpty(subPlanList)) {
List<String> fatherPlanIds = subPlanList.stream().map(plan -> plan.getFatherPlanId()).collect(Collectors.toList());
List<String> fatherPlanIds = subPlanList.stream().map(AdPlan::getFatherPlanId).distinct().collect(Collectors.toList());
List<AdPlan> fatherPlanList = adPlanService.listByIds(fatherPlanIds);
List<String> excludeFatherPlanIds = fatherPlanList.stream()
.filter(plan -> plan.getTestState() != 2)
.map(plan -> plan.getId()).collect(Collectors.toList());
.filter(plan -> !plan.getTestState().equals(CheckStateEnum.CHECKED.getValue()))
.map(AdPlan::getId).collect(Collectors.toList());
List<String> excludeSubPlanIds = subPlanList.stream()
.filter(plan -> excludeFatherPlanIds.contains(plan.getFatherPlanId()))
.map(plan -> plan.getId()).collect(Collectors.toList());
.map(AdPlan::getId).collect(Collectors.toList());
excludePlanIds.addAll(excludeSubPlanIds);
}
if (CollectionUtil.isNotEmpty(excludePlanIds)) {
@@ -346,10 +351,12 @@ public class PqStandardDevServiceImpl extends ServiceImpl<PqStandardDevMapper, P
excludeStandardDevIds = excludeBoundList.stream().map(AdPlanStandardDev::getStandardDevId).collect(Collectors.toList());
}
}
return this.lambdaQuery()
List<PqStandardDev> list = this.lambdaQuery()
.eq(PqStandardDev::getState, DataStateEnum.ENABLE.getCode())
.notIn(CollectionUtil.isNotEmpty(excludeStandardDevIds), PqStandardDev::getId, excludeStandardDevIds)
.list();
for (PqStandardDev pqStandardDev : list) {
pqStandardDev.setDisabled(excludeStandardDevIds.contains(pqStandardDev.getId()));
}
return list;
}
}

View File

@@ -9,6 +9,7 @@ import cn.hutool.json.JSONConfig;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.gather.detection.pojo.po.AdPair;
import com.njcn.gather.detection.service.IAdPariService;
@@ -89,6 +90,12 @@ public class AsyncPlanHandler {
List<String> devIdList = devList.stream().map(PqDev::getId).collect(Collectors.toList());
// 被检设备状态统计
List<PqDevSub> devSubList = pqDevSubService.list(new LambdaQueryWrapper<PqDevSub>().in(PqDevSub::getDevId, devIdList));
for (PqDevSub devSub : devSubList) {
// 不导出报告,设置报告状态为未生成
if (ObjectUtil.isNull(report) || report.equals(DataStateEnum.DELETED.getCode())) {
devSub.setReportState(DataStateEnum.DELETED.getCode());
}
}
planCheckDataVO.setDevSubList(devSubList);
// 被检设备监测点信息
List<PqMonitor> monitorList = pqMonitorService.list(new LambdaQueryWrapper<PqMonitor>().in(PqMonitor::getDevId, devIdList));
@@ -310,7 +317,9 @@ public class AsyncPlanHandler {
adPlanService.updateById(subPlan);
progress.addAndGet(1);
sseClient.sendMessage(uid, planId, HttpResultUtil.assembleResult(CommonResponseEnum.SUCCESS.getCode(), progress, "开始同步计划设备信息,请耐心等待..."));
// 更新监测点数据
List<PqMonitor> monitorList = planCheckDataVO.getMonitorList();
pqMonitorService.updateBatchById(monitorList);
// 批量更新被检设备信息
// 不更新导入标志
devList.forEach(dev -> dev.setImportFlag(null));
@@ -325,7 +334,7 @@ public class AsyncPlanHandler {
// 同步检测数据
List<AdPair> pairList = planCheckDataVO.getPairList();
adPairService.updateBatchById(pairList);
adPairService.saveOrUpdateBatch(pairList);
// 主计划
AdPlan plan = adPlanService.getById(planId);
if (CollUtil.isNotEmpty(docxFiles)) {

View File

@@ -193,8 +193,18 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
adPlanVO.setSourceName(pqSourceList.stream().map(PqSource::getName).collect(Collectors.toList()));
PqDevParam.QueryParam queryParam1 = new PqDevParam.QueryParam();
queryParam1.setPlanIdList(Collections.singletonList(adPlan.getId()));
if (adPlan.getFatherPlanId().equals(CommonEnum.FATHER_ID.getValue())) {
List<String> planIds = this.lambdaQuery()
.eq(AdPlan::getFatherPlanId, adPlan.getId())
.eq(AdPlan::getState, DataStateEnum.ENABLE.getCode())
.select(AdPlan::getId)
.list()
.stream().map(AdPlan::getId).collect(Collectors.toList());
planIds.add(adPlan.getId());
queryParam1.setPlanIdList(planIds);
} else {
queryParam1.setPlanIdList(Collections.singletonList(adPlan.getId()));
}
List<PqDevVO> pqDevVOList = pqDevMapper.selectByQueryParam(queryParam1);
if (CollUtil.isNotEmpty(pqDevVOList)) {
long count = pqDevVOList.stream().filter(pqDev -> CheckStateEnum.CHECKED.getValue().equals(pqDev.getCheckState())).count();
@@ -1821,7 +1831,7 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
List<String> removeDevIds = uncheckedDevIds.stream()
.filter(devId -> !devIds.contains(devId))
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(removeDevIds)) {
pqDevService.removeByIds(removeDevIds);
pqDevSubService.remove(new LambdaQueryWrapper<PqDevSub>().in(PqDevSub::getDevId, removeDevIds));
@@ -2068,6 +2078,7 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
/**
* 比对模式下计划的检测项获取
*
* @param planId 计划ID
* @return 检测项
*/
@@ -2078,7 +2089,7 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
String pattern = adPlan.getPattern();
DictData dictData = dictDataService.getDictDataById(pattern);
if (ObjectUtil.isNotNull(dictData)) {
if(dictData.getCode().equalsIgnoreCase("Contrast")){
if (dictData.getCode().equalsIgnoreCase("Contrast")) {
String[] items = adPlan.getTestItem().split(",");
scriptList = new ArrayList<>(Arrays.asList(items));
}