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);
|
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> allowedHbrvcdSet = new HashSet<>();
|
||||||
Set<String> directStcdSet = new HashSet<>();
|
Set<String> directStcdSet = new HashSet<>();
|
||||||
Set<String> directBHSet = new HashSet<>();
|
|
||||||
if (userId != null) {
|
List<SdFpssBH> sdFpssList=new ArrayList<>();
|
||||||
List<SysUserDataScope> permissions = userDataScopeMapper.selectValidPermissions(userId);
|
List<SdHbrvDic> allowedHbrvcdList = new ArrayList<>();
|
||||||
|
List<SdEngInfoBH> directStcdList = new ArrayList<>();
|
||||||
|
if (uploadUserId != null) {
|
||||||
|
List<SysUserDataScope> permissions = userDataScopeMapper.selectValidPermissions(uploadUserId);
|
||||||
if (permissions != null && !permissions.isEmpty()) {
|
if (permissions != null && !permissions.isEmpty()) {
|
||||||
for (SysUserDataScope permission : permissions) {
|
for (SysUserDataScope permission : permissions) {
|
||||||
String orgType = permission.getOrgType();
|
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() || !directStcdSet.isEmpty()) {
|
||||||
if (!allowedHbrvcdSet.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()) {
|
if (!directStcdSet.isEmpty()) {
|
||||||
List<SdFpssBH> sdFpssBHS = fpssBHMapper.selectList(new LambdaQueryWrapper<SdFpssBH>().in(SdFpssBH::getRstcd, directStcdSet).select(SdFpssBH::getStcd));
|
List<SdFpssBH> sdFpssBHS = fpssBHMapper.selectList(new LambdaQueryWrapper<SdFpssBH>().in(SdFpssBH::getRstcd, directStcdSet).select(SdFpssBH::getStcd, SdFpssBH::getStnm));
|
||||||
for (SdFpssBH sdFpssBH : sdFpssBHS) {
|
//设施
|
||||||
if (sdFpssBH.getStcd() != null) {
|
sdFpssList.addAll(sdFpssBHS.stream().filter(sdFpssBH -> sdFpssBH.getStcd() != null).toList());
|
||||||
directBHSet.add(sdFpssBH.getStcd());
|
|
||||||
|
//电站
|
||||||
|
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()) {
|
for (Map.Entry<Integer, String> entry : columnIndexMap.entrySet()) {
|
||||||
Integer columnIndex = entry.getKey();
|
Integer columnIndex = entry.getKey();
|
||||||
String fieldName = entry.getValue();
|
String fieldName = entry.getValue();
|
||||||
@ -271,20 +284,14 @@ public class FishImportServiceImpl implements IFishImportService {
|
|||||||
data.setEnnm(cellValue.trim());
|
data.setEnnm(cellValue.trim());
|
||||||
data.setRstcd(cellValue);
|
data.setRstcd(cellValue);
|
||||||
} else {
|
} else {
|
||||||
String stcd = resolveStationCode(cellValue.trim());
|
String stcd = directStcdList.stream().filter(sdEngInfoBH -> sdEngInfoBH.getEnnm().equals(cellValue.trim())).map(SdEngInfoBH::getStcd).findFirst().get();
|
||||||
if (stcd == null) {
|
if (StrUtil.isBlank(stcd)) {
|
||||||
importRow.getWarnings().add("rstcd");
|
importRow.getWarnings().add("rstcd");
|
||||||
data.setEnnm(cellValue.trim());
|
data.setEnnm(cellValue.trim());
|
||||||
|
data.setRstcd(cellValue.trim());
|
||||||
} else {
|
} else {
|
||||||
if (directStcdSet.contains(stcd)) {
|
|
||||||
data.setEnnm(cellValue.trim());
|
data.setEnnm(cellValue.trim());
|
||||||
data.setRstcd(stcd);
|
data.setRstcd(stcd);
|
||||||
} else {
|
|
||||||
importRow.getWarnings().add("rstcd");
|
|
||||||
data.setEnnm(cellValue.trim());
|
|
||||||
data.setRstcd(cellValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -322,33 +329,17 @@ public class FishImportServiceImpl implements IFishImportService {
|
|||||||
data.setHbrvcd(cellValue);
|
data.setHbrvcd(cellValue);
|
||||||
data.setHbrvnm(cellValue);
|
data.setHbrvnm(cellValue);
|
||||||
} else {
|
} else {
|
||||||
String hbrvcdCode = resolveHbrvcdCode(cellValue.trim());
|
String hbrvcdCode = allowedHbrvcdList.stream().filter(sdHbrvDic -> sdHbrvDic.getHbrvnm().equals(cellValue.trim())).map(SdHbrvDic::getHbrvcd).findFirst().get();
|
||||||
if (hbrvcdCode == null) {
|
if (StrUtil.isBlank(hbrvcdCode)) {
|
||||||
importRow.getWarnings().add("hbrvcd");
|
importRow.getWarnings().add("hbrvcd");
|
||||||
data.setHbrvcd(cellValue.trim());
|
data.setHbrvcd(cellValue.trim());
|
||||||
data.setHbrvnm(cellValue.trim());
|
data.setHbrvnm(cellValue.trim());
|
||||||
} else {
|
} else {
|
||||||
if (allowedHbrvcdSet.contains(hbrvcdCode)) {
|
|
||||||
data.setHbrvcd(hbrvcdCode);
|
data.setHbrvcd(hbrvcdCode);
|
||||||
data.setHbrvnm(cellValue.trim());
|
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;
|
break;
|
||||||
case "tm":
|
case "tm":
|
||||||
if (!StringUtils.hasText(cellValue)) {
|
if (!StringUtils.hasText(cellValue)) {
|
||||||
@ -519,21 +510,14 @@ public class FishImportServiceImpl implements IFishImportService {
|
|||||||
importRow.getWarnings().add("stcd");
|
importRow.getWarnings().add("stcd");
|
||||||
data.setStcd(cellValue);
|
data.setStcd(cellValue);
|
||||||
} else {
|
} else {
|
||||||
String stcd = resolveFpssCode(cellValue.trim());
|
String stcd = sdFpssList.stream().filter(sdFpssBH -> sdFpssBH.getStnm().equals(cellValue.trim())).map(SdFpssBH::getStcd).findFirst().get();
|
||||||
if (stcd == null) {
|
if (StrUtil.isBlank(stcd)) {
|
||||||
importRow.getWarnings().add("stcd");
|
importRow.getWarnings().add("stcd");
|
||||||
data.setStcd(cellValue.trim());
|
data.setStcd(cellValue.trim());
|
||||||
data.setStnm(cellValue.trim());
|
data.setStnm(cellValue.trim());
|
||||||
} else {
|
} else {
|
||||||
if (directBHSet.contains(stcd)) {
|
|
||||||
data.setStnm(cellValue.trim());
|
data.setStnm(cellValue.trim());
|
||||||
data.setStcd(stcd);
|
data.setStcd(stcd);
|
||||||
} else {
|
|
||||||
importRow.getWarnings().add("stcd");
|
|
||||||
data.setStcd(cellValue.trim());
|
|
||||||
data.setStnm(cellValue.trim());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -541,7 +525,8 @@ public class FishImportServiceImpl implements IFishImportService {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
log.error("字段[" + fieldName + "]解析异常: " + e.getMessage());
|
||||||
|
// e.printStackTrace();
|
||||||
// importRow.getWarnings().add("字段[" + fieldName + "]解析异常: " + e.getMessage());
|
// importRow.getWarnings().add("字段[" + fieldName + "]解析异常: " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -553,12 +538,7 @@ public class FishImportServiceImpl implements IFishImportService {
|
|||||||
|
|
||||||
|
|
||||||
private void validateStationFpssRelation(FishDraftData data, FishImportResult.FishImportRow importRow) {
|
private void validateStationFpssRelation(FishDraftData data, FishImportResult.FishImportRow importRow) {
|
||||||
loadStationAndBaseCache();
|
if (importRow.getWarnings().contains("hbrvcd")) {
|
||||||
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")) {
|
if (!importRow.getWarnings().contains("rstcd")) {
|
||||||
importRow.getWarnings().add("rstcd");
|
importRow.getWarnings().add("rstcd");
|
||||||
}
|
}
|
||||||
@ -566,20 +546,39 @@ public class FishImportServiceImpl implements IFishImportService {
|
|||||||
importRow.getWarnings().add("stcd");
|
importRow.getWarnings().add("stcd");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
if (importRow.getWarnings().contains("rstcd")) {
|
||||||
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")) {
|
if (!importRow.getWarnings().contains("stcd")) {
|
||||||
importRow.getWarnings().add("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() {
|
private void loadStationAndBaseCache() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user