|
|
|
@ -19,100 +19,101 @@
|
|
|
|
ORDER BY DEVICE_CODE
|
|
|
|
ORDER BY DEVICE_CODE
|
|
|
|
</select>
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 2. 计算累加器参数增量,支持 reset 检测和基准数据加载 -->
|
|
|
|
<!-- 2. 计算累加器参数增量,支持 reset 检测、基准数据加载和同时间去重 -->
|
|
|
|
<select id="selectCounterDeltaByWindow" resultType="java.math.BigDecimal">
|
|
|
|
<select id="selectCounterDeltaByWindow" resultType="java.math.BigDecimal">
|
|
|
|
WITH combined_data AS (
|
|
|
|
WITH source_param AS (
|
|
|
|
<!-- A. 窗口内的数据 -->
|
|
|
|
|
|
|
|
<choose>
|
|
|
|
<choose>
|
|
|
|
<when test="tableSuffixes != null and tableSuffixes.size() > 0">
|
|
|
|
<when test="tableSuffixes != null and tableSuffixes.size() > 0">
|
|
|
|
<foreach item="suffix" collection="tableSuffixes" separator=" UNION ALL ">
|
|
|
|
<foreach item="suffix" collection="tableSuffixes" separator=" UNION ALL ">
|
|
|
|
SELECT v.PARAM_VALUE, v.COLLECT_TIME
|
|
|
|
SELECT v.DEVICE_CODE AS device_code,
|
|
|
|
|
|
|
|
v.COLLECT_TIME AS collect_time,
|
|
|
|
|
|
|
|
TO_NUMBER(TRIM(v.PARAM_VALUE)) AS param_value
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL_${suffix} v
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL_${suffix} v
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
|
|
|
|
AND v.DEVICE_CODE NOT LIKE 'OLD-%'
|
|
|
|
AND v.PARAM_NAME = #{paramName}
|
|
|
|
AND v.PARAM_NAME = #{paramName}
|
|
|
|
AND v.COLLECT_TIME >= #{beginTime}
|
|
|
|
AND v.COLLECT_TIME >= #{autoBaselineBeginTime}
|
|
|
|
AND v.COLLECT_TIME < #{endTime}
|
|
|
|
AND v.COLLECT_TIME < #{endTime}
|
|
|
|
|
|
|
|
<!-- 为什么先校验再转数字:PARAM_VALUE 是字符串,直接 TO_NUMBER 会因脏数据导致整页报表失败。 -->
|
|
|
|
AND REGEXP_LIKE(TRIM(v.PARAM_VALUE), '^[+-]?[0-9]+([.][0-9]+)?$')
|
|
|
|
AND REGEXP_LIKE(TRIM(v.PARAM_VALUE), '^[+-]?[0-9]+([.][0-9]+)?$')
|
|
|
|
</foreach>
|
|
|
|
</foreach>
|
|
|
|
UNION ALL
|
|
|
|
UNION ALL
|
|
|
|
SELECT v.PARAM_VALUE, v.COLLECT_TIME
|
|
|
|
SELECT v.DEVICE_CODE AS device_code,
|
|
|
|
|
|
|
|
v.COLLECT_TIME AS collect_time,
|
|
|
|
|
|
|
|
TO_NUMBER(TRIM(v.PARAM_VALUE)) AS param_value
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL v
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL v
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
|
|
|
|
AND v.DEVICE_CODE LIKE 'OLD-%'
|
|
|
|
AND v.PARAM_NAME = #{paramName}
|
|
|
|
AND v.PARAM_NAME = #{paramName}
|
|
|
|
AND v.COLLECT_TIME >= #{beginTime}
|
|
|
|
AND v.COLLECT_TIME >= #{oldBaselineBeginTime}
|
|
|
|
AND v.COLLECT_TIME < #{endTime}
|
|
|
|
AND v.COLLECT_TIME < #{endTime}
|
|
|
|
AND REGEXP_LIKE(TRIM(v.PARAM_VALUE), '^[+-]?[0-9]+([.][0-9]+)?$')
|
|
|
|
AND REGEXP_LIKE(TRIM(v.PARAM_VALUE), '^[+-]?[0-9]+([.][0-9]+)?$')
|
|
|
|
</when>
|
|
|
|
</when>
|
|
|
|
<otherwise>
|
|
|
|
<otherwise>
|
|
|
|
SELECT v.PARAM_VALUE, v.COLLECT_TIME
|
|
|
|
SELECT v.DEVICE_CODE AS device_code,
|
|
|
|
|
|
|
|
v.COLLECT_TIME AS collect_time,
|
|
|
|
|
|
|
|
TO_NUMBER(TRIM(v.PARAM_VALUE)) AS param_value
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL v
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL v
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
|
|
|
|
AND v.DEVICE_CODE LIKE 'OLD-%'
|
|
|
|
AND v.PARAM_NAME = #{paramName}
|
|
|
|
AND v.PARAM_NAME = #{paramName}
|
|
|
|
AND v.COLLECT_TIME >= #{beginTime}
|
|
|
|
AND v.COLLECT_TIME >= #{oldBaselineBeginTime}
|
|
|
|
AND v.COLLECT_TIME < #{endTime}
|
|
|
|
AND v.COLLECT_TIME < #{endTime}
|
|
|
|
AND REGEXP_LIKE(TRIM(v.PARAM_VALUE), '^[+-]?[0-9]+([.][0-9]+)?$')
|
|
|
|
AND REGEXP_LIKE(TRIM(v.PARAM_VALUE), '^[+-]?[0-9]+([.][0-9]+)?$')
|
|
|
|
</otherwise>
|
|
|
|
</otherwise>
|
|
|
|
</choose>
|
|
|
|
</choose>
|
|
|
|
UNION ALL
|
|
|
|
),
|
|
|
|
<!-- B. 窗口前最近的一条基准数据(用于获取窗口起点附近的基线值) -->
|
|
|
|
normalized_param AS (
|
|
|
|
SELECT PARAM_VALUE, COLLECT_TIME
|
|
|
|
SELECT p.device_code,
|
|
|
|
|
|
|
|
p.collect_time,
|
|
|
|
|
|
|
|
MAX(p.param_value) AS param_value
|
|
|
|
|
|
|
|
FROM source_param p
|
|
|
|
|
|
|
|
GROUP BY p.device_code, p.collect_time
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
baseline_param AS (
|
|
|
|
|
|
|
|
SELECT device_code, collect_time, param_value
|
|
|
|
FROM (
|
|
|
|
FROM (
|
|
|
|
SELECT PARAM_VALUE, COLLECT_TIME,
|
|
|
|
SELECT p.device_code,
|
|
|
|
ROW_NUMBER() OVER (ORDER BY COLLECT_TIME DESC) as rn
|
|
|
|
p.collect_time,
|
|
|
|
FROM (
|
|
|
|
p.param_value,
|
|
|
|
<choose>
|
|
|
|
ROW_NUMBER() OVER (
|
|
|
|
<when test="tableSuffixes != null and tableSuffixes.size() > 0">
|
|
|
|
PARTITION BY p.device_code
|
|
|
|
<foreach item="suffix" collection="tableSuffixes" separator=" UNION ALL ">
|
|
|
|
ORDER BY p.collect_time DESC
|
|
|
|
SELECT v.PARAM_VALUE, v.COLLECT_TIME
|
|
|
|
) AS rn
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL_${suffix} v
|
|
|
|
FROM normalized_param p
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
WHERE p.collect_time < #{beginTime}
|
|
|
|
AND v.PARAM_NAME = #{paramName}
|
|
|
|
|
|
|
|
AND v.COLLECT_TIME < #{beginTime}
|
|
|
|
|
|
|
|
AND REGEXP_LIKE(TRIM(v.PARAM_VALUE), '^[+-]?[0-9]+([.][0-9]+)?$')
|
|
|
|
|
|
|
|
</foreach>
|
|
|
|
|
|
|
|
UNION ALL
|
|
|
|
|
|
|
|
SELECT v.PARAM_VALUE, v.COLLECT_TIME
|
|
|
|
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL v
|
|
|
|
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
|
|
|
|
AND v.PARAM_NAME = #{paramName}
|
|
|
|
|
|
|
|
AND v.COLLECT_TIME < #{beginTime}
|
|
|
|
|
|
|
|
AND REGEXP_LIKE(TRIM(v.PARAM_VALUE), '^[+-]?[0-9]+([.][0-9]+)?$')
|
|
|
|
|
|
|
|
</when>
|
|
|
|
|
|
|
|
<otherwise>
|
|
|
|
|
|
|
|
SELECT v.PARAM_VALUE, v.COLLECT_TIME
|
|
|
|
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL v
|
|
|
|
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
|
|
|
|
AND v.PARAM_NAME = #{paramName}
|
|
|
|
|
|
|
|
AND v.COLLECT_TIME < #{beginTime}
|
|
|
|
|
|
|
|
AND REGEXP_LIKE(TRIM(v.PARAM_VALUE), '^[+-]?[0-9]+([.][0-9]+)?$')
|
|
|
|
|
|
|
|
</otherwise>
|
|
|
|
|
|
|
|
</choose>
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
) WHERE rn = 1
|
|
|
|
WHERE rn = 1
|
|
|
|
),
|
|
|
|
),
|
|
|
|
ordered_data AS (
|
|
|
|
window_param AS (
|
|
|
|
SELECT
|
|
|
|
SELECT p.device_code, p.collect_time, p.param_value
|
|
|
|
TO_NUMBER(TRIM(PARAM_VALUE)) as val,
|
|
|
|
FROM normalized_param p
|
|
|
|
COLLECT_TIME,
|
|
|
|
WHERE p.collect_time >= #{beginTime}
|
|
|
|
LAG(TO_NUMBER(TRIM(PARAM_VALUE))) OVER (ORDER BY COLLECT_TIME) as prev_val
|
|
|
|
AND p.collect_time < #{endTime}
|
|
|
|
FROM combined_data
|
|
|
|
UNION ALL
|
|
|
|
|
|
|
|
SELECT p.device_code, p.collect_time, p.param_value
|
|
|
|
|
|
|
|
FROM baseline_param p
|
|
|
|
),
|
|
|
|
),
|
|
|
|
deltas AS (
|
|
|
|
ordered_param AS (
|
|
|
|
SELECT
|
|
|
|
SELECT p.device_code,
|
|
|
|
COLLECT_TIME,
|
|
|
|
p.collect_time,
|
|
|
|
val,
|
|
|
|
p.param_value,
|
|
|
|
prev_val,
|
|
|
|
LAG(p.param_value) OVER (
|
|
|
|
|
|
|
|
PARTITION BY p.device_code
|
|
|
|
|
|
|
|
ORDER BY p.collect_time
|
|
|
|
|
|
|
|
) AS previous_param_value
|
|
|
|
|
|
|
|
FROM window_param p
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
SELECT NVL(SUM(
|
|
|
|
CASE
|
|
|
|
CASE
|
|
|
|
WHEN prev_val IS NULL THEN 0
|
|
|
|
WHEN p.collect_time < #{beginTime} THEN 0
|
|
|
|
WHEN val >= prev_val THEN val - prev_val
|
|
|
|
WHEN p.previous_param_value IS NULL THEN 0
|
|
|
|
ELSE val
|
|
|
|
WHEN p.param_value > p.previous_param_value THEN p.param_value - p.previous_param_value
|
|
|
|
END as delta
|
|
|
|
WHEN p.param_value < p.previous_param_value THEN p.param_value
|
|
|
|
FROM ordered_data
|
|
|
|
ELSE 0
|
|
|
|
)
|
|
|
|
END
|
|
|
|
SELECT NVL(SUM(delta), 0)
|
|
|
|
), 0) AS counter_delta
|
|
|
|
FROM deltas
|
|
|
|
FROM ordered_param p
|
|
|
|
WHERE COLLECT_TIME >= #{beginTime}
|
|
|
|
|
|
|
|
AND COLLECT_TIME < #{endTime}
|
|
|
|
|
|
|
|
</select>
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 3. 获取截止时间前最新的模腔数参数值 -->
|
|
|
|
<!-- 3. 获取截止时间前最新的模腔数参数值 -->
|
|
|
|
@ -132,6 +133,7 @@
|
|
|
|
SELECT v.PARAM_VALUE, v.COLLECT_TIME
|
|
|
|
SELECT v.PARAM_VALUE, v.COLLECT_TIME
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL v
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL v
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
|
|
|
|
AND v.DEVICE_CODE LIKE 'OLD-%'
|
|
|
|
AND v.PARAM_NAME IN ('system.sv_iCavities', '机台状态-模腔数')
|
|
|
|
AND v.PARAM_NAME IN ('system.sv_iCavities', '机台状态-模腔数')
|
|
|
|
AND v.COLLECT_TIME <= #{endTime}
|
|
|
|
AND v.COLLECT_TIME <= #{endTime}
|
|
|
|
AND REGEXP_LIKE(TRIM(v.PARAM_VALUE), '^[+-]?[0-9]+([.][0-9]+)?$')
|
|
|
|
AND REGEXP_LIKE(TRIM(v.PARAM_VALUE), '^[+-]?[0-9]+([.][0-9]+)?$')
|
|
|
|
@ -140,6 +142,7 @@
|
|
|
|
SELECT v.PARAM_VALUE, v.COLLECT_TIME
|
|
|
|
SELECT v.PARAM_VALUE, v.COLLECT_TIME
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL v
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL v
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
|
|
|
|
AND v.DEVICE_CODE LIKE 'OLD-%'
|
|
|
|
AND v.PARAM_NAME IN ('system.sv_iCavities', '机台状态-模腔数')
|
|
|
|
AND v.PARAM_NAME IN ('system.sv_iCavities', '机台状态-模腔数')
|
|
|
|
AND v.COLLECT_TIME <= #{endTime}
|
|
|
|
AND v.COLLECT_TIME <= #{endTime}
|
|
|
|
AND REGEXP_LIKE(TRIM(v.PARAM_VALUE), '^[+-]?[0-9]+([.][0-9]+)?$')
|
|
|
|
AND REGEXP_LIKE(TRIM(v.PARAM_VALUE), '^[+-]?[0-9]+([.][0-9]+)?$')
|
|
|
|
@ -172,6 +175,7 @@
|
|
|
|
SELECT v.PARAM_VALUE, v.COLLECT_TIME
|
|
|
|
SELECT v.PARAM_VALUE, v.COLLECT_TIME
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL v
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL v
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
|
|
|
|
AND v.DEVICE_CODE LIKE 'OLD-%'
|
|
|
|
AND v.PARAM_NAME = '机床实时参数-周期时间'
|
|
|
|
AND v.PARAM_NAME = '机床实时参数-周期时间'
|
|
|
|
AND v.COLLECT_TIME >= #{beginTime}
|
|
|
|
AND v.COLLECT_TIME >= #{beginTime}
|
|
|
|
AND v.COLLECT_TIME < #{endTime}
|
|
|
|
AND v.COLLECT_TIME < #{endTime}
|
|
|
|
@ -181,6 +185,7 @@
|
|
|
|
SELECT v.PARAM_VALUE, v.COLLECT_TIME
|
|
|
|
SELECT v.PARAM_VALUE, v.COLLECT_TIME
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL v
|
|
|
|
FROM BASE_DEVICE_PARAM_VAL v
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
WHERE v.DEVICE_CODE = #{deviceCode}
|
|
|
|
|
|
|
|
AND v.DEVICE_CODE LIKE 'OLD-%'
|
|
|
|
AND v.PARAM_NAME = '机床实时参数-周期时间'
|
|
|
|
AND v.PARAM_NAME = '机床实时参数-周期时间'
|
|
|
|
AND v.COLLECT_TIME >= #{beginTime}
|
|
|
|
AND v.COLLECT_TIME >= #{beginTime}
|
|
|
|
AND v.COLLECT_TIME < #{endTime}
|
|
|
|
AND v.COLLECT_TIME < #{endTime}
|
|
|
|
@ -212,4 +217,22 @@
|
|
|
|
FROM bar_defect
|
|
|
|
FROM bar_defect
|
|
|
|
</select>
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 6. 泛化版 "RT+DAY 合并求和" -->
|
|
|
|
|
|
|
|
<select id="sumRtAndDay" resultType="java.lang.Long">
|
|
|
|
|
|
|
|
SELECT NVL(SUM(v), 0) FROM (
|
|
|
|
|
|
|
|
SELECT DAILY_PROD AS v
|
|
|
|
|
|
|
|
FROM DEVICE_DAILY_PRODUCTION
|
|
|
|
|
|
|
|
WHERE DEVICE_CODE = #{deviceCode}
|
|
|
|
|
|
|
|
AND PARAM_NAME = #{paramName}
|
|
|
|
|
|
|
|
AND PROD_DATE BETWEEN TRUNC(#{beginDate}) AND LEAST(TRUNC(#{endDate}), TRUNC(SYSDATE) - 1)
|
|
|
|
|
|
|
|
UNION ALL
|
|
|
|
|
|
|
|
SELECT CURRENT_TOTAL AS v
|
|
|
|
|
|
|
|
FROM RT_DAILY_PROD_STATE
|
|
|
|
|
|
|
|
WHERE DEVICE_CODE = #{deviceCode}
|
|
|
|
|
|
|
|
AND PARAM_NAME = #{paramName}
|
|
|
|
|
|
|
|
AND PROD_DATE = TRUNC(SYSDATE)
|
|
|
|
|
|
|
|
AND TRUNC(SYSDATE) BETWEEN TRUNC(#{beginDate}) AND TRUNC(#{endDate})
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
|
|
</mapper>
|
|
|
|
</mapper>
|
|
|
|
|