fix: 优化逻辑

This commit is contained in:
tangwei 2026-09-03 17:41:05 +08:00
parent 15e81b746e
commit d57f122cb5

View File

@ -1190,6 +1190,9 @@ public class WeFishServiceImpl implements WeFishService {
end = parseDateTimeSafely(endTime);
}
boolean hasTime = start != null && end != null;
// 前端可传动物字典ID集合(SD_ANIMALDICTORY_B.ID)仅查询这些动物数据
List<String> animalList = getWeFishFilterTexts(
dataSourceRequest == null ? null : dataSourceRequest.getFilter(), "animalList");
Map<String, Object> paramMap = new HashMap<>();
StringBuilder sql = new StringBuilder();
@ -1206,15 +1209,15 @@ public class WeFishServiceImpl implements WeFishService {
.append("'WVA' AS sttpMap, ")
.append("'WVA' AS sttpCode, ")
.append("ai.RVCD AS rvcd, ")
.append("ai.ADDVCD AS addvcd, ")
.append("ai.HBRVCD AS hbrvcd, ")
// .append("ai.ADDVCD AS addvcd, ")
// .append("ai.HBRVCD AS hbrvcd, ")
.append("ai.BASE_ID AS baseId, ")
.append("'wva' AS anchoPointState, ")
.append("agg.animals AS animals, ")
.append("TO_CHAR(agg.latestTm, 'yyyy-mm-dd hh24:mi:ss') AS tm ")
.append("FROM SD_AIMONITOR_B_H ai ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = ai.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN ( ")
.append("INNER JOIN ( ")
.append(" SELECT t.stcd, ")
.append(" LISTAGG(t.anm, ',') WITHIN GROUP (ORDER BY t.anm) AS animals, ")
.append(" MAX(t.tm) AS latestTm ")
@ -1230,6 +1233,15 @@ public class WeFishServiceImpl implements WeFishService {
paramMap.put("weAnimalPointEndTime", end);
sql.append(" AND w.TM BETWEEN #{map.weAnimalPointStartTime} AND #{map.weAnimalPointEndTime} ");
}
if (CollUtil.isNotEmpty(animalList)) {
List<String> placeholders = new ArrayList<>();
for (int i = 0; i < animalList.size(); i++) {
String key = "weAnimalPointAnimal_" + i;
placeholders.add("#{map." + key + "}");
paramMap.put(key, animalList.get(i));
}
sql.append(" AND a.ID IN (").append(String.join(", ", placeholders)).append(") ");
}
sql.append(" GROUP BY w.STCD, a.NAME ")
.append(" ) t ")
.append(" GROUP BY t.stcd ")
@ -1279,7 +1291,7 @@ public class WeFishServiceImpl implements WeFishService {
);
StringBuilder sql = new StringBuilder();
sql.append("SELECT r.id AS id, r.name AS name, r.code AS code, ")
sql.append("SELECT r.id AS id, r.name AS name, r.ID AS code, ")
.append("r.baseId AS baseId, r.baseName AS baseName, ")
.append("r.rvcd AS rvcd, r.rvcdName AS rvcdName, ")
.append("r.hbrvcd AS hbrvcd, r.hbrvcdName AS hbrvcdName, ")