|
|
@ -123,11 +123,28 @@ public class XmTaskController { |
|
|
public Map<String,Object> addTask(@RequestBody XmTaskVo xmTaskVo) { |
|
|
public Map<String,Object> addTask(@RequestBody XmTaskVo xmTaskVo) { |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Tips tips=new Tips("成功新增一条数据"); |
|
|
Tips tips=new Tips("成功新增一条数据"); |
|
|
try{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try{ |
|
|
|
|
|
|
|
|
|
|
|
User user=LoginUtils.getCurrentUserInfo(); |
|
|
|
|
|
xmTaskVo.setCreateUserid(user.getUserid()); |
|
|
|
|
|
xmTaskVo.setCreateUsername(user.getUsername()); |
|
|
|
|
|
xmTaskVo.setExecutorUserid(user.getUserid()); |
|
|
|
|
|
xmTaskVo.setExecutorUsername(user.getUsername()); |
|
|
xmTaskVo.setCreateTime(new Date()); |
|
|
xmTaskVo.setCreateTime(new Date()); |
|
|
|
|
|
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(xmTaskVo.getProjectId()); |
|
|
|
|
|
if(pgroups==null || pgroups.size()==0){ |
|
|
|
|
|
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
boolean isHead=groupService.checkUserIsHead(pgroups,user.getUserid(),user.getUserid()); |
|
|
|
|
|
if(!isHead){ |
|
|
|
|
|
tips.setFailureMsg("您无权新建任务!项目经理、组长可以新建任务。"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
xmTaskVo.setRate(BigDecimal.ZERO); |
|
|
xmTaskVo.setRate(BigDecimal.ZERO); |
|
|
if(xmTaskVo.getMilestone() == ""){ |
|
|
|
|
|
|
|
|
if( !StringUtils.hasText(xmTaskVo.getMilestone()) ){ |
|
|
xmTaskVo.setMilestone("0"); |
|
|
xmTaskVo.setMilestone("0"); |
|
|
} |
|
|
} |
|
|
String projectPhaseId=xmTaskVo.getProjectPhaseId(); |
|
|
String projectPhaseId=xmTaskVo.getProjectPhaseId(); |
|
|
@ -217,66 +234,6 @@ public class XmTaskController { |
|
|
return m; |
|
|
return m; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation( value = "新增一条xm_task信息",notes="addXmTask,主键如果为空,后台自动生成") |
|
|
|
|
|
@ApiResponses({ |
|
|
|
|
|
@ApiResponse(code = 200,response=XmTask.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") |
|
|
|
|
|
}) |
|
|
|
|
|
@HasQx(value = "xm_core_xmTask_add",name = "新增任务",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
|
|
|
@RequestMapping(value="/add",method=RequestMethod.POST) |
|
|
|
|
|
public Map<String,Object> addXmTask(@RequestBody XmTask xmTask) { |
|
|
|
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
|
|
|
Tips tips=new Tips("成功新增一条数据"); |
|
|
|
|
|
try{ |
|
|
|
|
|
if(StringUtils.isEmpty(xmTask.getId())) { |
|
|
|
|
|
xmTask.setId(xmTaskService.createKey("id")); |
|
|
|
|
|
}else{ |
|
|
|
|
|
XmTask xmTaskQuery = new XmTask(xmTask.getId()); |
|
|
|
|
|
if(xmTaskService.countByWhere(xmTaskQuery)>0){ |
|
|
|
|
|
tips.setFailureMsg("编号重复,请修改编号再提交"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
xmTask.setCreateTime(new Date()); |
|
|
|
|
|
xmTask.setRate(BigDecimal.ZERO); |
|
|
|
|
|
if(xmTask.getMilestone() == ""){ |
|
|
|
|
|
xmTask.setMilestone("0"); |
|
|
|
|
|
} |
|
|
|
|
|
String projectPhaseId=xmTask.getProjectPhaseId(); |
|
|
|
|
|
BigDecimal zero=BigDecimal.ZERO; |
|
|
|
|
|
BigDecimal taskBudgetCost=BigDecimal.ZERO; |
|
|
|
|
|
BigDecimal taskBudgetInnerUserAt=BigDecimal.ZERO; |
|
|
|
|
|
BigDecimal taskBudgetOutUserAt=BigDecimal.ZERO; |
|
|
|
|
|
BigDecimal taskBudgetNouserAt=BigDecimal.ZERO; |
|
|
|
|
|
List<String> excludePhaseIds=new ArrayList<>(); |
|
|
|
|
|
if("1".equals(xmTask.getTaskOut())) { |
|
|
|
|
|
taskBudgetOutUserAt=taskBudgetOutUserAt.add(NumberUtil.getBigDecimal(xmTask.getBudgetCost(),zero)); |
|
|
|
|
|
}else { |
|
|
|
|
|
taskBudgetInnerUserAt=taskBudgetInnerUserAt.add(NumberUtil.getBigDecimal(xmTask.getBudgetCost(),zero)); |
|
|
|
|
|
} |
|
|
|
|
|
taskBudgetCost=taskBudgetCost.add(taskBudgetInnerUserAt).add(taskBudgetOutUserAt).add(taskBudgetNouserAt); |
|
|
|
|
|
excludePhaseIds.add(xmTask.getId()); |
|
|
|
|
|
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludePhaseIds); |
|
|
|
|
|
if(judgetTips.isOk()) { |
|
|
|
|
|
xmTaskService.insert(xmTask); |
|
|
|
|
|
xmRecordService.addXmTaskRecord(xmTask.getProjectId(), xmTask.getId(), "项目-任务-新增任务", "新增任务"+xmTask.getName(),JSON.toJSONString(xmTask),null); |
|
|
|
|
|
}else { |
|
|
|
|
|
tips=judgetTips; |
|
|
|
|
|
} |
|
|
|
|
|
m.put("data",xmTask); |
|
|
|
|
|
}catch (BizException e) { |
|
|
|
|
|
tips=e.getTips(); |
|
|
|
|
|
logger.error("",e); |
|
|
|
|
|
}catch (Exception e) { |
|
|
|
|
|
tips.setFailureMsg(e.getMessage()); |
|
|
|
|
|
logger.error("",e); |
|
|
|
|
|
} |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation( value = "删除一条xm_task信息",notes="delXmTask,仅需要上传主键字段") |
|
|
@ApiOperation( value = "删除一条xm_task信息",notes="delXmTask,仅需要上传主键字段") |
|
|
@ApiResponses({ |
|
|
@ApiResponses({ |
|
|
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}") |
|
|
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}") |
|
|
@ -287,6 +244,36 @@ public class XmTaskController { |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Tips tips=new Tips("成功删除一条数据"); |
|
|
Tips tips=new Tips("成功删除一条数据"); |
|
|
try{ |
|
|
try{ |
|
|
|
|
|
User user=LoginUtils.getCurrentUserInfo(); |
|
|
|
|
|
if(!StringUtils.hasText(xmTask.getProjectId())){ |
|
|
|
|
|
tips.setFailureMsg("项目编号不能为空"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
if(!StringUtils.hasText(xmTask.getId())){ |
|
|
|
|
|
tips.setFailureMsg("任务编号不能为空"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(xmTask.getProjectId()); |
|
|
|
|
|
if(pgroups==null || pgroups.size()==0){ |
|
|
|
|
|
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
boolean isHead=groupService.checkUserIsHead(pgroups,user.getUserid(),user.getUserid()); |
|
|
|
|
|
if(!isHead){ |
|
|
|
|
|
tips.setFailureMsg("您无权删除该任务!项目经理、组长可以删除任务。"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
XmTask xmTaskDb=this.xmTaskService.selectOneObject(xmTask); |
|
|
|
|
|
if(xmTaskDb==null){ |
|
|
|
|
|
tips.setFailureMsg("该任务不存在"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
xmTaskService.deleteTask(xmTask); |
|
|
xmTaskService.deleteTask(xmTask); |
|
|
}catch (BizException e) { |
|
|
}catch (BizException e) { |
|
|
tips=e.getTips(); |
|
|
tips=e.getTips(); |
|
|
@ -308,27 +295,55 @@ public class XmTaskController { |
|
|
public Map<String,Object> editXmTask(@RequestBody XmTaskVo xmTaskVo) { |
|
|
public Map<String,Object> editXmTask(@RequestBody XmTaskVo xmTaskVo) { |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Tips tips=new Tips("成功更新一条数据"); |
|
|
Tips tips=new Tips("成功更新一条数据"); |
|
|
try{ |
|
|
|
|
|
|
|
|
try{ |
|
|
|
|
|
User user=LoginUtils.getCurrentUserInfo(); |
|
|
|
|
|
if(!StringUtils.hasText(xmTaskVo.getProjectId())){ |
|
|
|
|
|
tips.setFailureMsg("项目编号不能为空"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
if(!StringUtils.hasText(xmTaskVo.getId())){ |
|
|
|
|
|
tips.setFailureMsg("任务编号不能为空"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(xmTaskVo.getProjectId()); |
|
|
|
|
|
if(pgroups==null || pgroups.size()==0){ |
|
|
|
|
|
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
XmTask xmTaskDb=this.xmTaskService.selectOneObject(xmTaskVo); |
|
|
|
|
|
if(xmTaskDb==null){ |
|
|
|
|
|
tips.setFailureMsg("该任务不存在"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
boolean isHead=groupService.checkUserIsHead(pgroups,xmTaskDb.getCreateUserid(),user.getUserid()); |
|
|
|
|
|
if(!isHead){ |
|
|
|
|
|
tips.setFailureMsg("您无权修改该任务基础信息!项目经理、组长可以修改任务的基础信息。"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
BigDecimal taskBudgetCost=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetCost=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetInnerUserAt=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetInnerUserAt=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetOutUserAt=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetOutUserAt=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetNouserAt=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetNouserAt=BigDecimal.ZERO; |
|
|
String projectPhaseId=null; |
|
|
String projectPhaseId=null; |
|
|
BigDecimal zero=BigDecimal.ZERO; |
|
|
BigDecimal zero=BigDecimal.ZERO; |
|
|
List<String> excludePhaseIds=new ArrayList<>(); |
|
|
|
|
|
|
|
|
List<String> excludeTaskIds=new ArrayList<>(); |
|
|
projectPhaseId=xmTaskVo.getProjectPhaseId(); |
|
|
projectPhaseId=xmTaskVo.getProjectPhaseId(); |
|
|
if("1".equals(xmTaskVo.getTaskOut())) { |
|
|
if("1".equals(xmTaskVo.getTaskOut())) { |
|
|
taskBudgetOutUserAt=taskBudgetOutUserAt.add(NumberUtil.getBigDecimal(xmTaskVo.getBudgetCost(),zero)); |
|
|
taskBudgetOutUserAt=taskBudgetOutUserAt.add(NumberUtil.getBigDecimal(xmTaskVo.getBudgetCost(),zero)); |
|
|
}else { |
|
|
}else { |
|
|
taskBudgetInnerUserAt=taskBudgetInnerUserAt.add(NumberUtil.getBigDecimal(xmTaskVo.getBudgetCost(),zero)); |
|
|
taskBudgetInnerUserAt=taskBudgetInnerUserAt.add(NumberUtil.getBigDecimal(xmTaskVo.getBudgetCost(),zero)); |
|
|
} |
|
|
} |
|
|
taskBudgetCost=taskBudgetCost.add(taskBudgetInnerUserAt).add(taskBudgetOutUserAt).add(taskBudgetNouserAt); |
|
|
|
|
|
excludePhaseIds.add(xmTaskVo.getId()); |
|
|
|
|
|
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludePhaseIds); |
|
|
|
|
|
|
|
|
taskBudgetCost=taskBudgetCost.add(taskBudgetInnerUserAt).add(taskBudgetOutUserAt).add(taskBudgetNouserAt); |
|
|
|
|
|
excludeTaskIds.add(xmTaskVo.getId()); |
|
|
|
|
|
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludeTaskIds); |
|
|
if(judgetTips.isOk()) { |
|
|
if(judgetTips.isOk()) { |
|
|
xmTaskService.updateTask(xmTaskVo); |
|
|
xmTaskService.updateTask(xmTaskVo); |
|
|
if(!StringUtils.isEmpty(xmTaskVo.getExecutorUserid())) { |
|
|
if(!StringUtils.isEmpty(xmTaskVo.getExecutorUserid())) { |
|
|
User user=LoginUtils.getCurrentUserInfo(); |
|
|
|
|
|
List<XmProjectGroupVo> groups=groupService.getUserGroups(xmTaskVo.getProjectId(), xmTaskVo.getExecutorUserid()); |
|
|
List<XmProjectGroupVo> groups=groupService.getUserGroups(xmTaskVo.getProjectId(), xmTaskVo.getExecutorUserid()); |
|
|
if(groups!=null && groups.size()>0) { |
|
|
if(groups!=null && groups.size()>0) { |
|
|
for (XmProjectGroupVo g : groups) { |
|
|
for (XmProjectGroupVo g : groups) { |
|
|
@ -362,12 +377,38 @@ public class XmTaskController { |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Tips tips=new Tips("成功更新一条数据"); |
|
|
Tips tips=new Tips("成功更新一条数据"); |
|
|
try{ |
|
|
try{ |
|
|
|
|
|
User user=LoginUtils.getCurrentUserInfo(); |
|
|
|
|
|
if(!StringUtils.hasText(xmTask.getProjectId())){ |
|
|
|
|
|
tips.setFailureMsg("项目编号不能为空"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
if(!StringUtils.hasText(xmTask.getId())){ |
|
|
|
|
|
tips.setFailureMsg("任务编号不能为空"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(xmTask.getProjectId()); |
|
|
|
|
|
if(pgroups==null || pgroups.size()==0){ |
|
|
|
|
|
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
XmTask xmTaskDb=xmTaskService.selectOneObject(xmTask); |
|
|
|
|
|
boolean isHead=groupService.checkUserIsHead(pgroups,xmTaskDb.getCreateUserid(),user.getUserid()); |
|
|
|
|
|
if(!isHead){ |
|
|
|
|
|
boolean isCreateUser=user.getUserid().equals(xmTaskDb.getCreateUserid()); |
|
|
|
|
|
boolean isExecUser=user.getUserid().equals(xmTaskDb.getExecutorUserid()); |
|
|
|
|
|
if( !isCreateUser && !isExecUser ){ |
|
|
|
|
|
tips.setFailureMsg("您无权修改该任务的进度!只有任务执行人、任务负责人、组长、项目经理可以修改任务的进度。"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
xmTaskService.updateProgress(xmTask); |
|
|
xmTaskService.updateProgress(xmTask); |
|
|
if(!StringUtils.isEmpty(xmTask.getExecutorUserid())) { |
|
|
if(!StringUtils.isEmpty(xmTask.getExecutorUserid())) { |
|
|
User user=LoginUtils.getCurrentUserInfo(); |
|
|
|
|
|
List<XmProjectGroupVo> groups=groupService.getUserGroups(xmTask.getProjectId(), xmTask.getExecutorUserid()); |
|
|
|
|
|
if(groups!=null && groups.size()>0) { |
|
|
|
|
|
for (XmProjectGroupVo g : groups) { |
|
|
|
|
|
|
|
|
if(pgroups!=null && pgroups.size()>0) { |
|
|
|
|
|
for (XmProjectGroupVo g : pgroups) { |
|
|
xmPushMsgService.pushGroupMsg(user.getBranchId(), g.getId(), user.getUserid(), user.getUsername(), user.getUsername()+"将任务【"+xmTask.getName()+"】进度更新为"+xmTask.getRate()+"%"); |
|
|
xmPushMsgService.pushGroupMsg(user.getBranchId(), g.getId(), user.getUserid(), user.getUsername(), user.getUsername()+"将任务【"+xmTask.getName()+"】进度更新为"+xmTask.getRate()+"%"); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
@ -394,28 +435,71 @@ public class XmTaskController { |
|
|
public Map<String,Object> batchImportFromTemplate(@RequestBody List<XmTask> xmTasks) { |
|
|
public Map<String,Object> batchImportFromTemplate(@RequestBody List<XmTask> xmTasks) { |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Tips tips=new Tips("成功导入"+xmTasks.size()+"条数据"); |
|
|
Tips tips=new Tips("成功导入"+xmTasks.size()+"条数据"); |
|
|
try{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try{ |
|
|
|
|
|
|
|
|
|
|
|
User user=LoginUtils.getCurrentUserInfo(); |
|
|
BigDecimal taskBudgetCost=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetCost=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetInnerUserAt=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetInnerUserAt=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetOutUserAt=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetOutUserAt=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetNouserAt=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetNouserAt=BigDecimal.ZERO; |
|
|
String projectPhaseId=null; |
|
|
|
|
|
|
|
|
if(xmTasks==null || xmTasks.size()==0){ |
|
|
|
|
|
tips.setFailureMsg("任务列表不能为空"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
XmTask xmTask=xmTasks.get(0); |
|
|
|
|
|
String projectPhaseId=xmTask.getProjectPhaseId(); |
|
|
|
|
|
String projectId=xmTask.getProjectId(); |
|
|
|
|
|
if( !StringUtils.hasText(projectId) ){ |
|
|
|
|
|
tips.setFailureMsg("项目编号不能为空"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
if( !StringUtils.hasText(projectPhaseId) ){ |
|
|
|
|
|
tips.setFailureMsg("阶段计划编号不能为空"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId); |
|
|
|
|
|
if(pgroups==null || pgroups.size()==0){ |
|
|
|
|
|
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
boolean isHead=groupService.checkUserIsHead(pgroups,user.getUserid(),user.getUserid()); |
|
|
|
|
|
if(!isHead){ |
|
|
|
|
|
tips.setFailureMsg("您无权批量导入任务!项目经理、组长可以批量导入任务。"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
BigDecimal zero=BigDecimal.ZERO; |
|
|
BigDecimal zero=BigDecimal.ZERO; |
|
|
List<String> excludePhaseIds=new ArrayList<>(); |
|
|
|
|
|
|
|
|
List<String> excludeTaskIds=new ArrayList<>(); |
|
|
for (XmTask g : xmTasks) { |
|
|
for (XmTask g : xmTasks) { |
|
|
projectPhaseId=g.getProjectPhaseId(); |
|
|
|
|
|
|
|
|
if(!projectPhaseId.equals(g.getProjectPhaseId())){ |
|
|
|
|
|
tips.setFailureMsg("只能在同一个阶段计划下批量导入任务"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
if(!projectId.equals(g.getProjectId())){ |
|
|
|
|
|
tips.setFailureMsg("只能在同一个项目下批量导入任务"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
g.setCreateUserid(user.getUserid()); |
|
|
|
|
|
g.setCreateUsername(user.getUsername()); |
|
|
|
|
|
g.setExecutorUserid(user.getUserid()); |
|
|
|
|
|
g.setExecutorUsername(user.getUsername()); |
|
|
if("1".equals(g.getTaskOut())) { |
|
|
if("1".equals(g.getTaskOut())) { |
|
|
taskBudgetOutUserAt=taskBudgetOutUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero)); |
|
|
taskBudgetOutUserAt=taskBudgetOutUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero)); |
|
|
}else { |
|
|
}else { |
|
|
taskBudgetInnerUserAt=taskBudgetInnerUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero)); |
|
|
taskBudgetInnerUserAt=taskBudgetInnerUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero)); |
|
|
} |
|
|
|
|
|
excludePhaseIds.add(g.getId()); |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
excludeTaskIds.add(g.getId()); |
|
|
} |
|
|
} |
|
|
taskBudgetCost=taskBudgetCost.add(taskBudgetInnerUserAt).add(taskBudgetOutUserAt).add(taskBudgetNouserAt); |
|
|
taskBudgetCost=taskBudgetCost.add(taskBudgetInnerUserAt).add(taskBudgetOutUserAt).add(taskBudgetNouserAt); |
|
|
|
|
|
|
|
|
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludePhaseIds); |
|
|
|
|
|
|
|
|
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludeTaskIds); |
|
|
if(judgetTips.isOk()) { |
|
|
if(judgetTips.isOk()) { |
|
|
xmTaskService.batchImportFromTemplate(xmTasks); |
|
|
xmTaskService.batchImportFromTemplate(xmTasks); |
|
|
for (XmTask t : xmTasks) { |
|
|
for (XmTask t : xmTasks) { |
|
|
@ -440,18 +524,71 @@ public class XmTaskController { |
|
|
@ApiResponses({ |
|
|
@ApiResponses({ |
|
|
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}") |
|
|
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}") |
|
|
}) |
|
|
}) |
|
|
@HasQx(value = "xm_core_xmTask_batchRelTasksWithMenu",name = "从故事导入任务",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
|
|
|
|
|
|
@HasQx(value = "xm_core_xmTask_batchRelTasksWithMenu",name = "批量将任务与一个用户故事关联",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
@RequestMapping(value="/batchRelTasksWithMenu",method=RequestMethod.POST) |
|
|
@RequestMapping(value="/batchRelTasksWithMenu",method=RequestMethod.POST) |
|
|
public Map<String,Object> batchRelTasksWithMenu(@RequestBody List<XmTask> xmTasks) { |
|
|
public Map<String,Object> batchRelTasksWithMenu(@RequestBody List<XmTask> xmTasks) { |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Tips tips=new Tips("成功导入"+xmTasks.size()+"条数据"); |
|
|
|
|
|
try{ |
|
|
|
|
|
|
|
|
|
|
|
xmTaskService.batchRelTasksWithMenu(xmTasks); |
|
|
|
|
|
for (XmTask t : xmTasks) { |
|
|
|
|
|
|
|
|
Tips tips=new Tips("成功"+xmTasks.size()+"条任务数据与用户故事关联"); |
|
|
|
|
|
try{ |
|
|
|
|
|
User user=LoginUtils.getCurrentUserInfo(); |
|
|
|
|
|
|
|
|
|
|
|
if(xmTasks==null || xmTasks.size()==0){ |
|
|
|
|
|
tips.setFailureMsg("任务列表不能为空"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
XmTask xmTask=xmTasks.get(0); |
|
|
|
|
|
String projectId=xmTask.getProjectId(); |
|
|
|
|
|
if( !StringUtils.hasText(projectId) ){ |
|
|
|
|
|
tips.setFailureMsg("项目编号不能为空"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId); |
|
|
|
|
|
if(pgroups==null || pgroups.size()==0){ |
|
|
|
|
|
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
List<XmTask> allowTasks=new ArrayList<>(); |
|
|
|
|
|
List<XmTask> noAllowTasks=new ArrayList<>(); |
|
|
|
|
|
Map<String,XmTask> xmTaskDbMap=this.xmTaskService.selectTasksMapByTasks(xmTasks); |
|
|
|
|
|
for (XmTask task : xmTaskDbMap.values()) { |
|
|
|
|
|
if( !projectId.equals(task.getProjectId()) ){ |
|
|
|
|
|
tips.setFailureMsg("所有任务必须同属于一个项目"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
boolean isMyCreate=user.getUserid().equals(task.getCreateUserid()); |
|
|
|
|
|
if(isMyCreate){ |
|
|
|
|
|
allowTasks.add(task); |
|
|
|
|
|
}else{ |
|
|
|
|
|
boolean isHead=groupService.checkUserIsHead(pgroups,task.getCreateUserid(),user.getUserid()); |
|
|
|
|
|
if(!isHead){ |
|
|
|
|
|
noAllowTasks.add(task); |
|
|
|
|
|
}else { |
|
|
|
|
|
allowTasks.add(task); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
if(allowTasks.size()>0){ |
|
|
|
|
|
xmTaskService.batchRelTasksWithMenu(allowTasks); |
|
|
|
|
|
for (XmTask t : allowTasks) { |
|
|
xmRecordService.addXmTaskRecord(t.getProjectId(), t.getId(), "项目-任务-批量更新任务", "将任务"+t.getName()+"与故事【"+t.getMenuId()+"-"+t.getMenuName()+"】关联",JSON.toJSONString(t),null); |
|
|
xmRecordService.addXmTaskRecord(t.getProjectId(), t.getId(), "项目-任务-批量更新任务", "将任务"+t.getName()+"与故事【"+t.getMenuId()+"-"+t.getMenuName()+"】关联",JSON.toJSONString(t),null); |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
if(noAllowTasks.size()>0){ |
|
|
|
|
|
tips.setOkMsg(allowTasks.size()+"个任务成功关联用户故事,另外有"+noAllowTasks.size()+"个任务无权操作,只有任务负责人、项目经理、组长可以批量将任务与用户故事进行关联"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
if(noAllowTasks.size()>0){ |
|
|
|
|
|
tips.setFailureMsg(allowTasks.size()+"个任务成功关联用户故事,另外有"+noAllowTasks.size()+"个任务无权操作,只有任务负责人、项目经理、组长可以批量将任务与用户故事进行关联"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}catch (BizException e) { |
|
|
}catch (BizException e) { |
|
|
tips=e.getTips(); |
|
|
tips=e.getTips(); |
|
|
@ -474,21 +611,60 @@ public class XmTaskController { |
|
|
public Map<String,Object> batchDelXmTask(@RequestBody List<XmTask> xmTasks) { |
|
|
public Map<String,Object> batchDelXmTask(@RequestBody List<XmTask> xmTasks) { |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Tips tips=new Tips("成功删除"+xmTasks.size()+"条数据"); |
|
|
Tips tips=new Tips("成功删除"+xmTasks.size()+"条数据"); |
|
|
try{ |
|
|
|
|
|
|
|
|
try{ |
|
|
|
|
|
|
|
|
|
|
|
User user=LoginUtils.getCurrentUserInfo(); |
|
|
|
|
|
|
|
|
|
|
|
if(xmTasks==null || xmTasks.size()==0){ |
|
|
|
|
|
tips.setFailureMsg("任务列表不能为空"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
XmTask xmTask=xmTasks.get(0); |
|
|
|
|
|
String projectId=xmTask.getProjectId(); |
|
|
|
|
|
if( !StringUtils.hasText(projectId) ){ |
|
|
|
|
|
tips.setFailureMsg("项目编号不能为空"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId); |
|
|
|
|
|
if(pgroups==null || pgroups.size()==0){ |
|
|
|
|
|
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
List<XmTask> allowTasks=new ArrayList<>(); |
|
|
|
|
|
List<XmTask> noAllowTasks=new ArrayList<>(); |
|
|
|
|
|
Map<String,XmTask> xmTaskMap=this.xmTaskService.selectTasksMapByTasks(xmTasks); |
|
|
|
|
|
for (XmTask task : xmTaskMap.values()) { |
|
|
|
|
|
if( !projectId.equals(task.getProjectId()) ){ |
|
|
|
|
|
tips.setFailureMsg("所有任务必须同属于一个项目"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
boolean isHead=groupService.checkUserIsHead(pgroups,task.getCreateUserid(),user.getUserid()); |
|
|
|
|
|
if(!isHead){ |
|
|
|
|
|
noAllowTasks.add(task); |
|
|
|
|
|
}else { |
|
|
|
|
|
allowTasks.add(task); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
List<String> noDelList=new ArrayList<>(); |
|
|
List<String> noDelList=new ArrayList<>(); |
|
|
xmTasks.forEach(t->{ |
|
|
|
|
|
|
|
|
allowTasks.forEach(t->{ |
|
|
try { |
|
|
try { |
|
|
xmTaskService.deleteTask(t); |
|
|
xmTaskService.deleteTask(t); |
|
|
} catch (BizException e) { |
|
|
} catch (BizException e) { |
|
|
noDelList.add(t.getName()); |
|
|
noDelList.add(t.getName()); |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
if(noDelList.size()>0 && xmTasks.size()>noDelList.size()) { |
|
|
|
|
|
tips.setOkMsg("成功删除"+(xmTasks.size()-noDelList.size())+"条任务,其中以下任务可能存在未结算的执行人或者存在子任务,不允许删除"+StringUtils.arrayToCommaDelimitedString(noDelList.toArray())); |
|
|
|
|
|
}if(noDelList.size()>0 && xmTasks.size()==noDelList.size()) { |
|
|
|
|
|
|
|
|
if(noDelList.size()>0 && allowTasks.size()>noDelList.size()) { |
|
|
|
|
|
tips.setOkMsg("成功删除"+(allowTasks.size()-noDelList.size())+"条任务,其中以下任务可能存在未结算的执行人或者存在子任务,不允许删除"+StringUtils.arrayToCommaDelimitedString(noDelList.toArray())); |
|
|
|
|
|
}if(noDelList.size()>0 && allowTasks.size()==noDelList.size()) { |
|
|
tips.setFailureMsg("无法删除,所选任务都存在未结算执行人或者子任务"); |
|
|
tips.setFailureMsg("无法删除,所选任务都存在未结算执行人或者子任务"); |
|
|
}else { |
|
|
}else { |
|
|
tips.setOkMsg("成功删除"+xmTasks.size()+"条任务"); |
|
|
|
|
|
|
|
|
tips.setOkMsg("成功删除"+allowTasks.size()+"条任务"); |
|
|
} |
|
|
} |
|
|
}catch (BizException e) { |
|
|
}catch (BizException e) { |
|
|
tips=e.getTips(); |
|
|
tips=e.getTips(); |
|
|
@ -509,34 +685,125 @@ public class XmTaskController { |
|
|
}) |
|
|
}) |
|
|
@HasQx(value = "xm_core_xmTask_batchSaveBudget",name = "批量修改任务预算",categoryId = "admin-xm",categoryName = "管理端-项目管理系统") |
|
|
@HasQx(value = "xm_core_xmTask_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<XmTaskVo> xmTasks) { |
|
|
|
|
|
|
|
|
public Map<String,Object> batchSaveBudget(@RequestBody List<XmTask> xmTasks) { |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Map<String,Object> m = new HashMap<>(); |
|
|
Tips tips=new Tips("成功修改"+xmTasks.size()+"条数据"); |
|
|
Tips tips=new Tips("成功修改"+xmTasks.size()+"条数据"); |
|
|
try{ |
|
|
|
|
|
|
|
|
try{ |
|
|
|
|
|
User user=LoginUtils.getCurrentUserInfo(); |
|
|
|
|
|
|
|
|
|
|
|
if(xmTasks==null || xmTasks.size()==0){ |
|
|
|
|
|
tips.setFailureMsg("任务列表不能为空"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
XmTask xmTask=xmTasks.get(0); |
|
|
|
|
|
String projectId=xmTask.getProjectId(); |
|
|
|
|
|
String projectPhaseId=xmTask.getProjectPhaseId(); |
|
|
|
|
|
if( !StringUtils.hasText(projectId) ){ |
|
|
|
|
|
tips.setFailureMsg("项目编号不能为空"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
if( !StringUtils.hasText(projectPhaseId) ){ |
|
|
|
|
|
tips.setFailureMsg("阶段计划编号不能为空"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
List<XmProjectGroupVo> pgroups=groupService.getProjectGroupVoList(projectId); |
|
|
|
|
|
if(pgroups==null || pgroups.size()==0){ |
|
|
|
|
|
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Map<String,XmTask> allowTasksDbMap=new HashMap<>(); |
|
|
|
|
|
Map<String,XmTask> noAllowTasksDbMap=new HashMap<>(); |
|
|
|
|
|
Map<String,XmTask> xmTaskDbMap=this.xmTaskService.selectTasksMapByTasks(xmTasks); |
|
|
|
|
|
|
|
|
|
|
|
Map<String,XmTask> frontParamsTaskMap=new HashMap<>(); |
|
|
|
|
|
List<XmTask> insertTasks=new ArrayList<>(); |
|
|
|
|
|
List<XmTask> updateTasks=new ArrayList<>(); |
|
|
|
|
|
for (XmTask task : xmTasks) { |
|
|
|
|
|
if( !projectId.equals(task.getProjectId()) ){ |
|
|
|
|
|
tips.setFailureMsg("所有任务必须同属于一个项目"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
if(!projectPhaseId.equals(task.getProjectPhaseId())){ |
|
|
|
|
|
tips.setFailureMsg("只能在同一个阶段计划下批量修改任务"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
frontParamsTaskMap.put(task.getId(),task); |
|
|
|
|
|
if(xmTaskDbMap.containsKey(task.getId())){ |
|
|
|
|
|
updateTasks.add(task); |
|
|
|
|
|
}else { |
|
|
|
|
|
task.setCreateUsername(user.getUsername()); |
|
|
|
|
|
task.setCreateUserid(user.getUserid()); |
|
|
|
|
|
task.setExecutorUserid(user.getUserid()); |
|
|
|
|
|
task.setExecutorUsername(user.getUsername()); |
|
|
|
|
|
task.setCreateTime(new Date()); |
|
|
|
|
|
insertTasks.add(task); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
for (XmTask task : xmTaskDbMap.values()) { |
|
|
|
|
|
if( !projectId.equals(task.getProjectId()) ){ |
|
|
|
|
|
tips.setFailureMsg("所有任务必须同属于一个项目"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
if(!projectPhaseId.equals(task.getProjectPhaseId())){ |
|
|
|
|
|
tips.setFailureMsg("只能在同一个阶段计划下批量修改任务"); |
|
|
|
|
|
m.put("tips", tips); |
|
|
|
|
|
return m; |
|
|
|
|
|
} |
|
|
|
|
|
boolean isHead=groupService.checkUserIsHead(pgroups,task.getCreateUserid(),user.getUserid()); |
|
|
|
|
|
if(!isHead){ |
|
|
|
|
|
noAllowTasksDbMap.put(task.getId(),task); |
|
|
|
|
|
}else { |
|
|
|
|
|
allowTasksDbMap.put(task.getId(),task); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
BigDecimal taskBudgetCost=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetCost=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetInnerUserAt=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetInnerUserAt=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetOutUserAt=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetOutUserAt=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetNouserAt=BigDecimal.ZERO; |
|
|
BigDecimal taskBudgetNouserAt=BigDecimal.ZERO; |
|
|
String projectPhaseId=null; |
|
|
|
|
|
BigDecimal zero=BigDecimal.ZERO; |
|
|
BigDecimal zero=BigDecimal.ZERO; |
|
|
List<String> excludePhaseIds=new ArrayList<>(); |
|
|
|
|
|
|
|
|
List<String> excludeTaskIds=new ArrayList<>(); |
|
|
for (XmTask g : xmTasks) { |
|
|
for (XmTask g : xmTasks) { |
|
|
projectPhaseId=g.getProjectPhaseId(); |
|
|
|
|
|
|
|
|
if(noAllowTasksDbMap.containsKey(g.getId())){ |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
if("1".equals(g.getTaskOut())) { |
|
|
if("1".equals(g.getTaskOut())) { |
|
|
taskBudgetOutUserAt=taskBudgetOutUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero)); |
|
|
taskBudgetOutUserAt=taskBudgetOutUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero)); |
|
|
}else { |
|
|
}else { |
|
|
taskBudgetInnerUserAt=taskBudgetInnerUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero)); |
|
|
taskBudgetInnerUserAt=taskBudgetInnerUserAt.add(NumberUtil.getBigDecimal(g.getBudgetCost(),zero)); |
|
|
} |
|
|
} |
|
|
excludePhaseIds.add(g.getId()); |
|
|
|
|
|
|
|
|
excludeTaskIds.add(g.getId()); |
|
|
} |
|
|
} |
|
|
taskBudgetCost=taskBudgetCost.add(taskBudgetInnerUserAt).add(taskBudgetOutUserAt).add(taskBudgetNouserAt); |
|
|
taskBudgetCost=taskBudgetCost.add(taskBudgetInnerUserAt).add(taskBudgetOutUserAt).add(taskBudgetNouserAt); |
|
|
|
|
|
|
|
|
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludePhaseIds); |
|
|
|
|
|
|
|
|
Tips judgetTips=xmTaskService.judgetBudget(projectPhaseId, taskBudgetCost,taskBudgetInnerUserAt,taskBudgetOutUserAt,taskBudgetNouserAt,excludeTaskIds); |
|
|
if(judgetTips.isOk()) { |
|
|
if(judgetTips.isOk()) { |
|
|
xmTaskService.batchInsertOrUpdate(xmTasks); |
|
|
|
|
|
for (XmTask t : xmTasks) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//过滤掉我没有权限的 |
|
|
|
|
|
List<XmTask> canUpdateTasks=new ArrayList<>(); |
|
|
|
|
|
List<XmTask> canInsertTasks=new ArrayList<>(); |
|
|
|
|
|
for (XmTask task : updateTasks) { |
|
|
|
|
|
if(allowTasksDbMap.containsKey(task.getId())){ |
|
|
|
|
|
canUpdateTasks.add(task); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
xmTaskService.batchInsertOrUpdate(insertTasks,canUpdateTasks); |
|
|
|
|
|
for (XmTask t : canUpdateTasks) { |
|
|
xmRecordService.addXmTaskRecord(t.getProjectId(), t.getId(), "项目-任务-批量修改任务预算", "修改任务预算"+t.getName(),JSON.toJSONString(t),null); |
|
|
xmRecordService.addXmTaskRecord(t.getProjectId(), t.getId(), "项目-任务-批量修改任务预算", "修改任务预算"+t.getName(),JSON.toJSONString(t),null); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
for (XmTask t : canInsertTasks) { |
|
|
|
|
|
xmRecordService.addXmTaskRecord(t.getProjectId(), t.getId(), "项目-任务-批量修改任务预算", "修改任务预算"+t.getName(),JSON.toJSONString(t),null); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
}else { |
|
|
}else { |
|
|
tips=judgetTips; |
|
|
tips=judgetTips; |
|
|
|