zcloud-gbs-primeport/web-infrastructure/src/main/resources/mapper/ClosedAreaMapper.xml

124 lines
4.8 KiB
XML
Raw Normal View History

<?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.zcloud.primeport.persistence.mapper.ClosedAreaMapper">
<select id="getCountByHgAuthArea" resultType="com.zcloud.primeport.persistence.dataobject.ClosedAreaDO">
SELECT
2026-03-20 16:30:58 +08:00
dic.dict_label hg_auth_area_name,
dic.dict_value hg_auth_area,
IFNULL(tmp.totalChildAreasCount,0) total_area_count,
IFNULL(tmp.totalCorpCount,0) total_corp_count
FROM
`jjb-saas-config`.`conf_dict_tree` dic
LEFT JOIN (
SELECT
ca.hg_auth_area,
COUNT( ca.id ) totalChildAreasCount,
COUNT( DISTINCT ca.jurisdictional_corp_id ) totalCorpCount
FROM
`closed_area` ca
WHERE
ca.delete_enum = 'FALSE'
GROUP BY
ca.hg_auth_area) tmp on CONVERT(tmp.hg_auth_area USING utf8mb4) = CONVERT( dic.dict_value USING utf8mb4)
WHERE
dic.parent_id = ( SELECT id FROM `jjb-saas-config`.`conf_dict_tree` dicp WHERE dicp.dict_value = 'HG_AUTH_AREA' AND dicp.delete_enum = 'FALSE' )
AND dic.delete_enum = 'FALSE'
AND dic.dict_value != 'QHD_GQ_DXGQ'
ORDER BY dic.id
</select>
<select id="listPage" resultType="com.zcloud.primeport.persistence.dataobject.ClosedAreaDO">
SELECT
c.*,
CASE
WHEN COUNT( child.id ) > 0 THEN
1 ELSE 2
END AS has_child
FROM
closed_area c
LEFT JOIN closed_area child ON c.id = child.parent_id
AND child.delete_enum = 'FALSE'
WHERE
c.delete_enum = 'FALSE'
2026-03-20 16:14:27 +08:00
<if test="params.parentId != null">
AND c.parent_id = #{params.parentId}
</if>
2026-07-03 15:01:43 +08:00
<if test="params.closedArea != null">
AND c.hg_auth_area = #{params.closedArea}
</if>
2026-03-20 16:35:50 +08:00
<if test="params.hgAuthArea != null and params.hgAuthArea != ''">
AND C.hg_auth_area = #{params.hgAuthArea}
</if>
2026-03-20 16:14:27 +08:00
<if test="params.closedAreaName != null and params.closedAreaName != ''">
AND C.closed_area_name LIKE CONCAT('%', #{params.closedAreaName}, '%')
</if>
GROUP BY
c.id
ORDER BY
c.id
</select>
2026-07-02 08:47:43 +08:00
<select id="listCount" resultType="com.zcloud.primeport.persistence.dataobject.ClosedAreaCountDO">
SELECT
c.*,
CASE WHEN child_cnt > 0 THEN 1 ELSE 2 END AS has_child,
IFNULL(person_cnt, 0) AS person_count,
IFNULL(car_cnt, 0) AS car_count
FROM
closed_area c
LEFT JOIN (
SELECT parent_id, COUNT(id) child_cnt
FROM closed_area
WHERE delete_enum = 'FALSE'
GROUP BY parent_id
) child ON c.id = child.parent_id
-- 人员申请数量预统计
LEFT JOIN (
SELECT closed_area_id, COUNT(DISTINCT id) person_cnt
FROM closed_area_person_apply
WHERE delete_enum = 'FALSE'
GROUP BY closed_area_id
) cpa ON c.id = cpa.closed_area_id
-- 车辆申请数量预统计
LEFT JOIN (
SELECT closed_area_id, COUNT(DISTINCT id) car_cnt
FROM closed_area_car_apply
WHERE delete_enum = 'FALSE'
GROUP BY closed_area_id
) cca ON c.id = cca.closed_area_id
WHERE
c.delete_enum = 'FALSE'
<if test="params.corpId != null">
AND c.tenant_id = #{params.corpId}
</if>
<if test="params.parentId != null">
AND c.parent_id = #{params.parentId}
</if>
<if test="params.closedAreaName != null and params.closedAreaName != ''">
AND C.closed_area_name LIKE CONCAT('%', #{params.closedAreaName}, '%')
</if>
GROUP BY
c.id
ORDER BY
c.id
</select>
<select id="corpStat" resultType="com.zcloud.primeport.persistence.dataobject.ClosedAreaCorpStatDO">
SELECT
IFNULL(COUNT(DISTINCT ca.id), 0) AS closed_area_count,
IFNULL(COUNT(DISTINCT CASE WHEN mp.passage_type = 'HGKM_MKMJ_PASSAGE_TYPE_CAR' THEN mp.id END), 0) AS car_passage_count,
IFNULL(COUNT(DISTINCT CASE WHEN mp.passage_type = 'HGKM_MKMJ_PASSAGE_TYPE_CAR_R' THEN mp.id END), 0) AS person_passage_count
FROM closed_area ca
LEFT JOIN mkmj m ON ca.id = m.closed_area_id AND m.delete_enum = 'FALSE'
LEFT JOIN mkmj_passage mp ON m.id = mp.mkmj_id AND mp.delete_enum = 'FALSE'
WHERE ca.delete_enum = 'FALSE'
<if test="params.corpinfoId != null">
AND ca.jurisdictional_corp_id = #{params.corpinfoId}
</if>
</select>
</mapper>