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)
|
@Log(title = "生成排班", businessType = BusinessType.INSERT)
|
||||||
@PostMapping("/generate")
|
@PostMapping("/generate")
|
||||||
public R<Void> generateSchedule(@Validated @RequestBody GenerateScheduleBo bo) {
|
public R<Void> generateSchedule(@Validated @RequestBody List<GenerateScheduleBo> boList) {
|
||||||
iWmsAttendanceScheduleService.generateSchedule(bo);
|
iWmsAttendanceScheduleService.generateSchedule(boList);
|
||||||
return R.ok();
|
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
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void generateSchedule(GenerateScheduleBo bo) {
|
public void generateSchedule(List<GenerateScheduleBo> boList) {
|
||||||
LocalDate startDate = bo.getStartDate().toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDate();
|
for (GenerateScheduleBo bo : boList) {
|
||||||
LocalDate endDate = bo.getEndDate().toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDate();
|
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)) {
|
if (startDate.isAfter(endDate)) {
|
||||||
throw new RuntimeException("开始时间不能大于结束时间");
|
throw new RuntimeException("开始时间不能大于结束时间");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bo.getRuleId() == null) {
|
if (bo.getRuleId() == null) {
|
||||||
// 正常排班,不倒班
|
// 正常排班,不倒班
|
||||||
generateNormalSchedule(bo, startDate, endDate);
|
generateNormalSchedule(bo, startDate, endDate);
|
||||||
} else {
|
} else {
|
||||||
// 倒班排班
|
// 倒班排班
|
||||||
generateShiftSchedule(bo, startDate, endDate);
|
generateShiftSchedule(bo, startDate, endDate);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user