From 69ea51ec9313a2db1957085dcbb642f0206bae3c Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Mon, 25 May 2026 11:26:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms/attendance):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=8E=92=E7=8F=AD=E6=89=B9=E9=87=8F=E4=BF=AE=E6=94=B9=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增BatchUpdateScheduleBo类,用于接收批量修改排班的请求参数 - 在IWmsAttendanceScheduleService接口中定义batchUpdateSchedule方法 - 在WmsAttendanceScheduleController中新增批量修改排班的API接口 - 在WmsAttendanceScheduleServiceImpl中实现批量修改排班逻辑,支持更新已有记录和插入新记录 --- .../WmsAttendanceScheduleController.java | 12 ++++++ .../klp/domain/bo/BatchUpdateScheduleBo.java | 27 ++++++++++++ .../IWmsAttendanceScheduleService.java | 6 +++ .../WmsAttendanceScheduleServiceImpl.java | 43 +++++++++++++++++++ 4 files changed, 88 insertions(+) create mode 100644 klp-wms/src/main/java/com/klp/domain/bo/BatchUpdateScheduleBo.java diff --git a/klp-wms/src/main/java/com/klp/controller/WmsAttendanceScheduleController.java b/klp-wms/src/main/java/com/klp/controller/WmsAttendanceScheduleController.java index 3963152c..271855c8 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsAttendanceScheduleController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsAttendanceScheduleController.java @@ -20,6 +20,7 @@ import com.klp.common.utils.poi.ExcelUtil; import com.klp.domain.vo.WmsAttendanceScheduleVo; import com.klp.domain.bo.WmsAttendanceScheduleBo; import com.klp.domain.bo.GenerateScheduleBo; +import com.klp.domain.bo.BatchUpdateScheduleBo; import com.klp.service.IWmsAttendanceScheduleService; import com.klp.common.core.page.TableDataInfo; @@ -107,4 +108,15 @@ public class WmsAttendanceScheduleController extends BaseController { iWmsAttendanceScheduleService.generateSchedule(boList); return R.ok(); } + + /** + * 批量修改指定日期多个员工的班次 + */ + @Log(title = "排班批量修改", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/batchUpdate") + public R batchUpdateSchedule(@Validated @RequestBody BatchUpdateScheduleBo bo) { + iWmsAttendanceScheduleService.batchUpdateSchedule(bo); + return R.ok(); + } } diff --git a/klp-wms/src/main/java/com/klp/domain/bo/BatchUpdateScheduleBo.java b/klp-wms/src/main/java/com/klp/domain/bo/BatchUpdateScheduleBo.java new file mode 100644 index 00000000..ee33da88 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/domain/bo/BatchUpdateScheduleBo.java @@ -0,0 +1,27 @@ +package com.klp.domain.bo; + +import lombok.Data; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +import java.util.List; + +@Data +public class BatchUpdateScheduleBo { + + @NotEmpty(message = "员工ID列表不能为空") + private List userIds; + + @NotNull(message = "日期不能为空") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date workDate; + + @NotNull(message = "班次ID不能为空") + private Long shiftId; + + private String shiftName; +} diff --git a/klp-wms/src/main/java/com/klp/service/IWmsAttendanceScheduleService.java b/klp-wms/src/main/java/com/klp/service/IWmsAttendanceScheduleService.java index 8483d9f7..638215e2 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsAttendanceScheduleService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsAttendanceScheduleService.java @@ -4,6 +4,7 @@ import com.klp.domain.WmsAttendanceSchedule; import com.klp.domain.vo.WmsAttendanceScheduleVo; import com.klp.domain.bo.WmsAttendanceScheduleBo; import com.klp.domain.bo.GenerateScheduleBo; +import com.klp.domain.bo.BatchUpdateScheduleBo; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; @@ -52,4 +53,9 @@ public interface IWmsAttendanceScheduleService { * 生成排班 */ void generateSchedule(List boList); + + /** + * 批量修改指定日期多个员工的班次 + */ + void batchUpdateSchedule(BatchUpdateScheduleBo bo); } 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 3b88c59d..d9848854 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 @@ -14,6 +14,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.klp.domain.bo.WmsAttendanceScheduleBo; import com.klp.domain.bo.GenerateScheduleBo; +import com.klp.domain.bo.BatchUpdateScheduleBo; import com.klp.domain.vo.WmsAttendanceScheduleVo; import com.klp.domain.WmsAttendanceSchedule; import com.klp.domain.WmsAttendanceShiftRule; @@ -149,6 +150,48 @@ public class WmsAttendanceScheduleServiceImpl implements IWmsAttendanceScheduleS } } + /** + * 批量修改指定日期多个员工的班次 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void batchUpdateSchedule(BatchUpdateScheduleBo bo) { + Date workDate = bo.getWorkDate(); + Long shiftId = bo.getShiftId(); + String shiftName = bo.getShiftName(); + List userIds = bo.getUserIds(); + + baseMapper.update(null, Wrappers.lambdaUpdate() + .in(WmsAttendanceSchedule::getUserId, userIds) + .eq(WmsAttendanceSchedule::getWorkDate, workDate) + .set(WmsAttendanceSchedule::getShiftId, shiftId) + .set(WmsAttendanceSchedule::getShiftName, shiftName)); + + Set existingUserIds = baseMapper.selectList(Wrappers.lambdaQuery() + .in(WmsAttendanceSchedule::getUserId, userIds) + .eq(WmsAttendanceSchedule::getWorkDate, workDate) + .select(WmsAttendanceSchedule::getUserId)) + .stream() + .map(WmsAttendanceSchedule::getUserId) + .collect(Collectors.toSet()); + + List insertList = userIds.stream() + .filter(uid -> !existingUserIds.contains(uid)) + .map(uid -> { + WmsAttendanceSchedule s = new WmsAttendanceSchedule(); + s.setUserId(uid); + s.setWorkDate(workDate); + s.setShiftId(shiftId); + s.setShiftName(shiftName); + return s; + }) + .collect(Collectors.toList()); + + if (!insertList.isEmpty()) { + baseMapper.insertBatch(insertList); + } + } + /** * 生成正常排班 */