完善转正后可请假
This commit is contained in:
parent
c3f2b8f9f5
commit
975b65367d
@ -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, "出差申请不存在");
|
||||
|
@ -27,4 +27,12 @@ public interface LaborContractMapper extends BaseMapperX<LaborContractDO> {
|
||||
|
||||
@TenantIgnore
|
||||
List<FileRespVO> selectFileByUserId(@Param("mobile") String mobile);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户最早合同
|
||||
*
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
LaborContractDO getTheEarliestContract(@Param("userId") Long userId);
|
||||
}
|
||||
|
@ -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<Long> attendanceGroupShiftIds = fixedDOList.stream().map(AttendanceFixedDO::getAttendanceGroupShiftId).filter(Objects::nonNull).collect(Collectors.toList());
|
||||
if (CollUtil.isEmpty(attendanceGroupShiftIds)) {
|
||||
return respVOS;
|
||||
}
|
||||
List<AttendanceGroupShiftVO> vos = attendanceGroupShiftService.listByShiftIds(attendanceGroupShiftIds);
|
||||
Map<Long, AttendanceGroupShiftVO> 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<AttendanceRulesVO.WorkRules> rules = new ArrayList<>();
|
||||
List<AttendanceFixedDO> list = this.getByGroupId(attendanceGroupId);
|
||||
List<Long> attendanceGroupShiftIds = list.stream().map(AttendanceFixedDO::getAttendanceGroupShiftId).filter(Objects::nonNull).collect(Collectors.toList());
|
||||
if (CollUtil.isEmpty(attendanceGroupShiftIds)) {
|
||||
return rules;
|
||||
}
|
||||
List<AttendanceGroupShiftVO> vos = attendanceGroupShiftService.listByShiftIds(attendanceGroupShiftIds);
|
||||
Map<Long, AttendanceGroupShiftVO> map = vos.stream().collect(Collectors.toMap(AttendanceGroupShiftVO::getId, a -> a));
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
@ -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<Long> attendanceGroupShiftIds = selectedList.stream().map(AttendanceSchedulingDO::getAttendanceGroupShiftId).filter(Objects::nonNull).collect(Collectors.toList());
|
||||
|
||||
if (CollUtil.isEmpty(attendanceGroupShiftIds)) {
|
||||
return respVOS;
|
||||
}
|
||||
List<AttendanceGroupShiftVO> vos = attendanceGroupShiftService.listByShiftIds(attendanceGroupShiftIds);
|
||||
Map<Long, AttendanceGroupShiftVO> map = vos.stream().collect(Collectors.toMap(AttendanceGroupShiftVO::getId, a -> a));
|
||||
for (AttendanceSchedulingRespVO respVO : respVOS) {
|
||||
@ -264,6 +267,9 @@ public class AttendanceSchedulingServiceImpl implements AttendanceSchedulingServ
|
||||
|
||||
List<AttendanceRulesVO.WorkRules> rules = new ArrayList<>();
|
||||
List<Long> attendanceGroupShiftIds = list.stream().map(AttendanceSchedulingDO::getAttendanceGroupShiftId).filter(Objects::nonNull).collect(Collectors.toList());
|
||||
if (CollUtil.isEmpty(attendanceGroupShiftIds)) {
|
||||
return rules;
|
||||
}
|
||||
List<AttendanceGroupShiftVO> vos = attendanceGroupShiftService.listByShiftIds(attendanceGroupShiftIds);
|
||||
Map<Long, AttendanceGroupShiftVO> map = vos.stream().collect(Collectors.toMap(AttendanceGroupShiftVO::getId, a -> a));
|
||||
//获取到当天是第几天
|
||||
|
@ -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<HolidayBalanceSettingDO> holidayBalanceSettingDOS = holidayBalanceSettingService.getHolidayBalanceSettingByHolidaySettingIds(allList.stream().map(HolidaySettingDO::getId).collect(Collectors.toList()));
|
||||
List<HolidayBalanceSettingRespVO> holidayBalanceSettingRespVOS = BeanUtils.toBean(holidayBalanceSettingDOS, HolidayBalanceSettingRespVO.class);
|
||||
Map<Long, HolidayBalanceSettingRespVO> 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;
|
||||
|
@ -34,7 +34,8 @@ public interface LaborContractService {
|
||||
|
||||
/**
|
||||
* 批量更新合同状态
|
||||
* @param ids 主键列表
|
||||
*
|
||||
* @param ids 主键列表
|
||||
* @param status 状态
|
||||
*/
|
||||
void updateLaborContractList(List<Long> 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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户最早合同
|
||||
*
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
LaborContractDO getTheEarliestContract(Long userId);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -23,4 +23,10 @@
|
||||
AND b.telephone = #{mobile}
|
||||
AND a.fileId = c.fileId
|
||||
</select>
|
||||
</mapper>
|
||||
<select id="getTheEarliestContract"
|
||||
resultType="cn.iocoder.yudao.module.system.dal.dataobject.laborcontract.LaborContractDO">
|
||||
select *, MIN( signing_date ) from
|
||||
system_labor_contract
|
||||
where deleted = 0 and user_id = #{userId}
|
||||
</select>
|
||||
</mapper>
|
||||
|
@ -131,6 +131,7 @@
|
||||
<where>
|
||||
a.deleted = 0
|
||||
and a.user_type = 1
|
||||
and a.status = 0
|
||||
<if test="vo.username != null and vo.username != ''">
|
||||
and a.username like concat('%', #{vo.username}, '%')
|
||||
</if>
|
||||
|
Loading…
Reference in New Issue
Block a user