Browse Source

内控预算与实际统计,全部接口

qianxb 2 years ago
parent
commit
aeee220579
14 changed files with 383 additions and 4 deletions
  1. 31 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/BudgetAndPracticalByManageVO.java
  2. 27 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/BudgetAndPracticalVO.java
  3. 20 0
      blade-service/blade-control/src/main/java/org/springblade/control/controller/AnnualBudgetController.java
  4. 6 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/AnnualBudgetDisburseMapper.java
  5. 10 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/AnnualBudgetDisburseMapper.xml
  6. 4 4
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectCostBudgetMapper.xml
  7. 2 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectInfoMapper.java
  8. 7 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectInfoMapper.xml
  9. 9 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IAnnualBudgetDisburseService.java
  10. 6 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IAnnualBudgetService.java
  11. 3 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectInfoService.java
  12. 144 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/AnnualBudgetDisburseServiceImpl.java
  13. 85 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/AnnualBudgetServiceImpl.java
  14. 29 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectInfoServiceImpl.java

+ 31 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/BudgetAndPracticalByManageVO.java

@@ -0,0 +1,31 @@
+package org.springblade.control.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/7/24 14:22
+ **/
+@Data
+public class BudgetAndPracticalByManageVO {
+
+    @ApiModelProperty(value = "时间")
+    private String time;
+
+    @ApiModelProperty(value = "人工成本预算支出")
+    private BigDecimal disburse1;
+
+    @ApiModelProperty(value = "人工成本实际支出")
+    private BigDecimal disburse2;
+
+    @ApiModelProperty(value = "管理成本预算支出")
+    private BigDecimal disburse3;
+
+    @ApiModelProperty(value = "管理成本实际支出")
+    private BigDecimal disburse4;
+
+}

+ 27 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/BudgetAndPracticalVO.java

@@ -0,0 +1,27 @@
+package org.springblade.control.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/7/27 14:25
+ **/
+@Data
+public class BudgetAndPracticalVO {
+
+    @ApiModelProperty(value = "总经营收入预算")
+    private BigDecimal budgetInput;
+
+    @ApiModelProperty(value = "总经营支出预算")
+    private BigDecimal budgetOutput;
+
+    @ApiModelProperty(value = "总经营实际收入")
+    private BigDecimal practicalInput;
+
+    @ApiModelProperty(value = "总经营实际支出")
+    private BigDecimal practicalOutput;
+}

+ 20 - 0
blade-service/blade-control/src/main/java/org/springblade/control/controller/AnnualBudgetController.java

@@ -257,4 +257,24 @@ public class AnnualBudgetController {
         return R.data(budgetService.budgetAndPracticalByDept(year));
     }
 
+    /**
+     * 预算与实际统计-人工和管理统计
+     */
+    @GetMapping("/budgetAndPracticalByManage")
+    @ApiOperationSupport(order = 18)
+    @ApiOperation(value = "预算与实际统计-人工和管理统计",notes = "传入年:2023年")
+    public R<List<BudgetAndPracticalByManageVO>> budgetAndPracticalByManage(String year) {
+        return R.data(budgetService.budgetAndPracticalByManage(year));
+    }
+
+    /**
+     * 预算与实际统计-总经营
+     */
+    @GetMapping("/budgetAndPracticalByBusiness")
+    @ApiOperationSupport(order = 19)
+    @ApiOperation(value = "预算与实际统计-总经营",notes = "传入年:2023年")
+    public R<BudgetAndPracticalVO> budgetAndPracticalByBusiness(String year) {
+        return R.data(budgetService.budgetAndPracticalByBusiness(year));
+    }
+
 }

+ 6 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/AnnualBudgetDisburseMapper.java

@@ -5,6 +5,8 @@ import org.apache.ibatis.annotations.Param;
 import org.springblade.control.entity.AnnualBudgetDisburse;
 import org.springblade.control.entity.AnnualBudgetIncome;
 
