From 90cb7f4e99fec6ba65c461b3c8ea447825289de9 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Mon, 11 May 2026 14:48:06 +0800 Subject: [PATCH] =?UTF-8?q?feat(SqlServerApiClient):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=83=AD=E5=8D=B7ID=E6=9F=A5=E8=AF=A2=E5=B7=A5=E8=89=BA?= =?UTF-8?q?=E6=AE=B5=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加ArrayList导入用于存储COILID列表 - 修改queryProSegByHotCoilId方法实现分步查询 - 首先从PLTCM_PDI_PLAN表查询COILID - 添加空结果检查和异常处理逻辑 - 收集有效的COILID并过滤空值 - 使用IN查询一次性获取PLTCM_PRO_SEG表数据 - 按ENCOILID和SEGNO排序返回结果 --- .../framework/client/SqlServerApiClient.java | 41 ++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/klp-admin/src/main/java/com/klp/framework/client/SqlServerApiClient.java b/klp-admin/src/main/java/com/klp/framework/client/SqlServerApiClient.java index 859e8a77..7728b9dd 100644 --- a/klp-admin/src/main/java/com/klp/framework/client/SqlServerApiClient.java +++ b/klp-admin/src/main/java/com/klp/framework/client/SqlServerApiClient.java @@ -10,6 +10,7 @@ import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; import java.net.URI; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @@ -369,11 +370,47 @@ public class SqlServerApiClient { } public ExecuteSqlResponse queryProSegByHotCoilId(String hotCoilId) { - return executeSql( + // 先通过 HOT_COILID 从 PLTCM_PDI_PLAN 表查询到所有的 COILID + ExecuteSqlResponse planResponse = executeSql( "oracle", - "select * from JXPLTCM.PLTCM_PRO_SEG where HOT_COILID = :hotCoilId order by SEGNO", + "select COILID from JXPLTCM.PLTCM_PDI_PLAN where HOT_COILID = :hotCoilId", singletonParam("hotCoilId", hotCoilId) ); + + List> rows = (List>) planResponse.getResult(); + if (rows == null || rows.isEmpty()) { + // 如果没有找到对应的计划记录,返回空结果 + return new ExecuteSqlResponse(); + } + + // 收集所有有效的 COILID + List coilIds = new ArrayList<>(); + for (Map row : rows) { + String coilId = (String) row.get("COILID"); + if (coilId != null && !coilId.trim().isEmpty()) { + coilIds.add(coilId); + } + } + + if (coilIds.isEmpty()) { + return new ExecuteSqlResponse(); + } + + // 用所有的 COILID 去查询 PLTCM_PRO_SEG 表的 ENCOILID + // 使用 IN 查询一次性获取所有数据 + Map params = new java.util.HashMap<>(); + StringBuilder sql = new StringBuilder("select * from JXPLTCM.PLTCM_PRO_SEG where ENCOILID IN ("); + for (int i = 0; i < coilIds.size(); i++) { + if (i > 0) { + sql.append(", "); + } + String paramName = "coilId" + i; + sql.append(":").append(paramName); + params.put(paramName, coilIds.get(i)); + } + sql.append(") order by ENCOILID, SEGNO"); + + return executeSql("oracle", sql.toString(), params); } public ExecuteSqlResponse queryProSegByExcoilId(String excoilId) {