feat(schedule): 修改排班生成功能支持批量处理

- 将 IWmsAttendanceScheduleService.generateSchedule 方法参数改为 List 类型
- 更新 WmsAttendanceScheduleController 中的 generateSchedule 接口接收批量数据
- 在 WmsAttendanceScheduleServiceImpl 中实现循环处理多个排班生成请求
- 保持原有的单个排班生成逻辑不变,通过遍历列表实现批量功能
This commit is contained in:
2026-05-12 15:15:08 +08:00
parent 8eac708bac
commit a314e05e4d
3 changed files with 17 additions and 15 deletions

View File

@@ -103,8 +103,8 @@ public class WmsAttendanceScheduleController extends BaseController {
*/
@Log(title = "生成排班", businessType = BusinessType.INSERT)
@PostMapping("/generate")
public R<Void> generateSchedule(@Validated @RequestBody GenerateScheduleBo bo) {
iWmsAttendanceScheduleService.generateSchedule(bo);
public R<Void> generateSchedule(@Validated @RequestBody List<GenerateScheduleBo> boList) {
iWmsAttendanceScheduleService.generateSchedule(boList);
return R.ok();
}
}

View File

@@ -51,5 +51,5 @@ public interface IWmsAttendanceScheduleService {
/**
* 生成排班
*/
void generateSchedule(GenerateScheduleBo bo);
void generateSchedule(List<GenerateScheduleBo> boList);
}

View File

@@ -134,20 +134,22 @@ public class WmsAttendanceScheduleServiceImpl implements IWmsAttendanceScheduleS
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void generateSchedule(GenerateScheduleBo bo) {
LocalDate startDate = bo.getStartDate().toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDate();
LocalDate endDate = bo.getEndDate().toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDate();
public void generateSchedule(List<GenerateScheduleBo> boList) {
for (GenerateScheduleBo bo : boList) {
LocalDate startDate = bo.getStartDate().toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDate();
LocalDate endDate = bo.getEndDate().toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDate();
if (startDate.isAfter(endDate)) {
throw new RuntimeException("开始时间不能大于结束时间");
}
if (startDate.isAfter(endDate)) {
throw new RuntimeException("开始时间不能大于结束时间");
}
if (bo.getRuleId() == null) {
// 正常排班,不倒班
generateNormalSchedule(bo, startDate, endDate);
} else {
// 倒班排班
generateShiftSchedule(bo, startDate, endDate);
if (bo.getRuleId() == null) {
// 正常排班,不倒班
generateNormalSchedule(bo, startDate, endDate);
} else {
// 倒班排班
generateShiftSchedule(bo, startDate, endDate);
}
}
}