From b43c3b25e069c861c66237a1fb2ab591f7cfe835 Mon Sep 17 00:00:00 2001 From: dy <2389062315@qq.com> Date: Wed, 13 Aug 2025 16:21:30 +0800 Subject: [PATCH] bug --- .../AttendanceArrangementServiceImpl.java | 41 +++++++++++-------- .../impl/AttendanceUserGroupServiceImpl.java | 14 ++++++- 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java index 11457675..823732b7 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceArrangementServiceImpl.java @@ -167,7 +167,7 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS LocalDate endDate = vo.getEndDate(); LocalDate currentDate = bo.getCurrentDate(); // //统计当前考勤组有多少条数据 -// int count = Math.toIntExact(scheduleCycleMapper.selectCount(Wrappers.lambdaQuery().eq(AttendanceScheduleCycle::getGroupId, groupId))); + int count = Math.toIntExact(scheduleCycleMapper.selectCount(Wrappers.lambdaQuery().eq(AttendanceScheduleCycle::getGroupId, groupId))); //取出attendanceScheduleCycle表中的天数 List cycleDaysList = scheduleCycleMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceScheduleCycle::getGroupId, groupId)).stream().map(AttendanceScheduleCycle::getDayNumber).collect(Collectors.toList()); @@ -177,9 +177,9 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS if (date.isEqual(currentDate)) { // 判断当前日期是cycleDays中的第几天 int dayNumber = date.getDayOfYear() - startDate.getDayOfYear() + 1; - cycleDay = dayNumber % cycleDaysList.size(); + cycleDay = dayNumber % count; if (cycleDay == 0) { - cycleDay = cycleDaysList.size(); + cycleDay = count; } // 根据cycleDay查询出当前日期的班次信息 AttendanceScheduleCycle cycle = scheduleCycleMapper.selectOne(Wrappers.lambdaQuery() @@ -512,15 +512,6 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS AttendanceArrangement update = MapstructUtils.convert(bo, AttendanceArrangement.class); validEntityBeforeSave(update); -// judgeDate(bo, update); - - //根据排班id获取人员id - //根据人员id删除人员信息 - //新增人员信息 - //根据排班id获取部门id - //根据部门id删除部门信息 - //新增部门信息 - //取出当前排班的id assert update != null; Long ArrangementId = update.getId(); @@ -528,19 +519,35 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS List employeeIdList = userGroupMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceUserGroup::getScheduleId, ArrangementId)) .stream().map(AttendanceUserGroup::getEmployeeId).toList(); //根据employeeId和ArrangementId删除attendanceUserGroup表中的数据 - userGroupMapper.delete(Wrappers.lambdaQuery().in(AttendanceUserGroup::getEmployeeId, employeeIdList) - .eq(AttendanceUserGroup::getScheduleId, ArrangementId)); + if (!employeeIdList.isEmpty()) { + userGroupMapper.delete(Wrappers.lambdaQuery().in(AttendanceUserGroup::getEmployeeId, employeeIdList) + .eq(AttendanceUserGroup::getScheduleId, ArrangementId)); + } //根据排班id获取部门id List deptIdList = userGroupMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceUserGroup::getScheduleId, ArrangementId)) .stream().map(AttendanceUserGroup::getDeptId).toList(); - //根据deptId和ArrangementId删除attendanceDeptGroup表中的数据 - userGroupMapper.delete(Wrappers.lambdaQuery().in(AttendanceUserGroup::getDeptId, deptIdList) - .eq(AttendanceUserGroup::getScheduleId, ArrangementId)); + if (!deptIdList.isEmpty()) { + //根据deptId和ArrangementId删除attendanceDeptGroup表中的数据 + userGroupMapper.delete(Wrappers.lambdaQuery().in(AttendanceUserGroup::getDeptId, deptIdList) + .eq(AttendanceUserGroup::getScheduleId, ArrangementId)); + } + + //根据当前排班的id查询出当前的开始时间和结束时间 + AttendanceArrangement old = baseMapper.selectById(ArrangementId); + //根据old查询出开始时间 + LocalDate oldStartDate = old.getStartDate(); + //根据old查询出结束时间 + LocalDate oldEndDate = old.getEndDate(); //用获取到的排班id向attendanceUserGroup表中批量插入数据 List userGroupList = bo.getUserGroupList(); + for (AttendanceUserGroup userGroup : userGroupList) { + userGroup.setScheduleId(bo.getId()); + userGroup.setStartDate(oldStartDate); + userGroup.setEndDate(oldEndDate); + } userGroupMapper.insertBatch(userGroupList); return baseMapper.updateById(update) > 0; diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java index 63c4d027..a4703391 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/AttendanceUserGroupServiceImpl.java @@ -1,5 +1,7 @@ package org.dromara.property.service.impl; +import org.apache.dubbo.config.annotation.DubboReference; +import org.apache.dubbo.config.annotation.DubboService; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -14,6 +16,8 @@ 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.mapper.*; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.service.ISysUserService; import org.springframework.stereotype.Service; import org.dromara.property.domain.bo.AttendanceUserGroupBo; import org.dromara.property.domain.vo.AttendanceUserGroupVo; @@ -48,6 +52,10 @@ public class AttendanceUserGroupServiceImpl implements IAttendanceUserGroupServi private final AttendanceScheduleCycleMapper scheduleCycleMapper; + @DubboReference + private ISysUserService sysUserService; + + /** * 查询排班明细 * @@ -169,8 +177,10 @@ public class AttendanceUserGroupServiceImpl implements IAttendanceUserGroupServi // 根据查询出来的result取出scheduleId Long scheduleId = vo.getScheduleId(); - // 根据排班的id查询出排班的人员详细信息 -// List userGroupList = baseMapper.selectList(Wrappers.lambdaQuery().eq(AttendanceUserGroup::getScheduleId, scheduleId)); + + //根据employeeId查询出用户的详细信息 + SysUserVo sysUserVo = sysUserService.selectUserById(vo.getEmployeeId()); + vo.setSysUser(sysUserVo); //根据scheduleId查询出排班的详细信息 AttendanceArrangement attendanceArrangement = arrangementMapper.selectOne(Wrappers.lambdaQuery().eq(AttendanceArrangement::getId, scheduleId));