| package com.vincent.rsf.server.manager.schedules; | 
|   | 
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
| import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | 
| import com.vincent.rsf.framework.exception.CoolException; | 
| import com.vincent.rsf.server.api.entity.enums.TaskStsType; | 
| import com.vincent.rsf.server.manager.entity.*; | 
| import com.vincent.rsf.server.manager.service.*; | 
| import com.vincent.rsf.server.system.constant.SerialRuleCode; | 
| import com.vincent.rsf.server.system.enums.LocStsType; | 
| import com.vincent.rsf.server.system.utils.SerialRuleUtils; | 
| import org.apache.commons.lang3.StringUtils; | 
| import org.springframework.beans.BeanUtils; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.scheduling.annotation.Scheduled; | 
| import org.springframework.stereotype.Component; | 
| import org.springframework.transaction.annotation.Transactional; | 
|   | 
| import java.sql.Array; | 
| import java.util.ArrayList; | 
| import java.util.List; | 
| import java.util.Map; | 
| import java.util.Objects; | 
| import java.util.stream.Collectors; | 
|   | 
| /** | 
|  * @Author Ryan | 
|  * 任务工作档 | 
|  */ | 
| @Component | 
| public class TaskSchedules { | 
|   | 
|     @Autowired | 
|     private TaskService taskService; | 
|     @Autowired | 
|     private TaskItemService taskItemService; | 
|     @Autowired | 
|     private TaskLogService taskLogService; | 
|     @Autowired | 
|     private TaskItemLogService taskItemLogService; | 
|     @Autowired | 
|     private StockItemService stockItemService; | 
|     @Autowired | 
|     private PurchaseService purchaseService; | 
|     @Autowired | 
|     private AsnOrderService asnOrderService; | 
|     @Autowired | 
|     private AsnOrderItemService asnOrderItemService; | 
|     @Autowired | 
|     private StockService stockService; | 
|     @Autowired | 
|     private LocService locService; | 
|     @Autowired | 
|     private OrderService orderService; | 
|     @Autowired | 
|     private OrderItemService orderItemService; | 
|     /** | 
|     * @author Ryan | 
|     * @description 完成入库,更新库存 | 
|     * @param | 
|     * @return | 
|     * @time 2025/4/2 12:37 | 
|     */ | 
|     @Scheduled(cron = "0 0/05 * * * ?  ") | 
| //  @Scheduled(cron = "0/5 * * * * ?") | 
|     @Transactional(rollbackFor = Exception.class) | 
|     public void completeInStock() throws Exception { | 
|         List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id)); | 
|         if (tasks.isEmpty()) { | 
|             return; | 
|         } | 
|         taskService.completeTask(tasks); | 
|     } | 
|   | 
|   | 
|     /** | 
|     * @author Ryan | 
|     * @description 已完成任务加入历史档 | 
|     * @param | 
|     * @return | 
|     * @time 2025/4/3 12:54 | 
|     */ | 
|     @Scheduled(cron = "0 0/05 * * * ?  ") | 
|     @Transactional(rollbackFor = Exception.class) | 
|     public void taskLogUpdate() { | 
|         List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskStatus, TaskStsType.UPDATED_IN.id)); | 
|         if (tasks.isEmpty()) { | 
|             return; | 
|         } | 
|         List<Long> list = tasks.stream().map(Task::getId).collect(Collectors.toList()); | 
|         List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getTaskId, list)); | 
|         if (taskItems.isEmpty()) { | 
|             return; | 
|         } | 
|   | 
|         List<TaskLog> taskLogs = new ArrayList<>(); | 
|         tasks.forEach(task -> { | 
|             TaskLog taskLog = new TaskLog(); | 
|             BeanUtils.copyProperties(task, taskLog); | 
|             taskLog.setTaskId(task.getId()).setId(null); | 
|             taskLogs.add(taskLog); | 
|         }); | 
|         if (!taskLogService.saveBatch(taskLogs)) { | 
|             throw new CoolException("任务历史档保存失败!!"); | 
|         } | 
|         List<TaskItemLog >itemLogs = new ArrayList<>(); | 
|   | 
|         taskItems.forEach(item -> { | 
|             TaskItemLog itemLog = new TaskItemLog(); | 
|             BeanUtils.copyProperties(item, itemLog); | 
|             itemLog.setId(null).setTaskItemId(item.getId()); | 
|             itemLogs.add(itemLog); | 
|         }); | 
|   | 
|         if (!taskItemLogService.saveBatch(itemLogs)) { | 
|             throw new CoolException("任务明细历史档保存失败!!"); | 
|         } | 
|   | 
|         if (!taskService.removeByIds(list)) { | 
|             throw new CoolException("原始任务删除失败!!"); | 
|         } | 
|         List<Long> itemIds = taskItems.stream().map(TaskItem::getId).collect(Collectors.toList()); | 
|   | 
|         if (!taskItemService.removeByIds(itemIds)) { | 
|             throw new CoolException("原始任务明细删除失败!!"); | 
|         } | 
|   | 
|     } | 
| } |