Selaa lähdekoodia

项目统计,费用分类

qianxb 2 vuotta sitten
vanhempi
commit
e4284c3a2d
13 muutettua tiedostoa jossa 103 lisäystä ja 16 poistoa
  1. 15 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/AllProjectStatsVO.java
  2. 3 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ContractReturnedInfoVO.java
  3. 10 0
      blade-service/blade-control/src/main/java/org/springblade/control/controller/ProjectInfoController.java
  4. 5 6
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractInfoMapper.xml
  5. 1 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractReturnedInfoMapper.xml
  6. 2 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectCostBudgetMapper.java
  7. 3 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectCostBudgetMapper.xml
  8. 4 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectInfoMapper.java
  9. 6 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectInfoMapper.xml
  10. 2 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectCostBudgetService.java
  11. 2 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectInfoService.java
  12. 9 2
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectCostBudgetServiceImpl.java
  13. 41 8
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectInfoServiceImpl.java

+ 15 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/AllProjectStatsVO.java

@@ -42,4 +42,19 @@ public class AllProjectStatsVO {
     @ApiModelProperty(value = "未回款")
     private BigDecimal unreturnedMoney;
 
+    @ApiModelProperty(value = "费用分类")
+    private Integer costType;
+
+    @ApiModelProperty(value = "费用分类值")
+    private String costTypeValue;
+
+    @ApiModelProperty(value = "实际费用")
+    private BigDecimal practicalCost;
+
+    @ApiModelProperty(value = "总计")
+    private BigDecimal total;
+
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
+
 }

+ 3 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ContractReturnedInfoVO.java

@@ -25,5 +25,8 @@ public class ContractReturnedInfoVO extends ContractReturnedInfo {
     @ApiModelProperty(value = "催款执行人名称")
     private String reminderUserName;
 
+    @ApiModelProperty(value = "是否超时,1没有,2超时")
+    private String isTimeOut;
+
 
 }

+ 10 - 0
blade-service/blade-control/src/main/java/org/springblade/control/controller/ProjectInfoController.java

@@ -129,4 +129,14 @@ public class ProjectInfoController {
         return R.data(projectInfoService.ProjectListStats());
     }
 
+    /**
+     * 项目统计费用分类
+     */
+    @GetMapping("/ProjectCostTypeStats")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "项目统计费用分类")
+    public R ProjectCostTypeStats(Long id) {
+        return R.data(projectInfoService.ProjectCostTypeStats(id));
+    }
+
 }

+ 5 - 6
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractInfoMapper.xml

@@ -19,12 +19,11 @@
         FROM c_control_contract_info ci WHERE ci.id = #{id}
     </select>
     <select id="getPage" resultType="org.springblade.control.vo.ControlContractInfoVO">
-        SELECT
-            ci.*,
-            (select dict_name  from c_dict_info WHERE code = 'contract_type' AND dict_value= ci.contract_type) as contractTypeValue,
-            IFNULL((select SUM(practical_returned_money) from c_contract_returned_info WHERE contract_id = ci.id),0)  as returnedMoney,
-            (ci.contract_money - IFNULL((select SUM(practical_returned_money) from c_contract_returned_info WHERE contract_id = ci.id),0)) as unreturnedMoney
-        FROM c_control_contract_info ci
+        select ci.* , ( select dict_name from c_dict_info where code = 'contract_type' and dict_value = ci.contract_type ) as contractTypeValue,
+        IFNULL(( select sum(practical_returned_money) from c_contract_returned_info where contract_id = ci.id ), 0) as returnedMoney ,
+        (IFNULL(( select sum(cri.should_returned_money) from c_contract_returned_info cri where cri.should_returned_time &lt; NOW()  and cri.contract_id = ci.id and cri.is_deleted=0), 0) -
+        IFNULL(( select sum(cri.practical_returned_money) from c_contract_returned_info cri where cri.contract_id = ci.id and cri.is_deleted=0), 0)) as unreturnedMoney
+        from c_control_contract_info ci where ci.is_deleted = 0
     </select>
     <select id="getNoConnectionProject2" resultType="org.springblade.control.entity.ControlProjectInfo">
         select pi.id,pi.name from c_control_project_info pi WHERE pi.is_deleted = 0

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

@@ -10,6 +10,7 @@
     <select id="getListByContractId" resultType="org.springblade.control.vo.ContractReturnedInfoVO">
         select
             ri.*,
+        (IF(ri.practical_returned_time is null,IF (ri.should_returned_time &lt; NOW(),2,1),1)) as 'isTimeOut',
             (select name from blade_user WHERE id = ri.reminder_user) as reminderUserName
         from c_contract_returned_info ri where ri.contract_id = #{contractId}
     </select>

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

@@ -49,4 +49,6 @@ public interface ProjectCostBudgetMapper extends BaseMapper<ProjectCostBudget> {
     List<ProjectCostBudget> MonthOfYearPlanOverview(@Param("user") Long user,@Param("year") int year);
 
     Integer getPostMoney(@Param("type") Integer postType);
+
+    List<ProjectCostBudget> getAllBudgetByProjectId(@Param("id") Long id);
 }

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

@@ -118,6 +118,9 @@
         select dict_value
         from c_dict_info where `type` = 3 and code = #{type}
     </select>
+    <select id="getAllBudgetByProjectId" resultType="org.springblade.control.entity.ProjectCostBudget">
+        select * from c_project_cost_budget pcb WHERE  pcb.is_deleted =0 and pcb.project_id = #{id} and pcb.parent_id = 0
+    </select>
 
 
 </mapper>

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

