Эх сурвалжийг харах

Merge remote-tracking branch 'origin/master' into master

yangyj 2 жил өмнө
parent
commit
1fae952080

+ 3 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/ControlProjectInfo.java

@@ -54,6 +54,9 @@ public class ControlProjectInfo extends BaseEntity {
     @ApiModelProperty(value = "项目类型")
     private Integer projectType;
 
+    @ApiModelProperty(value = "项目类别")
+    private Integer projectClass;
+
     @ApiModelProperty(value = "项目服务类型")
     private Integer projectServerType;
 

+ 6 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/ProjectCostBudget.java

@@ -159,4 +159,10 @@ public class ProjectCostBudget extends BaseEntity {
     @ApiModelProperty(value = "计划结束月工资")
     private BigDecimal planEndMoney;
 
+    @ApiModelProperty(value = "计划开始月工作天数")
+    private BigDecimal planStartMonthDays;
+
+    @ApiModelProperty(value = "计划结束月工作天数")
+    private BigDecimal planEndMonthDays;
+
 }

+ 3 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectInfoMapper.xml

@@ -16,6 +16,9 @@
         <if test="dto.projectType != null and dto.projectType != ''">
             and pi.project_type = #{dto.projectType}
         </if>
+        <if test="dto.projectClass != null and dto.projectClass != ''">
+            and pi.project_class = #{dto.projectClass}
+        </if>
         <if test="dto.projectServerType != null and dto.projectServerType != ''">
             and pi.project_server_type = #{dto.projectServerType}
         </if>

+ 2 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/AnnualBudgetServiceImpl.java

@@ -1141,6 +1141,8 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
             //如果不为空,根据costType分组
             allPlanMap = allPlan.parallelStream()
                     .collect(Collectors.groupingBy(ProjectCostBudget::getCostType));
+            //分解出父计划和子计划,需要用父计划其他预算支出
+
         }else {
             isBudget = false;
         }

+ 41 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectCostBudgetServiceImpl.java

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