Browse Source

添加节点类型、标签等

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

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

@ -662,36 +662,7 @@ public class XmProjectPhaseController {
}
xmProjectPhaseService.parentIdPathsCalcBeforeSave(xmProjectPhases);
List<XmProjectPhase> l1Phases=xmProjectPhases.stream().filter(i->1==i.getLvl()).collect(Collectors.toList());
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());
//根据同一个父亲归类
Map<String,List<XmProjectPhase>> map=new HashMap<>();
for (XmProjectPhase noExist : noExists) {
List<XmProjectPhase> phases=map.get(noExist.getParentPhaseId());
if(phases==null){
phases=new ArrayList<>();
map.put(noExist.getParentPhaseId(),phases);
}
phases.add(noExist);
}
for (Map.Entry<String, List<XmProjectPhase>> kv : map.entrySet()) {
String parentId=kv.getKey();
List<XmProjectPhase> children=kv.getValue();
BigDecimal phaseTotalBudgetAt=BigDecimal.ZERO;
List<String> excludeIds=children.stream().map(i->i.getId()).collect(Collectors.toList());
for (XmProjectPhase child : children) {
phaseTotalBudgetAt=phaseTotalBudgetAt.add(child.getPhaseBudgetAt());
}
if("1".equals(xmProject.getPhaseBudgetCtrl())) {
Tips tips2 = xmProjectPhaseService.judgetPhaseBudget(parentId, phaseTotalBudgetAt, null, null, null, excludeIds);
if (!tips2.isOk()) {
tips2.setFailureMsg(tips2.getMsg() + " 相关计划为【" + children.stream().map(i -> i.getPhaseName()).collect(Collectors.joining(",")) + "】");
return ResponseHelper.failed(tips2);
}
}
}
}else{//直接导入到项目之下需要判断当前一级预算是否超出项目总预算
if(l1Phases==null ||l1Phases.size()==0){//如果是导入到某个计划之下{//直接导入到项目之下需要判断当前一级预算是否超出项目总预算
BigDecimal phaseTotalBudgetWorkload=BigDecimal.ZERO;
BigDecimal phaseTotalBudgetAt=BigDecimal.ZERO;
for (XmProjectPhase l1Phase : l1Phases) {
@ -705,6 +676,35 @@ public class XmProjectPhaseController {
}
}
}
//找到导入的树中最上面的节点
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<>();
for (XmProjectPhase phase : parentNoNulls) {
List<XmProjectPhase> phases=map.get(phase.getParentPhaseId());
if(phases==null){
phases=new ArrayList<>();
map.put(phase.getParentPhaseId(),phases);
}
phases.add(phase);
}
for (Map.Entry<String, List<XmProjectPhase>> kv : map.entrySet()) {
String parentId=kv.getKey();
List<XmProjectPhase> children=kv.getValue();
BigDecimal phaseTotalBudgetAt=BigDecimal.ZERO;
List<String> excludeIds=children.stream().map(i->i.getId()).collect(Collectors.toList());
for (XmProjectPhase child : children) {
phaseTotalBudgetAt=phaseTotalBudgetAt.add(child.getPhaseBudgetAt());
}
if("1".equals(xmProject.getPhaseBudgetCtrl())) {
Tips tips2 = xmProjectPhaseService.judgetPhaseBudget(parentId, phaseTotalBudgetAt, null, null, null, excludeIds);
if (!tips2.isOk()) {
tips2.setFailureMsg(tips2.getMsg() + " 相关计划为【" + children.stream().map(i -> i.getPhaseName()).collect(Collectors.joining(",")) + "】");
return ResponseHelper.failed(tips2);
}
}
}
for (XmProjectPhase projectPhase : xmProjectPhases) {
int childrenCnt=Integer.valueOf(xmProjectPhases.stream().filter(i->projectPhase.getId().equals(i.getParentPhaseId())).count()+"");

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

@ -1179,27 +1179,34 @@ public class XmTaskController {
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) {
BigDecimal childBudgetCost=BigDecimal.ZERO;
List<XmTask> childs=canOpTasks.stream().filter(i->pid.equals(i.getParentTaskid())).collect(Collectors.toList());
for (XmTask child : childs) {
childBudgetCost=childBudgetCost.add(child.getBudgetCost());
}
if(childBudgetCost.compareTo(BigDecimal.ZERO)>0){
tips= xmTaskService.judgetTaskBudget(pid,childBudgetCost,null,null,null,childs.stream().map(i->i.getId()).collect(Collectors.toList()));
if(!tips.isOk()){
return ResponseHelper.failed("budget-not-enought",tips.getMsg()+" 相关任务【"+childs.stream().map(i->i.getName()).collect(Collectors.joining(","))+"】");
}
}
}
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;
List<XmTask> childs = kv.getValue();
for (XmTask child : childs) {
childBudgetCost = childBudgetCost.add(child.getBudgetCost());
}
if (childBudgetCost.compareTo(BigDecimal.ZERO) > 0) {
tips = xmTaskService.judgetTaskBudget(kv.getKey(), childBudgetCost, null, null, null, childs.stream().map(i -> i.getId()).collect(Collectors.toList()));
if (!tips.isOk()) {
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> canInsertTasks=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 childBudgetCost=NumberUtil.getBigDecimal(g.get("childBudgetCost"),BigDecimal.ZERO);
childBudgetCost=childBudgetCost.add(addTaskBudgetCost);
if(budgetCost.compareTo(childBudgetCost)<0) {
tips.setFailureMsg("任务合计总预算超出上级总预算"+childBudgetCost.subtract(budgetCost)+"元");
return tips;

Loading…
Cancel
Save