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) {