From 6f5746861ff3bfd980b204c9aa330b9a1bf271d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=BE=E5=90=8C=E5=AD=A6?= Date: Thu, 25 Sep 2025 14:40:13 +0800 Subject: [PATCH] =?UTF-8?q?UPDATE:=20=E5=AE=8C=E5=96=84=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gather/plan/service/AsyncPlanHandler.java | 15 ++++-- .../plan/service/impl/AdPlanServiceImpl.java | 51 +++++++++++++------ 2 files changed, 47 insertions(+), 19 deletions(-) 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 9eae9f49..bbe2c232 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 @@ -40,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.io.File; +import java.io.IOException; import java.time.Duration; import java.time.LocalDateTime; import java.util.ArrayList; @@ -249,7 +250,13 @@ public class AsyncPlanHandler { // 将上传的zip文件保存到临时目录 File zipFile = FileUtil.file(tempDir, file.getOriginalFilename()); - file.transferTo(zipFile); + // 修复文件上传临时路径问题 + try { + file.transferTo(zipFile); + } catch (IOException e) { + // 如果直接transferTo失败,则先转为字节再写入文件 + FileUtil.writeBytes(file.getBytes(), zipFile); + } progress.addAndGet(1); sseClient.sendMessage(uid, planId, HttpResultUtil.assembleResult(CommonResponseEnum.SUCCESS.getCode(), progress, "开始解压文件,请耐心等待...")); @@ -320,10 +327,10 @@ public class AsyncPlanHandler { // 更新监测点数据 List monitorList = planCheckDataVO.getMonitorList(); pqMonitorService.updateBatchById(monitorList); - // 批量更新被检设备信息 + // 批量更新被检设备信息,不需要更新 // 不更新导入标志 - devList.forEach(dev -> dev.setImportFlag(null)); - pqDevService.updateBatchById(devList); + /*devList.forEach(dev -> dev.setImportFlag(null)); + pqDevService.updateBatchById(devList);*/ List devSubList = planCheckDataVO.getDevSubList(); for (PqDevSub devSub : devSubList) { diff --git a/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanServiceImpl.java b/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanServiceImpl.java index 6fbfa6fa..3ab70982 100644 --- a/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanServiceImpl.java @@ -1807,22 +1807,42 @@ public class AdPlanServiceImpl extends ServiceImpl impleme // 排除已存在的,再入库 List devIds = devList.stream().map(PqDev::getId).collect(Collectors.toList()); List pqDevSubs = pqDevSubService.lambdaQuery().in(PqDevSub::getDevId, devIds).list(); - List hadDevIds = pqDevSubs.stream().map(PqDevSub::getDevId).collect(Collectors.toList()); + Map hadDevMaps = pqDevSubs.stream().collect(Collectors.toMap(PqDevSub::getDevId, PqDevSub::getCheckState)); + List updateDevList = new ArrayList<>(); + // 更新被检设备 + for (Map.Entry entry : hadDevMaps.entrySet()) { + String devId = entry.getKey(); + Integer checkState = entry.getValue(); + if (checkState.equals(CheckStateEnum.UNCHECKED.getValue())) { + devList.stream().filter(dev -> dev.getId().equals(devId)) + .findFirst().ifPresent(dev -> updateDevList.add(dev)); + } + } + if (CollUtil.isNotEmpty(updateDevList)) { + pqDevService.updateBatchById(updateDevList); + // 更新监测点数据 + for (PqDev dev : updateDevList) { + pqMonitorService.saveOrUpdateBatch(dev.getMonitorList()); + } + } // 新增被检设备 - List saveDevList = devList.stream().filter(dev -> !hadDevIds.contains(dev.getId())).collect(Collectors.toList()); - pqDevService.saveBatch(saveDevList); - saveDevList.forEach(dev -> { - pqMonitorService.saveOrUpdateBatch(dev.getMonitorList()); - // 新增时默认设置 - PqDevSub pqDevSub = new PqDevSub(); - pqDevSub.setDevId(dev.getId()); - pqDevSub.setTimeCheckResult(TimeCheckResultEnum.UNKNOWN.getValue()); - pqDevSub.setFactorCheckResult(FactorCheckResultEnum.UNKNOWN.getValue()); - pqDevSub.setCheckState(CheckStateEnum.UNCHECKED.getValue()); - pqDevSub.setReportState(DevReportStateEnum.UNCHECKED.getValue()); - pqDevSub.setCheckResult(CheckResultEnum.UNCHECKED.getValue()); - pqDevSubService.save(pqDevSub); - }); + List saveDevList = devList.stream().filter(dev -> !hadDevMaps.keySet().contains(dev.getId())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(saveDevList)) { + pqDevService.saveBatch(saveDevList); + saveDevList.forEach(dev -> { + pqMonitorService.saveBatch(dev.getMonitorList()); + // 新增时默认设置 + PqDevSub pqDevSub = new PqDevSub(); + pqDevSub.setDevId(dev.getId()); + pqDevSub.setTimeCheckResult(TimeCheckResultEnum.UNKNOWN.getValue()); + pqDevSub.setFactorCheckResult(FactorCheckResultEnum.UNKNOWN.getValue()); + pqDevSub.setCheckState(CheckStateEnum.UNCHECKED.getValue()); + pqDevSub.setReportState(DevReportStateEnum.UNCHECKED.getValue()); + pqDevSub.setCheckResult(CheckResultEnum.UNCHECKED.getValue()); + pqDevSubService.save(pqDevSub); + }); + } + // 移除未检测的被检设备 List uncheckedDevIds = pqDevSubs.stream() .filter(pqDevSub -> pqDevSub.getCheckState().equals(CheckStateEnum.UNCHECKED.getValue())) @@ -1835,6 +1855,7 @@ public class AdPlanServiceImpl extends ServiceImpl impleme if (CollUtil.isNotEmpty(removeDevIds)) { pqDevService.removeByIds(removeDevIds); pqDevSubService.remove(new LambdaQueryWrapper().in(PqDevSub::getDevId, removeDevIds)); + pqMonitorService.remove(new LambdaQueryWrapper().in(PqMonitor::getDevId, removeDevIds)); } // 批量更新标准设备信息 pqStandardDevService.saveOrUpdateBatch(standardDevList);