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,
|
private void validateAndNormalizeData(FishDraftData data, FishImportResult.FishImportRow importRow,
|
||||||
List<String> warnings) {
|
List<String> warnings) {
|
||||||
if (data.getStnm() == null || data.getStnm().isEmpty()) {
|
if (data.getStcd() == null || data.getStcd().isEmpty()) {
|
||||||
warnings.add("stcd");
|
warnings.add("stcd");
|
||||||
} else {
|
} else {
|
||||||
String stcd = fishImportService.resolveFpssCode(data.getStnm().trim());
|
String stcd = fishImportService.resolveFpssCode(data.getStcd(),data.getStnm());
|
||||||
if (stcd == null) {
|
if (stcd == null) {
|
||||||
warnings.add("stcd");
|
warnings.add("stcd");
|
||||||
} else {
|
|
||||||
data.setStcd(stcd);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.getEnnm() != null && !data.getEnnm().isEmpty()) {
|
if (data.getRstcd() != null && !data.getRstcd().isEmpty()) {
|
||||||
String stationCode = fishImportService.resolveStationCode(data.getEnnm().trim());
|
String stationCode = fishImportService.resolveStationCode(data.getRstcd(),data.getEnnm());
|
||||||
if (stationCode == null) {
|
if (stationCode == null) {
|
||||||
warnings.add("rstcd");
|
warnings.add("rstcd");
|
||||||
} else {
|
|
||||||
data.setRstcd(stationCode);
|
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
warnings.add("rstcd");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.getBaseName() != null && !data.getBaseName().isEmpty()) {
|
if (data.getBaseId() != null && !data.getBaseId().isEmpty()) {
|
||||||
String baseId = fishImportService.resolveBaseCode(data.getBaseName().trim());
|
String baseId = fishImportService.resolveBaseCode(data.getBaseId(),data.getBaseName());
|
||||||
if (baseId == null) {
|
if (baseId == null) {
|
||||||
warnings.add("baseId");
|
warnings.add("baseId");
|
||||||
} else {
|
|
||||||
data.setBaseId(baseId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.getRvcd() != null && !data.getRvcd().isEmpty()) {
|
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) {
|
if (rvcd == null) {
|
||||||
warnings.add("rvcd");
|
warnings.add("rvcd");
|
||||||
}
|
}
|
||||||
@ -573,18 +569,12 @@ public class FishDraftDataController {
|
|||||||
if (data.getFtp() == null || data.getFtp().isEmpty()) {
|
if (data.getFtp() == null || data.getFtp().isEmpty()) {
|
||||||
warnings.add("ftp");
|
warnings.add("ftp");
|
||||||
} else {
|
} else {
|
||||||
String ftpCode = fishImportService.resolveFishDictCode(data.getFtp().trim());
|
String ftpCode = fishImportService.resolveFishDictCode(data.getFtp(),data.getFtpName());
|
||||||
if (ftpCode == null) {
|
if (ftpCode == null) {
|
||||||
warnings.add("ftp");
|
warnings.add("ftp");
|
||||||
} else {
|
|
||||||
data.setFtp(ftpCode);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.getFsz() != null) {
|
|
||||||
data.setFsz(data.getFsz().trim());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (data.getFcnt() == null) {
|
if (data.getFcnt() == null) {
|
||||||
warnings.add("fcnt");
|
warnings.add("fcnt");
|
||||||
}
|
}
|
||||||
@ -603,8 +593,6 @@ public class FishDraftDataController {
|
|||||||
String direction = fishImportService.resolveDirection(data.getDirection().trim(), importRow);
|
String direction = fishImportService.resolveDirection(data.getDirection().trim(), importRow);
|
||||||
if (direction == null) {
|
if (direction == null) {
|
||||||
warnings.add("direction");
|
warnings.add("direction");
|
||||||
} else {
|
|
||||||
data.setDirection(direction);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -614,14 +602,12 @@ public class FishDraftDataController {
|
|||||||
String isfs = fishImportService.resolveIsfs(String.valueOf(data.getIsfs()), importRow);
|
String isfs = fishImportService.resolveIsfs(String.valueOf(data.getIsfs()), importRow);
|
||||||
if (isfs == null) {
|
if (isfs == null) {
|
||||||
warnings.add("isfs");
|
warnings.add("isfs");
|
||||||
} else {
|
|
||||||
data.setIsfs("1".equals(isfs) ? 1 : 0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.getSourceType() != null && !data.getSourceType().isEmpty()) {
|
// if (data.getSourceType() != null && !data.getSourceType().isEmpty()) {
|
||||||
data.setSourceType(fishImportService.parseSourceType(data.getSourceType().trim()));
|
// data.setSourceType(fishImportService.parseSourceType(data.getSourceType().trim()));
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/validateAndMatchRow")
|
@PostMapping("/validateAndMatchRow")
|
||||||
|
|||||||
@ -23,20 +23,17 @@ public interface IFishImportService {
|
|||||||
|
|
||||||
String resolveFpssCode(String name);
|
String resolveFpssCode(String name);
|
||||||
|
|
||||||
String resolveStationCode(String code,String stationName);
|
|
||||||
|
|
||||||
String resolveFpssCode(String code,String name);
|
|
||||||
|
|
||||||
String resolveFishDictCode(String name);
|
String resolveFishDictCode(String name);
|
||||||
|
|
||||||
String resolveFishDictCode(String code,String name);
|
|
||||||
|
|
||||||
String resolveBaseCode(String baseName);
|
String resolveBaseCode(String baseName);
|
||||||
|
|
||||||
String resolveBaseCode(String code,String baseName);
|
|
||||||
|
|
||||||
String resolveRiverCode(String riverName);
|
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 resolveRiverCode(String code,String riverName);
|
||||||
|
|
||||||
String resolveDirection(String direction, FishImportResult.FishImportRow importRow);
|
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<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_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_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_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_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_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 Map<String, String> ISFS_DICT_CACHE = new LinkedHashMap<>();
|
||||||
|
|
||||||
private static final String DICT_CODE_FISH = "FISH_TYPE";
|
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());
|
STATION_NAME_CACHE.put(station.getEnnm().trim().toLowerCase(), station.getStcd());
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(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());
|
BASE_NAME_CACHE.put(base.getBasename().trim().toLowerCase(), base.getBaseid());
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(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());
|
RIVER_NAME_CACHE.put(river.getRvnm().trim().toLowerCase(), river.getRvcd());
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(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());
|
FISH_DICT_CACHE.put(fishDictoryB.getName().trim().toLowerCase(), fishDictoryB.getCode());
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(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());
|
FPSS_BH_CACHE.put(sdFpssBH.getStnm().trim().toLowerCase(), sdFpssBH.getStcd());
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(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
|
@Override
|
||||||
public String resolveStationCode(String code, String stationName) {
|
public String resolveStationCode(String code, String stationName) {
|
||||||
if (stationName == null) {
|
if (code == null && stationName == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
String lowerName = stationName.toLowerCase().trim();
|
loadStationAndBaseCache();
|
||||||
if (STATION_NAME_CACHE.containsKey(lowerName)) {
|
String lowerCode = code != null ? code.trim().toLowerCase() : null;
|
||||||
return STATION_NAME_CACHE.get(lowerName);
|
String lowerName = stationName != null ? stationName.trim().toLowerCase() : null;
|
||||||
}
|
if (lowerCode != null && lowerName != null) {
|
||||||
for (Map.Entry<String, String> entry : STATION_NAME_CACHE.entrySet()) {
|
String cachedName = STATION_CODE_TO_NAME_CACHE.get(lowerCode);
|
||||||
if (entry.getKey().contains(lowerName)) {
|
if (cachedName != null && cachedName.equals(lowerName)) {
|
||||||
return entry.getValue();
|
return code.trim();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
String resultByName = resolveStationCode(stationName);
|
||||||
|
if (resultByName != null && resultByName.equalsIgnoreCase(code)) {
|
||||||
|
return resultByName;
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String resolveFpssCode(String code, String name) {
|
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) {
|
public String resolveFishDictCode(String name) {
|
||||||
@ -504,7 +544,23 @@ public class FishImportServiceImpl implements IFishImportService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String resolveFishDictCode(String code, String name) {
|
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) {
|
public String resolveBaseCode(String baseName) {
|
||||||
@ -525,7 +581,23 @@ public class FishImportServiceImpl implements IFishImportService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String resolveBaseCode(String code, String baseName) {
|
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) {
|
public String resolveRiverCode(String riverName) {
|
||||||
@ -546,7 +618,23 @@ public class FishImportServiceImpl implements IFishImportService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String resolveRiverCode(String code, String riverName) {
|
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) {
|
private String validateFishType(String fishName, FishImportResult.FishImportRow importRow) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user