Commit 9802536d authored by suhuiguang's avatar suhuiguang

1.人员导入开发联调

parent 349cabd5
...@@ -17,7 +17,7 @@ public class EquipTypeConverter implements Converter<String> { ...@@ -17,7 +17,7 @@ public class EquipTypeConverter implements Converter<String> {
CODE_MAP.put("压力容器", "2000"); CODE_MAP.put("压力容器", "2000");
CODE_MAP.put("电梯", "3000"); CODE_MAP.put("电梯", "3000");
CODE_MAP.put("起重机械", "4000"); CODE_MAP.put("起重机械", "4000");
CODE_MAP.put("场(厂)内专用机动车辆", "5000"); CODE_MAP.put("场机动车辆", "5000");
CODE_MAP.put("大型游乐设施", "6000"); CODE_MAP.put("大型游乐设施", "6000");
CODE_MAP.put("压力管道", "8000"); CODE_MAP.put("压力管道", "8000");
CODE_MAP.put("客运索道", "9000"); CODE_MAP.put("客运索道", "9000");
......
...@@ -7,7 +7,7 @@ import java.lang.annotation.Retention; ...@@ -7,7 +7,7 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;
@Target({ElementType.FIELD,ElementType.ANNOTATION_TYPE}) @Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = CustomerEquipTypeValidator.class) @Constraint(validatedBy = CustomerEquipTypeValidator.class)
public @interface CustomerEquipTypeCheck { public @interface CustomerEquipTypeCheck {
......
...@@ -8,49 +8,46 @@ import com.yeejoin.amos.boot.module.tcm.api.customer.CustomerEquipTypeCheck; ...@@ -8,49 +8,46 @@ import com.yeejoin.amos.boot.module.tcm.api.customer.CustomerEquipTypeCheck;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.util.Date; import java.util.*;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
@Data @Data
@CustomerEquipTypeCheck(message = "设备类型不能为空")
public class UserImportDto { public class UserImportDto {
@NotBlank(message = "单位名称不能为空") @NotBlank(message = "单位名称不能为空")
@ExcelProperty(value = "单位名称") @ExcelProperty(value = "单位名称")
private String unitName; private String unitName;
@NotBlank(message = "单位统一信用代码不能为空") @NotBlank(message = "单位统一信用代码不能为空")
@ExcelProperty(value = "单位统一信用代码") @ExcelProperty(value = "单位统一信用代码")
private String unitCode; private String unitCode;
@NotBlank(message = "单位类型不能为空") @NotBlank(message = "单位类型不能为空")
@ExcelProperty(value = "单位类型") @ExcelProperty(value = "单位类型")
private String unitType; private String unitType;
@NotBlank(message = "姓名不能为空") @NotBlank(message = "姓名不能为空")
@ExcelProperty(value = "姓名") @ExcelProperty(value = "姓名")
private String name; private String name;
@NotBlank(message = "联系电话不能为空") @NotBlank(message = "联系电话不能为空")
@ExcelProperty(value = "联系电话") @ExcelProperty(value = "联系电话")
private String phone; private String phone;
@NotBlank(message = "证件类型不能为空") @NotBlank(message = "证件类型不能为空")
@ExcelProperty(value = "证件类型", converter = CertificateTypeConverter.class) @ExcelProperty(value = "证件类型", converter = CertificateTypeConverter.class)
private String certificateType; private String certificateType;
@NotBlank(message = "证件编号不能为空") @NotBlank(message = "证件编号不能为空")
@ExcelProperty(value = "证件编号") @ExcelProperty(value = "证件编号")
private String certificateNum; private String certificateNum;
@NotBlank(message = "人员类型不能为空") @NotBlank(message = "人员类型不能为空")
@ExcelProperty(value = "人员类型", converter = PostTypeConverter.class) @ExcelProperty(value = "人员类型", converter = PostTypeConverter.class)
private String post; private String post;
@CustomerEquipTypeCheck(message = "设备类型不能为空")
@ExcelProperty(value = "设备类型", converter = EquipTypeConverter.class) @ExcelProperty(value = "设备类型", converter = EquipTypeConverter.class)
private String equipType; private String equipType;
...@@ -85,6 +82,9 @@ public class UserImportDto { ...@@ -85,6 +82,9 @@ public class UserImportDto {
@ExcelProperty @ExcelProperty
private Long seq; private Long seq;
@ExcelIgnore
private Set<String> equipTypeList;
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) return true;
......
...@@ -356,7 +356,7 @@ public class TzsUserInfoController extends BaseController { ...@@ -356,7 +356,7 @@ public class TzsUserInfoController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/import") @PostMapping(value = "/import")
@ApiOperation(value = "人员导入",httpMethod = "POST") @ApiOperation(value = "人员导入",httpMethod = "POST",notes = "导入已经存在公司的人员")
public ResponseModel<?> importUser(@RequestBody MultipartFile file) { public ResponseModel<?> importUser(@RequestBody MultipartFile file) {
return tzsUserInfoService.importUserBatch(file); return tzsUserInfoService.importUserBatch(file);
} }
......
...@@ -31,6 +31,7 @@ import com.yeejoin.amos.boot.module.tcm.api.service.ITzsUserInfoService; ...@@ -31,6 +31,7 @@ import com.yeejoin.amos.boot.module.tcm.api.service.ITzsUserInfoService;
import com.yeejoin.amos.boot.module.tcm.api.vo.TzsUserInfoVo; import com.yeejoin.amos.boot.module.tcm.api.vo.TzsUserInfoVo;
import com.yeejoin.amos.boot.module.tcm.api.vo.UserInfoVo; import com.yeejoin.amos.boot.module.tcm.api.vo.UserInfoVo;
import com.yeejoin.amos.boot.module.tcm.flc.biz.service.impl.RegUnitInfoServiceImpl; import com.yeejoin.amos.boot.module.tcm.flc.biz.service.impl.RegUnitInfoServiceImpl;
import com.yeejoin.amos.component.feign.config.InnerInvokException;
import com.yeejoin.amos.component.feign.model.FeignClientResult; import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.component.feign.utils.FeignUtil; import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.privilege.Privilege; import com.yeejoin.amos.feign.privilege.Privilege;
...@@ -187,8 +188,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -187,8 +188,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
LambdaQueryWrapper<DataDictionary> lambda = new QueryWrapper<DataDictionary>().lambda(); LambdaQueryWrapper<DataDictionary> lambda = new QueryWrapper<DataDictionary>().lambda();
lambda.in(DataDictionary::getSequenceNbr, dictIds); lambda.in(DataDictionary::getSequenceNbr, dictIds);
List<DataDictionary> dataDictionaries = iDataDictionaryService.getByTypeAndDesc(QYRYGW, QYRYGW_NAME); List<DataDictionary> dataDictionaries = iDataDictionaryService.getByTypeAndDesc(QYRYGW, QYRYGW_NAME);
JSONArray finalDictIds = dictIds; List<DataDictionary> postDataList = dataDictionaries.stream().filter(d -> dictIds.stream().anyMatch(id -> id.toString().equals(d.getSequenceNbr().toString()))).collect(Collectors.toList());
List<DataDictionary> postDataList = dataDictionaries.stream().filter(d -> finalDictIds.stream().anyMatch(id -> id.toString().equals(d.getSequenceNbr().toString()))).collect(Collectors.toList());
return postDataList.stream().map(DataDictionary::getName).collect(Collectors.joining(",")); return postDataList.stream().map(DataDictionary::getName).collect(Collectors.joining(","));
} }
...@@ -351,15 +351,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -351,15 +351,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
String post = tzsUserInfo.getPost(); String post = tzsUserInfo.getPost();
if (post.contains(PersonManageRoleEnum.code.getId().toString())) { if (post.contains(PersonManageRoleEnum.code.getId().toString())) {
String companyType = tzsUserInfoMapper.selectCompanyTypeById(companySeq); String companyType = tzsUserInfoMapper.selectCompanyTypeById(companySeq);
if (companyType.contains(PersonManageRoleEnum.jyjc.getName())) { setBizOperateUserRole(companyType, roleIds);
roleIds.add(PersonManageRoleEnum.jyjc.getId());
}
if (companyType.contains(PersonManageRoleEnum.use.getName())) {
roleIds.add(PersonManageRoleEnum.use.getId());
}
if (companyType.contains(PersonManageRoleEnum.agw.getName())) {
roleIds.add(PersonManageRoleEnum.agw.getId());
}
} }
Map<Long, List<Long>> roleSeqMap = new HashMap<>(); Map<Long, List<Long>> roleSeqMap = new HashMap<>();
...@@ -386,11 +378,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -386,11 +378,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
// 绑定两个规定用户组 // 绑定两个规定用户组
post = post.replace("[", "").replace("]", "").replace("\"", ""); post = post.replace("[", "").replace("]", "").replace("\"", "");
for (String code : post.split(",")) { for (String code : post.split(",")) {
DataDictionary groupId = iDataDictionaryService bind2PermissionGroup(userIds, code);
.getOne(new LambdaQueryWrapper<DataDictionary>().eq(DataDictionary::getCode, code).likeRight(DataDictionary::getType, QYRYGW));
if (!ObjectUtils.isEmpty(groupId) && groupId.getExtend() != null) {
Privilege.groupUserClient.create(Long.valueOf(groupId.getExtend()), userIds);
}
} }
tzsUserInfoMapper.updateById(tzsUserInfo); tzsUserInfoMapper.updateById(tzsUserInfo);
} }
...@@ -988,7 +976,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -988,7 +976,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
UserImportDto userImportDto = userItems.get(i); UserImportDto userImportDto = userItems.get(i);
Set<ConstraintViolation<UserImportDto>> violations = validator.validate(userImportDto); Set<ConstraintViolation<UserImportDto>> violations = validator.validate(userImportDto);
for (ConstraintViolation<UserImportDto> violation : violations) { for (ConstraintViolation<UserImportDto> violation : violations) {
errors.add("非法数据,第" + i + "行" + violation.getMessage()); errors.add("非法数据,第" + (i + 1) + "行" + violation.getMessage());
} }
} }
if (!errors.isEmpty()) { if (!errors.isEmpty()) {
...@@ -1008,7 +996,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -1008,7 +996,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
phoneCheckRepeatCount.forEach(((k, v) -> { phoneCheckRepeatCount.forEach(((k, v) -> {
if (v.size() > 1) { if (v.size() > 1) {
String phone = k.split("_")[0]; String phone = k.split("_")[0];
errors.add(String.format("非法数据,手机号%s,在单位统一信用代码:%s下重复,请检查后进行上传!", phone, StringUtils.join(v, ","))); errors.add(String.format("非法数据,存在手机号%s,在多个单位统一信用代码:%s下共用,请检查后进行上传!", phone, StringUtils.join(v, ",")));
} }
})); }));
// 3.手机号重复检验,手机号全局唯一,不同单位下的手机号不能相同 todo 新写判断逻辑 // 3.手机号重复检验,手机号全局唯一,不同单位下的手机号不能相同 todo 新写判断逻辑
...@@ -1026,7 +1014,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -1026,7 +1014,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
certNoCheckRepeatCount.forEach(((k, v) -> { certNoCheckRepeatCount.forEach(((k, v) -> {
if (v.size() > 1) { if (v.size() > 1) {
String phone = k.split("_")[0]; String phone = k.split("_")[0];
errors.add(String.format("非法数据,存在手机号%s相同,但是证件号码不一样的数据:证件号码:%s,请检查后进行上传!", phone, StringUtils.join(v, ","))); errors.add(String.format("非法数据,存在多个证件号码:%s,共用相同的手机号%s,请检查后进行上传!", StringUtils.join(v, ","), phone));
} }
})); }));
return errors; return errors;
...@@ -1060,12 +1048,83 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -1060,12 +1048,83 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
} }
private void createAmosUser(Map<Long, TzsUserInfo> userInfoMap, Set<UserImportDto> userSet) { private void createAmosUser(Map<Long, TzsUserInfo> userInfoMap, Set<UserImportDto> userSet) {
// 公司缓存 // 1.公共数据处理
// 1.1公司缓存
Map<String, CompanyModel> companyCodeCompanyMap = new ConcurrentHashMap<>(); Map<String, CompanyModel> companyCodeCompanyMap = new ConcurrentHashMap<>();
Map<Long, UserImportDto> userSeqImportDataMap = userSet.stream().collect(Collectors.toMap(UserImportDto::getSeq, Function.identity())) Map<Long, UserImportDto> userSeqImportDataMap = userSet.stream().collect(Collectors.toMap(UserImportDto::getSeq, Function.identity()));
// 1.2单位类型下角色缓存
List<DataDictionary> unitTypeList = regUnitInfoService.setAndGetUnitTypeList();
Map<String, DataDictionary> dataDictionaryMap = unitTypeList.stream().collect(Collectors.toMap(DataDictionary::getName, Function.identity(), (k1, k2) -> k1));
// 1.3通用角色-普通用户处理
List<RoleModel> allRoleList = getCommonRoleModels();
// 2.用户创建
// 2.1创建前检验-单位类型是否合法(用户的单位类型不能大于所在公司的注册时的单位类型)
userInfoMap.forEach((k, v) -> {
checkOneUser(v, userSeqImportDataMap.get(k), companyCodeCompanyMap);
});
// 2.2创建
userInfoMap.forEach((k, v) -> { userInfoMap.forEach((k, v) -> {
createOneUser(v, userSeqImportDataMap.get(k), companyCodeCompanyMap); createOneUser(v, userSeqImportDataMap.get(k), companyCodeCompanyMap, dataDictionaryMap, allRoleList);
}); });
// 3.绑定用户到用户组
this.bindUserToGroup(userInfoMap.values());
}
private void bindUserToGroup(Collection<TzsUserInfo> values) {
List<String> userIds =values.stream().map(TzsUserInfo::getAmosUserId).collect(Collectors.toList());
try {
// 绑定企业整改用户组
String roleGroupCode = "6596";
DataDictionary roleGroup = iDataDictionaryService
.getOne(new LambdaQueryWrapper<DataDictionary>().eq(DataDictionary::getCode, roleGroupCode).eq(DataDictionary::getType, ROLE_GROUP));
if (!ObjectUtils.isEmpty(roleGroup) && roleGroup.getExtend() != null) {
Privilege.groupUserClient.create(Long.valueOf(roleGroup.getExtend()), userIds);
}
// 绑定两个规定用户组
for(TzsUserInfo userInfo : values) {
String newPost = userInfo.getPost();
List<String> posts = Optional.ofNullable(JSONArray.parseArray(newPost, String.class)).orElse(new ArrayList<>());
for (String code : posts) {
bind2PermissionGroup(Collections.singletonList(userInfo.getAmosUserId()), code);
}
}
} catch (Exception e) {
Privilege.agencyUserClient.multDeleteUser(StringUtils.join(userIds, ","));
log.error(e.getMessage(), e);
throw new BadRequest(e.getMessage());
}
}
/**
* 两个规定用户组绑定
* @param userIds 用户id
* @param post 人员类型
*/
private void bind2PermissionGroup(List<String> userIds, String post) {
// post name 用户组id
// 6549 安全员 1712372048442978305
// 6548 主要负责人 1712372027123331074
// 6547 安全总监 1712372007611428865
// 6546 普通员工 1712371988107915266
// 6552 作业人员 1712372137114759170
// 6551 质量安全员 1712372116055158786
// 6550 质量安全总监 1712372080231608322
DataDictionary groupId = iDataDictionaryService.getOne(new LambdaQueryWrapper<DataDictionary>().eq(DataDictionary::getCode, post).likeRight(DataDictionary::getType, QYRYGW));
if (!ObjectUtils.isEmpty(groupId) && groupId.getExtend() != null) {
Privilege.groupUserClient.create(Long.valueOf(groupId.getExtend()), userIds);
}
}
private List<RoleModel> getCommonRoleModels() {
String commonRule = "1554";
List<RoleModel> allRoleList = new ArrayList<>();
DataDictionary unitType = iDataDictionaryService.getOne(new LambdaQueryWrapper<DataDictionary>().eq(DataDictionary::getCode, commonRule).eq(DataDictionary::getType, USER_ROLE));
String role = unitType.getExtend() != null ? unitType.getExtend() : "";
for (String s : role.split(",")) {
RoleModel roleModel = Privilege.roleClient.seleteOne(Long.valueOf(s)).getResult();
allRoleList.add(roleModel);
}
return allRoleList;
} }
private Map<Long, TzsUserInfo> saveImportData2Db(Set<UserImportDto> userSet) { private Map<Long, TzsUserInfo> saveImportData2Db(Set<UserImportDto> userSet) {
...@@ -1079,106 +1138,97 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -1079,106 +1138,97 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
userInfo.setEmail(dto.getEmail()); userInfo.setEmail(dto.getEmail());
userInfo.setPhone(dto.getPhone()); userInfo.setPhone(dto.getPhone());
userInfo.setAddress(dto.getAddress()); userInfo.setAddress(dto.getAddress());
Set<String> postSet = dto.getUnitTypePostMap().values().stream().flatMap(Collection::stream).collect(Collectors.toSet());
// TODO 无资质导入,默认post = newPost // TODO 无资质导入,默认post = newPost
userInfo.setPost(JSON.toJSONString(dto.getPost().split(","))); userInfo.setPost(JSON.toJSONString(postSet));
// TODO 无资质导入,默认post = newPost // TODO 无资质导入,默认post = newPost
userInfo.setNewPost(JSON.toJSONString(dto.getPost().split(","))); userInfo.setNewPost(JSON.toJSONString(postSet));
String postName = this.setPostName(userInfo.getNewPost()); String postName = this.setPostName(userInfo.getNewPost());
userInfo.setPostName(postName); userInfo.setPostName(postName);
userInfo.setBirthday(dto.getBirthday()); userInfo.setBirthday(dto.getBirthday());
userInfo.setEducation(dto.getEducation()); userInfo.setEducation(dto.getEducation());
userInfo.setSpeciality(dto.getSpeciality()); userInfo.setSpeciality(dto.getSpeciality());
userInfo.setUnitName(dto.getUnitName()); userInfo.setUnitName(dto.getUnitName());
userInfo.setCertificateNum(dto.getCertificateNum());
userInfo.setCertificateType(dto.getCertificateType());
userInfo.setIsDelete(false); userInfo.setIsDelete(false);
userInfo.setLockStatus(UNLOCK); userInfo.setLockStatus(UNLOCK);
userInfo.setUnitCode(dto.getUnitCode()); userInfo.setUnitCode(dto.getUnitCode());
userInfo.setEquipType(dto.getEquipType()); userInfo.setEquipType(dto.getEquipType());
userInfo.setJobTitle(dto.getJobTitle()); userInfo.setJobTitle(dto.getJobTitle());
userInfo.setEquipType(JSON.toJSONString(dto.getEquipTypeList()));
return userInfo; return userInfo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
this.saveOrUpdateBatch(userInfos); super.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) { private void buildMergeFields(List<UserImportDto> userItems, Set<UserImportDto> userSet) {
for (UserImportDto userImportDto : userSet) { for (UserImportDto userImportDto : userSet) {
List<UserImportDto> distinctData = userItems.stream().filter(u -> u.getPhone().equals(userImportDto.getPhone())).collect(Collectors.toList()); List<UserImportDto> oData = userItems.stream().filter(u -> u.getPhone().equals(userImportDto.getPhone())).collect(Collectors.toList());
for (UserImportDto user : distinctData) { for (UserImportDto user : oData) {
Map<String, Set<String>> map = userImportDto.getUnitTypePostMap(); Map<String, Set<String>> map = userImportDto.getUnitTypePostMap();
if (map == null) { if (map == null) {
map = new HashMap<>(); map = new HashMap<>();
map.put(user.getUnitType(), Sets.newHashSet(user.getPost())); map.put(user.getUnitType(), Sets.newHashSet(user.getPost()));
userImportDto.setUnitTypePostMap(map);
} else { } else {
map.get(user.getUnitType()).add(user.getPost()); map.get(user.getUnitType()).add(user.getPost());
} }
Set<String> equipTypes = userImportDto.getEquipTypeList();
if (equipTypes == null) {
Set<String> equipTypesNew = new HashSet<>();
equipTypesNew.add(user.getEquipType());
userImportDto.setEquipTypeList(equipTypesNew);
} else {
equipTypes.add(user.getEquipType());
}
} }
userImportDto.getEquipTypeList().remove(null);
userImportDto.getEquipTypeList().remove("");
userImportDto.setSeq(sequence.nextId()); userImportDto.setSeq(sequence.nextId());
} }
} }
public void createOneUser(TzsUserInfo tzsUserInfo, UserImportDto userImportDto, Map<String, CompanyModel> companyCodeCompanyMap) { public void checkOneUser(TzsUserInfo tzsUserInfo, UserImportDto userImportDto, Map<String, CompanyModel> companyCodeCompanyMap) {
CompanyModel companyModel; CompanyModel companyModel = getCompanyModelUseCache(tzsUserInfo, companyCodeCompanyMap);
if (companyCodeCompanyMap.get(tzsUserInfo.getUnitCode()) != null) {
companyModel = companyCodeCompanyMap.get(tzsUserInfo.getUnitCode());
} else {
companyModel = baseEnterpriseInfoService.getBaseMapper().getOneByCompanyCode(tzsUserInfo.getUnitCode());
companyCodeCompanyMap.put(tzsUserInfo.getUnitCode(), companyModel);
}
String companyType = companyModel.getCompanyType(); String companyType = companyModel.getCompanyType();
// 默认的密码 // 增加约束,增加的人的单位类型不能大于单位的单位类型
String passwd = DesUtil.encode("a_" + tzsUserInfo.getPhone(), "qaz"); boolean existIllegalUnitType = userImportDto.getUnitTypePostMap().keySet().stream().anyMatch(u -> !companyType.contains(u));
// 默认都有:普通用户对应的角色、字在企业人员用户组下 if(existIllegalUnitType){
String roles = "1554"; throw new BadRequest("导入的用户:" + tzsUserInfo.getName() + ",手机号:" + tzsUserInfo.getPhone() + ",公司类型只能为:" + companyType + "之一!");
String roleGroupCode = "6596"; }
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)); public void createOneUser(TzsUserInfo tzsUserInfo, UserImportDto userImportDto, Map<String, CompanyModel> companyCodeCompanyMap, Map<String, DataDictionary> dataDictionaryMap, List<RoleModel> allRoleList) {
userImportDto.getUnitTypePostMap().forEach((k, v) -> {
DataDictionary unitType = dataDictionaryMap.get(k);
String appCode = unitType.getTypeDesc() != null ? unitType.getTypeDesc() : "";
String[] appCodes = appCode.split(",");
Collections.addAll(appCodesSet, appCodes);
});
FeignClientResult<AgencyUserModel> userResult = null; FeignClientResult<AgencyUserModel> userResult = null;
try { try {
CompanyModel companyModel = getCompanyModelUseCache(tzsUserInfo, companyCodeCompanyMap);
String companyType = companyModel.getCompanyType();
// 默认的密码
String passwd = DesUtil.encode("a_" + tzsUserInfo.getPhone(), "qaz");
// 获取对应单位类型下的引用并去重
Set<String> appCodesSet = getAppKeys(userImportDto, dataDictionaryMap);
List<Long> roleIds = new ArrayList<>();
allRoleList.forEach(r -> {
if (!roleIds.contains(r.getSequenceNbr())) {
roleIds.add(r.getSequenceNbr());
}
});
AgencyUserModel agencyUserModel = new AgencyUserModel(); AgencyUserModel agencyUserModel = new AgencyUserModel();
agencyUserModel.setUserName(tzsUserInfo.getPhone()); agencyUserModel.setUserName(tzsUserInfo.getPhone());
agencyUserModel.setRealName(tzsUserInfo.getName()); agencyUserModel.setRealName(tzsUserInfo.getName());
agencyUserModel.setLockStatus("UNLOCK"); agencyUserModel.setLockStatus(UNLOCK);
agencyUserModel.setPassword(passwd); agencyUserModel.setPassword(passwd);
agencyUserModel.setRePassword(passwd); agencyUserModel.setRePassword(passwd);
agencyUserModel.setAgencyCode("tzs"); agencyUserModel.setAgencyCode("tzs");
agencyUserModel.setMobile(tzsUserInfo.getPhone()); agencyUserModel.setMobile(tzsUserInfo.getPhone());
agencyUserModel.setEmail(tzsUserInfo.getEmail()); agencyUserModel.setEmail(tzsUserInfo.getEmail());
List<RoleModel> allRoleList = new ArrayList<>(); // 添加业务办理人员角色
List<Long> roleIds = new ArrayList<>();
DataDictionary unitType = iDataDictionaryService
.getOne(new LambdaQueryWrapper<DataDictionary>().eq(DataDictionary::getCode, roles).eq(DataDictionary::getType, USER_ROLE));
String role = unitType.getExtend() != null ? unitType.getExtend() : "";
for (String s : role.split(",")) {
RoleModel roleModel = Privilege.roleClient.seleteOne(Long.valueOf(s)).getResult();
allRoleList.add(roleModel);
}
allRoleList.forEach(r -> {
if (!roleIds.contains(r.getSequenceNbr())) {
roleIds.add(r.getSequenceNbr());
}
});
// 添加人员管理角色
String post = tzsUserInfo.getPost(); String post = tzsUserInfo.getPost();
if (post.contains(PersonManageRoleEnum.code.getId().toString())) { if (post.contains(PersonManageRoleEnum.code.getId().toString())) {
if (companyType.contains(PersonManageRoleEnum.jyjc.getName())) { setBizOperateUserRole(companyType, roleIds);
roleIds.add(PersonManageRoleEnum.jyjc.getId());
}
if (companyType.contains(PersonManageRoleEnum.use.getName())) {
roleIds.add(PersonManageRoleEnum.use.getId());
}
if (companyType.contains(PersonManageRoleEnum.agw.getName())) {
roleIds.add(PersonManageRoleEnum.agw.getId());
}
} }
Map<Long, List<Long>> roleSeqMap = new HashMap<>(); Map<Long, List<Long>> roleSeqMap = new HashMap<>();
Map<Long, List<RoleModel>> orgRoles = new HashMap<>(); Map<Long, List<RoleModel>> orgRoles = new HashMap<>();
...@@ -1188,38 +1238,58 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -1188,38 +1238,58 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
agencyUserModel.setOrgRoles(orgRoles); agencyUserModel.setOrgRoles(orgRoles);
agencyUserModel.setOrgRoleSeqs(roleSeqMap); agencyUserModel.setOrgRoleSeqs(roleSeqMap);
userResult = Privilege.agencyUserClient.create(agencyUserModel); userResult = Privilege.agencyUserClient.create(agencyUserModel);
if (userResult.getStatus() == 200) { tzsUserInfo.setAmosUserId(userResult.getResult().getUserId());
tzsUserInfo.setAmosUserId(userResult.getResult().getUserId()); tzsUserInfo.setAmosUserName(userResult.getResult().getUserName());
tzsUserInfo.setAmosUserName(userResult.getResult().getUserName()); tzsUserInfo.setLockStatus(UNLOCK);
tzsUserInfo.setLockStatus("UNLOCK"); tzsUserInfoMapper.updateById(tzsUserInfo);
// 绑定企业整改用户组
List<String> userIds = new ArrayList<>();
userIds.add(userResult.getResult().getUserId());
DataDictionary roleGroup = iDataDictionaryService
.getOne(new LambdaQueryWrapper<DataDictionary>().eq(DataDictionary::getCode, roleGroupCode).eq(DataDictionary::getType, ROLE_GROUP));
if (!ObjectUtils.isEmpty(roleGroup) && roleGroup.getExtend() != null) {
Privilege.groupUserClient.create(Long.valueOf(roleGroup.getExtend()), userIds);
}
// 绑定两个规定用户组
post = post.replace("[", "").replace("]", "").replace("\"", "");
for (String code : post.split(",")) {
DataDictionary groupId = iDataDictionaryService
.getOne(new LambdaQueryWrapper<DataDictionary>().eq(DataDictionary::getCode, code).likeRight(DataDictionary::getType, QYRYGW));
if (!ObjectUtils.isEmpty(groupId) && groupId.getExtend() != null) {
Privilege.groupUserClient.create(Long.valueOf(groupId.getExtend()), userIds);
}
}
tzsUserInfoMapper.updateById(tzsUserInfo);
}
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e);
if (userResult != null && userResult.getResult() != null if (userResult != null && userResult.getResult() != null
&& StringUtils.isNotEmpty(userResult.getResult().getUserId())) { && StringUtils.isNotEmpty(userResult.getResult().getUserId())) {
Privilege.agencyUserClient.multDeleteUser(userResult.getResult().getUserId()); Privilege.agencyUserClient.multDeleteUser(userResult.getResult().getUserId());
} }
log.error(e.getMessage(), e); if(e instanceof InnerInvokException){
String message = e.getLocalizedMessage();
if(StringUtils.isNotEmpty(message) && message.contains("用户名已存在")){
throw new BadRequest("手机号:" + tzsUserInfo.getPhone() + "已经被使用,请更换!");
}
}
throw new BadRequest(e.getMessage()); throw new BadRequest(e.getMessage());
} }
}
private CompanyModel getCompanyModelUseCache(TzsUserInfo tzsUserInfo, Map<String, CompanyModel> companyCodeCompanyMap) {
CompanyModel companyModel;
if (companyCodeCompanyMap.get(tzsUserInfo.getUnitCode()) != null) {
companyModel = companyCodeCompanyMap.get(tzsUserInfo.getUnitCode());
} else {
companyModel = baseEnterpriseInfoService.getBaseMapper().getOneByCompanyCode(tzsUserInfo.getUnitCode());
companyCodeCompanyMap.put(tzsUserInfo.getUnitCode(), companyModel);
}
return companyModel;
}
private static Set<String> getAppKeys(UserImportDto userImportDto, Map<String, DataDictionary> dataDictionaryMap) {
Set<String> appCodesSet = new HashSet<>();
userImportDto.getUnitTypePostMap().forEach((k, v) -> {
DataDictionary unitType = dataDictionaryMap.get(k);
String appCode = unitType.getTypeDesc() != null ? unitType.getTypeDesc() : "";
String[] appCodes = appCode.split(",");
Collections.addAll(appCodesSet, appCodes);
});
return appCodesSet;
}
private void setBizOperateUserRole(String companyType, List<Long> roleIds) {
if (companyType.contains(PersonManageRoleEnum.jyjc.getName())) {
roleIds.add(PersonManageRoleEnum.jyjc.getId());
}
if (companyType.contains(PersonManageRoleEnum.use.getName())) {
roleIds.add(PersonManageRoleEnum.use.getId());
}
if (companyType.contains(PersonManageRoleEnum.agw.getName())) {
roleIds.add(PersonManageRoleEnum.agw.getId());
}
} }
......
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