no message

main
HUOJIN\92525 2024-07-15 17:03:01 +08:00
parent 80b45283b4
commit 2862fdef4f
1 changed files with 67 additions and 71 deletions

View File

@ -427,102 +427,98 @@ public class MlsServiceImpl implements MlsService {
if (inventoryListFuture.join().isEmpty()) { if (inventoryListFuture.join().isEmpty()) {
throw new RuntimeException("无库存信息!"); throw new RuntimeException("无库存信息!");
} }
List<String> errorMsgList = new ArrayList<>(); try {
inventoryListFuture.thenAccept((result) -> { inventoryListFuture.thenAccept((result) -> {
//目标点 //目标点
/*Point endPoint = redisObjectUtils.getObjectFromCache("ckjbk", () -> pointService.findByCode(null, BaseStatus.FREE, null, "出库接驳口", null), /*Point endPoint = redisObjectUtils.getObjectFromCache("ckjbk", () -> pointService.findByCode(null, BaseStatus.FREE, null, "出库接驳口", null),
"系统无此点位!");*/ "系统无此点位!");*/
List<Inventory> inventoryToUpdate = new ArrayList<>(); List<Inventory> inventoryToUpdate = new ArrayList<>();
List<PickDetail> pickDetailToCreate = new ArrayList<>(); List<PickDetail> pickDetailToCreate = new ArrayList<>();
List<AgvTask> agvTaskToCreate = new ArrayList<>(); List<AgvTask> agvTaskToCreate = new ArrayList<>();
List<Task> taskToCreate = new ArrayList<>(); List<Task> taskToCreate = new ArrayList<>();
for (Inventory inv : result) { for (Inventory inv : result) {
/* 按顺序获取出库接驳点*/ /* 按顺序获取出库接驳点*/
Point endPoint; Point endPoint;
List<Point> pointList = pointRepository.findByAreaAndStatus("出库接驳口", BaseStatus.FREE); List<Point> pointList = pointRepository.findByAreaAndStatus("出库接驳口", BaseStatus.FREE);
if (pointList.size() < 1) { if (pointList.size() < 1) {
errorMsgList.add(inv.getItemKey().getPropC1() + "标签分配无空闲缓存位!"); throw new RuntimeException("无空闲出库接驳口!");
continue; /* 出库接驳口无空闲库位,更新状态重新分配*/
/* 出库接驳口无空闲库位,更新状态重新分配*/
/*pointList = pointRepository.findByAreaAndStatus("出库接驳口", BaseStatus.USED); /*pointList = pointRepository.findByAreaAndStatus("出库接驳口", BaseStatus.USED);
for (Point p : pointList) { for (Point p : pointList) {
p.setStatus(BaseStatus.FREE); p.setStatus(BaseStatus.FREE);
pointRepository.save(p); pointRepository.save(p);
}*/ }*/
} }
endPoint = pointList.get(0); endPoint = pointList.get(0);
endPoint.setStatus(BaseStatus.USED); endPoint.setStatus(BaseStatus.USED);
pointRepository.save(endPoint); pointRepository.save(endPoint);
//根据库存信息生成叫料任务 //根据库存信息生成叫料任务
Stock stock = inv.getStock();//容器 Stock stock = inv.getStock();//容器
Point startPoint = inv.getPoint();//起始点位 Point startPoint = inv.getPoint();//起始点位
ItemKey itemKey = inv.getItemKey(); ItemKey itemKey = inv.getItemKey();
Item item = inv.getItemKey().getItem(); Item item = inv.getItemKey().getItem();
//更新库存信息 //更新库存信息
inventoryToUpdate.add(updateInventory(inv)); inventoryToUpdate.add(updateInventory(inv));
//生成出库明细 //生成出库明细
PickDetail pd = createPickDetail(item, inv.getBillCode(), itemKey.getPropC1(), inv.getQuantity(), issueInfo.getTaskNumber()); PickDetail pd = createPickDetail(item, inv.getBillCode(), itemKey.getPropC1(), inv.getQuantity(), issueInfo.getTaskNumber());
pickDetailToCreate.add(pd); pickDetailToCreate.add(pd);
//生成搬运任务 //生成搬运任务
AgvTask agvTask = new AgvTask(BizStatus.PICK, stock.getCode(), startPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, "PICKER_MOVE"); AgvTask agvTask = new AgvTask(BizStatus.PICK, stock.getCode(), startPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, "PICKER_MOVE");
agvTaskToCreate.add(agvTask); agvTaskToCreate.add(agvTask);
//生成Task //生成Task
Task task = createTask(item, itemKey, pd, inv.getBillCode(), stock, startPoint, endPoint, agvTask, inv); Task task = createTask(item, itemKey, pd, inv.getBillCode(), stock, startPoint, endPoint, agvTask, inv);
taskToCreate.add(task); taskToCreate.add(task);
}
ExecutorService executor = ThreadPoolExecutorUtil.getPoll("getIssueInfo-job");
// 批量更新库存信息
CompletableFuture<Void> inventoryFuture = CompletableFuture.runAsync(() -> {
//批量更新库存信息
if (!inventoryToUpdate.isEmpty()) {
batchCreateOrUpdate.batchUpdate(inventoryToUpdate);
} }
}, executor); ExecutorService executor = ThreadPoolExecutorUtil.getPoll("getIssueInfo-job");
// 批量更新库存信息
CompletableFuture<Void> inventoryFuture = CompletableFuture.runAsync(() -> {
//批量更新库存信息
if (!inventoryToUpdate.isEmpty()) {
batchCreateOrUpdate.batchUpdate(inventoryToUpdate);
}
}, executor);
CompletableFuture<Void> pickDetailFuture = inventoryFuture.thenRunAsync(() -> { CompletableFuture<Void> pickDetailFuture = inventoryFuture.thenRunAsync(() -> {
//批量生成叫料明细 //批量生成叫料明细
if (!pickDetailToCreate.isEmpty()) { if (!pickDetailToCreate.isEmpty()) {
batchCreateOrUpdate.batchCreate(pickDetailToCreate); batchCreateOrUpdate.batchCreate(pickDetailToCreate);
} }
}, executor); }, executor);
CompletableFuture<Void> agvTaskFuture = pickDetailFuture.thenRunAsync(() -> { CompletableFuture<Void> agvTaskFuture = pickDetailFuture.thenRunAsync(() -> {
// 批量生成agv任务 // 批量生成agv任务
if (!agvTaskToCreate.isEmpty()) { if (!agvTaskToCreate.isEmpty()) {
batchCreateOrUpdate.batchCreate(agvTaskToCreate); batchCreateOrUpdate.batchCreate(agvTaskToCreate);
} }
}, executor); }, executor);
CompletableFuture<Void> taskFuture = agvTaskFuture.thenRunAsync(() -> { CompletableFuture<Void> taskFuture = agvTaskFuture.thenRunAsync(() -> {
// 批量生成任务 // 批量生成任务
if (!taskToCreate.isEmpty()) { if (!taskToCreate.isEmpty()) {
batchCreateOrUpdate.batchCreate(taskToCreate); batchCreateOrUpdate.batchCreate(taskToCreate);
} }
}, executor); }, executor);
taskFuture.join(); taskFuture.join();
executor.shutdown(); executor.shutdown();
}); }).join();
} catch (Exception e) {
if (!errorMsgList.isEmpty()) { throw new RuntimeException(e.getMessage());
throw new RuntimeException(errorMsgList.toString());
} }
} }
private void processInventory(Inventory inv, Point endPoint) { private void processInventory(Inventory inv, Point endPoint) {