From cd3cfd61981cf8df1a3ea88f66f4f6822bea1210 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Sat, 9 May 2026 14:08:38 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=B7=BB=E5=8A=A0=E6=8E=92?= =?UTF-8?q?=E7=8F=AD=E7=AE=A1=E7=90=86=E7=9A=84=E6=9F=A5=E8=AF=A2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 WmsAttendanceScheduleMapper 中新增关联查询和批量插入方法 - 实现员工和班次信息的关联查询功能 - 添加分页查询排班列表的详细信息展示 - 扩展 WmsAttendanceScheduleVo 数据传输对象 - 完善排班详情查询和列表查询的服务层逻辑 - 集成员工姓名、部门、岗位及班次时间等详细信息 - 优化批量插入排班数据的功能实现 --- .../domain/vo/WmsAttendanceScheduleVo.java | 43 ++++++++++++ .../mapper/WmsAttendanceScheduleMapper.java | 24 +++++++ .../WmsAttendanceScheduleServiceImpl.java | 43 +++++++----- .../klp/WmsAttendanceScheduleMapper.xml | 68 +++++++++++++++++++ 4 files changed, 162 insertions(+), 16 deletions(-) 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}) + +