ソースを参照

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

yangyj 2 年 前
コミット
092e91fc17

+ 28 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ContractReturnedInfoVO2.java

@@ -0,0 +1,28 @@
+package org.springblade.control.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.control.entity.ContractReturnedInfo;
+
+/**
+ * @Param  用于年度经营预算收入详情预览
+ * @Author wangwl
+ * @Date 2023/6/6 9:21
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ContractReturnedInfoVO2 extends ContractReturnedInfo {
+
+    @ApiModelProperty(value = "项目名称")
+    private String projectName;
+
+    @ApiModelProperty(value = "收入类别名称")
+    private String incomeTypeValue;
+
+    @ApiModelProperty(value = "项目类别名称")
+    private String projectTypeValue;
+
+    @ApiModelProperty(value = "产品线")
+    private String contractTypeValue;
+}

+ 2 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ControlProjectInfoVO.java

@@ -20,6 +20,8 @@ public class ControlProjectInfoVO extends ControlProjectInfo {
     private String projectTypeValue;
     @ApiModelProperty(value = "项目服务类型值")
     private String projectServerTypeValue;
+    @ApiModelProperty(value = "项目类别值")
+    private String projectClassValue;
     @ApiModelProperty(value = "合同金额")
     private BigDecimal contractMoney;
     @ApiModelProperty(value = "合同类型值")

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

@@ -44,4 +44,6 @@ public interface AnnualBudgetMapper extends BaseMapper<AnnualBudget> {
     Integer yearList();
 
     List<Dept> getAllDept();
+
+    List<ContractReturnedInfoVO2> getAllShouldReturnedMoney(@Param("id") Long id,@Param("year") int y);
 }

+ 10 - 1
blade-service/blade-control/src/main/java/org/springblade/control/mapper/AnnualBudgetMapper.xml

@@ -43,7 +43,7 @@
                 abi.predict_sign_date as returnTime,
                 abi.predict_annual_returned as returnMoney
         FROM c_annual_budget_income abi
-        WHERE abi.annual_budget_id = #{id}
+        WHERE abi.annual_budget_id = #{id} and abi.income_type = 2
     </select>
 
     <select id="getDisburseByAnnualBudgetId" resultType="org.springblade.control.vo.AnnualBudgetDisburseVO">
@@ -89,6 +89,15 @@
     <select id="getAllDept" resultType="org.springblade.system.entity.Dept">
         select * from blade_dept WHERE dept_type = 2 and is_deleted = 0
     </select>
+    <select id="getAllShouldReturnedMoney" resultType="org.springblade.control.vo.ContractReturnedInfoVO2">
+        select cri.*,
+               (select name from c_control_project_info WHERE id = abi.project_id ) as projectName,
+               (select dict_name  from c_dict_info WHERE code = 'project_income_type' AND dict_value = abi.income_type) as incomeTypeValue,
+               abi.project_type_value as projectTypeValue ,
+               abi.contract_type_value as contractTypeValue
+        from c_annual_budget_income abi left join c_contract_returned_info cri on abi.project_id  = cri.project_id
+        WHERE abi.annual_budget_id = #{id} and abi.income_type = 1 and DATE_FORMAT(cri.should_returned_time, '%Y') = #{year}
+    </select>
 
 
 </mapper>

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

@@ -34,4 +34,6 @@ public interface ContractReturnedInfoMapper extends BaseMapper<ContractReturnedI
     List<ContractReturnedInfo> getAllMonthReturnedByYear(@Param("year") int y);
 
     List<ContractReturnedInfo> getAllMonthReturnedByYear2(@Param("year") int y);
+
+    BigDecimal getProjectShouldReturnedByYear(@Param("projectId") Long projectId,@Param("year") int year);
 }

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

@@ -61,4 +61,8 @@
         WHERE  is_deleted = 0
             and DATE_FORMAT(should_returned_time ,'%Y') = #{year}
     </select>
+    <select id="getProjectShouldReturnedByYear" resultType="java.math.BigDecimal">
+        select SUM(should_returned_money) from c_contract_returned_info
+        WHERE project_id = #{projectId} and  DATE_FORMAT(should_returned_time, '%Y') = #{year}
+    </select>
 </mapper>

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

@@ -7,6 +7,7 @@
         select
         pi.*,
         (select dict_name  from c_dict_info WHERE code = 'project_type' AND dict_value = pi.project_type) as projectTypeValue,
+        (select dict_name  from c_dict_info WHERE code = 'project_class' AND dict_value = pi.project_class) as projectClassValue,
         (select dict_name  from c_dict_info WHERE code = 'project_server_type' AND dict_value = pi.project_server_type) as projectServerTypeValue,
         (select contract_money from c_control_contract_info WHERE project_id = pi.id)as contractMoney,
         (select name from blade_user WHERE id = pi.project_principal) as projectPrincipalName,

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

@@ -47,4 +47,7 @@ public interface IContractReturnedInfoService extends BaseService<ContractReturn
     //获取所有项目当年每月的应回款
     List<BigDecimal> getAllMonthReturnedByYear2(int y);
 
+    //根据项目id和年份获取项目当年应回款
+    BigDecimal getProjectShouldReturnedByYear(Long projectId,int year);
+
 }

+ 48 - 10
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/AnnualBudgetServiceImpl.java

@@ -105,13 +105,13 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
                 if (income.getIncomeType() == null){
                     throw new ServiceException("请选择收入类别");
                 }
-                if (income.getPredictSignDate() == null){
-                    throw new ServiceException("请选择预计签单时间");
+                if (income.getIncomeType() == 2 && income.getPredictSignDate() == null){
+                    throw new ServiceException("增量项目请选择预计签单时间");
                 }
-                if (income.getPredictContractMoney() == null){
+                if (income.getIncomeType() == 2 && income.getPredictContractMoney() == null){
                     throw new ServiceException("请输入预计新签合同额");
                 }
-                if (income.getPredictAnnualReturned() == null){
+                if (income.getIncomeType() == 2 && income.getPredictAnnualReturned() == null){
                     throw new ServiceException("请输入预计本年度回款额");
                 }
             }
@@ -205,8 +205,13 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
         List<AnnualBudgetVO2.IncomeDetail> incomeDetails = new ArrayList<>();
         List<AnnualBudgetVO2.disburseDetail> disburseDetails = new ArrayList<>();
         List<BigDecimal> bigDecimals = new ArrayList<>();
-        //获取预算收入集合
+        //获取当前年度预算
+        AnnualBudget annualBudget = this.getById(id);
+        int y = Integer.parseInt(annualBudget.getName().substring(0,4));
+        //获取增量预算收入集合
         List<AnnualBudgetIncomeVO> incomeList = baseMapper.getReturnedByAnnualBudgetId(id);
+        //获取存量预算集合,根据存量预算的项目id,获取当年所有项目的回款
+        List<ContractReturnedInfoVO2> returnedInfos = baseMapper.getAllShouldReturnedMoney(id, y);
         //获取预算支出集合
         List<AnnualBudgetDisburseVO> disburseList = baseMapper.getDisburseByAnnualBudgetId(id);
         //分别计算12个月
@@ -215,6 +220,7 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
             AnnualBudgetVO2.IncomeDetail incomeDetail = new AnnualBudgetVO2.IncomeDetail();
             BigDecimal incomeTotal = new BigDecimal("0");
             List<AnnualBudgetIncomeVO> list1 = new ArrayList<>();
+            //增量项目收入
             if (incomeList != null && incomeList.size() >0){
                 for (AnnualBudgetIncomeVO vo : incomeList) {
                     if (vo.getReturnTime().getMonthValue() == i) {
@@ -226,7 +232,27 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
                     }
                 }
             }
-            //移除集中和已经通过的月
+            //存量项目收入
+            if (returnedInfos != null && returnedInfos.size() > 0){
+                for (ContractReturnedInfoVO2 info : returnedInfos) {
+                    if (info.getShouldReturnedTime().getMonthValue() == i){
+                        if (info.getShouldReturnedMoney() == null){
+                            info.setShouldReturnedMoney(new BigDecimal(0));
+                        }
+                        incomeTotal = incomeTotal.add(info.getShouldReturnedMoney());
+                        AnnualBudgetIncomeVO vo = new AnnualBudgetIncomeVO();
+                        //设置详情预览
+                        vo.setProjectName(info.getProjectName());
+                        vo.setIncomeTypeValue(info.getIncomeTypeValue());
+                        vo.setProjectTypeValue(info.getProjectTypeValue());
+                        vo.setContractTypeValue(info.getContractTypeValue());
+                        vo.setReturnTime(info.getShouldReturnedTime());
+                        vo.setReturnMoney(info.getShouldReturnedMoney());
+                        list1.add(vo);
+                    }
+                }
+            }
+
             incomeDetail.setIncome(incomeTotal);
             incomeDetail.setIncomeList(list1);
             incomeDetails.add(incomeDetail);
@@ -1817,7 +1843,8 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
     /**
      * 统计收入,1合同收入2计划回款
      */
