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 base_device_param_val
<trim prefix="SET" suffixOverrides=",">
<if test="paramCode != null">param_code = #{paramCode},</if>
<if test="deviceCode != null">device_code = #{deviceCode},</if>
<if test="deviceId != null">device_id = #{deviceId},</if>
<if test="paramName != null">param_name = #{paramName},</if>
<if test="paramValue != null">param_value = #{paramValue},</if>
<if test="collectTime != null">collect_time = #{collectTime},</if>
<if test="recordTime != null">record_time = #{recordTime},</if>
<if test="paramCode != null">param_code = #{paramCode},</if>
<if test="deviceCode != null">device_code = #{deviceCode},</if>
<if test="deviceId != null">device_id = #{deviceId},</if>
<if test="paramName != null">param_name = #{paramName},</if>
<if test="paramValue != null">param_value = #{paramValue},</if>
<if test="collectTime != null">collect_time = #{collectTime},</if>
<if test="recordTime != null">record_time = #{recordTime},</if>
</trim>
where record_id = #{recordId}
</update>

@ -12,10 +12,22 @@
</select>
<!-- 查询月累计产量本自然月当月1日至月末 -->
<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 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>
<!-- 查询日累计产量当天00:00-23:59 工艺参数) -->
@ -29,30 +41,30 @@
ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME DESC) AS RN
FROM BASE_DEVICE_PARAM_VAL
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
</select>
<!-- 查询今日工单统计(计划数、完成数,当天00:00-23:59 -->
<!-- 查询今日工单统计(计划数、完成数,注释当天00:00-23:59 -->
<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')
<!-- WHERE TO_CHAR(BEGIN_DATE, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD') -->
</select>
<!-- 查询今日工单进度列表(当天00:00-23:59 -->
<!-- 查询今日工单进度列表(注释当天00:00-23:59 -->
<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
CASE WHEN ORDER_AMOUNT &gt; 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')
<!-- WHERE TO_CHAR(BEGIN_DATE, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD') -->
ORDER BY BEGIN_DATE DESC
</select>
@ -76,7 +88,7 @@
</select>
<!-- 查询最新报警信息 -->
<!-- 数据来源DMS_RECORD_ALARM_INFO + BASE_DEVICELEDGER -->
<!-- 数据来源DMS_RECORD_ALARM_INFO + BASE_DEVICELEDGER -->
<select id="selectLatestAlarmInfo" resultType="java.util.HashMap">
SELECT * FROM (
SELECT d.DEVICE_NAME AS DEVICE_NAME,
@ -115,16 +127,16 @@
ORDER BY timeHour
</select>
<!-- 查询质量统计(合格数/不合格数,当天00:00-23:59 -->
<!-- 查询质量统计(合格数/不合格数,注释当天00:00-23:59 -->
<!-- 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')
<!-- WHERE TO_CHAR(INSPECTOR_TIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD') -->
</select>
<!-- 查询质量追溯列表(近7天含当天按产品统计合格率 -->
<!-- 查询质量追溯列表(注释近7天含当天按产品统计合格率 -->
<select id="selectQualityTraceList" resultType="com.aucma.report.domain.vo.Board4QualityTraceVo">
SELECT * FROM (
SELECT MATERIAL_NAME AS materialName,
@ -132,7 +144,7 @@
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')
<!-- 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 &lt;= 10
@ -153,7 +165,7 @@
ROW_NUMBER() OVER (PARTITION BY DEVICE_CODE ORDER BY COLLECT_TIME DESC) AS RN
FROM BASE_DEVICE_PARAM_VAL
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
) p ON d.DEVICE_CODE = p.DEVICE_CODE

Loading…
Cancel
Save