dev: 扫码入职流程修改,新增流动、固定人员逻辑

dev_xiangguanfang
SondonYong 2025-12-30 09:46:36 +08:00
parent 560edb340c
commit bb9e2d7eae
1 changed files with 95 additions and 35 deletions

View File

@ -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("当前用户不存在完整用户信息");
}
} }
} }
} }