Forráskód Böngészése

预算与实际统计,除部门以外其他接口

qianxb 2 éve
szülő
commit
55fd9d9ac9

+ 4 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/EmployeeTaskInfoMapper.java

@@ -34,5 +34,9 @@ public interface EmployeeTaskInfoMapper extends BaseMapper<EmployeeTaskInfo> {
 
     List<EmployeeTaskInfo> getAllEmployeeSalaryByProject(@Param("projectId") Long projectId);
 
+    //根据项目获取所有预算工作日
     List<EmployeeTaskInfo> getAllBudgetSalaryByProject(@Param("projectId") Long projectId);
+
+    //根据年获取所有预算工作日
+    List<EmployeeTaskInfo> getAllBudgetSalaryByYear(@Param("year") int y);
 }

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

@@ -33,4 +33,7 @@
     <select id="getAllBudgetSalaryByProject" resultType="org.springblade.control.entity.EmployeeTaskInfo">
         select * from c_employee_task_info WHERE work_type = 0 and project_id = #{projectId}
     </select>
+    <select id="getAllBudgetSalaryByYear" resultType="org.springblade.control.entity.EmployeeTaskInfo">
+        select * from c_employee_task_info WHERE work_type = 0 and DATE_FORMAT(one_day, '%Y') = #{year}
+    </select>
 </mapper>

+ 7 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IEmployeeTaskInfoService.java

@@ -12,6 +12,7 @@ import org.springblade.core.mp.support.Query;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
+import java.time.Year;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -48,10 +49,16 @@ public interface IEmployeeTaskInfoService extends BaseService<EmployeeTaskInfo>
     //获取项目的所有支出,按环节分组,如果该环节没有支出,将不会插入
     Map<Long,BigDecimal> getAllEmployeeSalaryByProject(Long projectId);
 
+    //根据年查询所有人工支出,按月分组,当月没有支出将不会插入
+    Map<Integer, BigDecimal> getAllEmployeeSalaryByYear4(int y);
+
 
     /**
      *  预算支出相关接口
      */
     //根据项目id,获取项目所有的预算支出,按照环节分组,如果该环节没有支出,将不会插入
     Map<Long,BigDecimal> getAllBudgetSalaryByProject(Long projectId);
+
+    //根据年查询所有预算支出,按月分组,当月没有支出将不会插入
+    Map<Integer, BigDecimal> getAllBudgetSalaryByYear(int y);
 }

+ 16 - 7
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/AnnualBudgetServiceImpl.java

@@ -1002,7 +1002,8 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
         //获取所有项目当年每月的实际回款
         List<BigDecimal> returned2 = returnedInfoService.getAllMonthReturnedByYear(y,2);
         //获取每月实际的人工支出
-        List<BigDecimal> staffCost = budgetService.getAllMonthStaffCostByYear(y);
+//        List<BigDecimal> staffCost = budgetService.getAllMonthStaffCostByYear(y);
+        Map<Integer, BigDecimal> costMap = employeeTaskInfoService.getAllEmployeeSalaryByYear4(y);
         //获取每月实际的维护支出
         List<BigDecimal> maintainCost = budgetService.getAllMonthMaintainCostByYear(y);
         //获取每月实际的报销支出
@@ -1048,8 +1049,12 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
             vo1.setIncome3(returned2.get(i-1));
             c5 = c5.add(returned2.get(i-1));
             //实际每月支出
-            vo1.setDisburse3(staffCost.get(i-1).add(maintainCost.get(i-1).add(reimburse.get(i-1))));
-            c6 = c6.add(staffCost.get(i-1).add(maintainCost.get(i-1).add(reimburse.get(i-1))));
+            BigDecimal big = new BigDecimal(0);
+            if (costMap != null && costMap.get(i) != null){
+                big = costMap.get(i);
+            }
+            vo1.setDisburse3(big.add(maintainCost.get(i-1).add(reimburse.get(i-1))));
+            c6 = c6.add(big.add(maintainCost.get(i-1).add(reimburse.get(i-1))));
 
         list.add(vo1);
         }
