Browse Source

项目首页统计信息

ljy121 1 year ago
parent
commit
ddb373fb69

+ 25 - 0
zjugis-business/src/main/java/com/zjugis/business/bean/dto/AmountInfo.java

@@ -0,0 +1,25 @@
+package com.zjugis.business.bean.dto;
+
+import lombok.Data;
+
+/**
+ * @author ljy
+ * @version 1.0
+ * @date 2024/4/24 13:34
+ */
+@Data
+public class AmountInfo{
+
+    private int lt100;
+
+    private int lt200;
+
+    private int lt300;
+
+    private int lt400;
+
+    private int gte400;
+
+    private int total;
+
+}

+ 24 - 0
zjugis-business/src/main/java/com/zjugis/business/bean/dto/CountInfo.java

@@ -0,0 +1,24 @@
+package com.zjugis.business.bean.dto;
+
+import lombok.Data;
+
+/**
+ * @author ljy
+ * @version 1.0
+ * @date 2024/4/24 13:34
+ */
+@Data
+public class CountInfo{
+    private int xl;
+
+    private int jz;
+
+    private int haveContract;
+
+    private int noContract;
+
+    private int accepted;
+
+    private int unaccepted;
+
+}

+ 23 - 0
zjugis-business/src/main/java/com/zjugis/business/bean/dto/ProcessInfo.java

@@ -0,0 +1,23 @@
+package com.zjugis.business.bean.dto;
+
+import lombok.Data;
+
+/**
+ * @author ljy
+ * @version 1.0
+ * @date 2024/4/24 13:34
+ */
+@Data
+public class ProcessInfo{
+
+    private int gt75;
+
+    private int gt50;
+
+    private int gt25;
+
+    private int gt20;
+
+    private int lte10;
+
+}

+ 22 - 0
zjugis-business/src/main/java/com/zjugis/business/bean/response/ProjectTotalInfoResp.java

@@ -0,0 +1,22 @@
+package com.zjugis.business.bean.response;
+
+import com.zjugis.business.bean.dto.AmountInfo;
+import com.zjugis.business.bean.dto.CountInfo;
+import com.zjugis.business.bean.dto.ProcessInfo;
+import lombok.Data;
+
+/**
+ * @author ljy
+ * @version 1.0
+ * @date 2024/4/24 9:43
+ */
+@Data
+public class ProjectTotalInfoResp {
+
+    private CountInfo countInfo;
+
+    private AmountInfo amountInfo;
+
+    private ProcessInfo processInfo;
+
+}

+ 5 - 0
zjugis-business/src/main/java/com/zjugis/business/controller/ProjectController.java

@@ -119,6 +119,11 @@ public class ProjectController{
         return CommonResult.success(projectService.calculate(projectDto));
     }
 
