|  |  | 
 |  |  | import java.util.stream.Collectors; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  | * @author Ryan | 
 |  |  | * @description 波次定时任务 | 
 |  |  | * @param | 
 |  |  | * @return | 
 |  |  | * @time 2025/6/23 13:49 | 
 |  |  | */ | 
 |  |  |  * @param | 
 |  |  |  * @author Ryan | 
 |  |  |  * @description 波次定时任务 | 
 |  |  |  * @return | 
 |  |  |  * @time 2025/6/23 13:49 | 
 |  |  |  */ | 
 |  |  | @Component | 
 |  |  | public class WaveSchedules { | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |     * @author Ryan | 
 |  |  |     * @description 自动下发波次任务 | 
 |  |  |     * @param | 
 |  |  |     * @return | 
 |  |  |     * @time 2025/6/23 13:52 | 
 |  |  |     */ | 
 |  |  |      * @param | 
 |  |  |      * @return | 
 |  |  |      * @author Ryan | 
 |  |  |      * @description 自动下发波次任务 | 
 |  |  |      * @time 2025/6/23 13:52 | 
 |  |  |      */ | 
 |  |  |     @Scheduled(cron = "0/15 * * * * ?") | 
 |  |  | //    @Transactional(rollbackFor = Exception.class) | 
 |  |  |     public void autoGenerateTask() { | 
 |  |  | 
 |  |  |         if (Objects.isNull(config) || !Boolean.parseBoolean(config.getVal())) { | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  | //        List<Wave> list = waveService.list(new LambdaQueryWrapper<Wave>() | 
 |  |  | //                        .select(Wave::getId) | 
 |  |  | //                        .in(Wave::getExceStatus, WaveExceStatus.WAVE_EXCE_STATUS_INIT.val | 
 |  |  | //                                , WaveExceStatus.WAVE_EXCE_STATUS_EXCING.val)); | 
 |  |  | //        if (list.isEmpty()) { | 
 |  |  | //            return; | 
 |  |  | //        } | 
 |  |  | //        List<Long> longs = list.stream().map(Wave::getId).collect(Collectors.toList()); | 
 |  |  |  | 
 |  |  |         List<WaveItem> waveItems = waveItemService.list(new LambdaQueryWrapper<WaveItem>() | 
 |  |  |                 .in(WaveItem::getExceStatus, Arrays.asList(WaveItemExceStatus.WAVE_ITEM_EXCE_STATUS_UN.val | 
 |  |  |                         , WaveItemExceStatus.WAVE_EXCE_STATUS_ING.val))); | 
 |  |  |  | 
 |  |  |         waveItemService.update(new LambdaUpdateWrapper<WaveItem>() | 
 |  |  |                 .set(WaveItem::getExceStatus, WaveItemExceStatus.WAVE_EXCE_STATUS_ING.val) | 
 |  |  |                 .apply("anfme > work_qty") | 
 |  |  |         ); | 
 |  |  |  | 
 |  |  |         if (waveItems.isEmpty()) { | 
 |  |  |         List<Wave> list = waveService.list(new LambdaQueryWrapper<Wave>() | 
 |  |  |                 .select(Wave::getId) | 
 |  |  |                 .in(Wave::getExceStatus, WaveExceStatus.WAVE_EXCE_STATUS_INIT.val | 
 |  |  |                         , WaveExceStatus.WAVE_EXCE_STATUS_EXCING.val)); | 
 |  |  |         if (list.isEmpty()) { | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         List<Long> longs = list.stream().map(Wave::getId).collect(Collectors.toList()); | 
 |  |  |  | 
 |  |  |         waveItemService.update(new LambdaUpdateWrapper<WaveItem>() | 
 |  |  |                 .in(WaveItem::getWaveId, longs) | 
 |  |  |                 .set(WaveItem::getExceStatus, WaveExceStatus.WAVE_EXCE_STATUS_EXCING.val) | 
 |  |  |                 .apply("anfme > work_qty")); | 
 |  |  |  | 
 |  |  |         Long loginUserId = SystemAuthUtils.getLoginUserId(); | 
 |  |  |         Map<Long, List<WaveItem>> listMap = waveItems.stream().collect(Collectors.groupingBy(WaveItem::getWaveId)); | 
 |  |  |         listMap.keySet().forEach(waveId -> { | 
 |  |  |             List<Long> itemIds = listMap.get(waveId).stream().map(WaveItem::getId).collect(Collectors.toList()); | 
 |  |  |             Map<String, Object> params = new HashMap<>(); | 
 |  |  |             params.put("wave", waveId); | 
 |  |  |             params.put("waveItem", itemIds); | 
 |  |  |             waveService.waveToTask(params, loginUserId); | 
 |  |  |         }); | 
 |  |  |         Map<String, Object> params = new HashMap<>(); | 
 |  |  |         params.put("ids", longs); | 
 |  |  |         waveService.waveToTask(params, loginUserId); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |