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] =?UTF-8?q?=E6=A8=A1=E6=9E=B6=E5=8E=9A=E5=BA=A6=E4=BF=AE?= =?UTF-8?q?=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) {