Commit ea34eb42 authored by hcing's avatar hcing

refactor(tcm): 优化用户信息校验逻辑

parent 01678ca0
...@@ -1082,37 +1082,53 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -1082,37 +1082,53 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
throw new BadRequest("未指定人员归属单位信息"); throw new BadRequest("未指定人员归属单位信息");
} }
if (tzsUserInfoMapper.selectCount(new LambdaQueryWrapper<TzsUserInfo>() TzsUserInfo checkUser1 = tzsUserInfoMapper.selectList(new LambdaQueryWrapper<TzsUserInfo>()
.eq(TzsUserInfo::getCertificateType, tzsUserInfo.getCertificateType()) .eq(TzsUserInfo::getCertificateType, tzsUserInfo.getCertificateType())
.eq(TzsUserInfo::getCertificateNum, tzsUserInfo.getCertificateNum()) .eq(TzsUserInfo::getCertificateNum, tzsUserInfo.getCertificateNum())
.eq(TzsUserInfo::getUnitCode, companyModel.getCompanyCode()) .eq(TzsUserInfo::getUnitCode, companyModel.getCompanyCode())
.eq(TzsUserInfo::getIsDelete, false)) > 0) { .eq(TzsUserInfo::getIsDelete, false))
throw new BadRequest("本单位下用户证件号码重复,请核对!"); .stream()
.findFirst()
.orElse(null);
if (checkUser1 != null) {
throw new BadRequest("与本单位下【+" + checkUser1.getName() + "+】证件号码重复,请核对!");
} }
// 当人员类型仅为主要负责人时,不校验是否被其他单位绑定 // 当人员类型仅为主要负责人时,不校验是否被其他单位绑定
if (!JSON.toJSONString(Collections.singletonList(UserPostEnum.ZYFZR.getCode())).equals(tzsUserInfo.getNewPost())) { if (!JSON.toJSONString(Collections.singletonList(UserPostEnum.ZYFZR.getCode())).equals(tzsUserInfo.getNewPost())) {
if (tzsUserInfoMapper.selectCount(new LambdaQueryWrapper<TzsUserInfo>() TzsUserInfo checkUser2 = tzsUserInfoMapper.selectList(new LambdaQueryWrapper<TzsUserInfo>()
.eq(TzsUserInfo::getCertificateType, tzsUserInfo.getCertificateType()) .eq(TzsUserInfo::getCertificateType, tzsUserInfo.getCertificateType())
.eq(TzsUserInfo::getCertificateNum, tzsUserInfo.getCertificateNum()) .eq(TzsUserInfo::getCertificateNum, tzsUserInfo.getCertificateNum())
.ne(TzsUserInfo::getUnitCode, companyModel.getCompanyCode()) .ne(TzsUserInfo::getUnitCode, companyModel.getCompanyCode())
.eq(TzsUserInfo::getIsDelete, false)) > 0) { .eq(TzsUserInfo::getIsDelete, false))
throw new BadRequest("该用户已被其他单位绑定,请联系原单位转出!"); .stream()
.findFirst()
.orElse(null);
if (checkUser2 != null) {
throw new BadRequest("该用户已被【" + checkUser2.getUnitName() + "】绑定,请联系原单位转出!");
} }
} }
if (tzsUserInfoMapper.selectCount(new LambdaQueryWrapper<TzsUserInfo>() TzsUserInfo checkUser3 = tzsUserInfoMapper.selectList(new LambdaQueryWrapper<TzsUserInfo>()
.eq(TzsUserInfo::getUnitCode, companyModel.getCompanyCode()) .eq(TzsUserInfo::getUnitCode, companyModel.getCompanyCode())
.eq(TzsUserInfo::getPhone, tzsUserInfo.getPhone()) .eq(TzsUserInfo::getPhone, tzsUserInfo.getPhone())
.eq(TzsUserInfo::getIsDelete, false)) > 0) { .eq(TzsUserInfo::getIsDelete, false))
throw new BadRequest("本单位下用户联系电话重复,请核对!"); .stream()
.findFirst()
.orElse(null);
if (checkUser3 != null) {
throw new BadRequest("与本单位下【" + checkUser3.getName() + "】联系电话重复,请核对!");
} }
if (tzsUserInfoMapper.selectCount(new LambdaQueryWrapper<TzsUserInfo>() TzsUserInfo checkUser4 = tzsUserInfoMapper.selectList(new LambdaQueryWrapper<TzsUserInfo>()
.ne(TzsUserInfo::getUnitCode, companyModel.getCompanyCode()) .ne(TzsUserInfo::getUnitCode, companyModel.getCompanyCode())
.eq(TzsUserInfo::getPhone, tzsUserInfo.getPhone()) .eq(TzsUserInfo::getPhone, tzsUserInfo.getPhone())
.eq(TzsUserInfo::getIsDelete, false)) > 0) { .eq(TzsUserInfo::getIsDelete, false))
throw new BadRequest("该用户手机号已被其他单位人员绑定!"); .stream()
.findFirst()
.orElse(null);
if (checkUser4 != null) {
throw new BadRequest("该用户手机号已被【" + checkUser4.getUnitName() + "】人员绑定!");
} }
tzsUserInfo.setUnitName(companyModel.getCompanyName()); tzsUserInfo.setUnitName(companyModel.getCompanyName());
...@@ -1210,38 +1226,55 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -1210,38 +1226,55 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
throw new BadRequest("未指定人员归属单位信息"); throw new BadRequest("未指定人员归属单位信息");
} }
if (tzsUserInfoMapper.selectCount(new LambdaQueryWrapper<TzsUserInfo>() TzsUserInfo checkUser1 = tzsUserInfoMapper.selectList(new LambdaQueryWrapper<TzsUserInfo>()
.eq(TzsUserInfo::getCertificateType, tzsUserInfoDto.getCertificateType()) .eq(TzsUserInfo::getCertificateType, tzsUserInfoDto.getCertificateType())
.ne(TzsUserInfo::getSequenceNbr, rowId) .ne(TzsUserInfo::getSequenceNbr, rowId)
.eq(TzsUserInfo::getCertificateNum, tzsUserInfoDto.getCertificateNum()) .eq(TzsUserInfo::getCertificateNum, tzsUserInfoDto.getCertificateNum())
.eq(TzsUserInfo::getUnitCode, companyModel.getCompanyCode()) .eq(TzsUserInfo::getUnitCode, companyModel.getCompanyCode())
.eq(TzsUserInfo::getIsDelete, false)) > 0) { .eq(TzsUserInfo::getIsDelete, false))
throw new BadRequest("本单位下用户证件号码重复,请核对!"); .stream()
.findFirst()
.orElse(null);
if (checkUser1 != null) {
throw new BadRequest("与本单位下【" + checkUser1.getName() + "】证件号码重复,请核对!");
} }
// 当人员类型仅为主要负责人时,不校验是否被其他单位绑定 // 当人员类型仅为主要负责人时,不校验是否被其他单位绑定
if (!JSON.toJSONString(Collections.singletonList(UserPostEnum.ZYFZR.getCode())).equals(tzsUserInfoDto.getNewPost())) { if (!JSON.toJSONString(Collections.singletonList(UserPostEnum.ZYFZR.getCode())).equals(tzsUserInfoDto.getNewPost())) {
if (tzsUserInfoMapper.selectCount(new LambdaQueryWrapper<TzsUserInfo>() TzsUserInfo checkUser2 = tzsUserInfoMapper.selectList(new LambdaQueryWrapper<TzsUserInfo>()
.eq(TzsUserInfo::getCertificateType, tzsUserInfoDto.getCertificateType()) .eq(TzsUserInfo::getCertificateType, tzsUserInfoDto.getCertificateType())
.eq(TzsUserInfo::getCertificateNum, tzsUserInfoDto.getCertificateNum()) .eq(TzsUserInfo::getCertificateNum, tzsUserInfoDto.getCertificateNum())
.ne(TzsUserInfo::getUnitCode, companyModel.getCompanyCode()) .ne(TzsUserInfo::getUnitCode, companyModel.getCompanyCode())
.eq(TzsUserInfo::getIsDelete, false)) > 0) { .eq(TzsUserInfo::getIsDelete, false))
throw new BadRequest("该用户已被其他单位绑定,请联系原单位转出!"); .stream()
.findFirst()
.orElse(null);
if (checkUser2 != null) {
throw new BadRequest("该用户已被【" + checkUser2.getUnitName() + "】绑定,请联系原单位转出!");
} }
} }
if (tzsUserInfoMapper.selectCount(new LambdaQueryWrapper<TzsUserInfo>() TzsUserInfo checkUser3 = tzsUserInfoMapper.selectList(new LambdaQueryWrapper<TzsUserInfo>()
.eq(TzsUserInfo::getUnitCode, companyModel.getCompanyCode()) .eq(TzsUserInfo::getUnitCode, companyModel.getCompanyCode())
.ne(TzsUserInfo::getSequenceNbr, rowId) .ne(TzsUserInfo::getSequenceNbr, rowId)
.eq(TzsUserInfo::getPhone, tzsUserInfoDto.getPhone()) .eq(TzsUserInfo::getPhone, tzsUserInfoDto.getPhone())
.eq(TzsUserInfo::getIsDelete, false)) > 0) { .eq(TzsUserInfo::getIsDelete, false))
throw new BadRequest("本单位下用户联系电话重复,请核对!"); .stream()
.findFirst()
.orElse(null);
if (checkUser3 != null) {
throw new BadRequest("与本单位下【" + checkUser3.getName() + "】联系电话重复,请核对!");
} }
if (tzsUserInfoMapper.selectCount(new LambdaQueryWrapper<TzsUserInfo>() TzsUserInfo checkUser4 = tzsUserInfoMapper.selectList(new LambdaQueryWrapper<TzsUserInfo>()
.ne(TzsUserInfo::getUnitCode, companyModel.getCompanyCode()) .ne(TzsUserInfo::getUnitCode, companyModel.getCompanyCode())
.eq(TzsUserInfo::getPhone, tzsUserInfoDto.getPhone()) .eq(TzsUserInfo::getPhone, tzsUserInfoDto.getPhone())
.eq(TzsUserInfo::getIsDelete, false)) > 0) { .eq(TzsUserInfo::getIsDelete, false))
throw new BadRequest("该用户手机号已被其他单位人员绑定!"); .stream()
.findFirst()
.orElse(null);
if (checkUser4 != null) {
throw new BadRequest("该用户手机号已被【" + checkUser4.getUnitName() + "】人员绑定!");
} }
// 删除人员与组的关系 // 删除人员与组的关系
...@@ -1404,6 +1437,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -1404,6 +1437,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
log.error(e.getMessage()); log.error(e.getMessage());
} }
} }
/** /**
* 发送主题消息,给企业推送excel 结束下载提醒 * 发送主题消息,给企业推送excel 结束下载提醒
* *
...@@ -1590,7 +1624,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -1590,7 +1624,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
.select(TzsUserInfo::getSequenceNbr) .select(TzsUserInfo::getSequenceNbr)
.eq(TzsUserInfo::getPhone, userItems.getPhone()) .eq(TzsUserInfo::getPhone, userItems.getPhone())
.eq(TzsUserInfo::getUnitCode, company.getCompanyCode()) .eq(TzsUserInfo::getUnitCode, company.getCompanyCode())
.eq(TzsUserInfo::getIsDelete, Boolean.FALSE)).isEmpty()) { //2.2 本单位人员比较 .eq(TzsUserInfo::getIsDelete, Boolean.FALSE)).isEmpty()) { // 2.2 本单位人员比较
errors.add("第" + excelRowNum + "行,错误信息->" + "手机号已经绑定本单位人员"); errors.add("第" + excelRowNum + "行,错误信息->" + "手机号已经绑定本单位人员");
} else { } else {
phoneOnly.put(key, userItems.getPhone()); phoneOnly.put(key, userItems.getPhone());
...@@ -1603,7 +1637,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -1603,7 +1637,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
.select(TzsUserInfo::getSequenceNbr) .select(TzsUserInfo::getSequenceNbr)
.eq(TzsUserInfo::getCertificateNum, userItems.getCertificateNum()) .eq(TzsUserInfo::getCertificateNum, userItems.getCertificateNum())
.eq(TzsUserInfo::getUnitCode, company.getCompanyCode()) .eq(TzsUserInfo::getUnitCode, company.getCompanyCode())
.eq(TzsUserInfo::getIsDelete, Boolean.FALSE)).isEmpty()) { //2.2 本单位人员比较 .eq(TzsUserInfo::getIsDelete, Boolean.FALSE)).isEmpty()) { // 2.2 本单位人员比较
errors.add("第" + excelRowNum + "行,错误信息->" + "证件编号已经绑定本单位人员"); errors.add("第" + excelRowNum + "行,错误信息->" + "证件编号已经绑定本单位人员");
} else { } else {
certificateNumOnly.put(userItems.getCertificateNum(), userItems.getName()); certificateNumOnly.put(userItems.getCertificateNum(), userItems.getName());
...@@ -1612,7 +1646,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -1612,7 +1646,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
Map<String, String> allPostNames = this.postByUnitType(company).stream().collect(Collectors.toMap(DataDictionary::getName, DataDictionary::getCode)); Map<String, String> allPostNames = this.postByUnitType(company).stream().collect(Collectors.toMap(DataDictionary::getName, DataDictionary::getCode));
String postNameStr = userItems.getPost(); String postNameStr = userItems.getPost();
if (!ValidationUtil.isEmpty(postNameStr)) { if (!ValidationUtil.isEmpty(postNameStr)) {
List<String> postNameList = Arrays.asList(postNameStr.replace(",", ",").replace("-", ",").replace("\n","").split(",")); List<String> postNameList = Arrays.asList(postNameStr.replace(",", ",").replace("-", ",").replace("\n", "").split(","));
// postNameList 中,不存在于 allPostNames 中的元素 // postNameList 中,不存在于 allPostNames 中的元素
List<String> notExistPosts = postNameList.stream() List<String> notExistPosts = postNameList.stream()
.filter(p -> !allPostNames.containsKey(p)) .filter(p -> !allPostNames.containsKey(p))
...@@ -1632,7 +1666,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -1632,7 +1666,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
// 5.人员类型和人员子类型的匹配 // 5.人员类型和人员子类型的匹配
String subPost = userItems.getSubPost(); String subPost = userItems.getSubPost();
if (!ValidationUtil.isEmpty(subPost)) { if (!ValidationUtil.isEmpty(subPost)) {
String subPostStr = subPost.replace(",", ",").replace("-", ",").replace("\n",""); String subPostStr = subPost.replace(",", ",").replace("-", ",").replace("\n", "");
List<String> subPostList = Arrays.asList(subPostStr.split(",")); List<String> subPostList = Arrays.asList(subPostStr.split(","));
String postCode = this.postByUnitType(company).stream().filter(item -> item.getName().equals(postName)).map(DataDictionary::getCode).findFirst().orElse(""); String postCode = this.postByUnitType(company).stream().filter(item -> item.getName().equals(postName)).map(DataDictionary::getCode).findFirst().orElse("");
Map<String, String> allSubPostNames = this.subPostByUnitType(company, postCode).stream().collect(Collectors.toMap(DataDictionary::getName, DataDictionary::getCode)); Map<String, String> allSubPostNames = this.subPostByUnitType(company, postCode).stream().collect(Collectors.toMap(DataDictionary::getName, DataDictionary::getCode));
...@@ -1742,10 +1776,10 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -1742,10 +1776,10 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
OperatorQua.setJobItem(objects); OperatorQua.setJobItem(objects);
JSONObject itemCode = new JSONObject(); JSONObject itemCode = new JSONObject();
if (!ValidationUtil.isEmpty(OperatorQua.getFJSHJCZItemCode())) { if (!ValidationUtil.isEmpty(OperatorQua.getFJSHJCZItemCode())) {
itemCode.fluentPut("FJSHJCZItemCode",OperatorQua.getFJSHJCZItemCode()); itemCode.fluentPut("FJSHJCZItemCode", OperatorQua.getFJSHJCZItemCode());
} }
if (!ValidationUtil.isEmpty(OperatorQua.getJSHJCZItemCode())) { if (!ValidationUtil.isEmpty(OperatorQua.getJSHJCZItemCode())) {
itemCode.fluentPut("JSHJCZItemCode",OperatorQua.getJSHJCZItemCode()); itemCode.fluentPut("JSHJCZItemCode", OperatorQua.getJSHJCZItemCode());
} }
OperatorQua.setItemCode(itemCode); OperatorQua.setItemCode(itemCode);
permissionData6552.add(OperatorQua); permissionData6552.add(OperatorQua);
...@@ -2251,9 +2285,9 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -2251,9 +2285,9 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
String postCode = entry.getKey();// 主岗位 String postCode = entry.getKey();// 主岗位
JsonNode subPostCode = entry.getValue();// 子岗位 JsonNode subPostCode = entry.getValue();// 子岗位
// 确保最大范围包含子类型 // 确保最大范围包含子类型
if (subPostCode.isEmpty()){ if (subPostCode.isEmpty()) {
allPostUnderTheUnit.put(postCode, subPostCode); allPostUnderTheUnit.put(postCode, subPostCode);
}else { } else {
allPostUnderTheUnit.putIfAbsent(postCode, subPostCode); allPostUnderTheUnit.putIfAbsent(postCode, subPostCode);
} }
} }
...@@ -2301,7 +2335,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -2301,7 +2335,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
return individuality; return individuality;
} }
@Transactional (rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public TzIndividualityDto personalInfoUpdateById(Map<String, Object> map) { public TzIndividualityDto personalInfoUpdateById(Map<String, Object> map) {
TzsBaseIndividuality individuality = individualityMapper.selectById(Long.valueOf(map.get("sequenceNbr").toString())); TzsBaseIndividuality individuality = individualityMapper.selectById(Long.valueOf(map.get("sequenceNbr").toString()));
...@@ -2330,7 +2364,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -2330,7 +2364,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
private void syncNewPost(TzsUserInfoDto tzsUserInfoDto) { private void syncNewPost(TzsUserInfoDto tzsUserInfoDto) {
ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class); ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
if (ObjectUtils.isEmpty(reginParams)) { if (ObjectUtils.isEmpty(reginParams)) {
return ; return;
} }
Long companySeq = reginParams.getCompany().getSequenceNbr(); Long companySeq = reginParams.getCompany().getSequenceNbr();
List<String> appCodesSet = reginParams.getUserModel().getAppCodes(); List<String> appCodesSet = reginParams.getUserModel().getAppCodes();
......
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