From 975b65367d5879bad88d2e33206d962ef3dea550 Mon Sep 17 00:00:00 2001 From: aikai Date: Wed, 13 Nov 2024 11:10:34 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=BD=AC=E6=AD=A3?= =?UTF-8?q?=E5=90=8E=E5=8F=AF=E8=AF=B7=E5=81=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/bpm/enums/ErrorCodeConstants.java | 1 + .../laborcontract/LaborContractMapper.java | 10 +++++++++- .../fixed/AttendanceFixedServiceImpl.java | 7 +++++++ .../AttendanceSchedulingServiceImpl.java | 8 +++++++- .../HolidaySettingServiceImpl.java | 19 +++++++++++++++++++ .../laborcontract/LaborContractService.java | 17 +++++++++++++++-- .../LaborContractServiceImpl.java | 5 +++++ .../laborcontract/LaborContractMapper.xml | 8 +++++++- .../resources/mapper/user/AdminUserMapper.xml | 1 + 9 files changed, 71 insertions(+), 5 deletions(-) diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java index 673a6073..6fce4f63 100644 --- a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java +++ b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java @@ -31,6 +31,7 @@ public interface ErrorCodeConstants { ErrorCode ABNORMAL_ACCESS_TO_ATTENDANCE_RECORDS = new ErrorCode(1_009_001_016, "获取考勤记录异常"); ErrorCode OVERTIME_REQUESTS_ALREADY_EXIST_FOR_THE_SAME_TIME_PERIOD = new ErrorCode(1_009_001_018, "已存在相同时间段的加班申请"); ErrorCode THE_CURRENT_USERS_ATTENDANCE_GROUP_HAS_NOT_SET_OVERTIME_RULES = new ErrorCode(1_009_001_019, "当前用户所在考勤组未设置加班规则"); + ErrorCode THE_LEAVE_PROCESS_CANNOT_BE_USED_WITHOUT_SIGNING_THE_CONTRACT = new ErrorCode(1_009_001_020, "合同未签约不可使用请假流程,请联系管理员"); ErrorCode OA_REIMBURSEMENT_NOT_EXISTS = new ErrorCode(1_009_001_100, "报销申请不存在"); ErrorCode OA_EVECTION_NOT_EXISTS = new ErrorCode(1_009_001_101, "出差申请不存在"); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/laborcontract/LaborContractMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/laborcontract/LaborContractMapper.java index b05ba555..1c44f45d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/laborcontract/LaborContractMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/laborcontract/LaborContractMapper.java @@ -27,4 +27,12 @@ public interface LaborContractMapper extends BaseMapperX { @TenantIgnore List selectFileByUserId(@Param("mobile") String mobile); -} \ No newline at end of file + + /** + * 获取用户最早合同 + * + * @param userId + * @return + */ + LaborContractDO getTheEarliestContract(@Param("userId") Long userId); +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/fixed/AttendanceFixedServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/fixed/AttendanceFixedServiceImpl.java index dc25d2dd..740f4c20 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/fixed/AttendanceFixedServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/fixed/AttendanceFixedServiceImpl.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.system.service.attendance.fixed; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.iocoder.yudao.framework.common.Constants; @@ -210,6 +211,9 @@ public class AttendanceFixedServiceImpl implements AttendanceFixedService, Punch if (!fixedDOList.isEmpty()) { respVOS = BeanUtils.toBean(fixedDOList, AttendanceFixedRespVO.class); List attendanceGroupShiftIds = fixedDOList.stream().map(AttendanceFixedDO::getAttendanceGroupShiftId).filter(Objects::nonNull).collect(Collectors.toList()); + if (CollUtil.isEmpty(attendanceGroupShiftIds)) { + return respVOS; + } List vos = attendanceGroupShiftService.listByShiftIds(attendanceGroupShiftIds); Map map = vos.stream().collect(Collectors.toMap(AttendanceGroupShiftVO::getId, a -> a)); for (AttendanceFixedRespVO respVO : respVOS) { @@ -263,6 +267,9 @@ public class AttendanceFixedServiceImpl implements AttendanceFixedService, Punch List rules = new ArrayList<>(); List list = this.getByGroupId(attendanceGroupId); List attendanceGroupShiftIds = list.stream().map(AttendanceFixedDO::getAttendanceGroupShiftId).filter(Objects::nonNull).collect(Collectors.toList()); + if (CollUtil.isEmpty(attendanceGroupShiftIds)) { + return rules; + } List vos = attendanceGroupShiftService.listByShiftIds(attendanceGroupShiftIds); Map map = vos.stream().collect(Collectors.toMap(AttendanceGroupShiftVO::getId, a -> a)); LocalDateTime now = LocalDateTime.now(); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/scheduling/AttendanceSchedulingServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/scheduling/AttendanceSchedulingServiceImpl.java index 6605d57b..5bd24ca1 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/scheduling/AttendanceSchedulingServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/scheduling/AttendanceSchedulingServiceImpl.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.system.service.attendance.scheduling; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.StrUtil; @@ -202,7 +203,9 @@ public class AttendanceSchedulingServiceImpl implements AttendanceSchedulingServ if (!selectedList.isEmpty()) { respVOS = BeanUtils.toBean(selectedList, AttendanceSchedulingRespVO.class); List attendanceGroupShiftIds = selectedList.stream().map(AttendanceSchedulingDO::getAttendanceGroupShiftId).filter(Objects::nonNull).collect(Collectors.toList()); - + if (CollUtil.isEmpty(attendanceGroupShiftIds)) { + return respVOS; + } List vos = attendanceGroupShiftService.listByShiftIds(attendanceGroupShiftIds); Map map = vos.stream().collect(Collectors.toMap(AttendanceGroupShiftVO::getId, a -> a)); for (AttendanceSchedulingRespVO respVO : respVOS) { @@ -264,6 +267,9 @@ public class AttendanceSchedulingServiceImpl implements AttendanceSchedulingServ List rules = new ArrayList<>(); List attendanceGroupShiftIds = list.stream().map(AttendanceSchedulingDO::getAttendanceGroupShiftId).filter(Objects::nonNull).collect(Collectors.toList()); + if (CollUtil.isEmpty(attendanceGroupShiftIds)) { + return rules; + } List vos = attendanceGroupShiftService.listByShiftIds(attendanceGroupShiftIds); Map map = vos.stream().collect(Collectors.toMap(AttendanceGroupShiftVO::getId, a -> a)); //获取到当天是第几天 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/holiday/holidaysetting/HolidaySettingServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/holiday/holidaysetting/HolidaySettingServiceImpl.java index 4613c471..f828ebca 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/holiday/holidaysetting/HolidaySettingServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/holiday/holidaysetting/HolidaySettingServiceImpl.java @@ -19,6 +19,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.holiday.holidaysetting.Holi import cn.iocoder.yudao.module.system.dal.dataobject.holiday.holidaysettingrange.HolidaySettingRangeDO; import cn.iocoder.yudao.module.system.dal.dataobject.holiday.holidayuser.HolidayUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.holiday.holidayworkingage.HolidayWorkingAgeDO; +import cn.iocoder.yudao.module.system.dal.dataobject.laborcontract.LaborContractDO; import cn.iocoder.yudao.module.system.dal.mysql.holiday.holidaybalancesetting.HolidayBalanceSettingMapper; import cn.iocoder.yudao.module.system.dal.mysql.holiday.holidaysetting.HolidaySettingMapper; import cn.iocoder.yudao.module.system.dal.mysql.holiday.holidaysettingrange.HolidaySettingRangeMapper; @@ -28,6 +29,7 @@ import cn.iocoder.yudao.module.system.service.holiday.holidaybalancesetting.Holi import cn.iocoder.yudao.module.system.service.holiday.holidaysettingrange.HolidaySettingRangeService; import cn.iocoder.yudao.module.system.service.holiday.holidayuserrecord.HolidayUserRecordService; import cn.iocoder.yudao.module.system.service.holiday.holidayworkingage.HolidayWorkingAgeService; +import cn.iocoder.yudao.module.system.service.laborcontract.LaborContractService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.extern.slf4j.Slf4j; @@ -42,6 +44,9 @@ import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.THE_LEAVE_PROCESS_CANNOT_BE_USED_WITHOUT_SIGNING_THE_CONTRACT; + /** * 假期设置 Service 实现类 * @@ -70,6 +75,8 @@ public class HolidaySettingServiceImpl implements HolidaySettingService { private HolidayUserRecordService holidayUserRecordService; @Resource private HolidayUserMapper holidayUserMapper; + @Resource + private LaborContractService laborContractService; @Override public Long createHolidaySetting(HolidaySettingSaveReqVO createReqVO) { @@ -242,9 +249,21 @@ public class HolidaySettingServiceImpl implements HolidaySettingService { List holidayBalanceSettingDOS = holidayBalanceSettingService.getHolidayBalanceSettingByHolidaySettingIds(allList.stream().map(HolidaySettingDO::getId).collect(Collectors.toList())); List holidayBalanceSettingRespVOS = BeanUtils.toBean(holidayBalanceSettingDOS, HolidayBalanceSettingRespVO.class); Map holidayBalanceSettingRespVOMap = holidayBalanceSettingRespVOS.stream().collect(Collectors.toMap(HolidayBalanceSettingRespVO::getHolidaySettingId, Function.identity())); + //获取当前登录用户最早的合同 - 获取到 + LaborContractDO laborContractDO = laborContractService.getTheEarliestContract(userId); + if (laborContractDO == null) { + throw exception(THE_LEAVE_PROCESS_CANNOT_BE_USED_WITHOUT_SIGNING_THE_CONTRACT); + } for (HolidaySettingRespVO vo : vos) { HolidayBalanceSettingRespVO holidayBalanceSettingRespVO = holidayBalanceSettingRespVOMap.get(vo.getId()); HolidayUserDO holidayUserDO = HolidayUserMap.get(vo.getId()); + // -- 如果是转正后才可以请假 - 判断用户是否已经转正 - 如果未转正则过滤掉 + if (vo.getNewEmployeeLeaveType() == 2) { + LocalDateTime becomeARegularWorkerTime = laborContractDO.getSigningDate().atStartOfDay().plusMonths(laborContractDO.getProbationPeriodTime() == null ? 0 : laborContractDO.getProbationPeriodTime()); + if (LocalDateTime.now().isBefore(becomeARegularWorkerTime)) { + continue; + } + } // -- 过滤掉不适用的 if ((holidayBalanceSettingRespVO != null && holidayBalanceSettingRespVO.getStatus() == 1) && holidayUserDO == null) { continue; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/laborcontract/LaborContractService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/laborcontract/LaborContractService.java index d78f804e..33639c5c 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/laborcontract/LaborContractService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/laborcontract/LaborContractService.java @@ -34,7 +34,8 @@ public interface LaborContractService { /** * 批量更新合同状态 - * @param ids 主键列表 + * + * @param ids 主键列表 * @param status 状态 */ void updateLaborContractList(List ids, Integer status); @@ -64,6 +65,7 @@ public interface LaborContractService { /** * 获得用户历史签约信息 + * * @param userId 用户编号 * @return 合同信息列表 */ @@ -71,6 +73,7 @@ public interface LaborContractService { /** * 获得指定用户的签约信息列表 + * * @param userIds 用户编号列表 * @return 签约信息列表 */ @@ -78,6 +81,7 @@ public interface LaborContractService { /** * 获得 到期日期小于指定日期的合同列表 + * * @param now 日期 * @return 合同列表 */ @@ -85,8 +89,17 @@ public interface LaborContractService { /** * 获得当前登录用户的入职时间和转正时间 + * * @param userId 用户编号 * @return 日期 */ LaborContractDO getSigningDate(Long userId); -} \ No newline at end of file + + /** + * 获取用户最早合同 + * + * @param userId + * @return + */ + LaborContractDO getTheEarliestContract(Long userId); +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/laborcontract/LaborContractServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/laborcontract/LaborContractServiceImpl.java index a99c1c7a..b79881d7 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/laborcontract/LaborContractServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/laborcontract/LaborContractServiceImpl.java @@ -160,4 +160,9 @@ public class LaborContractServiceImpl implements LaborContractService { return CollectionUtil.isEmpty(list) ? null : list.get(0); } + + @Override + public LaborContractDO getTheEarliestContract(Long userId) { + return laborContractMapper.getTheEarliestContract(userId); + } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/laborcontract/LaborContractMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/laborcontract/LaborContractMapper.xml index 03329061..d42a3258 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/laborcontract/LaborContractMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/laborcontract/LaborContractMapper.xml @@ -23,4 +23,10 @@ AND b.telephone = #{mobile} AND a.fileId = c.fileId - \ No newline at end of file + + diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/AdminUserMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/AdminUserMapper.xml index 07fe40a0..67eaa202 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/AdminUserMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/AdminUserMapper.xml @@ -131,6 +131,7 @@ a.deleted = 0 and a.user_type = 1 + and a.status = 0 and a.username like concat('%', #{vo.username}, '%') From dc0613a531f17f9223b3014eba513df33dc5ae81 Mon Sep 17 00:00:00 2001 From: aikai Date: Wed, 13 Nov 2024 16:17:29 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=9B=BA=E5=AE=9A=E9=A2=9D=E5=BA=A6?= =?UTF-8?q?=E9=A6=96=E6=AC=A1=E5=8F=91=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../holidayuserrecord/HolidayUserRecordServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/holiday/holidayuserrecord/HolidayUserRecordServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/holiday/holidayuserrecord/HolidayUserRecordServiceImpl.java index f6faa4ab..5e1d14dc 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/holiday/holidayuserrecord/HolidayUserRecordServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/holiday/holidayuserrecord/HolidayUserRecordServiceImpl.java @@ -665,6 +665,10 @@ public class HolidayUserRecordServiceImpl implements HolidayUserRecordService { quotaMap.put(user.getId(), map); } } + } else if (holidayBalanceSettingDO.getType() == 3) { + for (AdminUserDO user : users) { + quotaMap.put(user.getId(), Collections.singletonMap(now, new BigDecimal(holidayBalanceSettingDO.getQuota().toString()))); + } } else { // --- 如果都不是都话 默认为0 quotaMap = users.stream() From 8f22c874518eadfdf1c22bdebcc7fdf658c45152 Mon Sep 17 00:00:00 2001 From: aikai Date: Thu, 14 Nov 2024 09:31:05 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java index 6fce4f63..ac213bfd 100644 --- a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java +++ b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java @@ -31,7 +31,7 @@ public interface ErrorCodeConstants { ErrorCode ABNORMAL_ACCESS_TO_ATTENDANCE_RECORDS = new ErrorCode(1_009_001_016, "获取考勤记录异常"); ErrorCode OVERTIME_REQUESTS_ALREADY_EXIST_FOR_THE_SAME_TIME_PERIOD = new ErrorCode(1_009_001_018, "已存在相同时间段的加班申请"); ErrorCode THE_CURRENT_USERS_ATTENDANCE_GROUP_HAS_NOT_SET_OVERTIME_RULES = new ErrorCode(1_009_001_019, "当前用户所在考勤组未设置加班规则"); - ErrorCode THE_LEAVE_PROCESS_CANNOT_BE_USED_WITHOUT_SIGNING_THE_CONTRACT = new ErrorCode(1_009_001_020, "合同未签约不可使用请假流程,请联系管理员"); + ErrorCode THE_LEAVE_PROCESS_CANNOT_BE_USED_WITHOUT_SIGNING_THE_CONTRACT = new ErrorCode(1_009_001_020, "合同未签约不可使用请假流程,请悉知"); ErrorCode OA_REIMBURSEMENT_NOT_EXISTS = new ErrorCode(1_009_001_100, "报销申请不存在"); ErrorCode OA_EVECTION_NOT_EXISTS = new ErrorCode(1_009_001_101, "出差申请不存在");