修复排班bug

This commit is contained in:
dy 2025-07-19 17:10:57 +08:00
parent 49ec73df49
commit e4c21c831b
10 changed files with 101 additions and 27 deletions

View File

@ -76,11 +76,13 @@ public class AttendanceArrangementController extends BaseController {
*/
@SaCheckPermission("Property:arrangement:query")
@GetMapping("/queryByTime")
public R<List<AttendanceArrangementVo>> queryByTime(@NotNull(message = "开始时间不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd") @RequestParam("startTime") DateTime startTime) {
public R<AttendanceArrangementVo> queryByTime(@NotNull(message = "开始时间不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd") @RequestParam("startTime") DateTime startTime) {
return R.ok(attendanceArrangementService.queryByTime(startTime));
}
/**
* 新增排班
*/

View File

@ -32,7 +32,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/userGroup")
@RequestMapping("/AttendanceUserGroup")
public class AttendanceUserGroupController extends BaseController {
private final IAttendanceUserGroupService attendanceUserGroupService;

View File

@ -1,5 +1,6 @@
package org.dromara.property.domain;
import cn.hutool.core.date.DateTime;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
@ -40,12 +41,12 @@ public class AttendanceShift extends TenantEntity {
/**
* 考勤开始时间
*/
private LocalTime startTime;
private DateTime startTime;
/**
* 考勤结束时间
*/
private LocalTime endTime;
private DateTime endTime;
/**
* 状态0off1on
@ -60,12 +61,12 @@ public class AttendanceShift extends TenantEntity {
/**
* 休息开始时间
*/
private LocalTime restStartTime;
private DateTime restStartTime;
/**
* 休息结束时间
*/
private LocalTime restEndTime;
private DateTime restEndTime;
}

View File

@ -1,5 +1,6 @@
package org.dromara.property.domain.bo;
import cn.hutool.core.date.DateTime;
import org.dromara.property.domain.AttendanceShift;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
@ -41,13 +42,13 @@ public class AttendanceShiftBo extends BaseEntity {
* 考勤开始时间
*/
@DateTimeFormat(pattern = "HH:mm:ss")
private LocalTime startTime;
private DateTime startTime;
/**
* 考勤结束时间
*/
@DateTimeFormat(pattern = "HH:mm:ss")
private LocalTime endTime;
private DateTime endTime;
/**
* 状态0off1on
@ -63,13 +64,13 @@ public class AttendanceShiftBo extends BaseEntity {
* 休息开始时间
*/
@DateTimeFormat(pattern = "HH:mm:ss")
private LocalTime restStartTime;
private DateTime restStartTime;
/**
* 休息结束时间
*/
@DateTimeFormat(pattern = "HH:mm:ss")
private LocalTime restEndTime;
private DateTime restEndTime;
}

View File

@ -11,6 +11,7 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.property.domain.AttendanceGroup;
import org.dromara.property.domain.AttendanceUserGroup;
import java.io.Serial;
@ -83,5 +84,7 @@ public class AttendanceArrangementVo implements Serializable {
private List<AttendanceUserGroup> userGroupList;
private AttendanceGroup group;
}

View File

@ -2,6 +2,8 @@ package org.dromara.property.domain.vo;
import java.time.LocalTime;
import java.util.Date;
import cn.hutool.core.date.DateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.property.domain.AttendanceShift;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
@ -47,13 +49,13 @@ public class AttendanceShiftVo implements Serializable {
* 考勤开始时间
*/
@ExcelProperty(value = "考勤开始时间")
private LocalTime startTime;
private DateTime startTime;
/**
* 考勤结束时间
*/
@ExcelProperty(value = "考勤结束时间")
private LocalTime endTime;
private DateTime endTime;
/**
* 状态0off1on
@ -73,13 +75,13 @@ public class AttendanceShiftVo implements Serializable {
* 休息开始时间
*/
@ExcelProperty(value = "休息开始时间")
private LocalTime restStartTime;
private DateTime restStartTime;
/**
* 休息结束时间
*/
@ExcelProperty(value = "休息结束时间")
private LocalTime restEndTime;
private DateTime restEndTime;
}

View File

@ -1,9 +1,15 @@
package org.dromara.property.mapper;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.dromara.property.domain.AttendanceArrangement;
import org.dromara.property.domain.vo.AttendanceArrangementVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import java.util.List;
/**
* 排班Mapper接口
*
@ -12,4 +18,9 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
*/
public interface AttendanceArrangementMapper extends BaseMapperPlus<AttendanceArrangement, AttendanceArrangementVo> {
@Select("SELECT * FROM attendance_arrangement WHERE start_date <= #{startTime} AND end_date >= #{startTime}")
AttendanceArrangementVo selectVoByTime(DateTime startTime);
List<AttendanceArrangement> selectArrangementList(@Param("req") LambdaQueryWrapper<AttendanceArrangement> attendanceArrangementLambdaQueryWrapper);
}

View File

@ -68,5 +68,6 @@ public interface IAttendanceArrangementService {
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
List<AttendanceArrangementVo> queryByTime(DateTime startTime);
AttendanceArrangementVo queryByTime(DateTime startTime);
}

View File

@ -11,9 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.property.domain.AttendanceFixedSchedule;
import org.dromara.property.domain.AttendanceUserGroup;
import org.dromara.property.domain.AttendanceWeekSet;
import org.dromara.property.domain.*;
import org.dromara.property.domain.constant.StatusConstant;
import org.dromara.property.mapper.AttendanceFixedScheduleMapper;
import org.dromara.property.mapper.AttendanceUserGroupMapper;
@ -21,7 +19,6 @@ import org.dromara.property.mapper.AttendanceWeekSetMapper;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.AttendanceArrangementBo;
import org.dromara.property.domain.vo.AttendanceArrangementVo;
import org.dromara.property.domain.AttendanceArrangement;
import org.dromara.property.mapper.AttendanceArrangementMapper;
import org.dromara.property.service.IAttendanceArrangementService;
import org.springframework.transaction.annotation.Transactional;
@ -46,6 +43,7 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
private final AttendanceFixedScheduleMapper fixedScheduleMapper;
private final AttendanceWeekSetMapper weekSetMapper;
/**
* 查询排班
*
@ -53,7 +51,7 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
* @return 排班
*/
@Override
public AttendanceArrangementVo queryById(Long id){
public AttendanceArrangementVo queryById(Long id) {
//根据id查询排班人员信息
List<AttendanceUserGroup> userGroupList = userGroupMapper.selectList(Wrappers.<AttendanceUserGroup>lambdaQuery().eq(AttendanceUserGroup::getScheduleId, id));
//将排班人员信息添加到排班信息中
@ -86,10 +84,26 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
*/
@Override
public List<AttendanceArrangementVo> queryList(AttendanceArrangementBo bo) {
LambdaQueryWrapper<AttendanceArrangement> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
//使用mybatis进行查询不使用mybatisPlus
//查询排班信息列表
List<AttendanceArrangement> list = baseMapper.selectArrangementList(buildQueryWrapper(bo));
return MapstructUtils.convert(list, AttendanceArrangementVo.class);
}
private LambdaQueryWrapper<AttendanceArrangement> buildQueryWrapper(AttendanceArrangementBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<AttendanceArrangement> lqw = Wrappers.lambdaQuery();
@ -181,7 +195,7 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(AttendanceArrangement entity){
private void validEntityBeforeSave(AttendanceArrangement entity) {
//TODO 做一些数据校验,如唯一约束
}
@ -195,7 +209,7 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
@Transactional(rollbackFor = Exception.class)
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
@ -207,7 +221,30 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
}
@Override
public List<AttendanceArrangementVo> queryByTime(DateTime startTime) {
return List.of();
public AttendanceArrangementVo queryByTime(DateTime startTime) {
// //1.根据开始时间查询所有的排班信息
// AttendanceArrangementVo arrangementVo = baseMapper.selectVoByTime(startTime);
//
// //2.查询人员组的信息
// //根据开始时间查询排班的id
// Long scheduleId = baseMapper.selectOne(Wrappers.<AttendanceArrangement>lambdaQuery().ge(AttendanceArrangement::getStartDate, startTime)).getId();
// //根据排班的id查询出排班的人员详细信息
// List<AttendanceUserGroup> userGroupList = userGroupMapper.selectList(Wrappers.<AttendanceUserGroup>lambdaQuery().eq(AttendanceUserGroup::getScheduleId, scheduleId));
// //将排班人员信息添加到排班信息中
// arrangementVo.setUserGroupList(userGroupList);
//
//
//
//
// //3.根据开始时间查询出排班的考勤组id
// baseMapper.selectList(Wrappers.<AttendanceArrangement>lambdaQuery().ge(AttendanceArrangement::getStartDate, startTime)).getGroupId();
//
// Long groupId = baseMapper.selectOne(Wrappers.<AttendanceArrangement>lambdaQuery().ge(AttendanceArrangement::getStartDate, startTime)).getGroupId();
// //根据查询出来的考勤组id查询出考勤信息
//
//
// return arrangementVo;
return null;
}
}

View File

@ -4,4 +4,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.property.mapper.AttendanceArrangementMapper">
<select id="selectArrangementList" resultType="org.dromara.property.domain.AttendanceArrangement">
<foreach collection="req.selectList" item="select">
SELECT
aa.*,
aug.*,
ag.*
FROM
attendance_arrangement aa
LEFT JOIN attendance_user_group aug ON aa.id = aug.schedule_id
LEFT JOIN attendance_group ag ON aa.group_id = ag.id
WHERE
aa.start_date = #{stateDate}
</foreach>
</select>
</mapper>