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