From d7b6f020d3b6cce69f19f5198da95513c5d57b32 Mon Sep 17 00:00:00 2001
From: luoyb <412940104@qq.com>
Date: 星期二, 23 九月 2025 21:53:14 +0800
Subject: [PATCH] 1.系统管理中系统参数增加了将配置项写入缓存的功能 2.系统管理启动时将配置项写入缓存 3.员工基本信息增加了年假字段 4.员工基本信息服务增加了计算年假的功能
---
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpBaseInfoService.java | 21 +++++++
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpContractInfoServiceImpl.java | 2
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/ISysConfigService.java | 5 +
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java | 6 +-
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/task/ScheduledTask.java | 8 +-
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/LogServiceImpl.java | 2
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/LoginLogServiceImpl.java | 2
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java | 70 ++++++++++++++++++++++-
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/runner/StartTask.java | 6 +
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/SysConfigServiceImpl.java | 16 +++++
10 files changed, 123 insertions(+), 15 deletions(-)
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 a6a89a1..e8c0388 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
@@ -432,7 +432,7 @@
@TableField("allDeptName")
private String allDeptName = "";
- // @FieldInfo(name = "dimissRemark", type = "varchar", explain = "离职备注")
- // @TableField("dimissRemark")
- // private String dimissRemark = "";
+ @FieldInfo(name = "annualLeave", type = "int", explain = "年假天数")
+ @TableField("annualLeave")
+ private Integer annualLeave = 0;
}
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 8e6bfa0..6397fcc 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
@@ -223,5 +223,26 @@
* @return boolean
*/
boolean updateEmpAge(String userId);
+
boolean updateDeptName();
+
+ /**
+ * 更新指定员工的年假信息
+ * @param userId 员工Id
+ */
+ void updateAnnualLeave(String userId);
+
+ /**
+ * 更新所有人员的年假信息
+ */
+ void updateAnnualLeave();
+
+ /**
+ * 更新员工的一些关键信息,主要提供给定时任务用,目前已提供
+ * <p>
+ * 1.更新员工年龄
+ * 2.更新员工年假
+ */
+ void updateEmpBaseKeyInfo();
+
}
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 3c12d33..d37361d 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
@@ -28,6 +28,7 @@
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -667,7 +668,7 @@
}
}
-// @Override
+ // @Override
public void getImage(String empId, HttpServletResponse response) throws Exception {
EmpBaseInfo empBaseInfo = this.getById(empId);
if (StrUtil.isBlank(empBaseInfo.getImagePath())) {
@@ -1448,12 +1449,75 @@
} else {
empBaseInfoList = this.list();
}
- if (empBaseInfoList.size() > 0) {
- empBaseInfoList.forEach(p -> {
+ if (!empBaseInfoList.isEmpty()) {
+ empBaseInfoList.parallelStream().forEach(p -> {
p.setAge(DateUtil.ageOfNow(p.getBirthdate()));
this.saveOrUpdate(p);
});
}
return false;
}
+
+ @Override
+ public void updateAnnualLeave(String userId) {
+ EmpBaseInfo empBaseInfo = this.getById(userId);
+ int holiday = calculateHoliday(empBaseInfo.getEntryDate());
+ empBaseInfo.setAnnualLeave(holiday);
+ baseMapper.update(null, new LambdaUpdateWrapper<EmpBaseInfo>()
+ .set(EmpBaseInfo::getAnnualLeave, holiday)
+ .eq(EmpBaseInfo::getEmpId, empBaseInfo.getEmpId()));
+ }
+
+ @Override
+ public void updateAnnualLeave() {
+ List<EmpBaseInfo> list = this.list();
+ list.parallelStream().forEach(p -> {
+ int holiday = calculateHoliday(p.getEntryDate());
+ p.setAnnualLeave(holiday);
+ baseMapper.update(null, new LambdaUpdateWrapper<EmpBaseInfo>()
+ .set(EmpBaseInfo::getAnnualLeave, holiday)
+ .eq(EmpBaseInfo::getEmpId, p.getEmpId()));
+ });
+ }
+
+ @Override
+ public void updateEmpBaseKeyInfo() {
+ List<EmpBaseInfo> list = this.list();
+ list.parallelStream().forEach(p -> {
+ int holiday = calculateHoliday(p.getEntryDate());
+ int age = calculateAge(p.getBirthdate());
+
+ baseMapper.update(null, new LambdaUpdateWrapper<EmpBaseInfo>()
+ .set(EmpBaseInfo::getAnnualLeave, holiday)
+ .set(EmpBaseInfo::getAge, age)
+ .eq(EmpBaseInfo::getEmpId, p.getEmpId()));
+ });
+ }
+
+ /**
+ * 根据设置的参数计算员工的年假
+ * @param date 入职日期
+ * @return 年假天数
+ */
+ private int calculateHoliday(Date date) {
+ int holiday = 0;
+ int joinYear = DateUtil.ageOfNow(date);
+ String configValue = redisService.get("annual_leave").toString();
+ String[] values = StrUtil.split(configValue, "|");
+ String[] condition = StrUtil.split(values[0], ",");
+ String[] days = StrUtil.split(values[1], ",");
+ if (condition.length == 2) {
+ int one = Integer.parseInt(condition[0]);
+ int two = Integer.parseInt(condition[1]);
+ if (joinYear >= one && joinYear < two) {
+ holiday = Integer.parseInt(days[0]);
+ } else if (joinYear >= two) {
+ holiday = Integer.parseInt(days[1]);
+ }
+ }
+ return holiday;
+ }
+ private int calculateAge(Date date){
+ return DateUtil.ageOfNow(date);
+ }
}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpContractInfoServiceImpl.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpContractInfoServiceImpl.java
index 9299d50..606ab46 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpContractInfoServiceImpl.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpContractInfoServiceImpl.java
@@ -272,7 +272,7 @@
queryWrapper.eq("a.DelFlag", empContractinfo.getDelFlag());
queryWrapper.eq("a.remindFlag", 0);
queryWrapper.in("a.contractStatus", contractStatus);
- queryWrapper.between("a.diffDay", -diffDay, diffDay);
+ queryWrapper.le("a.diffDay", diffDay);
queryWrapper.ge("a.endDate", DateUtil.formatDate(new Date()));
queryWrapper.in("c.dept_Id", remoteDeptService.userRightDepts().split(StringConstant.COMMA));
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/task/ScheduledTask.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/task/ScheduledTask.java
index 92d580e..2028a8d 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/task/ScheduledTask.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/task/ScheduledTask.java
@@ -37,7 +37,7 @@
*/
@Scheduled(cron = "0 0 1 * * ?")
public void calculateSeniority(){
- log.info("每天凌晨1点计算一次工龄");
+ log.info("每天凌晨1点计算工龄");
empBaseInfoService.updateSeniority();
}
@@ -56,12 +56,12 @@
}
@Scheduled(cron = "0 0 4 * * ?")
public void autoCalculateAge(){
- log.info("每天凌晨4点自动更新年龄");
- String userId = "";
- empBaseInfoService.updateEmpAge(userId);
+ log.info("每天凌晨4点自动更新年龄和年假");
+ empBaseInfoService.updateEmpBaseKeyInfo();
}
@Override
public void run(String... args) throws Exception {
+ empBaseInfoService.updateEmpBaseKeyInfo();
//calculateSeniority();
// autoStopContract();
//autoCalculateAge();
diff --git a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/runner/StartTask.java b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/runner/StartTask.java
index 839dd02..8fa8023 100644
--- a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/runner/StartTask.java
+++ b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/runner/StartTask.java
@@ -2,6 +2,7 @@
import cc.mrbird.febs.server.system.service.IDeptService;
import cc.mrbird.febs.server.system.service.IDicItemService;
+import cc.mrbird.febs.server.system.service.ISysConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@@ -21,15 +22,18 @@
public class StartTask implements CommandLineRunner {
private final IDicItemService dicItemService;
private final IDeptService deptService;
+ private final ISysConfigService sysConfigService;
- public StartTask(IDicItemService dicItemService, IDeptService deptService) {
+ public StartTask(IDicItemService dicItemService, IDeptService deptService, ISysConfigService sysConfigService) {
this.dicItemService = dicItemService;
this.deptService = deptService;
+ this.sysConfigService = sysConfigService;
}
@Override
public void run(String... args) throws Exception {
dicItemService.setDicItemRedis();
deptService.setDeptRedis();
+ sysConfigService.setConfigInfoToRedis();
}
}
diff --git a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/ISysConfigService.java b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/ISysConfigService.java
index 4780856..b07b8b8 100644
--- a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/ISysConfigService.java
+++ b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/ISysConfigService.java
@@ -77,5 +77,10 @@
* @author: luoyibo
*/
Void setContractRemindToRedis();
+
+ /**
+ * 将年假计算天数设置到redis中
+ */
+ void setConfigInfoToRedis();
}
diff --git a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/LogServiceImpl.java b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/LogServiceImpl.java
index fb4c1d0..b0c09ce 100644
--- a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/LogServiceImpl.java
+++ b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/LogServiceImpl.java
@@ -53,7 +53,7 @@
}
Page<Log> page = new Page<>(request.getPageNum(), request.getPageSize());
- SortUtil.handlePageSort(request, page, "createTime", FebsConstant.ORDER_DESC, true);
+ SortUtil.handlePageSort(request, page, "CREATE_TIME", FebsConstant.ORDER_DESC, true);
return this.page(page, queryWrapper);
}
diff --git a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/LoginLogServiceImpl.java b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/LoginLogServiceImpl.java
index 1074d33..4b77b22 100644
--- a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/LoginLogServiceImpl.java
+++ b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/LoginLogServiceImpl.java
@@ -42,7 +42,7 @@
}
Page<LoginLog> page = new Page<>(request.getPageNum(), request.getPageSize());
- SortUtil.handlePageSort(request, page, "loginTime", FebsConstant.ORDER_DESC, true);
+ SortUtil.handlePageSort(request, page, "LOGIN_TIME", FebsConstant.ORDER_DESC, true);
return this.page(page, queryWrapper);
}
diff --git a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/SysConfigServiceImpl.java b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/SysConfigServiceImpl.java
index a7b8313..06904e4 100644
--- a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/SysConfigServiceImpl.java
+++ b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/SysConfigServiceImpl.java
@@ -119,8 +119,22 @@
sysConfigQueryWrapper.eq("config_key", "contract_remind");
SysConfig sysConfig = sysConfigMapper.selectOne(sysConfigQueryWrapper);
- redisService.set("diffDay", sysConfig.getConfigValue());
+ redisService.set("contract_remind", sysConfig.getConfigValue());
return null;
}
+
+ @Override
+ public void setConfigInfoToRedis() {
+ QueryWrapper<SysConfig> sysConfigQueryWrapper = new QueryWrapper<>();
+ sysConfigQueryWrapper.eq("delFlag", "0");
+ //SysConfig sysConfig = sysConfigMapper.selectOne(sysConfigQueryWrapper);
+
+ List<SysConfig> list = sysConfigMapper.selectList(sysConfigQueryWrapper);
+
+ list.forEach(sysConfig -> {
+ redisService.set(sysConfig.getConfigKey(), sysConfig.getConfigValue());
+ });
+
+ }
}
--
Gitblit v1.8.0