| | |
| | | return DateUtil.ageOfNow(date); |
| | | } |
| | | |
| | | private QueryWrapper<EmpBaseInfo> createInsuranceAlertQueryWrapper(EmpBaseInfo empBaseInfo) { |
| | | String[] alertInsuranceTypes = {"6", "7", "10", "13", "14"}; |
| | | |
| | | QueryWrapper<EmpBaseInfo> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("a.DelFlag", "0"); |
| | | queryWrapper.eq("a.empStatus", "0"); |
| | | queryWrapper.in("a.insuranceType", (Object[]) alertInsuranceTypes); |
| | | |
| | | int alertWomanAge = getRedisConfigWithDefault("insurance_alert_woman", 39); |
| | | int alertManAge = getRedisConfigWithDefault("insurance_alert_man", 48); |
| | | |
| | | queryWrapper.and(wrapper -> |
| | | wrapper.and(inner -> inner.eq("a.sex", "1").ge("a.age", alertManAge)) |
| | | .or(inner -> inner.eq("a.sex", "2").ge("a.age", alertWomanAge)) |
| | | ); |
| | | |
| | | |
| | | return queryWrapper; |
| | | } |
| | | |
| | | private void buildAgeCondition(QueryWrapper<EmpBaseInfo> wrapper, int manAge, int womanAge) { |
| | | wrapper.nested(inner -> inner |
| | | .gt("a.age", manAge).eq("a.sex", "1") |
| | | ).or().nested(inner -> inner |
| | | .gt("a.age", womanAge).eq("a.sex", "2") |
| | | ); |
| | | } |
| | | |
| | | private int getRedisConfigWithDefault(String key, int defaultValue) { |
| | | try { |
| | | Object value = redisService.get(key); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 统计退休提醒数量(正向计算) |
| | | */ |
| | | public Long countRetirementAlert(EmpBaseInfo empBaseInfo) { |
| | | return (long) findRetirementAlertList(empBaseInfo).size(); |
| | | } |
| | | |
| | | /** |
| | | * 计算员工的实际退休时间(正向计算) |
| | | * 方案A:法定退休时间早于2025-01时,按法定年龄退休,不延迟 |
| | | */ |
| | |
| | | |
| | | // 法定退休时间晚于等于2025-01,计算延迟 |
| | | long monthsBetween = ChronoUnit.MONTHS.between(delayStart, legalRetirement); |
| | | long delayMonths = monthsBetween / delayDivisor; |
| | | long delayMonths = (monthsBetween / delayDivisor) + 1; |
| | | |
| | | return legalRetirement.plusMonths(delayMonths); |
| | | } |