diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsAttendanceScheduleVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsAttendanceScheduleVo.java index ea91b9e2..111f06d9 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsAttendanceScheduleVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsAttendanceScheduleVo.java @@ -64,5 +64,48 @@ public class WmsAttendanceScheduleVo { @ExcelProperty(value = "备注") private String remark; + /** + * 员工姓名 + */ + @ExcelProperty(value = "员工姓名") + private String employeeName; + + /** + * 员工部门 + */ + @ExcelProperty(value = "员工部门") + private String employeeDept; + + /** + * 员工岗位 + */ + @ExcelProperty(value = "员工岗位") + private String employeeJobType; + + /** + * 班次类型(白班/夜班) + */ + @ExcelProperty(value = "班次类型") + private String shiftType; + + /** + * 班次开始时间 + */ + @JsonFormat(pattern = "HH:mm") + @ExcelProperty(value = "开始时间") + private java.util.Date shiftStartTime; + + /** + * 班次结束时间 + */ + @JsonFormat(pattern = "HH:mm") + @ExcelProperty(value = "结束时间") + private java.util.Date shiftEndTime; + + /** + * 工时 + */ + @ExcelProperty(value = "工时") + private java.math.BigDecimal workHours; } diff --git a/klp-wms/src/main/java/com/klp/mapper/WmsAttendanceScheduleMapper.java b/klp-wms/src/main/java/com/klp/mapper/WmsAttendanceScheduleMapper.java index 3ced34b0..0e848296 100644 --- a/klp-wms/src/main/java/com/klp/mapper/WmsAttendanceScheduleMapper.java +++ b/klp-wms/src/main/java/com/klp/mapper/WmsAttendanceScheduleMapper.java @@ -3,6 +3,9 @@ package com.klp.mapper; import com.klp.domain.WmsAttendanceSchedule; import com.klp.domain.vo.WmsAttendanceScheduleVo; import com.klp.common.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 排班(谁在哪天上班)Mapper接口 @@ -12,4 +15,25 @@ import com.klp.common.core.mapper.BaseMapperPlus; */ public interface WmsAttendanceScheduleMapper extends BaseMapperPlus { + /** + * 查询排班列表(关联员工和班次信息) + */ + List selectScheduleWithDetails(@Param("userId") Long userId, + @Param("workDate") java.util.Date workDate, + @Param("shiftId") Long shiftId); + + /** + * 分页查询排班列表(关联员工和班次信息) + */ + List selectScheduleWithDetailsPage(@Param("userId") Long userId, + @Param("workDate") java.util.Date workDate, + @Param("shiftId") Long shiftId, + @Param("shiftName") String shiftName, + @Param("shiftGroup") String shiftGroup); + + /** + * 批量插入排班 + */ + boolean insertBatch(@Param("list") List list); + } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsAttendanceScheduleServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsAttendanceScheduleServiceImpl.java index 02cda810..b6b27ddd 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsAttendanceScheduleServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsAttendanceScheduleServiceImpl.java @@ -51,7 +51,16 @@ public class WmsAttendanceScheduleServiceImpl implements IWmsAttendanceScheduleS */ @Override public WmsAttendanceScheduleVo queryById(Long scheduleId){ - return baseMapper.selectVoById(scheduleId); + WmsAttendanceSchedule schedule = baseMapper.selectById(scheduleId); + if (schedule == null) { + return null; + } + + // 使用关联查询获取详细信息 + List list = baseMapper.selectScheduleWithDetails( + schedule.getUserId(), schedule.getWorkDate(), schedule.getShiftId()); + + return list.isEmpty() ? null : list.get(0); } /** @@ -59,8 +68,22 @@ public class WmsAttendanceScheduleServiceImpl implements IWmsAttendanceScheduleS */ @Override public TableDataInfo queryPageList(WmsAttendanceScheduleBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + Page page = pageQuery.build(); + List list = baseMapper.selectScheduleWithDetailsPage( + bo.getUserId(), bo.getWorkDate(), bo.getShiftId(), bo.getShiftName(), bo.getShiftGroup()); + + // 手动分页处理 + int total = list.size(); + int startNum = (int) ((page.getCurrent() - 1) * page.getSize()); + int endNum = Math.min(startNum + (int) page.getSize(), total); + + List pageList = new ArrayList<>(); + if (startNum < total) { + pageList = list.subList(startNum, endNum); + } + + Page result = new Page<>(page.getCurrent(), page.getSize(), total); + result.setRecords(pageList); return TableDataInfo.build(result); } @@ -69,19 +92,7 @@ public class WmsAttendanceScheduleServiceImpl implements IWmsAttendanceScheduleS */ @Override public List queryList(WmsAttendanceScheduleBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); - } - - private LambdaQueryWrapper buildQueryWrapper(WmsAttendanceScheduleBo bo) { - Map params = bo.getParams(); - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(bo.getUserId() != null, WmsAttendanceSchedule::getUserId, bo.getUserId()); - lqw.eq(bo.getWorkDate() != null, WmsAttendanceSchedule::getWorkDate, bo.getWorkDate()); - lqw.eq(bo.getShiftId() != null, WmsAttendanceSchedule::getShiftId, bo.getShiftId()); - lqw.like(StringUtils.isNotBlank(bo.getShiftName()), WmsAttendanceSchedule::getShiftName, bo.getShiftName()); - lqw.eq(StringUtils.isNotBlank(bo.getShiftGroup()), WmsAttendanceSchedule::getShiftGroup, bo.getShiftGroup()); - return lqw; + return baseMapper.selectScheduleWithDetails(bo.getUserId(), bo.getWorkDate(), bo.getShiftId()); } /** diff --git a/klp-wms/src/main/resources/mapper/klp/WmsAttendanceScheduleMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsAttendanceScheduleMapper.xml index e9ec582b..974620b7 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsAttendanceScheduleMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsAttendanceScheduleMapper.xml @@ -19,5 +19,73 @@ + + + + + + + + + + + + + + + + + + + SELECT s.schedule_id, s.user_id, s.work_date, s.shift_id, s.shift_name, s.shift_group, s.remark, + e.name as employee_name, e.dept as employee_dept, e.job_type as employee_job_type, + sh.shift_type, sh.start_time as shift_start_time, sh.end_time as shift_end_time, sh.work_hours + FROM wms_attendance_schedule s + LEFT JOIN wms_employee_info e ON s.user_id = e.info_id AND e.del_flag = 0 + LEFT JOIN wms_attendance_shift sh ON s.shift_id = sh.shift_id AND sh.del_flag = 0 + WHERE s.del_flag = 0 + + + + + + + + INSERT INTO wms_attendance_schedule (user_id, work_date, shift_id, shift_name, shift_group, remark) + VALUES + + (#{item.userId}, #{item.workDate}, #{item.shiftId}, #{item.shiftName}, #{item.shiftGroup}, #{item.remark}) + +