From 35cfaa7259f3d494e7bd03aec5c7e035049ee19b Mon Sep 17 00:00:00 2001
From: yubo <autumnal_wind@yeah.net>
Date: 星期三, 24 九月 2025 19:34:09 +0800
Subject: [PATCH] feat: 新增社保档位提醒功能
---
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpBaseInfoService.java | 14 +++-
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpBaseInfoController.java | 22 +++++++
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java | 87 ++++++++++++++++++++++++++++
3 files changed, 116 insertions(+), 7 deletions(-)
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 eb19d36..f9bb82a 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
@@ -22,7 +22,6 @@
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -292,4 +291,25 @@
throw new FebsException(message);
}
}
+
+ @ApiOperation(value = "社保提醒人员基本信息翻页列表")
+ @GetMapping("insurance/alert")
+ @PreAuthorize("hasAuthority('empBaseinfo:list')")
+ public FebsResponse insuranceAlertEmpBaseInfoList(QueryRequest request, EmpBaseInfo empBaseinfo) {
+ Map<String, Object> dataTable = FebsUtil.getDataTable(this.empBaseInfoService.findInsuranceEmpBaseInfos(request, empBaseinfo));
+ return new FebsResponse().data(dataTable);
+ }
+ @ApiOperation(value = "导出员工")
+ @RequestMapping(value = "export/insurance",method= RequestMethod.POST)
+ @ControllerEndpoint(operation = "导出社保提醒数据", exceptionMessage = "导出Excel失败")
+ public void exportInsuranceWithField(QueryRequest request, HttpServletResponse response, String exportField,EmpBaseInfo empBaseinfo) throws IOException {
+ request.setPageSize(25535);
+ request.setPageNum(1);
+ List<EmpBaseInfo> exportList = this.empBaseInfoService.findInsuranceEmpBaseInfos(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/service/IEmpBaseInfoService.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpBaseInfoService.java
index 6397fcc..a3bfce3 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpBaseInfoService.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpBaseInfoService.java
@@ -1,18 +1,14 @@
package cc.mrbird.febs.server.hr.service;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
import cc.mrbird.febs.common.core.entity.system.DicItem;
import cc.mrbird.febs.common.core.exception.FebsException;
import cc.mrbird.febs.server.hr.entity.*;
-
-import cc.mrbird.febs.common.core.entity.QueryRequest;
-import cc.mrbird.febs.server.hr.entity.EmpDimissionLog;
-import cc.mrbird.febs.server.hr.entity.EmpJobChange;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletResponse;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@@ -245,4 +241,12 @@
*/
void updateEmpBaseKeyInfo();
+ /**
+ * 查询社保档位提醒员工 查询(分页)
+ *
+ * @param request QueryRequest
+ * @param empBaseInfo empBaseinfo
+ * @return IPage<EmpBaseinfo>
+ */
+ IPage<EmpBaseInfo> findInsuranceEmpBaseInfos(QueryRequest request, EmpBaseInfo empBaseInfo);
}
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 d37361d..d1a12eb 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
@@ -1494,8 +1494,27 @@
});
}
+ @Override
+ public IPage<EmpBaseInfo> findInsuranceEmpBaseInfos(QueryRequest request, EmpBaseInfo empBaseInfo) {
+ Page<EmpBaseInfo> page = new Page<>(request.getPageNum(), request.getPageSize());
+ SortUtil.handlePageSort(request, page, "entryDate", FebsConstant.ORDER_ASC, true);
+ IPage<EmpBaseInfo> iPage = empBaseInfoMapper.selectPageVo(page, createInsuranceAlertQueryWrapper(empBaseInfo));
+ List<EmpBaseInfo> list = iPage.getRecords();
+ List<DicItem> dicItems = CastUtil.castList(redisService.get("dicItems"), DicItem.class);
+ list.forEach(item -> {
+ item.setInsuranceTypeName(dicItems.stream()
+ .filter(k -> DicCode.INSURANCETYPE.equals(k.getDicCode()) && k.getDicItemCode().equals(item.getInsuranceType()))
+ .findFirst()
+ .map(DicItem::getDicItemName)
+ .orElse("未知"));
+ });
+ iPage.setRecords(list);
+ return iPage;
+ }
+
/**
* 根据设置的参数计算员工的年假
+ *
* @param date 入职日期
* @return 年假天数
*/
@@ -1517,7 +1536,73 @@
}
return holiday;
}
- private int calculateAge(Date date){
+
+ private int calculateAge(Date date) {
return DateUtil.ageOfNow(date);
}
+
+ private QueryWrapper<EmpBaseInfo> createInsuranceAlertQueryWrapper(EmpBaseInfo empBaseInfo) {
+ QueryWrapper<EmpBaseInfo> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("a.DelFlag", 0);
+ //人员的状态,0-在职 1-离职 2-退休
+ queryWrapper.eq("a.empStatus", "0");
+ if (StringUtils.isNotBlank(empBaseInfo.getSex())) {
+ queryWrapper.in("a.sex", empBaseInfo.getSex());
+ }
+ //男,1 女,2 (非深户)四险二档,6(非深户)四险一档,7
+ int four_one_woman = Integer.parseInt(redisService.get("four_one_woman").toString());
+ int four_one_man = Integer.parseInt(redisService.get("four_one_man").toString());
+ int four_two_woman = Integer.parseInt(redisService.get("four_two_woman").toString());
+ int four_two_man = Integer.parseInt(redisService.get("four_two_man").toString());
+
+ if (StringUtils.isBlank(empBaseInfo.getInsuranceType())) {
+ queryWrapper.and(wrapper -> wrapper
+ .nested(inner -> inner
+ .eq("a.insuranceType", "6") // insuranceType = '6'
+ .and(nestedInner -> nestedInner
+ .nested(ageSexWrapper -> ageSexWrapper
+ .gt("a.age", four_two_man) // age > 55
+ .eq("a.sex", "1") // sex = '1'
+ ).or().nested(ageSexWrapper -> ageSexWrapper
+ .gt("a.age", four_two_woman) // age > 46
+ .eq("a.sex", "2") // sex = '2'
+ )
+ )
+ ).or().nested(inner -> inner
+ .eq("a.insuranceType", "7") // insuranceType = '7'
+ .and(nestedInner -> nestedInner
+ .nested(ageSexWrapper -> ageSexWrapper
+ .gt("a.age", four_one_man) // age > 45
+ .eq("a.sex", "1") // sex = '1'
+ ).or().nested(ageSexWrapper -> ageSexWrapper
+ .gt("a.age", four_one_woman) // age > 39
+ .eq("a.sex", "2") // sex = '2'
+ )
+ )
+ )
+ );
+ } else {
+ queryWrapper.eq("a.insuranceType", empBaseInfo.getInsuranceType());
+ if (empBaseInfo.getInsuranceType().equals("7")) {
+ queryWrapper.and(wrapper -> wrapper.nested(inner -> inner
+ .gt("a.age", four_one_man) // age > 45
+ .eq("a.sex", "1") // sex='1'
+ ).or().nested(inner -> inner
+ .gt("a.age", four_one_woman) // age > 39
+ .eq("a.sex", "2") // sex='2'
+ ));
+ } else if (empBaseInfo.getInsuranceType().equals("6")) {
+ queryWrapper.and(wrapper -> wrapper.nested(inner -> inner
+ .gt("a.age", four_two_man) // age > 55
+ .eq("a.sex", "1") // sex='1'
+ ).or().nested(inner -> inner
+ .gt("a.age", four_two_woman) // age > 46
+ .eq("a.sex", "2") // sex='2'
+ ));
+ }
+
+ }
+ //queryWrapper.in("c.dept_Id", remoteDeptService.userRightDepts().split(StringConstant.COMMA));
+ return queryWrapper;
+ }
}
--
Gitblit v1.8.0