From 4dafe9f2e78035d9ea9dec3c909443fae316c3ae Mon Sep 17 00:00:00 2001 From: gjh <1421wake> Date: Thu, 6 Mar 2025 10:57:26 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=90=E5=88=B6=E4=B8=80=E6=AC=A1=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=9B=B4=E6=96=B0=E7=9B=AE=E5=BD=95=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?,=E4=BF=AE=E6=94=B9=E5=AE=A1=E6=89=B9=E9=80=80=E5=9B=9E?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E4=B8=8A=E4=BC=A0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/IHuzhouPlaninfoService.java | 2 +- .../impl/HuzhouPlaninfoServiceImpl.java | 56 +++++++++++++------ .../impl/HuzhouProjectinfoServiceImpl.java | 4 +- 3 files changed, 43 insertions(+), 19 deletions(-) diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouPlaninfoService.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouPlaninfoService.java index 9ad5e38..767b748 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouPlaninfoService.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouPlaninfoService.java @@ -40,7 +40,7 @@ public interface IHuzhouPlaninfoService extends IService { */ void saveOrModifyPlanUploadFile(MultipartFile[] files,String planinfoid,String type,String stage) throws IOException; List getListByProjectId(String projectid); - void removeByProjectId(String projectid); + void removeByProjectIdMoreThanTaskLevel(String projectid); List getFinishOrApprovalListByProjectId(String projectid); List getUnFinishListByProjectId(String projectid); /** diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java index 69b372c..90fb3e5 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java @@ -533,7 +533,7 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid); // 使用 apply 方法加入自定义 SQL 语句进行 taskLevel 的数值比较 @@ -804,22 +804,42 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl hashMap = getPlanInfoListFromFile(file, projectid); boolean res = (boolean) hashMap.get("res"); if(!res){ throw new EasyException((String)hashMap.get("msg")); } - ArrayList huzhouPlaninfoArrayList = (ArrayList) hashMap.get("arr"); - //检查List里面的内容是否支持修改,审批中或已完成无法修改 - String isAllow = IsAllowModifyPlaninfo(projectid,huzhouPlaninfoArrayList); - if(!"1".equals(isAllow)){ - throw new EasyException(isAllow); + List huzhouPlaninfoArrayList = (ArrayList) hashMap.get("arr"); + // 校验最后日期不能晚于25年底 + checkExcelPlanLastLevelTime(huzhouPlaninfoArrayList); + log.info("示范项目验收时间校验正确"); + + // 深克隆备份Excel重点计划以供后续做差集操作 + List excelList = SerializationUtils.clone((ArrayList) hashMap.get("arr")); + // 未完成的项目则可以修改 + String isAllow = IsAllowModifyPlaninfo(projectid, huzhouPlaninfoArrayList); + if (!"1".equals(isAllow)) { + throw new EasyException(isAllow); } + //修改项目计划会重新修改项目阶段类型 + projectinfoService.modifyStageById(projectid,"4"); //保存历史记录 List planinfoHistory = getListByProjectId(projectid); planinfoHistoryService.savePlanInfoToHistory(planinfoHistory); - //删除原纪录 - removeByProjectId(projectid); + // 获取审批中和已完成的计划列表进行更新操作 + updatePlanForShenPiAndFinished(huzhouPlaninfoArrayList, excelList, planinfoHistory); + + //删除未开始 已完成 和审批中且taskLevel >= 1.7的项目 + removeByProjectIdMoreThanTaskLevel(projectid); + //将之前的分组id修改为最新的分组id + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(HuzhouPlaninfo::getProjectId,projectid); + wrapper.set(HuzhouPlaninfo::getGroupId,huzhouPlaninfoArrayList.get(0).getGroupId()); + update(null,wrapper); + // 筛选掉项目立项阶段 + huzhouPlaninfoArrayList.removeIf(item -> "项目立项阶段".equals(item.getTaskName())); saveBatch(huzhouPlaninfoArrayList); } WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment); @@ -842,13 +862,7 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid); - queryWrapper.eq(HuzhouPlaninfo::getTaskName,"集中核验"); - queryWrapper.eq(HuzhouPlaninfo::getIsfinish,"2"); - if ( this.list(queryWrapper).size()<1){ - throw new EasyException("集中核验未完成,无法修改项目计划!"); - } + checkCurrentTaskLevel(projectid); //解析项目计划文件 HashMap hashMap = getPlanInfoListFromFile(multipartFile, projectid); //res是true 表示项目计划文件没有问题,如果是false说明文件有问题,需要抛出异常 @@ -877,7 +891,7 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl= 1.7的项目 - removeByProjectId(projectid); + removeByProjectIdMoreThanTaskLevel(projectid); //将之前的分组id修改为最新的分组id LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(HuzhouPlaninfo::getProjectId,projectid); @@ -931,6 +945,16 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouPlaninfo::getProjectId, projectid); + queryWrapper.eq(HuzhouPlaninfo::getTaskName,"集中核验"); + queryWrapper.eq(HuzhouPlaninfo::getIsfinish,"2"); + if ( this.list(queryWrapper).size()<1){ + throw new EasyException("集中核验未完成,无法修改项目计划!"); + } + } + private void checkExcelPlanLastLevelTime(List huzhouPlaninfoArrayList) { HuzhouPlaninfo targetElement = huzhouPlaninfoArrayList.stream() .filter(planInfo -> "示范项目验收阶段".equals(planInfo.getTaskName())) diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java index f0c820d..be88667 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java @@ -2628,7 +2628,7 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl rs = this.list(qw); if (rs.size() > 0){ - return false; + throw new EasyException("项目计划修改失败:只允许修改一次项目计划!"); } } else { LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); @@ -2636,7 +2636,7 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl rs = subProjectinfoMapper.selectList(qw); if (rs.size() > 0){ - return false; + throw new EasyException("项目计划修改失败:只允许修改一次项目计划!"); } } return true;