Commit ea5d1c8d authored by 韩桐桐's avatar 韩桐桐

fix(96333): 救援站导入功能完善

parent b5a03edc
package com.yeejoin.amos.boot.module.elevator.api.vo; package com.yeejoin.amos.boot.module.elevator.api.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull;
/** /**
* @author chang xiangyu 2024/9/30 * @author chang xiangyu 2024/9/30
* 导入救援站信息Model * 导入救援站信息Model
...@@ -15,20 +13,18 @@ public class RescueStationImportVo { ...@@ -15,20 +13,18 @@ public class RescueStationImportVo {
@ExcelProperty(value = "应急救援机构名称") @ExcelProperty(value = "应急救援机构名称")
private String name; private String name;
@ExcelProperty(value = "所属省")
private String province;
@ExcelProperty(value = "所属地市")
@ExcelProperty(value = "地市")
private String city; private String city;
@ExcelProperty(value = "区县") @ExcelProperty(value = "所属区县")
private String district; private String district;
@ExcelProperty(value = "地址(详细地址,包括道路、门牌号码)") @ExcelProperty(value = "地址(详细地址,包括道路、门牌号码)")
private String address; private String address;
@ExcelProperty(value = "主要负责人") @ExcelProperty(value = "主要负责人")
private String principal; private String principal;
...@@ -41,9 +37,14 @@ public class RescueStationImportVo { ...@@ -41,9 +37,14 @@ public class RescueStationImportVo {
@ExcelProperty(value = "应急救援负责人手机号") @ExcelProperty(value = "应急救援负责人手机号")
private String rescueLeaderPhone; private String rescueLeaderPhone;
@ExcelProperty(value = "所属单位统一行用代码")
private String affiliatedUnitCreditCode;
@ExcelProperty(value = "所属单位(维保单位)") @ExcelProperty(value = "所属单位名称")
private String affiliatedUnit; private String affiliatedUnit;
@ExcelProperty(value = "所属单位id")
@ExcelIgnore
private Long affiliatedUnitId;
} }
...@@ -5,16 +5,20 @@ import com.alibaba.excel.ExcelReader; ...@@ -5,16 +5,20 @@ import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.read.metadata.ReadSheet; import com.alibaba.excel.read.metadata.ReadSheet;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yeejoin.amos.boot.module.elevator.api.dto.RescueStationDto; import com.yeejoin.amos.boot.module.elevator.api.dto.RescueStationDto;
import com.yeejoin.amos.boot.module.elevator.api.dto.TzBaseEnterpriseInfoDto;
import com.yeejoin.amos.boot.module.elevator.api.entity.RescueStation; import com.yeejoin.amos.boot.module.elevator.api.entity.RescueStation;
import com.yeejoin.amos.boot.module.elevator.api.mapper.RescueStationMapper; import com.yeejoin.amos.boot.module.elevator.api.mapper.RescueStationMapper;
import com.yeejoin.amos.boot.module.elevator.api.service.IRescueStationService; import com.yeejoin.amos.boot.module.elevator.api.service.IRescueStationService;
import com.yeejoin.amos.boot.module.elevator.api.vo.RescueStationImportVo; import com.yeejoin.amos.boot.module.elevator.api.vo.RescueStationImportVo;
import com.yeejoin.amos.boot.module.elevator.biz.utils.BeanDtoVoUtils; import com.yeejoin.amos.boot.module.elevator.biz.utils.BeanDtoVoUtils;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel; import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -28,10 +32,8 @@ import org.typroject.tyboot.core.restful.utils.ResponseHelper; ...@@ -28,10 +32,8 @@ import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays; import java.util.stream.Collectors;
import java.util.Date;
import java.util.List;
/** /**
* 服务实现类 * 服务实现类
...@@ -46,6 +48,10 @@ public class RescueStationServiceImpl extends BaseService<RescueStationDto, Resc ...@@ -46,6 +48,10 @@ public class RescueStationServiceImpl extends BaseService<RescueStationDto, Resc
RescueStationMapper rescueStationMapper; RescueStationMapper rescueStationMapper;
@Autowired @Autowired
IRescueStationService iRescueStationService; IRescueStationService iRescueStationService;
@Autowired
TzBaseEnterpriseInfoServiceImpl baseEnterpriseInfoService;
private final String excelErrorStr = "Excel 第[%s]行:%s";
@Override @Override
public List<RescueStationDto> getListByLatLonDistance(String lat, String lon, Integer distance) { public List<RescueStationDto> getListByLatLonDistance(String lat, String lon, Integer distance) {
...@@ -72,6 +78,17 @@ public class RescueStationServiceImpl extends BaseService<RescueStationDto, Resc ...@@ -72,6 +78,17 @@ public class RescueStationServiceImpl extends BaseService<RescueStationDto, Resc
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public ResponseModel<Object> expertDataImport(MultipartFile file, AgencyUserModel userModel) { public ResponseModel<Object> expertDataImport(MultipartFile file, AgencyUserModel userModel) {
List<RegionModel> regionModels1 = Systemctl.regionClient.queryByLevel("1").getResult();
Map<String, String> provinceResult = regionModels1.stream().collect(Collectors.toMap(RegionModel::getRegionName, region -> String.valueOf(region.getRegionCode())));
List<RegionModel> regionModels2 = Systemctl.regionClient.queryByLevel("2").getResult();
Map<String, String> cityResult = regionModels2.stream().collect(Collectors.toMap(RegionModel::getRegionName, region -> String.valueOf(region.getRegionCode())));
List<RegionModel> regionModels3 = Systemctl.regionClient.queryByLevel("3").getResult();
Map<String, String> districtResult = regionModels3.stream().collect(Collectors.toMap(RegionModel::getRegionName, region -> String.valueOf(region.getRegionCode())));
try { try {
InputStream inputStream = file.getInputStream(); InputStream inputStream = file.getInputStream();
ExcelReader excelReader = EasyExcel.read(inputStream).build(); ExcelReader excelReader = EasyExcel.read(inputStream).build();
...@@ -87,27 +104,65 @@ public class RescueStationServiceImpl extends BaseService<RescueStationDto, Resc ...@@ -87,27 +104,65 @@ public class RescueStationServiceImpl extends BaseService<RescueStationDto, Resc
EasyExcel.read(file.getInputStream(), RescueStationImportVo.class, new AnalysisEventListener<RescueStationImportVo>() { EasyExcel.read(file.getInputStream(), RescueStationImportVo.class, new AnalysisEventListener<RescueStationImportVo>() {
@Override @Override
public void invoke(RescueStationImportVo data, AnalysisContext context) { public void invoke(RescueStationImportVo data, AnalysisContext context) {
// 数据检查
checkExcelData(data, context);
// 数据处理
RescueStation rescueStation = JSON.parseObject(JSON.toJSONString(data), RescueStation.class); RescueStation rescueStation = JSON.parseObject(JSON.toJSONString(data), RescueStation.class);
rescueStation.setIsDelete(Boolean.FALSE);
rescueStation.setRecDate(new Date());
rescueStation.setRecUserName(userModel.getUserName());
rescueStation.setRecUserId(userModel.getUserId());
dataList.add(rescueStation); dataList.add(rescueStation);
} }
@Override @Override
public void doAfterAllAnalysed(AnalysisContext context) { public void doAfterAllAnalysed(AnalysisContext context) {
} }
}).headRowNumber(1).sheet().doRead(); }).headRowNumber(2).sheet().doRead();
excelReader.finish(); excelReader.finish();
// 保存数据 // 完善数据 + 保存数据
for (RescueStation rescueStation : dataList) {
rescueStation.setRegionCode(provinceResult.get(rescueStation.getProvince()) + "#" + cityResult.get(rescueStation.getCity()) + "#" + districtResult.get(rescueStation.getDistrict()));
rescueStation.setIsDelete(Boolean.FALSE);
rescueStation.setRecDate(new Date());
rescueStation.setRecUserName(userModel.getUserName());
rescueStation.setRecUserId(userModel.getUserId());
}
this.saveOrUpdateBatch(dataList); this.saveOrUpdateBatch(dataList);
return ResponseHelper.buildResponse("success"); return ResponseHelper.buildResponse("success");
} catch (Exception e) { } catch (Exception e) {
throw new BadRequest(e.getMessage()); throw new BadRequest(e.getCause().getMessage());
}
}
public void checkExcelData(RescueStationImportVo data, AnalysisContext context) {
ReadRowHolder readRowHolder = context.readRowHolder();
int rowIndex = readRowHolder.getRowIndex() + 1;
checkNotBlank(data.getName(), "应急救援机构名称不能为空!", rowIndex);
checkNotBlank(data.getProvince(), "所属省不能为空!", rowIndex);
checkNotBlank(data.getCity(), "所属地市不能为空!", rowIndex);
checkNotBlank(data.getDistrict(), "所属区县不能为空!", rowIndex);
checkNotBlank(data.getAddress(), "地址不能为空!", rowIndex);
checkNotBlank(data.getAffiliatedUnitCreditCode(), "所属单位统一行用代码不能为空!", rowIndex);
checkNotBlank(data.getAffiliatedUnit(), "所属单位名称不能为空!", rowIndex);
// 所属单位检查
TzBaseEnterpriseInfoDto infoByUseCode = baseEnterpriseInfoService.getInfoByUseCode(data.getAffiliatedUnitCreditCode());
if (ValidationUtil.isEmpty(infoByUseCode)) {
throw new BadRequest(String.format(excelErrorStr, rowIndex,"所属单位系统中不存在!"));
}
data.setAffiliatedUnit(infoByUseCode.getUseUnit());
data.setAffiliatedUnitId(infoByUseCode.getSequenceNbr());
}
/**
* 检查字段是否为空,如果为空则追加错误信息到result
*
* @param value 待检查字段
* @param errorMessage 错误信息
* @param rowIndex 行
*/
private void checkNotBlank(String value, String errorMessage, int rowIndex) {
if (StringUtils.isBlank(value)) {
throw new BadRequest(String.format(excelErrorStr, rowIndex,errorMessage));
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment