Commit 6525a32e authored by suhuiguang's avatar suhuiguang

1.人员导入

parent 16df87ff
......@@ -20,7 +20,10 @@ import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil;
import com.yeejoin.amos.boot.module.common.api.dto.UserPermissionDto;
import com.yeejoin.amos.boot.module.tcm.api.dto.*;
import com.yeejoin.amos.boot.module.tcm.api.entity.*;
import com.yeejoin.amos.boot.module.tcm.api.enums.*;
import com.yeejoin.amos.boot.module.tcm.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.tcm.api.enums.PersonManageRoleEnum;
import com.yeejoin.amos.boot.module.tcm.api.enums.TwoStipulateGroupEnum;
import com.yeejoin.amos.boot.module.tcm.api.enums.UnitTypeEnum;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsBaseIndividualityMapper;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserEquipMapper;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserInfoMapper;
......@@ -147,8 +150,8 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
dto.setMenuTypeUnderPost(menuMap.get(dto.getMenuType()));
// 其他人员管理 包含 普通员工、安全管理员、安改维负责人
// 上面menuMap中的其他人员只是在新增人员时为页面赋默认值
if ("qtry".equals(dto.getMenuType())){
dto.setMenuTypeUnderPost(Arrays.asList("6546","6617","6553"));
if ("qtry".equals(dto.getMenuType())) {
dto.setMenuTypeUnderPost(Arrays.asList("6546", "6617", "6553"));
}
Page<TzsUserInfoDto> tzsUserInfoDtoPage = tzsUserInfoMapper.selectPageMessage(page, dto);
tzsUserInfoDtoPage.getRecords().forEach(item -> {
......@@ -981,22 +984,48 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
private List<String> checkFieldIsValid(List<UserImportDto> userItems) {
List<String> errors = new ArrayList<>();
// 1.必输校验
for(int i = 0; i< userItems.size(); i++){
for (int i = 0; i < userItems.size(); i++) {
UserImportDto userImportDto = userItems.get(i);
Set<ConstraintViolation<UserImportDto>> violations = validator.validate(userImportDto);
for(ConstraintViolation<UserImportDto> violation : violations){
for (ConstraintViolation<UserImportDto> violation : violations) {
errors.add("第" + i + "行" + violation.getMessage());
}
}
if(!errors.isEmpty()){
if (!errors.isEmpty()) {
return errors;
}
// 2.手机号重复检验,手机号全局唯一,不同单位下的手机号不能相同
Map<String, Long> phoneCheckRepeatCount = userItems.stream().collect(Collectors.groupingBy((v)-> v.getPhone()+"_" + v.getUnitCode(), Collectors.counting()));
phoneCheckRepeatCount.forEach(((k,v)->{
if(v > 1){
// 2.手机号重复检验,手机号全局唯一,不同单位下的手机号不能相同 todo 新写判断逻辑
Map<String, Set<String>> phoneCheckRepeatCount = new HashMap<>();
userItems.forEach(v -> {
if (phoneCheckRepeatCount.containsKey(v.getPhone())) {
phoneCheckRepeatCount.get(v.getPhone()).add(v.getUnitCode());
} else {
Set<String> set = new HashSet<>();
set.add(v.getUnitCode());
phoneCheckRepeatCount.put(v.getPhone(), set);
}
});
phoneCheckRepeatCount.forEach(((k, v) -> {
if (v.size() > 1) {
String phone = k.split("_")[0];
errors.add(String.format("手机号%s重复%d次,请检查后进行上传!", phone, v));
}
}));
// 2.手机号重复检验,手机号全局唯一,不同单位下的手机号不能相同 todo 新写判断逻辑
Map<String, Set<String>> certNoCheckRepeatCount = new HashMap<>();
userItems.forEach(v -> {
if (certNoCheckRepeatCount.containsKey(v.getPhone())) {
certNoCheckRepeatCount.get(v.getPhone()).add(v.getCertificateNum());
} else {
Set<String> set = new HashSet<>();
set.add(v.getCertificateNum());
certNoCheckRepeatCount.put(v.getPhone(), set);
}
});
certNoCheckRepeatCount.forEach(((k, v) -> {
if (v.size() > 1) {
String phone = k.split("_")[0];
errors.add(String.format("手机号%s重复%d次,请检查后进行上传!", phone , v));
errors.add(String.format("存在手机号%s相同,但是证件号码不一样的数据:证件号码:%s,请检查后进行上传!", phone, StringUtils.join(v, ",")));
}
}));
return errors;
......@@ -1010,7 +1039,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
// 1.数据检验
List<String> errors = checkFieldIsValid(userItems);
// 1.1存在检验不通过的数据则进行提示,不在向下写入库
if(!errors.isEmpty()){
if (!errors.isEmpty()) {
return ResponseHelper.buildResponse(errors);
}
// 2.数据处理
......@@ -1033,13 +1062,13 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
// 公司缓存
Map<String, CompanyModel> companyCodeCompanyMap = new ConcurrentHashMap<>();
Map<Long, UserImportDto> userSeqImportDataMap = userSet.stream().collect(Collectors.toMap(UserImportDto::getSeq, Function.identity()))
userInfoMap.forEach((k,v)->{
userInfoMap.forEach((k, v) -> {
createOneUser(v, userSeqImportDataMap.get(k), companyCodeCompanyMap);
});
}
private Map<Long, TzsUserInfo> saveImportData2Db(Set<UserImportDto> userSet) {
List<TzsUserInfo> userInfos = userSet.parallelStream().map(dto->{
List<TzsUserInfo> userInfos = userSet.parallelStream().map(dto -> {
TzsUserInfo userInfo = new TzsUserInfo();
userInfo.setRecUserId(RequestContext.getExeUserId());
userInfo.setRecDate(new Date());
......@@ -1067,15 +1096,15 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
return userInfo;
}).collect(Collectors.toList());
this.saveOrUpdateBatch(userInfos);
return userInfos.stream().collect(Collectors.toMap(BaseEntity::getSequenceNbr,Function.identity()));
return userInfos.stream().collect(Collectors.toMap(BaseEntity::getSequenceNbr, Function.identity()));
}
private void buildMergeFields(List<UserImportDto> userItems, Set<UserImportDto> userSet) {
for (UserImportDto userImportDto : userSet) {
List<UserImportDto> distinctData = userItems.stream().filter(u->u.getPhone().equals(userImportDto.getPhone())).collect(Collectors.toList());
List<UserImportDto> distinctData = userItems.stream().filter(u -> u.getPhone().equals(userImportDto.getPhone())).collect(Collectors.toList());
for (UserImportDto user : distinctData) {
Map<String, Set<String>> map = userImportDto.getUnitTypePostMap();
if(map == null){
if (map == null) {
map = new HashMap<>();
map.put(user.getUnitType(), Sets.newHashSet(user.getPost()));
} else {
......@@ -1089,7 +1118,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
public void createOneUser(TzsUserInfo tzsUserInfo, UserImportDto userImportDto, Map<String, CompanyModel> companyCodeCompanyMap) {
CompanyModel companyModel;
if(companyCodeCompanyMap.get(tzsUserInfo.getUnitCode()) != null){
if (companyCodeCompanyMap.get(tzsUserInfo.getUnitCode()) != null) {
companyModel = companyCodeCompanyMap.get(tzsUserInfo.getUnitCode());
} else {
companyModel = baseEnterpriseInfoService.getBaseMapper().getOneByCompanyCode(tzsUserInfo.getUnitCode());
......@@ -1104,7 +1133,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
Set<String> appCodesSet = new HashSet<>();
List<DataDictionary> unitTypeList = regUnitInfoService.setAndGetUnitTypeList();
Map<String, DataDictionary> dataDictionaryMap = unitTypeList.stream().collect(Collectors.toMap(DataDictionary::getCode, Function.identity(), (k1, k2) -> k1));
userImportDto.getUnitTypePostMap().forEach((k,v)->{
userImportDto.getUnitTypePostMap().forEach((k, v) -> {
DataDictionary unitType = dataDictionaryMap.get(k);
String appCode = unitType.getTypeDesc() != null ? unitType.getTypeDesc() : "";
String[] appCodes = appCode.split(",");
......
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