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.HttpServletRequest;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
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()) {
|
// if (data.getSourceType() != null && !data.getSourceType().isEmpty()) {
|
||||||
// data.setSourceType(fishImportService.parseSourceType(data.getSourceType().trim()));
|
// data.setSourceType(fishImportService.parseSourceType(data.getSourceType().trim()));
|
||||||
// }
|
// }
|
||||||
|
|||||||
@ -43,5 +43,9 @@ public interface IFishImportService {
|
|||||||
|
|
||||||
String parseSourceType(String value);
|
String parseSourceType(String value);
|
||||||
|
|
||||||
|
boolean validateStationBelongsToBase(String stationCode, String baseId);
|
||||||
|
|
||||||
|
boolean validateFpssBelongsToStation(String fpssCode, String stationCode);
|
||||||
|
|
||||||
void processAttachments(FishImportResult result, ZipFileUtil.ZipContent zipContent);
|
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_NAME_CACHE = new LinkedHashMap<>();
|
||||||
private static final Map<String, String> STATION_CODE_TO_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_NAME_CACHE = new LinkedHashMap<>();
|
||||||
private static final Map<String, String> BASE_CODE_TO_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<>();
|
||||||
@ -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> 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> 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 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";
|
||||||
@ -151,7 +153,6 @@ public class FishImportServiceImpl implements IFishImportService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> unrecognizedHeaders = new ArrayList<>();
|
|
||||||
Map<Integer, String> columnIndexMap = new HashMap<>(EXCEL_COLUMN_INDEX_MAPPING);
|
Map<Integer, String> columnIndexMap = new HashMap<>(EXCEL_COLUMN_INDEX_MAPPING);
|
||||||
|
|
||||||
int totalRows = sheet.getLastRowNum();
|
int totalRows = sheet.getLastRowNum();
|
||||||
@ -171,9 +172,8 @@ public class FishImportServiceImpl implements IFishImportService {
|
|||||||
result.setFailedCount(result.getFailedCount() + 1);
|
result.setFailedCount(result.getFailedCount() + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
result.setSummary(String.format("共解析%d条数据,失败%d条,未识别字段:%s",
|
result.setSummary(String.format("共解析%d条数据,失败%d条",
|
||||||
result.getSuccessCount(), result.getFailedCount(),
|
result.getSuccessCount(), result.getFailedCount()));
|
||||||
unrecognizedHeaders.isEmpty() ? "无" : String.join(", ", unrecognizedHeaders)));
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -400,10 +400,41 @@ public class FishImportServiceImpl implements IFishImportService {
|
|||||||
// importRow.getWarnings().add("字段[" + fieldName + "]解析异常: " + e.getMessage());
|
// importRow.getWarnings().add("字段[" + fieldName + "]解析异常: " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
validateStationFpssRelation(data, importRow);
|
||||||
importRow.setData(data);
|
importRow.setData(data);
|
||||||
return importRow;
|
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() {
|
private void loadStationAndBaseCache() {
|
||||||
if (STATION_NAME_CACHE.isEmpty()) {
|
if (STATION_NAME_CACHE.isEmpty()) {
|
||||||
List<SdEngInfoBH> stationList = engInfoBHMapper.selectList(null);
|
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());
|
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());
|
|
||||||
if (StringUtils.hasText(station.getEnnm())) {
|
if (StringUtils.hasText(station.getEnnm())) {
|
||||||
STATION_CODE_TO_NAME_CACHE.put(station.getStcd().trim().toLowerCase(), station.getEnnm().trim().toLowerCase());
|
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());
|
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());
|
|
||||||
if (StringUtils.hasText(base.getBasename())) {
|
if (StringUtils.hasText(base.getBasename())) {
|
||||||
BASE_CODE_TO_NAME_CACHE.put(base.getBaseid().trim().toLowerCase(), base.getBasename().trim().toLowerCase());
|
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());
|
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());
|
|
||||||
if (StringUtils.hasText(river.getRvnm())) {
|
if (StringUtils.hasText(river.getRvnm())) {
|
||||||
RIVER_CODE_TO_NAME_CACHE.put(river.getRvcd().trim().toLowerCase(), river.getRvnm().trim().toLowerCase());
|
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());
|
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());
|
|
||||||
if (StringUtils.hasText(fishDictoryB.getName())) {
|
if (StringUtils.hasText(fishDictoryB.getName())) {
|
||||||
FISH_CODE_TO_NAME_CACHE.put(fishDictoryB.getCode().trim().toLowerCase(), fishDictoryB.getName().trim().toLowerCase());
|
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());
|
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());
|
|
||||||
if (StringUtils.hasText(sdFpssBH.getStnm())) {
|
if (StringUtils.hasText(sdFpssBH.getStnm())) {
|
||||||
FPSS_CODE_TO_NAME_CACHE.put(sdFpssBH.getStcd().trim().toLowerCase(), sdFpssBH.getStnm().trim().toLowerCase());
|
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;
|
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) {
|
private String validateFishType(String fishName, FishImportResult.FishImportRow importRow) {
|
||||||
if (fishName == null) {
|
if (fishName == null) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user