|
|
@ -710,7 +710,7 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper, |
|
|
|
} |
|
|
|
// 删除掉已完成或者审批中的信息
|
|
|
|
newPlanInfos.removeAll(toRemove); |
|
|
|
newPlanInfos.forEach(item -> log.info("待新上传的计划阶段名称{}-->任务所处状态{}:",item.getTaskName(), item.getIsfinish())); |
|
|
|
newPlanInfos.forEach(item -> log.info("待新上传的计划阶段名称:{}-->任务所处状态{}:",item.getTaskName(), item.getIsfinish())); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
@ -922,43 +922,97 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper, |
|
|
|
|
|
|
|
@Override |
|
|
|
public void approvePlaninfo(MultipartFile file, String taskId, String flag, String projectid, String comment) throws Exception { |
|
|
|
if(file!=null&&"1".equals(flag)){ |
|
|
|
if (file != null && "1".equals(flag)) { |
|
|
|
//增加文件修改条件:集中核验完成之后到立项审批才允许修改计划
|
|
|
|
checkCurrentTaskLevel(projectid); |
|
|
|
//checkCurrentTaskLevel(projectid);
|
|
|
|
HashMap<String, Object> hashMap = getPlanInfoListFromFile(file, projectid); |
|
|
|
boolean res = (boolean) hashMap.get("res"); |
|
|
|
if(!res){ |
|
|
|
throw new EasyException((String)hashMap.get("msg")); |
|
|
|
if (!res) { |
|
|
|
throw new EasyException((String) hashMap.get("msg")); |
|
|
|
} |
|
|
|
List<HuzhouPlaninfo> huzhouPlaninfoArrayList = (ArrayList<HuzhouPlaninfo>) hashMap.get("arr"); |
|
|
|
// 校验最后日期不能晚于25年底
|
|
|
|
checkExcelPlanLastLevelTime(huzhouPlaninfoArrayList); |
|
|
|
log.info("示范项目验收时间校验正确"); |
|
|
|
|
|
|
|
// 深克隆备份Excel重点计划以供后续做差集操作
|
|
|
|
List<HuzhouPlaninfo> excelList = SerializationUtils.clone((ArrayList<HuzhouPlaninfo>) hashMap.get("arr")); |
|
|
|
// 未完成的项目则可以修改
|
|
|
|
filterIsAllowModifyPlaninfo(projectid, huzhouPlaninfoArrayList); |
|
|
|
|
|
|
|
//修改项目计划会重新修改项目阶段类型
|
|
|
|
projectinfoService.modifyStageById(projectid,"4"); |
|
|
|
//保存历史记录
|
|
|
|
List<HuzhouPlaninfo> planinfoHistory = getListByProjectId(projectid); |
|
|
|
planinfoHistoryService.savePlanInfoToHistory(planinfoHistory); |
|
|
|
// 获取审批中和已完成的计划列表进行更新操作
|
|
|
|
updatePlanForShenPiAndFinished(huzhouPlaninfoArrayList, excelList, planinfoHistory); |
|
|
|
|
|
|
|
//删除未开始 已完成 和审批中且taskLevel >= 1.7的项目
|
|
|
|
removeByProjectIdMoreThanTaskLevel(projectid); |
|
|
|
//将之前的分组id修改为最新的分组id
|
|
|
|
LambdaUpdateWrapper<HuzhouPlaninfo> 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); |
|
|
|
if (huzhouPlaninfoArrayList.size() == 34) { |
|
|
|
log.info("修改2000以上的项目计划采用不同的模板,并只修改未开始的节点!"); |
|
|
|
|
|
|
|
List<HuzhouPlaninfo> excelList = SerializationUtils.clone((ArrayList<HuzhouPlaninfo>) hashMap.get("arr")); |
|
|
|
// 过滤掉 taskLevel 小于 1.7 的数据,并保留 taskLevel 等于 "1.10" 的记录
|
|
|
|
List<HuzhouPlaninfo> filteredList = excelList.stream() |
|
|
|
.filter(item -> { |
|
|
|
String taskLevelStr = item.getTaskLevel(); |
|
|
|
try { |
|
|
|
// 检查是否是需要保留的特殊值
|
|
|
|
if ("1.10".equals(taskLevelStr)) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
// 将taskLevel转换为BigDecimal进行比较
|
|
|
|
BigDecimal taskLevel = new BigDecimal(taskLevelStr); |
|
|
|
return taskLevel.compareTo(new BigDecimal("1.7")) >= 0; // 注意这里直接使用字符串"1.7"构造BigDecimal以避免浮点数精度问题
|
|
|
|
} catch (NumberFormatException e) { |
|
|
|
// 如果转换失败,可以选择处理异常或忽略这条记录
|
|
|
|
throw new RuntimeException("无法将 taskLevel 转换为数字: " + taskLevelStr, e); |
|
|
|
} |
|
|
|
}) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
excelList = filteredList; |
|
|
|
excelList.forEach(item -> { |
|
|
|
log.info("需要新增:{}-->{}", item.getTaskLevel(), item.getTaskName()); |
|
|
|
}); |
|
|
|
// 保存历史后删除
|
|
|
|
List<HuzhouPlaninfo> nowPlanInfoFromDb = getListByProjectId(projectid); |
|
|
|
planinfoHistoryService.savePlanInfoToHistory(nowPlanInfoFromDb); |
|
|
|
|
|
|
|
// 集中核验的之后的计划都删除
|
|
|
|
removeByProjectIdMoreThanTaskLevel(projectid); |
|
|
|
// 特殊情况:删除1.10的未完成计划 因为现有平台只有一个项目是有1.10
|
|
|
|
LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
queryWrapper.eq(HuzhouPlaninfo::getProjectId, projectid); |
|
|
|
queryWrapper.eq(HuzhouPlaninfo::getTaskLevel, "1.10"); |
|
|
|
queryWrapper.in(HuzhouPlaninfo::getIsfinish, "0"); |
|
|
|
this.remove(queryWrapper); |
|
|
|
// 将之前的分组id修改为最新的分组id
|
|
|
|
LambdaUpdateWrapper<HuzhouPlaninfo> wrapper = new LambdaUpdateWrapper<>(); |
|
|
|
wrapper.eq(HuzhouPlaninfo::getProjectId, projectid); |
|
|
|
wrapper.set(HuzhouPlaninfo::getGroupId, huzhouPlaninfoArrayList.get(0).getGroupId()); |
|
|
|
update(null, wrapper); |
|
|
|
saveBatch(excelList); |
|
|
|
} else { |
|
|
|
// 深克隆备份Excel重点计划以供后续做差集操作
|
|
|
|
List<HuzhouPlaninfo> excelList = SerializationUtils.clone((ArrayList<HuzhouPlaninfo>) hashMap.get("arr")); |
|
|
|
// 未完成的项目则可以修改
|
|
|
|
filterIsAllowModifyPlaninfo(projectid, huzhouPlaninfoArrayList); |
|
|
|
|
|
|
|
//修改项目计划会重新修改项目阶段类型
|
|
|
|
projectinfoService.modifyStageById(projectid, "4"); |
|
|
|
//保存历史记录
|
|
|
|
List<HuzhouPlaninfo> planinfoHistory = getListByProjectId(projectid); |
|
|
|
planinfoHistoryService.savePlanInfoToHistory(planinfoHistory); |
|
|
|
// 获取审批中和已完成的计划列表进行更新操作
|
|
|
|
updatePlanForShenPiAndFinished(huzhouPlaninfoArrayList, excelList, planinfoHistory); |
|
|
|
|
|
|
|
//删除未开始 已完成 和审批中且taskLevel >= 1.7的项目
|
|
|
|
removeByProjectIdMoreThanTaskLevel(projectid); |
|
|
|
//将之前的分组id修改为最新的分组id
|
|
|
|
LambdaUpdateWrapper<HuzhouPlaninfo> 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())); |
|
|
|
huzhouPlaninfoArrayList.removeIf(item -> "可研报告初稿编制".equals(item.getTaskName())); |
|
|
|
huzhouPlaninfoArrayList.removeIf(item -> "可研技术审查报告确认".equals(item.getTaskName())); |
|
|
|
huzhouPlaninfoArrayList.removeIf(item -> "可研报告送审稿编制".equals(item.getTaskName())); |
|
|
|
huzhouPlaninfoArrayList.removeIf(item -> "造价评估报告确认".equals(item.getTaskName())); |
|
|
|
huzhouPlaninfoArrayList.removeIf(item -> "联合技术审查".equals(item.getTaskName())); |
|
|
|
huzhouPlaninfoArrayList.removeIf(item -> "集中核验".equals(item.getTaskName())); |
|
|
|
saveBatch(huzhouPlaninfoArrayList); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment); |
|
|
|
//作废暂时不需要注释掉
|
|
|
|
// if("3".equals(flag)){
|
|
|
@ -972,14 +1026,23 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper, |
|
|
|
processinfoService.modifyStatusByProjectId(projectid,"2","createPlaninfo"); |
|
|
|
} |
|
|
|
//修改项目的修改计划标识 默认:0 审批中:1 审批完成:2
|
|
|
|
projectinfoService.modifyPlanFlag2ById(projectid); |
|
|
|
LambdaQueryWrapper<HuzhouPlaninfoHistory> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid); |
|
|
|
List<HuzhouPlaninfoHistory> historyPlanInfoList = planinfoHistoryService.list(queryWrapper); |
|
|
|
|
|
|
|
if (historyPlanInfoList.size() > 0){ |
|
|
|
projectinfoService.modifyPlanFlag2ById(projectid); |
|
|
|
}else { |
|
|
|
// 新增项目
|
|
|
|
projectinfoService.modifyPlanFlag0ById(projectid); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void modifyPlaninfo(MultipartFile multipartFile, String projectid) throws Exception { |
|
|
|
|
|
|
|
//1.新增计划修改条件:集中核验完成之后到立项审批才允许修改计划
|
|
|
|
checkCurrentTaskLevel(projectid); |
|
|
|
//checkCurrentTaskLevel(projectid);
|
|
|
|
// 解析项目计划文件
|
|
|
|
HashMap<String, Object> hashMap = getPlanInfoListFromFile(multipartFile, projectid); |
|
|
|
// res是true 表示项目计划文件没有问题,如果是false说明文件有问题,需要抛出异常
|
|
|
@ -1065,6 +1128,12 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper, |
|
|
|
|
|
|
|
// 9.筛选掉项目立项阶段
|
|
|
|
planInfoList.removeIf(item -> "项目立项阶段".equals(item.getTaskName())); |
|
|
|
planInfoList.removeIf(item -> "可研报告初稿编制".equals(item.getTaskName())); |
|
|
|
planInfoList.removeIf(item -> "可研技术审查报告确认".equals(item.getTaskName())); |
|
|
|
planInfoList.removeIf(item -> "可研报告送审稿编制".equals(item.getTaskName())); |
|
|
|
planInfoList.removeIf(item -> "造价评估报告确认".equals(item.getTaskName())); |
|
|
|
planInfoList.removeIf(item -> "联合技术审查".equals(item.getTaskName())); |
|
|
|
planInfoList.removeIf(item -> "集中核验".equals(item.getTaskName())); |
|
|
|
// 10.批量新增
|
|
|
|
saveBatch(planInfoList); |
|
|
|
} |
|
|
|