|
|
@@ -16,6 +16,7 @@
|
|
|
九防评估扁平化明细。
|
|
|
9 张九防表结构一致(elder_id / assessor / assess_date / risk_level / assess_score / tenant_id),
|
|
|
因此可用 UNION ALL 合并为一张「虚拟宽表」,再统一关联 elderly_info 补充长者档案,
|
|
|
+ 并沿床位链路关联 org_build_bed / org_build_room / org_build_floor / org_build 取得位置信息。
|
|
|
楼栋、楼层过滤与所有看板指标都基于这一次查询完成。
|
|
|
-->
|
|
|
<select id="selectAssessFlatList"
|
|
|
@@ -33,24 +34,36 @@
|
|
|
ei.elder_age AS elderAge,
|
|
|
ei.nurse_level_id AS nurseLevelId,
|
|
|
ei.nurse_level_name AS nurseLevelName,
|
|
|
- ei.build_id AS buildId,
|
|
|
- ei.build_name AS buildName,
|
|
|
- ei.floor_id AS floorId,
|
|
|
- ei.floor_name AS floorName,
|
|
|
- ei.bed_name AS bedName,
|
|
|
+ <!-- 楼栋、楼层的 id 与名称取自同一条关联链路,避免热力图分组键与展示名称对不上 -->
|
|
|
+ ob.id AS buildId,
|
|
|
+ ob.build_name AS buildName,
|
|
|
+ obf.id AS floorId,
|
|
|
+ obf.floor_name AS floorName,
|
|
|
+ obb.bed_name AS bedName,
|
|
|
ei.contract_number AS contractNumber
|
|
|
FROM (
|
|
|
<include refid="unionAllAssess"/>
|
|
|
) a
|
|
|
INNER JOIN elderly_info ei ON ei.id = a.elderId AND ei.deleted = 0
|
|
|
+ <!--
|
|
|
+ 楼栋、楼层、床位名称统一从各自的主表取,不使用 elderly_info 上冗余的
|
|
|
+ build_name / floor_name / bed_name,避免主表改名后看板展示到过期数据。
|
|
|
+ 沿用项目既有写法:从长者的 bed_id 出发,按 床位 -> 房间 -> 楼层 -> 楼栋 逐级关联,
|
|
|
+ 并带上 tenant_id 保证多租户隔离。一律用 LEFT JOIN,
|
|
|
+ 长者未分配床位时仍应计入统计,只是名称为空。
|
|
|
+ -->
|
|
|
+ LEFT JOIN org_build_bed obb ON obb.id = ei.bed_id AND obb.tenant_id = ei.tenant_id
|
|
|
+ LEFT JOIN org_build_room obr ON obr.id = obb.room_id AND obr.tenant_id = obb.tenant_id
|
|
|
+ LEFT JOIN org_build_floor obf ON obf.id = obr.floor_id AND obf.tenant_id = obr.tenant_id
|
|
|
+ LEFT JOIN org_build ob ON ob.id = obf.build_id AND ob.tenant_id = obf.tenant_id
|
|
|
<where>
|
|
|
- <!-- 楼栋过滤,不传即全部 -->
|
|
|
+ <!-- 楼栋过滤,不传即全部;与展示口径一致,走床位关联链路而非 elderly_info 冗余字段 -->
|
|
|
<if test="reqVO.buildId != null">
|
|
|
- AND ei.build_id = #{reqVO.buildId}
|
|
|
+ AND obf.build_id = #{reqVO.buildId}
|
|
|
</if>
|
|
|
<!-- 楼层过滤,不传即全部 -->
|
|
|
<if test="reqVO.floorId != null">
|
|
|
- AND ei.floor_id = #{reqVO.floorId}
|
|
|
+ AND obr.floor_id = #{reqVO.floorId}
|
|
|
</if>
|
|
|
<!-- 仅统计在住长者 -->
|
|
|
AND ei.in_status = 1
|
|
|
@@ -115,12 +128,16 @@
|
|
|
THEN 1 ELSE 0 END) AS signedCount
|
|
|
FROM elderly_risk_disclosure_statement t
|
|
|
INNER JOIN elderly_info ei ON ei.id = t.elder_id AND ei.deleted = 0
|
|
|
+ <!-- 楼栋、楼层过滤口径与 selectAssessFlatList 保持一致,同样走床位关联链路 -->
|
|
|
+ LEFT JOIN org_build_bed obb ON obb.id = ei.bed_id AND obb.tenant_id = ei.tenant_id
|
|
|
+ LEFT JOIN org_build_room obr ON obr.id = obb.room_id AND obr.tenant_id = obb.tenant_id
|
|
|
+ LEFT JOIN org_build_floor obf ON obf.id = obr.floor_id AND obf.tenant_id = obr.tenant_id
|
|
|
<where>
|
|
|
<if test="reqVO.buildId != null">
|
|
|
- AND ei.build_id = #{reqVO.buildId}
|
|
|
+ AND obf.build_id = #{reqVO.buildId}
|
|
|
</if>
|
|
|
<if test="reqVO.floorId != null">
|
|
|
- AND ei.floor_id = #{reqVO.floorId}
|
|
|
+ AND obr.floor_id = #{reqVO.floorId}
|
|
|
</if>
|
|
|
AND ei.in_status = 1
|
|
|
<include refid="tenantFilter"/>
|