考勤组bug修改

This commit is contained in:
dy 2025-07-23 16:20:25 +08:00
parent 350b8f511c
commit 5da0665092
3 changed files with 38 additions and 39 deletions

View File

@ -9,6 +9,7 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import org.dromara.property.domain.AttendanceWeekSet;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -51,7 +52,8 @@ public class AttendanceGroupBo extends BaseEntity {
private Long shiftId; private Long shiftId;
List<Integer> weekList; List<Integer> numList;
List<AttendanceWeekSet> weekSetList;
//前端传必须打卡还是无需打卡 //前端传必须打卡还是无需打卡
private Integer mustNoCheck; private Integer mustNoCheck;

View File

@ -1,32 +1,24 @@
package org.dromara.property.service.impl; package org.dromara.property.service.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.druid.sql.ast.statement.SQLIfStatement;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.property.domain.*; import org.dromara.property.domain.*;
import org.dromara.property.domain.constant.StatusConstant;
import org.dromara.property.domain.vo.AttendanceWeekSetVo;
import org.dromara.property.mapper.*;
import org.springframework.beans.BeanUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.AttendanceArrangementBo; import org.dromara.property.domain.bo.AttendanceArrangementBo;
import org.dromara.property.domain.constant.StatusConstant;
import org.dromara.property.domain.vo.AttendanceArrangementVo; import org.dromara.property.domain.vo.AttendanceArrangementVo;
import org.dromara.property.mapper.*;
import org.dromara.property.service.IAttendanceArrangementService; import org.dromara.property.service.IAttendanceArrangementService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;

View File

@ -154,21 +154,26 @@ public class AttendanceGroupServiceImpl implements IAttendanceGroupService {
//2.固定班制 //2.固定班制
if (Objects.equals(add.getAttendanceType(), FIXEDSCHEDULE)) { if (Objects.equals(add.getAttendanceType(), FIXEDSCHEDULE)) {
//2.1固定班制向周期表插入数据 //2.1固定班制向周期表插入数据
//拿到考勤组的id,遍历weekList
for (Integer week : bo.getWeekList()) { //判断前端传进来有几条数据
//向工作表中插入数据 bo.getWeekSetList().forEach(
AttendanceWeekSet weekSet = new AttendanceWeekSet(); weekSet -> {
weekSet.setGroupId(add.getId()); //向周期表插入数据
weekSet.setDayOfWeek(week); AttendanceWeekSet attendanceWeekSet = new AttendanceWeekSet();
} BeanUtils.copyProperties(weekSet, attendanceWeekSet);
//通过考勤组的id拿到周期表的所有关联id attendanceWeekSet.setGroupId(add.getId());
List<AttendanceWeekSet> weekSets = weekSetMapper.selectList(Wrappers.<AttendanceWeekSet>lambdaQuery().eq(AttendanceWeekSet::getGroupId, add.getId())); attendanceWeekSet.setDayOfWeek(weekSet.getDayOfWeek());
//2.2遍历周期表向班次和周设置表的中间表插入数据 weekSetMapper.insert(attendanceWeekSet);
for (AttendanceWeekSet weekSet : weekSets) { //查询出周期表的id
Long weekSetId = attendanceWeekSet.getId();
//向中间表插入周期的id
AttendanceWeeksetShift attendanceWeeksetShift = new AttendanceWeeksetShift(); AttendanceWeeksetShift attendanceWeeksetShift = new AttendanceWeeksetShift();
attendanceWeeksetShift.setWeekSetId(weekSet.getId()); attendanceWeeksetShift.setWeekSetId(weekSetId);
attendanceWeeksetShift.setShiftId(bo.getShiftId()); attendanceWeeksetShift.setShiftId(bo.getShiftId());
attendanceWeeksetShiftMapper.insert(attendanceWeeksetShift);
} }
);
//todo: 法定节假日自动排休 //todo: 法定节假日自动排休
//2.3.新增打卡日期表 //2.3.新增打卡日期表
@ -188,17 +193,17 @@ public class AttendanceGroupServiceImpl implements IAttendanceGroupService {
//2.2排班制向天数表中插入数据 //2.2排班制向天数表中插入数据
AttendanceScheduleCycle attendanceScheduleCycle = new AttendanceScheduleCycle(); AttendanceScheduleCycle attendanceScheduleCycle = new AttendanceScheduleCycle();
//循环向周期表中插入数据 //循环向周期表中插入数据
for (Integer week : bo.getWeekList()) { for (Integer week : bo.getNumList()) {
attendanceScheduleCycle.setGroupId(add.getId()); attendanceScheduleCycle.setGroupId(add.getId());
attendanceScheduleCycle.setDayNumber(week); attendanceScheduleCycle.setDayNumber(week);
} attendanceScheduleCycleMapper.insert(attendanceScheduleCycle);
//通过考勤组id拿到日期表的所有关联id //获取周期表的id
List<AttendanceScheduleCycle> scheduleCycles = attendanceScheduleCycleMapper.selectList(Wrappers.<AttendanceScheduleCycle>lambdaQuery().eq(AttendanceScheduleCycle::getGroupId, add.getId())); Long scheduleId = attendanceScheduleCycle.getId();
//2.3遍历日期表向班次和周设置表的中间表插入数据 //向中间表插入周期的id
for (AttendanceScheduleCycle scheduleCycle : scheduleCycles) {
AttendanceWeeksetShift attendanceWeeksetShift = new AttendanceWeeksetShift(); AttendanceWeeksetShift attendanceWeeksetShift = new AttendanceWeeksetShift();
attendanceWeeksetShift.setScheduleId(scheduleCycle.getId()); attendanceWeeksetShift.setWeekSetId(scheduleId);
attendanceWeeksetShift.setShiftId(bo.getShiftId()); attendanceWeeksetShift.setShiftId(bo.getShiftId());
attendanceWeeksetShiftMapper.insert(attendanceWeeksetShift);
} }
} }