|
@@ -463,6 +463,14 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
|
|
for (ProjectCostBudgetVO2 vo2 : list) {
|
|
for (ProjectCostBudgetVO2 vo2 : list) {
|
|
List<ProjectCostBudgetVO2> vo2ChildrenList = vo2.getChildrenList();
|
|
List<ProjectCostBudgetVO2> vo2ChildrenList = vo2.getChildrenList();
|
|
if (vo2ChildrenList != null && vo2ChildrenList.size() > 0){
|
|
if (vo2ChildrenList != null && vo2ChildrenList.size() > 0){
|
|
|
|
+// //是否跨月
|
|
|
|
+// Boolean isTwoMonth = false;
|
|
|
|
+// //总计划天数
|
|
|
|
+// BigDecimal totalDays = new BigDecimal(0);
|
|
|
|
+// //子计划开始月计划总天数
|
|
|
|
+// BigDecimal startTotalDays = new BigDecimal(0);
|
|
|
|
+// //子计划结束月计划总天数
|
|
|
|
+// BigDecimal endTotalDays = new BigDecimal(0);
|
|
for (ProjectCostBudget budget : vo2ChildrenList) {
|
|
for (ProjectCostBudget budget : vo2ChildrenList) {
|
|
//如果计划正在进行中或者已经完成,则跳过
|
|
//如果计划正在进行中或者已经完成,则跳过
|
|
if (budget.getStatus() != null && budget.getStatus() != 1){
|
|
if (budget.getStatus() != null && budget.getStatus() != 1){
|
|
@@ -481,26 +489,53 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
|
|
budget.setProjectProcess(vo2.getProjectProcess());
|
|
budget.setProjectProcess(vo2.getProjectProcess());
|
|
budget.setTaskDetail(vo2.getTaskDetail());
|
|
budget.setTaskDetail(vo2.getTaskDetail());
|
|
budget.setPostType(vo2.getPostType());
|
|
budget.setPostType(vo2.getPostType());
|
|
|
|
+ //设置主计划总天数
|
|
|
|
+// totalDays = totalDays.add(budget.getPlanDays());
|
|
//只计算固定计划的人工成本
|
|
//只计算固定计划的人工成本
|
|
if (map2.get(budget.getPlanTaskType()).get(0).getDictValue() == 1) {
|
|
if (map2.get(budget.getPlanTaskType()).get(0).getDictValue() == 1) {
|
|
//计划人工支出
|
|
//计划人工支出
|
|
budget.setPlanStaffCost(budget.getPlanDays().multiply(new BigDecimal(map.get(vo2.getPostType()).get(0).getDictValue())));
|
|
budget.setPlanStaffCost(budget.getPlanDays().multiply(new BigDecimal(map.get(vo2.getPostType()).get(0).getDictValue())));
|
|
//如果跨月
|
|
//如果跨月
|
|
if (budget.getPlanStartTime().getMonthValue() != budget.getPlanEndTime().getMonthValue()) {
|
|
if (budget.getPlanStartTime().getMonthValue() != budget.getPlanEndTime().getMonthValue()) {
|
|
|
|
+ //跨月则改变状态
|
|
|
|
+// isTwoMonth = true;
|
|
budget.setPlanIsTwoMonth(1);
|
|
budget.setPlanIsTwoMonth(1);
|
|
//计算开始到月底多少个工作日
|
|
//计算开始到月底多少个工作日
|
|
int days = CommonUtil.getWorkDays(budget.getPlanStartTime(), LocalDate.of(vo2.getPlanStartTime().getYear(), budget.getPlanStartTime().getMonthValue(), budget.getPlanStartTime().getMonth().maxLength()));
|
|
int days = CommonUtil.getWorkDays(budget.getPlanStartTime(), LocalDate.of(vo2.getPlanStartTime().getYear(), budget.getPlanStartTime().getMonthValue(), budget.getPlanStartTime().getMonth().maxLength()));
|
|
if (days > budget.getPlanDays().intValue()){
|
|
if (days > budget.getPlanDays().intValue()){
|
|
|
|
+ //如果这个月工作天数大于总天数,那么所有值都设置到本月
|
|
|
|
+// startTotalDays = startTotalDays.add(budget.getPlanDays());
|
|
|
|
+ budget.setPlanStartMonthDays(budget.getPlanDays());
|
|
|
|
+ budget.setPlanEndMonthDays(new BigDecimal(0));
|
|
budget.setPlanStartMoney(budget.getPlanStaffCost());
|
|
budget.setPlanStartMoney(budget.getPlanStaffCost());
|
|
budget.setPlanEndMoney(new BigDecimal(0));
|
|
budget.setPlanEndMoney(new BigDecimal(0));
|
|
}else {
|
|
}else {
|
|
|
|
+ //如果这个月工作天数小于总计划,则总计划相减
|
|
|
|
+// startTotalDays = startTotalDays.add(new BigDecimal(days));
|
|
|
|
+// endTotalDays = endTotalDays.add(budget.getPlanDays().subtract(new BigDecimal(days)));
|
|
|
|
+ budget.setPlanStartMonthDays(new BigDecimal(days));
|
|
|
|
+ budget.setPlanEndMonthDays(budget.getPlanDays().subtract(new BigDecimal(days)));
|
|
budget.setPlanStartMoney(new BigDecimal(days).multiply(new BigDecimal(map.get(budget.getPostType()).get(0).getDictValue())));
|
|
budget.setPlanStartMoney(new BigDecimal(days).multiply(new BigDecimal(map.get(budget.getPostType()).get(0).getDictValue())));
|
|
budget.setPlanEndMoney(budget.getPlanStaffCost().subtract(budget.getPlanStartMoney()));
|
|
budget.setPlanEndMoney(budget.getPlanStaffCost().subtract(budget.getPlanStartMoney()));
|
|
}
|
|
}
|
|
|
|
+ }else {
|
|
|
|
+// startTotalDays = startTotalDays.add(budget.getPlanDays());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
childrenList.addAll(vo2ChildrenList);
|
|
childrenList.addAll(vo2ChildrenList);
|
|
|
|
+// //有子计划也要为父计划设置是否跨月,并且跨月多少天,预算多少钱
|
|
|
|
+// ProjectCostBudget costBudget = new ProjectCostBudget();
|
|
|
|
+// costBudget.setId(vo2.getId());
|
|
|
|
+// if (isTwoMonth){
|
|
|
|
+// costBudget.setPlanIsTwoMonth(1);
|
|
|
|
+// costBudget.setPlanStartMonthDays(startTotalDays);
|
|
|
|
+// costBudget.setPlanEndMonthDays(endTotalDays);
|
|
|
|
+// }else {
|
|
|
|
+// costBudget.setPlanIsTwoMonth(0);
|
|
|
|
+// }
|
|
|
|
+// costBudget.setPlanDays(totalDays);
|
|
|
|
+// parentList.add(costBudget);
|
|
}else {
|
|
}else {
|
|
//无子计划
|
|
//无子计划
|
|
ProjectCostBudget budget = new ProjectCostBudget();
|
|
ProjectCostBudget budget = new ProjectCostBudget();
|
|
@@ -521,9 +556,15 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
|
|
//计算开始到月底多少个工作日
|
|
//计算开始到月底多少个工作日
|
|
int days = CommonUtil.getWorkDays(budget.getPlanStartTime(), LocalDate.of(budget.getPlanStartTime().getYear(), budget.getPlanStartTime().getMonthValue(), budget.getPlanStartTime().getMonth().maxLength()));
|
|
int days = CommonUtil.getWorkDays(budget.getPlanStartTime(), LocalDate.of(budget.getPlanStartTime().getYear(), budget.getPlanStartTime().getMonthValue(), budget.getPlanStartTime().getMonth().maxLength()));
|
|
if (days > budget.getPlanDays().intValue()){
|
|
if (days > budget.getPlanDays().intValue()){
|
|
|
|
+ //如果这个月工作天数大于总天数,那么所有值都设置到本月
|
|
|
|
+ budget.setPlanStartMonthDays(budget.getPlanDays());
|
|
|
|
+ budget.setPlanEndMonthDays(new BigDecimal(0));
|
|
budget.setPlanStartMoney(budget.getPlanStaffCost());
|
|
budget.setPlanStartMoney(budget.getPlanStaffCost());
|
|
budget.setPlanEndMoney(new BigDecimal(0));
|
|
budget.setPlanEndMoney(new BigDecimal(0));
|
|
}else {
|
|
}else {
|
|
|
|
+ //如果这个月工作天数小于总计划,则总计划相减
|
|
|
|
+ budget.setPlanStartMonthDays(new BigDecimal(days));
|
|
|
|
+ budget.setPlanEndMonthDays(budget.getPlanDays().subtract(new BigDecimal(days)));
|
|
budget.setPlanStartMoney(new BigDecimal(days).multiply(new BigDecimal(map.get(budget.getPostType()).get(0).getDictValue())));
|
|
budget.setPlanStartMoney(new BigDecimal(days).multiply(new BigDecimal(map.get(budget.getPostType()).get(0).getDictValue())));
|
|
budget.setPlanEndMoney(budget.getPlanStaffCost().subtract(budget.getPlanStartMoney()));
|
|
budget.setPlanEndMoney(budget.getPlanStaffCost().subtract(budget.getPlanStartMoney()));
|
|
}
|
|
}
|