package cc.mrbird.febs.server.hr.controller; import cc.mrbird.febs.common.core.entity.FebsResponse; import cc.mrbird.febs.common.core.entity.QueryRequest; import cc.mrbird.febs.common.core.entity.constant.StringConstant; import cc.mrbird.febs.common.core.entity.system.DicItem; import cc.mrbird.febs.common.core.exception.FebsException; import cc.mrbird.febs.common.core.utils.FebsUtil; import cc.mrbird.febs.server.hr.annotation.ControllerEndpoint; import cc.mrbird.febs.server.hr.entity.EmpBaseInfo; import cc.mrbird.febs.server.hr.entity.EmpDimissionLog; import cc.mrbird.febs.server.hr.entity.EmpJobChange; import cc.mrbird.febs.server.hr.feign.IRemoteDeptService; import cc.mrbird.febs.server.hr.feign.IRemoteDicItemService; import cc.mrbird.febs.server.hr.service.*; import cc.mrbird.febs.server.hr.util.PoiExportExcel; import cc.mrbird.febs.server.hr.util.PoiImportExcel; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.wuwenze.poi.ExcelKit; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import javax.validation.constraints.NotBlank; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; /** * name:EmpBaseInfo * package:cc.mrbird.febs.server.hr.controller * description:控制器 * * @author luoyibo * @date 2021-01-30 08:04:50 * @since JDK1.8 */ @Api(tags = "人员基本信息录入接口") @Slf4j @Validated @RestController @RequestMapping("empBaseInfo") @RequiredArgsConstructor public class EmpBaseInfoController { private final IRemoteDeptService remoteDeptService; private final IEmpBaseInfoService empBaseInfoService; private final IEmpWorkExperienceService empWorkExperienceService; private final IEmpPhysicalExamService empPhysicalExamService; private final IEmpContractInfoService empContractInfoService; private final IEmpDimissionAttendService empDimissionAttendService; private final IEmpLeaveInfoService empLeaveInfoService; private final IEmpResignService empResignService; private final IEmpUnemploymentService empUnemploymentService; private final IEmpInsuranceService empInsuranceService; private final IEmpAccidentCasesService empAccidentCasesService; private final IEmpOccupationalService empOccupationalService; private final IEmpLaborTroubleService empLaborTroubleService; private final IEmpBadRecordService empBadRecordService; private final IEmpRemarkinfoService empRemarkinfoService; private final IRemoteDicItemService dicItemService; @ApiOperation(value = "人员基本信息无翻页列表") @GetMapping @PreAuthorize("hasAuthority('empBaseinfo:list')") public FebsResponse getAllEmpBaseInfos(EmpBaseInfo empBaseinfo) { return new FebsResponse().data(empBaseInfoService.findEmpBaseInfos(empBaseinfo)); } @ApiOperation(value = "人员基本信息翻页列表") @GetMapping("list") @PreAuthorize("hasAuthority('empBaseinfo:list')") public FebsResponse empBaseInfoList(QueryRequest request, EmpBaseInfo empBaseinfo) { Map dataTable = FebsUtil.getDataTable(this.empBaseInfoService.findEmpBaseInfos(request, empBaseinfo)); return new FebsResponse().data(dataTable); } @ApiOperation(value = "智搜人员基本信息翻页列表") @GetMapping("zslist") @PreAuthorize("hasAuthority('empBaseinfo:list')") public FebsResponse empBaseInfoZsList(QueryRequest request, EmpBaseInfo empBaseinfo) { Map dataTable = FebsUtil.getDataTable(this.empBaseInfoService.findZsEmpBaseInfos(request, empBaseinfo)); return new FebsResponse().data(dataTable); } @ApiOperation(value = "人员基本信息增加") @PostMapping @PreAuthorize("hasAuthority('empBaseinfo:add')") public void addEmpBaseInfo(@Valid EmpBaseInfo empBaseinfo) throws FebsException { if(this.empBaseInfoService.verifyEmpNumb(empBaseinfo)){ throw new FebsException("已存在此员工编号:" + empBaseinfo.getEmpNumb()); } if(this.empBaseInfoService.verifyCertificateNumb(empBaseinfo)){ throw new FebsException("已存在此身份证号:" + empBaseinfo.getCertificateNumb()); } try { empBaseinfo.setEntryType("20"); this.empBaseInfoService.createEmpBaseInfo(empBaseinfo); } catch (Exception e) { String message = "新增员工基本信息失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "人员基本信息物理删除") @DeleteMapping @PreAuthorize("hasAuthority('empBaseinfo:delete')") public void deleteEmpBaseInfo(EmpBaseInfo empBaseinfo) throws FebsException { try { this.empBaseInfoService.deleteEmpBaseInfo(empBaseinfo); } catch (Exception e) { String message = "删除员工基本信息失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "人员基本信息逻辑删除") @DeleteMapping("{ids}") @PreAuthorize("hasAuthority('empBaseinfo:delete')") public void logicDeleteEmpBaseInfo(@NotBlank(message = "{required}") @PathVariable("ids") String ids) throws FebsException { try { this.empBaseInfoService.logicDelEmpBaseInfo(ids); } catch (Exception e) { String message = "逻辑员工基本信息删除失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "人员基本信息修改") @PutMapping @PreAuthorize("hasAuthority('empBaseinfo:update')") public void updateEmpBaseInfo(@Valid EmpBaseInfo empBaseinfo) throws FebsException { if(this.empBaseInfoService.verifyEmpNumb(empBaseinfo)){ throw new FebsException("已存在此员工编号:" + empBaseinfo.getEmpNumb()); } try { this.empBaseInfoService.updateEmpBaseInfo(empBaseinfo); } catch (Exception e) { String message = "修改失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "基本信息提交") @DeleteMapping("toNormal/{ids}") @PreAuthorize("hasAuthority('empBaseinfo:delete')") public void momentToNormal(@NotBlank(message = "{required}") @PathVariable("ids") String ids) throws FebsException { try { this.empBaseInfoService.momentToNormal(ids); } catch (Exception e) { String message = "基本信息提交失败"; log.error(message, e); throw new FebsException(message); } } @GetMapping("options") public FebsResponse roles() { QueryWrapper wrapper=new QueryWrapper(); wrapper.eq("a.empStatus",0); wrapper.eq("a.delFlag",0); wrapper.orderByDesc("a.createTime"); wrapper.in("c.dept_Id", remoteDeptService.userRightDepts().split(StringConstant.COMMA)); List allRoles = empBaseInfoService.listAll(wrapper); return new FebsResponse().data(allRoles); } @ApiOperation(value = "导出员工") @RequestMapping(value = "export",method= RequestMethod.POST) @ControllerEndpoint(operation = "导出用户数据", exceptionMessage = "导出Excel失败") public void export(QueryRequest request, EmpBaseInfo empBaseinfo, HttpServletResponse response) throws IOException { request.setPageSize(this.empBaseInfoService.count()); List records = this.empBaseInfoService.findZsEmpBaseInfos(request, empBaseinfo).getRecords(); ExcelKit.$Export(EmpBaseInfo.class, response).downXlsx(records, false); } @ApiOperation(value = "导出员工") @RequestMapping(value = "exportWithField",method= RequestMethod.POST) @ControllerEndpoint(operation = "导出用户数据", exceptionMessage = "导出Excel失败") public void exportWithField(QueryRequest request, HttpServletResponse response, String exportField,EmpBaseInfo empBaseinfo) throws IOException { request.setPageSize(25535); request.setPageNum(1); List exportList = this.empBaseInfoService.findZsEmpBaseInfos(request, empBaseinfo).getRecords(); List> listMapDicItem = new ArrayList(); List> allList = PoiExportExcel.getDataList(exportField, exportList, null); String fileName = "员工列表"; Date currentDate = new Date(); String dateStr = DateUtil.formatDate(currentDate); boolean result = PoiExportExcel.exportCommonExcel(response, fileName + dateStr, fileName, allList); } @ApiOperation(value = "导出员工") @RequestMapping(value = "exportEmpAll",method= RequestMethod.POST) @ControllerEndpoint(operation = "导出用户数据", exceptionMessage = "导出Excel失败") public void exportEmpAll(HttpServletResponse response,EmpBaseInfo empBaseinfo) throws IOException { this.empBaseInfoService.exportEmpAll(response,empBaseinfo); } @ApiOperation(value = "导入员工") @PostMapping("importEmp") public FebsResponse importEmp(MultipartFile file) { InputStream in; List>> listObject; List returnList = new ArrayList<>(); List dicItems = dicItemService.getAllDicitemsAll(); try { if (!file.isEmpty()) { in = file.getInputStream(); listObject = PoiImportExcel.getMulitListByExcel(in, file.getOriginalFilename()); in.close(); empBaseInfoService.importEmpBaseInfo(listObject.get(0),returnList,dicItems); empWorkExperienceService.importEmpWorkExperience(listObject.get(1),returnList); empPhysicalExamService.importEmpPhysicalExam(listObject.get(2),returnList,dicItems); empContractInfoService.importEmpContractInfo(listObject.get(3),returnList,dicItems); empDimissionAttendService.importEmpDimissionAttend(listObject.get(4),returnList); empLeaveInfoService.importEmpLeaveInfo(listObject.get(5),returnList,dicItems); empResignService.importEmpResign(listObject.get(6),returnList); empUnemploymentService.importEmpUnemployment(listObject.get(7),returnList); empInsuranceService.importEmpInsurance(listObject.get(8),returnList,dicItems); empAccidentCasesService.importEmpAccidentCases(listObject.get(9),returnList); empOccupationalService.importEmpOccupational(listObject.get(10),returnList); empLaborTroubleService.importEmpLaborTrouble(listObject.get(11),returnList,dicItems); empBadRecordService.importEmpBadRecord(listObject.get(12),returnList); empRemarkinfoService.importEmpRemarkInfo(listObject.get(13),returnList); } }catch (IndexOutOfBoundsException e){ log.error("导入员工,下表越界", e); }catch (Exception e) { log.error("导入员工", e); } return new FebsResponse().data(returnList); } @ApiOperation(value = "关闭员工档案") @PostMapping("dimission") @PreAuthorize("hasAuthority('empBaseinfo:dimission')") public void dimissionEmp(EmpDimissionLog empDimissionLog) throws FebsException { try { this.empBaseInfoService.closeEmpArchives(empDimissionLog); } catch (Exception e) { String message = "关闭员工档案失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "员工岗位变更") @PostMapping("jobChange") @PreAuthorize("hasAuthority('empBaseinfo:jobChange')") public void changeEmpJob(EmpJobChange empJobChange) throws FebsException { try { this.empBaseInfoService.changeEmpJob(empJobChange); } catch (Exception e) { String message = "员工调岗保存失败"; log.error(message, e); throw new FebsException(message); } } @GetMapping("image/{empId}") public void getImage(@PathVariable String empId, HttpServletResponse response) throws FebsException { try { this.empBaseInfoService.getImage(empId,response); } catch (Exception e) { String message = "获取员工图片异常"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "在职人员基本信息增加") @PostMapping("addInEmp") @PreAuthorize("hasAuthority('empBaseinfo:add')") public FebsResponse addInEmpBaseInfo(@Valid EmpBaseInfo empBaseinfo) throws FebsException { try { return new FebsResponse().data(empBaseInfoService.addInEmpBaseInfo(empBaseinfo)); } catch (Exception e) { String message = "新增员工基本信息失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "社保提醒人员基本信息翻页列表") @GetMapping("insurance/alert") @PreAuthorize("hasAuthority('empBaseinfo:list')") public FebsResponse insuranceAlertEmpBaseInfoList(QueryRequest request, EmpBaseInfo empBaseinfo) { empBaseinfo.setTimeRange(2); Map dataTable = FebsUtil.getDataTable(this.empBaseInfoService.findInsuranceEmpBaseInfos(request, empBaseinfo)); return new FebsResponse().data(dataTable); } @ApiOperation(value = "退休提醒人员基本信息翻页列表") @GetMapping("retire/alert") @PreAuthorize("hasAuthority('empBaseinfo:list')") public FebsResponse retirementAlertEmpBaseInfoList(QueryRequest request, EmpBaseInfo empBaseinfo) { empBaseinfo.setTimeRange(2); Map dataTable = FebsUtil.getDataTable(this.empBaseInfoService.findRetirementEmpBaseInfos(request, empBaseinfo)); return new FebsResponse().data(dataTable); } @ApiOperation(value = "退休解骋") @PostMapping("retire/dismiss") @PreAuthorize("hasAuthority('empBaseinfo:dimission')") public void retireDismissionEmp(EmpDimissionLog empDimissionLog) throws FebsException { try { empDimissionLog.setDimissionDate(new Date()); this.empBaseInfoService.closeEmpArchives(empDimissionLog); } catch (Exception e) { String message = "退休解骋员工失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "转正提醒人员基本信息翻页列表") @GetMapping("probation/alert") @PreAuthorize("hasAuthority('empBaseinfo:list')") public FebsResponse probationAlertEmpBaseInfoList(QueryRequest request, EmpBaseInfo empBaseinfo) { Map dataTable = FebsUtil.getDataTable(this.empBaseInfoService.findProbationEmpBaseInfos(request, empBaseinfo)); return new FebsResponse().data(dataTable); } @ApiOperation(value = "设置人员转正信息") @PostMapping("probation/change") @PreAuthorize("hasAuthority('empBaseinfo:dimission')") public void probationChangeEmpBaseInfo(EmpBaseInfo empBaseinfo) { this.empBaseInfoService.probationEmpBaseInfo(empBaseinfo); } @ApiOperation(value = "导出社保四险员工") @PostMapping(value = "export/insurance") @ControllerEndpoint(operation = "导出社保四险数据", exceptionMessage = "导出 Excel 失败") public void exportInsuranceWithField(QueryRequest request, HttpServletResponse response, String exportField, EmpBaseInfo empBaseinfo) throws IOException { request.setPageSize(25535); request.setPageNum(1); List exportList = this.empBaseInfoService.findInsuranceEmpBaseInfos(request, empBaseinfo).getRecords(); exportExcel(response, exportField, exportList, "社保四险员工列表"); } @ApiOperation(value = "导出退休提醒员工") @PostMapping(value = "export/retirement") @ControllerEndpoint(operation = "导出退休提醒数据", exceptionMessage = "导出 Excel 失败") public void exportRetirementWithField(QueryRequest request, HttpServletResponse response, String exportField, EmpBaseInfo empBaseinfo) throws IOException { request.setPageSize(25535); request.setPageNum(1); List exportList = this.empBaseInfoService.findRetirementEmpBaseInfos(request, empBaseinfo).getRecords(); exportExcel(response, exportField, exportList, "退休提醒员工列表"); } @ApiOperation(value = "导出转正提醒员工") @PostMapping(value = "export/probation") @ControllerEndpoint(operation = "导出转正提醒数据", exceptionMessage = "导出 Excel 失败") public void exportProbationWithField(QueryRequest request, HttpServletResponse response, String exportField, EmpBaseInfo empBaseinfo) throws IOException { request.setPageSize(25535); request.setPageNum(1); List exportList = this.empBaseInfoService.findProbationEmpBaseInfos(request, empBaseinfo).getRecords(); exportExcel(response, exportField, exportList, "转正提醒员工列表"); } @ApiOperation(value = "导出身份证到期员工") @PostMapping(value = "export/sfz") @ControllerEndpoint(operation = "导出身份证到期员工", exceptionMessage = "导出 Excel 失败") public void exportIdNumberWithField(QueryRequest request, HttpServletResponse response, String exportField, EmpBaseInfo empBaseinfo) throws IOException { request.setPageSize(25535); request.setPageNum(1); String index = empBaseinfo.getTimeRange().toString(); List exportList = this.empBaseInfoService.baseInfoList(index, null, null, "25535", "1", "11", null).getRecords(); exportExcel(response, exportField, exportList, "身份证到期员工列表"); } @ApiOperation(value = "导出合同到期员工") @PostMapping(value = "export/expireHt") @ControllerEndpoint(operation = "导出合同证到期员工", exceptionMessage = "导出 Excel 失败") public void exportExpireHtWithField(QueryRequest request, HttpServletResponse response, String exportField, EmpBaseInfo empBaseinfo) throws IOException { request.setPageSize(25535); request.setPageNum(1); String index = empBaseinfo.getTimeRange().toString(); List exportList = this.empBaseInfoService.baseInfoHeList(index, null, null, "25535", "1", "12", null).getRecords(); exportExcel(response, exportField, exportList, "合同到期员工列表"); } /** * 通用 Excel 导出方法 * * @param response HTTP 响应对象 * @param exportField 导出字段 * @param exportList 导出数据列表 * @param fileName 文件名(不含日期) * @throws IOException IO 异常 */ private void exportExcel(HttpServletResponse response, String exportField, List exportList, String fileName) throws IOException { List> allList = PoiExportExcel.getDataList(exportField, exportList, null); Date currentDate = new Date(); String dateStr = DateUtil.formatDate(currentDate); PoiExportExcel.exportCommonExcel(response, fileName + dateStr, fileName, allList); } }