diff --git a/xinnengyuan/ruoyi-admin/src/test/java/org/dromara/test/DemoTest.java b/xinnengyuan/ruoyi-admin/src/test/java/org/dromara/test/DemoTest.java index cd991a4c..6b32260d 100644 --- a/xinnengyuan/ruoyi-admin/src/test/java/org/dromara/test/DemoTest.java +++ b/xinnengyuan/ruoyi-admin/src/test/java/org/dromara/test/DemoTest.java @@ -22,6 +22,7 @@ public class DemoTest { void test() { Boolean result = photovoltaicPanelPartsService .updatePartsFinishStatus( + "14", new Date(), 1897160897167638529L, 1927270270872109058L, diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/service/IFacPhotovoltaicPanelPartsService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/service/IFacPhotovoltaicPanelPartsService.java index e32d1467..c40d60f3 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/service/IFacPhotovoltaicPanelPartsService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/service/IFacPhotovoltaicPanelPartsService.java @@ -77,12 +77,13 @@ public interface IFacPhotovoltaicPanelPartsService { /** * 更新光伏板点完成状态 * + * @param workType 类型 * @param finishDate 完成时间 * @param projectId 项目id * @param matrixId 方阵id * @param photovoltaicPanelNameList 光伏板名称列表 * @return 是否更新成功 */ - Boolean updatePartsFinishStatus(Date finishDate, Long projectId, Long matrixId, List photovoltaicPanelNameList); + Boolean updatePartsFinishStatus(String workType, Date finishDate, Long projectId, Long matrixId, List photovoltaicPanelNameList); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/service/impl/FacPhotovoltaicPanelPartsServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/service/impl/FacPhotovoltaicPanelPartsServiceImpl.java index 7b626927..64fdd7c7 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/service/impl/FacPhotovoltaicPanelPartsServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/facility/service/impl/FacPhotovoltaicPanelPartsServiceImpl.java @@ -133,7 +133,7 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan } // 设置 redis key,防止多次操作 redisTemplate.opsForValue().set(operationRedisKey, true); - messageDto.setMessage("桩点、立柱、支架数据上传完毕,等待中"); + messageDto.setMessage("桩点、立柱、支架数据上传完毕,数据处理中"); SseMessageUtils.publishMessage(messageDto); scheduledExecutorService.execute(() -> { try { @@ -168,12 +168,40 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan * @param userId 操作用户id */ private void saveBatch(Long projectId, List features, Long userId) { + // 获取进度类别 Map + List progressCategoryNameList = List.of( + FacPhotovoltaicPanelPartsConstant.POINT, + FacPhotovoltaicPanelPartsConstant.COLUMN, + FacPhotovoltaicPanelPartsConstant.SUPPORT + ); + List progressCategoryList = progressCategoryService.lambdaQuery() + .select(PgsProgressCategory::getId, PgsProgressCategory::getName, PgsProgressCategory::getMatrixId) + .in(PgsProgressCategory::getName, progressCategoryNameList) + .in(PgsProgressCategory::getProjectId, projectId, PgsProgressCategoryConstant.PUBLIC_PROJECT_ID) + .list(); + Map> progressCategoryMap = progressCategoryList.stream() + .collect(Collectors.groupingBy( + progressCategory -> progressCategory.getMatrixId() + "_" + progressCategory.getName() + )); // 查询项目下光伏板 List photovoltaicPanelList = photovoltaicPanelService.lambdaQuery() - .eq(FacPhotovoltaicPanel::getProjectId, projectId).list(); + .eq(FacPhotovoltaicPanel::getProjectId, projectId) + .list(); + Map photovoltaicPanelMap = photovoltaicPanelList.stream() + .collect(Collectors.toMap( + FacPhotovoltaicPanel::getName, + Function.identity(), + (existing, replacement) -> existing // 如果有重复,保留第一个 + )); // 获取数据库中所有点的列表 List oldPointList = photovoltaicPanelPointService.lambdaQuery() - .eq(FacPhotovoltaicPanelPoint::getProjectId, projectId).list(); + .select(FacPhotovoltaicPanelPoint::getId, + FacPhotovoltaicPanelPoint::getName, + FacPhotovoltaicPanelPoint::getFinishType, + FacPhotovoltaicPanelPoint::getFinishDate, + FacPhotovoltaicPanelPoint::getStatus) + .eq(FacPhotovoltaicPanelPoint::getProjectId, projectId) + .list(); Map oldPointMap = oldPointList.stream() .collect(Collectors.toMap( FacPhotovoltaicPanelPoint::getName, @@ -181,7 +209,13 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan (existing, replacement) -> existing // 如果有重复,保留第一个 )); List oldColumnList = photovoltaicPanelColumnService.lambdaQuery() - .eq(FacPhotovoltaicPanelColumn::getProjectId, projectId).list(); + .select(FacPhotovoltaicPanelColumn::getId, + FacPhotovoltaicPanelColumn::getName, + FacPhotovoltaicPanelColumn::getFinishType, + FacPhotovoltaicPanelColumn::getFinishDate, + FacPhotovoltaicPanelColumn::getStatus) + .eq(FacPhotovoltaicPanelColumn::getProjectId, projectId) + .list(); Map oldColumnMap = oldColumnList.stream() .collect(Collectors.toMap( FacPhotovoltaicPanelColumn::getName, @@ -189,108 +223,119 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan (existing, replacement) -> existing // 如果有重复,保留第一个 )); List oldSupportList = photovoltaicPanelSupportService.lambdaQuery() - .eq(FacPhotovoltaicPanelSupport::getProjectId, projectId).list(); + .select(FacPhotovoltaicPanelSupport::getId, + FacPhotovoltaicPanelSupport::getName, + FacPhotovoltaicPanelSupport::getFinishType, + FacPhotovoltaicPanelSupport::getFinishDate, + FacPhotovoltaicPanelSupport::getStatus) + .eq(FacPhotovoltaicPanelSupport::getProjectId, projectId) + .list(); Map oldSupportMap = oldSupportList.stream() .collect(Collectors.toMap( FacPhotovoltaicPanelSupport::getName, Function.identity(), (existing, replacement) -> existing // 如果有重复,保留第一个 )); - // 获取所有点列表 - List> pointPositionList = new ArrayList<> - (features.stream().map(featureByPoint -> featureByPoint.getGeometry().getCoordinates()).toList()); - List pointList = new ArrayList<>(); - List columnList = new ArrayList<>(); - List supportList = new ArrayList<>(); - // 获取进度类别 - List progressCategoryNameList = List.of(FacPhotovoltaicPanelPartsConstant.POINT, - FacPhotovoltaicPanelPartsConstant.COLUMN, - FacPhotovoltaicPanelPartsConstant.SUPPORT); - Map progressCategoryMap = progressCategoryService.lambdaQuery() - .in(PgsProgressCategory::getName, progressCategoryNameList) - .in(PgsProgressCategory::getProjectId, projectId, PgsProgressCategoryConstant.PUBLIC_PROJECT_ID) - .list() - .stream().collect(Collectors.toMap( - PgsProgressCategory::getName, - Function.identity(), - (existing, replacement) -> existing - )); - // 遍历所有光伏板,找到所有匹配的点 - for (FacPhotovoltaicPanel photovoltaicPanel : photovoltaicPanelList) { - String positions = photovoltaicPanel.getPositions(); - List> positionList = new ArrayList<>(); - List arr = JSONUtil.toList(positions, String.class); - for (String s : arr) { - positionList.add(JSONUtil.toList(s, Double.class)); + // 线程安全集合 + List pointList = Collections.synchronizedList(new ArrayList<>()); + List columnList = Collections.synchronizedList(new ArrayList<>()); + List supportList = Collections.synchronizedList(new ArrayList<>()); + try (ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors())) { + // 所有点列表 + List> pointPositionList = new ArrayList<>(features.stream() + .map(featureByPoint -> featureByPoint.getGeometry().getCoordinates()) + .toList()); + // 多线程处理 + List> futures = new ArrayList<>(); + List> sharedPointList = Collections.synchronizedList(pointPositionList); + for (Map.Entry entry : photovoltaicPanelMap.entrySet()) { + FacPhotovoltaicPanel photovoltaicPanel = entry.getValue(); + Future future = executor.submit(() -> { + List> positionList = JSONUtil.toList(photovoltaicPanel.getPositions(), String.class) + .stream().map(s -> JSONUtil.toList(s, Double.class)).collect(Collectors.toList()); + List> pointInPlaneList = JSTUtil.getPointInPlaneList(positionList, sharedPointList); + if (CollUtil.isNotEmpty(pointInPlaneList)) { + int i = 1; + for (List list : pointInPlaneList) { + String str = String.format("%02d", i++); + String name = photovoltaicPanel.getName() + "." + str; + Long matrixId = photovoltaicPanel.getMatrixId(); + String jsonStr = JSONUtil.toJsonStr(list); + // 创建 Point + FacPhotovoltaicPanelPoint point = new FacPhotovoltaicPanelPoint(); + point.setProjectId(projectId); + point.setMatrixId(matrixId); + point.setName(name); + point.setPositions(jsonStr); + point.setCreateBy(userId); + point.setUpdateBy(userId); + if (oldPointMap.containsKey(name)) { + FacPhotovoltaicPanelPoint oldPoint = oldPointMap.get(name); + point.setFinishType(oldPoint.getFinishType()); + point.setFinishDate(oldPoint.getFinishDate()); + point.setStatus(oldPoint.getStatus()); + } + String pointMapKey = matrixId + "_" + FacPhotovoltaicPanelPartsConstant.POINT; + if (progressCategoryMap.containsKey(pointMapKey)) { + PgsProgressCategory cat = progressCategoryMap.get(pointMapKey).getFirst(); + point.setProgressCategoryId(cat.getId()); + point.setProgressCategoryName(cat.getName()); + } + pointList.add(point); + // 创建 Column + FacPhotovoltaicPanelColumn column = new FacPhotovoltaicPanelColumn(); + column.setProjectId(projectId); + column.setMatrixId(matrixId); + column.setName(name); + column.setPositions(jsonStr); + column.setCreateBy(userId); + column.setUpdateBy(userId); + if (oldColumnMap.containsKey(name)) { + FacPhotovoltaicPanelColumn oldColumn = oldColumnMap.get(name); + column.setFinishType(oldColumn.getFinishType()); + column.setFinishDate(oldColumn.getFinishDate()); + column.setStatus(oldColumn.getStatus()); + } + String columnMapKey = matrixId + "_" + FacPhotovoltaicPanelPartsConstant.COLUMN; + if (progressCategoryMap.containsKey(columnMapKey)) { + PgsProgressCategory cat = progressCategoryMap.get(columnMapKey).getFirst(); + column.setProgressCategoryId(cat.getId()); + column.setProgressCategoryName(cat.getName()); + } + columnList.add(column); + // 创建 Support + FacPhotovoltaicPanelSupport support = new FacPhotovoltaicPanelSupport(); + support.setProjectId(projectId); + support.setMatrixId(matrixId); + support.setName(name); + support.setPositions(jsonStr); + support.setCreateBy(userId); + support.setUpdateBy(userId); + if (oldSupportMap.containsKey(name)) { + FacPhotovoltaicPanelSupport oldSupport = oldSupportMap.get(name); + support.setFinishType(oldSupport.getFinishType()); + support.setFinishDate(oldSupport.getFinishDate()); + support.setStatus(oldSupport.getStatus()); + } + String supportMapKey = matrixId + "_" + FacPhotovoltaicPanelPartsConstant.SUPPORT; + if (progressCategoryMap.containsKey(supportMapKey)) { + PgsProgressCategory cat = progressCategoryMap.get(supportMapKey).getFirst(); + support.setProgressCategoryId(cat.getId()); + support.setProgressCategoryName(cat.getName()); + } + supportList.add(support); + } + } + }); + futures.add(future); } - // 获取点在面内的点 - List> pointInPlaneList = JSTUtil.getPointInPlaneList(positionList, pointPositionList); - // 删除点在面内的点 - pointPositionList.removeAll(pointInPlaneList); - // 判断点在面内的点是否为空 - if (CollUtil.isNotEmpty(pointInPlaneList)) { - int i = 1; - // 遍历点在面内的点,添加实体信息 - for (List list : pointInPlaneList) { - String str = String.format("%02d", i); - String name = photovoltaicPanel.getName() + "." + str; - Long matrixId = photovoltaicPanel.getMatrixId(); - String jsonStr = JSONUtil.toJsonStr(list); - FacPhotovoltaicPanelPoint photovoltaicPanelPoint = new FacPhotovoltaicPanelPoint(); - photovoltaicPanelPoint.setProjectId(projectId); - photovoltaicPanelPoint.setMatrixId(matrixId); - photovoltaicPanelPoint.setName(name); - photovoltaicPanelPoint.setPositions(jsonStr); - photovoltaicPanelPoint.setCreateBy(userId); - photovoltaicPanelPoint.setUpdateBy(userId); - if (CollUtil.isNotEmpty(oldPointMap) && oldPointMap.containsKey(name)) { - FacPhotovoltaicPanelPoint oldPoint = oldPointMap.get(name); - photovoltaicPanelPoint.setFinishType(oldPoint.getFinishType()); - photovoltaicPanelPoint.setStatus(oldPoint.getStatus()); - } - if (CollUtil.isNotEmpty(progressCategoryMap) && progressCategoryMap.containsKey(FacPhotovoltaicPanelPartsConstant.POINT)) { - PgsProgressCategory progressCategory = progressCategoryMap.get(FacPhotovoltaicPanelPartsConstant.POINT); - photovoltaicPanelPoint.setProgressCategoryId(progressCategory.getId()); - photovoltaicPanelPoint.setProgressCategoryName(progressCategory.getName()); - } - pointList.add(photovoltaicPanelPoint); - FacPhotovoltaicPanelColumn photovoltaicPanelColumn = new FacPhotovoltaicPanelColumn(); - photovoltaicPanelColumn.setProjectId(projectId); - photovoltaicPanelColumn.setMatrixId(matrixId); - photovoltaicPanelColumn.setName(name); - photovoltaicPanelColumn.setPositions(jsonStr); - photovoltaicPanelColumn.setCreateBy(userId); - photovoltaicPanelColumn.setUpdateBy(userId); - if (CollUtil.isNotEmpty(oldColumnMap) && oldColumnMap.containsKey(name)) { - FacPhotovoltaicPanelColumn oldColumn = oldColumnMap.get(name); - photovoltaicPanelColumn.setFinishType(oldColumn.getFinishType()); - photovoltaicPanelColumn.setStatus(oldColumn.getStatus()); - } - if (CollUtil.isNotEmpty(progressCategoryMap) && progressCategoryMap.containsKey(FacPhotovoltaicPanelPartsConstant.COLUMN)) { - PgsProgressCategory progressCategory = progressCategoryMap.get(FacPhotovoltaicPanelPartsConstant.COLUMN); - photovoltaicPanelColumn.setProgressCategoryId(progressCategory.getId()); - photovoltaicPanelColumn.setProgressCategoryName(progressCategory.getName()); - } - columnList.add(photovoltaicPanelColumn); - FacPhotovoltaicPanelSupport photovoltaicPanelSupport = new FacPhotovoltaicPanelSupport(); - photovoltaicPanelSupport.setProjectId(projectId); - photovoltaicPanelSupport.setMatrixId(matrixId); - photovoltaicPanelSupport.setName(name); - photovoltaicPanelSupport.setPositions(jsonStr); - photovoltaicPanelSupport.setCreateBy(userId); - photovoltaicPanelSupport.setUpdateBy(userId); - if (CollUtil.isNotEmpty(oldSupportMap) && oldSupportMap.containsKey(name)) { - FacPhotovoltaicPanelSupport oldSupport = oldSupportMap.get(name); - photovoltaicPanelSupport.setFinishType(oldSupport.getFinishType()); - photovoltaicPanelSupport.setStatus(oldSupport.getStatus()); - } - if (CollUtil.isNotEmpty(progressCategoryMap) && progressCategoryMap.containsKey(FacPhotovoltaicPanelPartsConstant.SUPPORT)) { - PgsProgressCategory progressCategory = progressCategoryMap.get(FacPhotovoltaicPanelPartsConstant.SUPPORT); - photovoltaicPanelSupport.setProgressCategoryId(progressCategory.getId()); - photovoltaicPanelSupport.setProgressCategoryName(progressCategory.getName()); - } - supportList.add(photovoltaicPanelSupport); - i++; + // 等待所有线程完成 + for (Future future : futures) { + try { + future.get(); + } catch (Exception e) { + log.error("多线程进行光伏板点位与面匹配异常", e); + throw new ServiceException("进行光伏板点位与面匹配异常", HttpStatus.ERROR); } } } @@ -550,6 +595,7 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan /** * 更新光伏板点完成状态 * + * @param workType 类型 * @param finishDate 完成时间 * @param projectId 项目id * @param matrixId 方阵id @@ -558,69 +604,90 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan */ @Override @Transactional(rollbackFor = Exception.class) - public Boolean updatePartsFinishStatus(Date finishDate, Long projectId, Long matrixId, List photovoltaicPanelNameList) { + public Boolean updatePartsFinishStatus(String workType, Date finishDate, Long projectId, Long matrixId, List photovoltaicPanelNameList) { if (CollUtil.isEmpty(photovoltaicPanelNameList)) { return true; } - LambdaUpdateWrapper pointWrapper = new LambdaUpdateWrapper<>(); - pointWrapper.eq(FacPhotovoltaicPanelPoint::getProjectId, projectId); - pointWrapper.eq(FacPhotovoltaicPanelPoint::getMatrixId, matrixId); - pointWrapper.and(query -> { - for (int i = 0; i < photovoltaicPanelNameList.size(); i++) { - String prefix = photovoltaicPanelNameList.get(i) + "."; - if (i == 0) { - query.likeRight(FacPhotovoltaicPanelPoint::getName, prefix); - } else { - query.or().likeRight(FacPhotovoltaicPanelPoint::getName, prefix); + switch (workType) { + case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_POINT_WORK_TYPE -> { + LambdaUpdateWrapper pointWrapper = new LambdaUpdateWrapper<>(); + pointWrapper.eq(FacPhotovoltaicPanelPoint::getProjectId, projectId); + pointWrapper.eq(FacPhotovoltaicPanelPoint::getMatrixId, matrixId); + pointWrapper.and(query -> { + for (int i = 0; i < photovoltaicPanelNameList.size(); i++) { + String prefix = photovoltaicPanelNameList.get(i) + "."; + if (i == 0) { + query.likeRight(FacPhotovoltaicPanelPoint::getName, prefix); + } else { + query.or().likeRight(FacPhotovoltaicPanelPoint::getName, prefix); + } + } + }); + long count = photovoltaicPanelPointService.count(pointWrapper); + if (count <= 0) { + throw new ServiceException("光伏板桩点数据不存在,请导入数据后再进行操作`", HttpStatus.NOT_FOUND); + } + pointWrapper.set(FacPhotovoltaicPanelPoint::getFinishDate, finishDate); + pointWrapper.set(FacPhotovoltaicPanelPoint::getFinishType, FacFinishTypeEnum.HAND.getValue()); + pointWrapper.set(FacPhotovoltaicPanelPoint::getStatus, FacFinishStatusEnum.FINISH.getValue()); + boolean updatePoint = photovoltaicPanelPointService.update(pointWrapper); + if (!updatePoint) { + throw new ServiceException("桩点信息更新失败", HttpStatus.ERROR); } } - }); - pointWrapper.set(FacPhotovoltaicPanelPoint::getFinishDate, finishDate); - pointWrapper.set(FacPhotovoltaicPanelPoint::getFinishType, FacFinishTypeEnum.HAND.getValue()); - pointWrapper.set(FacPhotovoltaicPanelPoint::getStatus, FacFinishStatusEnum.FINISH.getValue()); - boolean updatePoint = photovoltaicPanelPointService.update(pointWrapper); - if (!updatePoint) { - throw new ServiceException("桩点信息更新失败", HttpStatus.ERROR); - } - LambdaUpdateWrapper columnWrapper = new LambdaUpdateWrapper<>(); - columnWrapper.eq(FacPhotovoltaicPanelColumn::getProjectId, projectId); - columnWrapper.eq(FacPhotovoltaicPanelColumn::getMatrixId, matrixId); - columnWrapper.and(query -> { - for (int i = 0; i < photovoltaicPanelNameList.size(); i++) { - String prefix = photovoltaicPanelNameList.get(i) + "."; - if (i == 0) { - query.likeRight(FacPhotovoltaicPanelColumn::getName, prefix); - } else { - query.or().likeRight(FacPhotovoltaicPanelColumn::getName, prefix); + case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_COLUMN_WORK_TYPE -> { + LambdaUpdateWrapper columnWrapper = new LambdaUpdateWrapper<>(); + columnWrapper.eq(FacPhotovoltaicPanelColumn::getProjectId, projectId); + columnWrapper.eq(FacPhotovoltaicPanelColumn::getMatrixId, matrixId); + columnWrapper.and(query -> { + for (int i = 0; i < photovoltaicPanelNameList.size(); i++) { + String prefix = photovoltaicPanelNameList.get(i) + "."; + if (i == 0) { + query.likeRight(FacPhotovoltaicPanelColumn::getName, prefix); + } else { + query.or().likeRight(FacPhotovoltaicPanelColumn::getName, prefix); + } + } + }); + long count = photovoltaicPanelColumnService.count(columnWrapper); + if (count <= 0) { + throw new ServiceException("光伏板立柱数据不存在,请导入数据后再进行操作", HttpStatus.NOT_FOUND); + } + columnWrapper.set(FacPhotovoltaicPanelColumn::getFinishDate, finishDate); + columnWrapper.set(FacPhotovoltaicPanelColumn::getFinishType, FacFinishTypeEnum.HAND.getValue()); + columnWrapper.set(FacPhotovoltaicPanelColumn::getStatus, FacFinishStatusEnum.FINISH.getValue()); + boolean updateColumn = photovoltaicPanelColumnService.update(columnWrapper); + if (!updateColumn) { + throw new ServiceException("立柱信息更新失败", HttpStatus.ERROR); } } - }); - columnWrapper.set(FacPhotovoltaicPanelColumn::getFinishDate, finishDate); - columnWrapper.set(FacPhotovoltaicPanelColumn::getFinishType, FacFinishTypeEnum.HAND.getValue()); - columnWrapper.set(FacPhotovoltaicPanelColumn::getStatus, FacFinishStatusEnum.FINISH.getValue()); - boolean updateColumn = photovoltaicPanelColumnService.update(columnWrapper); - if (!updateColumn) { - throw new ServiceException("立柱信息更新失败", HttpStatus.ERROR); - } - LambdaUpdateWrapper supportWrapper = new LambdaUpdateWrapper<>(); - supportWrapper.eq(FacPhotovoltaicPanelSupport::getProjectId, projectId); - supportWrapper.eq(FacPhotovoltaicPanelSupport::getMatrixId, matrixId); - supportWrapper.and(query -> { - for (int i = 0; i < photovoltaicPanelNameList.size(); i++) { - String prefix = photovoltaicPanelNameList.get(i) + "."; - if (i == 0) { - query.likeRight(FacPhotovoltaicPanelSupport::getName, prefix); - } else { - query.or().likeRight(FacPhotovoltaicPanelSupport::getName, prefix); + case PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_SUPPORT_WORK_TYPE -> { + LambdaUpdateWrapper supportWrapper = new LambdaUpdateWrapper<>(); + supportWrapper.eq(FacPhotovoltaicPanelSupport::getProjectId, projectId); + supportWrapper.eq(FacPhotovoltaicPanelSupport::getMatrixId, matrixId); + supportWrapper.and(query -> { + for (int i = 0; i < photovoltaicPanelNameList.size(); i++) { + String prefix = photovoltaicPanelNameList.get(i) + "."; + if (i == 0) { + query.likeRight(FacPhotovoltaicPanelSupport::getName, prefix); + } else { + query.or().likeRight(FacPhotovoltaicPanelSupport::getName, prefix); + } + } + }); + long count = photovoltaicPanelSupportService.count(supportWrapper); + if (count <= 0) { + throw new ServiceException("光伏板支架数据不存在,请导入数据后再进行操作", HttpStatus.NOT_FOUND); + } + supportWrapper.set(FacPhotovoltaicPanelSupport::getFinishDate, finishDate); + supportWrapper.set(FacPhotovoltaicPanelSupport::getFinishType, FacFinishTypeEnum.HAND.getValue()); + supportWrapper.set(FacPhotovoltaicPanelSupport::getStatus, FacFinishStatusEnum.FINISH.getValue()); + boolean updateSupport = photovoltaicPanelSupportService.update(supportWrapper); + if (!updateSupport) { + throw new ServiceException("支架信息更新失败", HttpStatus.ERROR); } } - }); - supportWrapper.set(FacPhotovoltaicPanelSupport::getFinishDate, finishDate); - supportWrapper.set(FacPhotovoltaicPanelSupport::getFinishType, FacFinishTypeEnum.HAND.getValue()); - supportWrapper.set(FacPhotovoltaicPanelSupport::getStatus, FacFinishStatusEnum.FINISH.getValue()); - boolean updateSupport = photovoltaicPanelSupportService.update(supportWrapper); - if (!updateSupport) { - throw new ServiceException("支架信息更新失败", HttpStatus.ERROR); + case null, default -> throw new ServiceException("未知设施类型", HttpStatus.ERROR); } return true; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/constant/PgsProgressCategoryConstant.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/constant/PgsProgressCategoryConstant.java index cb15affc..3270db89 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/constant/PgsProgressCategoryConstant.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/constant/PgsProgressCategoryConstant.java @@ -13,7 +13,20 @@ public interface PgsProgressCategoryConstant { */ Long PUBLIC_PROJECT_ID = 0L; - String PHOTOVOLTAIC_PANEL_WORK_TYPE = "15"; + /** + * 光伏板钻孔进度类别 + */ + String PHOTOVOLTAIC_PANEL_POINT_WORK_TYPE = "12"; + + /** + * 光伏板桩基进度类别 + */ + String PHOTOVOLTAIC_PANEL_COLUMN_WORK_TYPE = "13"; + + /** + * 光伏板支架进度类别 + */ + String PHOTOVOLTAIC_PANEL_SUPPORT_WORK_TYPE = "14"; /** * 光伏板进度类别名称 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/service/impl/PgsProgressPlanDetailServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/service/impl/PgsProgressPlanDetailServiceImpl.java index 7a97307f..57f84ba0 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/service/impl/PgsProgressPlanDetailServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/service/impl/PgsProgressPlanDetailServiceImpl.java @@ -140,6 +140,7 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl nameList = finishedDetailList.stream().map(PgsProgressPlanDetailFinishedVo::getName).toList(); Boolean result = photovoltaicPanelPartsService.updatePartsFinishStatus( + workType, planDate, projectId, matrixId,