+import java.util.List;
+
 /**
  * @Param
  * @Author wangwl
@@ -13,4 +15,8 @@ import org.springblade.control.entity.AnnualBudgetIncome;
 public interface AnnualBudgetDisburseMapper extends BaseMapper<AnnualBudgetDisburse> {
 
     void deleteByAnnualId(@Param("id") Long id);
+
+    List<AnnualBudgetDisburse> budgetCostByYear(@Param("annualId") Long annualId);
+
+    List<AnnualBudgetDisburse> budgetNotCostByYear(@Param("annualId") Long annualId);
 }

+ 10 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/AnnualBudgetDisburseMapper.xml

@@ -6,4 +6,14 @@
     <delete id="deleteByAnnualId">
         delete from c_annual_budget_disburse where annual_budget_id = #{id}
     </delete>
+    <select id="budgetCostByYear" resultType="org.springblade.control.entity.AnnualBudgetDisburse">
+        SELECT *
+        from c_annual_budget_disburse
+        WHERE annual_budget_id = #{annualId} and budget_subject = 3 and is_deleted = 0
+    </select>
+    <select id="budgetNotCostByYear" resultType="org.springblade.control.entity.AnnualBudgetDisburse">
+        SELECT *
+        from c_annual_budget_disburse
+        WHERE annual_budget_id = #{annualId} and budget_subject != 3 and is_deleted = 0
+    </select>
 </mapper>

+ 4 - 4
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectCostBudgetMapper.xml

@@ -173,11 +173,11 @@
         select * from c_project_cost_budget pcb WHERE  pcb.is_deleted =0 and pcb.project_id = #{projectId} and pcb.task_approve = 1
     </select>
     <select id="getYearStaffDisburse" resultType="java.math.BigDecimal">
-        SELECT SUM(actual_total_money)
-        from c_project_cost_budget
-        WHERE  is_deleted = 0 and task_approve = 1
+        SELECT SUM(pcb.actual_total_money)
+        from c_project_cost_budget pcb
+        WHERE  pcb.is_deleted = 0 and pcb.task_approve = 1 and (select cdi.dict_value from c_dict_info cdi WHERE cdi.id = pcb.plan_task_type) = 1
         <if test="year != 0">
-            and DATE_FORMAT(plan_end_time ,'%Y') = #{year}
+            and DATE_FORMAT(pcb.plan_end_time ,'%Y') = #{year}
         </if>
     </select>
     <select id="getAllChildrenPlan" resultType="org.springblade.control.vo.ProjectCostBudgetVO2">

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

@@ -46,6 +46,8 @@ public interface ProjectInfoMapper extends BaseMapper<ControlProjectInfo> {
 
     BigDecimal getThisYearReimburse(@Param("year") int year);
 
+    List<EMFinancialReimbursementInfo> getThisYearReimburse2(@Param("year") int year);
+
     List<EMFinancialReimbursementInfo> getYearReimburseByMonth(@Param("year") int year);
 
     //返回报销对应的进程

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

@@ -117,5 +117,12 @@
         FROM  c_expense_financial_reimbursement_info fri inner join c_project_cost_budget pcb on fri.budget_plan_ids = pcb.id
         WHERE fri.is_deleted = 0 and fri.status = 2 and fri.project_id = #{projectId} and and pcb.costType = #{costType} and fri.budget_plan_ids > 0
     </select>
+    <select id="getThisYearReimburse2"
+            resultType="org.springblade.control.entity.EMFinancialReimbursementInfo">
+        SELECT fri.*
+        FROM c_expense_financial_reimbursement_info fri
+        WHERE fri.is_deleted = 0 and fri.status = 2
+            and #{year} = DATE_FORMAT(fri.fr_date ,'%Y')
+    </select>
 
 </mapper>

+ 9 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IAnnualBudgetDisburseService.java

@@ -4,6 +4,9 @@ import org.springblade.control.entity.AnnualBudgetDisburse;
 import org.springblade.control.entity.AnnualBudgetIncome;
 import org.springblade.core.mp.base.BaseService;
 
+import java.math.BigDecimal;
+import java.util.List;
+
 /**
  * @Param
  * @Author wangwl
@@ -13,4 +16,10 @@ public interface IAnnualBudgetDisburseService extends BaseService<AnnualBudgetDi
 
     void deleteByAnnualId(Long id);
 
+    //年度预算人工成本,按月返回指定年
+    List<BigDecimal> budgetCostByYear(Long annualId);
+
+    //年度预算非人工成本,按月返回指定年
+    List<BigDecimal> budgetNotCostByYear(Long annualId);
+
 }

+ 6 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IAnnualBudgetService.java

@@ -56,4 +56,10 @@ public interface IAnnualBudgetService extends BaseService<AnnualBudget> {
     List<BudgetAndPracticalByMonthVO> budgetAndPracticalByMonth(String year);
 
     List<BudgetAndPracticalByDeptVO> budgetAndPracticalByDept(String year);
+
+    BudgetAndPracticalVO budgetAndPracticalByBusiness(String year);
+
+    List<BudgetAndPracticalByManageVO> budgetAndPracticalByManage(String year);
+
+
 }

+ 3 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectInfoService.java

@@ -48,6 +48,9 @@ public interface IProjectInfoService extends BaseService<ControlProjectInfo> {
     //获取当年所有的报销
     BigDecimal getThisYearReimburse(int year);
 
+    //获取当年所有的报销,分月返回
+    List<BigDecimal> getThisYearAllReimburseByYear(int year);
+
     //获取所有项目截至当年的报销支出,分月返回
     Map<Long,List<BigDecimal>> getYearReimburseByMonth(int year);
 

+ 144 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/AnnualBudgetDisburseServiceImpl.java

@@ -10,6 +10,10 @@ import org.springblade.control.service.IAnnualBudgetIncomeService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @Param
  * @Author wangwl
@@ -24,4 +28,144 @@ public class AnnualBudgetDisburseServiceImpl extends BaseServiceImpl<AnnualBudge
     public void deleteByAnnualId(Long id) {
         baseMapper.deleteByAnnualId(id);
     }
+
+    /**
+     * 年度预算人工成本,按月返回指定年
+     * @param annualId
+     * @return
+     */
+    @Override
+    public List<BigDecimal> budgetCostByYear(Long annualId) {
+        List<BigDecimal> list = new ArrayList<>();
+        if (annualId == null){
+            for (int i = 0; i < 12; i++) {
+                list.add(new BigDecimal(0));
+            }
+            return list;
+        }
+        //获取所有的人工成本
+        List<AnnualBudgetDisburse> cost = baseMapper.budgetCostByYear(annualId);
+        if (cost != null && cost.size() > 0){
+            for (int i = 0; i < 12; i++) {
+                BigDecimal big = new BigDecimal(0);
+                for (AnnualBudgetDisburse disburse : cost) {
+                    switch (i) {
+                        case 0:
+                            big = big.add(disburse.getJanuary());
+                            break;
+                        case 1:
+                            big = big.add(disburse.getFebruary());
+                            break;
+                        case 2:
+                            big = big.add(disburse.getMarch());
+                            break;
+                        case 3:
+                            big = big.add(disburse.getApril());
+                            break;
+                        case 4:
+                            big = big.add(disburse.getMay());
+                            break;
+                        case 5:
+                            big = big.add(disburse.getJune());
+                            break;
+                        case 6:
+                            big = big.add(disburse.getJuly());
+                            break;
+                        case 7:
+                            big = big.add(disburse.getAugust());
+                            break;
+                        case 8:
+                            big = big.add(disburse.getSeptember());
+                            break;
+                        case 9:
+                            big = big.add(disburse.getOctober());
+                            break;
+                        case 10:
+                            big = big.add(disburse.getNovember());
+                            break;
+                        case 11:
+                            big = big.add(disburse.getDecember());
+                            break;
+                    }
+                    list.add(big);
+                }
+            }
+            return list;
+        }else {
+            for (int i = 0; i < 12; i++) {
+                list.add(new BigDecimal(0));
+            }
+            return list;
+        }
+    }
+
+    /**
+     * 年度预算非人工成本,按月返回指定年
+     * @param annualId
+     * @return
+     */
+    @Override
+    public List<BigDecimal> budgetNotCostByYear(Long annualId) {
+        List<BigDecimal> list = new ArrayList<>();
+        if (annualId == null){
+            for (int i = 0; i < 12; i++) {
+                list.add(new BigDecimal(0));
+            }
+            return list;
+        }
+        //获取所有的非人工成本
+        List<AnnualBudgetDisburse> cost = baseMapper.budgetNotCostByYear(annualId);
+        if (cost != null && cost.size() > 0){
+            for (int i = 0; i < 12; i++) {
+                BigDecimal big = new BigDecimal(0);
+                for (AnnualBudgetDisburse disburse : cost) {
+                    switch (i) {
+                        case 0:
+                            big = big.add(disburse.getJanuary());
+                            break;
+                        case 1:
+                            big = big.add(disburse.getFebruary());
+                            break;
+                        case 2:
+                            big = big.add(disburse.getMarch());
+                            break;
+                        case 3:
+                            big = big.add(disburse.getApril());
+                            break;
+                        case 4:
+                            big = big.add(disburse.getMay());
+                            break;
+                        case 5:
+                            big = big.add(disburse.getJune());
+                            break;
+                        case 6:
+                            big = big.add(disburse.getJuly());
+                            break;
+                        case 7:
+                            big = big.add(disburse.getAugust());
+                            break;
+                        case 8:
+                            big = big.add(disburse.getSeptember());
+                            break;
+                        case 9:
+                            big = big.add(disburse.getOctober());
+                            break;
+                        case 10:
+                            big = big.add(disburse.getNovember());
+                            break;
+                        case 11:
+                            big = big.add(disburse.getDecember());
+                            break;
+                    }
+                    list.add(big);
+                }
+            }
+            return list;
+        }else {
+            for (int i = 0; i < 12; i++) {
+                list.add(new BigDecimal(0));
+            }
+            return list;
+        }
+    }
 }

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

