fix(Board4): 更新产量统计查询逻辑

- 修改月累计产量查询改为按天取每台设备当日最新值求和再汇总整月
- 修改日累计产量查询改为取每台设备当日最新值直接求和
- 移除原有的按设备最早/最新值差值计算方式
- 更新文档中产量统计功能描述说明
- 修正年累计产量注释说明
master
zangch@mesnac.com 2 days ago
parent 8cd51654b7
commit 1e301dfaf2

@ -6,7 +6,7 @@
| 序号 | 接口路径 | 请求方式 | 功能描述 | 实体类 |
|------|----------|----------|----------|--------|
| 1 | `/board4/productionTotal` | GET | 产量统计(年/月/日累计,按设备差分累加 | Board4ProductionTotalVo |
| 1 | `/board4/productionTotal` | GET | 产量统计(年:订单累计;月/日PARAM_NAME='生产计数-当前日期生产总数',取每台设备当日最新值汇总 | Board4ProductionTotalVo |
| 2 | `/board4/orderStatistics` | GET | 工单统计(计划/完成/差异/完成率) | Board4OrderStatisticsVo |
| 3 | `/board4/orderProgressList` | GET | 工单进度列表 | Board4OrderProgressVo |
| 4 | `/board4/deviceStatus` | GET | 设备状态统计 | Board4DeviceStatusVo |
@ -65,13 +65,13 @@
```java
public class Board4ProductionTotalVo {
/** 年累计产量(去年数据来源BASE_ORDERINFO */
/** 年累计产量(上一自然年,总计来源 BASE_ORDERINFO.COMPLETE_AMOUNT */
private Long yearTotal;
/** 月累计产量(当月数据来源BASE_DEVICE_PARAM_VAL按设备取当月最早/最新“机台状态-实际产出数量”差值汇总 */
/** 月累计产量(当月BASE_DEVICE_PARAM_VALPARAM_NAME='生产计数-当前日期生产总数';按天取每台设备当日最新值求和,再汇总整月 */
private Long monthTotal;
/** 日累计产量(当天数据来源BASE_DEVICE_PARAM_VAL按设备取当日最早/最新差值汇总PARAM_NAME='机台状态-实际产出数量' */
/** 日累计产量(当天BASE_DEVICE_PARAM_VALPARAM_NAME='生产计数-当前日期生产总数';取每台设备当日最新值求和 */
private Long dayTotal;
}
```

@ -18,7 +18,7 @@
FROM BASE_ORDERINFO
WHERE TO_CHAR(BEGIN_DATE, 'YYYY-MM') = TO_CHAR(SYSDATE, 'YYYY-MM')
-->
<select id="selectMonthProductionTotal" resultType="java.lang.Long">
<!-- <select id="selectMonthProductionTotal" resultType="java.lang.Long">
/* 按设备取本月窗口内的最早值与最新值差值再汇总无起始值则按0计算 */
SELECT NVL(SUM(latest_val - earliest_val), 0)
FROM (
@ -37,13 +37,27 @@
)
GROUP BY device_code
)
</select> -->
<select>
/* 按天取“生产计数-当前日期生产总数”每台设备当日最新值,再汇总本月所有天 */
SELECT NVL(SUM(daily_val), 0)
FROM (
SELECT TRUNC(COLLECT_TIME) AS collect_day,
DEVICE_CODE,
MAX(TO_NUMBER(PARAM_VALUE)) KEEP (DENSE_RANK LAST ORDER BY COLLECT_TIME) AS daily_val
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)
GROUP BY TRUNC(COLLECT_TIME), DEVICE_CODE
)
</select>
<!-- 查询日累计产量当天00:00-23:59 工艺参数) -->
<!-- 使用BASE_DEVICE_PARAM_VAL表通过PARAM_NAME='机台状态-实际产出数量'定位参数 -->
<!-- 注意PARAM_CODE可能因设备不同而变化但PARAM_NAME是固定的 -->
<!-- 取每台设备当天最新的一条记录的实际产出数量进行汇总 -->
<select id="selectDayProductionTotal" resultType="java.lang.Long">
<!-- <select id="selectDayProductionTotal" resultType="java.lang.Long">
/* 按设备取当天窗口内的最早值与最新值差值再汇总无起始值则按0计算 */
SELECT NVL(SUM(latest_val - earliest_val), 0)
FROM (
@ -62,6 +76,19 @@
)
GROUP BY device_code
)
</select> -->
<select id="selectDayProductionTotal" resultType="java.lang.Long">
/* 取当天每台设备“生产计数-当前日期生产总数”的最新值再汇总 */
SELECT NVL(SUM(daily_val), 0)
FROM (
SELECT DEVICE_CODE,
MAX(TO_NUMBER(PARAM_VALUE)) KEEP (DENSE_RANK LAST ORDER BY COLLECT_TIME) AS daily_val
FROM BASE_DEVICE_PARAM_VAL
WHERE PARAM_NAME = '生产计数-当前日期生产总数'
AND COLLECT_TIME &gt;= TRUNC(SYSDATE)
AND COLLECT_TIME &lt; TRUNC(SYSDATE) + 1
GROUP BY DEVICE_CODE
)
</select>
<!-- 查询本周工单统计计划数、完成数周一00:00 - 周日23:59 -->

Loading…
Cancel
Save