From 034e5b87a7ff475396ba752bd6d3cf697663299a Mon Sep 17 00:00:00 2001 From: lcj <2331845269@qq.com> Date: Fri, 30 May 2025 19:35:12 +0800 Subject: [PATCH] =?UTF-8?q?[add]=20=E6=96=B0=E5=A2=9E=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E8=AE=BE=E6=96=BD=E5=9D=90=E6=A0=87=E6=8E=A5=E5=8F=A3=20[updat?= =?UTF-8?q?e]=20=E4=BF=AE=E6=94=B9=E8=BF=9B=E5=BA=A6=E8=AE=A1=E5=88=92?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/java/org/dromara/test/DemoTest.java | 31 +++++ .../IFacPhotovoltaicPanelPartsService.java | 12 +- .../FacPhotovoltaicPanelPartsServiceImpl.java | 86 ++++++++++++- .../PgsProgressCategoryController.java | 13 ++ .../domain/enums/PgsCoordinateTypeEnum.java | 34 +++++ .../PgsProgressCategoryCoordinateVo.java | 30 +++++ .../PgsProgressCategoryFacilityVo.java | 49 ++++++++ .../PgsProgressPlanDetailDateVo.java | 30 +++++ .../service/IPgsProgressCategoryService.java | 9 ++ .../impl/PgsProgressCategoryServiceImpl.java | 119 +++++++++++++++++- .../PgsProgressPlanDetailServiceImpl.java | 53 ++++---- .../org/dromara/utils/JsonDimensionUtil.java | 24 ++++ 12 files changed, 453 insertions(+), 37 deletions(-) create mode 100644 xinnengyuan/ruoyi-admin/src/test/java/org/dromara/test/DemoTest.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/enums/PgsCoordinateTypeEnum.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/vo/progresscategory/PgsProgressCategoryCoordinateVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/vo/progresscategory/PgsProgressCategoryFacilityVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/vo/progressplandetail/PgsProgressPlanDetailDateVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/utils/JsonDimensionUtil.java 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 new file mode 100644 index 00000000..cd991a4c --- /dev/null +++ b/xinnengyuan/ruoyi-admin/src/test/java/org/dromara/test/DemoTest.java @@ -0,0 +1,31 @@ +package org.dromara.test; + +import jakarta.annotation.Resource; +import org.dromara.facility.service.IFacPhotovoltaicPanelPartsService; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.Date; +import java.util.List; + +/** + * @author lcj + * @date 2025/5/30 9:48 + */ +@SpringBootTest +public class DemoTest { + + @Resource + private IFacPhotovoltaicPanelPartsService photovoltaicPanelPartsService; + + @Test + void test() { + Boolean result = photovoltaicPanelPartsService + .updatePartsFinishStatus( + new Date(), + 1897160897167638529L, + 1927270270872109058L, + List.of("G01.01.01", "G01.08.06") + ); + } +} 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 bbb3cad9..e32d1467 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 @@ -7,6 +7,7 @@ import org.dromara.facility.domain.dto.photovoltaicpanelparts.FacPhotovoltaicPan import org.dromara.facility.domain.dto.photovoltaicpanelparts.FacPhotovoltaicPanelPartsCreateReq; import java.util.Collection; +import java.util.Date; import java.util.List; /** @@ -73,6 +74,15 @@ public interface IFacPhotovoltaicPanelPartsService { */ Boolean validPartsExistByPhotovoltaicPanel(Long projectId, Collection photovoltaicPanelNames); - + /** + * 更新光伏板点完成状态 + * + * @param finishDate 完成时间 + * @param projectId 项目id + * @param matrixId 方阵id + * @param photovoltaicPanelNameList 光伏板名称列表 + * @return 是否更新成功 + */ + Boolean updatePartsFinishStatus(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 2f7b8a95..7b626927 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 @@ -3,6 +3,7 @@ package org.dromara.facility.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.HttpStatus; @@ -20,6 +21,8 @@ import org.dromara.facility.domain.FacPhotovoltaicPanelSupport; import org.dromara.facility.domain.dto.geojson.FacFeatureByPoint; import org.dromara.facility.domain.dto.photovoltaicpanelparts.FacPhotovoltaicPanelPartsCreateByGeoJsonReq; import org.dromara.facility.domain.dto.photovoltaicpanelparts.FacPhotovoltaicPanelPartsCreateReq; +import org.dromara.facility.domain.enums.FacFinishStatusEnum; +import org.dromara.facility.domain.enums.FacFinishTypeEnum; import org.dromara.facility.service.*; import org.dromara.progress.constant.PgsProgressCategoryConstant; import org.dromara.progress.domain.PgsProgressCategory; @@ -34,10 +37,7 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -547,6 +547,84 @@ public class FacPhotovoltaicPanelPartsServiceImpl implements IFacPhotovoltaicPan return photovoltaicPanelSupportService.count(supportWrapper) > 0; } + /** + * 更新光伏板点完成状态 + * + * @param finishDate 完成时间 + * @param projectId 项目id + * @param matrixId 方阵id + * @param photovoltaicPanelNameList 光伏板名称列表 + * @return 是否更新成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updatePartsFinishStatus(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); + } + } + }); + 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); + } + } + }); + 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); + } + } + }); + 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); + } + return true; + } + /** * 校验名称是否重复 * diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/PgsProgressCategoryController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/PgsProgressCategoryController.java index 0966188c..591124a2 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/PgsProgressCategoryController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/PgsProgressCategoryController.java @@ -16,6 +16,7 @@ import org.dromara.common.web.core.BaseController; import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryCreateReq; import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryQueryReq; import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryUpdateReq; +import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryCoordinateVo; import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryLastTimeVo; import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryVo; import org.dromara.progress.service.IPgsProgressCategoryService; @@ -71,6 +72,18 @@ public class PgsProgressCategoryController extends BaseController { return R.ok(pgsProgressCategoryService.queryById(id)); } + /** + * 获取进度类别坐标信息 + * + * @param id 主键 + */ + @SaCheckPermission("progress:progressCategory:query") + @GetMapping("/coordinate/{id}") + public R getCoordinate(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(pgsProgressCategoryService.getCoordinate(id)); + } + /** * 获取进度类别最后一次进度信息 * diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/enums/PgsCoordinateTypeEnum.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/enums/PgsCoordinateTypeEnum.java new file mode 100644 index 00000000..7a5323be --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/enums/PgsCoordinateTypeEnum.java @@ -0,0 +1,34 @@ +package org.dromara.progress.domain.enums; + +import lombok.Getter; + +/** + * @author lcj + * @date 2025/5/30 14:59 + */ +@Getter +public enum PgsCoordinateTypeEnum { + + POINT("Point", 1), + POLYGON("Polygon", 2); + + private final String text; + + private final int value; + + PgsCoordinateTypeEnum(String text, int value) { + this.text = text; + this.value = value; + } + + // 根据 value 获取对应的 text + public static String getTextByValue(int value) { + for (PgsCoordinateTypeEnum type : values()) { + if (type.getValue() == value) { + return type.getText(); + } + } + return null; + } + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/vo/progresscategory/PgsProgressCategoryCoordinateVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/vo/progresscategory/PgsProgressCategoryCoordinateVo.java new file mode 100644 index 00000000..890c69a1 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/vo/progresscategory/PgsProgressCategoryCoordinateVo.java @@ -0,0 +1,30 @@ +package org.dromara.progress.domain.vo.progresscategory; + +import lombok.Data; +import org.dromara.progress.domain.vo.progressplandetail.PgsProgressPlanDetailDateVo; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * @author lcj + * @date 2025/5/30 10:53 + */ +@Data +public class PgsProgressCategoryCoordinateVo implements Serializable { + + @Serial + private static final long serialVersionUID = 9161894407675118073L; + + /** + * 设施列表 + */ + private List facilityList; + + /** + * 进度计划列表 + */ + private List detailList; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/vo/progresscategory/PgsProgressCategoryFacilityVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/vo/progresscategory/PgsProgressCategoryFacilityVo.java new file mode 100644 index 00000000..25022493 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/vo/progresscategory/PgsProgressCategoryFacilityVo.java @@ -0,0 +1,49 @@ +package org.dromara.progress.domain.vo.progresscategory; + +import cn.hutool.json.JSONArray; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; + +/** + * @author lcj + * @date 2025/5/30 11:26 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class PgsProgressCategoryFacilityVo { + + /** + * 主键 + */ + private Long id; + + /** + * 光伏板名称 + */ + private String name; + + /** + * 位置 + */ + private JSONArray positions; + + /** + * 坐标类型 + */ + private String type; + + /** + * 完成状态(0未开始 1进行中 2完成) + */ + private String status; + + /** + * 完成时间 + */ + private LocalDate finishDate; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/vo/progressplandetail/PgsProgressPlanDetailDateVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/vo/progressplandetail/PgsProgressPlanDetailDateVo.java new file mode 100644 index 00000000..fd20184e --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/vo/progressplandetail/PgsProgressPlanDetailDateVo.java @@ -0,0 +1,30 @@ +package org.dromara.progress.domain.vo.progressplandetail; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @author lcj + * @date 2025/5/30 11:01 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class PgsProgressPlanDetailDateVo { + + /** + * 主键id + */ + private Long id; + + /** + * 计划时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + private Date date; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/service/IPgsProgressCategoryService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/service/IPgsProgressCategoryService.java index 0e77e3c1..a29a5821 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/service/IPgsProgressCategoryService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/service/IPgsProgressCategoryService.java @@ -6,6 +6,7 @@ import org.dromara.progress.domain.PgsProgressCategory; import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryCreateReq; import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryQueryReq; import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryUpdateReq; +import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryCoordinateVo; import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryLastTimeVo; import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryVo; @@ -102,4 +103,12 @@ public interface IPgsProgressCategoryService extends IService matrixIds); + /** + * 根据id获取进度类别坐标信息 + * + * @param id 进度类别id + * @return 进度类别坐标信息 + */ + PgsProgressCategoryCoordinateVo getCoordinate(Long id); + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/service/impl/PgsProgressCategoryServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/service/impl/PgsProgressCategoryServiceImpl.java index 81ac3e4b..fb8954f0 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/service/impl/PgsProgressCategoryServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/service/impl/PgsProgressCategoryServiceImpl.java @@ -1,33 +1,47 @@ package org.dromara.progress.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jakarta.annotation.Resource; import org.dromara.common.core.constant.HttpStatus; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.ObjectUtils; +import org.dromara.facility.domain.FacBoxTransformer; +import org.dromara.facility.domain.FacInverter; import org.dromara.facility.domain.FacPercentageFacility; +import org.dromara.facility.domain.FacPhotovoltaicPanel; +import org.dromara.facility.service.IFacBoxTransformerService; +import org.dromara.facility.service.IFacInverterService; import org.dromara.facility.service.IFacPercentageFacilityService; +import org.dromara.facility.service.IFacPhotovoltaicPanelService; import org.dromara.progress.constant.PgsProgressCategoryConstant; import org.dromara.progress.domain.PgsProgressCategory; import org.dromara.progress.domain.PgsProgressCategoryTemplate; import org.dromara.progress.domain.PgsProgressPlan; +import org.dromara.progress.domain.PgsProgressPlanDetail; import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryCreateReq; import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryQueryReq; import org.dromara.progress.domain.dto.progresscategory.PgsProgressCategoryUpdateReq; +import org.dromara.progress.domain.enums.PgsCoordinateTypeEnum; import org.dromara.progress.domain.enums.PgsFinishStatusEnum; import org.dromara.progress.domain.enums.PgsProgressUnitTypeEnum; +import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryCoordinateVo; +import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryFacilityVo; import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryLastTimeVo; import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryVo; +import org.dromara.progress.domain.vo.progressplandetail.PgsProgressPlanDetailDateVo; import org.dromara.progress.mapper.PgsProgressCategoryMapper; import org.dromara.progress.service.IPgsProgressCategoryService; import org.dromara.progress.service.IPgsProgressCategoryTemplateService; +import org.dromara.progress.service.IPgsProgressPlanDetailService; import org.dromara.progress.service.IPgsProgressPlanService; import org.dromara.utils.BigDecimalUtil; +import org.dromara.utils.JsonDimensionUtil; import org.springframework.beans.BeanUtils; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -58,6 +72,22 @@ public class PgsProgressCategoryServiceImpl extends ServiceImpl buildQueryWrapper(PgsProgressCategoryQueryReq req) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); if (req == null) { return lqw; } @@ -362,6 +392,91 @@ public class PgsProgressCategoryServiceImpl extends ServiceImpl facilityList; + PgsProgressCategoryCoordinateVo coordinateVo = new PgsProgressCategoryCoordinateVo(); + if (PgsProgressCategoryConstant.PHOTOVOLTAIC_PANEL_PROGRESS_CATEGORY_WORK_TYPE.contains(workType)) { + List list = photovoltaicPanelService.lambdaQuery() + .eq(FacPhotovoltaicPanel::getProjectId, progressCategory.getProjectId()) + .eq(FacPhotovoltaicPanel::getMatrixId, progressCategory.getMatrixId()) + .eq(FacPhotovoltaicPanel::getProgressCategoryId, progressCategory.getId()) + .list(); + facilityList = list.stream().map(fac -> { + JSONArray jsonArray = JSONUtil.parseArray(fac.getPositions()); + int depth = JsonDimensionUtil.getJsonArrayDepth(jsonArray); + return new PgsProgressCategoryFacilityVo( + fac.getId(), + fac.getName(), + jsonArray, + PgsCoordinateTypeEnum.getTextByValue(depth), + fac.getStatus(), + fac.getFinishDate() + ); + }).toList(); + } else if (PgsProgressCategoryConstant.INVERTER_PROGRESS_CATEGORY_WORK_TYPE.contains(workType)) { + List list = inverterService.lambdaQuery() + .eq(FacInverter::getProjectId, progressCategory.getProjectId()) + .eq(FacInverter::getMatrixId, progressCategory.getMatrixId()) + .eq(FacInverter::getProgressCategoryId, progressCategory.getId()) + .list(); + facilityList = list.stream().map(fac -> { + JSONArray jsonArray = JSONUtil.parseArray(fac.getPositions()); + int depth = JsonDimensionUtil.getJsonArrayDepth(jsonArray); + return new PgsProgressCategoryFacilityVo( + fac.getId(), + fac.getName(), + jsonArray, + PgsCoordinateTypeEnum.getTextByValue(depth), + fac.getStatus(), + fac.getFinishDate() + ); + }).toList(); + } else if (PgsProgressCategoryConstant.BOX_TRANSFORMER_PROGRESS_CATEGORY_WORK_TYPE.contains(workType)) { + List list = boxTransformerService.lambdaQuery() + .eq(FacBoxTransformer::getProjectId, progressCategory.getProjectId()) + .eq(FacBoxTransformer::getMatrixId, progressCategory.getMatrixId()) + .eq(FacBoxTransformer::getProgressCategoryId, progressCategory.getId()) + .list(); + facilityList = list.stream().map(fac -> { + JSONArray jsonArray = JSONUtil.parseArray(fac.getPositions()); + int depth = JsonDimensionUtil.getJsonArrayDepth(jsonArray); + return new PgsProgressCategoryFacilityVo( + fac.getId(), + fac.getName(), + jsonArray, + PgsCoordinateTypeEnum.getTextByValue(depth), + fac.getStatus(), + fac.getFinishDate() + ); + }).toList(); + } else { + return coordinateVo; + } + List detailList = progressPlanDetailService.lambdaQuery() + .select(PgsProgressPlanDetail::getId, PgsProgressPlanDetail::getDate) + .eq(PgsProgressPlanDetail::getProgressCategoryId, id) + .orderByAsc(PgsProgressPlanDetail::getDate) + .list() + .stream().map(detail -> + new PgsProgressPlanDetailDateVo(detail.getId(), detail.getDate())) + .toList(); + coordinateVo.setDetailList(detailList); + coordinateVo.setFacilityList(facilityList); + return coordinateVo; + } + /** * 根据子节点完成状态获取父节点完成状态 * 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 9a1483f2..7a97307f 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 @@ -21,6 +21,7 @@ import org.dromara.facility.domain.enums.FacFinishStatusEnum; import org.dromara.facility.domain.enums.FacFinishTypeEnum; import org.dromara.facility.service.IFacBoxTransformerService; import org.dromara.facility.service.IFacInverterService; +import org.dromara.facility.service.IFacPhotovoltaicPanelPartsService; import org.dromara.facility.service.IFacPhotovoltaicPanelService; import org.dromara.progress.constant.PgsProgressCategoryConstant; import org.dromara.progress.domain.PgsProgressCategory; @@ -47,7 +48,6 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; -import java.util.stream.Collectors; /** * 进度计划详情Service业务层处理 @@ -75,6 +75,9 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl photovoltaicPanelList = photovoltaicPanelService.lambdaQuery() - .eq(FacPhotovoltaicPanel::getProjectId, projectId) - .eq(FacPhotovoltaicPanel::getMatrixId, progressCategory.getMatrixId()) - .in(FacPhotovoltaicPanel::getProgressCategoryId, PgsProgressCategoryConstant.RELEVANCE_PHOTOVOLTAIC_PANEL_WORK_TYPE) - .list(); - Map> map = photovoltaicPanelList - .stream().collect(Collectors.groupingBy(FacPhotovoltaicPanel::getProgressCategoryId)); - // 批量更新关联的光伏板信息 - boolean update = photovoltaicPanelService.lambdaUpdate() - .eq(FacPhotovoltaicPanel::getProjectId, projectId) - .in(FacPhotovoltaicPanel::getProgressCategoryId, PgsProgressCategoryConstant.RELEVANCE_PHOTOVOLTAIC_PANEL_WORK_TYPE) - .eq(FacPhotovoltaicPanel::getMatrixId, progressCategory.getMatrixId()) - .set(FacPhotovoltaicPanel::getStatus, FacFinishStatusEnum.FINISH.getValue()) - .set(FacPhotovoltaicPanel::getFinishType, FacFinishTypeEnum.HAND.getValue()) - .set(FacPhotovoltaicPanel::getFinishDate, progressPlanDetail.getDate()) - .update(); - if (!update) { - throw new ServiceException("更新设施信息异常", HttpStatus.ERROR); - } - // todo - for (Map.Entry> entry : map.entrySet()) { - Long key = entry.getKey(); - List value = entry.getValue(); - // 封装计划详情 + // 如果是桩点、支柱、立架,则同步更新 + if (PgsProgressCategoryConstant.RELEVANCE_PHOTOVOLTAIC_PANEL_WORK_TYPE.contains(workType)) { + Long matrixId = progressCategory.getMatrixId(); + List nameList = finishedDetailList.stream().map(PgsProgressPlanDetailFinishedVo::getName).toList(); + Boolean result = photovoltaicPanelPartsService.updatePartsFinishStatus( + planDate, + projectId, + matrixId, + nameList); + if (!result) { + throw new ServiceException("同步更新设施失败", HttpStatus.ERROR); } } } else if (PgsProgressCategoryConstant.INVERTER_PROGRESS_CATEGORY_WORK_TYPE.contains(workType)) { @@ -160,7 +153,7 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl