From 42e5b6dd2bd750cbcf92c06fc187e97de230787e Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Wed, 3 Jun 2026 15:48:25 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(wms/coil/abnormal):=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=92=A2=E5=8D=B7=E5=BC=82=E5=B8=B8=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=A5=E6=BA=90=E4=B8=8E=E5=B7=A5=E5=BA=8F?= =?UTF-8?q?=E6=9D=A5=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在WmsCoilAbnormal实体及相关业务对象中新增以下字段: 1. 数据来源(sourceSystem):标识数据来自二级系统同步或三级本地录入 2. 工序来源(processSource):记录异常发生的具体工序(如粗轧、精轧等) 调整涉及数据库表结构、Java实体类、业务对象、查询条件及导出映射。调整前,异常记录缺少数据来源和工序信息;调整后,新增字段支持按数据来源和工序进行筛选与统计,提升异常追溯与分析能力。同时为物料钢卷服务中的相关DTO预留字段映射注释。 --- .../src/main/java/com/klp/domain/WmsCoilAbnormal.java | 10 ++++++++++ .../main/java/com/klp/domain/bo/WmsCoilAbnormalBo.java | 10 ++++++++++ .../com/klp/domain/vo/WmsCoilAbnormalExportVo.java | 4 ++++ .../main/java/com/klp/domain/vo/WmsCoilAbnormalVo.java | 10 ++++++++++ .../klp/service/impl/WmsCoilAbnormalServiceImpl.java | 2 ++ .../klp/service/impl/WmsMaterialCoilServiceImpl.java | 4 ++++ .../resources/mapper/klp/WmsCoilAbnormalMapper.xml | 2 ++ script/sql/mysql/klp-oa.sql | 2 ++ 8 files changed, 44 insertions(+) diff --git a/klp-wms/src/main/java/com/klp/domain/WmsCoilAbnormal.java b/klp-wms/src/main/java/com/klp/domain/WmsCoilAbnormal.java index c2565838..5be5f7c5 100644 --- a/klp-wms/src/main/java/com/klp/domain/WmsCoilAbnormal.java +++ b/klp-wms/src/main/java/com/klp/domain/WmsCoilAbnormal.java @@ -123,4 +123,14 @@ public class WmsCoilAbnormal extends BaseEntity { */ private String attachmentFiles; + /** + * 数据来源:2=二级系统同步,3=三级本地录入 + */ + private Integer sourceSystem; + + /** + * 工序来源(如:粗轧、精轧、酸洗、退火等) + */ + private String processSource; + } diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilAbnormalBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilAbnormalBo.java index c172f4a4..3d51d930 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilAbnormalBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilAbnormalBo.java @@ -120,4 +120,14 @@ public class WmsCoilAbnormalBo extends BaseEntity { */ private String attachmentFiles; + /** + * 数据来源:2=二级系统同步,3=三级本地录入 + */ + private Integer sourceSystem; + + /** + * 工序来源(如:粗轧、精轧、酸洗、退火等) + */ + private String processSource; + } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilAbnormalExportVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilAbnormalExportVo.java index 426334b5..6cd67210 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilAbnormalExportVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilAbnormalExportVo.java @@ -195,6 +195,10 @@ public class WmsCoilAbnormalExportVo { @ColumnWidth(10) private String plateSurface; + private String sourceSystem; + + private String processSource; + /** * 钢卷ID,用于合并单元格的标识(隐藏列) */ diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilAbnormalVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilAbnormalVo.java index 88dcbee4..910fcbd0 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilAbnormalVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsCoilAbnormalVo.java @@ -145,4 +145,14 @@ public class WmsCoilAbnormalVo extends BaseEntity { */ private String attachmentFiles; + /** + * 数据来源 + */ + private Integer sourceSystem; + + /** + * 工序来源 + */ + private String processSource; + } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilAbnormalServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilAbnormalServiceImpl.java index abe2e0bc..2a27175e 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilAbnormalServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilAbnormalServiceImpl.java @@ -80,6 +80,8 @@ public class WmsCoilAbnormalServiceImpl implements IWmsCoilAbnormalService { lqw.eq(bo.getJudgeTime() != null, WmsCoilAbnormal::getJudgeTime, bo.getJudgeTime()); lqw.eq(bo.getMainMark() != null, WmsCoilAbnormal::getMainMark, bo.getMainMark()); lqw.eq(bo.getWholeCoilMark() != null, WmsCoilAbnormal::getWholeCoilMark, bo.getWholeCoilMark()); + lqw.eq(bo.getSourceSystem() != null, WmsCoilAbnormal::getSourceSystem, bo.getSourceSystem()); + lqw.eq(StringUtils.isNotBlank(bo.getProcessSource()), WmsCoilAbnormal::getProcessSource, bo.getProcessSource()); return lqw; } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java index 90b56d80..0c1955be 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java @@ -5779,6 +5779,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { dto.setWholeCoilMark(abnormal.getWholeCoilMark() != null ? abnormal.getWholeCoilMark().toString() : ""); dto.setAbnormalRemark(abnormal.getRemark() != null ? abnormal.getRemark() : ""); dto.setPlateSurface(abnormal.getPlateSurface() != null ? abnormal.getPlateSurface() : ""); +// dto.setSourceSystem(abnormal.getSourceSystem() != null ? abnormal.getSourceSystem().toString() : ""); +// dto.setProcessSource(abnormal.getProcessSource() != null ? abnormal.getProcessSource() : ""); } else { // 空异常信息 dto.setProductionLine(""); @@ -5798,6 +5800,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { dto.setWholeCoilMark(""); dto.setAbnormalRemark(""); dto.setPlateSurface(""); +// dto.setSourceSystem(""); +// dto.setProcessSource(""); } return dto; diff --git a/klp-wms/src/main/resources/mapper/klp/WmsCoilAbnormalMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsCoilAbnormalMapper.xml index b9167d35..b8d323d8 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsCoilAbnormalMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsCoilAbnormalMapper.xml @@ -25,6 +25,8 @@ + + diff --git a/script/sql/mysql/klp-oa.sql b/script/sql/mysql/klp-oa.sql index 72f67d76..9d08bfdc 100644 --- a/script/sql/mysql/klp-oa.sql +++ b/script/sql/mysql/klp-oa.sql @@ -3210,6 +3210,8 @@ CREATE TABLE `wms_coil_abnormal` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '更新人', `plate_surface` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '上下板面', + `source_system` tinyint NOT NULL DEFAULT 3 COMMENT '数据来源:2=二级系统同步,3=三级本地录入', + `process_source` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '工序来源(如:粗轧、精轧、酸洗、退火等)', PRIMARY KEY (`abnormal_id`) USING BTREE, INDEX `idx_coil_id`(`coil_id` ASC) USING BTREE COMMENT '钢卷ID索引', INDEX `idx_judge_time`(`judge_time` ASC) USING BTREE COMMENT '判级时间索引(可选,根据查询需求添加)', From 03add7c96b823c9023699325d3e3372b5dd865a1 Mon Sep 17 00:00:00 2001 From: wangyu <823267011@qq.com> Date: Wed, 3 Jun 2026 16:30:48 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=A8=A1=E6=9E=B6=E5=8E=9A=E5=BA=A6?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/SqlServerApiBusinessService.java | 43 +++++++++++++++++++ .../sqlserver/SqlServerApiController.java | 9 ++++ .../acid/components/ActualPerformance.vue | 2 +- .../acid/components/QualityReportDialog.vue | 8 ++-- 4 files changed, 57 insertions(+), 5 deletions(-) diff --git a/klp-admin/src/main/java/com/klp/framework/service/SqlServerApiBusinessService.java b/klp-admin/src/main/java/com/klp/framework/service/SqlServerApiBusinessService.java index 452adaa8..269ff2ff 100644 --- a/klp-admin/src/main/java/com/klp/framework/service/SqlServerApiBusinessService.java +++ b/klp-admin/src/main/java/com/klp/framework/service/SqlServerApiBusinessService.java @@ -249,6 +249,49 @@ public class SqlServerApiBusinessService { ); } + /** + * 测试用:统计 V_VBDA_GAUGE 中各 THICK 列的非空/非零数量, + * 用于排查"末架出口厚度恒为 0"问题——确认实际数据落在哪一列。 + */ + public Map getGaugeStats(String matId) { + List> rows = asRowList(client.queryGaugeByMatId(matId)); + String[] cols = {"THICK0", "THICK1", "THICK4", "THICK5", + "THICK0REF", "THICK1REF", "THICK4REF", "THICK5REF"}; + Map stats = new LinkedHashMap<>(); + for (String col : cols) { + long nonNull = 0, nonZero = 0; + Double min = null, max = null; + for (Map r : rows) { + Object raw = r.get(col); + if (raw == null) raw = r.get(col.toLowerCase()); + if (raw == null) continue; + nonNull++; + Number n = asNumber(raw); + if (n == null) continue; + double d = n.doubleValue(); + if (d != 0.0) nonZero++; + if (min == null || d < min) min = d; + if (max == null || d > max) max = d; + } + Map info = new LinkedHashMap<>(); + info.put("nonNullCount", nonNull); + info.put("nonZeroCount", nonZero); + info.put("min", min); + info.put("max", max); + stats.put(col, info); + } + Map result = new LinkedHashMap<>(); + result.put("matId", matId); + result.put("totalRows", rows.size()); + result.put("columnStats", stats); + List> samples = new ArrayList<>(); + if (!rows.isEmpty()) samples.add(rows.get(0)); + if (rows.size() > 1) samples.add(rows.get(rows.size() / 2)); + if (rows.size() > 2) samples.add(rows.get(rows.size() - 1)); + result.put("sampleRows", samples); + return result; + } + /** * 轧辊数据:返回全部在辊/备辊数据。 */ diff --git a/klp-admin/src/main/java/com/klp/framework/sqlserver/SqlServerApiController.java b/klp-admin/src/main/java/com/klp/framework/sqlserver/SqlServerApiController.java index b28a1f30..cad7f6ca 100644 --- a/klp-admin/src/main/java/com/klp/framework/sqlserver/SqlServerApiController.java +++ b/klp-admin/src/main/java/com/klp/framework/sqlserver/SqlServerApiController.java @@ -94,6 +94,15 @@ public class SqlServerApiController { return R.ok(businessService.getRealtimeData(matId)); } + /** + * 测试用:V_VBDA_GAUGE 各 THICK 列非空/非零统计 + 样本行。 + * 用于定位"末架出口厚度恒为 0"问题。 + */ + @GetMapping("/test/gauge-stats/{matId}") + public R> testGaugeStats(@PathVariable String matId) { + return R.ok(businessService.getGaugeStats(matId)); + } + /** * 轧辊数据:type / status 均可选,不传则返回全量。 */ diff --git a/klp-ui/src/views/micro/pages/acid/components/ActualPerformance.vue b/klp-ui/src/views/micro/pages/acid/components/ActualPerformance.vue index 2ef1242e..cbc942fc 100644 --- a/klp-ui/src/views/micro/pages/acid/components/ActualPerformance.vue +++ b/klp-ui/src/views/micro/pages/acid/components/ActualPerformance.vue @@ -268,7 +268,7 @@ const TREND_GROUPS = [ const GAUGE_COLS = [ { col: 'THICK0', title: '入口测厚仪 [%]' }, { col: 'THICK1', title: '1架出口厚度 [%]' }, - { col: 'THICK4', title: '末架出口厚度 [%]' }, + { col: 'THICK5', title: '末架出口厚度 [%]' }, { col: 'EXIT_SPEED', title: '轧制速度 [m/min]' } ] diff --git a/klp-ui/src/views/micro/pages/acid/components/QualityReportDialog.vue b/klp-ui/src/views/micro/pages/acid/components/QualityReportDialog.vue index 08de5cb9..fa7ad9ff 100644 --- a/klp-ui/src/views/micro/pages/acid/components/QualityReportDialog.vue +++ b/klp-ui/src/views/micro/pages/acid/components/QualityReportDialog.vue @@ -255,7 +255,7 @@ export default { if (!target) return '—' const total = this.gaugeRows.length const pass = this.gaugeRows.filter(r => { - const v = getRowVal(r, 'THICK4') || getRowVal(r, 'THICK1') + const v = getRowVal(r, 'THICK5') || getRowVal(r, 'THICK1') if (v == null) return true const dev = v - target return dev <= posLim && dev >= -negLim @@ -404,9 +404,9 @@ export default { } } - // THICK4 末架出口 - const t4 = colData(rows, 'THICK4') - const t4Ref = colData(rows, 'THICK4REF') + // THICK5 末架出口 + const t4 = colData(rows, 'THICK5') + const t4Ref = colData(rows, 'THICK5REF') if (t4.some(v => v != null)) { const c = this.initChart('chartThick4', 180) if (c) {