feat(report): 更新月累计产量查询逻辑并优化时间条件

- 修改月累计产量查询逻辑,从工单表改为设备参数表汇总最新实际产出数量
- 优化日期时间条件,使用TRUNC函数替代TO_CHAR函数提高查询性能
- 注释掉原有工单统计相关查询的时间过滤条件
- 更新XML映射文件中的缩进格式保持一致性
master
zangch@mesnac.com 1 week ago
parent 0d4feb032a
commit fdb2d78716

@ -69,13 +69,13 @@
<update id="updateBaseDeviceParamVal" parameterType="BaseDeviceParamVal"> <update id="updateBaseDeviceParamVal" parameterType="BaseDeviceParamVal">
update base_device_param_val update base_device_param_val
<trim prefix="SET" suffixOverrides=","> <trim prefix="SET" suffixOverrides=",">
<if test="paramCode != null">param_code = #{paramCode},</if> <if test="paramCode != null">param_code = #{paramCode},</if>
<if test="deviceCode != null">device_code = #{deviceCode},</if> <if test="deviceCode != null">device_code = #{deviceCode},</if>
<if test="deviceId != null">device_id = #{deviceId},</if> <if test="deviceId != null">device_id = #{deviceId},</if>
<if test="paramName != null">param_name = #{paramName},</if> <if test="paramName != null">param_name = #{paramName},</if>
<if test="paramValue != null">param_value = #{paramValue},</if> <if test="paramValue != null">param_value = #{paramValue},</if>
<if test="collectTime != null">collect_time = #{collectTime},</if> <if test="collectTime != null">collect_time = #{collectTime},</if>
<if test="recordTime != null">record_time = #{recordTime},</if> <if test="recordTime != null">record_time = #{recordTime},</if>
</trim> </trim>
where record_id = #{recordId} where record_id = #{recordId}
</update> </update>

