diff --git a/detection/src/main/java/com/njcn/gather/plan/service/AsyncPlanHandler.java b/detection/src/main/java/com/njcn/gather/plan/service/AsyncPlanHandler.java index e7348dcf..5e4217b7 100644 --- a/detection/src/main/java/com/njcn/gather/plan/service/AsyncPlanHandler.java +++ b/detection/src/main/java/com/njcn/gather/plan/service/AsyncPlanHandler.java @@ -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 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 planIds = adPlanService.lambdaQuery().eq(AdPlan::getFatherPlanId, planId).list().stream().map(AdPlan::getId).collect(Collectors.toList()); + planIds.add(planId); + List devIds = pqDevService.lambdaQuery().in(PqDev::getPlanId, planIds).list().stream().map(PqDev::getId).collect(Collectors.toList()); + List 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);