From 7095dd459ef7b7bdc63a73590af8e4da6a6b63e9 Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 7 Aug 2026 10:31:40 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qgc_base/domain/vo/EngStInfoResultVo.java | 2 +- .../qgc_base/domain/vo/EngVmsstbprptVo.java | 4 + .../qgc_base/service/ISdEngInfoBHService.java | 2 +- .../service/impl/SdEngInfoBHServiceImpl.java | 312 ++++++++++++++---- .../service/impl/WarnDataServiceImpl.java | 3 +- .../service/impl/QgcExportServiceImpl.java | 29 +- 6 files changed, 282 insertions(+), 70 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngStInfoResultVo.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngStInfoResultVo.java index 27e6ca72..a409c84a 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngStInfoResultVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngStInfoResultVo.java @@ -13,7 +13,7 @@ import java.util.Map; public class EngStInfoResultVo { @Schema(description = "主信息兼容对象") - private Map msStbprpT = new LinkedHashMap<>(); + private EngVmsstbprptVo msStbprpT; @Schema(description = "测值列表") private List stcdValVoList = new ArrayList<>(); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngVmsstbprptVo.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngVmsstbprptVo.java index 0554dae5..e82d20ac 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngVmsstbprptVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngVmsstbprptVo.java @@ -14,8 +14,12 @@ public class EngVmsstbprptVo implements Serializable { private static final long serialVersionUID = 1L; private String id; + private String sttp; private String sttpCode; private String sttpName; + private String sttpFullPath; + private String sttpTreeLevel; + private String rvcdFullPath; private String stcd; private String stnm; private String ennm; diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java index 026a2fc8..88af134a 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java @@ -80,7 +80,7 @@ public interface ISdEngInfoBHService extends IService { List selectRegDropdown(SdEngInfoBHRequest sdEngInfoBHRequest); - EngBaseInfoVo getStInfoByStcd(String stcd); + EngVmsstbprptVo getStInfoByStcd(String stcd); EngStInfoResultVo getStcdInfo(String stcd); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java index 01c9ef84..cec79c4d 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java @@ -1001,68 +1001,267 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl 0\n" + + " GROUP BY STCD, TM ) temp\n" + + " GROUP BY STCD) b ON b.STCD = eng.STCD " + + "LEFT JOIN MS_ALONG_B along ON along.BASEID = eng.BASE_ID AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + + "LEFT JOIN ( " + + " SELECT det.SORT,cfg.BASEID, cfg.RVCD, det.STCD " + + " FROM MS_ALONGDET_B det " + + " INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " + + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' " + + ") rstSort ON rstSort.BASEID = eng.BASE_ID AND rstSort.STCD = eng.STCD " + + "LEFT JOIN ( " + + " SELECT det.SORT,cfg.BASEID, cfg.RVCD, det.STCD " + + " FROM MS_ALONGDET_B det " + + " INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID " + + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' " + + ") siteSort ON siteSort.BASEID = eng.BASE_ID AND siteSort.STCD = eng.STCD " + + "WHERE NVL(eng.IS_DELETED, 0) = 0 "; } @Override @@ -1070,27 +1269,27 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl stInfoMap = microservicDynamicSQLMapper.getOneBySql(buildStcdInfoViewSql(), Collections.singletonMap("stcd", stcd)); if (stInfoMap != null && !stInfoMap.isEmpty()) { EngStInfoResultVo result = new EngStInfoResultVo(); - result.setMsStbprpT(buildCamelCaseMsStbprpTMap(stInfoMap)); + result.setMsStbprpT(baseInfo); result.setStBaseInfo(buildStBaseInfo(stInfoMap)); return result; } - EngBaseInfoVo baseInfo = getStInfoByStcd(stcd); - if (baseInfo == null) { - return null; - } EngStBaseInfoVo stBaseInfo = new EngStBaseInfoVo(); stBaseInfo.setStcd(baseInfo.getStcd()); stBaseInfo.setStnm(baseInfo.getStnm()); stBaseInfo.setSttpCode(baseInfo.getSttpCode()); stBaseInfo.setSttpName(baseInfo.getSttpName()); - stBaseInfo.setSttpFullPath(baseInfo.getSttpFullPath()); - stBaseInfo.setSttpTreeLevel(baseInfo.getSttpTreeLevel()); +// stBaseInfo.setSttpFullPath(baseInfo.getSttpFullPath()); +// stBaseInfo.setSttpTreeLevel(baseInfo.getSttpTreeLevel()); stBaseInfo.setStCode(null); stBaseInfo.setStName(null); stBaseInfo.setBaseId(baseInfo.getBaseId()); @@ -1340,7 +1539,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl sortStationsByOrder(List stations) { - // 按 RSTCD 收集沿程排序 - List rstcds = stations.stream().map(StationInfo::getRstcd).filter(Objects::nonNull).distinct().toList(); - if (rstcds.isEmpty()) return stations; + // 收集所有测站的 STCD(沿程表匹配的是 STCD 测站编码) + List stcds = stations.stream().map(StationInfo::getStcd).filter(Objects::nonNull).distinct().toList(); + if (stcds.isEmpty()) return stations; - List> orderList = msAlongdetBMapper.selectAlongSortOrder(rstcds); + // 查询沿程排序(MS_ALONGDET_B.STCD + MS_ALONG_B.ORDER_INDEX) + List> orderList = msAlongdetBMapper.selectAlongSortOrder(stcds); Map orderMap = new LinkedHashMap<>(); for (Map m : orderList) { - String rstcd = (String) m.get("RSTCD"); - Object sortObj = m.get("SORT"); - if (rstcd != null && sortObj instanceof Number) { - orderMap.put(rstcd, ((Number) sortObj).intValue()); + String stcd = (String) m.get("STCD"); + Object orderObj = m.get("ORDER_INDEX"); + if (stcd != null && orderObj instanceof Number) { + orderMap.put(stcd, ((Number) orderObj).intValue()); } } + if (orderMap.isEmpty()) { + // 无沿程配置时按电站名称排序 + stations.sort(Comparator.comparing(s -> s.getEnnm() != null ? s.getEnnm() : s.getStnm() != null ? s.getStnm() : "")); + return stations; + } + List sorted = new ArrayList<>(stations); sorted.sort((a, b) -> { - Integer oa = orderMap.get(a.getRstcd()); - Integer ob = orderMap.get(b.getRstcd()); + Integer oa = orderMap.get(a.getStcd()); + Integer ob = orderMap.get(b.getStcd()); if (oa != null && ob != null) return oa.compareTo(ob); if (oa != null) return -1; if (ob != null) return 1;