-    public static Map<String,BigDecimal> statisticIncome(AnnualBudgetDTO dto){
+    public Map<String,BigDecimal> statisticIncome(AnnualBudgetDTO dto){
+        int y = Integer.parseInt(dto.getName().substring(0, 4));
         List<AnnualBudgetIncome> incomeList = dto.getIncomeList();
         BigDecimal contractTotal = new BigDecimal("0");
         BigDecimal planReturnedTotal = new BigDecimal("0");
@@ -1828,10 +1855,21 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
                 if (income.getPredictContractMoney() != null) {
                     contractTotal = contractTotal.add(income.getPredictContractMoney());
                 }
-                //计划回款总和
-                if (income.getPredictAnnualReturned() != null){
-                    planReturnedTotal = planReturnedTotal.add(income.getPredictAnnualReturned());
+                //年度合同指标,
+                if (income.getIncomeType() == 1){
+                    //存量项目去查找当年合同应回款
+                    BigDecimal decimal = returnedInfoService.getProjectShouldReturnedByYear(income.getProjectId(), y);
+                    planReturnedTotal = planReturnedTotal.add(decimal);
+                }else if (income.getIncomeType() == 2){
+                    //增量项目直接统计
+                    //计划回款总和
+                    if (income.getPredictAnnualReturned() != null){
+                        planReturnedTotal = planReturnedTotal.add(income.getPredictAnnualReturned());
+                    }
+                }else {
+                    throw new ServiceException("收入类别错误");
                 }
+
             }
         }
         Map<String,BigDecimal> map = new HashMap<>();

+ 15 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ContractReturnedInfoServiceImpl.java

@@ -192,4 +192,19 @@ public class ContractReturnedInfoServiceImpl extends BaseServiceImpl<ContractRet
         }
         return list;
     }
+
+    /**
+     * 根据项目id和年份获取项目当年应回款
+     * @param projectId
+     * @param year
+     * @return
+     */
+    @Override
+    public BigDecimal getProjectShouldReturnedByYear(Long projectId, int year) {
+        BigDecimal decimal = baseMapper.getProjectShouldReturnedByYear(projectId, year);
+        if (decimal == null){
+            return new BigDecimal(0);
+        }
+        return decimal;
+    }
 }