feat(schedule): 修改排班生成功能支持批量处理
- 将 IWmsAttendanceScheduleService.generateSchedule 方法参数改为 List 类型 - 更新 WmsAttendanceScheduleController 中的 generateSchedule 接口接收批量数据 - 在 WmsAttendanceScheduleServiceImpl 中实现循环处理多个排班生成请求 - 保持原有的单个排班生成逻辑不变,通过遍历列表实现批量功能
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,5 +51,5 @@ public interface IWmsAttendanceScheduleService {
|
||||
/**
|
||||
* 生成排班
|
||||
*/
|
||||
void generateSchedule(GenerateScheduleBo bo);
|
||||
void generateSchedule(List<GenerateScheduleBo> boList);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user