fix: 优化过鱼数据导入判断

This commit is contained in:
tangwei 2026-04-25 18:22:35 +08:00
parent 688c142e65
commit 8eea3cbb74

View File

@ -59,7 +59,6 @@ public class FishImportServiceImpl implements IFishImportService {
private static final Map<String, String> FISH_DICT_CACHE = new LinkedHashMap<>();
private static final Map<String, String> FPSS_BH_CACHE = new LinkedHashMap<>();
private static final Map<String, String> DIRECTION_DICT_CACHE = new LinkedHashMap<>();
private static final Map<String, String> ISFS_DICT_CACHE = new LinkedHashMap<>();
private static final String DICT_CODE_FISH = "FISH_TYPE";
@ -94,7 +93,7 @@ public class FishImportServiceImpl implements IFishImportService {
EXCEL_COLUMN_INDEX_MAPPING.put(0, "baseName");
EXCEL_COLUMN_INDEX_MAPPING.put(1, "stationName");
EXCEL_COLUMN_INDEX_MAPPING.put(2, "fpname");
EXCEL_COLUMN_INDEX_MAPPING.put(3, "tm");
EXCEL_COLUMN_INDEX_MAPPING.put(3, "strdt");
EXCEL_COLUMN_INDEX_MAPPING.put(4, "ftp");
EXCEL_COLUMN_INDEX_MAPPING.put(5, "isfs");
EXCEL_COLUMN_INDEX_MAPPING.put(6, "direction");
@ -184,7 +183,8 @@ public class FishImportServiceImpl implements IFishImportService {
switch (fieldName) {
case "stationName":
if (!StringUtils.hasText(cellValue)) {
missingRequiredFields.add("电站名称");
importRow.getWarnings().add(fieldName);
data.setEngName(cellValue.trim());
} else {
String stcd = resolveStationCode(cellValue.trim());
if (stcd == null) {
@ -197,7 +197,9 @@ public class FishImportServiceImpl implements IFishImportService {
break;
case "baseName":
if (!StringUtils.hasText(cellValue)) {
missingRequiredFields.add("水电基地");
importRow.getWarnings().add(fieldName);
data.setBaseId(cellValue.trim());
data.setBaseName(cellValue.trim());
} else {
String baseId = resolveBaseCode(cellValue.trim());
if (baseId == null) {
@ -215,6 +217,7 @@ public class FishImportServiceImpl implements IFishImportService {
String rvcd = resolveRiverCode(cellValue.trim());
if (rvcd == null) {
importRow.getWarnings().add(fieldName);
data.setRvcd(cellValue);
} else {
data.setRvcd(rvcd);
}
@ -222,18 +225,20 @@ public class FishImportServiceImpl implements IFishImportService {
break;
case "tm":
if (!StringUtils.hasText(cellValue)) {
missingRequiredFields.add("过鱼时间");
importRow.getWarnings().add(fieldName);
} else {
Date tm = parseDate(cellValue);
if (tm == null) {
importRow.getWarnings().add("过鱼时间格式错误: " + cellValue);
importRow.getWarnings().add(fieldName);
}
data.setTm(tm);
}
break;
case "ftp":
if (!StringUtils.hasText(cellValue)) {
missingRequiredFields.add("鱼种类");
importRow.getWarnings().add(fieldName);
data.setFtp(cellValue.trim());
data.setFtpName(cellValue.trim());
} else {
String stcd = resolveFishDictCode(cellValue.trim());
if (stcd == null) {
@ -251,7 +256,8 @@ public class FishImportServiceImpl implements IFishImportService {
break;
case "fcnt":
if (!StringUtils.hasText(cellValue)) {
missingRequiredFields.add("过鱼数量");
importRow.getWarnings().add(fieldName);
data.setFcnt(parseInteger(cellValue));
} else {
Integer fcnt = parseInteger(cellValue);
if (fcnt == null) {
@ -265,14 +271,23 @@ public class FishImportServiceImpl implements IFishImportService {
data.setFwet(cellValue.trim());
break;
case "strdt":
data.setStrdt(parseDate(cellValue));
if (!StringUtils.hasText(cellValue)) {
importRow.getWarnings().add(fieldName);
} else {
Date strdt = parseDate(cellValue);
if (strdt == null) {
importRow.getWarnings().add(fieldName);
}
data.setStrdt(strdt);
}
break;
case "enddt":
data.setEnddt(parseDate(cellValue));
break;
case "direction":
if (!StringUtils.hasText(cellValue)) {
missingRequiredFields.add("游向");
importRow.getWarnings().add(fieldName);
data.setDirection(cellValue.trim());
} else {
String direction = resolveDirection(cellValue.trim(), importRow);
data.setDirection(direction);
@ -507,28 +522,16 @@ public class FishImportServiceImpl implements IFishImportService {
}
String lowerName = direction.toLowerCase().trim();
if (!DIRECTION_DICT_CACHE.isEmpty()) {
if (DIRECTION_DICT_CACHE.containsKey(lowerName)) {
return DIRECTION_DICT_CACHE.get(lowerName);
}
for (Map.Entry<String, String> entry : DIRECTION_DICT_CACHE.entrySet()) {
if (entry.getKey().contains(lowerName) || lowerName.contains(entry.getKey())) {
return entry.getValue();
}
}
}
if (lowerName.contains("上行") && lowerName.contains("折返")) {
return "上行折返";
return "03";
} else if (lowerName.contains("下行") && lowerName.contains("折返")) {
return "下行折返";
return "04";
} else if (lowerName.contains("上行")) {
return "上行";
return "01";
} else if (lowerName.contains("下行")) {
return "下行";
return "02";
}
importRow.getWarnings().add("无法识别的游向: " + direction + ",请手动选择");
importRow.getWarnings().add("direction");
return direction;
}
@ -537,25 +540,12 @@ public class FishImportServiceImpl implements IFishImportService {
return null;
}
String lowerName = value.toLowerCase().trim();
if (!ISFS_DICT_CACHE.isEmpty()) {
if (ISFS_DICT_CACHE.containsKey(lowerName)) {
return ISFS_DICT_CACHE.get(lowerName);
if (lowerName.equals("")) {
return "1";
} else if (lowerName.equals("") ) {
return "0";
}
for (Map.Entry<String, String> entry : ISFS_DICT_CACHE.entrySet()) {
if (entry.getKey().contains(lowerName) || lowerName.contains(entry.getKey())) {
return entry.getValue();
}
}
}
if (lowerName.equals("1") || lowerName.equals("") || lowerName.equals("yes") || lowerName.equals("true")) {
return "";
} else if (lowerName.equals("0") || lowerName.equals("") || lowerName.equals("no") || lowerName.equals("false")) {
return "";
}
importRow.getWarnings().add("无法识别的【是否鱼苗】值: " + value + ",将默认设置为【否】");
importRow.getWarnings().add("isfs");
return "";
}