Browse Source

土地供应添加

gushoubang 1 month ago
parent
commit
8ab6eae85a

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

@@ -1,6 +1,7 @@
 package com.siwei.apply.controller;
 
 import com.siwei.apply.domain.Project;
+import com.siwei.apply.domain.res.ProjectOverviewRes;
 import com.siwei.apply.domain.vo.IdsVo;
 import com.siwei.apply.domain.vo.ProjectFilterVo;
 import com.siwei.apply.domain.vo.ProjectUpdateVo;
@@ -30,7 +31,7 @@ public class ProjectController extends BaseController {
      * @return
      */
     @PostMapping("")
-    public R<Map> Add(@RequestBody ProjectVo projectVo) {
+    public R<Map<String, String>> Add(@RequestBody ProjectVo projectVo) {
         try {
             String id = projectService.add(projectVo);
             Map<String, String> map = new HashMap<>();
@@ -63,7 +64,7 @@ public class ProjectController extends BaseController {
      * @return
      */
     @PostMapping("/list")
-    public R<Map> GetList(@RequestBody ProjectFilterVo projectFilterVo) {
+    public R<Map<String, Object>> GetList(@RequestBody ProjectFilterVo projectFilterVo) {
         try {
             Map<String, Object> projects = projectService.getList(projectFilterVo);
             return R.ok(projects);
@@ -72,6 +73,19 @@ public class ProjectController extends BaseController {
         }
     }
 
+    /**
+     * 获取项目概览
+     */
+    @GetMapping("/overview")
+    public R<ProjectOverviewRes> GetOverview() {
+        try {
+            ProjectOverviewRes res = projectService.getOverview();
+            return R.ok(res);
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+    }
+
     /**
      * 更新项目
      *

+ 14 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/res/ProjectNumRes.java

@@ -0,0 +1,14 @@
+package com.siwei.apply.domain.res;
+
+import lombok.Data;
+
+/**
+ * 项目数量响应类
+ * 包含总数、单独选址项目数量和批次报批项目数量
+ */
+@Data
+public class ProjectNumRes {
+    private Integer total;
+    private Integer singleCount;
+    private Integer batchCount;
+}

+ 16 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/res/ProjectOverviewRes.java

@@ -0,0 +1,16 @@
+package com.siwei.apply.domain.res;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 项目概览响应类
+ * 用于展示项目的概览信息
+ */
+@Data
+public class ProjectOverviewRes {
+    private ProjectNumRes projectNum; // 项目数量信息
+    private List<ProjectProcessRes> projectProcessList; // 项目进度信息
+    private List<ProjectSupplyRes> projectSupplyList; // 项目供应信息
+}

+ 12 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/res/ProjectProcessRes.java

@@ -0,0 +1,12 @@
+package com.siwei.apply.domain.res;
+
+import lombok.Data;
+
+/**
+ * 项目进度响应类
+ */
+@Data
+public class ProjectProcessRes {
+    private String processName; // 进度名称
+    private String count; // 进度数量
+}

+ 14 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/res/ProjectSupplyRes.java

@@ -0,0 +1,14 @@
+package com.siwei.apply.domain.res;
+
+import lombok.Data;
+
+/**
+ * 项目供应情况
+ */
+@Data
+public class ProjectSupplyRes {
+    private String gdType;// 供地方式
+    private String gdUnit;// 供地单位
+    private Float gdArea; // 供地面积
+    private Integer count; // 供地数量
+}

+ 6 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/ProjectMapper.java

@@ -1,6 +1,7 @@
 package com.siwei.apply.mapper;
 
 import com.siwei.apply.domain.Project;
+import com.siwei.apply.domain.res.ProjectNumRes;
 import com.siwei.apply.domain.vo.ProjectFilterVo;
 import com.siwei.apply.domain.vo.ProjectUpdateVo;
 import org.apache.ibatis.annotations.Mapper;
@@ -53,4 +54,9 @@ public interface ProjectMapper {
      * 根据ID获取项目类型
      */
     Integer getProjectTypeById(String id);
+
+    /**
+     * 统计:返回 singleCount(1)、batchCount(2)、total
+     */
+    ProjectNumRes countTypeStats();
 }

+ 9 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/TdgyMapper.java

@@ -1,10 +1,13 @@
 package com.siwei.apply.mapper;
 
 import com.siwei.apply.domain.Tdgy;
+import com.siwei.apply.domain.res.ProjectSupplyRes;
 import com.siwei.apply.domain.vo.TdgyUpdateVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 // 土地供应 Mapper 接口
 @Mapper
 public interface TdgyMapper {
@@ -41,4 +44,10 @@ public interface TdgyMapper {
      * @param hasOnchain 是否已上链
      */
     void updateHasOnchain(@Param("id") String id, @Param("hasOnchain") Boolean hasOnchain);
+
+    /**
+     * 按 gd_type 统计数量和求和 gd_area
+     * 返回字段:gdType, count, gdArea
+     */
+    List<ProjectSupplyRes> countAndSumByGdType();
 }

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

@@ -1,6 +1,7 @@
 package com.siwei.apply.service;
 
 import com.siwei.apply.domain.Project;
+import com.siwei.apply.domain.res.ProjectOverviewRes;
 import com.siwei.apply.domain.vo.ProjectFilterVo;
 import com.siwei.apply.domain.vo.ProjectUpdateVo;
 import com.siwei.apply.domain.vo.ProjectVo;
@@ -51,4 +52,10 @@ public interface ProjectService {
      * @param ids 项目ID列表
      */
     void batchDelete(List<String> ids);
+
+    /**
+     * 获取项目概览信息
+     */
+    ProjectOverviewRes getOverview();
 }
+

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

@@ -1,10 +1,14 @@
 package com.siwei.apply.service.impl;
 
 import com.siwei.apply.domain.Project;
+import com.siwei.apply.domain.res.ProjectNumRes;
+import com.siwei.apply.domain.res.ProjectOverviewRes;
+import com.siwei.apply.domain.res.ProjectSupplyRes;
 import com.siwei.apply.domain.vo.ProjectFilterVo;
 import com.siwei.apply.domain.vo.ProjectUpdateVo;
 import com.siwei.apply.domain.vo.ProjectVo;
 import com.siwei.apply.mapper.ProjectMapper;
+import com.siwei.apply.mapper.TdgyMapper;
 import com.siwei.apply.service.ProjectService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -23,6 +27,8 @@ import static com.siwei.apply.common.Common.UserId;
 public class ProjectImpl implements ProjectService {
     @Autowired
     private ProjectMapper projectMapper;
+    @Autowired
+    private TdgyMapper tdgyMapper;
 
     @Override
     public String add(ProjectVo projectVo) {
@@ -76,4 +82,19 @@ public class ProjectImpl implements ProjectService {
 
         projectMapper.batchDelete(ids);
     }
+
+    @Override
+    public ProjectOverviewRes getOverview() {
+        ProjectOverviewRes projectOverviewRes = new ProjectOverviewRes();
+        // todo 根据人员/权限统计
+        // 获取项目数量
+        ProjectNumRes projectNumRes = projectMapper.countTypeStats();
+        projectOverviewRes.setProjectNum(projectNumRes);
+        // 获取项目供应
+        List<ProjectSupplyRes> projectSupplyList = tdgyMapper.countAndSumByGdType();
+        projectOverviewRes.setProjectSupplyList(projectSupplyList);
+        // 获取项目进度
+        return null;
+    }
 }
+

+ 9 - 0
siwei-modules/siwei-apply/src/main/resources/mapper/ProjectMapper.xml

@@ -83,4 +83,13 @@
         FROM t_project
         WHERE id = #{id}
     </select>
+
+    <!-- 单一方法:一次返回 1/2 和总数的统计结果 -->
+    <select id="countTypeStats" resultType="com.siwei.apply.domain.res.ProjectNumRes">
+        SELECT
+            SUM(CASE WHEN project_type = 1 THEN 1 ELSE 0 END) AS singleCount,
+            SUM(CASE WHEN project_type = 2 THEN 1 ELSE 0 END) AS batchCount,
+            COUNT(*) AS total
+        FROM t_project
+    </select>
 </mapper>

+ 19 - 0
siwei-modules/siwei-apply/src/main/resources/mapper/TdgyMapper.xml

@@ -76,4 +76,23 @@
         SET has_onchain = #{hasOnchain}, updated_at = now()
         WHERE id = #{id}
     </update>
+
+    <!-- 按 gd_type 统计数量与面积求和(面积统一换算成“亩”):返回 gdType, count, gdArea, gdUnit='亩' -->
+    <select id="countAndSumByGdType" resultType="com.siwei.apply.domain.res.ProjectSupplyRes">
+        SELECT
+            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')
+                    END
+                ), 0
+            ) AS gdArea
+        FROM t_tdgy
+        GROUP BY gd_type
+    </select>
 </mapper>