diff --git a/dl-module-company/src/main/resources/mapper/staff/CompanyStaffMapper.xml b/dl-module-company/src/main/resources/mapper/staff/CompanyStaffMapper.xml index 9dfdb225..8367b096 100644 --- a/dl-module-company/src/main/resources/mapper/staff/CompanyStaffMapper.xml +++ b/dl-module-company/src/main/resources/mapper/staff/CompanyStaffMapper.xml @@ -132,6 +132,10 @@ su.status, su.avatar AS avatar, dsc.folder_id AS folderId, + dsc.safe_date AS safeDate, + dsc.formal_date AS formalDate, + dsc.address AS address, + dsc.id_number AS idNumber, GROUP_CONCAT(DISTINCT sr2.name SEPARATOR ',') AS roleNames FROM system_users su diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/controller/admin/RepairStaffController.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/controller/admin/RepairStaffController.java index 35455714..3d19710c 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/controller/admin/RepairStaffController.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/controller/admin/RepairStaffController.java @@ -90,6 +90,31 @@ public class RepairStaffController { return CommonResult.ok(); } + /** + * 新增员工 + * + * @param repairStaff 员工信息 + * @return + */ + @PostMapping("/insert") + public CommonResult insert(@RequestBody RepairStaffSaveVo repairStaff) { + repairStaffService.insert(repairStaff); + return CommonResult.ok(); + } + + /** + * @Author 许 + * @Description 更新员工 + * @Date 10:38 2025/8/21 + * @Param [repairStaff] + * @return cn.iocoder.yudao.framework.common.pojo.CommonResult + **/ + @PostMapping("/updateStaff") + public CommonResult updateStaff(@RequestBody RepairStaffSaveVo repairStaff) { + repairStaffService.updateStaff(repairStaff); + return CommonResult.ok(); + } + @GetMapping("/listSelectUser") public CommonResult listSelectUser(@Valid UserPageReqVO pageReqVO) { // 查询目前所有的userId diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/entity/RepairStaff.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/entity/RepairStaff.java index e262a904..d30c223d 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/entity/RepairStaff.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/entity/RepairStaff.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.system.api.user.dto.UserDTO; import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO; import lombok.Data; +import java.util.Date; import java.util.List; @Data @@ -60,4 +61,13 @@ public class RepairStaff { * 文件夹id */ private String folderId; + + /** 家庭住址 */ + private String address; + + private String IdNumber; + + private Date safeDate; + + private Date formalDate; } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/entity/RepairStaffSaveVo.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/entity/RepairStaffSaveVo.java index b689d532..352d6616 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/entity/RepairStaffSaveVo.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/entity/RepairStaffSaveVo.java @@ -14,6 +14,7 @@ public class RepairStaffSaveVo { * 选择的员工 */ public List repairStaffs; + public UserDTO repairStaff; /** * 角色id */ diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/RepairStaffService.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/RepairStaffService.java index 7b30bfe3..e2303dab 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/RepairStaffService.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/RepairStaffService.java @@ -40,4 +40,22 @@ public interface RepairStaffService { * @date: 2025/8/11 13:22 */ UserDTO getStaff(Long id); + + /** + * @Author 许 + * @Description 新增员工 + * @Date 16:17 2025/8/20 + * @Param [repairStaff] + * @return void + **/ + void insert(RepairStaffSaveVo repairStaff); + + /** + * @Author 许 + * @Description + * @Date 10:44 2025/8/21 + * @Param [repairStaff] + * @return void + **/ + void updateStaff(RepairStaffSaveVo repairStaff); } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/impl/RepairStaffServiceImpl.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/impl/RepairStaffServiceImpl.java index ff3005ef..936bdc43 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/impl/RepairStaffServiceImpl.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/base/service/impl/RepairStaffServiceImpl.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.base.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.common.CommonErrorCodeConstants; @@ -154,6 +155,100 @@ public class RepairStaffServiceImpl implements RepairStaffService { return companyStaffService.getStaff(id); } + /** + * @return void + * @Author 许 + * @Description 新增员工 + * @Date 16:17 2025/8/20 + * @Param [repairStaff] + */ + @Override + public void insert(RepairStaffSaveVo repairStaff) { + // 获取当前登录用户的详细信息 + AdminUserRespDTO loginUser = getLoginUser(); + + // 判断用户是否存在 + AdminUserRespDTO checkUserName = adminUserApi.getUserByUsername(repairStaff.getRepairStaffs().get(0).getUsername()); + + if (ObjectUtil.isEmpty(checkUserName)) { + // 新增 + Long user = adminUserApi.createUser(repairStaff.getRepairStaffs().get(0)); + repairStaff.getRepairStaffs().get(0).setId(user); + } + + // 1. 分配角色 + repairStaff.getRepairStaffs().forEach(item -> { + permissionService.assignUserRoleByServicePackageId(item.getId(), repairStaff.getRoleIds(), SystemEnum.REPAIR.getCode()); + }); + // 2. 查看员工表中是否存在 + List oldIds = repairStaff.getRepairStaffs().stream().map(UserDTO::getId).collect(Collectors.toList()); + List staffList = companyStaffService.list(Wrappers.lambdaQuery() + .in(CompanyStaff::getUserId, oldIds)); + + // 获取员工表中已有的用户ID集合 + Set existUserIds = staffList.stream() + .map(CompanyStaff::getUserId) + .collect(Collectors.toSet()); + + // 找出不存在于员工表中的用户ID + List notExistUsers = repairStaff.getRepairStaffs().stream() + .filter(user -> !existUserIds.contains(user.getId())) + .collect(Collectors.toList()); + + /* 插入员工库 */ + DeptRespDTO loginDept = getLoginDept(loginUser.getDeptId()); + + // 添加员工 + if (CollectionUtil.isNotEmpty(notExistUsers)) { + List companyStaffs = new ArrayList<>(); + for (UserDTO notExistUser : notExistUsers) { + CompanyStaff companyStaff = new CompanyStaff(); + BeanUtil.copyProperties(notExistUser, companyStaff); + companyStaff.setId(null); + companyStaff.setCreateTime(null); + companyStaff.setUpdateTime(null); + companyStaff.setCreator(null); + companyStaff.setUpdater(null); + + // 1 获取当前登录用户的企业信息给添加的员工 + // 2 生成唯一推广码 + String uniqueCode = uniqueCodeService.createUniqueCode(); + if (!ObjectUtil.isNotEmpty(uniqueCode)) { + throw exception(CommonErrorCodeConstants.UNIQUE_CODE_CREATE_REPEAT); + } + companyStaff.setCorpId(loginDept.getCorpId()); + companyStaff.setUserId(notExistUser.getId()); + companyStaff.setName(notExistUser.getNickname()); + companyStaff.setTel(notExistUser.getUsername()); + companyStaff.setUniqueCode(uniqueCode); + + companyStaffs.add(companyStaff); + } + companyStaffService.saveBatch(companyStaffs); + } + } + + /** + * @return void + * @Author 许 + * @Description + * @Date 10:44 2025/8/21 + * @Param [repairStaff] + */ + @Override + public void updateStaff(RepairStaffSaveVo repairStaff) { + UserDTO staff = repairStaff.getRepairStaff(); + CompanyStaff companyStaff = BeanUtil.copyProperties(staff, CompanyStaff.class); + companyStaff.setCreator(null); + companyStaff.setUpdater(null); + companyStaff.setUpdateTime(null); + companyStaff.setCreateTime(null); + companyStaff.setDeptId(null); + companyStaff.setId(null); + companyStaffService.update(companyStaff, Wrappers.lambdaUpdate() + .eq(CompanyStaff::getUserId, staff.getId())); + } + /** * 获取当前登录用户的部门详细信息 * diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/dto/UserDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/dto/UserDTO.java index 8cd045a1..91b31f66 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/dto/UserDTO.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/dto/UserDTO.java @@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.system.api.user.dto; import lombok.Data; +import java.util.Date; + @Data public class UserDTO { /** @@ -68,4 +70,15 @@ public class UserDTO { */ private String folderId; + + // ================== 员工字段 ================== + /** 家庭住址 */ + private String address; + + private String IdNumber; + + private Date safeDate; + + private Date formalDate; + }