1
0
gushoubang 1 сар өмнө
parent
commit
089f9bf317

+ 2 - 2
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/ProjectController.java

@@ -79,9 +79,9 @@ public class ProjectController extends BaseController {
      * 获取项目概览
      */
     @GetMapping("/overview")
-    public R<ProjectOverviewRes> GetOverview() {
+    public R<ProjectOverviewRes> GetOverview(@RequestParam(required = false) Integer projectType) {
         try {
-            ProjectOverviewRes res = projectService.getOverview();
+            ProjectOverviewRes res = projectService.getOverview(projectType);
             return R.ok(res);
         } catch (Exception e) {
             return R.fail(e.getMessage());

+ 1 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/ProjectWorkflowMapper.java

@@ -49,5 +49,5 @@ public interface ProjectWorkflowMapper {
      * 统计:取每个 project_id 的最大 workflow_id,若相同 workflow_id 有多条仅计一次,
      * 再按 workflow_name 统计数量,返回字段为 name(workflow_name)与 count
      */
-    List<ProjectProcessRes> countMaxWorkflowByName();
+    List<ProjectProcessRes> countMaxWorkflowByName(@Param("projectType") Integer projectType);
 }

+ 2 - 3
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/TdgyMapper.java

@@ -47,8 +47,7 @@ public interface TdgyMapper {
 
     /**
      * 按 gd_type 统计数量和求和 gd_area
-     * 返回字段:gdType, count, gdArea
+     * 返回字段:gdType, count, gdArea, gdUnit,可选传入 projectType 过滤 t_project.project_type
      */
-    List<ProjectSupplyRes> countAndSumByGdType();
+    List<ProjectSupplyRes> countAndSumByGdType(@Param("projectType") Integer projectType);
 }
-

+ 1 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/ProjectService.java

@@ -57,7 +57,7 @@ public interface ProjectService {
     /**
      * 获取项目概览信息
      */
-    ProjectOverviewRes getOverview();
+    ProjectOverviewRes getOverview(Integer projectType);
 
     /**
      * 获取项目周期

+ 3 - 3
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/ProjectImpl.java

@@ -91,17 +91,17 @@ public class ProjectImpl implements ProjectService {
     }
 
     @Override
-    public ProjectOverviewRes getOverview() {
+    public ProjectOverviewRes getOverview(Integer projectType) {
         ProjectOverviewRes projectOverviewRes = new ProjectOverviewRes();
         // todo 根据人员/权限统计
         // 获取项目数量
         ProjectNumRes projectNumRes = projectMapper.countTypeStats();
         projectOverviewRes.setProjectNum(projectNumRes);
         // 获取项目供应
-        List<ProjectSupplyRes> projectSupplyList = tdgyMapper.countAndSumByGdType();
+        List<ProjectSupplyRes> projectSupplyList = tdgyMapper.countAndSumByGdType(projectType);
         projectOverviewRes.setProjectSupplyList(projectSupplyList);
         // 获取项目进度
-        List<ProjectProcessRes> projectProcessList = projectWorkflowMapper.countMaxWorkflowByName();
+        List<ProjectProcessRes> projectProcessList = projectWorkflowMapper.countMaxWorkflowByName(projectType);
         projectOverviewRes.setProjectProcessList(projectProcessList);
         return projectOverviewRes;
     }

+ 12 - 4
siwei-modules/siwei-apply/src/main/resources/mapper/ProjectWorkflowMapper.xml

@@ -95,12 +95,20 @@
             SELECT DISTINCT tpw.project_id, tpw.workflow_id, tpw.workflow_name
             FROM t_project_workflow tpw
             INNER JOIN (
-            SELECT project_id, MAX (workflow_id) AS max_workflow_id
-            FROM t_project_workflow
-            GROUP BY project_id
+                SELECT project_id, MAX (workflow_id) AS max_workflow_id
+                FROM t_project_workflow
+                GROUP BY project_id
             ) m
             ON m.project_id = tpw.project_id AND m.max_workflow_id = tpw.workflow_id
-            ) t
+            <where>
+                <if test="projectType != null">
+                    EXISTS (
+                        SELECT 1 FROM t_project p
+                        WHERE p.id = tpw.project_id AND p.project_type = #{projectType}
+                    )
+                </if>
+            </where>
+        ) t
         GROUP BY t.workflow_name
     </select>
 </mapper>

+ 16 - 7
siwei-modules/siwei-apply/src/main/resources/mapper/TdgyMapper.xml

@@ -77,22 +77,31 @@
         WHERE id = #{id}
     </update>
 
-    <!-- 按 gd_type 统计数量与面积求和(面积统一换算成“亩”):返回 gdType(空值为“其他”), count, gdArea, gdUnit='亩' -->
+    <!-- 按 gd_type 统计数量与面积求和(面积统一换算成“亩”):返回 gdType(空值为“其他”), count, gdArea, gdUnit='亩'
+         当传入 projectType 时,仅统计其对应项目的记录(关联 t_project.project_type) -->
     <select id="countAndSumByGdType" resultType="com.siwei.apply.domain.res.ProjectSupplyRes">
         SELECT
-            COALESCE(NULLIF(TRIM(gd_type), ''), '其他') AS gdType,
+            COALESCE(NULLIF(TRIM(td.gd_type), ''), '其他') AS gdType,
             '亩' AS gdUnit,
             COUNT(*) AS count,
             COALESCE(
                 SUM(
                     CASE
-                        WHEN gd_unit = '0' THEN COALESCE(gd_area, 0) / 666.6666667  -- 平方米 -> 亩
-                        WHEN gd_unit = '1' THEN COALESCE(gd_area, 0) * 15           -- 公顷 -> 亩
-                        ELSE COALESCE(gd_area, 0)                                    -- 默认当作亩(含 '2')
+                        WHEN td.gd_unit = '0' THEN COALESCE(td.gd_area, 0) / 666.6666667  -- 平方米 -> 亩
+                        WHEN td.gd_unit = '1' THEN COALESCE(td.gd_area, 0) * 15           -- 公顷 -> 亩
+                        ELSE COALESCE(td.gd_area, 0)                                       -- 默认当作亩(含 '2')
                     END
                 ), 0
             ) AS gdArea
-        FROM t_tdgy
-        GROUP BY COALESCE(NULLIF(TRIM(gd_type), ''), '其他')
+        FROM t_tdgy td
+        <where>
+            <if test="projectType != null">
+                EXISTS (
+                    SELECT 1 FROM t_project p
+                    WHERE p.id = td.project_id AND p.project_type = #{projectType}
+                )
+            </if>
+        </where>
+        GROUP BY COALESCE(NULLIF(TRIM(td.gd_type), ''), '其他')
     </select>
 </mapper>