From e9633595b71ad48914c6bbb0aeed22e11db5c478 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 13 Jul 2026 11:30:06 +0800 Subject: [PATCH 01/16] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WarnDataServiceImpl.java | 310 +++++++++++++++++- 1 file changed, 307 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/warn/service/impl/WarnDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/warn/service/impl/WarnDataServiceImpl.java index 1ec35350..678074c0 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/warn/service/impl/WarnDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/warn/service/impl/WarnDataServiceImpl.java @@ -1,5 +1,6 @@ package com.yfd.platform.qgc_env.warn.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; @@ -28,10 +29,13 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.Comparator; import java.util.Date; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; @Service public class WarnDataServiceImpl implements WarnDataService { @@ -264,6 +268,7 @@ public class WarnDataServiceImpl implements WarnDataService { @Cacheable(cacheNames = "warn#3600", keyGenerator = "cacheKeyGenerator") public DataSourceResult getAlarmPointKendoListCust(DataSourceRequest dataSourceRequest) { DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + GroupingInfo[] groupInfos = loadOptions == null ? null : loadOptions.getGroup(); String startTimeText = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "startTime"); String endTimeText = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "endTime"); @@ -295,10 +300,23 @@ public class WarnDataServiceImpl implements WarnDataService { List> expressionRows = microservicDynamicSQLMapper.getAllList(buildAlarmPointLegendSql(), new HashMap<>()); List resultList = mergeAlarmPointData(points, qecCountMap, wqCountMap, expressionRows, yyyy); + List filteredList = applyAlarmPointFilter( + resultList, + dataSourceRequest == null ? null : dataSourceRequest.getFilter() + ); + applyAlarmPointSort(filteredList, dataSourceRequest == null ? null : dataSourceRequest.getSort()); + + if (CollUtil.isNotEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { + List> rows = buildAlarmPointGroupRows(filteredList); + return QgcQueryWrapperUtil.buildGroupResult(dataSourceRequest, rows); + } + + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List pageList = applyAlarmPointPage(filteredList, loadOptions); DataSourceResult result = new DataSourceResult<>(); - result.setData(resultList); - result.setTotal(resultList.size()); + result.setData(pageList); + result.setTotal(page != null ? (long) filteredList.size() : (long) filteredList.size()); result.setAggregates(new HashMap<>()); return result; } @@ -1383,12 +1401,13 @@ public class WarnDataServiceImpl implements WarnDataService { if (point == null || !isAlarmPointVisible(point.getAnchoPointState())) { continue; } - point.setAnchoPointState(normalizeAlarmPointState(point.getAnchoPointState()) + "_ALARM"); + point.setAnchoPointState(normalizeAlarmPointState(point.getAnchoPointState())); point.setStqCount(qecCountMap.getOrDefault(point.getStcd(), 0)); point.setWqCount(wqCountMap.getOrDefault(point.getStcd(), 0)); point.setZCount(0); point.setWtCount(0); point.setYyyy(yyyy); + point.setSttpMap(point.getSttpMap() + "_ALARM"); point.setSttpCode("ENG"); int total = point.getStqCount() + point.getWqCount(); applyAlarmPointRange(point, total, expressionRows); @@ -1397,6 +1416,291 @@ public class WarnDataServiceImpl implements WarnDataService { return result; } + private List applyAlarmPointFilter(List source, DataSourceRequest.FilterDescriptor filter) { + if (CollUtil.isEmpty(source) || filter == null) { + return source; + } + List result = new ArrayList<>(); + for (AlarmPointVo item : source) { + if (matchesAlarmPointFilter(item, filter)) { + result.add(item); + } + } + return result; + } + + private boolean matchesAlarmPointFilter(AlarmPointVo item, DataSourceRequest.FilterDescriptor filter) { + if (item == null || filter == null) { + return true; + } + if (CollUtil.isNotEmpty(filter.getFilters())) { + String logic = StrUtil.blankToDefault(filter.getLogic(), "and"); + if ("or".equalsIgnoreCase(logic)) { + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + if (matchesAlarmPointFilter(item, child)) { + return true; + } + } + return false; + } + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + if (!matchesAlarmPointFilter(item, child)) { + return false; + } + } + return true; + } + if (StrUtil.isBlank(filter.getField()) || StrUtil.isBlank(filter.getOperator())) { + return true; + } + if (isAlarmPointMetaField(filter.getField())) { + return true; + } + Object actualValue = getAlarmPointFieldValue(item, filter.getField()); + return compareAlarmPointField(actualValue, filter.getValue(), filter.getOperator(), filter.isIgnoreCase()); + } + + private boolean isAlarmPointMetaField(String field) { + return "startTime".equals(field) || "endTime".equals(field); + } + + private boolean compareAlarmPointField(Object actualValue, Object expectedValue, String operator, boolean ignoreCase) { + if ("isblank".equalsIgnoreCase(operator)) { + return actualValue == null || StrUtil.isBlank(String.valueOf(actualValue)); + } + if ("isnotblank".equalsIgnoreCase(operator)) { + return actualValue != null && StrUtil.isNotBlank(String.valueOf(actualValue)); + } + if (actualValue == null) { + return expectedValue == null && ("eq".equalsIgnoreCase(operator) || "=".equals(operator)); + } + + String actualText = String.valueOf(actualValue); + String expectedText = expectedValue == null ? null : String.valueOf(expectedValue); + String left = ignoreCase && actualText != null ? actualText.toLowerCase() : actualText; + String right = ignoreCase && expectedText != null ? expectedText.toLowerCase() : expectedText; + + switch (operator.toLowerCase()) { + case "eq": + case "=": + return Objects.equals(normalizeAlarmPointCompareValue(actualValue), normalizeAlarmPointCompareValue(expectedValue)) + || Objects.equals(left, right); + case "neq": + case "<>": + return !Objects.equals(normalizeAlarmPointCompareValue(actualValue), normalizeAlarmPointCompareValue(expectedValue)) + && !Objects.equals(left, right); + case "contains": + return right != null && left != null && left.contains(right); + case "doesnotcontain": + return right == null || left == null || !left.contains(right); + case "startswith": + return right != null && left != null && left.startsWith(right); + case "endswith": + return right != null && left != null && left.endsWith(right); + case "gt": + return compareAlarmPointComparable(actualValue, expectedValue) > 0; + case "gte": + case "ge": + return compareAlarmPointComparable(actualValue, expectedValue) >= 0; + case "lt": + return compareAlarmPointComparable(actualValue, expectedValue) < 0; + case "lte": + case "le": + return compareAlarmPointComparable(actualValue, expectedValue) <= 0; + default: + return true; + } + } + + private Object normalizeAlarmPointCompareValue(Object value) { + if (value == null) { + return null; + } + if (value instanceof Number) { + return new BigDecimal(value.toString()); + } + if (value instanceof Date) { + return ((Date) value).getTime(); + } + String text = String.valueOf(value).trim(); + if (StrUtil.isBlank(text)) { + return text; + } + if (StrUtil.isNumeric(text)) { + return new BigDecimal(text); + } + return text; + } + + private int compareAlarmPointComparable(Object actualValue, Object expectedValue) { + Object left = normalizeAlarmPointCompareValue(actualValue); + Object right = normalizeAlarmPointCompareValue(expectedValue); + if (left == null && right == null) { + return 0; + } + if (left == null) { + return -1; + } + if (right == null) { + return 1; + } + if (left instanceof BigDecimal && right instanceof BigDecimal) { + return ((BigDecimal) left).compareTo((BigDecimal) right); + } + if (left instanceof Long && right instanceof Long) { + return Long.compare((Long) left, (Long) right); + } + return String.valueOf(left).compareTo(String.valueOf(right)); + } + + private void applyAlarmPointSort(List list, List sorts) { + if (CollUtil.isEmpty(list) || CollUtil.isEmpty(sorts)) { + return; + } + Comparator comparator = null; + for (DataSourceRequest.SortDescriptor sort : sorts) { + if (sort == null || StrUtil.isBlank(sort.getField()) || Boolean.FALSE.equals(sort.getNeedSortFlag())) { + continue; + } + Comparator current = (left, right) -> compareAlarmPointSortValue( + buildAlarmPointSortValue(getAlarmPointFieldValue(left, sort.getField())), + buildAlarmPointSortValue(getAlarmPointFieldValue(right, sort.getField())) + ); + if ("desc".equalsIgnoreCase(sort.getDir()) || "des".equalsIgnoreCase(sort.getDir())) { + current = current.reversed(); + } + comparator = comparator == null ? current : comparator.thenComparing(current); + } + if (comparator != null) { + list.sort(comparator); + } + } + + private Comparable buildAlarmPointSortValue(Object value) { + if (value == null) { + return null; + } + if (value instanceof BigDecimal) { + return (BigDecimal) value; + } + if (value instanceof Integer) { + return (Integer) value; + } + if (value instanceof Long) { + return (Long) value; + } + if (value instanceof Date) { + return ((Date) value).getTime(); + } + return String.valueOf(value); + } + + private int compareAlarmPointSortValue(Comparable left, Comparable right) { + if (left == null && right == null) { + return 0; + } + if (left == null) { + return 1; + } + if (right == null) { + return -1; + } + return String.valueOf(left).compareTo(String.valueOf(right)); + } + + private List applyAlarmPointPage(List source, DataSourceLoadOptionsBase loadOptions) { + if (CollUtil.isEmpty(source) || loadOptions == null || loadOptions.getTake() == null || loadOptions.getTake() <= 0) { + return source; + } + int skip = loadOptions.getSkip() == null ? 0 : Math.max(loadOptions.getSkip(), 0); + if (skip >= source.size()) { + return new ArrayList<>(); + } + int endIndex = Math.min(skip + loadOptions.getTake(), source.size()); + return new ArrayList<>(source.subList(skip, endIndex)); + } + + private List> buildAlarmPointGroupRows(List source) { + List> rows = new ArrayList<>(); + if (CollUtil.isEmpty(source)) { + return rows; + } + for (AlarmPointVo item : source) { + rows.add(new LinkedHashMap<>(BeanUtil.beanToMap(item))); + } + return rows; + } + + private Object getAlarmPointFieldValue(AlarmPointVo item, String field) { + if (item == null || StrUtil.isBlank(field)) { + return null; + } + switch (field) { + case "sttp": + return item.getSttp(); + case "stcd": + return item.getStcd(); + case "lgtd": + return item.getLgtd(); + case "lttd": + return item.getLttd(); + case "dtmel": + return item.getDtmel(); + case "anchoPointState": + return item.getAnchoPointState(); + case "sttpMap": + return item.getSttpMap(); + case "titleName": + return item.getTitleName(); + case "distance": + return item.getDistance(); + case "rvcd": + return item.getRvcd(); + case "addvcd": + return item.getAddvcd(); + case "baseId": + return item.getBaseId(); + case "rstcds": + return item.getRstcds(); + case "sttpCode": + return item.getSttpCode(); + case "ennm": + return item.getEnnm(); + case "rvnm": + return item.getRvnm(); + case "endInstalledType": + return item.getEndInstalledType(); + case "stqCount": + return item.getStqCount(); + case "wqCount": + return item.getWqCount(); + case "zCount": + return item.getZCount(); + case "wtCount": + return item.getWtCount(); + case "yyyy": + return item.getYyyy(); + case "range": + return item.getRange(); + case "ttpwr": + return item.getTtpwr(); + case "baseName": + return item.getBaseName(); + case "rstcd": + return item.getRstcd(); + case "rvcdStepSort": + return item.getRvcdStepSort(); + case "rstcdStepSort": + return item.getRstcdStepSort(); + case "siteStepSort": + return item.getSiteStepSort(); + case "logo": + return item.getLogo(); + default: + return null; + } + } + private boolean isAlarmPointVisible(String state) { return "large_eng_built".equals(state) || "mid_eng_built".equals(state) From 4329f5c19646b00d560d5e93e3dd852ac7e4462a Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 13 Jul 2026 14:07:56 +0800 Subject: [PATCH 02/16] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=94=9A?= =?UTF-8?q?=E7=82=B9=E7=BC=93=E5=AD=98=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yfd/platform/config/RedisConfig.java | 6 ++++++ .../service/impl/SdEngInfoBHServiceImpl.java | 12 +++++++++--- .../wq/service/impl/EnvWqDataServiceImpl.java | 2 +- .../wt/service/impl/SdWtMonitorServiceImpl.java | 10 ++++++++++ 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/config/RedisConfig.java b/backend/src/main/java/com/yfd/platform/config/RedisConfig.java index e5f1f5f9..1b2e0783 100644 --- a/backend/src/main/java/com/yfd/platform/config/RedisConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/RedisConfig.java @@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.yfd.platform.utils.SecurityUtils; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.interceptor.KeyGenerator; @@ -114,4 +115,9 @@ public class RedisConfig { public KeyGenerator cacheKeyGenerator() { return (target, method, params) -> target.getClass().getName() + "." + method.getName() + ":" + DigestUtil.md5Hex(JSONUtil.toJsonStr(params)); } + + @Bean("cacheKeyByUserGenerator") + public KeyGenerator cacheKeyByUserGenerator() { + return (target, method, params) -> SecurityUtils.getUserId()+"."+target.getClass().getName() + "." + method.getName() + ":" + DigestUtil.md5Hex(JSONUtil.toJsonStr(params)); + } } \ No newline at end of file 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 d37e12a3..c2a4aba0 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 @@ -2839,6 +2839,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl getEngPointKendoListCust(DataSourceRequest dataSourceRequest) { DataSourceResult result = new DataSourceResult<>(); result.setAggregates(new HashMap<>()); @@ -2975,10 +2976,15 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl result = new DataSourceResult<>(); Map pointParamMap = new HashMap<>(); StringBuilder pointSql = new StringBuilder(buildAlarmPointBaseSql()); -// DataScopeApplyResult scopeApplyResult = dataScopeFilterService.appendCurrentUserStationScope(pointSql, pointParamMap, "eng.STCD"); + DataScopeApplyResult scopeApplyResult = dataScopeFilterService.appendCurrentUserStationScope(pointSql, pointParamMap, "eng.STCD"); + if (scopeApplyResult.isEmptyResult()) { + result.setData(new ArrayList<>()); + result.setTotal(0L); + return result; + } List points= microservicDynamicSQLMapper.getAllListWithResultType( pointSql.toString(), pointParamMap, @@ -3004,7 +3010,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl> expressionRows = microservicDynamicSQLMapper.getAllList(buildAlarmPointLegendSql(), new HashMap<>()); List resultList = mergeAlarmPointData(points, qecCountMap, wqCountMap, expressionRows, yyyy); - DataSourceResult result = new DataSourceResult<>(); + result.setData(resultList); result.setTotal(resultList.size()); result.setAggregates(new HashMap<>()); diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java index e45490d4..2fd5cc9a 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java @@ -4557,7 +4557,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { } @Override -// @Cacheable(cacheNames = "weCache#3600", keyGenerator = "cacheKeyGenerator") + @Cacheable(cacheNames = "wqCache#3600", keyGenerator = "cacheKeyByUserGenerator") public DataSourceResult getAnchorPointKendoListCust(DataSourceRequest dataSourceRequest) { DataSourceResult dataSourceResult = new DataSourceResult<>(); dataSourceResult.setAggregates(new HashMap<>()); diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java index 1e3d7581..868bb3db 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java @@ -34,6 +34,7 @@ import com.yfd.platform.utils.RedisCacheUtil; import com.yfd.platform.utils.SecurityUtils; import jakarta.annotation.Resource; import lombok.Data; +import org.springframework.cache.annotation.Cacheable; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -2846,6 +2847,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { } @Override + @Cacheable(cacheNames = "dwCache#3600", keyGenerator = "cacheKeyByUserGenerator") public DataSourceResult getFacilityPointKendoListCust(DataSourceRequest dataSourceRequest) { DataSourceResult dataSourceResult = new DataSourceResult<>(); dataSourceResult.setAggregates(new HashMap<>()); @@ -2943,6 +2945,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { } @Override + @Cacheable(cacheNames = "wtCache#3600", keyGenerator = "cacheKeyByUserGenerator") public DataSourceResult getEngTempPointListKendoListCust(DataSourceRequest dataSourceRequest) { DataSourceResult dataSourceResult = new DataSourceResult<>(); dataSourceResult.setAggregates(new HashMap<>()); @@ -3016,6 +3019,13 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { // paramMap.put("dtinType", dtinType); // } + DataScopeApplyResult scopeApplyResult = dataScopeFilterService.appendCurrentUserStationScope(sql, paramMap, "t.RSTCD"); + if (scopeApplyResult.isEmptyResult()) { + dataSourceResult.setData(new ArrayList<>()); + dataSourceResult.setTotal(0L); + return dataSourceResult; + } + List sort = dataSourceRequest.getSort(); if (sort != null && !sort.isEmpty()) { sql.append(" ORDER BY "); From b119e07eb6f138650d0040f8a5b32893710dc744 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 13 Jul 2026 15:06:09 +0800 Subject: [PATCH 03/16] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=94=9A?= =?UTF-8?q?=E7=82=B9=E7=BC=93=E5=AD=98=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fpr/service/impl/FprMonitorServiceImpl.java | 2 +- .../vd/service/impl/VdMonitorServiceImpl.java | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fpr/service/impl/FprMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/fpr/service/impl/FprMonitorServiceImpl.java index 339cc4b3..864df8d9 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/fpr/service/impl/FprMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fpr/service/impl/FprMonitorServiceImpl.java @@ -173,7 +173,7 @@ public class FprMonitorServiceImpl implements FprMonitorService { .append("hb.BASENAME AS baseName, ") .append("aim.STTP AS sttp, ") .append("sttp.STTP_NAME AS sttpName, ") - .append("'' AS anchoPointState, ") + .append("'fprd' AS anchoPointState, ") .append("aim.MWAY AS mway, ") .append("aim.DTIN AS dtin, ") // .append("aim.STDSSTATE AS stdSstate, ") diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java index b403fe41..e8b5c32c 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java @@ -9,6 +9,8 @@ import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.GroupHelper; import com.yfd.platform.common.GroupingInfo; import com.yfd.platform.common.MicroservicDynamicSQLMapper; +import com.yfd.platform.qgc_base.domain.vo.DataScopeApplyResult; +import com.yfd.platform.qgc_base.service.IDataScopeFilterService; import com.yfd.platform.qgc_env.vd.entity.vo.VdAiPointVo; import com.yfd.platform.qgc_env.vd.entity.vo.VdPointVo; import com.yfd.platform.qgc_env.vd.entity.vo.VdRunDataVo; @@ -18,6 +20,7 @@ import com.yfd.platform.qgc_env.vd.entity.vo.VdVmsstbprptVo; import com.yfd.platform.qgc_env.vd.service.VdMonitorService; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -33,6 +36,9 @@ public class VdMonitorServiceImpl implements VdMonitorService { @Resource private MicroservicDynamicSQLMapper microservicDynamicSQLMapper; + @Resource + private IDataScopeFilterService dataScopeFilterService; + @Override public DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest) { @@ -222,6 +228,7 @@ public class VdMonitorServiceImpl implements VdMonitorService { } @Override + @Cacheable(cacheNames = "vdCache#3600", keyGenerator = "cacheKeyByUserGenerator") public DataSourceResult getVdPointKendoListCust(DataSourceRequest dataSourceRequest) { DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); if (CollUtil.isNotEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) { @@ -525,10 +532,15 @@ public class VdMonitorServiceImpl implements VdMonitorService { sql.append(" AND ").append(filterSql).append(" "); } sql.append(buildVdPointOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); - + DataSourceResult result = new DataSourceResult<>(); + DataScopeApplyResult scopeApplyResult = dataScopeFilterService.appendCurrentUserStationScope(sql, paramMap, "t.RSTCD"); + if (scopeApplyResult.isEmptyResult()) { + result.setData(new ArrayList<>()); + result.setTotal(0L); + return result; + } List list = microservicDynamicSQLMapper.pageAllListWithResultType( page, sql.toString(), paramMap, VdPointVo.class); - DataSourceResult result = new DataSourceResult<>(); result.setData(list); result.setTotal(page != null ? page.getTotal() : list.size()); result.setAggregates(new HashMap<>()); From 90a87128d462c33f6cf1ad344ecce3c2d1ef5ef8 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 13 Jul 2026 15:26:50 +0800 Subject: [PATCH 04/16] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=94=9A?= =?UTF-8?q?=E7=82=B9=E7=BC=93=E5=AD=98=E6=95=B0=E6=8D=AE=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fb/service/impl/FbStationServiceImpl.java | 2 +- .../fp/service/impl/FpBuildServiceImpl.java | 20 +++++++------- .../impl/VpConstructionServiceImpl.java | 27 ++++++++++++------- 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/impl/FbStationServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/impl/FbStationServiceImpl.java index af960fd2..dda0ae22 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/impl/FbStationServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/impl/FbStationServiceImpl.java @@ -4633,7 +4633,7 @@ public class FbStationServiceImpl implements FbStationService { .append("NVL(along.ORDER_INDEX, 999999) AS rvcdStepSort, ") .append("NVL(rstSort.SORT, 999999) AS rstcdStepSort, ") .append("NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, ") - .append("'" + sttp + "' AS anchoPointState, ") + .append("'" + sttp.toLowerCase() + "' AS anchoPointState, ") .append("CASE WHEN b.lcjStatus IS NOT NULL THEN 1 ELSE 2 END AS lcjStatus ") .append("FROM SD_FBRD_B_H a ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = a.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fp/service/impl/FpBuildServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/fp/service/impl/FpBuildServiceImpl.java index 3491ebed..de386059 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/fp/service/impl/FpBuildServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fp/service/impl/FpBuildServiceImpl.java @@ -255,11 +255,11 @@ public class FpBuildServiceImpl implements FpBuildService { "eng.BASE_ID AS baseId, " + "fp.STTP AS sttp, " + "CASE " + - "WHEN fp.STTP = 'FP_1' THEN 'GY_1' " + - "WHEN fp.STTP = 'FP_2' THEN 'GY_2' " + - "WHEN fp.STTP = 'FP_3' THEN 'GY_3' " + - "WHEN fp.STTP = 'FP_4' THEN 'GY_4' " + - "ELSE 'GY_5' END AS anchoPointState, " + + "WHEN fp.STTP = 'FP_1' THEN 'gy_1' " + + "WHEN fp.STTP = 'FP_2' THEN 'gy_2' " + + "WHEN fp.STTP = 'FP_3' THEN 'gy_3' " + + "WHEN fp.STTP = 'FP_4' THEN 'gy_4' " + + "ELSE 'gy_5' END AS anchoPointState, " + "fp.MWAY AS mway, " + "fp.DTIN AS dtin, " + "state.STD_SSTATE AS stdSstate, " + @@ -1304,15 +1304,15 @@ public class FpBuildServiceImpl implements FpBuildService { for (FpAnchoPointVo vo : resultList) { String sttp = vo.getSttp(); if ("FP_1".equals(sttp)) { - vo.setAnchoPointState("GY_1_BUILT"); + vo.setAnchoPointState("gy_1_built"); } else if ("FP_2".equals(sttp)) { - vo.setAnchoPointState("GY_2_BUILT"); + vo.setAnchoPointState("gy_2_built"); } else if ("FP_3".equals(sttp)) { - vo.setAnchoPointState("GY_3_BUILT"); + vo.setAnchoPointState("gy_3_built"); } else if ("FP_4".equals(sttp)) { - vo.setAnchoPointState("GY_4_BUILT"); + vo.setAnchoPointState("gy_4_built"); } else { - vo.setAnchoPointState("GY_5_BUILT"); + vo.setAnchoPointState("gy_5_built"); } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vap/service/impl/VpConstructionServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/vap/service/impl/VpConstructionServiceImpl.java index 91295b17..9a0ea040 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vap/service/impl/VpConstructionServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vap/service/impl/VpConstructionServiceImpl.java @@ -1980,15 +1980,24 @@ public class VpConstructionServiceImpl implements VpConstructionService { List resultList = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, FhvapBuiltPointVo.class); for (FhvapBuiltPointVo vo : resultList) { - String sttp = vo.getSttp(); - if ("VP".equals(sttp)) { - vo.setAnchoPointState("GY_1_BUILT"); - } else if ("VA".equals(sttp)) { - vo.setAnchoPointState("GY_2_BUILT"); - } else if ("FH".equals(sttp)) { - vo.setAnchoPointState("GY_3_BUILT"); - } else { - vo.setAnchoPointState("GY_4_BUILT"); +// String sttp = vo.getSttp(); +// if ("VP".equals(sttp)) { +// vo.setAnchoPointState("gy_1_built"); +// } else if ("VA".equals(sttp)) { +// vo.setAnchoPointState("gy_2_built"); +// } else if ("FH".equals(sttp)) { +// vo.setAnchoPointState("gy_3_built"); +// } else { +// vo.setAnchoPointState("gy_4_built"); +// } + // 设置在建栖息地/珍稀植物园/动物救助站 + if ("1".equals(vo.getBldsttCcode())) { + if ("FP".equals(vo.getSttp())) { + vo.setAnchoPointState("VP_built"); + } + if ("VA".equals(vo.getSttp())) { + vo.setAnchoPointState("VA_built"); + } } } From 27076230d9345c2e04bdf64242cbc86153561f20 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 13 Jul 2026 16:48:12 +0800 Subject: [PATCH 05/16] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eq/entity/vo/EngEqVmsstbprptVo.java | 36 +++++++++++++++++++ .../eq/service/impl/EngEqDataServiceImpl.java | 22 +++++++++++- 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqVmsstbprptVo.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqVmsstbprptVo.java index e3a444c1..c2fdff5e 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqVmsstbprptVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/entity/vo/EngEqVmsstbprptVo.java @@ -4,6 +4,8 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; @Data @Schema(description = "电站统计查询") @@ -26,9 +28,22 @@ public class EngEqVmsstbprptVo implements Serializable { @Schema(description = "工程名称") private String ennm; + @Schema(description = "总投运容量") + private Double ttcp; + @Schema(description = "基地编码") private String baseId; + /** + * 开发方式 字典编码:sd_enginfo_b_h.dvtp 1=堤坝式 2=引水式 3=混合式 + */ + @Schema(description = "开发方式") + private String dvtp; + + + @Schema(description = "开发方式名称") + private String dvtpName; + @Schema(description = "基地名称") private String baseName; @@ -38,6 +53,12 @@ public class EngEqVmsstbprptVo implements Serializable { @Schema(description = "基地流域名称") private String hbrvcdName; + @Schema(description = "行政区") + private String addvcd; + + @Schema(description = "行政区名称") + private String addvcdName; + @Schema(description = "流域编码") private String rvcd; @@ -50,15 +71,30 @@ public class EngEqVmsstbprptVo implements Serializable { @Schema(description = "建设状态") private String bldstt; + @Schema(description = "装机容量") + private BigDecimal ttpwr; + @Schema(description = "建设状态分类") private Integer bldsttCcode; + @Schema(description = "建设状态分类") + private String bldsttCcodeName; + @Schema(description = "环保数据接入状态") private Integer dtinEnv; @Schema(description = "接入状态") private Integer dtin; + @Schema(description = "多年平均发电量") + private BigDecimal yrge; + + @Schema(description = "首台机组投运时间") + private Date piodt; + + @Schema(description = "所有机组投运时间") + private Date aiodt; + @Schema(description = "基地排序") private Integer baseStepSort; diff --git a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java index b1801412..61e8914e 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_eng/eq/service/impl/EngEqDataServiceImpl.java @@ -1122,7 +1122,7 @@ public class EngEqDataServiceImpl implements EngEqDataService { .append("WHERE NVL(eng.IS_DELETED, 0) = 0 ") .append("AND NVL(eng.DTIN, 0) = 1 ") .append("AND NVL(eng.BLDSTT_CODE, 0) IN (1, 2) ") - .append("AND EXISTS (SELECT 1 FROM SD_QEC_R qec WHERE qec.STCD = eng.STCD AND NVL(qec.IS_DELETED, 0) = 0) "); + .append("AND RUN_STATE = 4 "); if (StrUtil.isNotBlank(baseId)) { sql.append("AND eng.BASE_ID = #{map.baseId} "); paramMap.put("baseId", baseId); @@ -3371,7 +3371,11 @@ public class EngEqDataServiceImpl implements EngEqDataService { "'电站' AS sttpName, " + "eng.STCD AS stcd, " + "pbh.TTPWR AS ttpwr, " + + "pbh.YRGE AS yrge, " + "eng.ENNM AS stnm, " + + "eng.PIODT AS piodt, " + + "CAST(16.39 AS NUMBER) AS ttcp,"+ + "eng.AIODT AS aiodt, " + "eng.ENNM AS ennm, " + "eng.BASE_ID AS baseId, " + "hb.BASENAME AS baseName, " + @@ -3380,9 +3384,14 @@ public class EngEqDataServiceImpl implements EngEqDataService { "eng.RVCD AS rvcd, " + "rv.RVNM AS rvcdName, " + "eng.PRSC AS prsc, " + + "eng.DVTP AS dvtp, " + + "eng.ADDVCD AS addvcd, " + + "ad.ADDVNM AS addvcdName, " + + "CASE eng.DVTP WHEN '1' THEN '堤坝式' WHEN '2' THEN '引水式' WHEN '3' THEN '混合式' ELSE '未知' END AS dvtpName,"+ "eng.RUN_STATE AS runState, " + "eng.BLDSTT AS bldstt, " + "eng.BLDSTT_CODE AS bldsttCcode, " + + "CASE WHEN eng.BLDSTT_CODE =2 THEN '已建' WHEN eng.BLDSTT_CODE =1 THEN '在建' ELSE '未建/规划' END AS bldsttCcodeName, " + "eng.DTIN_ENV AS dtinEnv, " + "eng.DTIN AS dtin, " + "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " + @@ -3393,6 +3402,7 @@ public class EngEqDataServiceImpl implements EngEqDataService { "INNER JOIN SD_PWR_B_H pbh ON pbh.STCD= eng.STCD " + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID " + + "LEFT JOIN SD_ADDVCD_DIC ad ON ad.ADDVCD = eng.ADDVCD" + " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + "LEFT JOIN MS_ALONG_B along ON along.RVCD = eng.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + @@ -3424,7 +3434,11 @@ public class EngEqDataServiceImpl implements EngEqDataService { columns.put("sttpName", "t.sttpName AS sttpName"); columns.put("stcd", "t.stcd AS stcd"); columns.put("stnm", "t.stnm AS stnm"); + columns.put("yrge", "t.yrge AS yrge"); + columns.put("piodt", "t.piodt AS piodt"); + columns.put("aiodt", "t.aiodt AS aiodt"); columns.put("ennm", "t.ennm AS ennm"); + columns.put("ttcp", "t.ttcp AS ttcp"); columns.put("baseId", "t.baseId AS baseId"); columns.put("baseName", "t.baseName AS baseName"); columns.put("hbrvcd", "t.hbrvcd AS hbrvcd"); @@ -3432,8 +3446,14 @@ public class EngEqDataServiceImpl implements EngEqDataService { columns.put("rvcd", "t.rvcd AS rvcd"); columns.put("rvcdName", "t.rvcdName AS rvcdName"); columns.put("prsc", "t.prsc AS prsc"); + columns.put("dvtp", "t.dvtp AS dvtp"); + columns.put("dvtpName", "t.dvtpName AS dvtpName"); + columns.put("addvcd", "t.addvcd AS addvcd"); + columns.put("addvcdName", "t.addvcdName AS addvcdName"); columns.put("bldstt", "t.bldstt AS bldstt"); + columns.put("ttpwr", "t.ttpwr AS ttpwr"); columns.put("bldsttCcode", "t.bldsttCcode AS bldsttCcode"); + columns.put("bldsttCcodeName", "t.bldsttCcodeName AS bldsttCcodeName"); columns.put("dtin", "t.dtin AS dtin"); columns.put("runState", "t.runState AS runState"); columns.put("dtinEnv", "t.dtinEnv AS dtinEnv"); From 2cfee388c12260ecec111d13a586419d75c9cbba Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 14 Jul 2026 10:57:07 +0800 Subject: [PATCH 06/16] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SdEngInfoBHServiceImpl.java | 3 ++- .../eq/service/impl/EngEqDataServiceImpl.java | 3 ++- .../wq/service/impl/EnvWqDataServiceImpl.java | 5 +++-- .../service/impl/SdWtMonitorServiceImpl.java | 16 ++++++++++++++-- .../qgc_env/wte/entity/vo/WeVmsstbprptVo.java | 9 +++++++++ .../wte/service/impl/WeFishServiceImpl.java | 18 +++++++++++++++++- 6 files changed, 47 insertions(+), 7 deletions(-) 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 c2a4aba0..5f599d11 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 @@ -1256,7 +1256,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl item = new LinkedHashMap<>(); if (countValue == null) { countValue = row.get("count_stcd"); } @@ -3321,7 +3322,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { count = Long.parseLong(String.valueOf(countValue)); } - Map item = new LinkedHashMap<>(); + item.put("key", key); item.put("keyName", null); item.put("keyExt", new HashMap<>()); @@ -3330,7 +3331,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { detail.put(upperField, key); detail.put(countField, count); item.put("items", List.of(detail)); - item.put("count", 0); + item.put("count", count); item.put("summary", new Object[0]); Map aggregates = new LinkedHashMap<>(); diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java index 868bb3db..e29a737f 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java @@ -791,8 +791,20 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { sql.append("AND wt.STTP = #{map.sttpCode} "); } if (queryDwDirectly && StrUtil.isNotBlank(sttpCode)) { - paramMap.put("sttpCode", sttpCode); - sql.append("AND dw.STTP = #{map.sttpCode} "); + List sttpCodes = StrUtil.split(sttpCode, ","); + if(sttpCodes.size() > 1){ + // 正确拼接,每个值加单引号并用逗号连接 + String joined = sttpCodes.stream() + .map(s -> "'" + s.replace("'", "''") + "'") // 转义单引号 + .collect(Collectors.joining(",")); + sql.append("AND dw.STTP NOT IN (").append(joined).append(") "); + } + if(sttpCodes.size() == 1){ + paramMap.put("sttpCode", sttpCode); + sql.append("AND dw.STTP = #{map.sttpCode} "); + } +// paramMap.put("sttpCode", sttpCode); +// sql.append("AND dw.STTP = #{map.sttpCode} "); } if (queryDwDirectly && StrUtil.isNotBlank(bldsttCcode)) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeVmsstbprptVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeVmsstbprptVo.java index e65e99cf..ac598f1f 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeVmsstbprptVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/entity/vo/WeVmsstbprptVo.java @@ -36,6 +36,15 @@ public class WeVmsstbprptVo { @Schema(description = "河流编码") private String rvcd; + @Schema(description = "站址/位置") + private String stlc; + + @Schema(description = "地形裁剪范围") + private String box; + + @Schema(description = "基地编码") + private String baseName; + @Schema(description = "排序") private Integer orderIndex; diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java index 45316df3..26bc2a95 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java @@ -2753,7 +2753,16 @@ public class WeFishServiceImpl implements WeFishService { "b.NAME AS name, " + "b.NAME_EN AS nameEn, " + "b.PROTECTLVL AS protectlvl, " + - "b.PROTECTLVL AS protectlvlName, " + + "CASE b.PROTECTLVL\n" + + " WHEN '1' THEN '国家一级'\n" + + " WHEN '2' THEN '国家二级'\n" + + " WHEN '3' THEN '国家三级'\n" + + " WHEN '4' THEN '省重点'\n" + + " WHEN '5' THEN '市一级'\n" + + " WHEN '6' THEN '市二级'\n" + + " WHEN '7' THEN '无'\n" + + " ELSE b.PROTECTLVL\n" + + "END AS protectlvlName, " + "b.LOGO AS logo, " + "b.INTRODUCE AS introduce " + "FROM MS_SPECANIMALS_B a " + @@ -3286,11 +3295,14 @@ public class WeFishServiceImpl implements WeFishService { return "SELECT " + "ai.STCD AS id, " + "ai.STTP AS sttpCode, " + + "ai.STLC AS stlc, " + "ai.STCD AS stcd, " + "ai.STNM AS stnm, " + + "ai.BOX AS box, " + "ai.RSTCD AS rstcd, " + "eng.ENNM AS ennm, " + "ai.BASE_ID AS baseId, " + + "hb.BASENAME AS baseName, " + "ai.HBRVCD AS hbrvcd, " + "ai.RVCD AS rvcd, " + "ai.ORDER_INDEX AS orderIndex, " + @@ -3298,6 +3310,7 @@ public class WeFishServiceImpl implements WeFishService { "ai.LTTD AS lttd " + "FROM SD_AIMONITOR_B_H ai " + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = ai.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = ai.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + "WHERE NVL(ai.IS_DELETED, 0) = 0"; } @@ -3350,6 +3363,9 @@ public class WeFishServiceImpl implements WeFishService { selected.add("t.sttpCode AS sttpCode"); selected.add("t.stnm AS stnm"); selected.add("t.stcd AS stcd"); + selected.add("t.stlc AS stlc"); + selected.add("t.box AS box"); + selected.add("t.baseName AS baseName"); } else { for (String field : selectFields) { String column = columns.get(field); From 0d9e007599cf2c6c35843e28a3ed8239f9fb5fd7 Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 14 Jul 2026 11:16:37 +0800 Subject: [PATCH 07/16] =?UTF-8?q?fix:=20=E5=9B=BE=E4=BE=8B=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapLayer/mapper/MsMaplegendBMapper.java | 8 +++ .../service/impl/MapLegendServiceImpl.java | 56 ++++++++++++++++++- 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/mapLayer/mapper/MsMaplegendBMapper.java b/backend/src/main/java/com/yfd/platform/qgc_sys/mapLayer/mapper/MsMaplegendBMapper.java index d6df58bc..49dd7cf4 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_sys/mapLayer/mapper/MsMaplegendBMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/mapLayer/mapper/MsMaplegendBMapper.java @@ -3,6 +3,8 @@ package com.yfd.platform.qgc_sys.mapLayer.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.yfd.platform.qgc_sys.mapLayer.domain.MsMaplegendB; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; /** * 地图图例表 Mapper 接口 @@ -11,4 +13,10 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface MsMaplegendBMapper extends BaseMapper { + + /** + * 修改图例名称,解决Oracle/m³变成m3的问题 + */ + @Update("UPDATE MS_MAPLEGEND_B SET NAME = #{name} WHERE ID = #{id}") + void updateModelName(@Param("id") String id, @Param("name") String name); } \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/mapLayer/service/impl/MapLegendServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_sys/mapLayer/service/impl/MapLegendServiceImpl.java index 29b8e0f9..aecb081b 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_sys/mapLayer/service/impl/MapLegendServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/mapLayer/service/impl/MapLegendServiceImpl.java @@ -13,9 +13,11 @@ import com.yfd.platform.qgc_sys.mapLayer.mapper.MsMapmoduleBMapper; import com.yfd.platform.qgc_sys.mapLayer.service.IMapLegendService; import com.yfd.platform.utils.SecurityUtils; import jakarta.annotation.Resource; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.Comparator; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -31,6 +33,12 @@ public class MapLegendServiceImpl extends ServiceImpl ids) { if (CollectionUtil.isEmpty(ids)) { @@ -101,13 +109,20 @@ public class MapLegendServiceImpl extends ServiceImpl Date: Tue, 14 Jul 2026 11:46:03 +0800 Subject: [PATCH 08/16] =?UTF-8?q?fix:=20=E5=9B=BE=E4=BE=8B=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qgc_sys/mapLayer/controller/MapLegendController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/mapLayer/controller/MapLegendController.java b/backend/src/main/java/com/yfd/platform/qgc_sys/mapLayer/controller/MapLegendController.java index 9c2b5010..cd6945ae 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_sys/mapLayer/controller/MapLegendController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/mapLayer/controller/MapLegendController.java @@ -62,6 +62,7 @@ public class MapLegendController { Page page = DataSourceRequestUtil.getPage(dataSourceRequest); Page resultPage; wrapper.eq("IS_DELETED", 0); + wrapper.orderByDesc("ORDER_INDEX"); if (page != null) { resultPage = mapLegendService.page(page, wrapper); } else { From 469dac265572c52f289d1db93d9dcba81c10d60d Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 14 Jul 2026 12:01:59 +0800 Subject: [PATCH 09/16] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96DW=E4=BD=8E?= =?UTF-8?q?=E6=B8=A9=E6=B0=B4=E5=87=8F=E7=BC=93=E8=AE=BE=E6=96=BD=E6=B2=B3?= =?UTF-8?q?=E6=AE=B5=E5=AD=97=E6=AE=B5=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yfd/platform/qgc_env/wt/entity/vo/SdWtBaseInfoVO.java | 3 +++ .../qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java | 2 ++ 2 files changed, 5 insertions(+) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtBaseInfoVO.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtBaseInfoVO.java index f88daf2f..18561f8f 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtBaseInfoVO.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/entity/vo/SdWtBaseInfoVO.java @@ -95,6 +95,9 @@ public class SdWtBaseInfoVO implements Serializable { @Schema(description = "基地流域编码") private String hbrvcd; + @Schema(description = "基地流域名称") + private String hbrvcdName; + @Schema(description = "经度") private Double lgtd; diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java index e29a737f..c9a01bc6 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java @@ -713,6 +713,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { .append("dw.ORDER_INDEX AS siteStepSort, ") .append("dw.STNM AS stnm, ") .append("eng.ENNM AS ennm, ") + .append("eng.REACHCD_NAME AS hbrvcdName, ") .append("dw.JCDT AS jcdt, ") .append("NULL AS stindx, ") .append("CASE WHEN NVL(dw.DTIN, 0) = 1 THEN 1 ELSE 0 END AS coenvwState, ") @@ -735,6 +736,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { .append("eng.HBRVCD AS hbrvcd ") .append("FROM SD_DW_B_H dw ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = dw.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") +// .append("LEFT JOIN SD_RVCD_DIC srd ON eng.REACHCD = srd.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ") .append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID AND NVL(hbrv.IS_DELETED, 0) = 0 ") .append("LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = dw.STTP AND NVL(sttp.IS_DELETED, 0) = 0 ") From b481256080f626950243739741d9abb93ce2c059 Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 14 Jul 2026 18:34:47 +0800 Subject: [PATCH 10/16] =?UTF-8?q?feat:=20=E6=B2=BF=E7=A8=8B=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E8=A7=86=E5=9B=BE(V=5FMS=5FSTBPRP=5FT)=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E8=BF=87=E6=BB=A4=E6=95=B0=E6=8D=AE=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/OverviewController.java | 6 + .../entity/vo/OverviewVmsstbprptVo.java | 70 ++++ .../overview/service/OverviewService.java | 3 + .../service/impl/OverviewServiceImpl.java | 329 ++++++++++++++++++ 4 files changed, 408 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_env/overview/entity/vo/OverviewVmsstbprptVo.java diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/overview/controller/OverviewController.java b/backend/src/main/java/com/yfd/platform/qgc_env/overview/controller/OverviewController.java index a3ed0a61..810efdd4 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/overview/controller/OverviewController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/overview/controller/OverviewController.java @@ -32,4 +32,10 @@ public class OverviewController { public ResponseResult getOpedList(@RequestBody DataSourceRequest dataSourceRequest) { return ResponseResult.successData(overviewService.getOpedList(dataSourceRequest)); } + + @PostMapping("/vmsstbprpt/GetKendoList") + @Operation(summary = "沿程对象视图(V_MS_STBPRP_T)条件过滤数据列表") + public ResponseResult getVmsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) { + return ResponseResult.successData(overviewService.getVmsstbprptList(dataSourceRequest)); + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/overview/entity/vo/OverviewVmsstbprptVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/overview/entity/vo/OverviewVmsstbprptVo.java new file mode 100644 index 00000000..401a950b --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/overview/entity/vo/OverviewVmsstbprptVo.java @@ -0,0 +1,70 @@ +package com.yfd.platform.qgc_env.overview.entity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Schema(description = "沿程对象视图(V_MS_STBPRP_T)查询结果") +public class OverviewVmsstbprptVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private String stcd; + private String stnm; + private String ennm; + private String sttp; + private String sttpCode; + private String sttpName; + private String sttpFullPath; + private Integer sttpTreeLevel; + private String rstcd; + private String baseId; + private String baseName; + private String hbrvcd; + private String hbrvcdName; + private String rvcd; + private String rvcdName; + private String addvcd; + private String addvnm; + private String hycd; + private String hynm; + private String topHycd; + private String topHynm; + private BigDecimal lgtd; + private BigDecimal lttd; + private String stlc; + private Integer usfl; + private Integer dtin; + private Date dtinTm; + private Integer bldsttCode; + private String introduce; + private String logo; + private String inffile; + private BigDecimal inv; + private Integer invinmn; + private Date stdsdt; + private Date pststdt; + private Date pesstdt; + private Date swdt; + private Date jcdt; + private Date wddt; + private Integer orderIndex; + private String remark; + private String vlsr; + private String stindx; + private String coenvwState; + private String dvtpName; + private Date vlsrTm; + private String recordUser; + private Date recordTime; + private String modifyUser; + private Date modifyTime; + private Integer isDeleted; + private String deleteUser; + private Date deleteTime; + private String dataSource; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/overview/service/OverviewService.java b/backend/src/main/java/com/yfd/platform/qgc_env/overview/service/OverviewService.java index 481e665f..c8eed15e 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/overview/service/OverviewService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/overview/service/OverviewService.java @@ -4,10 +4,13 @@ import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.qgc_env.overview.entity.vo.OverviewMsstbprptVo; import com.yfd.platform.qgc_env.overview.entity.vo.OverviewOpedVo; +import com.yfd.platform.qgc_env.overview.entity.vo.OverviewVmsstbprptVo; public interface OverviewService { DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest); DataSourceResult getOpedList(DataSourceRequest dataSourceRequest); + + DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/overview/service/impl/OverviewServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/overview/service/impl/OverviewServiceImpl.java index 79ec09ab..6dc87d3f 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/overview/service/impl/OverviewServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/overview/service/impl/OverviewServiceImpl.java @@ -9,8 +9,11 @@ import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.GroupHelper; import com.yfd.platform.common.GroupingInfo; import com.yfd.platform.common.MicroservicDynamicSQLMapper; +import com.yfd.platform.qgc_base.domain.vo.DataScopeApplyResult; +import com.yfd.platform.qgc_base.service.IDataScopeFilterService; import com.yfd.platform.qgc_env.overview.entity.vo.OverviewMsstbprptVo; import com.yfd.platform.qgc_env.overview.entity.vo.OverviewOpedVo; +import com.yfd.platform.qgc_env.overview.entity.vo.OverviewVmsstbprptVo; import com.yfd.platform.qgc_env.overview.service.OverviewService; import com.yfd.platform.utils.QgcQueryWrapperUtil; import jakarta.annotation.Resource; @@ -31,6 +34,9 @@ public class OverviewServiceImpl implements OverviewService { @Resource private MicroservicDynamicSQLMapper microservicDynamicSQLMapper; + @Resource + private IDataScopeFilterService dataScopeFilterService; + @Override public DataSourceResult getMsstbprptList(DataSourceRequest dataSourceRequest) { DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); @@ -109,6 +115,47 @@ public class OverviewServiceImpl implements OverviewService { return result; } + @Override + public DataSourceResult getVmsstbprptList(DataSourceRequest dataSourceRequest) { + DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest(); + List selectFields = resolveVmsstbprptSelectFields(dataSourceRequest == null ? null : dataSourceRequest.getSelect()); +// "CASE eng.DVTP WHEN '1' THEN '堤坝式' WHEN '2' THEN '引水式' WHEN '3' THEN '混合式' ELSE '未知' END AS dvtpName,"+ + StringBuilder sql = new StringBuilder(); + sql.append("SELECT ") + .append(buildVmsstbprptSelectSql(selectFields)) + .append(" FROM V_MS_STBPRP_T t WHERE 1 = 1 "); + + Map paramMap = new HashMap<>(); + String filterSql = buildVmsstbprptFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0}); + if (StrUtil.isNotBlank(filterSql)) { + sql.append(" AND ").append(filterSql); + } + + // 数据权限过滤:基于当前用户有权限的电站编码过滤 +// DataScopeApplyResult scopeResult = dataScopeFilterService.appendCurrentUserStationScope(sql, paramMap, "t.STCD"); +// if (scopeResult.isEmptyResult()) { +// DataSourceResult result = new DataSourceResult<>(); +// result.setData(new ArrayList<>()); +// result.setTotal(0L); +// result.setAggregates(new HashMap<>()); +// return result; +// } + + sql.append(buildVmsstbprptOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort())); + + Page page = loadOptions == null ? null + : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType( + page, sql.toString(), paramMap, OverviewVmsstbprptVo.class + ); + + DataSourceResult result = new DataSourceResult<>(); + result.setData(list); + result.setTotal(page == null ? list.size() : page.getTotal()); + result.setAggregates(new HashMap<>()); + return result; + } + private DataSourceResult queryOpedSummaryList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions, Map paramMap) { @@ -1340,4 +1387,286 @@ public class OverviewServiceImpl implements OverviewService { } values.add(value); } + + // ======================== V_MS_STBPRP_T helper methods ======================== + + private List resolveVmsstbprptSelectFields(List select) { + List fields = CollUtil.isEmpty(select) + ? new ArrayList<>(buildVmsstbprptSelectMap().keySet()) + : new ArrayList<>(select); + LinkedHashSet uniqueFields = new LinkedHashSet<>(); + for (String field : fields) { + if (StrUtil.isNotBlank(field)) { + uniqueFields.add(field.trim()); + } + } + if (uniqueFields.isEmpty()) { + uniqueFields.add("stcd"); + } + return new ArrayList<>(uniqueFields); + } + + private String buildVmsstbprptSelectSql(List selectFields) { + Map columnMap = buildVmsstbprptSelectMap(); + List selectParts = new ArrayList<>(); + for (String field : selectFields) { + String column = columnMap.get(field); + if (StrUtil.isNotBlank(column)) { + selectParts.add(column); + if(field.equals("sttpCode")){ + selectParts.add("t.STTP_NAME sttpName"); + } + } else { + selectParts.add("NULL AS \"" + field + "\""); + } + } + if (selectParts.isEmpty()) { + selectParts.add("t.STCD AS \"stcd\""); + } + return String.join(", ", selectParts); + } + + private Map buildVmsstbprptSelectMap() { + Map columnMap = new LinkedHashMap<>(); + columnMap.put("stcd", "t.STCD AS \"stcd\""); + columnMap.put("stnm", "t.STNM AS \"stnm\""); + columnMap.put("ennm", "t.ENNM AS \"ennm\""); + columnMap.put("sttp", "t.STTP AS \"sttp\""); + columnMap.put("sttpCode", "t.STTP_CODE AS \"sttpCode\""); + columnMap.put("sttpName", "t.STTP_NAME AS \"sttpName\""); + columnMap.put("sttpFullPath", "t.STTP_FULL_PATH AS \"sttpFullPath\""); + columnMap.put("sttpTreeLevel", "t.STTP_TREE_LEVEL AS \"sttpTreeLevel\""); + columnMap.put("rstcd", "t.RSTCD AS \"rstcd\""); + columnMap.put("baseId", "t.BASE_ID AS \"baseId\""); + columnMap.put("baseName", "t.BASE_NAME AS \"baseName\""); + columnMap.put("hbrvcd", "t.HBRVCD AS \"hbrvcd\""); + columnMap.put("hbrvcdName", "t.HBRVCD_NAME AS \"hbrvcdName\""); + columnMap.put("rvcd", "t.RVCD AS \"rvcd\""); + columnMap.put("rvcdName", "t.RVCD_NAME AS \"rvcdName\""); + columnMap.put("addvcd", "t.ADDVCD AS \"addvcd\""); + columnMap.put("addvnm", "t.ADDVNM AS \"addvnm\""); + columnMap.put("hycd", "t.HYCD AS \"hycd\""); + columnMap.put("hynm", "t.HYNM AS \"hynm\""); + columnMap.put("topHycd", "t.TOP_HYCD AS \"topHycd\""); + columnMap.put("topHynm", "t.TOP_HYNM AS \"topHynm\""); + columnMap.put("lgtd", "t.LGTD AS \"lgtd\""); + columnMap.put("lttd", "t.LTTD AS \"lttd\""); + columnMap.put("stlc", "t.STLC AS \"stlc\""); + columnMap.put("usfl", "t.USFL AS \"usfl\""); + columnMap.put("dtin", "t.DTIN AS \"dtin\""); + columnMap.put("dtinTm", "t.DTIN_TM AS \"dtinTm\""); + columnMap.put("bldsttCode", "t.BLDSTT_CODE AS \"bldsttCode\""); + columnMap.put("introduce", "t.INTRODUCE AS \"introduce\""); + columnMap.put("logo", "t.LOGO AS \"logo\""); + columnMap.put("inffile", "t.INFFILE AS \"inffile\""); + columnMap.put("inv", "t.INV AS \"inv\""); + columnMap.put("invinmn", "t.INVINMN AS \"invinmn\""); + columnMap.put("stdsdt", "t.STDSDT AS \"stdsdt\""); + columnMap.put("pststdt", "t.PSTSTDT AS \"pststdt\""); + columnMap.put("pesstdt", "t.PESSTDT AS \"pesstdt\""); + columnMap.put("swdt", "t.SWDT AS \"swdt\""); + columnMap.put("jcdt", "t.JCDT AS \"jcdt\""); + columnMap.put("wddt", "t.WDDT AS \"wddt\""); + columnMap.put("orderIndex", "t.ORDER_INDEX AS \"orderIndex\""); + columnMap.put("remark", "t.REMARK AS \"remark\""); + columnMap.put("stindx", "t.STINDX AS \"stindx\""); + columnMap.put("coenvwState", "t.COENVW_STATE AS \"coenvwState\""); + columnMap.put("dvtp", "CASE t.DVTP WHEN '1' THEN '堤坝式' WHEN '2' THEN '引水式' WHEN '3' THEN '混合式' ELSE '未知' END AS \"dvtpName\" "); + columnMap.put("vlsr", "t.VLSR AS \"vlsr\""); + columnMap.put("vlsrTm", "t.VLSR_TM AS \"vlsrTm\""); + columnMap.put("recordUser", "t.RECORD_USER AS \"recordUser\""); + columnMap.put("recordTime", "t.RECORD_TIME AS \"recordTime\""); + columnMap.put("modifyUser", "t.MODIFY_USER AS \"modifyUser\""); + columnMap.put("modifyTime", "t.MODIFY_TIME AS \"modifyTime\""); + columnMap.put("isDeleted", "t.IS_DELETED AS \"isDeleted\""); + columnMap.put("deleteUser", "t.DELETE_USER AS \"deleteUser\""); + columnMap.put("deleteTime", "t.DELETE_TIME AS \"deleteTime\""); + columnMap.put("dataSource", "t.DATA_SOURCE AS \"dataSource\""); + return columnMap; + } + + private String buildVmsstbprptFilterCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + if (filter == null) { + return ""; + } + if (StrUtil.isNotBlank(filter.getField())) { + return buildVmsstbprptLeafCondition(filter, paramMap, indexHolder); + } + if (CollUtil.isEmpty(filter.getFilters())) { + return ""; + } + List conditions = new ArrayList<>(); + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String childSql = buildVmsstbprptFilterCondition(child, paramMap, indexHolder); + if (StrUtil.isNotBlank(childSql)) { + conditions.add("(" + childSql + ")"); + } + } + if (conditions.isEmpty()) { + return ""; + } + String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND "; + return String.join(logic, conditions); + } + + private String buildVmsstbprptLeafCondition(DataSourceRequest.FilterDescriptor filter, + Map paramMap, + int[] indexHolder) { + String field = filter.getField(); + if (StrUtil.isBlank(field)) { + return ""; + } + String operator = StrUtil.blankToDefault(filter.getOperator(), "eq").toLowerCase(); + String column = mapVmsstbprptColumn(field); + if (StrUtil.isBlank(column)) { + return ""; + } + if ("isnull".equals(operator)) { + return column + " IS NULL"; + } + if ("isnotnull".equals(operator)) { + return column + " IS NOT NULL"; + } + if ("isempty".equals(operator)) { + return "(" + column + " IS NULL OR " + column + " = '')"; + } + if ("isnotempty".equals(operator)) { + return "(" + column + " IS NOT NULL AND " + column + " <> '')"; + } + if ("in".equals(operator) || "ni".equals(operator)) { + List values = normalizeValues(filter.getValue()); + if (values.isEmpty()) { + return ""; + } + List placeholders = new ArrayList<>(); + for (Object item : values) { + String key = "vmsp" + indexHolder[0]++; + paramMap.put(key, item); + placeholders.add("#{map." + key + "}"); + } + if (placeholders.isEmpty()) { + return ""; + } + return column + ("ni".equals(operator) ? " NOT IN (" : " IN (") + String.join(", ", placeholders) + ")"; + } + Object value = filter.getValue(); + if (value == null) { + return ""; + } + String key = "vmsp" + indexHolder[0]++; + paramMap.put(key, value); + return switch (operator) { + case "eq" -> column + " = #{map." + key + "}"; + case "neq" -> column + " <> #{map." + key + "}"; + case "contains" -> { + paramMap.put(key, "%" + value + "%"); + yield column + " LIKE #{map." + key + "}"; + } + case "doesnotcontain" -> { + paramMap.put(key, "%" + value + "%"); + yield column + " NOT LIKE #{map." + key + "}"; + } + case "startswith" -> { + paramMap.put(key, value + "%"); + yield column + " LIKE #{map." + key + "}"; + } + case "endswith" -> { + paramMap.put(key, "%" + value); + yield column + " LIKE #{map." + key + "}"; + } + case "gt" -> column + " > #{map." + key + "}"; + case "gte" -> column + " >= #{map." + key + "}"; + case "lt" -> column + " < #{map." + key + "}"; + case "lte" -> column + " <= #{map." + key + "}"; + default -> ""; + }; + } + + private String mapVmsstbprptColumn(String field) { + if (StrUtil.isBlank(field)) { + return null; + } + return switch (field) { + case "stcd" -> "t.STCD"; + case "stnm" -> "t.STNM"; + case "ennm" -> "t.ENNM"; + case "sttp" -> "t.STTP"; + case "sttpCode" -> "t.STTP_CODE"; + case "sttpName" -> "t.STTP_NAME"; + case "sttpFullPath" -> "t.STTP_FULL_PATH"; + case "sttpTreeLevel" -> "t.STTP_TREE_LEVEL"; + case "rstcd" -> "t.RSTCD"; + case "baseId" -> "t.BASE_ID"; + case "baseName" -> "t.BASE_NAME"; + case "hbrvcd" -> "t.HBRVCD"; + case "hbrvcdName" -> "t.HBRVCD_NAME"; + case "rvcd" -> "t.RVCD"; + case "rvcdName" -> "t.RVCD_NAME"; + case "addvcd" -> "t.ADDVCD"; + case "addvnm" -> "t.ADDVNM"; + case "hycd" -> "t.HYCD"; + case "hynm" -> "t.HYNM"; + case "topHycd" -> "t.TOP_HYCD"; + case "topHynm" -> "t.TOP_HYNM"; + case "lgtd" -> "t.LGTD"; + case "lttd" -> "t.LTTD"; + case "stlc" -> "t.STLC"; + case "usfl" -> "t.USFL"; + case "dtin" -> "t.DTIN"; + case "DTIN" -> "t.DTIN"; + case "dtinType" -> "t.DTIN_TYPE"; + case "mway" -> "t.MWAY"; + case "dtinTm" -> "t.DTIN_TM"; + case "bldsttCcode" -> "t.BLDSTT_CODE"; + case "introduce" -> "t.INTRODUCE"; + case "runState" -> "t.RUN_STATE"; + case "logo" -> "t.LOGO"; + case "inffile" -> "t.INFFILE"; + case "inv" -> "t.INV"; + case "invinmn" -> "t.INVINMN"; + case "stdsdt" -> "t.STDSDT"; + case "pststdt" -> "t.PSTSTDT"; + case "pesstdt" -> "t.PESSTDT"; + case "swdt" -> "t.SWDT"; + case "jcdt" -> "t.JCDT"; + case "wddt" -> "t.WDDT"; + case "orderIndex" -> "t.ORDER_INDEX"; + case "remark" -> "t.REMARK"; + case "vlsr" -> "t.VLSR"; + case "vlsrTm" -> "t.VLSR_TM"; + case "recordUser" -> "t.RECORD_USER"; + case "recordTime" -> "t.RECORD_TIME"; + case "modifyUser" -> "t.MODIFY_USER"; + case "modifyTime" -> "t.MODIFY_TIME"; + case "isDeleted" -> "t.IS_DELETED"; + case "deleteUser" -> "t.DELETE_USER"; + case "deleteTime" -> "t.DELETE_TIME"; + case "dataSource" -> "t.DATA_SOURCE"; + default -> null; + }; + } + + private String buildVmsstbprptOrderBySql(List sortList) { + if (CollUtil.isEmpty(sortList)) { + return " ORDER BY t.ORDER_INDEX ASC NULLS LAST, t.STNM ASC"; + } + List orderItems = new ArrayList<>(); + for (DataSourceRequest.SortDescriptor sort : sortList) { + if (sort == null || StrUtil.isBlank(sort.getField())) { + continue; + } + String column = mapVmsstbprptColumn(sort.getField()); + if (StrUtil.isBlank(column)) { + continue; + } + String dir = "desc".equalsIgnoreCase(sort.getDir()) || "des".equalsIgnoreCase(sort.getDir()) ? "DESC" : "ASC"; + orderItems.add(column + " " + dir + " NULLS LAST"); + } + if (orderItems.isEmpty()) { + return " ORDER BY t.ORDER_INDEX ASC NULLS LAST, t.STNM ASC"; + } + return " ORDER BY " + String.join(", ", orderItems); + } } From 4a3b70cab4dfbaa86448c018e0d0f5db363c88fc Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 15 Jul 2026 11:15:01 +0800 Subject: [PATCH 11/16] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=B2=BF?= =?UTF-8?q?=E7=A8=8B=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qgc_base/domain/vo/EngPointVo.java | 4 ++ .../service/impl/SdEngInfoBHServiceImpl.java | 41 +++++------ .../eq/service/impl/EngEqDataServiceImpl.java | 70 +++++++++---------- .../zq/service/impl/EngRiverServiceImpl.java | 10 +-- .../fb/service/impl/FbStationServiceImpl.java | 10 +-- .../fh/service/impl/FhHabitatServiceImpl.java | 16 ++--- .../service/impl/FprMonitorServiceImpl.java | 10 +-- .../vd/service/impl/VdMonitorServiceImpl.java | 4 +- .../service/impl/WarnDataServiceImpl.java | 22 +++--- .../wq/service/impl/EnvWqDataServiceImpl.java | 40 +++++------ .../service/impl/SdWtMonitorServiceImpl.java | 16 ++--- .../wte/service/impl/WeFishServiceImpl.java | 6 +- .../zq/service/impl/ZqMonitorServiceImpl.java | 34 ++++----- 13 files changed, 144 insertions(+), 139 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngPointVo.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngPointVo.java index ad4444c9..6f5a5843 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngPointVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/vo/EngPointVo.java @@ -59,6 +59,10 @@ public class EngPointVo { @Schema(description = "所属行政区名称") private String addvcdName; + @Schema(description = "基地名称") + private String baseName; + + @Schema(description = "站点类型") private String sttp; 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 5f599d11..e6b62797 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 @@ -1324,19 +1324,19 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl 'other' " + // " AND NOT EXISTS ( " + @@ -618,13 +618,13 @@ public class FhHabitatServiceImpl implements FhHabitatService { " AND along.CODE = 'common' " + " AND NVL(along.IS_DELETED, 0) = 0 " + " LEFT JOIN ( " + - " SELECT det.SORT, a.RVCD, det.STCD " + + " SELECT det.SORT,a.BASEID, a.RVCD, det.STCD " + " FROM MS_ALONGDET_B det " + " INNER JOIN MS_ALONG_B a ON a.ID = det.ALONG_ID " + " WHERE NVL(det.IS_DELETED, 0) = 0 " + " AND NVL(a.IS_DELETED, 0) = 0 " + " AND a.CODE = 'common' " + - " ) rstAlong ON rstAlong.RVCD = eng.HBRVCD AND rstAlong.STCD = childBase.RSTCD "; + " ) rstAlong ON rstAlong.BASEID = eng.BASE_ID AND rstAlong.STCD = childBase.RSTCD "; return "SELECT childBase.STCD, " + " childBase.STNM, " + " childBase.FHSTCD, " + diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fpr/service/impl/FprMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/fpr/service/impl/FprMonitorServiceImpl.java index 864df8d9..d6cde63c 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/fpr/service/impl/FprMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fpr/service/impl/FprMonitorServiceImpl.java @@ -446,25 +446,25 @@ public class FprMonitorServiceImpl implements FprMonitorService { "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = src.STTP " + " AND NVL(sttp.IS_DELETED, 0) = 0 " + " AND NVL(sttp.ENABLE, 1) = 1 " + - "LEFT JOIN MS_ALONG_B alongBase ON alongBase.RVCD = src.HBRVCD " + + "LEFT JOIN MS_ALONG_B alongBase ON alongBase.BASEID = src.BASE_ID " + " AND alongBase.CODE = 'common' " + " AND NVL(alongBase.IS_DELETED, 0) = 0 " + "LEFT JOIN ( " + - " SELECT det.STCD, det.SORT, along.RVCD " + + " SELECT det.STCD, det.SORT,along.BASEID, along.RVCD " + " FROM MS_ALONGDET_B det " + " INNER JOIN MS_ALONG_B along ON det.ALONG_ID = along.ID " + " WHERE NVL(det.IS_DELETED, 0) = 0 " + " AND NVL(along.IS_DELETED, 0) = 0 " + " AND along.CODE = 'common' " + - ") engSort ON engSort.RVCD = src.HBRVCD AND engSort.STCD = src.RSTCD " + + ") engSort ON engSort.BASEID = src.BASE_ID AND engSort.STCD = src.RSTCD " + "LEFT JOIN ( " + - " SELECT det.STCD, det.SORT, along.RVCD " + + " SELECT det.STCD, det.SORT,along.BASEID, along.RVCD " + " FROM MS_ALONGDET_B det " + " INNER JOIN MS_ALONG_B along ON det.ALONG_ID = along.ID " + " WHERE NVL(det.IS_DELETED, 0) = 0 " + " AND NVL(along.IS_DELETED, 0) = 0 " + " AND along.CODE = 'common' " + - ") siteSort ON siteSort.RVCD = src.HBRVCD AND siteSort.STCD = src.STCD " + + ") siteSort ON siteSort.BASEID = src.BASE_ID AND siteSort.STCD = src.STCD " + "WHERE NVL(src.IS_DELETED, 0) = 0 "; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java index e8b5c32c..e9955d81 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java @@ -834,10 +834,10 @@ public class VdMonitorServiceImpl implements VdMonitorService { " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + "LEFT JOIN SD_STTP_B vdSttp ON vdSttp.STTP_CODE = src.STTP " + " AND NVL(vdSttp.IS_DELETED, 0) = 0 AND NVL(vdSttp.ENABLE, 1) = 1 " + - "LEFT JOIN (SELECT det.SORT, cfg.RVCD, det.STCD FROM MS_ALONGDET_B det " + + "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.RVCD = NVL(eng.HBRVCD, src.HBRVCD) AND siteSort.STCD = src.STCD " + + "ON siteSort.BASEID = src.BASE_ID AND siteSort.STCD = src.STCD " + "WHERE src.STTP LIKE 'VD%' " + "AND src.AI_EXT_CODE IS NOT NULL " + "AND src.LGTD IS NOT NULL " + diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/warn/service/impl/WarnDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/warn/service/impl/WarnDataServiceImpl.java index 678074c0..e95e6602 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/warn/service/impl/WarnDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/warn/service/impl/WarnDataServiceImpl.java @@ -469,9 +469,9 @@ public class WarnDataServiceImpl implements WarnDataService { sql.append("INNER JOIN SD_AIMONITOR_B_H b ON a.STCD = b.STCD AND NVL(b.IS_DELETED, 0) = 0 AND b.STTP LIKE 'AI_%' "); sql.append("LEFT JOIN SD_ENGINFO_B_H eng ON b.RSTCD = eng.STCD AND NVL(eng.IS_DELETED, 0) = 0 "); sql.append("LEFT JOIN SD_HYDROBASE hb ON b.BASE_ID = hb.BASEID AND NVL(hb.IS_DELETED, 0) = 0 "); - sql.append("LEFT JOIN MS_ALONG_B along ON b.HBRVCD = along.RVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 "); - sql.append("LEFT JOIN (SELECT det.SORT, 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.RVCD = b.HBRVCD AND rstSort.STCD = b.RSTCD "); - sql.append("LEFT JOIN (SELECT det.SORT, 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.RVCD = b.HBRVCD AND siteSort.STCD = b.STCD "); + sql.append("LEFT JOIN MS_ALONG_B along ON b.BASEID = along.BASE_ID AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 "); + sql.append("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 = b.BASE_ID AND rstSort.STCD = b.RSTCD "); + sql.append("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 = b.BASE_ID AND siteSort.STCD = b.STCD "); sql.append("WHERE NVL(a.IS_DELETED, 0) = 0 "); sql.append("AND a.FID NOT LIKE '%ORA-%' AND a.FID NOT LIKE '%Out%' "); @@ -540,9 +540,9 @@ public class WarnDataServiceImpl implements WarnDataService { sql.append("INNER JOIN SD_AIMONITOR_B_H b ON a.STCD = b.STCD AND NVL(b.IS_DELETED, 0) = 0 AND b.STTP LIKE 'AI_%' "); sql.append("LEFT JOIN SD_ENGINFO_B_H eng ON b.RSTCD = eng.STCD AND NVL(eng.IS_DELETED, 0) = 0 "); sql.append("LEFT JOIN SD_HYDROBASE hb ON b.BASE_ID = hb.BASEID AND NVL(hb.IS_DELETED, 0) = 0 "); - sql.append("LEFT JOIN MS_ALONG_B along ON b.HBRVCD = along.RVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 "); - sql.append("LEFT JOIN (SELECT det.SORT, 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.RVCD = b.HBRVCD AND rstSort.STCD = b.RSTCD "); - sql.append("LEFT JOIN (SELECT det.SORT, 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.RVCD = b.HBRVCD AND siteSort.STCD = b.STCD "); + sql.append("LEFT JOIN MS_ALONG_B along ON b.BASE_ID = along.BASEID AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 "); + sql.append("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 = b.BASE_ID AND rstSort.STCD = b.RSTCD "); + sql.append("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 = b.BASE_ID AND siteSort.STCD = b.STCD "); sql.append("WHERE a.IS_DELETED = 0 "); // sql.append("AND (a.TASK_STATUS IS NULL OR a.TASK_STATUS = 'Approved') "); sql.append("AND a.FID NOT LIKE '%ORA-%' AND a.FID NOT LIKE '%Out%' "); @@ -1154,19 +1154,19 @@ public class WarnDataServiceImpl implements WarnDataService { "NVL(siteSort.SORT, 999999) AS siteStepSort " + "FROM SD_ENGINFO_B_H eng " + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + - "LEFT JOIN MS_ALONG_B along ON along.RVCD = eng.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + + "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.RVCD, det.STCD " + + " 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.RVCD = eng.HBRVCD AND rstSort.STCD = eng.STCD " + + ") rstSort ON rstSort.BASEID = eng.BASE_ID AND rstSort.STCD = eng.STCD " + "LEFT JOIN ( " + - " SELECT det.SORT, cfg.RVCD, det.STCD " + + " 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.RVCD = eng.HBRVCD AND siteSort.STCD = eng.STCD " + + ") siteSort ON siteSort.BASEID = eng.BASE_ID AND siteSort.STCD = eng.STCD " + "WHERE NVL(eng.IS_DELETED, 0) = 0 " + "AND NVL(eng.USFL, 0) = 1 " + "AND eng.LGTD IS NOT NULL " + diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java index 1fe1ebfe..7c606e32 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wq/service/impl/EnvWqDataServiceImpl.java @@ -1342,17 +1342,17 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " + "LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = wq.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " + - "LEFT JOIN MS_ALONG_B rvAlong ON rvAlong.RVCD = eng.HBRVCD AND rvAlong.CODE = 'common' AND NVL(rvAlong.IS_DELETED, 0) = 0 " + - "LEFT JOIN (SELECT det.SORT, along.RVCD, det.STCD " + + "LEFT JOIN MS_ALONG_B rvAlong ON rvAlong.BASEID = wq.BASE_ID AND rvAlong.CODE = 'common' AND NVL(rvAlong.IS_DELETED, 0) = 0 " + + "LEFT JOIN (SELECT det.SORT,along.BASEID, along.RVCD, det.STCD " + " FROM MS_ALONGDET_B det " + " INNER JOIN MS_ALONG_B along ON det.ALONG_ID = along.ID " + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(along.IS_DELETED, 0) = 0 AND along.CODE = 'common') rstAlong " + - " ON rstAlong.RVCD = eng.HBRVCD AND rstAlong.STCD = wq.RSTCD " + - "LEFT JOIN (SELECT det.SORT, along.RVCD, det.STCD " + + " ON rstAlong.BASEID = wq.BASE_ID AND rstAlong.STCD = wq.RSTCD " + + "LEFT JOIN (SELECT det.SORT,along.BASEID, along.RVCD, det.STCD " + " FROM MS_ALONGDET_B det " + " INNER JOIN MS_ALONG_B along ON det.ALONG_ID = along.ID " + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(along.IS_DELETED, 0) = 0 AND along.CODE = 'common') siteAlong " + - " ON siteAlong.RVCD = eng.HBRVCD AND siteAlong.STCD = wq.STCD " + + " ON siteAlong.BASEID = wq.BASE_ID AND siteAlong.STCD = wq.STCD " + "WHERE wq.STTP IN ('WQ', 'WQFB') AND NVL(wq.IS_DELETED, 0) = 0"; } @@ -1824,17 +1824,17 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = wq.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " + - "LEFT JOIN MS_ALONG_B rvAlong ON rvAlong.RVCD = eng.HBRVCD AND rvAlong.CODE = 'common' AND NVL(rvAlong.IS_DELETED, 0) = 0 " + - "LEFT JOIN (SELECT det.SORT, along.RVCD, det.STCD " + + "LEFT JOIN MS_ALONG_B rvAlong ON rvAlong.BASEID = wq.BASE_ID AND rvAlong.CODE = 'common' AND NVL(rvAlong.IS_DELETED, 0) = 0 " + + "LEFT JOIN (SELECT det.SORT,cfg.BASEID, along.RVCD, det.STCD " + " FROM MS_ALONGDET_B det " + " INNER JOIN MS_ALONG_B along ON det.ALONG_ID = along.ID " + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(along.IS_DELETED, 0) = 0 AND along.CODE = 'common') rstAlong " + - " ON rstAlong.RVCD = eng.HBRVCD AND rstAlong.STCD = wq.RSTCD " + - "LEFT JOIN (SELECT det.SORT, along.RVCD, det.STCD " + + " ON rstAlong.BASEID = wq.BASE_ID AND rstAlong.STCD = wq.RSTCD " + + "LEFT JOIN (SELECT det.SORT,cfg.BASEID, along.RVCD, det.STCD " + " FROM MS_ALONGDET_B det " + " INNER JOIN MS_ALONG_B along ON det.ALONG_ID = along.ID " + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(along.IS_DELETED, 0) = 0 AND along.CODE = 'common') siteAlong " + - " ON siteAlong.RVCD = eng.HBRVCD AND siteAlong.STCD = wq.STCD " + + " ON siteAlong.BASEID = wq.BASE_ID AND siteAlong.STCD = wq.STCD " + "WHERE wq.STTP = 'WQ' AND NVL(wq.IS_DELETED, 0) = 0"; } @@ -2264,17 +2264,17 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = wq.BASE_ID AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " + - "LEFT JOIN MS_ALONG_B rvAlong ON rvAlong.RVCD = eng.HBRVCD AND rvAlong.CODE = 'common' AND NVL(rvAlong.IS_DELETED, 0) = 0 " + - "LEFT JOIN (SELECT det.SORT, along.RVCD, det.STCD " + + "LEFT JOIN MS_ALONG_B rvAlong ON rvAlong.BASEID = wq.BASE_ID AND rvAlong.CODE = 'common' AND NVL(rvAlong.IS_DELETED, 0) = 0 " + + "LEFT JOIN (SELECT det.SORT,along.BASEID, along.RVCD, det.STCD " + " FROM MS_ALONGDET_B det " + " INNER JOIN MS_ALONG_B along ON det.ALONG_ID = along.ID " + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(along.IS_DELETED, 0) = 0 AND along.CODE = 'common') rstAlong " + - " ON rstAlong.RVCD = eng.HBRVCD AND rstAlong.STCD = wq.RSTCD " + - "LEFT JOIN (SELECT det.SORT, along.RVCD, det.STCD " + + " ON rstAlong.RVCD = wq.BASE_ID AND rstAlong.STCD = wq.RSTCD " + + "LEFT JOIN (SELECT det.SORT,along.BASEID, along.RVCD, det.STCD " + " FROM MS_ALONGDET_B det " + " INNER JOIN MS_ALONG_B along ON det.ALONG_ID = along.ID " + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(along.IS_DELETED, 0) = 0 AND along.CODE = 'common') siteAlong " + - " ON siteAlong.RVCD = eng.HBRVCD AND siteAlong.STCD = wq.STCD " + + " ON siteAlong.BASEID = wq.BASE_ID AND siteAlong.STCD = wq.STCD " + "WHERE wq.STTP = 'WQ' AND NVL(wq.IS_DELETED, 0) = 0"; } @@ -4617,19 +4617,19 @@ public class EnvWqDataServiceImpl implements EnvWqDataService { .append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND NVL(hbrv.IS_DELETED, 0) = 0 ") .append("LEFT JOIN SD_RVCD_DIC rvcd ON rvcd.RVCD = eng.RVCD AND NVL(rvcd.IS_DELETED, 0) = 0 ") .append("LEFT JOIN SD_ADDVCD_DIC addvcd ON addvcd.ADDVCD = eng.ADDVCD ") - .append("LEFT JOIN MS_ALONG_B along ON along.RVCD = eng.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 ") + .append("LEFT JOIN MS_ALONG_B along ON along.BASEID = t.BASE_ID AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 ") .append("LEFT JOIN ( ") - .append(" SELECT det.SORT, cfg.RVCD, det.STCD ") + .append(" SELECT det.SORT,cfg.BASEID, cfg.RVCD, det.STCD ") .append(" FROM MS_ALONGDET_B det ") .append(" INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID ") .append(" WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' ") - .append(") rstSort ON rstSort.RVCD = eng.HBRVCD AND rstSort.STCD = t.RSTCD ") + .append(") rstSort ON rstSort.BASEID = t.BASE_ID AND rstSort.STCD = t.RSTCD ") .append("LEFT JOIN ( ") - .append(" SELECT det.SORT, cfg.RVCD, det.STCD ") + .append(" SELECT det.SORT,cfg.BASEID, cfg.RVCD, det.STCD ") .append(" FROM MS_ALONGDET_B det ") .append(" INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID ") .append(" WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common' ") - .append(") siteSort ON siteSort.RVCD = eng.HBRVCD AND siteSort.STCD = t.STCD ") + .append(") siteSort ON siteSort.BASEID = t.BASE_ID AND siteSort.STCD = t.STCD ") .append("WHERE NVL(t.IS_DELETED, 0) = 0 ") .append("AND NVL(t.USFL, 1) = 1 "); diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java index c9a01bc6..812c3674 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java @@ -1306,21 +1306,21 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ") .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ") .append("LEFT JOIN (") - .append(" SELECT det.STCD, det.SORT, along.RVCD ") + .append(" SELECT det.STCD, det.SORT,along.BASEID, along.RVCD ") .append(" FROM MS_ALONGDET_B det ") .append(" INNER JOIN MS_ALONG_B along ON along.ID = det.ALONG_ID ") .append(" WHERE NVL(det.IS_DELETED, 0) = 0 ") .append(" AND NVL(along.IS_DELETED, 0) = 0 ") .append(" AND along.CODE = 'common'") - .append(") rstSort ON rstSort.STCD = wt.RSTCD AND rstSort.RVCD = eng.HBRVCD ") + .append(") rstSort ON rstSort.STCD = wt.RSTCD AND rstSort.BASEID = wt.BASE_ID ") .append("LEFT JOIN (") - .append(" SELECT det.STCD, det.SORT, along.RVCD ") + .append(" SELECT det.STCD, det.SORT,along.BASEID, along.RVCD ") .append(" FROM MS_ALONGDET_B det ") .append(" INNER JOIN MS_ALONG_B along ON along.ID = det.ALONG_ID ") .append(" WHERE NVL(det.IS_DELETED, 0) = 0 ") .append(" AND NVL(along.IS_DELETED, 0) = 0 ") .append(" AND along.CODE = 'common'") - .append(") siteSort ON siteSort.STCD = wt.STCD AND siteSort.RVCD = eng.HBRVCD ") + .append(") siteSort ON siteSort.STCD = wt.STCD AND siteSort.BASEID = wt.BASE_ID ") .append("WHERE NVL(wt.IS_DELETED, 0) = 0 ") .append(" AND wt.STTP = 'WTVT' ") .append(" AND NVL(wt.USFL, 0) = 1 ") @@ -1381,21 +1381,21 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD ") .append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ") .append("LEFT JOIN (") - .append(" SELECT det.STCD, det.SORT, along.RVCD ") + .append(" SELECT det.STCD, det.SORT,along.BASEID, along.RVCD ") .append(" FROM MS_ALONGDET_B det ") .append(" INNER JOIN MS_ALONG_B along ON along.ID = det.ALONG_ID ") .append(" WHERE NVL(det.IS_DELETED, 0) = 0 ") .append(" AND NVL(along.IS_DELETED, 0) = 0 ") .append(" AND along.CODE = 'common'") - .append(") rstSort ON rstSort.STCD = wt.RSTCD AND rstSort.RVCD = eng.HBRVCD ") + .append(") rstSort ON rstSort.STCD = wt.RSTCD AND rstSort.BASEID = wt.BASE_ID ") .append("LEFT JOIN (") - .append(" SELECT det.STCD, det.SORT, along.RVCD ") + .append(" SELECT det.STCD, det.SORT,along.BASEID, along.RVCD ") .append(" FROM MS_ALONGDET_B det ") .append(" INNER JOIN MS_ALONG_B along ON along.ID = det.ALONG_ID ") .append(" WHERE NVL(det.IS_DELETED, 0) = 0 ") .append(" AND NVL(along.IS_DELETED, 0) = 0 ") .append(" AND along.CODE = 'common'") - .append(") siteSort ON siteSort.STCD = wt.STCD AND siteSort.RVCD = eng.HBRVCD ") + .append(") siteSort ON siteSort.STCD = wt.STCD AND siteSort.BASEID = wt.BASE_ID ") .append("WHERE NVL(wt.IS_DELETED, 0) = 0 ") .append(" AND wt.STTP = 'WTVT' ") .append(" AND NVL(wt.USFL, 0) = 1 ") diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java index 26bc2a95..9a89714f 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java @@ -1113,16 +1113,16 @@ public class WeFishServiceImpl implements WeFishService { .append(" WHERE NVL(IS_DELETED, 0) = 0 AND STATUS = 1 ") .append(" GROUP BY STCD ") .append(") latest ON latest.STCD = section.STCD ") - .append("LEFT JOIN MS_ALONG_B along ON along.RVCD = section.HBRVCD ") + .append("LEFT JOIN MS_ALONG_B along ON along.BASEID = section.BASE_ID ") .append(" AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 ") .append("LEFT JOIN ( ") - .append(" SELECT det.SORT, cfg.RVCD, det.STCD ") + .append(" SELECT det.SORT,cfg.BASEID, cfg.RVCD, det.STCD ") .append(" FROM MS_ALONGDET_B det ") .append(" INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID ") .append(" WHERE NVL(det.IS_DELETED, 0) = 0 ") .append(" AND NVL(cfg.IS_DELETED, 0) = 0 ") .append(" AND cfg.CODE = 'common' ") - .append(") siteSort ON siteSort.RVCD = section.HBRVCD AND siteSort.STCD = section.STCD ") + .append(") siteSort ON siteSort.BASEID = section.BASE_ID AND siteSort.STCD = section.STCD ") .append("WHERE NVL(section.USFL, 1) = 1 "); String filterSql = buildWePointFilterCondition(dataSourceRequest.getFilter(), paramMap, new int[]{0}); diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/zq/service/impl/ZqMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/zq/service/impl/ZqMonitorServiceImpl.java index 85743199..972a77e1 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/zq/service/impl/ZqMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/zq/service/impl/ZqMonitorServiceImpl.java @@ -714,19 +714,19 @@ public class ZqMonitorServiceImpl implements ZqMonitorService { "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD AND hbrv.BASEID = eng.BASE_ID " + " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + - "LEFT JOIN MS_ALONG_B along ON along.RVCD = eng.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + + "LEFT JOIN MS_ALONG_B along ON along.BASEID = rb.BASE_ID AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + "LEFT JOIN ( " + - " SELECT det.SORT, cfg.RVCD, det.STCD " + + " 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.RVCD = eng.HBRVCD AND rstSort.STCD = rb.RSTCD " + + ") rstSort ON rstSort.BASEID = rb.BASE_ID AND rstSort.STCD = rb.RSTCD " + "LEFT JOIN ( " + - " SELECT det.SORT, cfg.RVCD, det.STCD " + + " 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.RVCD = eng.HBRVCD AND siteSort.STCD = rb.STCD " + + ") siteSort ON siteSort.BASEID = rb.BASE_ID AND siteSort.STCD = rb.STCD " + "LEFT JOIN SD_VDINFO_B vdb ON vdb.CSTCD = rr.STCD AND NVL(vdb.USFL, 1) = 1 " + "LEFT JOIN SD_VDINFO_R vdr ON vdr.STCD = vdb.STCD AND vdr.TM = rr.TM AND NVL(vdr.IS_DELETED, 0) = 0 " + "WHERE NVL(rr.IS_DELETED, 0) = 0 " + @@ -761,19 +761,19 @@ public class ZqMonitorServiceImpl implements ZqMonitorService { "INNER JOIN SD_RIVER_B_H rb ON rb.STCD = day.STCD AND rb.STTP = 'ZQ' AND NVL(rb.IS_DELETED, 0) = 0 " + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = rb.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + - "LEFT JOIN MS_ALONG_B along ON along.RVCD = eng.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + + "LEFT JOIN MS_ALONG_B along ON along.BASEID = rb.BASE_ID AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + "LEFT JOIN ( " + - " SELECT det.SORT, cfg.RVCD, det.STCD " + + " 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.RVCD = eng.HBRVCD AND rstSort.STCD = rb.RSTCD " + + ") rstSort ON rstSort.BASEID = rb.BASE_ID AND rstSort.STCD = rb.RSTCD " + "LEFT JOIN ( " + - " SELECT det.SORT, cfg.RVCD, det.STCD " + + " 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.RVCD = eng.HBRVCD AND siteSort.STCD = rb.STCD " + + ") siteSort ON siteSort.BASEID = rb.BASE_ID AND siteSort.STCD = rb.STCD " + "WHERE NVL(day.IS_DELETED, 0) = 0 "; } @@ -808,19 +808,19 @@ public class ZqMonitorServiceImpl implements ZqMonitorService { "INNER JOIN SD_RIVER_B_H rb ON rb.STCD = drtp.STCD AND rb.STTP = 'ZQ' AND NVL(rb.IS_DELETED, 0) = 0 " + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = rb.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " + - "LEFT JOIN MS_ALONG_B along ON along.RVCD = eng.HBRVCD AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + + "LEFT JOIN MS_ALONG_B along ON along.BASEID = rb.BASE_ID AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + "LEFT JOIN ( " + - " SELECT det.SORT, cfg.RVCD, det.STCD " + + " 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.RVCD = eng.HBRVCD AND rstSort.STCD = rb.RSTCD " + + ") rstSort ON rstSort.BASEID = rb.BASE_ID AND rstSort.STCD = rb.RSTCD " + "LEFT JOIN ( " + - " SELECT det.SORT, cfg.RVCD, det.STCD " + + " 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.RVCD = eng.HBRVCD AND siteSort.STCD = rb.STCD " + + ") siteSort ON siteSort.BASEID = rb.BASE_ID AND siteSort.STCD = rb.STCD " + "WHERE NVL(drtp.IS_DELETED, 0) = 0 "; } @@ -2419,11 +2419,11 @@ public class ZqMonitorServiceImpl implements ZqMonitorService { "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD\n" + "LEFT JOIN SD_RIVER_B_H fh ON fh.STCD = rb.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0\n" + "LEFT JOIN (\n" + - " SELECT det.SORT, cfg.RVCD, det.STCD\n" + + " SELECT det.SORT,cfg.BASEID, cfg.RVCD, det.STCD\n" + " FROM MS_ALONGDET_B det\n" + " INNER JOIN MS_ALONG_B cfg ON det.ALONG_ID = cfg.ID\n" + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(cfg.IS_DELETED, 0) = 0 AND cfg.CODE = 'common'\n" + - ") siteSort ON siteSort.RVCD = eng.HBRVCD AND siteSort.STCD = rb.STCD\n" + + ") siteSort ON siteSort.BASEID = rb.BASE_ID AND siteSort.STCD = rb.STCD\n" + "WHERE NVL(rb.IS_DELETED, 0) = 0 AND rb.STTP = 'ZQ' AND rb.LGTD IS NOT NULL AND rb.LTTD IS NOT NULL "); Map paramMap = new HashMap<>(); From 8977c4a2ca3cee4dcd077ae1fceb06302dc70804 Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 15 Jul 2026 13:57:00 +0800 Subject: [PATCH 12/16] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=8E=92?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qgc_env/fb/service/impl/FbStationServiceImpl.java | 4 ++-- .../qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/impl/FbStationServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/impl/FbStationServiceImpl.java index d2ed6e61..ee2f4b67 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/impl/FbStationServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/impl/FbStationServiceImpl.java @@ -4599,7 +4599,7 @@ public class FbStationServiceImpl implements FbStationService { String rstcd = QgcQueryWrapperUtil.getFilterFieldValue(devRequest, "rstcd"); String sttp = QgcQueryWrapperUtil.getFilterFieldValue(devRequest, "sttp"); if(StrUtil.isBlank(sttp)){ - sttp= QgcQueryWrapperUtil.getFilterFieldValue(devRequest, "sttpCode"); + sttp= Objects.requireNonNull(QgcQueryWrapperUtil.getFilterFieldValue(devRequest, "sttpCode")).toLowerCase(); } String bldsttCcode = QgcQueryWrapperUtil.getFilterFieldValue(devRequest, "bldsttCcode"); @@ -4633,7 +4633,7 @@ public class FbStationServiceImpl implements FbStationService { .append("NVL(along.ORDER_INDEX, 999999) AS rvcdStepSort, ") .append("NVL(rstSort.SORT, 999999) AS rstcdStepSort, ") .append("NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, ") - .append("'" + sttp.toLowerCase() + "' AS anchoPointState, ") + .append("'" + sttp + "' AS anchoPointState, ") .append("CASE WHEN b.lcjStatus IS NOT NULL THEN 1 ELSE 2 END AS lcjStatus ") .append("FROM SD_FBRD_B_H a ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = a.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java index 812c3674..f50e5292 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java @@ -2904,7 +2904,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = t.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") .append("LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = t.STTP AND NVL(sttp.IS_DELETED, 0) = 0 ") .append("WHERE NVL(t.IS_DELETED, 0) = 0 ") - .append("AND NVL(t.USFL, 1) = 1 ") +// .append("AND NVL(t.USFL, 1) = 1 ") .append("AND t.LGTD IS NOT NULL ") .append("AND t.LTTD IS NOT NULL "); From 20354d9ab79648dbb9621a675bdf5dfef55ce463 Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 15 Jul 2026 13:58:58 +0800 Subject: [PATCH 13/16] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 e6b62797..317936e8 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 @@ -1323,7 +1323,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl Date: Wed, 15 Jul 2026 15:07:07 +0800 Subject: [PATCH 14/16] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../overview/service/impl/OverviewServiceImpl.java | 4 ++++ .../mapcfg/controller/MapmoduleBController.java | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/overview/service/impl/OverviewServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/overview/service/impl/OverviewServiceImpl.java index 6dc87d3f..37bc6524 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/overview/service/impl/OverviewServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/overview/service/impl/OverviewServiceImpl.java @@ -1631,6 +1631,10 @@ public class OverviewServiceImpl implements OverviewService { case "pesstdt" -> "t.PESSTDT"; case "swdt" -> "t.SWDT"; case "jcdt" -> "t.JCDT"; + case "baseStepSort" -> "t.BASESTEPSORT"; + case "rvcdStepSort" -> "t.RVCDSTEPSORT"; + case "rstcdStepSort" -> "t.RSTCDSTEPSORT"; + case "siteStepSort" -> "t.SITESTEPSORT"; case "wddt" -> "t.WDDT"; case "orderIndex" -> "t.ORDER_INDEX"; case "remark" -> "t.REMARK"; diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/mapcfg/controller/MapmoduleBController.java b/backend/src/main/java/com/yfd/platform/qgc_sys/mapcfg/controller/MapmoduleBController.java index 63a368fe..02e72757 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_sys/mapcfg/controller/MapmoduleBController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/mapcfg/controller/MapmoduleBController.java @@ -3,6 +3,7 @@ package com.yfd.platform.qgc_sys.mapcfg.controller; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; @@ -175,12 +176,23 @@ public class MapmoduleBController { layerModule.setChildNode(mapmoduleB.getChildNode()); layerModule.setMultiSelect(mapmoduleB.getMultiSelect()); layerModule.setCanBeChecked(mapmoduleB.getCanBeChecked()); - layerModule.setChecked(mapmoduleB.getChecked()); + // 判断mapmoduleB.getChecked() 如果是空则默认为1 + layerModule.setChecked(mapmoduleB.getChecked() == null ? 1 : mapmoduleB.getChecked()); layerModule.setDescription(mapmoduleB.getDescription()); layerModule.setEnable(mapmoduleB.getEnable()); layerModule.setOrderIndex(mapmoduleB.getOrderIndex()); layerModule.setFilterContent(mapmoduleB.getFilterContent()); mapmoduleBService.saveOrUpdate(layerModule); + }else if(count ==1){ + // 走图层修改逻辑 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(MsMapmoduleB::getModuleId, mapmoduleB.getModuleId()); + updateWrapper.eq(MsMapmoduleB::getSystemId, mapmoduleB.getSystemId()); + updateWrapper.eq(MsMapmoduleB::getResType, "layer"); + updateWrapper.eq(MsMapmoduleB::getResId, layer.getId()); + updateWrapper.eq(MsMapmoduleB::getIsDeleted, 0).set(MsMapmoduleB::getChecked, mapmoduleB.getChecked()); + mapmoduleBService.update(updateWrapper); + } } } From 326a397559d9fa74fd3d93109b4cabb1b2517ccd Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 15 Jul 2026 18:01:20 +0800 Subject: [PATCH 15/16] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qgc_base/service/impl/SdEngInfoBHServiceImpl.java | 5 ++++- .../qgc_eng/eq/service/impl/EngEqDataServiceImpl.java | 8 +++++--- .../yfd/platform/qgc_env/wt/mapper/AlongListMapper.java | 6 +++--- .../qgc_env/wte/service/impl/WeFishServiceImpl.java | 2 +- 4 files changed, 13 insertions(+), 8 deletions(-) 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 317936e8..7e34245e 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 @@ -1081,7 +1081,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl { " and MAB.RVCD=#{rvcd} " + " " + " " + - " and MAB.RVCD in (select HBRVCD from SD_HBRV_DIC where IS_DELETED=0 and ENABLED=1 and BASEID=#{baseId}) " + + " and MAB.BASEID in (select BASEID from SD_HYDROBASE where IS_DELETED=0 and ENABLED=1 and BASEID=#{baseId}) " + " " + " union all " + " select " + @@ -93,7 +93,7 @@ public interface AlongListMapper extends BaseMapper { " and MAB.RVCD=#{rvcd} " + " " + " " + - " and MAB.RVCD in (select HBRVCD from SD_HBRV_DIC where IS_DELETED=0 and ENABLED=1 and BASEID=#{baseId}) " + + " and MAB.BASEID in (select BASEID from SD_HYDROBASE where IS_DELETED=0 and ENABLED=1 and BASEID=#{baseId}) " + " " + ") T order by rvcdSort asc, sort asc" + "") @@ -117,7 +117,7 @@ public interface AlongListMapper extends BaseMapper { "and MAB.RVCD=#{rvcd} " + "" + "" + - "and MAB.RVCD in (select HBRVCD from SD_HBRV_DIC where IS_DELETED=0 and ENABLED=1 and BASEID=#{baseId}) " + + "and MAB.BASEID in (select BASEID from SD_HYDROBASE where IS_DELETED=0 and ENABLED=1 and BASEID=#{baseId}) " + "" + "order by MAB.ORDER_INDEX asc, SAD.SORT asc, SWR.TM desc" + ") where ROWNUM=1" + diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java index 9a89714f..b6da77f2 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wte/service/impl/WeFishServiceImpl.java @@ -1923,7 +1923,7 @@ public class WeFishServiceImpl implements WeFishService { List rstcdList, Map paramMap) { StringBuilder sql = new StringBuilder(); - sql.append("SELECT t.HBRVCD AS hbrvcd, t.YR AS yr ") + sql.append("SELECT t.BASE_ID AS hbrvcd, t.YR AS yr ") .append("FROM (") .append("SELECT section.HBRVCD, section.RSTCD, section.BASE_ID, TO_CHAR(we.TM, 'yyyy') AS yr ") .append("FROM SD_WE_B_H section ") From 030de31a2fd0a786531b153cc10d4d77bab24a3d Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 16 Jul 2026 08:30:19 +0800 Subject: [PATCH 16/16] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=B0=B4?= =?UTF-8?q?=E6=B8=A9=E9=94=9A=E7=82=B9=E4=B8=8D=E6=98=BE=E7=A4=BA=E6=B8=A9?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java index f50e5292..c2c3f8fe 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/wt/service/impl/SdWtMonitorServiceImpl.java @@ -2959,7 +2959,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService { } @Override - @Cacheable(cacheNames = "wtCache#3600", keyGenerator = "cacheKeyByUserGenerator") +// @Cacheable(cacheNames = "wtCache#3600", keyGenerator = "cacheKeyByUserGenerator") public DataSourceResult getEngTempPointListKendoListCust(DataSourceRequest dataSourceRequest) { DataSourceResult dataSourceResult = new DataSourceResult<>(); dataSourceResult.setAggregates(new HashMap<>());