fix: 优化逻辑
This commit is contained in:
parent
26837f30c5
commit
808953dc76
@ -732,12 +732,8 @@ public class FprMonitorServiceImpl implements FprMonitorService {
|
|||||||
"src.ID AS id, " +
|
"src.ID AS id, " +
|
||||||
"NVL(src.IS_DELETED, 0) AS isDeleted, " +
|
"NVL(src.IS_DELETED, 0) AS isDeleted, " +
|
||||||
"src.ID AS zyFishId, " +
|
"src.ID AS zyFishId, " +
|
||||||
"NVL((SELECT MIN(rel2.RVCD) " +
|
"NVL(relAgg.rvcd, 'null') AS rvcd, " +
|
||||||
" FROM SD_FISHDICTORY_RLTN_B rel2 " +
|
"NVL(relAgg.rvcdName, '') AS rvcdName, " +
|
||||||
" WHERE rel2.ZY_FISH_ID = src.ID " +
|
|
||||||
" AND rel2.RVCD <> 'ZY' " +
|
|
||||||
" AND NVL(rel2.IS_DELETED, 0) = 0), 'null') AS rvcd, " +
|
|
||||||
"CAST(NULL AS VARCHAR2(1000)) AS rvcdName, " +
|
|
||||||
"src.NAME AS name, " +
|
"src.NAME AS name, " +
|
||||||
"src.TYPE AS type, " +
|
"src.TYPE AS type, " +
|
||||||
"src.FAMILY AS family, " +
|
"src.FAMILY AS family, " +
|
||||||
@ -772,6 +768,20 @@ public class FprMonitorServiceImpl implements FprMonitorService {
|
|||||||
"src.VLSR_TM AS vlsrTm, " +
|
"src.VLSR_TM AS vlsrTm, " +
|
||||||
"src.SPAWN_MONTH AS spawnMonth " +
|
"src.SPAWN_MONTH AS spawnMonth " +
|
||||||
"FROM SD_FISHDICTORY_B src " +
|
"FROM SD_FISHDICTORY_B src " +
|
||||||
|
"LEFT JOIN ( " +
|
||||||
|
" SELECT relBase.ZY_FISH_ID AS zyFishId, " +
|
||||||
|
" MIN(relBase.RVCD) AS rvcd, " +
|
||||||
|
" LISTAGG(relBase.RVNM, ',') WITHIN GROUP (ORDER BY relBase.RVNM) AS rvcdName " +
|
||||||
|
" FROM ( " +
|
||||||
|
" SELECT DISTINCT rel.ZY_FISH_ID, rel.RVCD, rv.RVNM " +
|
||||||
|
" FROM SD_FISHDICTORY_RLTN_B rel " +
|
||||||
|
" LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = rel.RVCD " +
|
||||||
|
" WHERE rel.RVCD <> 'ZY' " +
|
||||||
|
" AND NVL(rel.IS_DELETED, 0) = 0 " +
|
||||||
|
" AND rv.RVNM IS NOT NULL " +
|
||||||
|
" ) relBase " +
|
||||||
|
" GROUP BY relBase.ZY_FISH_ID " +
|
||||||
|
") relAgg ON relAgg.zyFishId = src.ID " +
|
||||||
"WHERE NVL(src.IS_DELETED, 0) = 0 ";
|
"WHERE NVL(src.IS_DELETED, 0) = 0 ";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -787,49 +797,10 @@ public class FprMonitorServiceImpl implements FprMonitorService {
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<String> fishIds = list.stream()
|
|
||||||
.map(item -> StrUtil.blankToDefault(item.getZyFishId(), item.getId()))
|
|
||||||
.filter(StrUtil::isNotBlank)
|
|
||||||
.distinct()
|
|
||||||
.toList();
|
|
||||||
if (CollUtil.isEmpty(fishIds)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Map<String, Object> paramMap = new HashMap<>();
|
|
||||||
List<String> placeholders = new ArrayList<>();
|
|
||||||
for (int i = 0; i < fishIds.size(); i++) {
|
|
||||||
String key = "zyFishId" + i;
|
|
||||||
paramMap.put(key, fishIds.get(i));
|
|
||||||
placeholders.add("#{map." + key + "}");
|
|
||||||
}
|
|
||||||
String sql = "SELECT rel.ZY_FISH_ID AS zyFishId, rv.RVNM AS rvcdName " +
|
|
||||||
"FROM SD_FISHDICTORY_RLTN_B rel " +
|
|
||||||
"LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = rel.RVCD " +
|
|
||||||
"WHERE rel.ZY_FISH_ID IN (" + String.join(", ", placeholders) + ") " +
|
|
||||||
"AND rel.RVCD <> 'ZY' " +
|
|
||||||
"AND NVL(rel.IS_DELETED, 0) = 0 " +
|
|
||||||
"AND rv.RVNM IS NOT NULL";
|
|
||||||
List<Map<String, Object>> rows = microservicDynamicSQLMapper.getAllList(sql, paramMap);
|
|
||||||
Map<String, List<String>> rvcdNameMap = new HashMap<>();
|
|
||||||
for (Map<String, Object> row : rows) {
|
|
||||||
Object fishId = row.get("ZYFISHID");
|
|
||||||
Object rvcdName = row.get("RVCDNAME");
|
|
||||||
if (fishId == null || rvcdName == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
rvcdNameMap.computeIfAbsent(String.valueOf(fishId), key -> new ArrayList<>())
|
|
||||||
.add(String.valueOf(rvcdName));
|
|
||||||
}
|
|
||||||
for (FprZyFishDicVo item : list) {
|
for (FprZyFishDicVo item : list) {
|
||||||
if (item == null) {
|
if (item != null && item.getRvcdName() == null) {
|
||||||
continue;
|
item.setRvcdName("");
|
||||||
}
|
}
|
||||||
String fishKey = StrUtil.blankToDefault(item.getZyFishId(), item.getId());
|
|
||||||
List<String> names = rvcdNameMap.getOrDefault(fishKey, new ArrayList<>()).stream()
|
|
||||||
.filter(StrUtil::isNotBlank)
|
|
||||||
.distinct()
|
|
||||||
.toList();
|
|
||||||
item.setRvcdName(String.join(",", names));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user