dev:人员导入(部门岗位反哺版)

main
SondonYong 2025-11-29 11:19:37 +08:00
parent 2f37b250b1
commit 45c6a46e96
5 changed files with 20 additions and 24 deletions

View File

@ -123,8 +123,8 @@ public class UserController {
@ApiOperation("导入用户列表") @ApiOperation("导入用户列表")
@PostMapping("/importUserTable") @PostMapping("/importUserTable")
public Response importUserTable(@RequestPart(value = "file") MultipartFile file) { public Response importUserTable(@RequestPart(value = "file") MultipartFile file, @RequestPart(value = "corpFlag") Integer corpFlag) {
userService.importUserTable(file); userService.importUserTable(file, corpFlag);
return SingleResponse.buildSuccess(); return SingleResponse.buildSuccess();
} }

View File

@ -2,17 +2,12 @@ package com.zcloud.basic.info.command;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.cloud.commons.lang.StringUtils; import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.exception.BizException; import com.alibaba.cola.exception.BizException;
import com.jjb.saas.config.client.dicttree.facade.ConfDictTreeFacade;
import com.jjb.saas.config.client.dicttree.response.ConfDictTreeCO;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext; import com.jjb.saas.framework.auth.utils.AuthContext;
import com.jjb.saas.system.client.role.facade.RoleFacade; import com.jjb.saas.system.client.role.facade.RoleFacade;
import com.jjb.saas.system.client.role.response.RoleCO; import com.jjb.saas.system.client.role.response.RoleCO;
import com.zcloud.basic.info.command.convertor.UserCoConvertor;
import com.zcloud.basic.info.domain.gateway.DepartmentGateway; import com.zcloud.basic.info.domain.gateway.DepartmentGateway;
import com.zcloud.basic.info.domain.gateway.PostGateway; import com.zcloud.basic.info.domain.gateway.PostGateway;
import com.zcloud.basic.info.domain.gateway.UserEmploymentLogGateway; import com.zcloud.basic.info.domain.gateway.UserEmploymentLogGateway;
@ -21,9 +16,6 @@ import com.zcloud.basic.info.domain.model.DepartmentE;
import com.zcloud.basic.info.domain.model.PostE; import com.zcloud.basic.info.domain.model.PostE;
import com.zcloud.basic.info.domain.model.UserE; import com.zcloud.basic.info.domain.model.UserE;
import com.zcloud.basic.info.domain.model.UserEmploymentLogE; import com.zcloud.basic.info.domain.model.UserEmploymentLogE;
import com.zcloud.basic.info.dto.CorpInfoAddCmd;
import com.zcloud.basic.info.dto.UserAddCmd;
import com.zcloud.basic.info.dto.UserXgfAddCmd;
import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO; import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO;
import com.zcloud.basic.info.persistence.dataobject.DepartmentDO; import com.zcloud.basic.info.persistence.dataobject.DepartmentDO;
import com.zcloud.basic.info.persistence.dataobject.PostDO; import com.zcloud.basic.info.persistence.dataobject.PostDO;
@ -34,6 +26,7 @@ import com.zcloud.basic.info.persistence.repository.PostRepository;
import com.zcloud.basic.info.persistence.repository.UserRepository; import com.zcloud.basic.info.persistence.repository.UserRepository;
import com.zcloud.gbscommon.excelEntity.UserExcelImportEntity; import com.zcloud.gbscommon.excelEntity.UserExcelImportEntity;
import com.zcloud.gbscommon.utils.ExcelUtils; import com.zcloud.gbscommon.utils.ExcelUtils;
import com.zcloud.gbscommon.utils.UuidUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -66,14 +59,10 @@ public class UserImportExe {
private final UserRepository userRepository; private final UserRepository userRepository;
private final DepartmentGateway departmentGateway; private final DepartmentGateway departmentGateway;
@DubboReference @DubboReference
private ConfDictTreeFacade confDictTreeFacade;
@DubboReference
private RoleFacade roleFacade; private RoleFacade roleFacade;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void importUserTable(MultipartFile file) { public void importUserTable(MultipartFile file, Integer corpFlag) {
Long corpinfoId = AuthContext.getTenantId(); Long corpinfoId = AuthContext.getTenantId();
if(corpinfoId == null){ if(corpinfoId == null){
throw new BizException("未选择租户"); throw new BizException("未选择租户");
@ -105,9 +94,9 @@ public class UserImportExe {
// 开始处理导入逻辑 // 开始处理导入逻辑
for (UserExcelImportEntity importEntity : list) { for (UserExcelImportEntity importEntity : list) {
try { try {
processSingleUser(importEntity, corpinfoId, corpInfoDO, departmentDOList, postDOList, userDOList, roleCOMultiResponse.getData()); processSingleUser(importEntity, corpFlag, corpinfoId, corpInfoDO, departmentDOList, postDOList, userDOList, roleCOMultiResponse.getData());
} catch (Exception e) { } catch (Exception e) {
throw new BizException("导入用户失败: " + importEntity.getUsername() + ", 原因: " + e.getMessage()); throw new BizException("导入用户失败: " + importEntity.getUsername() + ", 原因: " + e.getMessage());
} }
} }
} }
@ -115,7 +104,8 @@ public class UserImportExe {
/** /**
* *
*/ */
private void processSingleUser(UserExcelImportEntity importEntity, Long corpinfoId, private void processSingleUser(UserExcelImportEntity importEntity, Integer corpFlag,
Long corpinfoId,
CorpInfoDO corpInfoDO, CorpInfoDO corpInfoDO,
List<DepartmentDO> departmentDOList, List<PostDO> postDOList, List<DepartmentDO> departmentDOList, List<PostDO> postDOList,
List<UserDO> userDOList, List<RoleCO> roleList) { List<UserDO> userDOList, List<RoleCO> roleList) {
@ -130,7 +120,7 @@ public class UserImportExe {
Long roleId = processRoleInfo(importEntity, roleList); Long roleId = processRoleInfo(importEntity, roleList);
// 4. 处理用户信息 // 4. 处理用户信息
processUserInfo(importEntity, corpinfoId, corpInfoDO, departmentId, postId, userDOList, roleId); processUserInfo(importEntity, corpFlag, corpinfoId, corpInfoDO, departmentId, postId, userDOList, roleId);
} }
/** /**
@ -161,7 +151,7 @@ public class UserImportExe {
// 验证一级部门名称是否与Excel中的部门1匹配 // 验证一级部门名称是否与Excel中的部门1匹配
if (StringUtils.isNotBlank(importEntity.getDepartmentName1()) && if (StringUtils.isNotBlank(importEntity.getDepartmentName1()) &&
!importEntity.getDepartmentName1().equals(rootDept.getName())) { !importEntity.getDepartmentName1().equals(rootDept.getName())) {
throw new BizException("一级部门名称与公司名称不一致: Excel中的" + importEntity.getDepartmentName1() + " vs 系统中的" + rootDept.getName()); throw new BizException("所属部门1名称与公司名称不一致: 所属部门1应该为:" + rootDept.getName());
} }
Long currentParentId = rootDept.getId(); // 从一级部门开始 Long currentParentId = rootDept.getId(); // 从一级部门开始
@ -345,7 +335,8 @@ public class UserImportExe {
/** /**
* *
*/ */
private void processUserInfo(UserExcelImportEntity importEntity, Long corpinfoId, private void processUserInfo(UserExcelImportEntity importEntity, Integer corpFlag,
Long corpinfoId,
CorpInfoDO corpInfoDO, CorpInfoDO corpInfoDO,
Long departmentId, Long postId, List<UserDO> allUsers, Long departmentId, Long postId, List<UserDO> allUsers,
Long roleId) { Long roleId) {
@ -359,7 +350,11 @@ public class UserImportExe {
// 创建用户 // 创建用户
UserE user = new UserE(); UserE user = new UserE();
user.setUserId(UuidUtil.get32UUID());
user.setUsername(importEntity.getUsername()); user.setUsername(importEntity.getUsername());
user.setPhone(importEntity.getUsername());
user.setUserType(corpFlag);
user.setMainCorpFlag(0);
user.setRoleId(roleId); user.setRoleId(roleId);
user.setDepartmentId(departmentId); user.setDepartmentId(departmentId);
user.setPostId(postId); user.setPostId(postId);

View File

@ -66,8 +66,8 @@ public class UserServiceImpl implements UserServiceI {
} }
@Override @Override
public void importUserTable(MultipartFile file) { public void importUserTable(MultipartFile file, Integer corpFlag) {
userImportExe.importUserTable(file); userImportExe.importUserTable(file, corpFlag);
} }
@Override @Override

View File

@ -29,7 +29,7 @@ public interface UserServiceI {
void exportUserTable(HttpServletResponse httpServletResponse, Long[] ids, Long corpinfoId); void exportUserTable(HttpServletResponse httpServletResponse, Long[] ids, Long corpinfoId);
void importUserTable(MultipartFile file); void importUserTable(MultipartFile file, Integer corpFlag);
void remove(Long id); void remove(Long id);

View File

@ -57,6 +57,7 @@ public class DepartmentGatewayImpl implements DepartmentGateway {
deptCmd.setDeptName(departmentE.getName()); deptCmd.setDeptName(departmentE.getName());
deptCmd.setParentIds(deptDetailCO.getData().getParentIds()); deptCmd.setParentIds(deptDetailCO.getData().getParentIds());
//TODO gbs部门表 sys_dept tenant_idparent_idsadd_type_enum存储错误导致gbs页面看不到参数还没有待定 //TODO gbs部门表 sys_dept tenant_idparent_idsadd_type_enum存储错误导致gbs页面看不到参数还没有待定
// TODO gbs的这个创建部门接口没有区分企业, 新建的企业创建其他企业有的部门名称时报错:名称已存在
SingleResponse<Long> response = deptFacade.add(deptCmd); SingleResponse<Long> response = deptFacade.add(deptCmd);
d.setId(response.getData()); d.setId(response.getData());
departmentRepository.save(d); departmentRepository.save(d);