@ -12,10 +12,22 @@
</select> </select>
<!-- 查询月累计产量本自然月当月1日至月末 --> <!-- 查询月累计产量本自然月当月1日至月末 -->
<select id="selectMonthProductionTotal" resultType="java.lang.Long"> <!-- 新逻辑:与日累计一致,按设备参数表取每台设备本月最新的“机台状态-实际产出数量”汇总 -->
<!-- 原工单累计逻辑保留注释:
SELECT NVL(SUM(COMPLETE_AMOUNT), 0) SELECT NVL(SUM(COMPLETE_AMOUNT), 0)
FROM BASE_ORDERINFO FROM BASE_ORDERINFO
WHERE TO_CHAR(BEGIN_DATE, 'YYYY-MM') = TO_CHAR(SYSDATE, 'YYYY-MM') WHERE TO_CHAR(BEGIN_DATE, 'YYYY-MM') = TO_CHAR(SYSDATE, 'YYYY-MM')
-->
<select id="selectMonthProductionTotal" 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_NAME = '机台状态-实际产出数量'
AND COLLECT_TIME &gt;= TRUNC(SYSDATE, 'MM') AND COLLECT_TIME &lt; ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 1)
)
WHERE RN = 1
</select> </select>
<!-- 查询日累计产量当天00:00-23:59 工艺参数) --> <!-- 查询日累计产量当天00:00-23:59 工艺参数) -->
@ -29,30 +41,30 @@
ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME DESC) AS RN ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME DESC) AS RN
FROM BASE_DEVICE_PARAM_VAL FROM BASE_DEVICE_PARAM_VAL
WHERE PARAM_NAME = '机台状态-实际产出数量' WHERE PARAM_NAME = '机台状态-实际产出数量'
AND TO_CHAR(COLLECT_TIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD') AND COLLECT_TIME &gt;= TRUNC(SYSDATE) AND COLLECT_TIME &lt; TRUNC(SYSDATE) + 1
) )
WHERE RN = 1 WHERE RN = 1
</select> </select>
<!-- 查询今日工单统计(计划数、完成数,当天00:00-23:59 --> <!-- 查询今日工单统计(计划数、完成数,注释当天00:00-23:59 -->
<select id="selectTodayOrderStatistics" resultType="java.util.HashMap"> <select id="selectTodayOrderStatistics" resultType="java.util.HashMap">
SELECT NVL(SUM(ORDER_AMOUNT), 0) AS PLAN_COUNT, SELECT NVL(SUM(ORDER_AMOUNT), 0) AS PLAN_COUNT,
NVL(SUM(COMPLETE_AMOUNT), 0) AS COMPLETE_COUNT NVL(SUM(COMPLETE_AMOUNT), 0) AS COMPLETE_COUNT
FROM BASE_ORDERINFO FROM BASE_ORDERINFO
WHERE TO_CHAR(BEGIN_DATE, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD') <!-- WHERE TO_CHAR(BEGIN_DATE, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD') -->
</select> </select>
<!-- 查询今日工单进度列表(当天00:00-23:59 --> <!-- 查询今日工单进度列表(注释当天00:00-23:59 -->
<select id="selectTodayOrderProgressList" resultType="com.aucma.report.domain.vo.Board4OrderProgressVo"> <select id="selectTodayOrderProgressList" resultType="com.aucma.report.domain.vo.Board4OrderProgressVo">
SELECT MATERIAL_NAME AS materialName, SELECT MATERIAL_NAME AS materialName,
ORDER_AMOUNT AS planCount, ORDER_AMOUNT AS planCount,
COMPLETE_AMOUNT AS completeCount, COMPLETE_AMOUNT AS completeCount,
(ORDER_AMOUNT - COMPLETE_AMOUNT) AS diffCount, (ORDER_AMOUNT - COMPLETE_AMOUNT) AS diffCount,
CASE WHEN ORDER_AMOUNT > 0 CASE WHEN ORDER_AMOUNT &gt; 0
THEN ROUND(COMPLETE_AMOUNT / ORDER_AMOUNT * 100, 0) || '%' THEN ROUND(COMPLETE_AMOUNT / ORDER_AMOUNT * 100, 0) || '%'
ELSE '0%' END AS progress ELSE '0%' END AS progress
FROM BASE_ORDERINFO FROM BASE_ORDERINFO
WHERE TO_CHAR(BEGIN_DATE, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD') <!-- WHERE TO_CHAR(BEGIN_DATE, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD') -->
ORDER BY BEGIN_DATE DESC ORDER BY BEGIN_DATE DESC
</select> </select>
@ -76,7 +88,7 @@
</select> </select>
<!-- 查询最新报警信息 --> <!-- 查询最新报警信息 -->
<!-- 数据来源DMS_RECORD_ALARM_INFO + BASE_DEVICELEDGER --> <!-- 数据来源DMS_RECORD_ALARM_INFO + BASE_DEVICELEDGER -->
<select id="selectLatestAlarmInfo" resultType="java.util.HashMap"> <select id="selectLatestAlarmInfo" resultType="java.util.HashMap">
SELECT * FROM ( SELECT * FROM (
SELECT d.DEVICE_NAME AS DEVICE_NAME, SELECT d.DEVICE_NAME AS DEVICE_NAME,
@ -115,16 +127,16 @@
ORDER BY timeHour ORDER BY timeHour
</select> </select>
<!-- 查询质量统计(合格数/不合格数,当天00:00-23:59 --> <!-- 查询质量统计(合格数/不合格数,注释当天00:00-23:59 -->
<!-- TREATMENT_MEASURE: 3=合格, 1=返修 --> <!-- TREATMENT_MEASURE: 3=合格, 1=返修 -->
<select id="selectQualityStatistics" resultType="java.util.HashMap"> <select id="selectQualityStatistics" resultType="java.util.HashMap">
SELECT NVL(SUM(CASE WHEN TREATMENT_MEASURE = '3' THEN 1 ELSE 0 END), 0) AS QUALIFIED_COUNT, 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 NVL(SUM(CASE WHEN TREATMENT_MEASURE = '1' THEN 1 ELSE 0 END), 0) AS UNQUALIFIED_COUNT
FROM REPORT_QUALITY_INSPECTION FROM REPORT_QUALITY_INSPECTION
WHERE TO_CHAR(INSPECTOR_TIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD') <!-- WHERE TO_CHAR(INSPECTOR_TIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD') -->
</select> </select>
<!-- 查询质量追溯列表(近7天含当天按产品统计合格率 --> <!-- 查询质量追溯列表(注释近7天含当天按产品统计合格率 -->
<select id="selectQualityTraceList" resultType="com.aucma.report.domain.vo.Board4QualityTraceVo"> <select id="selectQualityTraceList" resultType="com.aucma.report.domain.vo.Board4QualityTraceVo">
SELECT * FROM ( SELECT * FROM (
SELECT MATERIAL_NAME AS materialName, SELECT MATERIAL_NAME AS materialName,
@ -132,7 +144,7 @@
100 AS passLimit 100 AS passLimit
FROM REPORT_QUALITY_INSPECTION FROM REPORT_QUALITY_INSPECTION
WHERE MATERIAL_NAME IS NOT NULL WHERE MATERIAL_NAME IS NOT NULL
AND TO_CHAR(INSPECTOR_TIME, 'YYYY-MM-DD') >= TO_CHAR(SYSDATE - 7, 'YYYY-MM-DD') <!-- AND TO_CHAR(INSPECTOR_TIME, 'YYYY-MM-DD') >= TO_CHAR(SYSDATE - 7, 'YYYY-MM-DD') -->
GROUP BY MATERIAL_NAME GROUP BY MATERIAL_NAME
ORDER BY passRate DESC ORDER BY passRate DESC
) WHERE ROWNUM &lt;= 10 ) WHERE ROWNUM &lt;= 10
@ -153,7 +165,7 @@
ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME DESC) AS RN ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME DESC) AS RN
FROM BASE_DEVICE_PARAM_VAL FROM BASE_DEVICE_PARAM_VAL
WHERE PARAM_NAME = '机台状态-实际产出数量' WHERE PARAM_NAME = '机台状态-实际产出数量'
AND TO_CHAR(COLLECT_TIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD') AND COLLECT_TIME &gt;= TRUNC(SYSDATE) AND COLLECT_TIME &lt; TRUNC(SYSDATE) + 1
) )
WHERE RN = 1 WHERE RN = 1
) p ON d.DEVICE_CODE = p.DEVICE_CODE ) p ON d.DEVICE_CODE = p.DEVICE_CODE

Loading…
Cancel
Save