+    @GetMapping("/project/info")
+    public CommonResult<ProjectTotalInfoResp> totalInfo() {
+        return CommonResult.success(projectService.totalInfo());
+    }
+
     @GetMapping("/project/xmzt/count")
     public CommonResult<ProjectXmztCountResponse> countXmzt(ProjectDto projectDto) {
         return CommonResult.success(projectService.countXmzt(projectDto));

+ 10 - 0
zjugis-business/src/main/java/com/zjugis/business/mapper/ProjectMapper.java

@@ -1,6 +1,9 @@
 package com.zjugis.business.mapper;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zjugis.business.bean.dto.AmountInfo;
+import com.zjugis.business.bean.dto.CountInfo;
+import com.zjugis.business.bean.dto.ProcessInfo;
 import com.zjugis.business.bean.dto.ProjectDto;
 import com.zjugis.business.bean.entity.Project;
 import com.zjugis.business.bean.response.ProjectCalculateResponse;
@@ -13,6 +16,7 @@ import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -44,5 +48,11 @@ public interface ProjectMapper extends BaseMapperX<Project> {
     ProjectXmztCountResponse countXmzt(@Param("params") ProjectDto projectDto);
 
     int updateChildXmzt(@Param("projectId") String projectId, @Param("xmzt") Integer xmzt);
+
+    CountInfo selectCountInfo(@Param("start")LocalDate firstDay, @Param("end") LocalDate lastDay);
+
+    AmountInfo selectAmountInfo();
+
+    ProcessInfo selectProcessInfo();
 }
 

+ 3 - 4
zjugis-business/src/main/java/com/zjugis/business/service/ProjectService.java

@@ -5,10 +5,7 @@ import com.zjugis.business.bean.dto.ProjectDto;
 import com.zjugis.business.bean.entity.Project;
 import com.zjugis.business.bean.request.ProjectChildRequest;
 import com.zjugis.business.bean.request.ProjectRequest;
-import com.zjugis.business.bean.response.ProjectCalculateResponse;
-import com.zjugis.business.bean.response.ProjectResponse;
-import com.zjugis.business.bean.response.ProjectXmztCountResponse;
-import com.zjugis.business.bean.response.SumResponse;
+import com.zjugis.business.bean.response.*;
 
 import java.util.List;
 import java.util.Set;
@@ -55,5 +52,7 @@ public interface ProjectService {
     void terminate(String projectId);
 
     void recover(String projectId);
+
+    ProjectTotalInfoResp totalInfo();
 }
 

+ 20 - 6
zjugis-business/src/main/java/com/zjugis/business/service/impl/ProjectServiceImpl.java

@@ -2,16 +2,12 @@ package com.zjugis.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.zjugis.business.bean.dto.AmountDto;
-import com.zjugis.business.bean.dto.ProjectDto;
+import com.zjugis.business.bean.dto.*;
 import com.zjugis.business.bean.entity.Contract;
 import com.zjugis.business.bean.entity.Project;
 import com.zjugis.business.bean.request.ProjectChildRequest;
 import com.zjugis.business.bean.request.ProjectRequest;
-import com.zjugis.business.bean.response.ProjectCalculateResponse;
-import com.zjugis.business.bean.response.ProjectResponse;
-import com.zjugis.business.bean.response.ProjectXmztCountResponse;
-import com.zjugis.business.bean.response.SumResponse;
+import com.zjugis.business.bean.response.*;
 import com.zjugis.business.constants.ContractConstants;
 import com.zjugis.business.constants.FlowStatusConstants;
 import com.zjugis.business.constants.ResponseStatusEnum;
@@ -297,5 +293,23 @@ public class ProjectServiceImpl implements ProjectService {
             projectMapper.updateChildXmzt(projectId,project.getXmzt());
         }
     }
+
+    /**
+     * @return
+     */
+    @Override
+    public ProjectTotalInfoResp totalInfo() {
+        int year = LocalDate.now().getYear();
+        LocalDate firstDay = LocalDate.of(year, 1, 1);
+        LocalDate lastDay = LocalDate.of(year, 12, 31);
+        CountInfo countInfo = projectMapper.selectCountInfo(firstDay, lastDay);
+        AmountInfo amountInfo = projectMapper.selectAmountInfo();
+        ProcessInfo processInfo = projectMapper.selectProcessInfo();
+        ProjectTotalInfoResp projectTotalInfo = new ProjectTotalInfoResp();
+        projectTotalInfo.setCountInfo(countInfo);
+        projectTotalInfo.setAmountInfo(amountInfo);
+        projectTotalInfo.setProcessInfo(processInfo);
+        return projectTotalInfo;
+    }
 }
 

+ 43 - 0
zjugis-business/src/main/resources/mapper/oracle/ProjectMapper.xml

@@ -172,4 +172,47 @@
     <update id="updateChildXmzt">
         UPDATE PROJECT SET XMZT = #{xmzt,jdbcType=INTEGER} WHERE PID = #{projectId,jdbcType=VARCHAR} AND FLOW_STATUS = 99
     </update>
