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