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/impl/EmpBaseInfoServiceImpl.java | 87 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 86 insertions(+), 1 deletions(-)
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