@@ -1872,7 +1877,7 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
         vo.setPracticalInput(yearReturned);
         //获取当年所有实际支出: 人工支出+维护支出+报销支出
         //人工支出
-        BigDecimal disburse = budgetService.getYearStaffDisburse(y);
+        BigDecimal disburse = employeeTaskInfoService.getAllEmployeeSalaryByYear(y);
         //维护支出
         BigDecimal maintainCost = budgetService.getAllMaintainCost(y);
         //报销支出
@@ -1901,7 +1906,7 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
         }
         List<BigDecimal> costList = disburseService.budgetCostByYear(annualId);
         //一年的实际人工支出,按月返回指定年的
-        List<BigDecimal> staffCostList = budgetService.getAllMonthStaffCostByYear2(y);
+        Map<Integer, BigDecimal> costMap = employeeTaskInfoService.getAllBudgetSalaryByYear(y);
         //管理成本预算支出  = 年度经营的非人工成本,按月返回指定年的
         List<BigDecimal> notCostList = disburseService.budgetNotCostByYear(annualId);
         //管理成本实际支出 = 指定年的每个月报销,按月返回
@@ -1918,8 +1923,12 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
             vo.setDisburse1(costList.get(i));
             b1 = b1.add(costList.get(i));
             //设置人工成本实际支出
-            vo.setDisburse2(staffCostList.get(i));
-            b2 = b2.add(staffCostList.get(i));
+            BigDecimal big = new BigDecimal(0);
+            if (costMap != null && costMap.get(i+1) != null){
+                big = costMap.get(i+1);
+            }
+            vo.setDisburse2(big);
+            b2 = b2.add(big);
             //设置管理成本预算支出
             vo.setDisburse3(notCostList.get(i));
             b3 = b3.add(notCostList.get(i));

+ 35 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EmployeeTaskInfoServiceImpl.java

@@ -151,6 +151,26 @@ public class EmployeeTaskInfoServiceImpl extends BaseServiceImpl<EmployeeTaskInf
         return null;
     }
 
+    /**
+     * 根据年查询所有人工支出,按月分组,当月没有支出将不会插入
+     * @param y
+     * @return
+     */
+    @Override
+    public Map<Integer, BigDecimal> getAllEmployeeSalaryByYear4(int y) {
+        List<EmployeeTaskInfo> list = baseMapper.getAllEmployeeSalaryByYear2(y);
+        if (list != null && list.size() > 0){
+            //按项目分组
+            Map<Integer, BigDecimal> monthMap = list.stream().collect(
+                    Collectors.groupingBy(
+                            o -> o.getOneDay().getMonthValue(),
+                            Collectors.mapping(EmployeeTaskInfo::getEmployeeSalary, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))
+                    ));
+            return monthMap;
+        }
+        return null;
+    }
+
     @Override
     public Map<Long, BigDecimal> getAllBudgetSalaryByProject(Long projectId) {
         List<EmployeeTaskInfo> list = baseMapper.getAllBudgetSalaryByProject(projectId);
@@ -165,4 +185,19 @@ public class EmployeeTaskInfoServiceImpl extends BaseServiceImpl<EmployeeTaskInf
         }
         return null;
     }
+
+    @Override
+    public Map<Integer, BigDecimal> getAllBudgetSalaryByYear(int y) {
+        List<EmployeeTaskInfo> list = baseMapper.getAllBudgetSalaryByYear(y);
+        if (list != null && list.size() > 0){
+            //按项目分组
+            Map<Integer, BigDecimal> monthMap = list.stream().collect(
+                    Collectors.groupingBy(
+                            o -> o.getOneDay().getMonthValue(),
+                            Collectors.mapping(EmployeeTaskInfo::getEmployeeSalary, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))
+                    ));
+            return monthMap;
+        }
+        return null;
+    }
 }