Browse Source

添加节点类型、标签等

master
陈裕财 4 years ago
parent
commit
db0cad9183
  1. 40
      xm-core/src/main/java/com/xm/core/ctrl/XmProjectPhaseController.java
  2. 27
      xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java
  3. 1
      xm-core/src/main/java/com/xm/core/service/XmTaskService.java

40
xm-core/src/main/java/com/xm/core/ctrl/XmProjectPhaseController.java

@ -662,18 +662,31 @@ public class XmProjectPhaseController {
} }
xmProjectPhaseService.parentIdPathsCalcBeforeSave(xmProjectPhases); xmProjectPhaseService.parentIdPathsCalcBeforeSave(xmProjectPhases);
List<XmProjectPhase> l1Phases=xmProjectPhases.stream().filter(i->1==i.getLvl()).collect(Collectors.toList()); List<XmProjectPhase> 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 phaseTotalBudgetAt=BigDecimal.ZERO;
for (XmProjectPhase l1Phase : l1Phases) {
phaseTotalBudgetWorkload=phaseTotalBudgetWorkload.add(l1Phase.getPhaseBudgetWorkload());
phaseTotalBudgetAt=phaseTotalBudgetAt.add(l1Phase.getPhaseBudgetAt());
}
if("1".equals(xmProject.getBudgetCtrl())){
tips=xmProjectPhaseService.judgetProjectBudget(projectId,phaseTotalBudgetAt,null,null,null,l1Phases.stream().map(i->i.getId()).collect(Collectors.toList()));
if(!tips.isOk()){
return ResponseHelper.failed(tips);
}
}
}
//找到导入的树中最上面的节点 //找到导入的树中最上面的节点
List<XmProjectPhase> noExists=xmProjectPhases.stream().filter(i->!xmProjectPhases.stream().filter(k->k.getId().equals(i.getParentPhaseId())).findAny().isPresent()).collect(Collectors.toList());
List<XmProjectPhase> parentNoNulls= xmProjectPhases.stream().filter(i->StringUtils.hasText(i.getParentPhaseId())&&!"0".equals(i.getParentPhaseId())).collect(Collectors.toList());
//根据同一个父亲归类 //根据同一个父亲归类
Map<String,List<XmProjectPhase>> map=new HashMap<>(); Map<String,List<XmProjectPhase>> map=new HashMap<>();
for (XmProjectPhase noExist : noExists) {
List<XmProjectPhase> phases=map.get(noExist.getParentPhaseId());
for (XmProjectPhase phase : parentNoNulls) {
List<XmProjectPhase> phases=map.get(phase.getParentPhaseId());
if(phases==null){ if(phases==null){
phases=new ArrayList<>(); phases=new ArrayList<>();
map.put(noExist.getParentPhaseId(),phases);
map.put(phase.getParentPhaseId(),phases);
} }
phases.add(noExist);
phases.add(phase);
} }
for (Map.Entry<String, List<XmProjectPhase>> kv : map.entrySet()) { for (Map.Entry<String, List<XmProjectPhase>> kv : map.entrySet()) {
String parentId=kv.getKey(); String parentId=kv.getKey();
@ -691,20 +704,7 @@ public class XmProjectPhaseController {
} }
} }
} }
}else{//直接导入到项目之下需要判断当前一级预算是否超出项目总预算
BigDecimal phaseTotalBudgetWorkload=BigDecimal.ZERO;
BigDecimal phaseTotalBudgetAt=BigDecimal.ZERO;
for (XmProjectPhase l1Phase : l1Phases) {
phaseTotalBudgetWorkload=phaseTotalBudgetWorkload.add(l1Phase.getPhaseBudgetWorkload());
phaseTotalBudgetAt=phaseTotalBudgetAt.add(l1Phase.getPhaseBudgetAt());
}
if("1".equals(xmProject.getBudgetCtrl())){
tips=xmProjectPhaseService.judgetProjectBudget(projectId,phaseTotalBudgetAt,null,null,null,l1Phases.stream().map(i->i.getId()).collect(Collectors.toList()));
if(!tips.isOk()){
return ResponseHelper.failed(tips);
}
}
}
for (XmProjectPhase projectPhase : xmProjectPhases) { for (XmProjectPhase 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()+"");

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

@ -1179,26 +1179,33 @@ public class XmTaskController {
return ResponseHelper.failed(tips); return ResponseHelper.failed(tips);
} }
} }
}else{
List<XmTask> tasks=canOpTasks.stream().filter(i->!canOpTasks.stream().filter(k->k.getId().equals(i.getParentTaskid())).findAny().isPresent()).collect(Collectors.toList());
tasks=tasks.stream().filter(i->StringUtils.hasText(i.getParentTaskid())).collect(Collectors.toList());
if(tasks.size()>0){
Set<String> parentTaskIdSet=tasks.stream().map(i->i.getParentTaskid()).collect(Collectors.toSet());
for (String pid : parentTaskIdSet) {
}
Map<String,List<XmTask>> map=new HashMap<>();
for (XmTask canOpTask : canOpTasks) {
if(!StringUtils.hasText(canOpTask.getParentTaskid())||canOpTask.getParentTaskid().equals("0")){
continue;
}
List<XmTask> childs=map.get(canOpTask.getParentTaskid());
if(childs==null){
childs=new ArrayList<>();
}
childs.add(canOpTask);
map.put(canOpTask.getParentTaskid(),childs);
}
for (Map.Entry<String, List<XmTask>> kv : map.entrySet()) {
BigDecimal childBudgetCost = BigDecimal.ZERO; BigDecimal childBudgetCost = BigDecimal.ZERO;
List<XmTask> childs=canOpTasks.stream().filter(i->pid.equals(i.getParentTaskid())).collect(Collectors.toList());
List<XmTask> childs = kv.getValue();
for (XmTask child : childs) { for (XmTask child : childs) {
childBudgetCost = childBudgetCost.add(child.getBudgetCost()); childBudgetCost = childBudgetCost.add(child.getBudgetCost());
} }
if (childBudgetCost.compareTo(BigDecimal.ZERO) > 0) { if (childBudgetCost.compareTo(BigDecimal.ZERO) > 0) {
tips= xmTaskService.judgetTaskBudget(pid,childBudgetCost,null,null,null,childs.stream().map(i->i.getId()).collect(Collectors.toList()));
tips = xmTaskService.judgetTaskBudget(kv.getKey(), childBudgetCost, null, null, null, childs.stream().map(i -> i.getId()).collect(Collectors.toList()));
if (!tips.isOk()) { if (!tips.isOk()) {
return ResponseHelper.failed("budget-not-enought", tips.getMsg() + " 相关任务【" + childs.stream().map(i -> i.getName()).collect(Collectors.joining(",")) + "】"); return ResponseHelper.failed("budget-not-enought", tips.getMsg() + " 相关任务【" + childs.stream().map(i -> i.getName()).collect(Collectors.joining(",")) + "】");
} }
} }
} }
}
}
//过滤掉我没有权限的 //过滤掉我没有权限的
List<XmTask> canUpdateTasks=canOpTasks.stream().filter(i->xmTaskDbMap.containsKey(i.getId())).collect(Collectors.toList()); List<XmTask> canUpdateTasks=canOpTasks.stream().filter(i->xmTaskDbMap.containsKey(i.getId())).collect(Collectors.toList());

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

@ -149,6 +149,7 @@ public class XmTaskService extends BaseService {
BigDecimal budgetCost=NumberUtil.getBigDecimal(g.get("budgetCost"),BigDecimal.ZERO); BigDecimal budgetCost=NumberUtil.getBigDecimal(g.get("budgetCost"),BigDecimal.ZERO);
BigDecimal childBudgetCost=NumberUtil.getBigDecimal(g.get("childBudgetCost"),BigDecimal.ZERO); BigDecimal childBudgetCost=NumberUtil.getBigDecimal(g.get("childBudgetCost"),BigDecimal.ZERO);
childBudgetCost=childBudgetCost.add(addTaskBudgetCost);
if(budgetCost.compareTo(childBudgetCost)<0) { if(budgetCost.compareTo(childBudgetCost)<0) {
tips.setFailureMsg("任务合计总预算超出上级总预算"+childBudgetCost.subtract(budgetCost)+"元"); tips.setFailureMsg("任务合计总预算超出上级总预算"+childBudgetCost.subtract(budgetCost)+"元");
return tips; return tips;

Loading…
Cancel
Save