@@ -1572,6 +1572,91 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
         }
     }
 
+    /**
+     * 预算与实际统计-总经营
+     */
+    @Override
+    public BudgetAndPracticalVO budgetAndPracticalByBusiness(String year) {
+        int y = Integer.parseInt(year.substring(0, 4));
+        BudgetAndPracticalVO vo = new BudgetAndPracticalVO();
+        //获取当年的年度经营预算
+        AnnualBudget budget = baseMapper.getThisYearBudget(y);
+        if (budget == null){
+            vo.setBudgetInput(new BigDecimal(0));
+            vo.setBudgetOutput(new BigDecimal(0));
+        }else {
+            vo.setBudgetInput(budget.getAnnualContractTarget());
+            vo.setBudgetOutput(budget.getTotalBudget());
+        }
+        //获取当年的所有已回款
+        BigDecimal yearReturned = returnedInfoService.getYearReturned(y);
+        vo.setPracticalInput(yearReturned);
+        //获取当年所有实际支出: 人工支出+维护支出+报销支出
+        //人工支出
+        BigDecimal disburse = budgetService.getYearStaffDisburse(y);
+        //维护支出
+        BigDecimal maintainCost = budgetService.getAllMaintainCost(y);
+        //报销支出
+        BigDecimal decimal = projectInfoService.getThisYearReimburse(LocalDate.now().getYear());
+        vo.setPracticalOutput(disburse.add(maintainCost).add(decimal));
+        return vo;
+    }
+
+    /**
+     * 预算与实际统计-人工和管理统计
+     */
+    @Override
+    public List<BudgetAndPracticalByManageVO> budgetAndPracticalByManage(String year) {
+        int y = Integer.parseInt(year.substring(0, 4));
+        //结果集
+        List<BudgetAndPracticalByManageVO> list = new ArrayList<>();
+        List<String> months = Arrays.asList("一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月");
+        //获取当年的年度经营预算
+        AnnualBudget budget = baseMapper.getThisYearBudget(y);
+        //年度经营的人工成本,按月返回指定年的,如果没有年度经营,则返回所有的0
+        Long annualId;
+        if (budget == null){
+            annualId = null;
+        }else {
+            annualId = budget.getId();
+        }
+        List<BigDecimal> costList = disburseService.budgetCostByYear(annualId);
+        //一年的实际人工支出,按月返回指定年的
+        //管理成本预算支出  = 年度经营的非人工成本,按月返回指定年的
+        List<BigDecimal> notCostList = disburseService.budgetNotCostByYear(annualId);
+        //管理成本实际支出 = 指定年的每个月报销,按月返回
+        List<BigDecimal> reimburseList = projectInfoService.getThisYearAllReimburseByYear(y);
+        BigDecimal b1 = new BigDecimal(0);
+        BigDecimal b2 = new BigDecimal(0);
+        BigDecimal b3 = new BigDecimal(0);
+        BigDecimal b4 = new BigDecimal(0);
+        for (int i = 0; i < 12; i++) {
+            BudgetAndPracticalByManageVO vo = new BudgetAndPracticalByManageVO();
+            //设置月份
+            vo.setTime(months.get(i));
+            //设置人工成本预算支出
+            vo.setDisburse1(costList.get(i));
+            b1 = b1.add(costList.get(i));
+            //设置人工成本实际支出
+
+            //设置管理成本预算支出
+            vo.setDisburse3(notCostList.get(i));
+            b3 = b3.add(notCostList.get(i));
+            //设置管理成本实际支出
+            vo.setDisburse4(reimburseList.get(i));
+            b4 = b4.add(reimburseList.get(i));
+            list.add(vo);
+        }
+        BudgetAndPracticalByManageVO vo = new BudgetAndPracticalByManageVO();
+        vo.setTime("总计");
+        vo.setDisburse1(b1);
+        vo.setDisburse2(b2);
+        vo.setDisburse3(b3);
+        vo.setDisburse4(b4);
+        list.add(vo);
+        return list;
+    }
+
     /**
      * 统计支出 1支出总和2工资总和
      */

+ 29 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectInfoServiceImpl.java

@@ -361,6 +361,35 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, C
         return decimal;
     }
 
+    /**
+     * 获取当年所有的报销,分月返回
+     * @param year
+     * @return
+     */
+    @Override
+    public List<BigDecimal> getThisYearAllReimburseByYear(int year) {
+        List<BigDecimal> list = new ArrayList<>();
+        //获取当年所有的报销
+        List<EMFinancialReimbursementInfo> infos = baseMapper.getThisYearReimburse2(year);
+        if (infos != null && infos.size() > 0){
+            for (int i = 0; i < 12; i++) {
+                BigDecimal big = new BigDecimal(0);
+                for (EMFinancialReimbursementInfo info : infos) {
+                    if (info.getFrDate().getMonth() == i){
+                        big = big.add(info.getFrMoney());
+                    }
+                }
+                list.add(big);
+            }
+            return list;
+        }else {
+            for (int i = 0; i < 12; i++) {
+                list.add(new BigDecimal(0));
+            }
+            return list;
+        }
+    }
+
     /**
      * 获取所有项目截至当年的报销支出,分月返回
      * @param year