|
|
|
@ -662,18 +662,31 @@ 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){//如果是导入到某个计划之下, |
|
|
|
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<>(); |
|
|
|
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){ |
|
|
|
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()) { |
|
|
|
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) { |
|
|
|
int childrenCnt=Integer.valueOf(xmProjectPhases.stream().filter(i->projectPhase.getId().equals(i.getParentPhaseId())).count()+""); |
|
|
|
|