+
+    <select id="selectCountInfo" resultType="com.zjugis.business.bean.dto.CountInfo">
+        SELECT
+            COALESCE(SUM(CASE WHEN T.LXSJ &gt;= #{start,jdbcType=DATE} THEN 1 ELSE 0 END),0) as xl,
+            COALESCE(SUM(CASE WHEN T.LXSJ &lt;= #{end,jdbcType=DATE} AND XMZT = 1 THEN 1 ELSE 0 END),0) as jz,
+            COALESCE(SUM(CASE WHEN T1.ID IS NULL THEN 1 ELSE 0 END),0) as haveContract,
+            COALESCE(SUM(CASE WHEN T1.ID IS NOT NULL THEN 1 ELSE 0 END),0) as noContract,
+            COALESCE(SUM(CASE WHEN T.XMZT = 4 THEN 1 ELSE 0 END),0) as accepted,
+            COALESCE(SUM(CASE WHEN T.XMZT = 1 THEN 1 ELSE 0 END),0) as unaccepted
+        FROM PROJECT T
+                 LEFT JOIN CONTRACT T1 ON T1.PROJECT_ID = T.ID
+        WHERE T.ISVALID = 1
+    </select>
+
+    <select id="selectAmountInfo" resultType="com.zjugis.business.bean.dto.AmountInfo">
+        SELECT
+            count(1) as total,
+            COALESCE(SUM(CASE WHEN T1.CONTRACT_AMOUNT &lt; 1000000 THEN 1 ELSE 0 END),0) as lt100,
+            COALESCE(SUM(CASE WHEN T1.CONTRACT_AMOUNT &gt;= 1000000 and T1.CONTRACT_AMOUNT &lt; 2000000 THEN 1 ELSE 0 END),0) as lt200,
+            COALESCE(SUM(CASE WHEN T1.CONTRACT_AMOUNT &gt;= 2000000 and T1.CONTRACT_AMOUNT &lt; 3000000 THEN 1 ELSE 0 END),0) as lt300,
+            COALESCE(SUM(CASE WHEN T1.CONTRACT_AMOUNT &gt;= 3000000 and T1.CONTRACT_AMOUNT &lt; 4000000 THEN 1 ELSE 0 END),0) as lt400,
+            COALESCE(SUM(CASE WHEN T1.CONTRACT_AMOUNT &gt;= 4000000 THEN 1 ELSE 0 END),0) as gte400
+        FROM PROJECT T
+            LEFT JOIN CONTRACT T1 ON T1.PROJECT_ID = T.ID
+        WHERE T.ISVALID = 1
+    </select>
+
+    <select id="selectProcessInfo" resultType="com.zjugis.business.bean.dto.ProcessInfo">
+        SELECT
+            count(1) as total,
+            COALESCE(SUM(CASE WHEN  T1.process &gt; 75 THEN 1 ELSE 0 END),0) as gt75,
+            COALESCE(SUM(CASE WHEN  T1.process &gt; 50 and T1.process &lt;= 75 THEN 1 ELSE 0 END),0) as gt50,
+            COALESCE(SUM(CASE WHEN  T1.process &gt; 25 and T1.process &lt;= 50 THEN 1 ELSE 0 END),0) as gt25,
+            COALESCE(SUM(CASE WHEN  T1.process &gt; 10 and T1.process &lt;= 25 THEN 1 ELSE 0 END),0) as gt10,
+            COALESCE(SUM(CASE WHEN  T1.process &lt; 10 THEN 1 ELSE 0 END),0) as lte10
+        FROM PROJECT T
+            LEFT JOIN(
+            SELECT MAX(TO_NUMBER(REPLACE(PROCESS, '%' ,''))) as process,PROJECT_ID FROM PROJECT_MILESTONE
+            WHERE STATE = 1 AND ISVALID = 1
+            GROUP BY PROJECT_ID
+            ) T1 ON T1.PROJECT_ID = T.ID
+        WHERE T.ISVALID = 1
+    </select>
 </mapper>