feat(hr): 添加员工导出和字典映射支持
- 新增性别常量DicCode.SEX
- EmpBaseInfo添加性别、籍贯、员工类型和学历名称映射
- EmpBaseInfoController新增退休和转正员工导出接口
- EmpBaseInfoServiceImpl完善导出数据的字典名称处理
- EmpContractInfo新增距到期天数和到期提醒字段
- EmpContractInfoController优化合同到期提醒导出功能,支持字段动态导出
- 修正部分注解说明和代码格式问题
| | |
| | | * 转正状态 |
| | | */ |
| | | public final static String PROBATIONS_TATUS = "probationStatus"; |
| | | /** |
| | | * 性别 |
| | | */ |
| | | public final static String SEX = "sex"; |
| | | |
| | | } |
| | |
| | | String dateStr = DateUtil.formatDate(currentDate); |
| | | boolean result = PoiExportExcel.exportCommonExcel(response, fileName + dateStr, fileName, allList); |
| | | } |
| | | |
| | | @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<EmpBaseInfo> exportList = this.empBaseInfoService.findRetirementEmpBaseInfos(request, empBaseinfo).getRecords(); |
| | | List<Map<String, Object>> 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 = "导出转正提醒员工") |
| | | @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<EmpBaseInfo> exportList = this.empBaseInfoService.findProbationEmpBaseInfos(request, empBaseinfo).getRecords(); |
| | | List<Map<String, Object>> 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); |
| | | } |
| | | |
| | | } |
| | |
| | | import cc.mrbird.febs.server.hr.annotation.ControllerEndpoint; |
| | | import cc.mrbird.febs.server.hr.entity.EmpContractInfo; |
| | | import cc.mrbird.febs.server.hr.service.IEmpContractInfoService; |
| | | import com.wuwenze.poi.ExcelKit; |
| | | import cc.mrbird.febs.server.hr.util.PoiExportExcel; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.RequiredArgsConstructor; |
| | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.validation.Valid; |
| | | import javax.validation.constraints.NotBlank; |
| | | import java.io.IOException; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | @ApiOperation(value = "导出员工") |
| | | @RequestMapping(value = "export", method = RequestMethod.POST) |
| | | @ControllerEndpoint(operation = "导出用户数据", exceptionMessage = "导出Excel失败") |
| | | public void export(QueryRequest request, EmpContractInfo empBaseinfo, HttpServletResponse response) { |
| | | request.setPageSize(this.empContractinfoService.count()); |
| | | List<EmpContractInfo> records = this.empContractinfoService.findEmpContractinfos(request, empBaseinfo).getRecords(); |
| | | ExcelKit.$Export(EmpContractInfo.class, response).downXlsx(records, false); |
| | | public void export(QueryRequest request, HttpServletResponse response,String exportField, EmpContractInfo empBaseInfo) throws IOException { |
| | | // request.setPageSize(this.empContractinfoService.count()); |
| | | // List<EmpContractInfo> records = this.empContractinfoService.findEmpContractinfos(request, empBaseinfo).getRecords(); |
| | | // ExcelKit.$Export(EmpContractInfo.class, response).downXlsx(records, false); |
| | | request.setPageSize(25535); |
| | | request.setPageNum(1); |
| | | List<EmpContractInfo> exportList = this.empContractinfoService.findRemindContractinfos(request, empBaseInfo).getRecords(); |
| | | List<Map<String, Object>> 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); |
| | | } |
| | | |
| | | @PostMapping |
| | |
| | | @TableField("deptName") |
| | | private String deptName = ""; |
| | | |
| | | @NotBlank(message = "{required}") |
| | | |
| | | @FieldInfo(name = "empNumb", type = "varchar", explain = "编号") |
| | | @TableField("empNumb") |
| | | @ExcelField(value = "编号") |
| | |
| | | package cc.mrbird.febs.server.hr.entity; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | import cc.mrbird.febs.common.core.annotation.FieldInfo; |
| | | import cc.mrbird.febs.common.core.converter.TimeConverter; |
| | | import cc.mrbird.febs.common.core.utils.DateDeSerializer; |
| | | import cc.mrbird.febs.common.core.utils.DateSerializer; |
| | | import cc.mrbird.febs.common.core.utils.DateTimeDeserializer; |
| | | import cc.mrbird.febs.common.core.utils.DateTimeSerializer; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.fasterxml.jackson.databind.annotation.JsonDeserialize; |
| | | import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
| | | import com.wuwenze.poi.annotation.Excel; |
| | | import com.wuwenze.poi.annotation.ExcelField; |
| | | import lombok.Data; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.baomidou.mybatisplus.annotation.Version; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * name:EmpContractinfo |
| | |
| | | @ExcelField(value = "身份证号码") |
| | | private String certificateNumb = ""; |
| | | |
| | | @FieldInfo(name = "signingDate", type = "date", explain = "合同签订日期") |
| | | @FieldInfo(name = "signingDate", type = "date", explain = "签订日期") |
| | | @TableField("signingDate") |
| | | @JsonSerialize(using = DateSerializer.class) |
| | | @JsonDeserialize(using = DateDeSerializer.class) |
| | |
| | | @ExcelField(value = "合同结束日期", writeConverter = TimeConverter.class) |
| | | private Date endDate; |
| | | |
| | | @FieldInfo(name = "contractPeriod", type = "varchar", explain = "合同期限(年)") |
| | | @FieldInfo(name = "contractPeriod", type = "varchar", explain = "合同期限(年)") |
| | | @TableField("contractPeriod") |
| | | @ExcelField(value = "合同期限(年)") |
| | | private String contractPeriod; |
| | |
| | | // @Version |
| | | private Integer version = 0; |
| | | |
| | | @FieldInfo(name = "diffDay", type = "varchar", explain = "距到期天数") |
| | | @TableField("diffDay") |
| | | private Integer diffDay = 0; |
| | | |
| | |
| | | private String endDateStr = ""; |
| | | |
| | | @TableField(exist = false) |
| | | @FieldInfo(name = "diffLabel", type = "varchar", explain = "到期提醒") |
| | | private String diffLabel = ""; |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | .filter(k -> DicCode.INSURANCETYPE.equals(k.getDicCode()) && k.getDicItemCode().equals(item.getInsuranceType())) |
| | | .findFirst() |
| | | .map(DicItem::getDicItemName) |
| | | .orElse("未购保险")); |
| | | item.setSexName(dicItems.stream() |
| | | .filter(k -> DicCode.SEX.equals(k.getDicCode()) && k.getDicItemCode().equals(item.getSex())) |
| | | .findFirst() |
| | | .map(DicItem::getDicItemName) |
| | | .orElse("未知")); |
| | | item.setNativePlaceName(dicItems.stream() |
| | | .filter(k -> DicCode.NATIVEPLACE.equals(k.getDicCode()) && k.getDicItemCode().equals(item.getNativePlace())) |
| | | .findFirst() |
| | | .map(DicItem::getDicItemName) |
| | | .orElse("未知")); |
| | | item.setEmpTypeName(dicItems.stream() |
| | | .filter(k -> DicCode.EMPTYPE.equals(k.getDicCode()) && k.getDicItemCode().equals(item.getEmpType())) |
| | | .findFirst() |
| | | .map(DicItem::getDicItemName) |
| | | .orElse("未知")); |
| | | item.setEducationName(dicItems.stream() |
| | | .filter(k -> DicCode.EDUCATION.equals(k.getDicCode()) && k.getDicItemCode().equals(item.getEducation())) |
| | | .findFirst() |
| | | .map(DicItem::getDicItemName) |
| | | .orElse("未知")); |
| | | }); |
| | | iPage.setRecords(list); |
| | |
| | | Page<EmpBaseInfo> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | SortUtil.handlePageSort(request, page, "birthDate", FebsConstant.ORDER_ASC, true); |
| | | |
| | | return empBaseInfoMapper.selectPageVo(page, createRetirementAlertQueryWrapper(empBaseInfo)); |
| | | IPage<EmpBaseInfo> iPage = empBaseInfoMapper.selectPageVo(page, createRetirementAlertQueryWrapper(empBaseInfo)); |
| | | List<EmpBaseInfo> list = iPage.getRecords(); |
| | | List<DicItem> dicItems = CastUtil.castList(redisService.get("dicItems"), DicItem.class); |
| | | list.forEach(item -> { |
| | | item.setSexName(dicItems.stream() |
| | | .filter(k -> DicCode.SEX.equals(k.getDicCode()) && k.getDicItemCode().equals(item.getSex())) |
| | | .findFirst() |
| | | .map(DicItem::getDicItemName) |
| | | .orElse("未知")); |
| | | }); |
| | | iPage.setRecords(list); |
| | | return iPage; |
| | | } |
| | | |
| | | @Override |