fix: 优化导入逻辑
This commit is contained in:
parent
d4469cb894
commit
a8521c554c
@ -530,37 +530,33 @@ public class FishDraftDataController {
|
||||
|
||||
private void validateAndNormalizeData(FishDraftData data, FishImportResult.FishImportRow importRow,
|
||||
List<String> warnings) {
|
||||
if (data.getStnm() == null || data.getStnm().isEmpty()) {
|
||||
if (data.getStcd() == null || data.getStcd().isEmpty()) {
|
||||
warnings.add("stcd");
|
||||
} else {
|
||||
String stcd = fishImportService.resolveFpssCode(data.getStnm().trim());
|
||||
String stcd = fishImportService.resolveFpssCode(data.getStcd(),data.getStnm());
|
||||
if (stcd == null) {
|
||||
warnings.add("stcd");
|
||||
} else {
|
||||
data.setStcd(stcd);
|
||||
}
|
||||
}
|
||||
|
||||
if (data.getEnnm() != null && !data.getEnnm().isEmpty()) {
|
||||
String stationCode = fishImportService.resolveStationCode(data.getEnnm().trim());
|
||||
if (data.getRstcd() != null && !data.getRstcd().isEmpty()) {
|
||||
String stationCode = fishImportService.resolveStationCode(data.getRstcd(),data.getEnnm());
|
||||
if (stationCode == null) {
|
||||
warnings.add("rstcd");
|
||||
} else {
|
||||
data.setRstcd(stationCode);
|
||||
}
|
||||
}else{
|
||||
warnings.add("rstcd");
|
||||
}
|
||||
|
||||
if (data.getBaseName() != null && !data.getBaseName().isEmpty()) {
|
||||
String baseId = fishImportService.resolveBaseCode(data.getBaseName().trim());
|
||||
if (data.getBaseId() != null && !data.getBaseId().isEmpty()) {
|
||||
String baseId = fishImportService.resolveBaseCode(data.getBaseId(),data.getBaseName());
|
||||
if (baseId == null) {
|
||||
warnings.add("baseId");
|
||||
} else {
|
||||
data.setBaseId(baseId);
|
||||
}
|
||||
}
|
||||
|
||||
if (data.getRvcd() != null && !data.getRvcd().isEmpty()) {
|
||||
String rvcd = fishImportService.resolveRiverCode(data.getRvcd().trim());
|
||||
String rvcd = fishImportService.resolveRiverCode(data.getRvcd(),data.getRvcd());
|
||||
if (rvcd == null) {
|
||||
warnings.add("rvcd");
|
||||
}
|
||||
@ -573,18 +569,12 @@ public class FishDraftDataController {
|
||||
if (data.getFtp() == null || data.getFtp().isEmpty()) {
|
||||
warnings.add("ftp");
|
||||
} else {
|
||||
String ftpCode = fishImportService.resolveFishDictCode(data.getFtp().trim());
|
||||
String ftpCode = fishImportService.resolveFishDictCode(data.getFtp(),data.getFtpName());
|
||||
if (ftpCode == null) {
|
||||
warnings.add("ftp");
|
||||
} else {
|
||||
data.setFtp(ftpCode);
|
||||
}
|
||||
}
|
||||
|
||||
if (data.getFsz() != null) {
|
||||
data.setFsz(data.getFsz().trim());
|
||||
}
|
||||
|
||||
if (data.getFcnt() == null) {
|
||||
warnings.add("fcnt");
|
||||
}
|
||||
@ -603,8 +593,6 @@ public class FishDraftDataController {
|
||||
String direction = fishImportService.resolveDirection(data.getDirection().trim(), importRow);
|
||||
if (direction == null) {
|
||||
warnings.add("direction");
|
||||
} else {
|
||||
data.setDirection(direction);
|
||||
}
|
||||
}
|
||||
|
||||
@ -614,14 +602,12 @@ public class FishDraftDataController {
|
||||
String isfs = fishImportService.resolveIsfs(String.valueOf(data.getIsfs()), importRow);
|
||||
if (isfs == null) {
|
||||
warnings.add("isfs");
|
||||
} else {
|
||||
data.setIsfs("1".equals(isfs) ? 1 : 0);
|
||||
}
|
||||
}
|
||||
|
||||
if (data.getSourceType() != null && !data.getSourceType().isEmpty()) {
|
||||
data.setSourceType(fishImportService.parseSourceType(data.getSourceType().trim()));
|
||||
}
|
||||
// if (data.getSourceType() != null && !data.getSourceType().isEmpty()) {
|
||||
// data.setSourceType(fishImportService.parseSourceType(data.getSourceType().trim()));
|
||||
// }
|
||||
}
|
||||
|
||||
@PostMapping("/validateAndMatchRow")
|
||||
|
||||
@ -23,20 +23,17 @@ public interface IFishImportService {
|
||||
|
||||
String resolveFpssCode(String name);
|
||||
|
||||
String resolveStationCode(String code,String stationName);
|
||||
|
||||
String resolveFpssCode(String code,String name);
|
||||
|
||||
String resolveFishDictCode(String name);
|
||||
|
||||
String resolveFishDictCode(String code,String name);
|
||||
|
||||
String resolveBaseCode(String baseName);
|
||||
|
||||
String resolveBaseCode(String code,String baseName);
|
||||
|
||||
String resolveRiverCode(String riverName);
|
||||
|
||||
String resolveStationCode(String code,String stationName);
|
||||
|
||||
String resolveFpssCode(String code,String name);
|
||||
String resolveFishDictCode(String code,String name);
|
||||
String resolveBaseCode(String code,String baseName);
|
||||
String resolveRiverCode(String code,String riverName);
|
||||
|
||||
String resolveDirection(String direction, FishImportResult.FishImportRow importRow);
|
||||
|
||||
@ -61,11 +61,16 @@ public class FishImportServiceImpl implements IFishImportService {
|
||||
private static final Map<Integer, String> EXCEL_COLUMN_INDEX_MAPPING = new LinkedHashMap<>();
|
||||
|
||||
private static final Map<String, String> STATION_NAME_CACHE = new LinkedHashMap<>();
|
||||
private static final Map<String, String> STATION_CODE_TO_NAME_CACHE = new LinkedHashMap<>();
|
||||
private static final Map<String, String> BASE_NAME_CACHE = new LinkedHashMap<>();
|
||||
private static final Map<String, String> BASE_CODE_TO_NAME_CACHE = new LinkedHashMap<>();
|
||||
private static final Map<String, String> RIVER_NAME_CACHE = new LinkedHashMap<>();
|
||||
private static final Map<String, String> RIVER_CODE_TO_NAME_CACHE = new LinkedHashMap<>();
|
||||
|
||||
private static final Map<String, String> FISH_DICT_CACHE = new LinkedHashMap<>();
|
||||
private static final Map<String, String> FISH_CODE_TO_NAME_CACHE = new LinkedHashMap<>();
|
||||
private static final Map<String, String> FPSS_BH_CACHE = new LinkedHashMap<>();
|
||||
private static final Map<String, String> FPSS_CODE_TO_NAME_CACHE = new LinkedHashMap<>();
|
||||
private static final Map<String, String> ISFS_DICT_CACHE = new LinkedHashMap<>();
|
||||
|
||||
private static final String DICT_CODE_FISH = "FISH_TYPE";
|
||||
@ -376,7 +381,10 @@ public class FishImportServiceImpl implements IFishImportService {
|
||||
STATION_NAME_CACHE.put(station.getEnnm().trim().toLowerCase(), station.getStcd());
|
||||
}
|
||||
if (StringUtils.hasText(station.getStcd())) {
|
||||
STATION_NAME_CACHE.put(station.getStcd().trim().toLowerCase(), station.getStcd());
|
||||
// STATION_NAME_CACHE.put(station.getStcd().trim().toLowerCase(), station.getStcd());
|
||||
if (StringUtils.hasText(station.getEnnm())) {
|
||||
STATION_CODE_TO_NAME_CACHE.put(station.getStcd().trim().toLowerCase(), station.getEnnm().trim().toLowerCase());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -388,7 +396,10 @@ public class FishImportServiceImpl implements IFishImportService {
|
||||
BASE_NAME_CACHE.put(base.getBasename().trim().toLowerCase(), base.getBaseid());
|
||||
}
|
||||
if (StringUtils.hasText(base.getBaseid())) {
|
||||
BASE_NAME_CACHE.put(base.getBaseid().trim().toLowerCase(), base.getBaseid());
|
||||
// BASE_NAME_CACHE.put(base.getBaseid().trim().toLowerCase(), base.getBaseid());
|
||||
if (StringUtils.hasText(base.getBasename())) {
|
||||
BASE_CODE_TO_NAME_CACHE.put(base.getBaseid().trim().toLowerCase(), base.getBasename().trim().toLowerCase());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -400,7 +411,10 @@ public class FishImportServiceImpl implements IFishImportService {
|
||||
RIVER_NAME_CACHE.put(river.getRvnm().trim().toLowerCase(), river.getRvcd());
|
||||
}
|
||||
if (StringUtils.hasText(river.getRvcd())) {
|
||||
RIVER_NAME_CACHE.put(river.getRvcd().trim().toLowerCase(), river.getRvcd());
|
||||
// RIVER_NAME_CACHE.put(river.getRvcd().trim().toLowerCase(), river.getRvcd());
|
||||
if (StringUtils.hasText(river.getRvnm())) {
|
||||
RIVER_CODE_TO_NAME_CACHE.put(river.getRvcd().trim().toLowerCase(), river.getRvnm().trim().toLowerCase());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -412,7 +426,10 @@ public class FishImportServiceImpl implements IFishImportService {
|
||||
FISH_DICT_CACHE.put(fishDictoryB.getName().trim().toLowerCase(), fishDictoryB.getCode());
|
||||
}
|
||||
if (StringUtils.hasText(fishDictoryB.getCode())) {
|
||||
FISH_DICT_CACHE.put(fishDictoryB.getCode().trim().toLowerCase(), fishDictoryB.getCode());
|
||||
// FISH_DICT_CACHE.put(fishDictoryB.getCode().trim().toLowerCase(), fishDictoryB.getCode());
|
||||
if (StringUtils.hasText(fishDictoryB.getName())) {
|
||||
FISH_CODE_TO_NAME_CACHE.put(fishDictoryB.getCode().trim().toLowerCase(), fishDictoryB.getName().trim().toLowerCase());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -424,7 +441,10 @@ public class FishImportServiceImpl implements IFishImportService {
|
||||
FPSS_BH_CACHE.put(sdFpssBH.getStnm().trim().toLowerCase(), sdFpssBH.getStcd());
|
||||
}
|
||||
if (StringUtils.hasText(sdFpssBH.getStcd())) {
|
||||
FPSS_BH_CACHE.put(sdFpssBH.getStcd().trim().toLowerCase(), sdFpssBH.getStcd());
|
||||
// FPSS_BH_CACHE.put(sdFpssBH.getStcd().trim().toLowerCase(), sdFpssBH.getStcd());
|
||||
if (StringUtils.hasText(sdFpssBH.getStnm())) {
|
||||
FPSS_CODE_TO_NAME_CACHE.put(sdFpssBH.getStcd().trim().toLowerCase(), sdFpssBH.getStnm().trim().toLowerCase());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -466,24 +486,44 @@ public class FishImportServiceImpl implements IFishImportService {
|
||||
|
||||
@Override
|
||||
public String resolveStationCode(String code, String stationName) {
|
||||
if (stationName == null) {
|
||||
if (code == null && stationName == null) {
|
||||
return null;
|
||||
}
|
||||
String lowerName = stationName.toLowerCase().trim();
|
||||
if (STATION_NAME_CACHE.containsKey(lowerName)) {
|
||||
return STATION_NAME_CACHE.get(lowerName);
|
||||
}
|
||||
for (Map.Entry<String, String> entry : STATION_NAME_CACHE.entrySet()) {
|
||||
if (entry.getKey().contains(lowerName)) {
|
||||
return entry.getValue();
|
||||
loadStationAndBaseCache();
|
||||
String lowerCode = code != null ? code.trim().toLowerCase() : null;
|
||||
String lowerName = stationName != null ? stationName.trim().toLowerCase() : null;
|
||||
if (lowerCode != null && lowerName != null) {
|
||||
String cachedName = STATION_CODE_TO_NAME_CACHE.get(lowerCode);
|
||||
if (cachedName != null && cachedName.equals(lowerName)) {
|
||||
return code.trim();
|
||||
}
|
||||
}
|
||||
String resultByName = resolveStationCode(stationName);
|
||||
if (resultByName != null && resultByName.equalsIgnoreCase(code)) {
|
||||
return resultByName;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String resolveFpssCode(String code, String name) {
|
||||
return "";
|
||||
if (code == null && name == null) {
|
||||
return null;
|
||||
}
|
||||
loadStationAndBaseCache();
|
||||
String lowerCode = code != null ? code.trim().toLowerCase() : null;
|
||||
String lowerName = name != null ? name.trim().toLowerCase() : null;
|
||||
if (lowerCode != null && lowerName != null) {
|
||||
String cachedName = FPSS_CODE_TO_NAME_CACHE.get(lowerCode);
|
||||
if (cachedName != null && cachedName.equals(lowerName)) {
|
||||
return code.trim();
|
||||
}
|
||||
}
|
||||
String resultByName = resolveFpssCode(name);
|
||||
if (resultByName != null && resultByName.equalsIgnoreCase(code)) {
|
||||
return resultByName;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String resolveFishDictCode(String name) {
|
||||
@ -504,7 +544,23 @@ public class FishImportServiceImpl implements IFishImportService {
|
||||
|
||||
@Override
|
||||
public String resolveFishDictCode(String code, String name) {
|
||||
return "";
|
||||
if (code == null && name == null) {
|
||||
return null;
|
||||
}
|
||||
loadStationAndBaseCache();
|
||||
String lowerCode = code != null ? code.trim().toLowerCase() : null;
|
||||
String lowerName = name != null ? name.trim().toLowerCase() : null;
|
||||
if (lowerCode != null && lowerName != null) {
|
||||
String cachedName = FISH_CODE_TO_NAME_CACHE.get(lowerCode);
|
||||
if (cachedName != null && cachedName.equals(lowerName)) {
|
||||
return code.trim();
|
||||
}
|
||||
}
|
||||
String resultByName = resolveFishDictCode(name);
|
||||
if (resultByName != null && resultByName.equalsIgnoreCase(code)) {
|
||||
return resultByName;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String resolveBaseCode(String baseName) {
|
||||
@ -525,7 +581,23 @@ public class FishImportServiceImpl implements IFishImportService {
|
||||
|
||||
@Override
|
||||
public String resolveBaseCode(String code, String baseName) {
|
||||
return "";
|
||||
if (code == null && baseName == null) {
|
||||
return null;
|
||||
}
|
||||
loadStationAndBaseCache();
|
||||
String lowerCode = code != null ? code.trim().toLowerCase() : null;
|
||||
String lowerName = baseName != null ? baseName.trim().toLowerCase() : null;
|
||||
if (lowerCode != null && lowerName != null) {
|
||||
String cachedName = BASE_CODE_TO_NAME_CACHE.get(lowerCode);
|
||||
if (cachedName != null && cachedName.equals(lowerName)) {
|
||||
return code.trim();
|
||||
}
|
||||
}
|
||||
String resultByName = resolveBaseCode(baseName);
|
||||
if (resultByName != null && resultByName.equalsIgnoreCase(code)) {
|
||||
return resultByName;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String resolveRiverCode(String riverName) {
|
||||
@ -546,7 +618,23 @@ public class FishImportServiceImpl implements IFishImportService {
|
||||
|
||||
@Override
|
||||
public String resolveRiverCode(String code, String riverName) {
|
||||
return "";
|
||||
if (code == null && riverName == null) {
|
||||
return null;
|
||||
}
|
||||
loadStationAndBaseCache();
|
||||
String lowerCode = code != null ? code.trim().toLowerCase() : null;
|
||||
String lowerName = riverName != null ? riverName.trim().toLowerCase() : null;
|
||||
if (lowerCode != null && lowerName != null) {
|
||||
String cachedName = RIVER_CODE_TO_NAME_CACHE.get(lowerCode);
|
||||
if (cachedName != null && cachedName.equals(lowerName)) {
|
||||
return code.trim();
|
||||
}
|
||||
}
|
||||
String resultByName = resolveRiverCode(riverName);
|
||||
if (resultByName != null && resultByName.equalsIgnoreCase(code)) {
|
||||
return resultByName;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String validateFishType(String fishName, FishImportResult.FishImportRow importRow) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user