|
|
@ -11,8 +11,8 @@ import com.mdp.qx.HasQx; |
|
|
import com.mdp.safe.client.entity.User; |
|
|
import com.mdp.safe.client.entity.User; |
|
|
import com.mdp.safe.client.utils.LoginUtils; |
|
|
import com.mdp.safe.client.utils.LoginUtils; |
|
|
import com.xm.core.PubTool; |
|
|
import com.xm.core.PubTool; |
|
|
|
|
|
import com.xm.core.entity.XmPhase; |
|
|
import com.xm.core.entity.XmProject; |
|
|
import com.xm.core.entity.XmProject; |
|
|
import com.xm.core.entity.XmProjectPhase; |
|
|
|
|
|
import com.xm.core.service.*; |
|
|
import com.xm.core.service.*; |
|
|
import com.xm.core.vo.XmGroupVo; |
|
|
import com.xm.core.vo.XmGroupVo; |
|
|
import io.swagger.annotations.*; |
|
|
import io.swagger.annotations.*; |
|
|
@ -47,7 +47,7 @@ public class XmProjectPhaseController { |
|
|
static Log logger=LogFactory.getLog(XmProjectPhaseController.class); |
|
|
static Log logger=LogFactory.getLog(XmProjectPhaseController.class); |
|
|
|
|
|
|
|
|
@Autowired |
|
|
@Autowired |
|
|
private XmProjectPhaseService xmProjectPhaseService; |
|
|
|
|
|
|
|
|
private XmPhaseService xmPhaseService; |
|
|
|
|
|
|
|
|
@Autowired |
|
|
@Autowired |
|
|
private XmGroupService groupService; |
|
|
private XmGroupService groupService; |
|
|
@ -106,14 +106,14 @@ public class XmProjectPhaseController { |
|
|
@ApiImplicitParam(name="orderDirs",value="排序方式,与orderFields对应,升序 asc,降序desc 如 性别 升序、学生编号降序 ['asc','desc']",required=false) |
|
|
@ApiImplicitParam(name="orderDirs",value="排序方式,与orderFields对应,升序 asc,降序desc 如 性别 升序、学生编号降序 ['asc','desc']",required=false) |
|
|
}) |
|
|
}) |
|
|
@ApiResponses({ |
|
|
@ApiResponses({ |
|
|
@ApiResponse(code = 200,response= XmProjectPhase.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'错误码'},pageInfo:{total:总记录数},data:[数据对象1,数据对象2,...]}") |
|
|
|
|
|
|
|
|
@ApiResponse(code = 200,response= XmPhase.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'错误码'},pageInfo:{total:总记录数},data:[数据对象1,数据对象2,...]}") |
|
|
}) |
|
|
}) |
|
|
@RequestMapping(value="/list",method=RequestMethod.GET) |
|
|
@RequestMapping(value="/list",method=RequestMethod.GET) |
|
|
public Map<String,Object> listXmProjectPhase( @RequestParam Map<String,Object> xmProjectPhase){ |
|
|
public Map<String,Object> listXmProjectPhase( @RequestParam Map<String,Object> xmProjectPhase){ |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
RequestUtils.transformArray(xmProjectPhase, "ids"); |
|
|
RequestUtils.transformArray(xmProjectPhase, "ids"); |
|
|
PageUtils.startPage(xmProjectPhase); |
|
|
PageUtils.startPage(xmProjectPhase); |
|
|
List<Map<String,Object>> xmProjectPhaseList = xmProjectPhaseService.selectListMapByWhere(xmProjectPhase); //列出XmProjectPhase列表 |
|
|
|
|
|
|
|
|
List<Map<String,Object>> xmProjectPhaseList = xmPhaseService.selectListMapByWhere(xmProjectPhase); //列出XmProjectPhase列表 |
|
|
PageUtils.responePage(m, xmProjectPhaseList); |
|
|
PageUtils.responePage(m, xmProjectPhaseList); |
|
|
if("1".equals(xmProjectPhase.get("withParents")) && !"1".equals(xmProjectPhase.get("isTop")) && xmProjectPhaseList.size()>0){ |
|
|
if("1".equals(xmProjectPhase.get("withParents")) && !"1".equals(xmProjectPhase.get("isTop")) && xmProjectPhaseList.size()>0){ |
|
|
Set<String> pidPathsSet=new HashSet<>(); |
|
|
Set<String> pidPathsSet=new HashSet<>(); |
|
|
@ -129,7 +129,7 @@ public class XmProjectPhaseController { |
|
|
pidPathsSet.add(pidPaths); |
|
|
pidPathsSet.add(pidPaths); |
|
|
} |
|
|
} |
|
|
if(pidPathsSet!=null && pidPathsSet.size()>0){ |
|
|
if(pidPathsSet!=null && pidPathsSet.size()>0){ |
|
|
List<Map<String,Object>> parentList=xmProjectPhaseService.selectListMapByWhere(map("pidPathsList",pidPathsSet.stream().collect(Collectors.toList()))); |
|
|
|
|
|
|
|
|
List<Map<String,Object>> parentList= xmPhaseService.selectListMapByWhere(map("pidPathsList",pidPathsSet.stream().collect(Collectors.toList()))); |
|
|
parentList=parentList.stream().filter(i->!idSet.contains(i.get("id"))).collect(Collectors.toList()); |
|
|
parentList=parentList.stream().filter(i->!idSet.contains(i.get("id"))).collect(Collectors.toList()); |
|
|
if(parentList!=null && parentList.size()>0){ |
|
|
if(parentList!=null && parentList.size()>0){ |
|
|
xmProjectPhaseList.addAll(parentList); |
|
|
xmProjectPhaseList.addAll(parentList); |
|
|
@ -146,7 +146,7 @@ public class XmProjectPhaseController { |
|
|
|
|
|
|
|
|
@HasQx(value = "xm_core_xmProjectPhase_setPhaseMngUser",name = "设置计划负责人",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
@HasQx(value = "xm_core_xmProjectPhase_setPhaseMngUser",name = "设置计划负责人",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
@RequestMapping(value="/setPhaseMngUser",method=RequestMethod.POST) |
|
|
@RequestMapping(value="/setPhaseMngUser",method=RequestMethod.POST) |
|
|
public Map<String,Object> setPhaseMngUser(@RequestBody XmProjectPhase xmProjectPhase) { |
|
|
|
|
|
|
|
|
public Map<String,Object> setPhaseMngUser(@RequestBody XmPhase xmProjectPhase) { |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Tips tips=new Tips("成功设置"); |
|
|
Tips tips=new Tips("成功设置"); |
|
|
try{ |
|
|
try{ |
|
|
@ -155,8 +155,8 @@ public class XmProjectPhaseController { |
|
|
m.put("tips", tips); |
|
|
m.put("tips", tips); |
|
|
return m; |
|
|
return m; |
|
|
}else{ |
|
|
}else{ |
|
|
XmProjectPhase xmProjectPhaseQuery = new XmProjectPhase(xmProjectPhase.getId()); |
|
|
|
|
|
XmProjectPhase xmProjectPhaseDb=this.xmProjectPhaseService.selectOneObject(xmProjectPhaseQuery); |
|
|
|
|
|
|
|
|
XmPhase xmProjectPhaseQuery = new XmPhase(xmProjectPhase.getId()); |
|
|
|
|
|
XmPhase xmProjectPhaseDb=this.xmPhaseService.selectOneObject(xmProjectPhaseQuery); |
|
|
if(xmProjectPhaseDb==null){ |
|
|
if(xmProjectPhaseDb==null){ |
|
|
tips.setFailureMsg("计划不存在"); |
|
|
tips.setFailureMsg("计划不存在"); |
|
|
m.put("tips", tips); |
|
|
m.put("tips", tips); |
|
|
@ -179,11 +179,11 @@ public class XmProjectPhaseController { |
|
|
return m; |
|
|
return m; |
|
|
} |
|
|
} |
|
|
if(tips.isOk()){ |
|
|
if(tips.isOk()){ |
|
|
XmProjectPhase xmProjectPhaseToUpdate=new XmProjectPhase(); |
|
|
|
|
|
|
|
|
XmPhase xmProjectPhaseToUpdate=new XmPhase(); |
|
|
xmProjectPhaseToUpdate.setId(xmProjectPhase.getId()); |
|
|
xmProjectPhaseToUpdate.setId(xmProjectPhase.getId()); |
|
|
xmProjectPhaseToUpdate.setMngUserid(xmProjectPhase.getMngUserid()); |
|
|
xmProjectPhaseToUpdate.setMngUserid(xmProjectPhase.getMngUserid()); |
|
|
xmProjectPhaseToUpdate.setMngUsername(xmProjectPhase.getMngUsername()); |
|
|
xmProjectPhaseToUpdate.setMngUsername(xmProjectPhase.getMngUsername()); |
|
|
this.xmProjectPhaseService.updateSomeFieldByPk(xmProjectPhaseToUpdate); |
|
|
|
|
|
|
|
|
this.xmPhaseService.updateSomeFieldByPk(xmProjectPhaseToUpdate); |
|
|
this.xmRecordService.addProjectPhaseRecord(xmProject.getId(),xmProjectPhase.getId(),"项目-计划-设置计划负责人","计划负责人由【"+xmProjectPhaseDb.getMngUsername()+"】变更为【"+xmProjectPhase.getMngUsername()+"】"); |
|
|
this.xmRecordService.addProjectPhaseRecord(xmProject.getId(),xmProjectPhase.getId(),"项目-计划-设置计划负责人","计划负责人由【"+xmProjectPhaseDb.getMngUsername()+"】变更为【"+xmProjectPhase.getMngUsername()+"】"); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
@ -201,11 +201,11 @@ public class XmProjectPhaseController { |
|
|
|
|
|
|
|
|
@ApiOperation( value = "新增一条xm_project_phase信息",notes="addXmProjectPhase,主键如果为空,后台自动生成") |
|
|
@ApiOperation( value = "新增一条xm_project_phase信息",notes="addXmProjectPhase,主键如果为空,后台自动生成") |
|
|
@ApiResponses({ |
|
|
@ApiResponses({ |
|
|
@ApiResponse(code = 200,response=XmProjectPhase.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") |
|
|
|
|
|
|
|
|
@ApiResponse(code = 200,response= XmPhase.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") |
|
|
}) |
|
|
}) |
|
|
@HasQx(value = "xm_core_xmProjectPhase_add",name = "创建项目计划",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
@HasQx(value = "xm_core_xmProjectPhase_add",name = "创建项目计划",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
@RequestMapping(value="/add",method=RequestMethod.POST) |
|
|
@RequestMapping(value="/add",method=RequestMethod.POST) |
|
|
public Map<String,Object> addXmProjectPhase(@RequestBody XmProjectPhase xmProjectPhase) { |
|
|
|
|
|
|
|
|
public Map<String,Object> addXmProjectPhase(@RequestBody XmPhase xmProjectPhase) { |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Tips tips=new Tips("成功新增一条数据"); |
|
|
Tips tips=new Tips("成功新增一条数据"); |
|
|
try{ |
|
|
try{ |
|
|
@ -213,10 +213,10 @@ public class XmProjectPhaseController { |
|
|
return ResponseHelper.failed("projectId-0","请上送项目编号"); |
|
|
return ResponseHelper.failed("projectId-0","请上送项目编号"); |
|
|
} |
|
|
} |
|
|
if(StringUtils.isEmpty(xmProjectPhase.getId())) { |
|
|
if(StringUtils.isEmpty(xmProjectPhase.getId())) { |
|
|
xmProjectPhase.setId(xmProjectPhaseService.createKey("id")); |
|
|
|
|
|
|
|
|
xmProjectPhase.setId(xmPhaseService.createKey("id")); |
|
|
}else{ |
|
|
}else{ |
|
|
XmProjectPhase xmProjectPhaseQuery = new XmProjectPhase(xmProjectPhase.getId()); |
|
|
|
|
|
if(xmProjectPhaseService.countByWhere(xmProjectPhaseQuery)>0){ |
|
|
|
|
|
|
|
|
XmPhase xmProjectPhaseQuery = new XmPhase(xmProjectPhase.getId()); |
|
|
|
|
|
if(xmPhaseService.countByWhere(xmProjectPhaseQuery)>0){ |
|
|
tips.setFailureMsg("编号重复,请修改编号再提交"); |
|
|
tips.setFailureMsg("编号重复,请修改编号再提交"); |
|
|
m.put("tips", tips); |
|
|
m.put("tips", tips); |
|
|
return m; |
|
|
return m; |
|
|
@ -245,28 +245,28 @@ public class XmProjectPhaseController { |
|
|
} |
|
|
} |
|
|
List<String> excludePhaseIds=new ArrayList<>(); |
|
|
List<String> excludePhaseIds=new ArrayList<>(); |
|
|
excludePhaseIds.add(xmProjectPhase.getId()); |
|
|
excludePhaseIds.add(xmProjectPhase.getId()); |
|
|
xmProjectPhaseService.calcPhaseBudgetAmount(xmProjectPhase); |
|
|
|
|
|
xmProjectPhaseService.parentIdPathsCalcBeforeSave(xmProjectPhase); |
|
|
|
|
|
|
|
|
xmPhaseService.calcPhaseBudgetAmount(xmProjectPhase); |
|
|
|
|
|
xmPhaseService.parentIdPathsCalcBeforeSave(xmProjectPhase); |
|
|
if(xmProjectPhase.getLvl()==1){ |
|
|
if(xmProjectPhase.getLvl()==1){ |
|
|
if("1".equals(xmProject.getBudgetCtrl())){ |
|
|
if("1".equals(xmProject.getBudgetCtrl())){ |
|
|
tips=xmProjectPhaseService.judgetProjectBudget(xmProject.getId(),xmProjectPhase.getPhaseBudgetAt(),null,null,null,excludePhaseIds); |
|
|
|
|
|
|
|
|
tips= xmPhaseService.judgetProjectBudget(xmProject.getId(),xmProjectPhase.getPhaseBudgetAt(),null,null,null,excludePhaseIds); |
|
|
} |
|
|
} |
|
|
}else { |
|
|
}else { |
|
|
if("1".equals(xmProject.getPhaseBudgetCtrl())) { |
|
|
if("1".equals(xmProject.getPhaseBudgetCtrl())) { |
|
|
tips = xmProjectPhaseService.judgetPhaseBudget(xmProjectPhase.getParentPhaseId(), xmProjectPhase.getPhaseBudgetAt(), null, null, null, excludePhaseIds); |
|
|
|
|
|
|
|
|
tips = xmPhaseService.judgetPhaseBudget(xmProjectPhase.getParentPhaseId(), xmProjectPhase.getPhaseBudgetAt(), null, null, null, excludePhaseIds); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if(!tips.isOk()){ |
|
|
if(!tips.isOk()){ |
|
|
return ResponseHelper.failed(tips); |
|
|
return ResponseHelper.failed(tips); |
|
|
} |
|
|
} |
|
|
XmProjectPhase parentDb=xmProjectPhaseService.selectOneObject(new XmProjectPhase(xmProjectPhase.getParentPhaseId())); |
|
|
|
|
|
|
|
|
XmPhase parentDb= xmPhaseService.selectOneObject(new XmPhase(xmProjectPhase.getParentPhaseId())); |
|
|
if(parentDb==null){ |
|
|
if(parentDb==null){ |
|
|
return ResponseHelper.failed("p-no-exists","上级计划不存在"); |
|
|
return ResponseHelper.failed("p-no-exists","上级计划不存在"); |
|
|
} |
|
|
} |
|
|
if(!"1".equals(parentDb.getNtype())){ |
|
|
if(!"1".equals(parentDb.getNtype())){ |
|
|
return ResponseHelper.failed("p-ntype-no-1","上级【"+parentDb.getPhaseName()+"】不是计划集,不能在其之下建立子计划"); |
|
|
return ResponseHelper.failed("p-ntype-no-1","上级【"+parentDb.getPhaseName()+"】不是计划集,不能在其之下建立子计划"); |
|
|
} |
|
|
} |
|
|
xmProjectPhaseService.insert(xmProjectPhase); |
|
|
|
|
|
|
|
|
xmPhaseService.insert(xmProjectPhase); |
|
|
xmRecordService.addProjectPhaseRecord(xmProject.getId(), xmProjectPhase.getId(), "项目-计划-新增计划", "新增计划"+xmProjectPhase.getPhaseName(),JSON.toJSONString(xmProjectPhase),null); |
|
|
xmRecordService.addProjectPhaseRecord(xmProject.getId(), xmProjectPhase.getId(), "项目-计划-新增计划", "新增计划"+xmProjectPhase.getPhaseName(),JSON.toJSONString(xmProjectPhase),null); |
|
|
m.put("data",xmProjectPhase); |
|
|
m.put("data",xmProjectPhase); |
|
|
}catch (BizException e) { |
|
|
}catch (BizException e) { |
|
|
@ -286,14 +286,14 @@ public class XmProjectPhaseController { |
|
|
}) |
|
|
}) |
|
|
@HasQx(value = "xm_core_xmProjectPhase_del",name = "删除项目计划",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
@HasQx(value = "xm_core_xmProjectPhase_del",name = "删除项目计划",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
@RequestMapping(value="/del",method=RequestMethod.POST) |
|
|
@RequestMapping(value="/del",method=RequestMethod.POST) |
|
|
public Map<String,Object> delXmProjectPhase(@RequestBody XmProjectPhase xmProjectPhase){ |
|
|
|
|
|
|
|
|
public Map<String,Object> delXmProjectPhase(@RequestBody XmPhase xmProjectPhase){ |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Tips tips=new Tips("成功删除一条数据"); |
|
|
Tips tips=new Tips("成功删除一条数据"); |
|
|
try{ |
|
|
try{ |
|
|
if(!StringUtils.hasText(xmProjectPhase.getId())){ |
|
|
if(!StringUtils.hasText(xmProjectPhase.getId())){ |
|
|
return ResponseHelper.failed("id-0","请上送计划编号"); |
|
|
return ResponseHelper.failed("id-0","请上送计划编号"); |
|
|
} |
|
|
} |
|
|
XmProjectPhase xmProjectPhaseDb=this.xmProjectPhaseService.selectOneObject(xmProjectPhase); |
|
|
|
|
|
|
|
|
XmPhase xmProjectPhaseDb=this.xmPhaseService.selectOneObject(xmProjectPhase); |
|
|
if(xmProjectPhaseDb==null){ |
|
|
if(xmProjectPhaseDb==null){ |
|
|
return ResponseHelper.failed("data-0","该计划已不存在"); |
|
|
return ResponseHelper.failed("data-0","该计划已不存在"); |
|
|
} |
|
|
} |
|
|
@ -314,7 +314,7 @@ public class XmProjectPhaseController { |
|
|
return m; |
|
|
return m; |
|
|
} |
|
|
} |
|
|
//检查是否由关联的任务,有则不允许删除 |
|
|
//检查是否由关联的任务,有则不允许删除 |
|
|
Long exists=this.xmProjectPhaseService.checkExistsTask(xmProjectPhase.getId()); |
|
|
|
|
|
|
|
|
Long exists=this.xmPhaseService.checkExistsTask(xmProjectPhase.getId()); |
|
|
if(exists>0) { |
|
|
if(exists>0) { |
|
|
tips.setFailureMsg("存在"+exists+"条任务,不允许删除"); |
|
|
tips.setFailureMsg("存在"+exists+"条任务,不允许删除"); |
|
|
}else { |
|
|
}else { |
|
|
@ -322,7 +322,7 @@ public class XmProjectPhaseController { |
|
|
if(xmProjectPhaseDb.getChildrenCnt()!=null && xmProjectPhaseDb.getChildrenCnt()>0){ |
|
|
if(xmProjectPhaseDb.getChildrenCnt()!=null && xmProjectPhaseDb.getChildrenCnt()>0){ |
|
|
tips.setFailureMsg("存在"+xmProjectPhaseDb.getChildrenCnt()+"条子计划,不允许删除"); |
|
|
tips.setFailureMsg("存在"+xmProjectPhaseDb.getChildrenCnt()+"条子计划,不允许删除"); |
|
|
} else { |
|
|
} else { |
|
|
xmProjectPhaseService.deleteByPk(xmProjectPhaseDb); |
|
|
|
|
|
|
|
|
xmPhaseService.deleteByPk(xmProjectPhaseDb); |
|
|
xmRecordService.addProjectPhaseRecord(xmProjectPhaseDb.getProjectId(), xmProjectPhaseDb.getId(), "项目-计划-删除计划", "删除计划"+xmProjectPhaseDb.getPhaseName(),"",JSON.toJSONString(xmProjectPhaseDb)); |
|
|
xmRecordService.addProjectPhaseRecord(xmProjectPhaseDb.getProjectId(), xmProjectPhaseDb.getId(), "项目-计划-删除计划", "删除计划"+xmProjectPhaseDb.getPhaseName(),"",JSON.toJSONString(xmProjectPhaseDb)); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
@ -343,18 +343,18 @@ public class XmProjectPhaseController { |
|
|
/***/ |
|
|
/***/ |
|
|
@ApiOperation( value = "根据主键修改一条xm_project_phase信息",notes="editXmProjectPhase") |
|
|
@ApiOperation( value = "根据主键修改一条xm_project_phase信息",notes="editXmProjectPhase") |
|
|
@ApiResponses({ |
|
|
@ApiResponses({ |
|
|
@ApiResponse(code = 200,response=XmProjectPhase.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") |
|
|
|
|
|
|
|
|
@ApiResponse(code = 200,response= XmPhase.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") |
|
|
}) |
|
|
}) |
|
|
@HasQx(value = "xm_core_xmProjectPhase_edit",name = "修改项目计划基础信息",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
@HasQx(value = "xm_core_xmProjectPhase_edit",name = "修改项目计划基础信息",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
@RequestMapping(value="/edit",method=RequestMethod.POST) |
|
|
@RequestMapping(value="/edit",method=RequestMethod.POST) |
|
|
public Map<String,Object> editXmProjectPhase(@RequestBody XmProjectPhase xmProjectPhase) { |
|
|
|
|
|
|
|
|
public Map<String,Object> editXmProjectPhase(@RequestBody XmPhase xmProjectPhase) { |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Tips tips=new Tips("成功更新一条数据"); |
|
|
Tips tips=new Tips("成功更新一条数据"); |
|
|
try{ |
|
|
try{ |
|
|
if(!StringUtils.hasText(xmProjectPhase.getId())){ |
|
|
if(!StringUtils.hasText(xmProjectPhase.getId())){ |
|
|
return ResponseHelper.failed("id-0","请上送计划编号"); |
|
|
return ResponseHelper.failed("id-0","请上送计划编号"); |
|
|
} |
|
|
} |
|
|
XmProjectPhase xmProjectPhaseDb=this.xmProjectPhaseService.selectOneObject(xmProjectPhase); |
|
|
|
|
|
|
|
|
XmPhase xmProjectPhaseDb=this.xmPhaseService.selectOneObject(xmProjectPhase); |
|
|
if(xmProjectPhaseDb==null){ |
|
|
if(xmProjectPhaseDb==null){ |
|
|
return ResponseHelper.failed("data-0","该计划已不存在"); |
|
|
return ResponseHelper.failed("data-0","该计划已不存在"); |
|
|
} |
|
|
} |
|
|
@ -378,8 +378,8 @@ public class XmProjectPhaseController { |
|
|
m.put("tips", tips); |
|
|
m.put("tips", tips); |
|
|
return m; |
|
|
return m; |
|
|
} |
|
|
} |
|
|
xmProjectPhase=xmProjectPhaseService.autoCalcWorkload(xmProjectPhase); |
|
|
|
|
|
xmProjectPhaseService.calcPhaseBudgetAmount(xmProjectPhase); |
|
|
|
|
|
|
|
|
xmProjectPhase= xmPhaseService.autoCalcWorkload(xmProjectPhase); |
|
|
|
|
|
xmPhaseService.calcPhaseBudgetAmount(xmProjectPhase); |
|
|
List<String> excludePhaseIds=new ArrayList<>(); |
|
|
List<String> excludePhaseIds=new ArrayList<>(); |
|
|
excludePhaseIds.add(xmProjectPhase.getId()); |
|
|
excludePhaseIds.add(xmProjectPhase.getId()); |
|
|
|
|
|
|
|
|
@ -387,11 +387,11 @@ public class XmProjectPhaseController { |
|
|
if(xmProjectPhaseDb.getPhaseBudgetAt()!=null && xmProjectPhaseDb.getPhaseBudgetAt().compareTo(xmProjectPhase.getPhaseBudgetAt())!=0){ |
|
|
if(xmProjectPhaseDb.getPhaseBudgetAt()!=null && xmProjectPhaseDb.getPhaseBudgetAt().compareTo(xmProjectPhase.getPhaseBudgetAt())!=0){ |
|
|
if(xmProjectPhase.getLvl()==1){ |
|
|
if(xmProjectPhase.getLvl()==1){ |
|
|
if("1".equals(xmProject.getBudgetCtrl())){ |
|
|
if("1".equals(xmProject.getBudgetCtrl())){ |
|
|
tips=this.xmProjectPhaseService.judgetProjectBudget(xmProject.getId(),xmProjectPhase.getPhaseBudgetAt(),null,null,null,excludePhaseIds); |
|
|
|
|
|
|
|
|
tips=this.xmPhaseService.judgetProjectBudget(xmProject.getId(),xmProjectPhase.getPhaseBudgetAt(),null,null,null,excludePhaseIds); |
|
|
} |
|
|
} |
|
|
}else{ |
|
|
}else{ |
|
|
if("1".equals(xmProject.getPhaseBudgetCtrl())) { |
|
|
if("1".equals(xmProject.getPhaseBudgetCtrl())) { |
|
|
tips = this.xmProjectPhaseService.judgetPhaseBudget(xmProjectPhase.getParentPhaseId(), xmProjectPhase.getPhaseBudgetAt(), null, null, null, excludePhaseIds); |
|
|
|
|
|
|
|
|
tips = this.xmPhaseService.judgetPhaseBudget(xmProjectPhase.getParentPhaseId(), xmProjectPhase.getPhaseBudgetAt(), null, null, null, excludePhaseIds); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -399,7 +399,7 @@ public class XmProjectPhaseController { |
|
|
if(!tips.isOk()) { |
|
|
if(!tips.isOk()) { |
|
|
return ResponseHelper.failed(tips); |
|
|
return ResponseHelper.failed(tips); |
|
|
} |
|
|
} |
|
|
xmProjectPhaseService.editByPk(xmProjectPhase); |
|
|
|
|
|
|
|
|
xmPhaseService.editByPk(xmProjectPhase); |
|
|
xmRecordService.addProjectPhaseRecord(xmProjectPhase.getProjectId(), xmProjectPhase.getId(), "项目-计划-修改计划", "修改计划"+xmProjectPhase.getPhaseName(),JSON.toJSONString(xmProjectPhase),null); |
|
|
xmRecordService.addProjectPhaseRecord(xmProjectPhase.getProjectId(), xmProjectPhase.getId(), "项目-计划-修改计划", "修改计划"+xmProjectPhase.getPhaseName(),JSON.toJSONString(xmProjectPhase),null); |
|
|
|
|
|
|
|
|
m.put("data",xmProjectPhase); |
|
|
m.put("data",xmProjectPhase); |
|
|
@ -423,7 +423,7 @@ public class XmProjectPhaseController { |
|
|
}) |
|
|
}) |
|
|
@HasQx(value = "xm_core_xmProjectPhase_batchDel",name = "批量删除项目计划",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
@HasQx(value = "xm_core_xmProjectPhase_batchDel",name = "批量删除项目计划",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
@RequestMapping(value="/batchDel",method=RequestMethod.POST) |
|
|
@RequestMapping(value="/batchDel",method=RequestMethod.POST) |
|
|
public Map<String,Object> batchDelXmProjectPhase(@RequestBody List<XmProjectPhase> xmProjectPhases) { |
|
|
|
|
|
|
|
|
public Map<String,Object> batchDelXmProjectPhase(@RequestBody List<XmPhase> xmProjectPhases) { |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Tips tips=new Tips("成功删除"+(xmProjectPhases==null?0:xmProjectPhases.size())+"条数据"); |
|
|
Tips tips=new Tips("成功删除"+(xmProjectPhases==null?0:xmProjectPhases.size())+"条数据"); |
|
|
try{ |
|
|
try{ |
|
|
@ -432,7 +432,7 @@ public class XmProjectPhaseController { |
|
|
m.put("tips", tips); |
|
|
m.put("tips", tips); |
|
|
return m; |
|
|
return m; |
|
|
} |
|
|
} |
|
|
XmProjectPhase xmProjectPhase=xmProjectPhases.get(0); |
|
|
|
|
|
|
|
|
XmPhase xmProjectPhase=xmProjectPhases.get(0); |
|
|
if(!StringUtils.hasText(xmProjectPhase.getProjectId())){ |
|
|
if(!StringUtils.hasText(xmProjectPhase.getProjectId())){ |
|
|
tips.setFailureMsg("项目编号不能为空"); |
|
|
tips.setFailureMsg("项目编号不能为空"); |
|
|
m.put("tips", tips); |
|
|
m.put("tips", tips); |
|
|
@ -451,26 +451,26 @@ public class XmProjectPhaseController { |
|
|
return m; |
|
|
return m; |
|
|
} |
|
|
} |
|
|
List<String> noQxUsernames=new ArrayList<>(); |
|
|
List<String> noQxUsernames=new ArrayList<>(); |
|
|
List<XmProjectPhase> delPhases=new ArrayList<>(); |
|
|
|
|
|
List<XmProjectPhase> xmProjectPhaseListDb=this.xmProjectPhaseService.selectListByIds(xmProjectPhases.stream().map(i->i.getId()).collect(Collectors.toList())); |
|
|
|
|
|
for (XmProjectPhase phase : xmProjectPhaseListDb) { |
|
|
|
|
|
|
|
|
List<XmPhase> delPhases=new ArrayList<>(); |
|
|
|
|
|
List<XmPhase> xmProjectPhaseListDb=this.xmPhaseService.selectListByIds(xmProjectPhases.stream().map(i->i.getId()).collect(Collectors.toList())); |
|
|
|
|
|
for (XmPhase phase : xmProjectPhaseListDb) { |
|
|
boolean meIsHisTeamHead=groupService.checkUserIsOtherUserTeamHead(groupVoList,phase.getMngUserid(),user.getUserid()); |
|
|
boolean meIsHisTeamHead=groupService.checkUserIsOtherUserTeamHead(groupVoList,phase.getMngUserid(),user.getUserid()); |
|
|
if( !meIsPm && !meIsHisTeamHead ){ |
|
|
if( !meIsPm && !meIsHisTeamHead ){ |
|
|
noQxUsernames.add(phase.getMngUsername()); |
|
|
noQxUsernames.add(phase.getMngUsername()); |
|
|
continue; |
|
|
continue; |
|
|
} |
|
|
} |
|
|
//检查是否由关联的任务,有则不允许删除 |
|
|
//检查是否由关联的任务,有则不允许删除 |
|
|
Long exists=this.xmProjectPhaseService.checkExistsTask(phase.getId()); |
|
|
|
|
|
|
|
|
Long exists=this.xmPhaseService.checkExistsTask(phase.getId()); |
|
|
if(exists>0) { |
|
|
if(exists>0) { |
|
|
existsTaskList.add(phase.getPhaseName()); |
|
|
existsTaskList.add(phase.getPhaseName()); |
|
|
}else { |
|
|
}else { |
|
|
delPhases.add(phase); |
|
|
delPhases.add(phase); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
List<XmProjectPhase> canDelNodes=new ArrayList<>(); |
|
|
|
|
|
for (XmProjectPhase phase : delPhases) { |
|
|
|
|
|
|
|
|
List<XmPhase> canDelNodes=new ArrayList<>(); |
|
|
|
|
|
for (XmPhase phase : delPhases) { |
|
|
|
|
|
|
|
|
boolean canDelAllChild =xmProjectPhaseService.checkCanDelAllChild(phase,delPhases); |
|
|
|
|
|
|
|
|
boolean canDelAllChild = xmPhaseService.checkCanDelAllChild(phase,delPhases); |
|
|
if(!canDelAllChild) { |
|
|
if(!canDelAllChild) { |
|
|
hasChildList.add(phase.getPhaseName()); |
|
|
hasChildList.add(phase.getPhaseName()); |
|
|
}else { |
|
|
}else { |
|
|
@ -478,7 +478,7 @@ public class XmProjectPhaseController { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if(canDelNodes.size()>0){ |
|
|
if(canDelNodes.size()>0){ |
|
|
this.xmProjectPhaseService.doBatchDelete(canDelNodes); |
|
|
|
|
|
|
|
|
this.xmPhaseService.doBatchDelete(canDelNodes); |
|
|
xmRecordService.addProjectPhaseRecord(xmProjectPhase.getProjectId(), "", "项目-计划-批量删除计划", "批量删除计划"+canDelNodes.stream().map(i->i.getPhaseName()).collect(Collectors.joining(",")),"",JSON.toJSONString(canDelNodes)); |
|
|
xmRecordService.addProjectPhaseRecord(xmProjectPhase.getProjectId(), "", "项目-计划-批量删除计划", "批量删除计划"+canDelNodes.stream().map(i->i.getPhaseName()).collect(Collectors.joining(",")),"",JSON.toJSONString(canDelNodes)); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
@ -519,7 +519,7 @@ public class XmProjectPhaseController { |
|
|
}) |
|
|
}) |
|
|
@HasQx(value = "xm_core_xmProjectPhase_batchImportFromTemplate",name = "从模板批量创建项目计划",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
@HasQx(value = "xm_core_xmProjectPhase_batchImportFromTemplate",name = "从模板批量创建项目计划",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
@RequestMapping(value="/batchImportFromTemplate",method=RequestMethod.POST) |
|
|
@RequestMapping(value="/batchImportFromTemplate",method=RequestMethod.POST) |
|
|
public Map<String,Object> batchImportFromTemplate(@RequestBody List<XmProjectPhase> xmProjectPhases) { |
|
|
|
|
|
|
|
|
public Map<String,Object> batchImportFromTemplate(@RequestBody List<XmPhase> xmProjectPhases) { |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Tips tips=new Tips("成功导入"+xmProjectPhases.size()+"条数据"); |
|
|
Tips tips=new Tips("成功导入"+xmProjectPhases.size()+"条数据"); |
|
|
try{ |
|
|
try{ |
|
|
@ -528,7 +528,7 @@ public class XmProjectPhaseController { |
|
|
m.put("tips", tips); |
|
|
m.put("tips", tips); |
|
|
return m; |
|
|
return m; |
|
|
} |
|
|
} |
|
|
XmProjectPhase xmProjectPhase=xmProjectPhases.get(0); |
|
|
|
|
|
|
|
|
XmPhase xmProjectPhase=xmProjectPhases.get(0); |
|
|
|
|
|
|
|
|
if(!StringUtils.hasText(xmProjectPhase.getProjectId())){ |
|
|
if(!StringUtils.hasText(xmProjectPhase.getProjectId())){ |
|
|
return ResponseHelper.failed("projectId-0","请上送项目编号"); |
|
|
return ResponseHelper.failed("projectId-0","请上送项目编号"); |
|
|
@ -544,39 +544,39 @@ public class XmProjectPhaseController { |
|
|
return m; |
|
|
return m; |
|
|
} |
|
|
} |
|
|
String projectId=null; |
|
|
String projectId=null; |
|
|
for (XmProjectPhase g : xmProjectPhases) { |
|
|
|
|
|
|
|
|
for (XmPhase g : xmProjectPhases) { |
|
|
projectId=g.getProjectId(); |
|
|
projectId=g.getProjectId(); |
|
|
g.setMngUserid(user.getUserid()); |
|
|
g.setMngUserid(user.getUserid()); |
|
|
g.setMngUsername(user.getUsername()); |
|
|
g.setMngUsername(user.getUsername()); |
|
|
g=xmProjectPhaseService.autoCalcWorkload(g); |
|
|
|
|
|
xmProjectPhaseService.calcPhaseBudgetAmount(g); |
|
|
|
|
|
|
|
|
g= xmPhaseService.autoCalcWorkload(g); |
|
|
|
|
|
xmPhaseService.calcPhaseBudgetAmount(g); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
xmProjectPhaseService.parentIdPathsCalcBeforeSave(xmProjectPhases); |
|
|
|
|
|
List<XmProjectPhase> l1Phases=xmProjectPhases.stream().filter(i->1==i.getLvl()).collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
xmPhaseService.parentIdPathsCalcBeforeSave(xmProjectPhases); |
|
|
|
|
|
List<XmPhase> l1Phases=xmProjectPhases.stream().filter(i->1==i.getLvl()).collect(Collectors.toList()); |
|
|
if(l1Phases==null ||l1Phases.size()==0){//如果是导入到某个计划之下, |
|
|
if(l1Phases==null ||l1Phases.size()==0){//如果是导入到某个计划之下, |
|
|
//找到导入的树中最上面的节点 |
|
|
//找到导入的树中最上面的节点 |
|
|
List<XmProjectPhase> noExists=xmProjectPhases.stream().filter(i->!xmProjectPhases.stream().filter(k->k.getId().equals(i.getParentPhaseId())).findAny().isPresent()).collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
List<XmPhase> noExists=xmProjectPhases.stream().filter(i->!xmProjectPhases.stream().filter(k->k.getId().equals(i.getParentPhaseId())).findAny().isPresent()).collect(Collectors.toList()); |
|
|
//根据同一个父亲归类 |
|
|
//根据同一个父亲归类 |
|
|
Map<String,List<XmProjectPhase>> map=new HashMap<>(); |
|
|
|
|
|
for (XmProjectPhase noExist : noExists) { |
|
|
|
|
|
List<XmProjectPhase> phases=map.get(noExist.getParentPhaseId()); |
|
|
|
|
|
|
|
|
Map<String,List<XmPhase>> map=new HashMap<>(); |
|
|
|
|
|
for (XmPhase noExist : noExists) { |
|
|
|
|
|
List<XmPhase> phases=map.get(noExist.getParentPhaseId()); |
|
|
if(phases==null){ |
|
|
if(phases==null){ |
|
|
phases=new ArrayList<>(); |
|
|
phases=new ArrayList<>(); |
|
|
map.put(noExist.getParentPhaseId(),phases); |
|
|
map.put(noExist.getParentPhaseId(),phases); |
|
|
} |
|
|
} |
|
|
phases.add(noExist); |
|
|
phases.add(noExist); |
|
|
} |
|
|
} |
|
|
for (Map.Entry<String, List<XmProjectPhase>> kv : map.entrySet()) { |
|
|
|
|
|
|
|
|
for (Map.Entry<String, List<XmPhase>> kv : map.entrySet()) { |
|
|
String parentId=kv.getKey(); |
|
|
String parentId=kv.getKey(); |
|
|
List<XmProjectPhase> children=kv.getValue(); |
|
|
|
|
|
|
|
|
List<XmPhase> children=kv.getValue(); |
|
|
BigDecimal phaseTotalBudgetAt=BigDecimal.ZERO; |
|
|
BigDecimal phaseTotalBudgetAt=BigDecimal.ZERO; |
|
|
List<String> excludeIds=children.stream().map(i->i.getId()).collect(Collectors.toList()); |
|
|
List<String> excludeIds=children.stream().map(i->i.getId()).collect(Collectors.toList()); |
|
|
for (XmProjectPhase child : children) { |
|
|
|
|
|
|
|
|
for (XmPhase child : children) { |
|
|
phaseTotalBudgetAt=phaseTotalBudgetAt.add(child.getPhaseBudgetAt()); |
|
|
phaseTotalBudgetAt=phaseTotalBudgetAt.add(child.getPhaseBudgetAt()); |
|
|
} |
|
|
} |
|
|
if("1".equals(xmProject.getPhaseBudgetCtrl())){ |
|
|
if("1".equals(xmProject.getPhaseBudgetCtrl())){ |
|
|
Tips tips2=xmProjectPhaseService.judgetPhaseBudget(parentId,phaseTotalBudgetAt,null,null,null,excludeIds); |
|
|
|
|
|
|
|
|
Tips tips2= xmPhaseService.judgetPhaseBudget(parentId,phaseTotalBudgetAt,null,null,null,excludeIds); |
|
|
if(!tips2.isOk()){ |
|
|
if(!tips2.isOk()){ |
|
|
tips2.setFailureMsg(tips2.getMsg()+" 相关计划为【"+children.stream().map(i->i.getPhaseName()).collect(Collectors.joining(","))+"】"); |
|
|
tips2.setFailureMsg(tips2.getMsg()+" 相关计划为【"+children.stream().map(i->i.getPhaseName()).collect(Collectors.joining(","))+"】"); |
|
|
return ResponseHelper.failed(tips2); |
|
|
return ResponseHelper.failed(tips2); |
|
|
@ -586,27 +586,27 @@ public class XmProjectPhaseController { |
|
|
}else{//直接导入到项目之下,需要判断当前一级预算是否超出项目总预算 |
|
|
}else{//直接导入到项目之下,需要判断当前一级预算是否超出项目总预算 |
|
|
BigDecimal phaseTotalBudgetWorkload=BigDecimal.ZERO; |
|
|
BigDecimal phaseTotalBudgetWorkload=BigDecimal.ZERO; |
|
|
BigDecimal phaseTotalBudgetAt=BigDecimal.ZERO; |
|
|
BigDecimal phaseTotalBudgetAt=BigDecimal.ZERO; |
|
|
for (XmProjectPhase l1Phase : l1Phases) { |
|
|
|
|
|
|
|
|
for (XmPhase l1Phase : l1Phases) { |
|
|
phaseTotalBudgetWorkload=phaseTotalBudgetWorkload.add(l1Phase.getPhaseBudgetWorkload()); |
|
|
phaseTotalBudgetWorkload=phaseTotalBudgetWorkload.add(l1Phase.getPhaseBudgetWorkload()); |
|
|
phaseTotalBudgetAt=phaseTotalBudgetAt.add(l1Phase.getPhaseBudgetAt()); |
|
|
phaseTotalBudgetAt=phaseTotalBudgetAt.add(l1Phase.getPhaseBudgetAt()); |
|
|
} |
|
|
} |
|
|
if("1".equals(xmProject.getBudgetCtrl())) { |
|
|
if("1".equals(xmProject.getBudgetCtrl())) { |
|
|
tips = xmProjectPhaseService.judgetProjectBudget(projectId, phaseTotalBudgetAt, null, null, null, l1Phases.stream().map(i -> i.getId()).collect(Collectors.toList())); |
|
|
|
|
|
|
|
|
tips = xmPhaseService.judgetProjectBudget(projectId, phaseTotalBudgetAt, null, null, null, l1Phases.stream().map(i -> i.getId()).collect(Collectors.toList())); |
|
|
if (!tips.isOk()) { |
|
|
if (!tips.isOk()) { |
|
|
return ResponseHelper.failed(tips); |
|
|
return ResponseHelper.failed(tips); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if(tips.isOk()) { |
|
|
if(tips.isOk()) { |
|
|
for (XmProjectPhase projectPhase : xmProjectPhases) { |
|
|
|
|
|
|
|
|
for (XmPhase projectPhase : xmProjectPhases) { |
|
|
projectPhase.setMngUsername(user.getUsername()); |
|
|
projectPhase.setMngUsername(user.getUsername()); |
|
|
projectPhase.setMngUserid(user.getUserid()); |
|
|
projectPhase.setMngUserid(user.getUserid()); |
|
|
projectPhase.setCtime(new Date()); |
|
|
projectPhase.setCtime(new Date()); |
|
|
projectPhase.setLtime(new Date()); |
|
|
projectPhase.setLtime(new Date()); |
|
|
} |
|
|
} |
|
|
xmProjectPhaseService.doBatchInsert(xmProjectPhases); |
|
|
|
|
|
|
|
|
xmPhaseService.doBatchInsert(xmProjectPhases); |
|
|
|
|
|
|
|
|
for (XmProjectPhase phase : xmProjectPhases) { |
|
|
|
|
|
|
|
|
for (XmPhase phase : xmProjectPhases) { |
|
|
xmRecordService.addProjectPhaseRecord(phase.getProjectId(), phase.getId(), "项目-计划-新增计划", "新增计划"+phase.getPhaseName(),JSON.toJSONString(phase),null); |
|
|
xmRecordService.addProjectPhaseRecord(phase.getProjectId(), phase.getId(), "项目-计划-新增计划", "新增计划"+phase.getPhaseName(),JSON.toJSONString(phase),null); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
@ -629,7 +629,7 @@ public class XmProjectPhaseController { |
|
|
}) |
|
|
}) |
|
|
@HasQx(value = "xm_core_xmProjectPhase_batchSaveBudget",name = "批量修改项目计划的预算",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
@HasQx(value = "xm_core_xmProjectPhase_batchSaveBudget",name = "批量修改项目计划的预算",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
@RequestMapping(value="/batchSaveBudget",method=RequestMethod.POST) |
|
|
@RequestMapping(value="/batchSaveBudget",method=RequestMethod.POST) |
|
|
public Map<String,Object> batchSaveBudget(@RequestBody List<XmProjectPhase> xmProjectPhases) { |
|
|
|
|
|
|
|
|
public Map<String,Object> batchSaveBudget(@RequestBody List<XmPhase> xmProjectPhases) { |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Tips tips=new Tips("成功修改"+xmProjectPhases.size()+"条数据"); |
|
|
Tips tips=new Tips("成功修改"+xmProjectPhases.size()+"条数据"); |
|
|
try{ |
|
|
try{ |
|
|
@ -638,7 +638,7 @@ public class XmProjectPhaseController { |
|
|
m.put("tips", tips); |
|
|
m.put("tips", tips); |
|
|
return m; |
|
|
return m; |
|
|
} |
|
|
} |
|
|
XmProjectPhase xmProjectPhase=xmProjectPhases.get(0); |
|
|
|
|
|
|
|
|
XmPhase xmProjectPhase=xmProjectPhases.get(0); |
|
|
if(!StringUtils.hasText(xmProjectPhase.getProjectId())){ |
|
|
if(!StringUtils.hasText(xmProjectPhase.getProjectId())){ |
|
|
return ResponseHelper.failed("projectId-0","请上送项目编号"); |
|
|
return ResponseHelper.failed("projectId-0","请上送项目编号"); |
|
|
} |
|
|
} |
|
|
@ -654,49 +654,49 @@ public class XmProjectPhaseController { |
|
|
return m; |
|
|
return m; |
|
|
} |
|
|
} |
|
|
String projectId=null; |
|
|
String projectId=null; |
|
|
for (XmProjectPhase g : xmProjectPhases) { |
|
|
|
|
|
|
|
|
for (XmPhase g : xmProjectPhases) { |
|
|
projectId=g.getProjectId(); |
|
|
projectId=g.getProjectId(); |
|
|
g=xmProjectPhaseService.autoCalcWorkload(g); |
|
|
|
|
|
xmProjectPhaseService.calcPhaseBudgetAmount(g); |
|
|
|
|
|
|
|
|
g= xmPhaseService.autoCalcWorkload(g); |
|
|
|
|
|
xmPhaseService.calcPhaseBudgetAmount(g); |
|
|
} |
|
|
} |
|
|
xmProjectPhaseService.parentIdPathsCalcBeforeSave(xmProjectPhases); |
|
|
|
|
|
List<XmProjectPhase> l1Phases=xmProjectPhases.stream().filter(i->1==i.getLvl()).collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
xmPhaseService.parentIdPathsCalcBeforeSave(xmProjectPhases); |
|
|
|
|
|
List<XmPhase> l1Phases=xmProjectPhases.stream().filter(i->1==i.getLvl()).collect(Collectors.toList()); |
|
|
if(l1Phases==null ||l1Phases.size()==0){//如果是导入到某个计划之下,{//直接导入到项目之下,需要判断当前一级预算是否超出项目总预算 |
|
|
if(l1Phases==null ||l1Phases.size()==0){//如果是导入到某个计划之下,{//直接导入到项目之下,需要判断当前一级预算是否超出项目总预算 |
|
|
BigDecimal phaseTotalBudgetWorkload=BigDecimal.ZERO; |
|
|
BigDecimal phaseTotalBudgetWorkload=BigDecimal.ZERO; |
|
|
BigDecimal phaseTotalBudgetAt=BigDecimal.ZERO; |
|
|
BigDecimal phaseTotalBudgetAt=BigDecimal.ZERO; |
|
|
for (XmProjectPhase l1Phase : l1Phases) { |
|
|
|
|
|
|
|
|
for (XmPhase l1Phase : l1Phases) { |
|
|
phaseTotalBudgetWorkload=phaseTotalBudgetWorkload.add(l1Phase.getPhaseBudgetWorkload()); |
|
|
phaseTotalBudgetWorkload=phaseTotalBudgetWorkload.add(l1Phase.getPhaseBudgetWorkload()); |
|
|
phaseTotalBudgetAt=phaseTotalBudgetAt.add(l1Phase.getPhaseBudgetAt()); |
|
|
phaseTotalBudgetAt=phaseTotalBudgetAt.add(l1Phase.getPhaseBudgetAt()); |
|
|
} |
|
|
} |
|
|
if("1".equals(xmProject.getBudgetCtrl())){ |
|
|
if("1".equals(xmProject.getBudgetCtrl())){ |
|
|
tips=xmProjectPhaseService.judgetProjectBudget(projectId,phaseTotalBudgetAt,null,null,null,l1Phases.stream().map(i->i.getId()).collect(Collectors.toList())); |
|
|
|
|
|
|
|
|
tips= xmPhaseService.judgetProjectBudget(projectId,phaseTotalBudgetAt,null,null,null,l1Phases.stream().map(i->i.getId()).collect(Collectors.toList())); |
|
|
if(!tips.isOk()){ |
|
|
if(!tips.isOk()){ |
|
|
return ResponseHelper.failed(tips); |
|
|
return ResponseHelper.failed(tips); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
//找到导入的树中最上面的节点 |
|
|
//找到导入的树中最上面的节点 |
|
|
List<XmProjectPhase> parentNoNulls= xmProjectPhases.stream().filter(i->StringUtils.hasText(i.getParentPhaseId())&&!"0".equals(i.getParentPhaseId())).collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
List<XmPhase> parentNoNulls= xmProjectPhases.stream().filter(i->StringUtils.hasText(i.getParentPhaseId())&&!"0".equals(i.getParentPhaseId())).collect(Collectors.toList()); |
|
|
//根据同一个父亲归类 |
|
|
//根据同一个父亲归类 |
|
|
Map<String,List<XmProjectPhase>> map=new HashMap<>(); |
|
|
|
|
|
for (XmProjectPhase phase : parentNoNulls) { |
|
|
|
|
|
List<XmProjectPhase> phases=map.get(phase.getParentPhaseId()); |
|
|
|
|
|
|
|
|
Map<String,List<XmPhase>> map=new HashMap<>(); |
|
|
|
|
|
for (XmPhase phase : parentNoNulls) { |
|
|
|
|
|
List<XmPhase> phases=map.get(phase.getParentPhaseId()); |
|
|
if(phases==null){ |
|
|
if(phases==null){ |
|
|
phases=new ArrayList<>(); |
|
|
phases=new ArrayList<>(); |
|
|
map.put(phase.getParentPhaseId(),phases); |
|
|
map.put(phase.getParentPhaseId(),phases); |
|
|
} |
|
|
} |
|
|
phases.add(phase); |
|
|
phases.add(phase); |
|
|
} |
|
|
} |
|
|
for (Map.Entry<String, List<XmProjectPhase>> kv : map.entrySet()) { |
|
|
|
|
|
|
|
|
for (Map.Entry<String, List<XmPhase>> kv : map.entrySet()) { |
|
|
String parentId=kv.getKey(); |
|
|
String parentId=kv.getKey(); |
|
|
List<XmProjectPhase> children=kv.getValue(); |
|
|
|
|
|
|
|
|
List<XmPhase> children=kv.getValue(); |
|
|
BigDecimal phaseTotalBudgetAt=BigDecimal.ZERO; |
|
|
BigDecimal phaseTotalBudgetAt=BigDecimal.ZERO; |
|
|
List<String> excludeIds=children.stream().map(i->i.getId()).collect(Collectors.toList()); |
|
|
List<String> excludeIds=children.stream().map(i->i.getId()).collect(Collectors.toList()); |
|
|
for (XmProjectPhase child : children) { |
|
|
|
|
|
|
|
|
for (XmPhase child : children) { |
|
|
phaseTotalBudgetAt=phaseTotalBudgetAt.add(child.getPhaseBudgetAt()); |
|
|
phaseTotalBudgetAt=phaseTotalBudgetAt.add(child.getPhaseBudgetAt()); |
|
|
} |
|
|
} |
|
|
if("1".equals(xmProject.getPhaseBudgetCtrl())) { |
|
|
if("1".equals(xmProject.getPhaseBudgetCtrl())) { |
|
|
Tips tips2 = xmProjectPhaseService.judgetPhaseBudget(parentId, phaseTotalBudgetAt, null, null, null, excludeIds); |
|
|
|
|
|
|
|
|
Tips tips2 = xmPhaseService.judgetPhaseBudget(parentId, phaseTotalBudgetAt, null, null, null, excludeIds); |
|
|
if (!tips2.isOk()) { |
|
|
if (!tips2.isOk()) { |
|
|
tips2.setFailureMsg(tips2.getMsg() + " 相关计划为【" + children.stream().map(i -> i.getPhaseName()).collect(Collectors.joining(",")) + "】"); |
|
|
tips2.setFailureMsg(tips2.getMsg() + " 相关计划为【" + children.stream().map(i -> i.getPhaseName()).collect(Collectors.joining(",")) + "】"); |
|
|
return ResponseHelper.failed(tips2); |
|
|
return ResponseHelper.failed(tips2); |
|
|
@ -705,19 +705,19 @@ public class XmProjectPhaseController { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (XmProjectPhase projectPhase : xmProjectPhases) { |
|
|
|
|
|
|
|
|
for (XmPhase projectPhase : xmProjectPhases) { |
|
|
int childrenCnt=Integer.valueOf(xmProjectPhases.stream().filter(i->projectPhase.getId().equals(i.getParentPhaseId())).count()+""); |
|
|
int childrenCnt=Integer.valueOf(xmProjectPhases.stream().filter(i->projectPhase.getId().equals(i.getParentPhaseId())).count()+""); |
|
|
if(childrenCnt>0){ |
|
|
if(childrenCnt>0){ |
|
|
projectPhase.setChildrenCnt(childrenCnt); |
|
|
projectPhase.setChildrenCnt(childrenCnt); |
|
|
projectPhase.setNtype("1"); |
|
|
projectPhase.setNtype("1"); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
List<XmProjectPhase> xmProjectPhaseListDb=xmProjectPhaseService.selectListByIds(xmProjectPhases.stream().map(i->i.getId()).collect(Collectors.toList())); |
|
|
|
|
|
|
|
|
List<XmPhase> xmProjectPhaseListDb= xmPhaseService.selectListByIds(xmProjectPhases.stream().map(i->i.getId()).collect(Collectors.toList())); |
|
|
|
|
|
|
|
|
List<XmProjectPhase> inserts=xmProjectPhases.stream().filter(i->!xmProjectPhaseListDb.stream().filter(k->k.getId().equals(i.getId())).findAny().isPresent()).collect(Collectors.toList()); |
|
|
|
|
|
List<XmProjectPhase> updates=xmProjectPhases.stream().filter(i->xmProjectPhaseListDb.stream().filter(k->k.getId().equals(i.getId())).findAny().isPresent()).collect(Collectors.toList()); |
|
|
|
|
|
xmProjectPhaseService.batchInsertOrUpdate(inserts,updates); |
|
|
|
|
|
for (XmProjectPhase phase : xmProjectPhases) { |
|
|
|
|
|
|
|
|
List<XmPhase> inserts=xmProjectPhases.stream().filter(i->!xmProjectPhaseListDb.stream().filter(k->k.getId().equals(i.getId())).findAny().isPresent()).collect(Collectors.toList()); |
|
|
|
|
|
List<XmPhase> updates=xmProjectPhases.stream().filter(i->xmProjectPhaseListDb.stream().filter(k->k.getId().equals(i.getId())).findAny().isPresent()).collect(Collectors.toList()); |
|
|
|
|
|
xmPhaseService.batchInsertOrUpdate(inserts,updates); |
|
|
|
|
|
for (XmPhase phase : xmProjectPhases) { |
|
|
xmRecordService.addProjectPhaseRecord(phase.getProjectId(), phase.getId(), "项目-计划-修改计划预算", "修改计划"+phase.getPhaseName(),JSON.toJSONString(phase),null); |
|
|
xmRecordService.addProjectPhaseRecord(phase.getProjectId(), phase.getId(), "项目-计划-修改计划预算", "修改计划"+phase.getPhaseName(),JSON.toJSONString(phase),null); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
@ -758,7 +758,7 @@ public class XmProjectPhaseController { |
|
|
m.put("tips", tips); |
|
|
m.put("tips", tips); |
|
|
return m; |
|
|
return m; |
|
|
} |
|
|
} |
|
|
int i= xmProjectPhaseService.loadTasksToXmProjectPhase(xmProject.getId()); |
|
|
|
|
|
|
|
|
int i= xmPhaseService.loadTasksToXmProjectPhase(xmProject.getId()); |
|
|
xmRecordService.addProjectPhaseRecord(xmProject.getId(), "", "项目-计划-汇总统计", "计算项目计划进度","",null); |
|
|
xmRecordService.addProjectPhaseRecord(xmProject.getId(), "", "项目-计划-汇总统计", "计算项目计划进度","",null); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -799,7 +799,7 @@ public class XmProjectPhaseController { |
|
|
m.put("tips", tips); |
|
|
m.put("tips", tips); |
|
|
return m; |
|
|
return m; |
|
|
} |
|
|
} |
|
|
xmProjectPhaseService.calcKeyPaths((String) params.get("projectId")); |
|
|
|
|
|
|
|
|
xmPhaseService.calcKeyPaths((String) params.get("projectId")); |
|
|
xmRecordService.addProjectPhaseRecord(xmProject.getId(), "", "项目-计划-关键路径计算", "计算项目计划关键路径","",null); |
|
|
xmRecordService.addProjectPhaseRecord(xmProject.getId(), "", "项目-计划-关键路径计算", "计算项目计划关键路径","",null); |
|
|
|
|
|
|
|
|
}catch (BizException e) { |
|
|
}catch (BizException e) { |
|
|
@ -837,7 +837,7 @@ public class XmProjectPhaseController { |
|
|
m.put("tips", tips); |
|
|
m.put("tips", tips); |
|
|
return m; |
|
|
return m; |
|
|
} |
|
|
} |
|
|
Map<String,Object> data=xmProjectPhaseService.selectTotalProjectAndPhaseBudgetCost((String) params.get("projectId"),null); |
|
|
|
|
|
|
|
|
Map<String,Object> data= xmPhaseService.selectTotalProjectAndPhaseBudgetCost((String) params.get("projectId"),null); |
|
|
m.put("data",data); |
|
|
m.put("data",data); |
|
|
}catch (BizException e) { |
|
|
}catch (BizException e) { |
|
|
tips=e.getTips(); |
|
|
tips=e.getTips(); |
|
|
|