diff --git a/huzhou/src/main/java/com/easy/admin/common/constant/CommonConstant.java b/huzhou/src/main/java/com/easy/admin/common/constant/CommonConstant.java index 8341da5..c7eb88f 100644 --- a/huzhou/src/main/java/com/easy/admin/common/constant/CommonConstant.java +++ b/huzhou/src/main/java/com/easy/admin/common/constant/CommonConstant.java @@ -5,7 +5,7 @@ package com.easy.admin.common.constant; * @author: jeecg-boot */ public interface CommonConstant { - String REDIS_KEY_PROJECT_BOARD_INFO = "hz_project_board_Info"; + String REDIS_KEY_PROJECT_BOARD_INFO = "hz_prod_project_board_info"; long REDIS_EXPIRE_TIME = 60*6; /** 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 30ef87c..8e9685e 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 @@ -656,7 +656,7 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl= 2"); queryWrapper.apply("CAST(task_level AS DECIMAL(10,2)) >= 1.7"); - // 添加 isfinish 条件,要求 isfinish 的值为 "0", "1", 或 "2" + // 删除所有状态为 0、1、2 的计划信息 queryWrapper.in(HuzhouPlaninfo::getIsfinish, "0", "1", "2"); this.remove(queryWrapper); } @@ -689,30 +689,28 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl newPlaninfo) { + public String IsAllowModifyPlaninfo(String projectid, List newPlanInfos) { //如果审批中或已完成的内容,不在修改的内容中newPlaninfo,就会报错 - List planinfoHistoryList = this.getFinishOrApprovalListByProjectId(projectid); - if(planinfoHistoryList.size()>0){ - for (HuzhouPlaninfo his:planinfoHistoryList){ - boolean isexist=false; - String hisTaskLevel = his.getTaskLevel(); - String hisTaskName = his.getTaskName(); - for(int i =0;i planInfoDbList = this.getFinishOrApprovalListByProjectId(projectid); + List toRemove = new ArrayList<>(); + if (planInfoDbList.size() > 0) { + for (HuzhouPlaninfo now : planInfoDbList) { + String nowTaskLevel = now.getTaskLevel(); + String nowTaskName = now.getTaskName(); + for (HuzhouPlaninfo newPlanInfo : newPlanInfos) { + String newTaskName = newPlanInfo.getTaskName(); + String newTaskLevel = newPlanInfo.getTaskLevel(); + if (nowTaskLevel.equals(newTaskLevel) && nowTaskName.equals(newTaskName)) { + toRemove.add(newPlanInfo); + log.info("需要删除的任务阶段名称:{}",newTaskName); } } - if(!isexist){ - return "任务级别:"+hisTaskLevel+",任务名称:"+hisTaskName+"已完成,无法修改!"; - } } } + // 删除掉已完成或者审批中的信息 + newPlanInfos.removeAll(toRemove); + newPlanInfos.forEach(item -> log.info("待上传的计划信息-->newPlanInfo:" + item.getTaskName())); return "1"; } @@ -937,9 +935,7 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl excelList = SerializationUtils.clone((ArrayList) hashMap.get("arr")); // 未完成的项目则可以修改 String isAllow = IsAllowModifyPlaninfo(projectid, huzhouPlaninfoArrayList); - if (!"1".equals(isAllow)) { - throw new EasyException(isAllow); - } + //修改项目计划会重新修改项目阶段类型 projectinfoService.modifyStageById(projectid,"4"); //保存历史记录 @@ -951,10 +947,10 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl= 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); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(HuzhouPlaninfo::getProjectId,projectid); + updateWrapper.set(HuzhouPlaninfo::getGroupId,huzhouPlaninfoArrayList.get(0).getGroupId()); + update(null,updateWrapper); // 筛选掉项目立项阶段 huzhouPlaninfoArrayList.removeIf(item -> "项目立项阶段".equals(item.getTaskName())); saveBatch(huzhouPlaninfoArrayList); @@ -978,46 +974,49 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl hashMap = getPlanInfoListFromFile(multipartFile, projectid); - //res是true 表示项目计划文件没有问题,如果是false说明文件有问题,需要抛出异常 + // res是true 表示项目计划文件没有问题,如果是false说明文件有问题,需要抛出异常 boolean res = (boolean) hashMap.get("res"); if (!res) { throw new EasyException((String) hashMap.get("msg")); } - List huzhouPlaninfoArrayList = (ArrayList) hashMap.get("arr"); - // 校验最后日期不能晚于25年底 - checkExcelPlanLastLevelTime(huzhouPlaninfoArrayList); + // 2.获取项目计划文件没有问题的计划列表 + List planInfoList = (ArrayList) hashMap.get("arr"); + + // 3.校验最后日期不能晚于25年底 + checkExcelPlanLastLevelTime(planInfoList); log.info("示范项目验收时间校验正确"); - // 深克隆备份Excel重点计划以供后续做差集操作 + // 4.深克隆备份Excel重点计划以供后续做差集操作 List excelList = SerializationUtils.clone((ArrayList) hashMap.get("arr")); - // 未完成的项目则可以修改 - String isAllow = IsAllowModifyPlaninfo(projectid, huzhouPlaninfoArrayList); - if (!"1".equals(isAllow)) { - throw new EasyException(isAllow); - } + + // 5.新增要求:未完成的项目则可以修改 + // 这里按照之前逻辑将 处于审批和未完成的计划过滤掉 + String isAllow = IsAllowModifyPlaninfo(projectid, planInfoList); //修改项目计划会重新修改项目阶段类型 projectinfoService.modifyStageById(projectid,"4"); - //保存历史记录 - List planinfoHistory = getListByProjectId(projectid); - planinfoHistoryService.savePlanInfoToHistory(planinfoHistory); - // 获取审批中和已完成的计划列表进行更新操作 - updatePlanForShenPiAndFinished(huzhouPlaninfoArrayList, excelList, planinfoHistory); + // 6.将原有计划信息保存到历史记录中 + List nowPlanInfoFromDb = getListByProjectId(projectid); + planinfoHistoryService.savePlanInfoToHistory(nowPlanInfoFromDb); - //删除未开始 已完成 和审批中且taskLevel >= 1.7的项目 + // 7.获取审批中和已完成的计划列表进行更新操作 + updatePlanForShenPiAndFinished(planInfoList, excelList, nowPlanInfoFromDb); + + // 8.删除 现存数据库中 未开始 已完成 和审批中且taskLevel >= 1.7的项目 removeByProjectIdMoreThanTaskLevel(projectid); - //将之前的分组id修改为最新的分组id + // 将之前的分组id修改为最新的分组id LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(HuzhouPlaninfo::getProjectId,projectid); - wrapper.set(HuzhouPlaninfo::getGroupId,huzhouPlaninfoArrayList.get(0).getGroupId()); + wrapper.set(HuzhouPlaninfo::getGroupId,planInfoList.get(0).getGroupId()); update(null,wrapper); - // 筛选掉项目立项阶段 - huzhouPlaninfoArrayList.removeIf(item -> "项目立项阶段".equals(item.getTaskName())); - //批量新增 - saveBatch(huzhouPlaninfoArrayList); + + // 9.筛选掉项目立项阶段 + planInfoList.removeIf(item -> "项目立项阶段".equals(item.getTaskName())); + // 10.批量新增 + saveBatch(planInfoList); //创建流程 WorkFlow workFlow = workflowService.createFlow("createPlaninfo",projectid); @@ -1094,17 +1093,28 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl huzhouPlaninfoArrayList, List excelList, List planinfoHistory) { - // 计算差集 - Set keysFromHuzhouPlaninfoArrayList = huzhouPlaninfoArrayList.stream() + /** + * 针对 已经审批和完成的项目计划的进行修改 对应的开始时间和结束时间 + * isFinish为0表示未开始,1审批中,2表示已完成 + * @param planInfoList 过滤掉 已完成和审批中的计划集合 + * @param excelList 用户上传的excel中计划的信息 + * @param nowPlanInfoFromDb 数据库中现存计划信息 + */ + private void updatePlanForShenPiAndFinished(List planInfoList, List excelList, List nowPlanInfoFromDb) { + // **计算差集** 总-未完成 从而获取 :原先计划中已完成+审批中的计划集合 + + // 1.存储未完成的计划信息集合 + Set keysFromPlanInfoList = planInfoList.stream() .map(item ->item.getProjectId() + "-" + item.getTaskLevel()) .collect(Collectors.toSet()); - List tmpDifList = planinfoHistory.stream() - .filter(item -> !keysFromHuzhouPlaninfoArrayList.contains(item.getProjectId() + "-" + item.getTaskLevel())) + // 2.获取原先计划中已完成+审批中的计划集合 + List tmpDifList = nowPlanInfoFromDb.stream() + // 过滤掉未完成的计划信息集合,得到 原先计划中已完成+审批中的计划集合 并且 taskLevel大于1.6(集中核验阶段) + .filter(item -> !keysFromPlanInfoList.contains(item.getProjectId() + "-" + item.getTaskLevel())) .filter(item -> { try { - // 过滤条件:只保留 taskLevel 大于 2 的记录 + // 过滤条件:只保留 taskLevel 大于 1.6的记录 BigDecimal taskLevel = new BigDecimal(item.getTaskLevel()); return taskLevel.compareTo(BigDecimal.valueOf(1.6)) > 0; } catch (NumberFormatException e) { @@ -1114,13 +1124,13 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl excelMap = excelList.stream() .collect(Collectors.toMap( item -> item.getTaskLevel(), item -> item )); - // 遍历 tmpDifList,并根据 projectId 和 taskLevel 查找对应的 excelItem + // 4.遍历 tmpDifList,封装对应的scheduledStartTime scheduledEndTime tmpDifList.forEach(tmpItem -> { String key = tmpItem.getTaskLevel(); Optional.ofNullable(excelMap.get(key)).ifPresent(excelItem -> { @@ -1128,10 +1138,10 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl{}",huzhouPlaninfo.getTaskName(),huzhouPlaninfo.getTaskLevel()); } } 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 9479200..0e4c16d 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 @@ -444,6 +444,14 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl