Browse Source

限制一次修改更新目录接口,修改审批退回重新上传逻辑

master
gjh 1 week ago
parent
commit
4dafe9f2e7
  1. 2
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouPlaninfoService.java
  2. 50
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java
  3. 4
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java

2
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouPlaninfoService.java

@ -40,7 +40,7 @@ public interface IHuzhouPlaninfoService extends IService<HuzhouPlaninfo> {
*/ */
void saveOrModifyPlanUploadFile(MultipartFile[] files,String planinfoid,String type,String stage) throws IOException; void saveOrModifyPlanUploadFile(MultipartFile[] files,String planinfoid,String type,String stage) throws IOException;
List<HuzhouPlaninfo> getListByProjectId(String projectid); List<HuzhouPlaninfo> getListByProjectId(String projectid);
void removeByProjectId(String projectid); void removeByProjectIdMoreThanTaskLevel(String projectid);
List<HuzhouPlaninfo> getFinishOrApprovalListByProjectId(String projectid); List<HuzhouPlaninfo> getFinishOrApprovalListByProjectId(String projectid);
List<HuzhouPlaninfo> getUnFinishListByProjectId(String projectid); List<HuzhouPlaninfo> getUnFinishListByProjectId(String projectid);
/** /**

50
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java

@ -533,7 +533,7 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
} }
@Override @Override
public void removeByProjectId(String projectid) { public void removeByProjectIdMoreThanTaskLevel(String projectid) {
LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid); queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid);
// 使用 apply 方法加入自定义 SQL 语句进行 taskLevel 的数值比较 // 使用 apply 方法加入自定义 SQL 语句进行 taskLevel 的数值比较
@ -804,22 +804,42 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
@Override @Override
public void approvePlaninfo(MultipartFile file, String taskId, String flag, String projectid, String comment) throws Exception { 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);
HashMap<String, Object> hashMap = getPlanInfoListFromFile(file, projectid); HashMap<String, Object> hashMap = getPlanInfoListFromFile(file, projectid);
boolean res = (boolean) hashMap.get("res"); boolean res = (boolean) hashMap.get("res");
if(!res){ if(!res){
throw new EasyException((String)hashMap.get("msg")); throw new EasyException((String)hashMap.get("msg"));
} }
ArrayList<HuzhouPlaninfo> huzhouPlaninfoArrayList = (ArrayList<HuzhouPlaninfo>) hashMap.get("arr"); List<HuzhouPlaninfo> huzhouPlaninfoArrayList = (ArrayList<HuzhouPlaninfo>) hashMap.get("arr");
//检查List里面的内容是否支持修改,审批中或已完成无法修改 // 校验最后日期不能晚于25年底
checkExcelPlanLastLevelTime(huzhouPlaninfoArrayList);
log.info("示范项目验收时间校验正确");
// 深克隆备份Excel重点计划以供后续做差集操作
List<HuzhouPlaninfo> excelList = SerializationUtils.clone((ArrayList<HuzhouPlaninfo>) hashMap.get("arr"));
// 未完成的项目则可以修改
String isAllow = IsAllowModifyPlaninfo(projectid, huzhouPlaninfoArrayList); String isAllow = IsAllowModifyPlaninfo(projectid, huzhouPlaninfoArrayList);
if (!"1".equals(isAllow)) { if (!"1".equals(isAllow)) {
throw new EasyException(isAllow); throw new EasyException(isAllow);
} }
//修改项目计划会重新修改项目阶段类型
projectinfoService.modifyStageById(projectid,"4");
//保存历史记录 //保存历史记录
List<HuzhouPlaninfo> planinfoHistory = getListByProjectId(projectid); List<HuzhouPlaninfo> planinfoHistory = getListByProjectId(projectid);
planinfoHistoryService.savePlanInfoToHistory(planinfoHistory); planinfoHistoryService.savePlanInfoToHistory(planinfoHistory);
//删除原纪录 // 获取审批中和已完成的计划列表进行更新操作
removeByProjectId(projectid); updatePlanForShenPiAndFinished(huzhouPlaninfoArrayList, excelList, planinfoHistory);
//删除未开始 已完成 和审批中且taskLevel >= 1.7的项目
removeByProjectIdMoreThanTaskLevel(projectid);
//将之前的分组id修改为最新的分组id
LambdaUpdateWrapper<HuzhouPlaninfo> 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); saveBatch(huzhouPlaninfoArrayList);
} }
WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment); WorkFlow workFlow = workflowService.approveProjectInfo(taskId, flag, comment);
@ -842,13 +862,7 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
public void modifyPlaninfo(MultipartFile multipartFile, String projectid) throws Exception { public void modifyPlaninfo(MultipartFile multipartFile, String projectid) throws Exception {
//增加文件修改条件:集中核验完成之后到立项审批才允许修改计划 //增加文件修改条件:集中核验完成之后到立项审批才允许修改计划
LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>(); checkCurrentTaskLevel(projectid);
queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid);
queryWrapper.eq(HuzhouPlaninfo::getTaskName,"集中核验");
queryWrapper.eq(HuzhouPlaninfo::getIsfinish,"2");
if ( this.list(queryWrapper).size()<1){
throw new EasyException("集中核验未完成,无法修改项目计划!");
}
//解析项目计划文件 //解析项目计划文件
HashMap<String, Object> hashMap = getPlanInfoListFromFile(multipartFile, projectid); HashMap<String, Object> hashMap = getPlanInfoListFromFile(multipartFile, projectid);
//res是true 表示项目计划文件没有问题,如果是false说明文件有问题,需要抛出异常 //res是true 表示项目计划文件没有问题,如果是false说明文件有问题,需要抛出异常
@ -877,7 +891,7 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
updatePlanForShenPiAndFinished(huzhouPlaninfoArrayList, excelList, planinfoHistory); updatePlanForShenPiAndFinished(huzhouPlaninfoArrayList, excelList, planinfoHistory);
//删除未开始 已完成 和审批中且taskLevel >= 1.7的项目 //删除未开始 已完成 和审批中且taskLevel >= 1.7的项目
removeByProjectId(projectid); removeByProjectIdMoreThanTaskLevel(projectid);
//将之前的分组id修改为最新的分组id //将之前的分组id修改为最新的分组id
LambdaUpdateWrapper<HuzhouPlaninfo> wrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<HuzhouPlaninfo> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(HuzhouPlaninfo::getProjectId,projectid); wrapper.eq(HuzhouPlaninfo::getProjectId,projectid);
@ -931,6 +945,16 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
projectinfoService.modifyPlanFlag1ById(projectid); projectinfoService.modifyPlanFlag1ById(projectid);
} }
private void checkCurrentTaskLevel(String projectid) {
LambdaQueryWrapper<HuzhouPlaninfo> 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<HuzhouPlaninfo> huzhouPlaninfoArrayList) { private void checkExcelPlanLastLevelTime(List<HuzhouPlaninfo> huzhouPlaninfoArrayList) {
HuzhouPlaninfo targetElement = huzhouPlaninfoArrayList.stream() HuzhouPlaninfo targetElement = huzhouPlaninfoArrayList.stream()
.filter(planInfo -> "示范项目验收阶段".equals(planInfo.getTaskName())) .filter(planInfo -> "示范项目验收阶段".equals(planInfo.getTaskName()))

4
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java

@ -2628,7 +2628,7 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
qw.eq(HuzhouProjectinfo::getUpdatePlanFlag, "2"); qw.eq(HuzhouProjectinfo::getUpdatePlanFlag, "2");
List<HuzhouProjectinfo> rs = this.list(qw); List<HuzhouProjectinfo> rs = this.list(qw);
if (rs.size() > 0){ if (rs.size() > 0){
return false; throw new EasyException("项目计划修改失败:只允许修改一次项目计划!");
} }
} else { } else {
LambdaQueryWrapper<HuzhouSubProjectinfo> qw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<HuzhouSubProjectinfo> qw = new LambdaQueryWrapper<>();
@ -2636,7 +2636,7 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
qw.eq(HuzhouProjectinfo::getUpdatePlanFlag, "2"); qw.eq(HuzhouProjectinfo::getUpdatePlanFlag, "2");
List<HuzhouSubProjectinfo> rs = subProjectinfoMapper.selectList(qw); List<HuzhouSubProjectinfo> rs = subProjectinfoMapper.selectList(qw);
if (rs.size() > 0){ if (rs.size() > 0){
return false; throw new EasyException("项目计划修改失败:只允许修改一次项目计划!");
} }
} }
return true; return true;

Loading…
Cancel
Save