From bb9e2d7eae94dc3956ac7a7e59420112365f3865 Mon Sep 17 00:00:00 2001 From: SondonYong Date: Tue, 30 Dec 2025 09:46:36 +0800 Subject: [PATCH] =?UTF-8?q?dev:=20=E6=89=AB=E7=A0=81=E5=85=A5=E8=81=8C?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E4=BF=AE=E6=94=B9=EF=BC=8C=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=B5=81=E5=8A=A8=E3=80=81=E5=9B=BA=E5=AE=9A=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zcloud/basic/info/command/UserAddExe.java | 130 +++++++++++++----- 1 file changed, 95 insertions(+), 35 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 8be299ba..303c12e1 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 @@ -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 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 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 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 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 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 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("当前用户不存在完整用户信息"); + } } } }