|
|
|
|
@ -0,0 +1,159 @@
|
|
|
|
|
<?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.aucma.report.mapper.Board4Mapper">
|
|
|
|
|
|
|
|
|
|
<!-- 查询年累计产量(去年数据) -->
|
|
|
|
|
<select id="selectYearProductionTotal" resultType="java.lang.Long">
|
|
|
|
|
SELECT NVL(SUM(COMPLETE_AMOUNT), 0)
|
|
|
|
|
FROM BASE_ORDERINFO
|
|
|
|
|
WHERE TO_CHAR(BEGIN_DATE, 'YYYY') = TO_CHAR(ADD_MONTHS(SYSDATE, -12), 'YYYY')
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<!-- 查询月累计产量(当月数据) -->
|
|
|
|
|
<select id="selectMonthProductionTotal" resultType="java.lang.Long">
|
|
|
|
|
SELECT NVL(SUM(COMPLETE_AMOUNT), 0)
|
|
|
|
|
FROM BASE_ORDERINFO
|
|
|
|
|
WHERE TO_CHAR(BEGIN_DATE, 'YYYY-MM') = TO_CHAR(SYSDATE, 'YYYY-MM')
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<!-- 查询日累计产量(当天工艺参数) -->
|
|
|
|
|
<!-- 使用BASE_DEVICE_PARAM_VAL表,PARAM_CODE='19'表示实际产出数量 -->
|
|
|
|
|
<!-- 取每台设备当天最新的一条记录的实际产出数量进行汇总 -->
|
|
|
|
|
<select id="selectDayProductionTotal" resultType="java.lang.Long">
|
|
|
|
|
SELECT NVL(SUM(TO_NUMBER(PARAM_VALUE)), 0)
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT DEVICE_CODE, PARAM_VALUE,
|
|
|
|
|
ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME DESC) AS RN
|
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL
|
|
|
|
|
WHERE PARAM_CODE = '19'
|
|
|
|
|
AND TO_CHAR(COLLECT_TIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD')
|
|
|
|
|
)
|
|
|
|
|
WHERE RN = 1
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<!-- 查询今日工单统计(计划数、完成数) -->
|
|
|
|
|
<select id="selectTodayOrderStatistics" resultType="java.util.HashMap">
|
|
|
|
|
SELECT NVL(SUM(ORDER_AMOUNT), 0) AS PLAN_COUNT,
|
|
|
|
|
NVL(SUM(COMPLETE_AMOUNT), 0) AS COMPLETE_COUNT
|
|
|
|
|
FROM BASE_ORDERINFO
|
|
|
|
|
WHERE TO_CHAR(BEGIN_DATE, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD')
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<!-- 查询今日工单进度列表 -->
|
|
|
|
|
<select id="selectTodayOrderProgressList" resultType="com.aucma.report.domain.vo.Board4OrderProgressVo">
|
|
|
|
|
SELECT MATERIAL_NAME AS materialName,
|
|
|
|
|
ORDER_AMOUNT AS planCount,
|
|
|
|
|
COMPLETE_AMOUNT AS completeCount,
|
|
|
|
|
(ORDER_AMOUNT - COMPLETE_AMOUNT) AS diffCount,
|
|
|
|
|
CASE WHEN ORDER_AMOUNT > 0
|
|
|
|
|
THEN ROUND(COMPLETE_AMOUNT / ORDER_AMOUNT * 100, 0) || '%'
|
|
|
|
|
ELSE '0%' END AS progress
|
|
|
|
|
FROM BASE_ORDERINFO
|
|
|
|
|
WHERE TO_CHAR(BEGIN_DATE, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD')
|
|
|
|
|
ORDER BY BEGIN_DATE DESC
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<!-- 查询设备状态统计 -->
|
|
|
|
|
<!-- DEVICE_STATUS: 0-使用/正常, 1-停用/告警, 2-报废/停机 -->
|
|
|
|
|
<select id="selectDeviceStatusStatistics" resultType="java.util.HashMap">
|
|
|
|
|
SELECT COUNT(*) AS TOTAL_COUNT,
|
|
|
|
|
SUM(CASE WHEN DEVICE_STATUS = '0' THEN 1 ELSE 0 END) AS NORMAL_COUNT,
|
|
|
|
|
SUM(CASE WHEN DEVICE_STATUS = '1' THEN 1 ELSE 0 END) AS ALARM_COUNT,
|
|
|
|
|
SUM(CASE WHEN DEVICE_STATUS = '2' THEN 1 ELSE 0 END) AS STOP_COUNT
|
|
|
|
|
FROM BASE_DEVICELEDGER
|
|
|
|
|
WHERE IS_FLAG = '0'
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<!-- 查询总维修次数 -->
|
|
|
|
|
<select id="selectTotalRepairCount" resultType="java.lang.Long">
|
|
|
|
|
SELECT COUNT(*)
|
|
|
|
|
FROM DMS_BILLS_FAULT_INSTANCE
|
|
|
|
|
WHERE IS_FLAG = '1'
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<!-- 查询最新报警信息 -->
|
|
|
|
|
<select id="selectLatestAlarmInfo" resultType="java.util.HashMap">
|
|
|
|
|
SELECT * FROM (
|
|
|
|
|
SELECT d.DEVICE_NAME AS DEVICE_NAME,
|
|
|
|
|
a.ALARM_CONTENT AS ALARM_REASON,
|
|
|
|
|
TO_CHAR(a.ALARM_TIME, 'HH24:MI:SS') AS ALARM_TIME
|
|
|
|
|
FROM DMS_RECORD_ALARM_INFO a
|
|
|
|
|
LEFT JOIN DMS_BASE_DEVICE_LEDGER d ON a.DEVICE_ID = d.DEVICE_ID
|
|
|
|
|
ORDER BY a.ALARM_TIME DESC
|
|
|
|
|
) WHERE ROWNUM = 1
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<!-- 查询维修分析列表(按设备聚合) -->
|
|
|
|
|
<select id="selectRepairAnalysisByDevice" resultType="com.aucma.report.domain.vo.Board4RepairAnalysisVo">
|
|
|
|
|
SELECT * FROM (
|
|
|
|
|
SELECT d.DEVICE_NAME AS deviceName,
|
|
|
|
|
COUNT(*) AS repairCount,
|
|
|
|
|
ROUND(COUNT(*) * 100.0 / NULLIF((SELECT COUNT(*) FROM DMS_BILLS_FAULT_INSTANCE WHERE IS_FLAG = '1'), 0), 0) AS percent
|
|
|
|
|
FROM DMS_BILLS_FAULT_INSTANCE f
|
|
|
|
|
LEFT JOIN DMS_BASE_DEVICE_LEDGER d ON f.DEVICE_ID = d.DEVICE_ID
|
|
|
|
|
WHERE f.IS_FLAG = '1'
|
|
|
|
|
AND f.DEVICE_ID IS NOT NULL
|
|
|
|
|
GROUP BY d.DEVICE_ID, d.DEVICE_NAME
|
|
|
|
|
ORDER BY repairCount DESC
|
|
|
|
|
) WHERE ROWNUM <= 10
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<!-- 查询报修趋势(按小时段统计,当天数据) -->
|
|
|
|
|
<select id="selectRepairTrendList" resultType="com.aucma.report.domain.vo.Board4RepairTrendVo">
|
|
|
|
|
SELECT TO_CHAR(APPLY_TIME, 'HH24') || ':00' AS timeHour,
|
|
|
|
|
COUNT(*) AS repairCount
|
|
|
|
|
FROM DMS_BILLS_FAULT_INSTANCE
|
|
|
|
|
WHERE TO_CHAR(APPLY_TIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD')
|
|
|
|
|
AND IS_FLAG = '1'
|
|
|
|
|
GROUP BY TO_CHAR(APPLY_TIME, 'HH24')
|
|
|
|
|
ORDER BY timeHour
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<!-- 查询质量统计(合格数/不合格数) -->
|
|
|
|
|
<!-- TREATMENT_MEASURE: 3=合格, 1=返修 -->
|
|
|
|
|
<select id="selectQualityStatistics" resultType="java.util.HashMap">
|
|
|
|
|
SELECT NVL(SUM(CASE WHEN TREATMENT_MEASURE = '3' THEN 1 ELSE 0 END), 0) AS QUALIFIED_COUNT,
|
|
|
|
|
NVL(SUM(CASE WHEN TREATMENT_MEASURE = '1' THEN 1 ELSE 0 END), 0) AS UNQUALIFIED_COUNT
|
|
|
|
|
FROM REPORT_QUALITY_INSPECTION
|
|
|
|
|
WHERE TO_CHAR(INSPECTOR_TIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD')
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<!-- 查询质量追溯列表(按产品统计合格率) -->
|
|
|
|
|
<select id="selectQualityTraceList" resultType="com.aucma.report.domain.vo.Board4QualityTraceVo">
|
|
|
|
|
SELECT * FROM (
|
|
|
|
|
SELECT MATERIAL_NAME AS materialName,
|
|
|
|
|
ROUND(SUM(CASE WHEN TREATMENT_MEASURE = '3' THEN 1 ELSE 0 END) * 100.0 / NULLIF(COUNT(*), 0), 0) AS passRate,
|
|
|
|
|
100 AS passLimit
|
|
|
|
|
FROM REPORT_QUALITY_INSPECTION
|
|
|
|
|
WHERE MATERIAL_NAME IS NOT NULL
|
|
|
|
|
AND TO_CHAR(INSPECTOR_TIME, 'YYYY-MM-DD') >= TO_CHAR(SYSDATE - 7, 'YYYY-MM-DD')
|
|
|
|
|
GROUP BY MATERIAL_NAME
|
|
|
|
|
ORDER BY passRate DESC
|
|
|
|
|
) WHERE ROWNUM <= 10
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<!-- 查询设备分析列表(各设备机台实际产量) -->
|
|
|
|
|
<!-- 从BASE_DEVICE_PARAM_VAL获取当天每台设备的最新实际产出数量 -->
|
|
|
|
|
<select id="selectDeviceProductionAnalysis" resultType="com.aucma.report.domain.vo.Board4DeviceProductionVo">
|
|
|
|
|
SELECT d.DEVICE_NAME AS deviceName,
|
|
|
|
|
NVL(TO_NUMBER(p.PARAM_VALUE), 0) AS production
|
|
|
|
|
FROM BASE_DEVICELEDGER d
|
|
|
|
|
LEFT JOIN (
|
|
|
|
|
SELECT DEVICE_CODE, PARAM_VALUE
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT DEVICE_CODE, PARAM_VALUE,
|
|
|
|
|
ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME DESC) AS RN
|
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL
|
|
|
|
|
WHERE PARAM_CODE = '19'
|
|
|
|
|
AND TO_CHAR(COLLECT_TIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD')
|
|
|
|
|
)
|
|
|
|
|
WHERE RN = 1
|
|
|
|
|
) p ON d.DEVICE_CODE = p.DEVICE_CODE
|
|
|
|
|
WHERE d.IS_FLAG = '0'
|
|
|
|
|
AND d.DEVICE_TYPE = '1'
|
|
|
|
|
ORDER BY production DESC
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
</mapper>
|