From 7dd6d97a3e0052eb00eb5abf849babada40e6a45 Mon Sep 17 00:00:00 2001 From: lcj <2331845269@qq.com> Date: Wed, 10 Sep 2025 19:18:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E5=BA=A6=E7=AE=A1=E7=90=86app?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PgsProgressPlanController.java | 8 +-- .../app/PgsProgressCategoryAppController.java | 12 ++++ .../app/PgsProgressPlanAppController.java | 13 ++++ .../PgsProgressPlanRemoveReq.java | 25 ++++++++ .../service/IPgsProgressCategoryService.java | 8 +++ .../service/IPgsProgressPlanService.java | 4 +- .../impl/PgsProgressCategoryServiceImpl.java | 23 +++++++ .../impl/PgsProgressPlanServiceImpl.java | 62 +++++++++---------- 8 files changed, 117 insertions(+), 38 deletions(-) create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/dto/progressplan/PgsProgressPlanRemoveReq.java diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/PgsProgressPlanController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/PgsProgressPlanController.java index b70d7959..994dbb45 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/PgsProgressPlanController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/PgsProgressPlanController.java @@ -82,13 +82,13 @@ public class PgsProgressPlanController extends BaseController { /** * 删除进度计划 * - * @param id 主键 + * @param ids 主键 */ @SaCheckPermission("progress:progressPlan:remove") @Log(title = "进度计划", businessType = BusinessType.DELETE) - @DeleteMapping("/{id}") + @DeleteMapping("/{ids}") public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable Long id) { - return toAjax(pgsProgressPlanService.deleteById(id)); + @PathVariable Long[] ids) { + return toAjax(pgsProgressPlanService.deleteByIds(List.of(ids))); } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/app/PgsProgressCategoryAppController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/app/PgsProgressCategoryAppController.java index bf46eb3f..b089930c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/app/PgsProgressCategoryAppController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/app/PgsProgressCategoryAppController.java @@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.math.BigDecimal; import java.util.List; /** @@ -62,4 +63,15 @@ public class PgsProgressCategoryAppController { return R.ok(progressCategoryService.queryLastTimeById(id)); } + /** + * 获取进度类别未完成数量 + * + * @param id 主键 + */ + @GetMapping("/unfinishNumber/{id}") + public R getUnFinishNumber(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(progressCategoryService.getUnFinishNumber(id)); + } + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/app/PgsProgressPlanAppController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/app/PgsProgressPlanAppController.java index e0f3baee..73125ed7 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/app/PgsProgressPlanAppController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/app/PgsProgressPlanAppController.java @@ -11,11 +11,14 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.progress.domain.dto.progressplan.PgsProgressPlanCreateReq; import org.dromara.progress.domain.dto.progressplan.PgsProgressPlanQueryReq; +import org.dromara.progress.domain.dto.progressplan.PgsProgressPlanRemoveReq; import org.dromara.progress.domain.vo.progressplan.PgsProgressPlanVo; import org.dromara.progress.service.IPgsProgressPlanService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * 进度计划 app 接口 * @@ -59,4 +62,14 @@ public class PgsProgressPlanAppController extends BaseController { return R.ok(progressPlanService.insertByBo(req)); } + /** + * 删除进度计划 + */ + @Log(title = "进度计划", businessType = BusinessType.DELETE) + @PostMapping("/remove") + public R remove(@Validated @RequestBody PgsProgressPlanRemoveReq req) { + List ids = req.getIds(); + return toAjax(progressPlanService.deleteByIds(ids)); + } + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/dto/progressplan/PgsProgressPlanRemoveReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/dto/progressplan/PgsProgressPlanRemoveReq.java new file mode 100644 index 00000000..92c4591c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/domain/dto/progressplan/PgsProgressPlanRemoveReq.java @@ -0,0 +1,25 @@ +package org.dromara.progress.domain.dto.progressplan; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * @author lilemy + * @date 2025-09-10 17:28 + */ +@Data +public class PgsProgressPlanRemoveReq implements Serializable { + + @Serial + private static final long serialVersionUID = -4690448781757278592L; + + /** + * 主键串 + */ + @NotNull(message = "主键不能为空") + private List ids; +} 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 3aed1c89..5aecf2b8 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 @@ -188,4 +188,12 @@ public interface IPgsProgressCategoryService extends IService categoryList); + + /** + * 获取项目进度类别未完成数量 + * + * @param id 主键 + * @return 未完成数量 + */ + BigDecimal getUnFinishNumber(Long id); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/service/IPgsProgressPlanService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/service/IPgsProgressPlanService.java index 4dc8aecb..6259bfd4 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/service/IPgsProgressPlanService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/service/IPgsProgressPlanService.java @@ -58,10 +58,10 @@ public interface IPgsProgressPlanService extends IService { /** * 删除进度计划信息 * - * @param id 待删除的主键 + * @param ids 待删除的主键 * @return 是否删除成功 */ - Boolean deleteById(Long id); + Boolean deleteByIds(List ids); /** * 获取进度计划视图对象 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 101dd037..2e35adc5 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 @@ -1348,4 +1348,27 @@ public class PgsProgressCategoryServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(); - lqw.eq(PgsProgressPlanDetail::getProgressPlanId, id); - boolean remove = progressPlanDetailService.remove(lqw); - if (!remove) { - throw new ServiceException("删除进度计划详情失败,数据库异常", HttpStatus.ERROR); + public Boolean deleteByIds(List ids) { + for (Long id : ids) { + PgsProgressPlan progressPlan = this.getById(id); + if (progressPlan == null) { + throw new ServiceException("进度计划信息不存在", HttpStatus.NOT_FOUND); + } + if (progressPlan.getPlanNumber() != null && progressPlan.getPlanNumber().compareTo(BigDecimal.ZERO) != 0) { + throw new ServiceException("已存在完成的设施,无法删除", HttpStatus.CONFLICT); + } + // 删除数据 + boolean result = this.removeById(id); + if (!result) { + throw new ServiceException("删除进度计划失败,数据库异常", HttpStatus.ERROR); + } + // 关联删除分类中记录的计划值 + boolean update = progressCategoryService.lambdaUpdate() + .eq(PgsProgressCategory::getId, progressPlan.getProgressCategoryId()) + .setSql("plan_total = plan_total - " + progressPlan.getPlanNumber()) + .update(); + if (!update) { + throw new ServiceException("更新进度分类计划总数量失败,数据库操作失败", HttpStatus.ERROR); + } + // 关联删除计划详情数据 + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(PgsProgressPlanDetail::getProgressPlanId, id); + boolean remove = progressPlanDetailService.remove(lqw); + if (!remove) { + throw new ServiceException("删除进度计划详情失败,数据库异常", HttpStatus.ERROR); + } } return true; }