fix: 优化过鱼到数统计逻辑
This commit is contained in:
parent
de8409bde4
commit
abb685258c
@ -21,25 +21,64 @@
|
|||||||
|
|
||||||
<sql id="statisticsQuery">
|
<sql id="statisticsQuery">
|
||||||
WITH
|
WITH
|
||||||
|
active_rivers AS (
|
||||||
|
SELECT
|
||||||
|
RVCD,
|
||||||
|
RVNM,
|
||||||
|
PRVCD,
|
||||||
|
GRD,
|
||||||
|
PATH,
|
||||||
|
ORDER_INDEX
|
||||||
|
FROM SD_RVCD_DIC
|
||||||
|
WHERE NVL(ENABLED, 1) = 1
|
||||||
|
AND NVL(IS_DELETED, 0) = 0
|
||||||
|
),
|
||||||
|
|
||||||
|
river_display AS (
|
||||||
|
SELECT
|
||||||
|
d.RVCD,
|
||||||
|
d.RVNM,
|
||||||
|
d.PRVCD,
|
||||||
|
d.GRD,
|
||||||
|
d.PATH,
|
||||||
|
d.ORDER_INDEX,
|
||||||
|
LTRIM(SYS_CONNECT_BY_PATH(d.RVNM, '-'), '-') AS BASIN_NAME,
|
||||||
|
SYS_CONNECT_BY_PATH(LPAD(NVL(d.ORDER_INDEX, 999999999), 10, '0'), '/') AS BASIN_ORDER_PATH
|
||||||
|
FROM active_rivers d
|
||||||
|
START WITH d.PRVCD IS NULL OR d.PRVCD = '' OR d.PRVCD = '0'
|
||||||
|
CONNECT BY PRIOR d.RVCD = d.PRVCD
|
||||||
|
ORDER SIBLINGS BY d.ORDER_INDEX ASC, d.RVCD ASC
|
||||||
|
),
|
||||||
|
|
||||||
|
river_relation AS (
|
||||||
|
SELECT
|
||||||
|
CONNECT_BY_ROOT d.RVCD AS ROOT_RVCD,
|
||||||
|
d.RVCD AS DESC_RVCD
|
||||||
|
FROM active_rivers d
|
||||||
|
START WITH d.PRVCD IS NULL OR d.PRVCD = '' OR d.PRVCD = '0'
|
||||||
|
CONNECT BY PRIOR d.RVCD = d.PRVCD
|
||||||
|
),
|
||||||
|
|
||||||
user_scope_detail AS (
|
user_scope_detail AS (
|
||||||
SELECT DISTINCT
|
SELECT DISTINCT
|
||||||
su.ID AS USER_ID,
|
su.ID AS USER_ID,
|
||||||
e.STCD AS STATION_CODE,
|
e.STCD AS STATION_CODE,
|
||||||
h.HBRVCD AS BASIN_CODE,
|
r.RVCD AS BASIN_CODE,
|
||||||
h.HBRVNM AS BASIN_NAME,
|
r.BASIN_NAME AS BASIN_NAME,
|
||||||
e.ENNM AS STATION_NAME
|
e.ENNM AS STATION_NAME,
|
||||||
FROM QGC_REFA.SYS_USER su
|
r.BASIN_ORDER_PATH AS BASIN_ORDER_PATH
|
||||||
JOIN QGC_REFA.SYS_USER_DATA_SCOPE sud
|
FROM SYS_USER su
|
||||||
|
JOIN SYS_USER_DATA_SCOPE sud
|
||||||
ON su.ID = sud.USER_ID
|
ON su.ID = sud.USER_ID
|
||||||
AND sud.STATUS = 1
|
AND sud.STATUS = 1
|
||||||
AND sud.ORG_TYPE = 'HBRVCD'
|
AND sud.ORG_TYPE IN ('RVCD', 'HBRVCD')
|
||||||
JOIN QGC_REFA.SD_HBRV_DIC h
|
JOIN river_relation rr
|
||||||
ON sud.ORG_ID = h.HBRVCD
|
ON sud.ORG_ID = rr.ROOT_RVCD
|
||||||
AND h.ENABLED = 1
|
JOIN SD_ENGINFO_B_H e
|
||||||
AND h.IS_DELETED = 0
|
ON e.REACHCD = rr.DESC_RVCD
|
||||||
JOIN QGC_REFA.SD_ENGINFO_B_H e
|
|
||||||
ON e.HBRVCD = h.HBRVCD
|
|
||||||
AND e.USFL = 1
|
AND e.USFL = 1
|
||||||
|
JOIN river_display r
|
||||||
|
ON e.REACHCD = r.RVCD
|
||||||
WHERE su.STATUS = 1
|
WHERE su.STATUS = 1
|
||||||
AND su.REG_STATUS IN ('PENDING', 'APPROVED', 'REJECTED')
|
AND su.REG_STATUS IN ('PENDING', 'APPROVED', 'REJECTED')
|
||||||
|
|
||||||
@ -48,21 +87,20 @@
|
|||||||
SELECT DISTINCT
|
SELECT DISTINCT
|
||||||
su.ID AS USER_ID,
|
su.ID AS USER_ID,
|
||||||
e.STCD AS STATION_CODE,
|
e.STCD AS STATION_CODE,
|
||||||
h.HBRVCD AS BASIN_CODE,
|
r.RVCD AS BASIN_CODE,
|
||||||
h.HBRVNM AS BASIN_NAME,
|
r.BASIN_NAME AS BASIN_NAME,
|
||||||
e.ENNM AS STATION_NAME
|
e.ENNM AS STATION_NAME,
|
||||||
FROM QGC_REFA.SYS_USER su
|
r.BASIN_ORDER_PATH AS BASIN_ORDER_PATH
|
||||||
JOIN QGC_REFA.SYS_USER_DATA_SCOPE sud
|
FROM SYS_USER su
|
||||||
|
JOIN SYS_USER_DATA_SCOPE sud
|
||||||
ON su.ID = sud.USER_ID
|
ON su.ID = sud.USER_ID
|
||||||
AND sud.STATUS = 1
|
AND sud.STATUS = 1
|
||||||
AND sud.ORG_TYPE = 'STATION'
|
AND sud.ORG_TYPE = 'STATION'
|
||||||
JOIN QGC_REFA.SD_ENGINFO_B_H e
|
JOIN SD_ENGINFO_B_H e
|
||||||
ON sud.ORG_ID = e.STCD
|
ON sud.ORG_ID = e.STCD
|
||||||
AND e.USFL = 1
|
AND e.USFL = 1
|
||||||
JOIN QGC_REFA.SD_HBRV_DIC h
|
JOIN river_display r
|
||||||
ON e.HBRVCD = h.HBRVCD
|
ON e.REACHCD = r.RVCD
|
||||||
AND h.ENABLED = 1
|
|
||||||
AND h.IS_DELETED = 0
|
|
||||||
WHERE su.STATUS = 1
|
WHERE su.STATUS = 1
|
||||||
AND su.REG_STATUS IN ('PENDING', 'APPROVED', 'REJECTED')
|
AND su.REG_STATUS IN ('PENDING', 'APPROVED', 'REJECTED')
|
||||||
),
|
),
|
||||||
@ -81,7 +119,7 @@
|
|||||||
),
|
),
|
||||||
|
|
||||||
distinct_basins AS (
|
distinct_basins AS (
|
||||||
SELECT DISTINCT USER_ID,BASIN_CODE, BASIN_NAME
|
SELECT DISTINCT USER_ID, BASIN_CODE, BASIN_NAME, BASIN_ORDER_PATH
|
||||||
FROM user_scope_detail
|
FROM user_scope_detail
|
||||||
WHERE USER_ID IN (SELECT USER_ID FROM filtered_users)
|
WHERE USER_ID IN (SELECT USER_ID FROM filtered_users)
|
||||||
),
|
),
|
||||||
@ -96,11 +134,12 @@
|
|||||||
SELECT
|
SELECT
|
||||||
USER_ID,
|
USER_ID,
|
||||||
RTRIM(
|
RTRIM(
|
||||||
XMLAGG(XMLELEMENT(E, BASIN_NAME || ',') ORDER BY BASIN_NAME)
|
XMLAGG(XMLELEMENT(E, BASIN_NAME || ',') ORDER BY BASIN_ORDER_PATH, BASIN_CODE)
|
||||||
.EXTRACT('//text()').GETCLOBVAL(),
|
.EXTRACT('//text()').GETCLOBVAL(),
|
||||||
','
|
','
|
||||||
) AS BASIN_NAMES,
|
) AS BASIN_NAMES,
|
||||||
MIN(BASIN_CODE) AS MIN_BASIN_CODE -- 辅助排序字段(VARCHAR2)
|
MIN(BASIN_CODE) AS MIN_BASIN_CODE,
|
||||||
|
MIN(BASIN_ORDER_PATH) AS MIN_BASIN_ORDER_PATH
|
||||||
FROM distinct_basins
|
FROM distinct_basins
|
||||||
GROUP BY USER_ID
|
GROUP BY USER_ID
|
||||||
),
|
),
|
||||||
@ -125,7 +164,7 @@
|
|||||||
MIN(STRDT) AS MIN_STRDT,
|
MIN(STRDT) AS MIN_STRDT,
|
||||||
MAX(STRDT) AS MAX_ENDDT,
|
MAX(STRDT) AS MAX_ENDDT,
|
||||||
SUM(FCNT) AS TOTAL_FCNT
|
SUM(FCNT) AS TOTAL_FCNT
|
||||||
FROM QGC_REFA.FISH_DRAFT_DATA
|
FROM FISH_DRAFT_DATA
|
||||||
WHERE DELETED_FLAG = 0
|
WHERE DELETED_FLAG = 0
|
||||||
AND STATUS IN ('PENDING','APPROVED')
|
AND STATUS IN ('PENDING','APPROVED')
|
||||||
GROUP BY CREATED_BY, TO_CHAR(STRDT, 'YYYY-MM')
|
GROUP BY CREATED_BY, TO_CHAR(STRDT, 'YYYY-MM')
|
||||||
@ -140,7 +179,10 @@
|
|||||||
su.REAL_NAME,
|
su.REAL_NAME,
|
||||||
su.PHONE,
|
su.PHONE,
|
||||||
su.NICKNAME || '/' || su.PHONE AS CONTACT,
|
su.NICKNAME || '/' || su.PHONE AS CONTACT,
|
||||||
|
ba.MIN_BASIN_CODE AS BASIN_CODE,
|
||||||
|
sa.MIN_STATION_CODE AS STATION_CODE,
|
||||||
ba.MIN_BASIN_CODE,
|
ba.MIN_BASIN_CODE,
|
||||||
|
ba.MIN_BASIN_ORDER_PATH,
|
||||||
sa.MIN_STATION_CODE,
|
sa.MIN_STATION_CODE,
|
||||||
ba.BASIN_NAMES,
|
ba.BASIN_NAMES,
|
||||||
sa.STATION_NAMES,
|
sa.STATION_NAMES,
|
||||||
@ -150,7 +192,7 @@
|
|||||||
fm.TOTAL_FCNT,
|
fm.TOTAL_FCNT,
|
||||||
CASE WHEN fm.CREATED_BY IS NOT NULL THEN 1 ELSE 0 END AS HAS_DATA
|
CASE WHEN fm.CREATED_BY IS NOT NULL THEN 1 ELSE 0 END AS HAS_DATA
|
||||||
FROM all_users u
|
FROM all_users u
|
||||||
JOIN QGC_REFA.SYS_USER su
|
JOIN SYS_USER su
|
||||||
ON u.USER_ID = su.ID
|
ON u.USER_ID = su.ID
|
||||||
LEFT JOIN basin_agg ba
|
LEFT JOIN basin_agg ba
|
||||||
ON u.USER_ID = ba.USER_ID
|
ON u.USER_ID = ba.USER_ID
|
||||||
@ -180,10 +222,10 @@
|
|||||||
SELECT * FROM (
|
SELECT * FROM (
|
||||||
SELECT
|
SELECT
|
||||||
t.*,
|
t.*,
|
||||||
ROW_NUMBER() OVER (ORDER BY t.MIN_BASIN_CODE,t.MIN_STATION_CODE,t.REPORT_MONTH,t.MIN_STRDT) AS rn
|
ROW_NUMBER() OVER (ORDER BY t.MIN_BASIN_ORDER_PATH,t.MIN_STATION_CODE,t.REPORT_MONTH,t.MIN_STRDT) AS rn
|
||||||
FROM (
|
FROM (
|
||||||
<include refid="statisticsQuery"/>
|
<include refid="statisticsQuery"/>
|
||||||
) t ORDER BY t.MIN_BASIN_CODE,t.MIN_STATION_CODE,t.REPORT_MONTH,t.MIN_STRDT
|
) t ORDER BY t.MIN_BASIN_ORDER_PATH,t.MIN_STATION_CODE,t.REPORT_MONTH,t.MIN_STRDT
|
||||||
) WHERE rn BETWEEN #{startRow}+1 AND #{endRow}
|
) WHERE rn BETWEEN #{startRow}+1 AND #{endRow}
|
||||||
</select>
|
</select>
|
||||||
<select id="countStatistics" resultType="int">
|
<select id="countStatistics" resultType="int">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user