From ae44ccb565a1952b72446c648b043eada294d6cc Mon Sep 17 00:00:00 2001 From: dy <2389062315@qq.com> Date: Sun, 27 Jul 2025 21:01:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=91=A8=E6=9C=9F=E8=A1=A8=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E6=8F=92=E5=85=A5bug=E5=8F=8A=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../property/domain/AttendanceClockDate.java | 2 +- .../domain/bo/AttendanceClockDateBo.java | 4 +- .../property/domain/bo/AttendanceGroupBo.java | 2 - .../domain/vo/AttendanceClockDateVo.java | 4 +- .../impl/AttendanceGroupServiceImpl.java | 108 +++++++++++------- 5 files changed, 72 insertions(+), 48 deletions(-) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceClockDate.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceClockDate.java index 0e57cd7..8676cb2 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceClockDate.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceClockDate.java @@ -37,7 +37,7 @@ public class AttendanceClockDate extends TenantEntity { /** * 必须/无需打卡(0:无需打卡,1必须打卡) */ - private Long mustNoCheck; + private Integer mustNoCheck; /** * 日期类型(0:单个日期,1:时间段) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceClockDateBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceClockDateBo.java index 6c0cbe0..f39d6b4 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceClockDateBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceClockDateBo.java @@ -36,12 +36,12 @@ public class AttendanceClockDateBo extends BaseEntity { /** * 必须/无需打卡(0:无需打卡,1必须打卡) */ - private Long mustNoCheck; + private Integer mustNoCheck; /** * 日期类型(0:单个日期,1:时间段) */ - private Long dateType; + private Integer dateType; /** * 开始日期 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceGroupBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceGroupBo.java index 9b41932..222f8a8 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceGroupBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceGroupBo.java @@ -52,8 +52,6 @@ public class AttendanceGroupBo extends BaseEntity { List numList; List weekSetList; - //前端传必须打卡还是无需打卡 - private Integer mustNoCheck; private List clockDate; diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceClockDateVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceClockDateVo.java index 8a004f3..961052d 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceClockDateVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceClockDateVo.java @@ -47,13 +47,13 @@ public class AttendanceClockDateVo implements Serializable { */ @ExcelProperty(value = "必须/无需打卡", converter = ExcelDictConvert.class) @ExcelDictFormat(readConverterExp = "0=:无需打卡,1必须打卡") - private Long mustNoCheck; + private Integer mustNoCheck; /** * 日期类型(0:单个日期,1:时间段) */ @ExcelProperty(value = "日期类型(0:单个日期,1:时间段)") - private Long dateType; + private Integer dateType; /** * 开始日期 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceGroupServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceGroupServiceImpl.java index 4c6702f..35222ff 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceGroupServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceGroupServiceImpl.java @@ -75,7 +75,7 @@ public class AttendanceGroupServiceImpl implements IAttendanceGroupService { //1.6将查询后的数据封装到attendanceGroupVo中 vo.setAttendanceList(shifts); vo.setWeekList(weekSets); - } else if(Objects.equals(attendanceType, SHIFTSCHEDULE)) { + } else if (Objects.equals(attendanceType, SHIFTSCHEDULE)) { //2.排班制 //2.1根据id参数查询考勤周期表 List weekSets = weekSetMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceWeekSet::getGroupId, id)); @@ -92,8 +92,8 @@ public class AttendanceGroupServiceImpl implements IAttendanceGroupService { } //根据id查询attendance_clock_date表 - List clockDates = attendanceClockDateMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceClockDate::getGroupId, id)); - vo.setClockDateList(clockDates); + List clockDateList = attendanceClockDateMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceClockDate::getGroupId, id)); + vo.setClockDateList(clockDateList); return vo; @@ -185,15 +185,20 @@ public class AttendanceGroupServiceImpl implements IAttendanceGroupService { //todo: 法定节假日自动排休 //2.3.新增打卡日期表 - //2.3.1判断是必须打卡还是无需打卡 - //(1)必须打卡,向打卡日期表中插入数据 - if (Objects.equals(bo.getMustNoCheck(), StatusConstant.MUSTCHECK)) { - judgeDate(bo); - } - //(2)无需打卡,向打卡日期表中插入数据 - else if (Objects.equals(bo.getMustNoCheck(), StatusConstant.NOCHECK)) { - judgeDate(bo); - } + bo.getClockDate().forEach( + clockDate -> { + //判断是必须打卡还是无需打卡 + //(1)必须打卡,向打卡日期表中插入数据 + if (Objects.equals(clockDate.getMustNoCheck(), StatusConstant.MUSTCHECK)) { + insertDate(clockDate, add); + } + //(2)无需打卡,向打卡日期表中插入数据 + else if (Objects.equals(clockDate.getMustNoCheck(), StatusConstant.NOCHECK)) { + insertDate(clockDate, add); + } + } + ); + } //3.排班制 @@ -223,36 +228,21 @@ public class AttendanceGroupServiceImpl implements IAttendanceGroupService { return flag; } - private void judgeDate(AttendanceGroupBo bo) { - //3.1.1判断是时间段还是单个日期 - //如果为单个日期,向打卡日期表中插入数据 - //循环clockDate集合 - bo.getClockDate().forEach( - clockDate -> { - //向打卡日期表中插入数据 - AttendanceClockDate attendanceClockDate = new AttendanceClockDate(); - BeanUtils.copyProperties(clockDate, attendanceClockDate); - attendanceClockDate.setGroupId(bo.getId()); - attendanceClockDate.setStartDate(clockDate.getStartDate()); - //判断是时间段还是单个日期 - if (Objects.equals(clockDate.getDateType(), StatusConstant.SINGLEDATE)) { - attendanceClockDate.setEndDate(clockDate.getStartDate()); - } else if (Objects.equals(clockDate.getDateType(), StatusConstant.DATERANGE)) { - attendanceClockDate.setEndDate(clockDate.getEndDate()); - } - attendanceClockDate.setEndDate(clockDate.getEndDate()); - attendanceClockDateMapper.insert(attendanceClockDate); - } - ); - } - - private void insertAttendaanceClockDate(AttendanceGroupBo bo) { - //向attendance_clock_date表中插入数据 + private void insertDate(AttendanceClockDate clockDate, AttendanceGroup add) { AttendanceClockDate attendanceClockDate = new AttendanceClockDate(); - BeanUtils.copyProperties(bo.getClockDate(), attendanceClockDate); + BeanUtils.copyProperties(clockDate, attendanceClockDate); + attendanceClockDate.setGroupId(add.getId()); + attendanceClockDate.setStartDate(clockDate.getStartDate()); + //判断是时间段还是单个日期 + if (Objects.equals(clockDate.getDateType(), StatusConstant.SINGLEDATE)) { + attendanceClockDate.setEndDate(clockDate.getStartDate()); + } else if (Objects.equals(clockDate.getDateType(), StatusConstant.DATERANGE)) { + attendanceClockDate.setEndDate(clockDate.getEndDate()); + } attendanceClockDateMapper.insert(attendanceClockDate); } + /** * 修改考勤组基本信息 * @@ -265,6 +255,7 @@ public class AttendanceGroupServiceImpl implements IAttendanceGroupService { validEntityBeforeSave(update); //根据参数判断当前是固定班制还是排班制 + assert update != null; if (Objects.equals(update.getAttendanceType(), FIXEDSCHEDULE)) { //1.固定班制 //取出考勤组id @@ -282,9 +273,44 @@ public class AttendanceGroupServiceImpl implements IAttendanceGroupService { weekSetMapper.updateById(attendanceWeekSet); } ); + + //2.3.修改打卡日期表 + //先删除原有数据 + attendanceClockDateMapper.delete(Wrappers.lambdaQuery().eq(AttendanceClockDate::getGroupId, groupId)); + //再插入新数据 + bo.getClockDate().forEach( + clockDate -> { + //判断是必须打卡还是无需打卡 + //(1)必须打卡,向打卡日期表中插入数据 + if (Objects.equals(clockDate.getMustNoCheck(), StatusConstant.MUSTCHECK)) { + insertDate(clockDate, update); + } + //(2)无需打卡,向打卡日期表中插入数据 + else if (Objects.equals(clockDate.getMustNoCheck(), StatusConstant.NOCHECK)) { + insertDate(clockDate, update); + } + } + ); } + //2.排班制 + if (Objects.equals(update.getAttendanceType(), SHIFTSCHEDULE)) { + //1.排班制 + //取出考勤组id + Long groupId = update.getId(); + //根据考勤组id查询出attendance_schedule_cycle表中的数据 + List scheduleCycles = attendanceScheduleCycleMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceScheduleCycle::getGroupId, groupId)); + //根据scheduleCycles修改考勤周期表中的数据 + scheduleCycles.forEach( + scheduleCycle -> { + AttendanceScheduleCycle attendanceScheduleCycle = new AttendanceScheduleCycle(); + BeanUtils.copyProperties(scheduleCycle, attendanceScheduleCycle); + attendanceScheduleCycle.setGroupId(update.getId()); + attendanceScheduleCycle.setDayNumber(scheduleCycle.getDayNumber()); + attendanceScheduleCycleMapper.updateById(attendanceScheduleCycle); + } + ); - + } return baseMapper.updateById(update) > 0; @@ -306,9 +332,9 @@ public class AttendanceGroupServiceImpl implements IAttendanceGroupService { */ @Transactional(rollbackFor = Exception.class) @Override - public Boolean deleteWithValidByIds(Collection ids, Boolean isValid,Integer attendanceType) { + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid, Integer attendanceType) { //判断删除固定班次还是排班制 - if (Objects.equals(attendanceType, FIXEDSCHEDULE)){ + if (Objects.equals(attendanceType, FIXEDSCHEDULE)) { //1.固定班制 //根据id删除周期表中的数据 weekSetMapper.delete(Wrappers.lambdaQuery().in(AttendanceWeekSet::getGroupId, ids));