dev: 扫码入职流程修改,新增流动、固定人员逻辑
parent
560edb340c
commit
bb9e2d7eae
|
|
@ -179,9 +179,15 @@ public class UserAddExe {
|
|||
* 1. 根据id,查询用户信息
|
||||
* 2. 如果该用户没有企业id,则正常入职
|
||||
* 3. 如果该用户有企业id
|
||||
* 3.1 如果在当前企业有账号,则判断有未离职信息则提示,如果已离职,则将离职状态改为入职待审批
|
||||
* 3.2 如果在当前企业没有账号,则创建一条新user数据
|
||||
* 4. 新user数据的基础信息通过手机号查询该用户的其他全的信息获取过来(有身份证号信息的取第一个)
|
||||
* 3.1 判断该用户是流动还是固定用户
|
||||
* 3.2 如果是固定用户,则判断有未离职信息(入职,入职待审核,离职待审核)并提示(可能多条),
|
||||
* 3.2.1 如果都已离职,判断在当前企业是否有账号,
|
||||
* 3.2.2 如果有则将离职状态改为入职待审批,
|
||||
* 3.2.3 如果没有则创建一条新user数据
|
||||
* 3.3 如果是流动用户,
|
||||
* 3.3.1 如果在当前企业有账号,则判断有未离职信息则提示,如果已离职,则将离职状态改为入职待审批
|
||||
* 3.3.2 如果在当前企业没有账号,则创建一条新user数据
|
||||
* 3.3.3 新user数据的基础信息通过手机号查询该用户的其他全的信息获取过来(有身份证号信息的取第一个)
|
||||
*/
|
||||
|
||||
UserDO userDO = userRepository.getById(cmd.getId());
|
||||
|
|
@ -199,40 +205,94 @@ public class UserAddExe {
|
|||
userE.setEmploymentFlag(UserEmploymentFlagEnum.ENTRY_AUDIT.getCode());
|
||||
userGateway.update(userE);
|
||||
}else {
|
||||
String username = userDO.getUsername();
|
||||
List<UserDO> userDOS = userRepository.listByPhone(username);
|
||||
// 在当前企业是否有账号标识,false-没有,true-有
|
||||
boolean corpFlag = false;
|
||||
for (UserDO u : userDOS) {
|
||||
if(cmd.getCorpinfoId().equals(u.getCorpinfoId())){
|
||||
// 在当前企业有账号
|
||||
if(!UserEmploymentFlagEnum.NOT_ON.getCode().equals(u.getEmploymentFlag()) && !UserEmploymentFlagEnum.RESIGNATION.getCode().equals(u.getEmploymentFlag())){
|
||||
throw new BizException("该用户在当前企业存在未离职信息,无法重新入职");
|
||||
}
|
||||
// user表状态变为入职待审核
|
||||
BeanUtils.copyProperties(u, userE);
|
||||
userE.initFormOnboarding(cmd.getCorpinfoId(), cmd.getDepartmentId(), cmd.getPostName(), null);
|
||||
userGateway.update(userE);
|
||||
corpFlag = true;
|
||||
break;
|
||||
// 用户有企业id
|
||||
Integer flowFlag = userDO.getFlowFlag();
|
||||
if(UserFlowFlagEnum.FIXED.getCode().equals(flowFlag)){
|
||||
// 固定用户
|
||||
String username = userDO.getUsername();
|
||||
List<UserDO> userDOS = userRepository.listByPhone(username);
|
||||
// 3.2
|
||||
if(CollUtil.isNotEmpty(userDOS)){
|
||||
userDOS.forEach(u -> {
|
||||
if (UserEmploymentFlagEnum.ON.getCode().equals(u.getEmploymentFlag())
|
||||
|| UserEmploymentFlagEnum.ENTRY_AUDIT.getCode().equals(u.getEmploymentFlag())
|
||||
|| UserEmploymentFlagEnum.RESIGNATION_AUDIT.getCode().equals(u.getEmploymentFlag())){
|
||||
throw new BizException("该固定用户存在未离职信息,无法入职");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
if(!corpFlag){
|
||||
// 在当前企业没有账号
|
||||
// 找到第一个 userIdCard 有值(非空且非空字符串)的数据
|
||||
Optional<UserDO> firstUserWithIdCard = userDOS.stream()
|
||||
.filter(user -> user.getUserIdCard() != null && !user.getUserIdCard().trim().isEmpty())
|
||||
.findFirst();
|
||||
// 3.2.1 3.2.2
|
||||
// 在当前企业是否有账号标识,false-没有,true-有
|
||||
boolean corpFlag = false;
|
||||
if(CollUtil.isNotEmpty(userDOS)){
|
||||
for (UserDO u : userDOS) {
|
||||
if(cmd.getCorpinfoId().equals(u.getCorpinfoId())){
|
||||
// 在当前企业有账号
|
||||
u.setEmploymentFlag(UserEmploymentFlagEnum.ENTRY_AUDIT.getCode());
|
||||
BeanUtils.copyProperties(u, userE);
|
||||
userE.initFormOnboarding(cmd.getCorpinfoId(), cmd.getDepartmentId(), cmd.getPostName(), null);
|
||||
userGateway.update(userE);
|
||||
corpFlag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 3.2.3
|
||||
if(!corpFlag){
|
||||
// 在当前企业没有账号
|
||||
// 找到第一个 userIdCard 有值(非空且非空字符串)的数据
|
||||
Optional<UserDO> firstUserWithIdCard = userDOS.stream()
|
||||
.filter(user -> user.getUserIdCard() != null && !user.getUserIdCard().trim().isEmpty())
|
||||
.findFirst();
|
||||
|
||||
if (firstUserWithIdCard.isPresent()) {
|
||||
UserDO user = firstUserWithIdCard.get();
|
||||
BeanUtils.copyProperties(user, userE);
|
||||
userE.setId(null);
|
||||
userE.initFormOnboarding(cmd.getCorpinfoId(), cmd.getDepartmentId(), cmd.getPostName(), UuidUtil.get32UUID());
|
||||
userRepository.saveOnboardingUser(userE);
|
||||
} else {
|
||||
// 没有找到符合条件的用户
|
||||
throw new BizException("当前用户不存在完整用户信息");
|
||||
if (firstUserWithIdCard.isPresent()) {
|
||||
UserDO user = firstUserWithIdCard.get();
|
||||
BeanUtils.copyProperties(user, userE);
|
||||
userE.setId(null);
|
||||
userE.initFormOnboarding(cmd.getCorpinfoId(), cmd.getDepartmentId(), cmd.getPostName(), UuidUtil.get32UUID());
|
||||
userRepository.saveOnboardingUser(userE);
|
||||
} else {
|
||||
// 没有找到符合条件的用户
|
||||
throw new BizException("当前用户不存在完整用户信息");
|
||||
}
|
||||
}
|
||||
}else {
|
||||
// 流动用户
|
||||
String username = userDO.getUsername();
|
||||
List<UserDO> userDOS = userRepository.listByPhone(username);
|
||||
// 在当前企业是否有账号标识,false-没有,true-有
|
||||
boolean corpFlag = false;
|
||||
for (UserDO u : userDOS) {
|
||||
if(cmd.getCorpinfoId().equals(u.getCorpinfoId())){
|
||||
// 在当前企业有账号
|
||||
if(!UserEmploymentFlagEnum.NOT_ON.getCode().equals(u.getEmploymentFlag()) && !UserEmploymentFlagEnum.RESIGNATION.getCode().equals(u.getEmploymentFlag())){
|
||||
throw new BizException("该用户在当前企业存在未离职信息,无法重新入职");
|
||||
}
|
||||
// user表状态变为入职待审核
|
||||
BeanUtils.copyProperties(u, userE);
|
||||
userE.initFormOnboarding(cmd.getCorpinfoId(), cmd.getDepartmentId(), cmd.getPostName(), null);
|
||||
userGateway.update(userE);
|
||||
corpFlag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!corpFlag){
|
||||
// 在当前企业没有账号
|
||||
// 找到第一个 userIdCard 有值(非空且非空字符串)的数据
|
||||
Optional<UserDO> firstUserWithIdCard = userDOS.stream()
|
||||
.filter(user -> user.getUserIdCard() != null && !user.getUserIdCard().trim().isEmpty())
|
||||
.findFirst();
|
||||
|
||||
if (firstUserWithIdCard.isPresent()) {
|
||||
UserDO user = firstUserWithIdCard.get();
|
||||
BeanUtils.copyProperties(user, userE);
|
||||
userE.setId(null);
|
||||
userE.initFormOnboarding(cmd.getCorpinfoId(), cmd.getDepartmentId(), cmd.getPostName(), UuidUtil.get32UUID());
|
||||
userRepository.saveOnboardingUser(userE);
|
||||
} else {
|
||||
// 没有找到符合条件的用户
|
||||
throw new BizException("当前用户不存在完整用户信息");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue