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;
|
/**
|
* @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("原始任务明细删除失败!!");
|
}
|
|
}
|
}
|