实现区级指标、小班属性和媒体接口

This commit is contained in:
2025-11-27 16:13:40 +08:00
parent 264236c74a
commit ffcadd7818
14 changed files with 542 additions and 210 deletions

View File

@@ -6,20 +6,26 @@
<mapper namespace="com.whu.edu.LyStatistic.MapLyStatistic.Mapper.InfoMapper">
<select id="findByDistrict" resultType="com.whu.edu.LyStatistic.MapLyStatistic.Dto.UnitInfo">
SELECT task_name, schema_code, unit_name, district, village
FROM public.unit_info
SELECT task_name, unit_name, district, village
FROM merged.roottable1_merged
WHERE district = #{district}
</select>
<select id="findByVillage" resultType="com.whu.edu.LyStatistic.MapLyStatistic.Dto.UnitInfo">
SELECT task_name, schema_code, unit_name, district, village
FROM public.unit_info
SELECT task_name,unit_name, district, village
FROM merged.roottable1_merged
WHERE village = #{village}
</select>
<select id="findAll" resultType="com.whu.edu.LyStatistic.MapLyStatistic.Dto.UnitInfo">
SELECT task_name, schema_code, unit_name, district, village
FROM public.unit_info
SELECT district, village
FROM merged.roottable1_merged
</select>
<select id="findAllRegion" resultType="com.whu.edu.LyStatistic.MapLyStatistic.Dto.UnitInfo">
SELECT region, regionid
FROM region
</select>
</mapper>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.whu.edu.LyStatistic.MapLyStatistic.Mapper.PlotMapper">
<select id="findPlotAttributes" resultType="com.whu.edu.LyStatistic.MapLyStatistic.Dto.PlotAttrDTO">
SELECT *
FROM merged.roottable1_merged
WHERE "NYXBH" = #{nyxbh} AND "XIANG" = #{xiang}
LIMIT 1
</select>
<select id="findMediaPaths" resultType="string">
SELECT media_path
FROM merged.roottable1_media_merged
WHERE "id" = #{id}
AND "database_name" = #{databaseName}
ORDER BY media_path
</select>
</mapper>

View File

@@ -5,13 +5,56 @@
<mapper namespace="com.whu.edu.LyStatistic.MapLyStatistic.Mapper.TaskCommonMapper">
<!--
<!--按区
统计图斑信息:
- plotCount: 图斑数量
- totalArea: 图斑面积汇总 (XBMJ)
- 各状态数量 (-1,0,1,2)
-->
<select id="selectPlotStats" resultType="com.whu.edu.LyStatistic.MapLyStatistic.Dto.PlotStatsDTO">
<!-- <select id="selectPlotStatsByDistrict" resultType="com.whu.edu.LyStatistic.MapLyStatistic.Dto.PlotStatsDTO">-->
<!-- SELECT-->
<!-- COUNT(*) AS plotCount,-->
<!-- COALESCE(SUM("XBMJ"), 0) AS totalArea,-->
<!-- COALESCE(SUM(CASE WHEN "status" = -1 THEN 1 ELSE 0 END), 0) AS unPassedCount,-->
<!-- COALESCE(SUM(CASE WHEN "status" = 0 THEN 1 ELSE 0 END), 0) AS assignedCount,-->
<!-- COALESCE(SUM(CASE WHEN "status" = 1 THEN 1 ELSE 0 END), 0) AS collectedCount,-->
<!-- COALESCE(SUM(CASE WHEN "status" = 2 THEN 1 ELSE 0 END), 0) AS approvedCount-->
<!-- FROM merged.roottable1_merged-->
<!-- WHERE district = #{district}-->
<!-- </select>-->
<select id="selectPlotStatsByDistrict"
resultType="com.whu.edu.LyStatistic.MapLyStatistic.Dto.PlotStatsDTO">
SELECT
r.region AS district,
-- 统计总行数plotCount
COUNT(*) AS plotCount,
-- 面积求和XBMJ 是 text需要转 numeric
COALESCE(SUM(NULLIF(m."XBMJ", '')::numeric), 0) AS totalArea,
-- status 也是 text因此必须先转 integer
COALESCE(SUM(CASE WHEN m."status"::int = -1 THEN 1 ELSE 0 END), 0) AS unPassedCount,
COALESCE(SUM(CASE WHEN m."status"::int = 0 THEN 1 ELSE 0 END), 0) AS assignedCount,
COALESCE(SUM(CASE WHEN m."status"::int = 1 THEN 1 ELSE 0 END), 0) AS collectedCount,
COALESCE(SUM(CASE WHEN m."status"::int = 2 THEN 1 ELSE 0 END), 0) AS approvedCount
FROM merged.roottable1_merged m
JOIN region r
ON substring(m."CUN", 1, 6) = r.regionid::text
GROUP BY r.region
ORDER BY r.region
</select>
<!--按街道
统计图斑信息:
- plotCount: 图斑数量
- totalArea: 图斑面积汇总 (XBMJ)
- 各状态数量 (-1,0,1,2)
-->
<select id="selectPlotStatsByStreet" resultType="com.whu.edu.LyStatistic.MapLyStatistic.Dto.PlotStatsDTO">
SELECT
COUNT(*) AS plotCount,
COALESCE(SUM("XBMJ"), 0) AS totalArea,
@@ -19,7 +62,8 @@
COALESCE(SUM(CASE WHEN "status" = 0 THEN 1 ELSE 0 END), 0) AS assignedCount,
COALESCE(SUM(CASE WHEN "status" = 1 THEN 1 ELSE 0 END), 0) AS collectedCount,
COALESCE(SUM(CASE WHEN "status" = 2 THEN 1 ELSE 0 END), 0) AS approvedCount
FROM "${schema}".roottable1
FROM merged.roottable1_merged
WHERE village = #{village}
</select>