fix: 优化导出问题
This commit is contained in:
parent
eafc151634
commit
e84b3df57f
@ -29,6 +29,7 @@ import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@ -921,6 +922,20 @@ public class FishDraftDataController {
|
||||
}
|
||||
}
|
||||
|
||||
if (StringUtils.hasText(data.getBaseId()) && StringUtils.hasText(data.getRstcd())) {
|
||||
if (!fishImportService.validateStationBelongsToBase(data.getRstcd(), data.getBaseId())) {
|
||||
warnings.add("baseId");
|
||||
warnings.add("rstcd");
|
||||
}
|
||||
}
|
||||
|
||||
if (StringUtils.hasText(data.getRstcd()) && StringUtils.hasText(data.getStcd())) {
|
||||
if (!fishImportService.validateFpssBelongsToStation(data.getStcd(), data.getRstcd())) {
|
||||
warnings.add("stcd");
|
||||
warnings.add("rstcd");
|
||||
}
|
||||
}
|
||||
|
||||
// if (data.getSourceType() != null && !data.getSourceType().isEmpty()) {
|
||||
// data.setSourceType(fishImportService.parseSourceType(data.getSourceType().trim()));
|
||||
// }
|
||||
|
||||
@ -43,5 +43,9 @@ public interface IFishImportService {
|
||||
|
||||
String parseSourceType(String value);
|
||||
|
||||
boolean validateStationBelongsToBase(String stationCode, String baseId);
|
||||
|
||||
boolean validateFpssBelongsToStation(String fpssCode, String stationCode);
|
||||
|
||||
void processAttachments(FishImportResult result, ZipFileUtil.ZipContent zipContent);
|
||||
}
|
||||
@ -60,6 +60,7 @@ public class FishImportServiceImpl implements IFishImportService {
|
||||
|
||||
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> STATION_TO_BASE_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<>();
|
||||
@ -69,6 +70,7 @@ public class FishImportServiceImpl implements IFishImportService {
|
||||
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> FPSS_TO_STATION_CACHE = new LinkedHashMap<>();
|
||||
private static final Map<String, String> ISFS_DICT_CACHE = new LinkedHashMap<>();
|
||||
|
||||
private static final String DICT_CODE_FISH = "FISH_TYPE";
|
||||
@ -151,7 +153,6 @@ public class FishImportServiceImpl implements IFishImportService {
|
||||
return result;
|
||||
}
|
||||
|
||||
List<String> unrecognizedHeaders = new ArrayList<>();
|
||||
Map<Integer, String> columnIndexMap = new HashMap<>(EXCEL_COLUMN_INDEX_MAPPING);
|
||||
|
||||
int totalRows = sheet.getLastRowNum();
|
||||
@ -171,9 +172,8 @@ public class FishImportServiceImpl implements IFishImportService {
|
||||
result.setFailedCount(result.getFailedCount() + 1);
|
||||
}
|
||||
}
|
||||
result.setSummary(String.format("共解析%d条数据,失败%d条,未识别字段:%s",
|
||||
result.getSuccessCount(), result.getFailedCount(),
|
||||
unrecognizedHeaders.isEmpty() ? "无" : String.join(", ", unrecognizedHeaders)));
|
||||
result.setSummary(String.format("共解析%d条数据,失败%d条",
|
||||
result.getSuccessCount(), result.getFailedCount()));
|
||||
|
||||
return result;
|
||||
}
|
||||
@ -400,10 +400,41 @@ public class FishImportServiceImpl implements IFishImportService {
|
||||
// importRow.getWarnings().add("字段[" + fieldName + "]解析异常: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
validateStationFpssRelation(data, importRow);
|
||||
importRow.setData(data);
|
||||
return importRow;
|
||||
}
|
||||
|
||||
private void validateStationFpssRelation(FishDraftData data, FishImportResult.FishImportRow importRow) {
|
||||
loadStationAndBaseCache();
|
||||
if (StringUtils.hasText(data.getBaseId()) && StringUtils.hasText(data.getRstcd())) {
|
||||
if (!validateStationBelongsToBase(data.getRstcd(), data.getBaseId())) {
|
||||
if (!importRow.getWarnings().contains("baseId")) {
|
||||
importRow.getWarnings().add("baseId");
|
||||
}
|
||||
if (!importRow.getWarnings().contains("rstcd")) {
|
||||
importRow.getWarnings().add("rstcd");
|
||||
}
|
||||
if (!importRow.getWarnings().contains("stcd")) {
|
||||
importRow.getWarnings().add("stcd");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (StringUtils.hasText(data.getRstcd()) && StringUtils.hasText(data.getStcd())) {
|
||||
if (!validateFpssBelongsToStation(data.getStcd(), data.getRstcd())) {
|
||||
if (!importRow.getWarnings().contains("baseId")) {
|
||||
importRow.getWarnings().add("baseId");
|
||||
}
|
||||
if (!importRow.getWarnings().contains("stcd")) {
|
||||
importRow.getWarnings().add("stcd");
|
||||
}
|
||||
if (!importRow.getWarnings().contains("rstcd")) {
|
||||
importRow.getWarnings().add("rstcd");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void loadStationAndBaseCache() {
|
||||
if (STATION_NAME_CACHE.isEmpty()) {
|
||||
List<SdEngInfoBH> stationList = engInfoBHMapper.selectList(null);
|
||||
@ -412,10 +443,12 @@ 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());
|
||||
if (StringUtils.hasText(station.getEnnm())) {
|
||||
STATION_CODE_TO_NAME_CACHE.put(station.getStcd().trim().toLowerCase(), station.getEnnm().trim().toLowerCase());
|
||||
}
|
||||
if (StringUtils.hasText(station.getBaseId())) {
|
||||
STATION_TO_BASE_CACHE.put(station.getStcd().trim().toLowerCase(), station.getBaseId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -427,7 +460,6 @@ 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());
|
||||
if (StringUtils.hasText(base.getBasename())) {
|
||||
BASE_CODE_TO_NAME_CACHE.put(base.getBaseid().trim().toLowerCase(), base.getBasename().trim().toLowerCase());
|
||||
}
|
||||
@ -442,7 +474,6 @@ 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());
|
||||
if (StringUtils.hasText(river.getRvnm())) {
|
||||
RIVER_CODE_TO_NAME_CACHE.put(river.getRvcd().trim().toLowerCase(), river.getRvnm().trim().toLowerCase());
|
||||
}
|
||||
@ -457,7 +488,6 @@ 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());
|
||||
if (StringUtils.hasText(fishDictoryB.getName())) {
|
||||
FISH_CODE_TO_NAME_CACHE.put(fishDictoryB.getCode().trim().toLowerCase(), fishDictoryB.getName().trim().toLowerCase());
|
||||
}
|
||||
@ -472,10 +502,12 @@ 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());
|
||||
if (StringUtils.hasText(sdFpssBH.getStnm())) {
|
||||
FPSS_CODE_TO_NAME_CACHE.put(sdFpssBH.getStcd().trim().toLowerCase(), sdFpssBH.getStnm().trim().toLowerCase());
|
||||
}
|
||||
if (StringUtils.hasText(sdFpssBH.getRstcd())) {
|
||||
FPSS_TO_STATION_CACHE.put(sdFpssBH.getStcd().trim().toLowerCase(), sdFpssBH.getRstcd());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -667,6 +699,28 @@ public class FishImportServiceImpl implements IFishImportService {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validateStationBelongsToBase(String stationCode, String baseId) {
|
||||
if (stationCode == null || baseId == null) {
|
||||
return false;
|
||||
}
|
||||
loadStationAndBaseCache();
|
||||
String stationLower = stationCode.trim().toLowerCase();
|
||||
String cachedBaseId = STATION_TO_BASE_CACHE.get(stationLower);
|
||||
return baseId.equalsIgnoreCase(cachedBaseId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validateFpssBelongsToStation(String fpssCode, String stationCode) {
|
||||
if (fpssCode == null || stationCode == null) {
|
||||
return false;
|
||||
}
|
||||
loadStationAndBaseCache();
|
||||
String fpssLower = fpssCode.trim().toLowerCase();
|
||||
String cachedStationCode = FPSS_TO_STATION_CACHE.get(fpssLower);
|
||||
return stationCode.equalsIgnoreCase(cachedStationCode);
|
||||
}
|
||||
|
||||
private String validateFishType(String fishName, FishImportResult.FishImportRow importRow) {
|
||||
if (fishName == null) {
|
||||
return null;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user