1.系统管理中系统参数增加了将配置项写入缓存的功能
2.系统管理启动时将配置项写入缓存
3.员工基本信息增加了年假字段
4.员工基本信息服务增加了计算年假的功能
10个文件已修改
136 ■■■■ 已修改文件
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpBaseInfoService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpContractInfoServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/task/ScheduledTask.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/runner/StartTask.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/ISysConfigService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/LogServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/LoginLogServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/SysConfigServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}
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();
}
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;
@@ -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);
    }
}
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));
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();
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();
    }
}
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();
}
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);
    }
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);
    }
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());
        });
    }
}