@@ -31,4 +31,8 @@ public interface ProjectInfoMapper extends BaseMapper<ControlProjectInfo> {
     AllProjectStatsVO allProjectStats();
 
     List<AllProjectStatsVO> ProjectListStats();
+
+    List<DictInfo> getCostTypeDict();
+
+    ControlProjectInfo getById(@Param("id") Long id);
 }

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

@@ -69,6 +69,12 @@
         from c_control_project_info cpi left join c_control_contract_info cci on cpi.id = cci.project_id and cci.is_deleted = 0
         WHERE cpi.is_deleted = 0
     </select>
+    <select id="getCostTypeDict" resultType="org.springblade.control.entity.DictInfo">
+        select * from c_dict_info WHERE code = 'cost_type' order by sort
+    </select>
+    <select id="getById" resultType="org.springblade.control.entity.ControlProjectInfo">
+        select * from c_control_project_info where id = #{id}
+    </select>
 
 
 </mapper>

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

@@ -52,4 +52,6 @@ public interface IProjectCostBudgetService extends BaseService<ProjectCostBudget
     List<ProjectCostBudgetVO3> postponePlan();
 
     List<Map<String,List<Integer>>> MonthOfYearPlanOverview();
+
+    List<ProjectCostBudget> getAllBudgetByProjectId(Long id);
 }

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

@@ -35,4 +35,6 @@ public interface IProjectInfoService extends BaseService<ControlProjectInfo> {
     AllProjectStatsVO allProjectStats();
 
     List<AllProjectStatsVO> ProjectListStats();
+
+    List<AllProjectStatsVO> ProjectCostTypeStats(Long id);
 }

+ 9 - 2
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectCostBudgetServiceImpl.java

@@ -43,7 +43,9 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBudgetMapper, ProjectCostBudget> implements IProjectCostBudgetService {
 
-    private final IProjectInfoService projectInfoService;
+//    private final IProjectInfoService projectInfoService;
+
+    private final ProjectInfoMapper infoMapper;
 
     private final ProjectCostBudgetMapper budgetMapper;
     /**
@@ -133,7 +135,7 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
     @Override
     public ProjectCostBudgetVO getPlanByProjectId(Long id) {
         //获取项目信息
-        ControlProjectInfo projectInfo = projectInfoService.getById(id);
+        ControlProjectInfo projectInfo = infoMapper.getById(id);
         ProjectCostBudgetVO vo = new ProjectCostBudgetVO();
         vo.setProjectName(projectInfo.getName());
         vo.setProjectId(id);
@@ -378,6 +380,11 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
         }
     }
 
+    @Override
+    public List<ProjectCostBudget> getAllBudgetByProjectId(Long id) {
+        return baseMapper.getAllBudgetByProjectId(id);
+    }
+
     /**
      * 统计一行的几个总金额
      */

+ 41 - 8
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectInfoServiceImpl.java

@@ -6,15 +6,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.AllArgsConstructor;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.control.dto.ControlProjectInfoDTO;
-import org.springblade.control.entity.ControlContractInfo;
-import org.springblade.control.entity.ControlProjectInfo;
-import org.springblade.control.entity.DictInfo;
-import org.springblade.control.entity.ProjectCostBudgetStats;
+import org.springblade.control.entity.*;
 import org.springblade.control.mapper.ProjectInfoMapper;
-import org.springblade.control.service.IContractInfoService;
-import org.springblade.control.service.IProjectCostBudgetStatsService;
-import org.springblade.control.service.IProjectInfoService;
-import org.springblade.control.service.IProjectProcessService;
+import org.springblade.control.service.*;
 import org.springblade.control.vo.AllProjectStatsVO;
 import org.springblade.control.vo.ControlProjectInfoVO;
 import org.springblade.core.log.exception.ServiceException;
@@ -22,10 +16,16 @@ import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Query;
 import org.springblade.system.entity.DictBiz;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Param
@@ -38,6 +38,7 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, C
     private final ProjectInfoMapper infoMapper;
     private final IProjectProcessService processService;
     private final IContractInfoService contractInfoService;
+    private final IProjectCostBudgetService budgetService;
 
     /**
      * 自定义分页
@@ -153,5 +154,37 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, C
         return baseMapper.ProjectListStats();
     }
 
+    /**
+     * 项目统计费用分类
+     */
+    @Override
+    public List<AllProjectStatsVO> ProjectCostTypeStats(Long id) {
+        List<AllProjectStatsVO> list = new ArrayList<>();
+        //获取费用字典
+        List<DictInfo> costTypeDict = baseMapper.getCostTypeDict();
+        //获取项目所有预算
+        List<ProjectCostBudget> budgets = budgetService.getAllBudgetByProjectId(id);
+        if (budgets != null && budgets.size() > 0){
+            Map<Integer, List<ProjectCostBudget>> budgetMap = budgets.parallelStream()
+                    .collect(Collectors.groupingBy(ProjectCostBudget::getCostType));
+            for (int i = 1; i <= 6; i++) {
+                AllProjectStatsVO vo = new AllProjectStatsVO();
+                vo.setCostType(i);
+                vo.setCostTypeValue(costTypeDict.get(i-1).getDictName());
+                List<ProjectCostBudget> costBudgets = budgetMap.get(i-1);
+                BigDecimal bigDecimal = new BigDecimal(0);
+                if (costBudgets != null && costBudgets.size() > 0){
+                    for (ProjectCostBudget budget : costBudgets) {
+                        bigDecimal = bigDecimal.add(budget.getBudgetCountMoney());
+                    }
+                }
+                vo.setBudgetCost(bigDecimal);
+                list.add(vo);
+            }
+            return list;
+        }
+        return null;
+    }
+
 
 }