Browse Source

添加节点类型、标签等

master
陈裕财 4 years ago
parent
commit
9a237fa852
  1. 52
      xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java
  2. 25
      xm-core/src/main/java/com/xm/core/service/XmTaskService.java
  3. 10
      xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml

52
xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java

@ -130,7 +130,6 @@ public class XmTaskController {
String taskOut= (String) xmTask.get("taskOut");
if(!"1".equals(taskOut)){
String projectId= (String) xmTask.get("projectId");
String projectPhaseId= (String) xmTask.get("projectPhaseId");
String myExecuserStatus= (String) xmTask.get("myExecuserStatus");
String isMy= (String) xmTask.get("isMy");
String myFocus= (String) xmTask.get("myFocus");
@ -141,7 +140,7 @@ public class XmTaskController {
String iterationId= (String) xmTask.get("iterationId");
User user = LoginUtils.getCurrentUserInfo();
xmTask.put("userid",user.getUserid());
if( !(StringUtils.hasText(projectId) || StringUtils.hasText(projectPhaseId)
if( !(StringUtils.hasText(projectId)
|| StringUtils.hasText(myExecuserStatus)|| StringUtils.hasText(isMy)|| StringUtils.hasText(myFocus)|| StringUtils.hasText(createUserid)
|| StringUtils.hasText(executorUserid) || StringUtils.hasText(menuId) || StringUtils.hasText(productId)|| StringUtils.hasText(iterationId)) ){
@ -329,10 +328,11 @@ public class XmTaskController {
if(!StringUtils.hasText(xmTaskVo.getProjectId())){
return ResponseHelper.failed("projectId-0","项目编号不能为空");
}
/**
if(!StringUtils.hasText(xmTaskVo.getProjectPhaseId())){
return ResponseHelper.failed("ProjectPhaseId-0","项目计划编号不能为空");
}
**/
User user=LoginUtils.getCurrentUserInfo();
xmTaskVo.setCreateUserid(user.getUserid());
xmTaskVo.setCreateUsername(user.getUsername());
@ -353,15 +353,14 @@ public class XmTaskController {
if( !StringUtils.hasText(xmTaskVo.getMilestone()) ){
xmTaskVo.setMilestone("0");
}
String projectPhaseId=xmTaskVo.getProjectPhaseId();
if(xmTaskVo.getBudgetCost()==null){
xmTaskVo.setBudgetCost(BigDecimal.ZERO);
}
this.xmTaskService.parentIdPathsCalcBeforeSave(xmTaskVo);
if(xmTaskVo.getBudgetCost()!=null && xmTaskVo.getBudgetCost().compareTo(BigDecimal.ZERO)>0){
if(xmTaskVo.getLvl()<=1){
tips=xmTaskService.judgetPhaseBudget(projectPhaseId, xmTaskVo.getBudgetCost(),null,null,null,null);
}else{
xmTaskService.judgetProjectBudget(xmTaskVo.getProjectId(),xmTaskVo.getBudgetCost(),null);
}else{
tips=xmTaskService.judgetTaskBudget(xmTaskVo.getParentTaskid(), xmTaskVo.getBudgetCost(),null,null,null,null);
}
}
@ -434,9 +433,8 @@ public class XmTaskController {
String taskOut= (String) xmTask.get("taskOut");
if(!"1".equals(taskOut)){
String projectId= (String) xmTask.get("projectId");
String projectPhaseId= (String) xmTask.get("projectPhaseId");
String userid= (String) xmTask.get("userid");
if( !(StringUtils.hasText(projectId) || StringUtils.hasText(projectPhaseId)|| StringUtils.hasText(userid) ) ){
if( !(StringUtils.hasText(projectId) || StringUtils.hasText(userid) ) ){
User user = LoginUtils.getCurrentUserInfo();
xmTask.put("cbranchId",user.getBranchId());
}
@ -623,7 +621,6 @@ public class XmTaskController {
}
}
String projectPhaseId=xmTaskDb.getProjectPhaseId();
this.xmTaskService.parentIdPathsCalcBeforeSave(xmTaskVo);
if(xmTaskVo.getBudgetCost()==null)xmTaskVo.setBudgetCost(BigDecimal.ZERO);
if(xmTaskDb.getBudgetCost()==null)xmTaskDb.setBudgetCost(BigDecimal.ZERO);
@ -631,7 +628,7 @@ public class XmTaskController {
excludeIds.add(xmTaskDb.getId());
if( xmTaskDb.getBudgetCost().compareTo(xmTaskVo.getBudgetCost())!=0){
if(xmTaskVo.getLvl()<=1){
tips=xmTaskService.judgetPhaseBudget(projectPhaseId, xmTaskVo.getBudgetCost(),null,null,null,excludeIds);
tips=xmTaskService.judgetProjectBudget(xmTaskDb.getProjectId(), xmTaskVo.getBudgetCost(),excludeIds);
}else{
tips=xmTaskService.judgetTaskBudget(xmTaskDb.getParentTaskid(), xmTaskVo.getBudgetCost(),null,null,null,excludeIds);
}
@ -787,18 +784,12 @@ public class XmTaskController {
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<XmGroupVo> pgroups=groupService.getProjectGroupVoList(projectId);
if(pgroups==null || pgroups.size()==0){
@ -813,11 +804,6 @@ public class XmTaskController {
return m;
}
for (XmTask g : xmTasks) {
if(!projectPhaseId.equals(g.getProjectPhaseId())){
tips.setFailureMsg("只能在同一个计划下批量导入任务");
m.put("tips", tips);
return m;
}
if(!projectId.equals(g.getProjectId())){
tips.setFailureMsg("只能在同一个项目下批量导入任务");
m.put("tips", tips);
@ -841,7 +827,7 @@ public class XmTaskController {
totalTaskBudgetCost=totalTaskBudgetCost.add(task.getBudgetCost());
}
if(totalTaskBudgetCost.compareTo(BigDecimal.ZERO)>0){
tips=xmTaskService.judgetPhaseBudget(projectPhaseId,totalTaskBudgetCost,null,null,null,tasksLvl1.stream().map(i->i.getId()).collect(Collectors.toList()));
tips=xmTaskService.judgetProjectBudget(projectId,totalTaskBudgetCost,tasksLvl1.stream().map(i->i.getId()).collect(Collectors.toList()));
if(!tips.isOk()){
tips.setFailureMsg(tips.getMsg()+"相关任务【"+tasksLvl1.stream().map(i->i.getName()).collect(Collectors.joining(","))+"】");
return ResponseHelper.failed(tips);
@ -890,7 +876,8 @@ public class XmTaskController {
return m;
}
/**
*
@ApiOperation( value = "批量将任务与一个项目计划关联",notes="")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
@ -989,6 +976,7 @@ public class XmTaskController {
m.put("tips", tips);
return m;
}
**/
@ApiOperation( value = "批量将多个任务与一个用户需求关联",notes="")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
@ -1250,17 +1238,11 @@ public class XmTaskController {
}
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<XmGroupVo> pgroups=groupService.getProjectGroupVoList(projectId);
if(pgroups==null || pgroups.size()==0){
tips.setFailureMsg("该项目还未建立项目团队,请先进行团队成员维护");
@ -1281,11 +1263,6 @@ public class XmTaskController {
m.put("tips", tips);
return m;
}
if(!projectPhaseId.equals(task.getProjectPhaseId())){
tips.setFailureMsg("只能在同一个计划下批量修改任务");
m.put("tips", tips);
return m;
}
if(task.getBudgetCost()==null){
task.setBudgetCost(BigDecimal.ZERO);
}
@ -1309,11 +1286,6 @@ public class XmTaskController {
tips.setFailureMsg("所有任务必须同属于一个项目");
m.put("tips", tips);
return m;
}
if(!projectPhaseId.equals(task.getProjectPhaseId())){
tips.setFailureMsg("只能在同一个计划下批量修改任务");
m.put("tips", tips);
return m;
}
boolean isHead=groupService.checkUserIsOtherUserTeamHeadOrAss(pgroups,task.getCreateUserid(),user.getUserid());
if(!isHead){
@ -1333,7 +1305,7 @@ public class XmTaskController {
totalTaskBudgetCost=totalTaskBudgetCost.add(task.getBudgetCost());
}
if(totalTaskBudgetCost.compareTo(BigDecimal.ZERO)>0){
tips=xmTaskService.judgetPhaseBudget(projectPhaseId,totalTaskBudgetCost,null,null,null,tasksLvl1.stream().map(i->i.getId()).collect(Collectors.toList()));
tips=xmTaskService.judgetProjectBudget(projectId,totalTaskBudgetCost,tasksLvl1.stream().map(i->i.getId()).collect(Collectors.toList()));
if(!tips.isOk()){
tips.setFailureMsg(tips.getMsg()+"相关任务【"+tasksLvl1.stream().map(i->i.getName()).collect(Collectors.joining(","))+"】");
return ResponseHelper.failed(tips);

25
xm-core/src/main/java/com/xm/core/service/XmTaskService.java

@ -671,5 +671,30 @@ public class XmTaskService extends BaseService {
public void batchRelTasksWithPhase(BatchRelTasksWithPhase tasksPhase) {
super.update("batchRelTasksWithPhase",tasksPhase);
}
public Map<String,Object> calcProjectAndTaskBudget(String projectId,List<String> excludeTaskIds){
Map<String,Object> map=new HashMap<>();
if(excludeTaskIds!=null){
map.put("excludeTaskIds",excludeTaskIds);
}
map.put("projectId",projectId);
return super.selectOne("calcProjectAndTaskBudget",map);
}
public Tips judgetProjectBudget(String projectId, BigDecimal addBudgetCost, List<String> excludeTaskIds) {
Tips tips=new Tips("成功");
Map<String,Object> data=this.calcProjectAndTaskBudget(projectId,excludeTaskIds);
if(data==null || data.isEmpty()){
tips.setFailureMsg("项目不存在");
return tips;
}
BigDecimal planTotalCost=NumberUtil.getBigDecimal(map().get("planTotalCost"),BigDecimal.ZERO);
BigDecimal taskBudgetCost=NumberUtil.getBigDecimal(map().get("budgetCost"),BigDecimal.ZERO);
BigDecimal chaochu=taskBudgetCost.add(addBudgetCost).subtract(planTotalCost);
if(chaochu.compareTo(BigDecimal.ZERO)>0){
tips.setFailureMsg("超出项目总预算"+chaochu+"元");
return tips;
}
return tips;
}
}

10
xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml

@ -302,6 +302,16 @@
and res.ntype='1'
</foreach>
</update>
<select id="calcProjectAndTaskBudget" resultType="HashMap" parameterType="HashMap">
select p.id,p.name,p.plan_total_cost,sum(budget_cost) as budget_cost from xm_project p left join xm_task t on t.project_id=p.id
where p.id=#{projectId} and task.lvl=1 and t.id not in
<foreach collection="excludeTaskIds" item="item" index="index" open="(" separator="," close=")" >
#{item}
</foreach>
group by p.id
</select>
<!--结束 自定义sql函数区域-->

Loading…
Cancel
Save