fix: 优化逻辑

This commit is contained in:
tangwei 2026-04-25 21:56:43 +08:00
parent 8d1492efbb
commit 601bf62b7f
5 changed files with 100 additions and 7 deletions

View File

@ -183,12 +183,12 @@ public class FishImportServiceImpl implements IFishImportService {
switch (fieldName) { switch (fieldName) {
case "stationName": case "stationName":
if (!StringUtils.hasText(cellValue)) { if (!StringUtils.hasText(cellValue)) {
importRow.getWarnings().add(fieldName); importRow.getWarnings().add("engName");
data.setEngName(cellValue.trim()); data.setEngName(cellValue.trim());
} else { } else {
String stcd = resolveStationCode(cellValue.trim()); String stcd = resolveStationCode(cellValue.trim());
if (stcd == null) { if (stcd == null) {
importRow.getWarnings().add(fieldName); importRow.getWarnings().add("engName");
data.setEngName(cellValue.trim()); data.setEngName(cellValue.trim());
} else { } else {
data.setEngName(cellValue.trim()); data.setEngName(cellValue.trim());
@ -197,13 +197,13 @@ public class FishImportServiceImpl implements IFishImportService {
break; break;
case "baseName": case "baseName":
if (!StringUtils.hasText(cellValue)) { if (!StringUtils.hasText(cellValue)) {
importRow.getWarnings().add(fieldName); importRow.getWarnings().add("baseId");
data.setBaseId(cellValue.trim()); data.setBaseId(cellValue.trim());
data.setBaseName(cellValue.trim()); data.setBaseName(cellValue.trim());
} else { } else {
String baseId = resolveBaseCode(cellValue.trim()); String baseId = resolveBaseCode(cellValue.trim());
if (baseId == null) { if (baseId == null) {
importRow.getWarnings().add(fieldName); importRow.getWarnings().add("baseId");
data.setBaseId(cellValue.trim()); data.setBaseId(cellValue.trim());
data.setBaseName(cellValue.trim()); data.setBaseName(cellValue.trim());
} else { } else {
@ -316,11 +316,11 @@ public class FishImportServiceImpl implements IFishImportService {
break; break;
case "stnm": case "stnm":
if (!StringUtils.hasText(cellValue)) { if (!StringUtils.hasText(cellValue)) {
missingRequiredFields.add("过鱼设施名称"); missingRequiredFields.add("stcd");
} else { } else {
String stcd = resolveFpssCode(cellValue.trim()); String stcd = resolveFpssCode(cellValue.trim());
if (stcd == null) { if (stcd == null) {
importRow.getWarnings().add(fieldName); importRow.getWarnings().add("stcd");
data.setStcd(cellValue.trim()); data.setStcd(cellValue.trim());
data.setStnm(cellValue.trim()); data.setStnm(cellValue.trim());
} else { } else {

View File

@ -37,6 +37,15 @@ public class TreeStructureController {
return ResponseResult.successData(result); return ResponseResult.successData(result);
} }
@GetMapping("/baseEng")
@Operation(summary = "获取基地-电站树形结构")
public ResponseResult getBaseEngTree(
@RequestParam(required = false) String baseId,
@RequestParam(required = false) String engName) {
List<Map<String, Object>> result = treeStructureService.getBaseEngTree(baseId, engName);
return ResponseResult.successData(result);
}
@GetMapping("/rvcdBaseEng") @GetMapping("/rvcdBaseEng")
@Operation(summary = "获取流域-基地-电站树形结构") @Operation(summary = "获取流域-基地-电站树形结构")

View File

@ -45,4 +45,11 @@ public interface ITreeStructureService {
* @param engName 电站名称可选用于模糊筛选电站 * @param engName 电站名称可选用于模糊筛选电站
*/ */
List<Map<String, Object>> getRvcdEngTree(String rvcd, String engName); List<Map<String, Object>> getRvcdEngTree(String rvcd, String engName);
/**
* 获取基地-电站树形结构二级树
* @param baseId 基地编码可选为空则返回全部
* @param engName 电站名称可选用于模糊筛选电站
*/
List<Map<String, Object>> getBaseEngTree(String baseId, String engName);
} }

View File

@ -426,5 +426,82 @@ public class TreeStructureServiceImpl implements ITreeStructureService {
return result; return result;
} }
@Override
public List<Map<String, Object>> getBaseEngTree(String baseId, String engName) {
List<Map<String, Object>> result = new ArrayList<>();
// 1. 查询基地列表
List<SdHydrobase> baseList;
if (StringUtils.hasText(baseId)) {
baseList = hydrobaseMapper.selectByPbaseid(baseId);
SdHydrobase singleBase = hydrobaseMapper.selectById(baseId);
if (singleBase != null && !baseList.contains(singleBase)) {
baseList = new ArrayList<>();
baseList.add(singleBase);
}
} else {
baseList = hydrobaseMapper.selectRootList();
}
// 2. 预加载所有基地下的电站按基地分组
Map<String, List<SdEngInfoBH>> baseEngMap = new HashMap<>();
for (SdHydrobase hydrobase : baseList) {
List<SdEngInfoBH> engList = engInfoBHMapper.selectByBaseId(hydrobase.getBaseid());
if (StringUtils.hasText(engName) && engList != null) {
engList = engList.stream()
.filter(eng -> eng.getEnnm() != null && eng.getEnnm().contains(engName))
.collect(Collectors.toList());
}
if (engList != null && !engList.isEmpty()) {
baseEngMap.put(hydrobase.getBaseid(), engList);
}
}
// 3. 构建二级树形结构基地 -> 电站
for (SdHydrobase hydrobase : baseList) {
Map<String, Object> baseNode = new LinkedHashMap<>();
baseNode.put("type", "BASE");
baseNode.put("code", hydrobase.getBaseid());
baseNode.put("name", hydrobase.getBasename());
baseNode.put("shortname", hydrobase.getShortname());
baseNode.put("grd", hydrobase.getGrd());
baseNode.put("path", hydrobase.getPath());
baseNode.put("orgLevel", 0);
baseNode.put("parentId", "0");
// 获取该基地下的所有电站
List<SdEngInfoBH> engList = baseEngMap.get(hydrobase.getBaseid());
List<Map<String, Object>> engChildren = new ArrayList<>();
if (engList != null && !engList.isEmpty()) {
for (SdEngInfoBH eng : engList) {
Map<String, Object> engNode = new LinkedHashMap<>();
engNode.put("type", "STATION");
engNode.put("code", eng.getStcd());
engNode.put("name", eng.getEnnm());
engNode.put("lgtd", eng.getLgtd());
engNode.put("lttd", eng.getLttd());
engNode.put("elev", eng.getElev());
engNode.put("usfl", eng.getUsfl());
engNode.put("bldstt", eng.getBldstt());
engNode.put("engtp", eng.getEngtp());
engNode.put("parentId", hydrobase.getBaseid());
engNode.put("orgLevel", 1);
engChildren.add(engNode);
}
}
// 只有当该基地下有电站时才添加该基地节点
if (!engChildren.isEmpty()) {
baseNode.put("children", engChildren);
result.add(baseNode);
}
}
return result;
}
} }

View File

@ -233,7 +233,7 @@
<select id="selectByBaseId" resultMap="BaseResultMap"> <select id="selectByBaseId" resultMap="BaseResultMap">
SELECT * FROM SD_ENGINFO_B_H SELECT * FROM SD_ENGINFO_B_H
WHERE BASEID = #{baseId} WHERE BASE_ID = #{baseId}
ORDER BY ORDER_INDEX ASC ORDER BY ORDER_INDEX ASC
</select> </select>