From 9d51754605af515ab01d4f77729b43e1209e24f1 Mon Sep 17 00:00:00 2001 From: SondonYong Date: Mon, 29 Dec 2025 18:00:32 +0800 Subject: [PATCH] =?UTF-8?q?dev:=20=E6=89=AB=E7=A0=81=E5=85=A5=E8=81=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zcloud/basic/info/command/UserAddExe.java | 96 ++++++++++++++----- .../repository/UserRepository.java | 2 + .../repository/impl/UserRepositoryImpl.java | 10 ++ 3 files changed, 84 insertions(+), 24 deletions(-) diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java index 03645fbf..7efe4609 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java @@ -33,10 +33,7 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** @@ -178,22 +175,85 @@ public class UserAddExe { @Transactional(rollbackFor = Exception.class) public boolean executeOnboarding(AppUserOnboardingCmd cmd) { + /** + * 1. 根据id,查询用户信息 + * 2. 如果该用户没有企业id,则正常入职 + * 3. 如果该用户有企业id,并且在当前企业没有账号,则创建一条新user数据 + * 3.1 如果在当前企业有账号,则判断有未离职信息则提示 + * 4. 新user数据的基础信息通过手机号查询该用户的其他全的信息获取过来(有身份证信息的取第一个) + */ + UserDO userDO = userRepository.getById(cmd.getId()); if(userDO == null){ throw new BizException("用户不存在"); } - // 校验是否存在未离职信息(不包括未入职状态) - List userDOS = userRepository.listByPhone(userDO.getUsername()); - if(CollUtil.isNotEmpty(userDOS)){ - userDOS.forEach(u -> { - if(!UserEmploymentFlagEnum.NOT_ON.getCode().equals(u.getEmploymentFlag()) && !UserEmploymentFlagEnum.RESIGNATION.getCode().equals(u.getEmploymentFlag())){ - throw new BizException("该用户存在未离职信息,无法入职"); + UserE userE = new UserE(); + + + if(userDO.getCorpinfoId() == null){ + BeanUtils.copyProperties(cmd, userE); + + // user表状态变为入职待审核 + userE.setEmploymentFlag(UserEmploymentFlagEnum.ENTRY_AUDIT.getCode()); + userGateway.update(userE); + + + }else { + String username = userDO.getUsername(); + List userDOS = userRepository.listByPhone(username); + 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表状态变为入职待审核 + u.setEmploymentFlag(UserEmploymentFlagEnum.ENTRY_AUDIT.getCode()); + BeanUtils.copyProperties(u, userE); + userGateway.update(userE); + corpFlag = true; + break; } - }); + } + if(!corpFlag){ + // 在当前企业没有账号 + // 找到第一个 userIdCard 有值(非空且非空字符串)的数据 + Optional 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.setUserId(UuidUtil.get32UUID()); + userE.setEmploymentFlag(UserEmploymentFlagEnum.ENTRY_AUDIT.getCode()); + userE.setCorpinfoId(cmd.getCorpinfoId()); + userE.setDepartmentId(cmd.getDepartmentId()); + userE.setPostName(cmd.getPostName()); + userRepository.saveOnboardingUser(userE); + } else { + // 没有找到符合条件的用户 + throw new BizException("当前用户不存在完整用户信息"); + } + } } + // todo + // 插入user_corp_record表 + UserCorpRecordE userCorpRecordE = new UserCorpRecordE(); + userCorpRecordE.initAddFromApp(userE, cmd.getCorpinfoName(), cmd.getDepartmentName()); + userCorpRecordGateway.add(userCorpRecordE); + + // 插入user_change_record表 + UserChangeRecordE userChangeRecordE = new UserChangeRecordE(); + userChangeRecordE.initUserAddFromApp(userE, cmd.getCorpinfoName(), cmd.getDepartmentName()); + userChangeRecordGateway.add(userChangeRecordE); + + // 判断user表是否有未离职的数据, 如果有则不能入职(1-离职) // List statusList = Arrays.asList(UserEmploymentFlagEnum.RESIGNATION.getCode(), UserEmploymentFlagEnum.NOT_ON.getCode()); @@ -205,8 +265,7 @@ public class UserAddExe { // } // 把user表相关企业,部门,岗位数据补充完整 - UserE userE = new UserE(); - BeanUtils.copyProperties(cmd, userE); + // 12.29 相关方逻辑修改,暂时注释,后续无用再删除 @@ -249,18 +308,7 @@ public class UserAddExe { // userE.setCorpinfoId(cmd.getCorpinfoId()); // } -// user表状态变为入职待审核 - userE.setEmploymentFlag(UserEmploymentFlagEnum.ENTRY_AUDIT.getCode()); - userGateway.update(userE); - // 插入user_corp_record表 - UserCorpRecordE userCorpRecordE = new UserCorpRecordE(); - userCorpRecordE.initAddFromApp(userE, cmd.getCorpinfoName(), cmd.getDepartmentName()); - userCorpRecordGateway.add(userCorpRecordE); - // 插入user_change_record表 - UserChangeRecordE userChangeRecordE = new UserChangeRecordE(); - userChangeRecordE.initUserAddFromApp(userE, cmd.getCorpinfoName(), cmd.getDepartmentName()); - userChangeRecordGateway.add(userChangeRecordE); return true; } diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/UserRepository.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/UserRepository.java index 4d57bf70..44258506 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/UserRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/UserRepository.java @@ -47,6 +47,8 @@ public interface UserRepository extends BaseRepository { void saveRegisterUser(UserDO userDO); + void saveOnboardingUser(UserE userE); + void updateInfoById(UserDO userDO); void deleteUserById(Long id); diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserRepositoryImpl.java index a685c8ca..46299e25 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserRepositoryImpl.java @@ -304,6 +304,16 @@ public class UserRepositoryImpl extends BaseRepositoryImpl i save(userDO); } + @Override + public void saveOnboardingUser(UserE userE) { + if (StringUtils.isEmpty(userE.getUsername())) { + userE.setUsername(userE.getPhone()); + } + UserDO userDO = new UserDO(); + BeanUtils.copyProperties(userE, userDO); + save(userDO); + } + @Override public void saveUserXgf(UserDO userDO) { if (StringUtils.isEmpty(userDO.getUsername())) {