From 538bdd36e4e0c43333e8090dab575cfa87af8f80 Mon Sep 17 00:00:00 2001
From: yubo <autumnal_wind@yeah.net>
Date: 星期二, 10 三月 2026 21:25:30 +0800
Subject: [PATCH] feat(hr): 添加员工导出和字典映射支持

---
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpBaseInfoController.java     |   28 ++++++++++++++
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java                   |    2 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpContractInfo.java               |   22 +++++------
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpContractInfoController.java |   21 ++++++++--
 febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/constant/DicCode.java                 |    5 ++
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java  |   33 ++++++++++++++++
 6 files changed, 92 insertions(+), 19 deletions(-)

diff --git a/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/constant/DicCode.java b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/constant/DicCode.java
index 578a935..266c59e 100644
--- a/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/constant/DicCode.java
+++ b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/constant/DicCode.java
@@ -96,4 +96,9 @@
      * 转正状态
      */
     public final static String PROBATIONS_TATUS = "probationStatus";
+    /**
+     * 性别
+     */
+    public final static String SEX = "sex";
+
 }
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpBaseInfoController.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpBaseInfoController.java
index 077c595..dfeef64 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpBaseInfoController.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpBaseInfoController.java
@@ -348,4 +348,32 @@
         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);
+    }
+
 }
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpContractInfoController.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpContractInfoController.java
index 03f4a7a..2407892 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpContractInfoController.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpContractInfoController.java
@@ -7,7 +7,8 @@
 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;
@@ -19,6 +20,8 @@
 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;
 
@@ -64,10 +67,18 @@
     @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
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java
index 43f3c39..ce8cab6 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java
@@ -55,7 +55,7 @@
     @TableField("deptName")
     private String deptName = "";
 
-    @NotBlank(message = "{required}")
+
     @FieldInfo(name = "empNumb", type = "varchar", explain = "编号")
     @TableField("empNumb")
     @ExcelField(value = "编号")
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpContractInfo.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpContractInfo.java
index b48fd74..9767438 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpContractInfo.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpContractInfo.java
@@ -1,24 +1,23 @@
 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
@@ -63,7 +62,7 @@
     @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)
@@ -79,7 +78,7 @@
     @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;
@@ -171,6 +170,7 @@
     // @Version
     private Integer version = 0;
 
+    @FieldInfo(name = "diffDay", type = "varchar", explain = "距到期天数")
     @TableField("diffDay")
     private Integer diffDay = 0;
 
@@ -184,8 +184,6 @@
     private String endDateStr = "";
 
     @TableField(exist = false)
+    @FieldInfo(name = "diffLabel", type = "varchar", explain = "到期提醒")
     private String diffLabel = "";
-
-
-
 }
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
index 2f8623a..1373f36 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
@@ -1507,6 +1507,26 @@
                     .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);
@@ -1518,7 +1538,18 @@
         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

--
Gitblit v1.8.0