fix: 使用缓存逻辑
This commit is contained in:
parent
8c20e76cd0
commit
8038df7dcf
@ -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() {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user