fix: 使用缓存逻辑

This commit is contained in:
tangwei 2026-05-09 15:06:37 +08:00
parent 8c20e76cd0
commit 8038df7dcf

View File

@ -176,38 +176,14 @@ public class FishImportServiceImpl implements IFishImportService {
Map<Integer, String> columnIndexMap = new HashMap<>(EXCEL_COLUMN_INDEX_MAPPING);
int totalRows = sheet.getLastRowNum();
for (int i = 1; i <= totalRows; i++) {
Row row = sheet.getRow(i);
if (row == null || isRowEmpty(row)) {
continue;
}
FishImportResult.FishImportRow importRow = parseRow(result, row, columnIndexMap, i, uploadUserId);
result.setTotalCount(result.getTotalCount() + 1);
if (importRow.getData() != null && importRow.getWarnings().isEmpty()) {
result.addSuccessRow(importRow);
result.setSuccessCount(result.getSuccessCount() + 1);
} else {
result.addFailedRow(importRow);
result.setFailedCount(result.getFailedCount() + 1);
}
}
result.setSummary(String.format("共解析%d条数据失败%d条",
result.getSuccessCount(), result.getFailedCount()));
return result;
}
private FishImportResult.FishImportRow parseRow(FishImportResult result, Row row, Map<Integer, String> columnIndexMap, int rowIndex, String userId) {
FishImportResult.FishImportRow importRow = new FishImportResult.FishImportRow(rowIndex);
FishDraftData data = new FishDraftData();
data.setId(UUID.randomUUID().toString());
Set<String> allowedHbrvcdSet = new HashSet<>();
Set<String> directStcdSet = new HashSet<>();
Set<String> directBHSet = new HashSet<>();
if (userId != null) {
List<SysUserDataScope> permissions = userDataScopeMapper.selectValidPermissions(userId);
List<SdFpssBH> sdFpssList=new ArrayList<>();
List<SdHbrvDic> allowedHbrvcdList = new ArrayList<>();
List<SdEngInfoBH> directStcdList = new ArrayList<>();
if (uploadUserId != null) {
List<SysUserDataScope> permissions = userDataScopeMapper.selectValidPermissions(uploadUserId);
if (permissions != null && !permissions.isEmpty()) {
for (SysUserDataScope permission : permissions) {
String orgType = permission.getOrgType();
@ -226,7 +202,6 @@ public class FishImportServiceImpl implements IFishImportService {
}
}
// Set<String> allStcdSet = new HashSet<>();
if (!allowedHbrvcdSet.isEmpty() || !directStcdSet.isEmpty()) {
if (!allowedHbrvcdSet.isEmpty()) {
@ -250,14 +225,52 @@ public class FishImportServiceImpl implements IFishImportService {
}
}
}
if(!allowedHbrvcdSet.isEmpty()){
List<SdHbrvDic> sdHbrvDics = sdHbrvDicMapper.selectList(new LambdaQueryWrapper<SdHbrvDic>().in(SdHbrvDic::getHbrvcd, allowedHbrvcdSet).select(SdHbrvDic::getHbrvcd, SdHbrvDic::getHbrvnm));
allowedHbrvcdList.addAll(sdHbrvDics);
}
if (!directStcdSet.isEmpty()) {
List<SdFpssBH> sdFpssBHS = fpssBHMapper.selectList(new LambdaQueryWrapper<SdFpssBH>().in(SdFpssBH::getRstcd, directStcdSet).select(SdFpssBH::getStcd));
for (SdFpssBH sdFpssBH : sdFpssBHS) {
if (sdFpssBH.getStcd() != null) {
directBHSet.add(sdFpssBH.getStcd());
List<SdFpssBH> sdFpssBHS = fpssBHMapper.selectList(new LambdaQueryWrapper<SdFpssBH>().in(SdFpssBH::getRstcd, directStcdSet).select(SdFpssBH::getStcd, SdFpssBH::getStnm));
//设施
sdFpssList.addAll(sdFpssBHS.stream().filter(sdFpssBH -> sdFpssBH.getStcd() != null).toList());
//电站
directStcdList.addAll(engInfoBHMapper.selectList(new LambdaQueryWrapper<SdEngInfoBH>().in(SdEngInfoBH::getStcd, directStcdSet).select(SdEngInfoBH::getStcd, SdEngInfoBH::getEnnm)));
}
int totalRows = sheet.getLastRowNum();
for (int i = 1; i <= totalRows; i++) {
Row row = sheet.getRow(i);
if (row == null || isRowEmpty(row)) {
continue;
}
FishImportResult.FishImportRow importRow = parseRow(result, row, columnIndexMap, i, uploadUserId,allowedHbrvcdList,directStcdList,sdFpssList);
result.setTotalCount(result.getTotalCount() + 1);
if (importRow.getData() != null && importRow.getWarnings().isEmpty()) {
result.addSuccessRow(importRow);
result.setSuccessCount(result.getSuccessCount() + 1);
} else {
result.addFailedRow(importRow);
result.setFailedCount(result.getFailedCount() + 1);
}
}
result.setSummary(String.format("共解析%d条数据失败%d条",
result.getSuccessCount(), result.getFailedCount()));
return result;
}
private FishImportResult.FishImportRow parseRow(FishImportResult result, Row row, Map<Integer, String> columnIndexMap, int rowIndex, String userId,List<SdHbrvDic> allowedHbrvcdList,List<SdEngInfoBH> directStcdList,List<SdFpssBH> sdFpssList) {
FishImportResult.FishImportRow importRow = new FishImportResult.FishImportRow(rowIndex);
FishDraftData data = new FishDraftData();
data.setId(UUID.randomUUID().toString());
for (Map.Entry<Integer, String> entry : columnIndexMap.entrySet()) {
Integer columnIndex = entry.getKey();
String fieldName = entry.getValue();
@ -271,20 +284,14 @@ public class FishImportServiceImpl implements IFishImportService {
data.setEnnm(cellValue.trim());
data.setRstcd(cellValue);
} else {
String stcd = resolveStationCode(cellValue.trim());
if (stcd == null) {
String stcd = directStcdList.stream().filter(sdEngInfoBH -> sdEngInfoBH.getEnnm().equals(cellValue.trim())).map(SdEngInfoBH::getStcd).findFirst().get();
if (StrUtil.isBlank(stcd)) {
importRow.getWarnings().add("rstcd");
data.setEnnm(cellValue.trim());
data.setRstcd(cellValue.trim());
} else {
if (directStcdSet.contains(stcd)) {
data.setEnnm(cellValue.trim());
data.setRstcd(stcd);
} else {
importRow.getWarnings().add("rstcd");
data.setEnnm(cellValue.trim());
data.setRstcd(cellValue);
}
}
}
break;
@ -322,33 +329,17 @@ public class FishImportServiceImpl implements IFishImportService {
data.setHbrvcd(cellValue);
data.setHbrvnm(cellValue);
} else {
String hbrvcdCode = resolveHbrvcdCode(cellValue.trim());
if (hbrvcdCode == null) {
String hbrvcdCode = allowedHbrvcdList.stream().filter(sdHbrvDic -> sdHbrvDic.getHbrvnm().equals(cellValue.trim())).map(SdHbrvDic::getHbrvcd).findFirst().get();
if (StrUtil.isBlank(hbrvcdCode)) {
importRow.getWarnings().add("hbrvcd");
data.setHbrvcd(cellValue.trim());
data.setHbrvnm(cellValue.trim());
} else {
if (allowedHbrvcdSet.contains(hbrvcdCode)) {
data.setHbrvcd(hbrvcdCode);
data.setHbrvnm(cellValue.trim());
} else {
importRow.getWarnings().add("hbrvcd");
data.setHbrvcd(cellValue.trim());
data.setHbrvnm(cellValue.trim());
}
}
}
// if (StringUtils.hasText(cellValue)) {
// String rvcd = resolveHbrvcdCode(cellValue.trim());
// if (rvcd == null) {
// importRow.getWarnings().add(fieldName);
// data.setRvcd(cellValue);
// } else {
// data.setHbrvcd(rvcd);
// data.setHbrvcd(rvcd);
// }
// }
//
break;
case "tm":
if (!StringUtils.hasText(cellValue)) {
@ -519,21 +510,14 @@ public class FishImportServiceImpl implements IFishImportService {
importRow.getWarnings().add("stcd");
data.setStcd(cellValue);
} else {
String stcd = resolveFpssCode(cellValue.trim());
if (stcd == null) {
String stcd = sdFpssList.stream().filter(sdFpssBH -> sdFpssBH.getStnm().equals(cellValue.trim())).map(SdFpssBH::getStcd).findFirst().get();
if (StrUtil.isBlank(stcd)) {
importRow.getWarnings().add("stcd");
data.setStcd(cellValue.trim());
data.setStnm(cellValue.trim());
} else {
if (directBHSet.contains(stcd)) {
data.setStnm(cellValue.trim());
data.setStcd(stcd);
} else {
importRow.getWarnings().add("stcd");
data.setStcd(cellValue.trim());
data.setStnm(cellValue.trim());
}
}
}
break;
@ -541,7 +525,8 @@ public class FishImportServiceImpl implements IFishImportService {
break;
}
} catch (Exception e) {
e.printStackTrace();
log.error("字段[" + fieldName + "]解析异常: " + e.getMessage());
// e.printStackTrace();
// importRow.getWarnings().add("字段[" + fieldName + "]解析异常: " + e.getMessage());
}
}
@ -553,12 +538,7 @@ public class FishImportServiceImpl implements IFishImportService {
private void validateStationFpssRelation(FishDraftData data, FishImportResult.FishImportRow importRow) {
loadStationAndBaseCache();
if (StringUtils.hasText(data.getHbrvcd()) && StringUtils.hasText(data.getRstcd())) {
if (!validateStationBelongsToBase(data.getRstcd(), data.getHbrvcd())) {
if (!importRow.getWarnings().contains("hbrvcd")) {
importRow.getWarnings().add("hbrvcd");
}
if (importRow.getWarnings().contains("hbrvcd")) {
if (!importRow.getWarnings().contains("rstcd")) {
importRow.getWarnings().add("rstcd");
}
@ -566,20 +546,39 @@ public class FishImportServiceImpl implements IFishImportService {
importRow.getWarnings().add("stcd");
}
}
}
if (StringUtils.hasText(data.getRstcd()) && StringUtils.hasText(data.getStcd())) {
if (!validateFpssBelongsToStation(data.getStcd(), data.getRstcd())) {
if (!importRow.getWarnings().contains("hbrvcd")) {
importRow.getWarnings().add("hbrvcd");
}
if (importRow.getWarnings().contains("rstcd")) {
if (!importRow.getWarnings().contains("stcd")) {
importRow.getWarnings().add("stcd");
}
if (!importRow.getWarnings().contains("rstcd")) {
importRow.getWarnings().add("rstcd");
}
}
}
// loadStationAndBaseCache();
// if (StringUtils.hasText(data.getHbrvcd()) && StringUtils.hasText(data.getRstcd())) {
// if (!validateStationBelongsToBase(data.getRstcd(), data.getHbrvcd())) {
// if (!importRow.getWarnings().contains("hbrvcd")) {
// importRow.getWarnings().add("hbrvcd");
// }
// 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("hbrvcd")) {
// importRow.getWarnings().add("hbrvcd");
// }
// if (!importRow.getWarnings().contains("stcd")) {
// importRow.getWarnings().add("stcd");
// }
// if (!importRow.getWarnings().contains("rstcd")) {
// importRow.getWarnings().add("rstcd");
// }
// }
// }
}
private void loadStationAndBaseCache() {