210 lines
12 KiB
XML
210 lines
12 KiB
XML
<?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.mhd.bi.domain.biPlatformRealData.repository.mapper.BiPlatformRealDataMapper">
|
||
|
||
<!-- 作业车辆状态列表(vehicles):仅查询预约日期是今天(TARGET_DATE)的车辆
|
||
plateNumber <- qms_main_business.CAR_NO
|
||
status <- qms_main_business.FLOW_STATUS
|
||
platformId <- qms_main_business.WINDOW_NAME(叫号月台,主业务表直接有)
|
||
platformDuration <- qms_main_business.EXIT_TIME - ENTRY_TIME(分钟)
|
||
appointmentTime <- qms_main_business.CREATE_TIME
|
||
workFloor <- qms_window_info.PLATFORM_FLOOR(按 WINDOW_NAME 关联)
|
||
-->
|
||
<select id="queryVehicles" resultType="com.mhd.bi.domain.biPlatformRealData.repository.po.RealPlatformVehiclePO">
|
||
SELECT
|
||
mb.CAR_NO AS plateNumber,
|
||
mb.FLOW_STATUS AS status,
|
||
mb.WINDOW_NAME AS platformId,
|
||
CASE
|
||
WHEN mb.EXIT_TIME IS NOT NULL AND mb.ENTRY_TIME IS NOT NULL
|
||
THEN CAST((mb.EXIT_TIME - mb.ENTRY_TIME) * 24 * 60 AS BIGINT)
|
||
ELSE 0
|
||
END AS platformDuration,
|
||
TO_CHAR(mb.CREATE_TIME, 'YYYY-MM-DD HH24:MI:SS') AS appointmentTime,
|
||
wi.PLATFORM_FLOOR AS workFloor
|
||
FROM NGWL_TEST_YMS.QMS_MAIN_BUSINESS mb
|
||
LEFT JOIN NGWL_TEST_YMS.QMS_WINDOW_INFO wi
|
||
ON wi.WINDOW_NAME = mb.WINDOW_NAME
|
||
WHERE mb.TARGET_DATE IS NOT NULL
|
||
AND TRUNC(mb.TARGET_DATE) = TRUNC(SYSDATE)
|
||
ORDER BY mb.CREATE_TIME DESC
|
||
</select>
|
||
|
||
<!-- 月台概览:totalPlatforms(总条数)、operatingPlatforms(作业状态=占用,JOB_STATUS: 0空闲 1占用) -->
|
||
<select id="queryPlatformOverview" resultType="com.mhd.bi.domain.biPlatformRealData.repository.po.RealPlatformOverviewPO">
|
||
SELECT
|
||
COUNT(1) AS totalPlatforms,
|
||
SUM(CASE WHEN JOB_STATUS = 1 THEN 1 ELSE 0 END) AS operatingPlatforms
|
||
FROM NGWL_TEST_YMS.QMS_WINDOW_INFO
|
||
</select>
|
||
|
||
<!-- 今日作业任务:按预约时间 TARGET_DATE(今日)统计主业务记录数 -->
|
||
<select id="countTodayTasks" resultType="java.lang.Long">
|
||
SELECT COUNT(1)
|
||
FROM NGWL_TEST_YMS.QMS_MAIN_BUSINESS
|
||
WHERE TARGET_DATE IS NOT NULL
|
||
AND TRUNC(TARGET_DATE) = TRUNC(SYSDATE)
|
||
</select>
|
||
|
||
<!-- 今日作业准时率统计:
|
||
total 今日有入场时间的预约车辆数(ENTRY_TIME 不为空 且 TARGET_DATE = 今天)
|
||
onTimeCount 今日准时车辆数(实际进入时间 < 预约日期 + 预约结束时间 BOOKING_END_TIME,即 ENTRY_TIME < TRUNC(TARGET_DATE) + 预约时段结束时分)
|
||
「准时率 = 今日准时车辆数 / 今日有入场时间的车辆数 × 100%(四舍五入取整);分子分母都只统计有入场时间的车辆」
|
||
BOOKING_END_TIME 存纯时分(如 18:30),故用 TO_DATE 解析后取其时分间隔加到 TARGET_DATE 上
|
||
-->
|
||
<select id="queryTodayOnTimeStats" resultType="com.mhd.bi.domain.biPlatformRealData.repository.po.RealOnTimeStatPO">
|
||
SELECT
|
||
SUM(CASE WHEN ENTRY_TIME IS NOT NULL
|
||
AND TARGET_DATE IS NOT NULL
|
||
AND TRUNC(TARGET_DATE) = TRUNC(SYSDATE) THEN 1 ELSE 0 END) AS total,
|
||
SUM(CASE WHEN ENTRY_TIME IS NOT NULL
|
||
AND TRUNC(TARGET_DATE) = TRUNC(SYSDATE)
|
||
AND ENTRY_TIME < TRUNC(TARGET_DATE)
|
||
+ (TO_DATE(BOOKING_END_TIME, 'HH24:MI') - TRUNC(TO_DATE(BOOKING_END_TIME, 'HH24:MI')))
|
||
THEN 1 ELSE 0 END) AS onTimeCount
|
||
FROM NGWL_TEST_YMS.QMS_MAIN_BUSINESS
|
||
</select>
|
||
|
||
<!-- 车辆状态统计:今日的统计(按创建时间 CREATE_TIME / 流程状态)
|
||
todayReservedVehicles 改为按预约日期 TARGET_DATE(其它 3 项保持 CREATE_TIME)
|
||
waiting 等待作业:FLOW_STATUS IN ('1','2','3') 已预约/已签到/已叫号 且 预约日期 = 今天
|
||
callStatusTotal 叫号状态合计:已签到 + 已叫号 + 已过号 = FLOW_STATUS IN ('2','3','4') 且 预约日期 = 今天
|
||
FLOW_STATUS: 1已预约 2已签到 3已叫号 4已过号 5已进场 6已称重 7已装车 8二次称重 9已结算 10已还卡 11已出场 12已取消 -->
|
||
<select id="queryVehicleStatusToday" resultType="com.mhd.bi.domain.biPlatformRealData.repository.po.RealVehicleStatusPO">
|
||
SELECT
|
||
SUM(CASE WHEN TRUNC(TARGET_DATE) = TRUNC(SYSDATE) THEN 1 ELSE 0 END) AS todayReservedVehicles,
|
||
SUM(CASE WHEN FLOW_STATUS = '1' AND TRUNC(CREATE_TIME) = TRUNC(SYSDATE) THEN 1 ELSE 0 END) AS notCheckedIn,
|
||
SUM(CASE WHEN FLOW_STATUS IN ('1','2','3') AND TRUNC(TARGET_DATE) = TRUNC(SYSDATE) THEN 1 ELSE 0 END) AS waiting,
|
||
SUM(CASE WHEN FLOW_STATUS IN ('2','3','4') AND TRUNC(TARGET_DATE) = TRUNC(SYSDATE) THEN 1 ELSE 0 END) AS callStatusTotal,
|
||
SUM(CASE WHEN FLOW_STATUS IN ('5','6','7','8','9','10') AND TRUNC(CREATE_TIME) = TRUNC(SYSDATE) THEN 1 ELSE 0 END) AS operatingVehicles,
|
||
SUM(CASE WHEN FLOW_STATUS = '11' AND TRUNC(CREATE_TIME) = TRUNC(SYSDATE) THEN 1 ELSE 0 END) AS completedVehicles
|
||
FROM NGWL_TEST_YMS.QMS_MAIN_BUSINESS
|
||
</select>
|
||
|
||
|
||
|
||
<!-- 本月任务量:按预约日期 TARGET_DATE(Y预约日期)统计本月预约总数量 -->
|
||
<select id="countMonthTasks" resultType="java.lang.Long">
|
||
SELECT COUNT(1)
|
||
FROM NGWL_TEST_YMS.QMS_MAIN_BUSINESS
|
||
WHERE TARGET_DATE IS NOT NULL
|
||
AND TO_CHAR(TARGET_DATE, 'YYYY-MM') = TO_CHAR(SYSDATE, 'YYYY-MM')
|
||
</select>
|
||
|
||
<!-- 本月任务平均作业时长 / 完成率统计:
|
||
avgDurationHours 平均时长(小时)= AVG((EXIT_TIME - ENTRY_TIME) * 24)
|
||
仅 ENTRY_TIME 与 EXIT_TIME 都不为空时参与;
|
||
durationCount 参与平均时长统计的有效条数;
|
||
completedCount 本月(TARGET_DATE)已出场(EXIT_TIME IS NOT NULL)的数量;
|
||
totalCount 本月(TARGET_DATE)预约总数量。
|
||
-->
|
||
<select id="queryMonthTaskStats" resultType="com.mhd.bi.domain.biPlatformRealData.repository.po.RealMonthlyTaskDurationPO">
|
||
SELECT
|
||
AVG(CASE WHEN ENTRY_TIME IS NOT NULL AND EXIT_TIME IS NOT NULL
|
||
THEN (EXIT_TIME - ENTRY_TIME) * 24
|
||
END) AS avgDurationHours,
|
||
SUM(CASE WHEN ENTRY_TIME IS NOT NULL AND EXIT_TIME IS NOT NULL
|
||
AND TO_CHAR(ENTRY_TIME, 'YYYY-MM') = TO_CHAR(SYSDATE, 'YYYY-MM')
|
||
THEN 1 ELSE 0 END) AS durationCount,
|
||
SUM(CASE WHEN EXIT_TIME IS NOT NULL
|
||
AND TARGET_DATE IS NOT NULL
|
||
AND TO_CHAR(TARGET_DATE, 'YYYY-MM') = TO_CHAR(SYSDATE, 'YYYY-MM')
|
||
THEN 1 ELSE 0 END) AS completedCount,
|
||
SUM(CASE WHEN TARGET_DATE IS NOT NULL
|
||
AND TO_CHAR(TARGET_DATE, 'YYYY-MM') = TO_CHAR(SYSDATE, 'YYYY-MM')
|
||
THEN 1 ELSE 0 END) AS totalCount
|
||
FROM NGWL_TEST_YMS.QMS_MAIN_BUSINESS
|
||
</select>
|
||
|
||
<!-- 今日预约-业务类型统计:按 BUSINESS_NAME(业务类型名称)分组统计今日预约数量,按预约日期 TARGET_DATE 过滤 -->
|
||
<select id="queryTodayBusinessTypeStats" resultType="com.mhd.bi.domain.biPlatformRealData.repository.po.RealBusinessTypeStatPO">
|
||
SELECT
|
||
BUSINESS_NAME AS businessName,
|
||
COUNT(1) AS count
|
||
FROM NGWL_TEST_YMS.QMS_MAIN_BUSINESS
|
||
WHERE BUSINESS_NAME IS NOT NULL
|
||
AND TRUNC(TARGET_DATE) = TRUNC(SYSDATE)
|
||
GROUP BY BUSINESS_NAME
|
||
ORDER BY COUNT(1) DESC
|
||
</select>
|
||
|
||
<!-- 月台监控-按楼层统计:楼层从叫号月台 WINDOW_NAME 解析(如 S1-01 / N1-02 -> F1),不依赖字母前缀,只取 - 前面那段的数字
|
||
platformCount 来自 QMS_WINDOW_INFO;todayReservedVehicles/operatingVehicles 来自 QMS_MAIN_BUSINESS(按 TARGET_DATE=今天) -->
|
||
<select id="queryPlatformFloorStats" resultType="com.mhd.bi.domain.biPlatformRealData.repository.po.RealPlatformFloorStatPO">
|
||
SELECT
|
||
'F' || SUBSTR(W.WINDOW_NAME, INSTR(W.WINDOW_NAME,'-')-1, 1) AS floorNo,
|
||
COUNT(DISTINCT W.WINDOW_NAME) AS platformCount,
|
||
COUNT(DISTINCT CASE
|
||
WHEN TRUNC(mb.TARGET_DATE) = TRUNC(SYSDATE) THEN mb.CAR_NO
|
||
END) AS todayReservedVehicles,
|
||
COUNT(DISTINCT CASE
|
||
WHEN TRUNC(mb.TARGET_DATE) = TRUNC(SYSDATE)
|
||
AND mb.FLOW_STATUS IN ('5','6','7','8','9','10')
|
||
THEN mb.CAR_NO
|
||
END) AS operatingVehicles
|
||
FROM NGWL_TEST_YMS.QMS_WINDOW_INFO W
|
||
LEFT JOIN NGWL_TEST_YMS.QMS_MAIN_BUSINESS mb
|
||
ON mb.WINDOW_NAME = W.WINDOW_NAME
|
||
WHERE W.WINDOW_NAME LIKE '%-%'
|
||
GROUP BY SUBSTR(W.WINDOW_NAME, INSTR(W.WINDOW_NAME,'-')-1, 1)
|
||
ORDER BY 1 DESC
|
||
</select>
|
||
|
||
<!-- 任务类型统计(来自 NGWL_TEST_YMS.QMS_MAIN_BUSINESS 预约登记表):
|
||
按本月预约车辆数(TARGET_DATE 在当前月)按 BUSINESS_NAME 业务类型分组统计 -->
|
||
<select id="queryMonthTransportOrderByType" resultType="com.mhd.bi.domain.biPlatformRealData.repository.po.RealTaskTypeStatPO">
|
||
SELECT
|
||
BUSINESS_NAME AS businessName,
|
||
COUNT(1) AS count
|
||
FROM NGWL_TEST_YMS.QMS_MAIN_BUSINESS
|
||
WHERE BUSINESS_NAME IS NOT NULL
|
||
AND TARGET_DATE IS NOT NULL
|
||
AND TO_CHAR(TARGET_DATE, 'YYYY-MM') = TO_CHAR(SYSDATE, 'YYYY-MM')
|
||
GROUP BY BUSINESS_NAME
|
||
ORDER BY COUNT(1) DESC
|
||
</select>
|
||
|
||
<!-- 任务负荷(今日 24 小时时段):按 EXTRACT(HOUR FROM ENTRY_TIME) 统计 -->
|
||
<select id="queryTaskLoadToday" resultType="com.mhd.bi.domain.biPlatformRealData.repository.po.RealTaskLoadPO">
|
||
SELECT
|
||
EXTRACT(HOUR FROM ENTRY_TIME) AS hourOfDay,
|
||
COUNT(1) AS taskCount
|
||
FROM NGWL_TEST_YMS.QMS_MAIN_BUSINESS
|
||
WHERE ENTRY_TIME IS NOT NULL
|
||
AND TRUNC(ENTRY_TIME) = TRUNC(SYSDATE)
|
||
GROUP BY EXTRACT(HOUR FROM ENTRY_TIME)
|
||
ORDER BY EXTRACT(HOUR FROM ENTRY_TIME)
|
||
</select>
|
||
|
||
<!-- 月台管理列表:查询 YMS qms_window_info 月台/鹤位窗口
|
||
机构名称 deptName <- sys_dept.DEPT_NAME(d.dept_id = a.ORG_NO 关联)
|
||
鹤位屏名称 berrNames <- qms_window_berr(WINDOW_ID/BERR_ID) join qms_berr_config(ID/BERR_NAME),WM_CONCAT 拼接
|
||
其余列来自 qms_window_info 本身 -->
|
||
<select id="queryPlatformInfoList" resultType="com.mhd.bi.domain.biPlatformRealData.repository.po.RealPlatformInfoPO">
|
||
SELECT
|
||
a.ID AS id,
|
||
a.ORG_NO AS orgNo,
|
||
d.DEPT_NAME AS deptName,
|
||
a.WINDOW_NUMBER AS windowNumber,
|
||
a.WINDOW_NAME AS windowName,
|
||
a.PRIORITY_SET AS prioritySet,
|
||
a.RUNNING_STATUS AS runningStatus,
|
||
a.CREATE_BY AS createBy,
|
||
TO_CHAR(a.CREATE_TIME, 'YYYY-MM-DD HH24:MI:SS') AS createTime,
|
||
a.UUID AS uuid,
|
||
a.GUIDE_IMAGES AS guideImages,
|
||
a.PLATFORM_FLOOR AS platformFloor,
|
||
a.JOB_STATUS AS jobStatus,
|
||
(
|
||
SELECT WM_CONCAT(qbc.BERR_NAME)
|
||
FROM NGWL_TEST_YMS.QMS_WINDOW_BERR qwb
|
||
LEFT JOIN NGWL_TEST_YMS.QMS_BERR_CONFIG qbc ON qbc.ID = qwb.BERR_ID
|
||
WHERE qwb.WINDOW_ID = a.ID
|
||
) AS berrNames
|
||
FROM NGWL_TEST_YMS.QMS_WINDOW_INFO a
|
||
LEFT JOIN NGWL_TEST_YMS.SYS_DEPT d ON d.DEPT_ID = a.ORG_NO
|
||
ORDER BY a.PLATFORM_FLOOR, a.WINDOW_NUMBER
|
||
</select>
|
||
</mapper> |