UPDATE: 添加数据合并时更新主计划检测状态。

This commit is contained in:
贾同学
2025-09-23 15:44:46 +08:00
parent 80c383a746
commit 35e52e0722

View File

@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.gather.detection.pojo.po.AdPair;
import com.njcn.gather.detection.service.IAdPariService;
import com.njcn.gather.device.pojo.enums.CheckStateEnum;
import com.njcn.gather.device.pojo.po.PqDev;
import com.njcn.gather.device.pojo.po.PqDevSub;
import com.njcn.gather.device.service.IPqDevService;
@@ -325,8 +326,8 @@ public class AsyncPlanHandler {
// 同步检测数据
List<AdPair> pairList = planCheckDataVO.getPairList();
adPairService.updateBatchById(pairList);
// 主计划
AdPlan plan = adPlanService.getById(planId);
if (CollUtil.isNotEmpty(docxFiles)) {
progress.addAndGet(1);
sseClient.sendMessage(uid, planId, HttpResultUtil.assembleResult(CommonResponseEnum.SUCCESS.getCode(), progress, "开始同步检测报告文件"));
@@ -345,7 +346,6 @@ public class AsyncPlanHandler {
}
}
if (CollUtil.isNotEmpty(dataFiles)) {
AdPlan plan = adPlanService.getById(planId);
Integer planCode = plan.getCode();
progress.addAndGet(1);
sseClient.sendMessage(uid, planId, HttpResultUtil.assembleResult(CommonResponseEnum.SUCCESS.getCode(), progress, "开始同步检测数据信息,请耐心等待..."));
@@ -420,6 +420,27 @@ public class AsyncPlanHandler {
// 删除临时目录
FileUtil.del(tempDir);
// 更新主计划状态
List<String> planIds = adPlanService.lambdaQuery().eq(AdPlan::getFatherPlanId, planId).list().stream().map(AdPlan::getId).collect(Collectors.toList());
planIds.add(planId);
List<String> devIds = pqDevService.lambdaQuery().in(PqDev::getPlanId, planIds).list().stream().map(PqDev::getId).collect(Collectors.toList());
List<PqDevSub> devSubs = pqDevSubService.lambdaQuery().in(PqDevSub::getDevId, devIds).list();
long checkedCount = devSubs.stream().filter(sub -> sub.getCheckState().equals(CheckStateEnum.CHECKED.getValue())).count();
if (checkedCount > 0) {
plan.setTestState(CheckStateEnum.CHECKING.getValue());
// 都已检测完成
if (checkedCount == devSubs.size()) {
plan.setTestState(CheckStateEnum.CHECKED.getValue());
}
} else {
plan.setTestState(CheckStateEnum.UNCHECKED.getValue());
// 是否有检测中
long checkingCount = devSubs.stream().filter(sub -> sub.getCheckState().equals(CheckStateEnum.CHECKING.getValue())).count();
if (checkingCount > 0) {
plan.setTestState(CheckStateEnum.CHECKING.getValue());
}
}
adPlanService.updateById(plan);
LocalDateTime endTime = LocalDateTime.now();
log.info("数据合并完成,耗时:{}s", Duration.between(startTime, endTime).getSeconds());
progress.set(100);