This commit is contained in:
dy 2025-08-13 16:21:30 +08:00
parent 627f2a1a11
commit b43c3b25e0
2 changed files with 36 additions and 19 deletions

View File

@ -167,7 +167,7 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
LocalDate endDate = vo.getEndDate();
LocalDate currentDate = bo.getCurrentDate();
// //统计当前考勤组有多少条数据
// int count = Math.toIntExact(scheduleCycleMapper.selectCount(Wrappers.<AttendanceScheduleCycle>lambdaQuery().eq(AttendanceScheduleCycle::getGroupId, groupId)));
int count = Math.toIntExact(scheduleCycleMapper.selectCount(Wrappers.<AttendanceScheduleCycle>lambdaQuery().eq(AttendanceScheduleCycle::getGroupId, groupId)));
//取出attendanceScheduleCycle表中的天数
List<Integer> cycleDaysList = scheduleCycleMapper.selectList(Wrappers.<AttendanceScheduleCycle>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.<AttendanceScheduleCycle>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<Long> employeeIdList = userGroupMapper.selectList(Wrappers.<AttendanceUserGroup>lambdaQuery().eq(AttendanceUserGroup::getScheduleId, ArrangementId))
.stream().map(AttendanceUserGroup::getEmployeeId).toList();
//根据employeeId和ArrangementId删除attendanceUserGroup表中的数据
userGroupMapper.delete(Wrappers.<AttendanceUserGroup>lambdaQuery().in(AttendanceUserGroup::getEmployeeId, employeeIdList)
.eq(AttendanceUserGroup::getScheduleId, ArrangementId));
if (!employeeIdList.isEmpty()) {
userGroupMapper.delete(Wrappers.<AttendanceUserGroup>lambdaQuery().in(AttendanceUserGroup::getEmployeeId, employeeIdList)
.eq(AttendanceUserGroup::getScheduleId, ArrangementId));
}
//根据排班id获取部门id
List<Long> deptIdList = userGroupMapper.selectList(Wrappers.<AttendanceUserGroup>lambdaQuery().eq(AttendanceUserGroup::getScheduleId, ArrangementId))
.stream().map(AttendanceUserGroup::getDeptId).toList();
//根据deptId和ArrangementId删除attendanceDeptGroup表中的数据
userGroupMapper.delete(Wrappers.<AttendanceUserGroup>lambdaQuery().in(AttendanceUserGroup::getDeptId, deptIdList)
.eq(AttendanceUserGroup::getScheduleId, ArrangementId));
if (!deptIdList.isEmpty()) {
//根据deptId和ArrangementId删除attendanceDeptGroup表中的数据
userGroupMapper.delete(Wrappers.<AttendanceUserGroup>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<AttendanceUserGroup> 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;

View File

@ -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<AttendanceUserGroup> userGroupList = baseMapper.selectList(Wrappers.<AttendanceUserGroup>lambdaQuery().eq(AttendanceUserGroup::getScheduleId, scheduleId));
//根据employeeId查询出用户的详细信息
SysUserVo sysUserVo = sysUserService.selectUserById(vo.getEmployeeId());
vo.setSysUser(sysUserVo);
//根据scheduleId查询出排班的详细信息
AttendanceArrangement attendanceArrangement = arrangementMapper.selectOne(Wrappers.<AttendanceArrangement>lambdaQuery().eq(AttendanceArrangement::getId, scheduleId));