| | |
| | | List<WorkCubeTotalAxis> getCubeTotal(); |
| | | |
| | | /** |
| | | * 最近 12 天入库体积汇总,先筛选完成状态主档,再关联明细,避免明细日志大范围预聚合。 |
| | | * 最近 12 天入库体积汇总。 |
| | | * 接口只读取汇总表,避免每次请求实时扫描工作日志明细。 |
| | | */ |
| | | @Select("WITH dates AS ( " |
| | | + " SELECT DATEADD(DAY, -v.n, CONVERT(date, GETDATE())) AS stat_date " |
| | | + " FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11)) AS v(n) " |
| | | + "), completed_mast AS ( " |
| | | + " SELECT DISTINCT m.wrk_no, m.io_time " |
| | | + " FROM dbo.asr_wrk_mast_log AS m " |
| | | + " WHERE m.wrk_sts = 5 " |
| | | + " AND m.io_time >= DATEADD(DAY, -11, CONVERT(date, GETDATE())) " |
| | | + " AND m.io_time < DATEADD(DAY, 1, CONVERT(date, GETDATE())) " |
| | | + "), agg AS ( " |
| | | + " SELECT CONVERT(date, cm.io_time) AS stat_date, " |
| | | + " SUM(ISNULL(d.cube_number, 0)) AS wrk_sts_5_cube_sum " |
| | | + " FROM completed_mast AS cm " |
| | | + " INNER JOIN dbo.asr_wrk_detl_log AS d " |
| | | + " ON d.wrk_no = cm.wrk_no " |
| | | + " AND d.io_time = cm.io_time " |
| | | + " GROUP BY CONVERT(date, cm.io_time) " |
| | | + ") " |
| | | + "SELECT CONVERT(char(10), ds.stat_date, 23) AS ymd, " |
| | | + " CAST(ISNULL(a.wrk_sts_5_cube_sum, 0) AS decimal(18,4)) AS cube5Total " |
| | | + "FROM dates AS ds " |
| | | + "LEFT JOIN agg AS a ON a.stat_date = ds.stat_date " |
| | | + "ORDER BY ds.stat_date " |
| | | + "OPTION (RECOMPILE)") |
| | | @Select("SELECT CONVERT(char(10), stat_date, 23) AS ymd, " |
| | | + "CAST(ISNULL(wrk_sts_5_cube_sum, 0) AS decimal(18,4)) AS cube5Total " |
| | | + "FROM dbo.asr_wrk_cube_day_stat " |
| | | + "WHERE stat_date >= DATEADD(DAY, -11, CONVERT(date, GETDATE())) " |
| | | + " AND stat_date < DATEADD(DAY, 1, CONVERT(date, GETDATE())) " |
| | | + "ORDER BY stat_date") |
| | | List<WorkCubeTotalAxis> getInboundCubeTotal(); |
| | | |
| | | |
| | |
| | | END |
| | | GO |
| | | |
| | | IF OBJECT_ID('dbo.asr_wrk_mast_log', 'U') IS NOT NULL |
| | | AND NOT EXISTS ( |
| | | SELECT 1 |
| | | FROM sys.indexes |
| | | WHERE name = 'IX_asr_wrk_mast_log_sts_iotime_wrkno' |
| | | AND object_id = OBJECT_ID('dbo.asr_wrk_mast_log') |
| | | ) |
| | | BEGIN |
| | | CREATE INDEX IX_asr_wrk_mast_log_sts_iotime_wrkno |
| | | ON dbo.asr_wrk_mast_log (wrk_sts, io_time, wrk_no); |
| | | END |
| | | GO |
| | | |
| | | IF OBJECT_ID('dbo.asr_wrk_detl_log', 'U') IS NOT NULL |
| | | AND NOT EXISTS ( |
| | | SELECT 1 |
| | | FROM sys.indexes |
| | | WHERE name = 'IX_asr_wrk_detl_log_wrkno_iotime_cube' |
| | | AND object_id = OBJECT_ID('dbo.asr_wrk_detl_log') |
| | | ) |
| | | BEGIN |
| | | CREATE INDEX IX_asr_wrk_detl_log_wrkno_iotime_cube |
| | | ON dbo.asr_wrk_detl_log (wrk_no, io_time) |
| | | INCLUDE (cube_number); |
| | | END |
| | | GO |
| | | |
| | | IF OBJECT_ID('dbo.usp_refresh_wrk_cube_day_stat', 'P') IS NOT NULL |
| | | DROP PROCEDURE dbo.usp_refresh_wrk_cube_day_stat; |
| | | GO |
| | |
| | | FROM n |
| | | ), |
| | | mast AS ( |
| | | SELECT |
| | | SELECT DISTINCT |
| | | m.wrk_no, |
| | | m.io_time, |
| | | m.wrk_sts |
| | |
| | | AND m.io_time >= @start_dt |
| | | AND m.io_time < @end_dt |
| | | ), |
| | | detl AS ( |
| | | SELECT |
| | | d.wrk_no, |
| | | d.io_time, |
| | | SUM(ISNULL(d.cube_number, 0)) AS cube_sum |
| | | FROM dbo.asr_wrk_detl_log d |
| | | WHERE d.io_time >= @start_dt |
| | | AND d.io_time < @end_dt |
| | | GROUP BY d.wrk_no, d.io_time |
| | | ), |
| | | agg AS ( |
| | | SELECT |
| | | CONVERT(date, m.io_time) AS stat_date, |
| | | SUM(CASE WHEN m.wrk_sts = 5 THEN d.cube_sum ELSE 0 END) AS wrk_sts_5_cube_sum, |
| | | SUM(CASE WHEN m.wrk_sts = 15 THEN d.cube_sum ELSE 0 END) AS wrk_sts_15_cube_sum |
| | | SUM(CASE WHEN m.wrk_sts = 5 THEN ISNULL(d.cube_number, 0) ELSE 0 END) AS wrk_sts_5_cube_sum, |
| | | SUM(CASE WHEN m.wrk_sts = 15 THEN ISNULL(d.cube_number, 0) ELSE 0 END) AS wrk_sts_15_cube_sum |
| | | FROM mast m |
| | | INNER JOIN detl d |
| | | INNER JOIN dbo.asr_wrk_detl_log d |
| | | ON d.wrk_no = m.wrk_no |
| | | AND d.io_time = m.io_time |
| | | AND d.io_time >= @start_dt |
| | | AND d.io_time < @end_dt |
| | | GROUP BY CONVERT(date, m.io_time) |
| | | ) |
| | | INSERT INTO dbo.asr_wrk_cube_day_stat ( |