| | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| | | import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeImportExcelVO; |
| | | import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeImportReqVO; |
| | | import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeImportRespVO; |
| | | import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeePageReqVO; |
| | | import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeRespVO; |
| | | import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeSaveReqVO; |
| | | import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeeSimpleRespVO; |
| | | import cn.iocoder.yudao.module.hrm.dal.dataobject.employee.HrmEmployeeDO; |
| | | import cn.iocoder.yudao.module.hrm.enums.HrmEmploymentTypeEnum; |
| | | import cn.iocoder.yudao.module.hrm.service.employee.HrmEmployeeService; |
| | | import cn.iocoder.yudao.module.mes.api.cal.MesCalTeamApi; |
| | | import cn.iocoder.yudao.module.mes.api.cal.dto.MesCalTeamRespDTO; |
| | | import cn.iocoder.yudao.module.system.api.dept.DeptApi; |
| | | import cn.iocoder.yudao.module.system.api.dept.PostApi; |
| | | import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; |
| | |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.io.IOException; |
| | | import java.time.LocalDate; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | private PostApi postApi; |
| | | @Resource |
| | | private RoleApi roleApi; |
| | | @Resource |
| | | private MesCalTeamApi mesCalTeamApi; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "创建员工") |
| | |
| | | .collect(Collectors.toSet()); |
| | | Map<Long, PostRespDTO> postMap = CollUtil.isEmpty(postIds) ? Collections.emptyMap() : postApi.getPostMap(postIds); |
| | | |
| | | // 3. 收集所有角色ID |
| | | // 3. 批量获取班组信息(所属班组) |
| | | Set<Long> teamIds = employeeList.stream() |
| | | .map(HrmEmployeeDO::getTeamId) |
| | | .filter(Objects::nonNull) |
| | | .collect(Collectors.toSet()); |
| | | Map<Long, String> teamNameMap = CollUtil.isEmpty(teamIds) ? Collections.emptyMap() : mesCalTeamApi |
| | | .getTeamList(teamIds).stream() |
| | | .collect(Collectors.toMap(MesCalTeamRespDTO::getId, MesCalTeamRespDTO::getName, (v1, v2) -> v1)); |
| | | |
| | | // 4. 收集所有角色ID |
| | | Set<Long> allRoleIds = new HashSet<>(); |
| | | for (HrmEmployeeDO employee : employeeList) { |
| | | if (StrUtil.isNotBlank(employee.getRoleIds())) { |
| | |
| | | // 填充岗位名称 |
| | | if (employee.getPostId() != null && postMap.containsKey(employee.getPostId())) { |
| | | respVO.setPostName(postMap.get(employee.getPostId()).getName()); |
| | | } |
| | | |
| | | // 填充用工性质名称 |
| | | if (employee.getEmploymentType() != null) { |
| | | respVO.setEmploymentTypeName(HrmEmploymentTypeEnum.getNameByType(employee.getEmploymentType())); |
| | | } |
| | | |
| | | // 填充所属班组名称 |
| | | if (employee.getTeamId() != null && teamNameMap.containsKey(employee.getTeamId())) { |
| | | respVO.setTeamName(teamNameMap.get(employee.getTeamId())); |
| | | } |
| | | |
| | | // 解析 roleIds 并填充角色名称 |
| | |
| | | ExcelUtils.write(response, "员工信息.xls", "数据", HrmEmployeeRespVO.class, list); |
| | | } |
| | | |
| | | @GetMapping("/import-template") |
| | | @Operation(summary = "下载员工导入模板") |
| | | @PreAuthorize("@ss.hasPermission('hrm:employee:import')") |
| | | public void importTemplate(HttpServletResponse response) throws IOException { |
| | | // 输出示例数据,方便使用者参考 |
| | | List<HrmEmployeeImportExcelVO> list = Arrays.asList( |
| | | HrmEmployeeImportExcelVO.builder().name("张三").gender(1).phone("13800138000") |
| | | .deptName("研发部").postName("部门经理").roleNames("普通管理员") |
| | | .hireDate(LocalDate.of(2020, 3, 1)).employeeStatus(1) |
| | | .idCard("320102199001150011").birthday(LocalDate.of(1990, 1, 15)) |
| | | .nation("汉族").marriageStatus("已婚").age(36).education("本科").politicalStatus("中共党员") |
| | | .email("zhangsan@example.com").build() |
| | | ); |
| | | ExcelUtils.write(response, "员工导入模板.xls", "员工列表", HrmEmployeeImportExcelVO.class, list); |
| | | } |
| | | |
| | | @PostMapping("/import") |
| | | @Operation(summary = "导入员工") |
| | | @PreAuthorize("@ss.hasPermission('hrm:employee:import')") |
| | | public CommonResult<HrmEmployeeImportRespVO> importExcel(@Valid HrmEmployeeImportReqVO importReqVO) |
| | | throws Exception { |
| | | List<HrmEmployeeImportExcelVO> list = ExcelUtils.read(importReqVO.getFile(), HrmEmployeeImportExcelVO.class); |
| | | return success(employeeService.importEmployeeList(list, importReqVO)); |
| | | } |
| | | |
| | | } |