From 86d11729527eba4c8bc7eaebf170086d834e19f4 Mon Sep 17 00:00:00 2001 From: liyuqi Date: Tue, 1 Apr 2025 13:35:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug:=201.=20=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E4=BB=BB=E5=8A=A1=E6=89=A7=E8=A1=8C=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=90=8E=E5=87=BA=E5=BA=93=E5=8D=95=E6=9C=AA=E5=88=A0=E9=99=A4?= =?UTF-8?q?=202.=20=E7=BB=99=E5=87=BA=E5=BA=93=E5=8D=95=E7=B1=BB=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0orderId=E5=AD=97=E6=AE=B5=203.=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=A0=B9=E6=8D=AElocationId=E8=8E=B7=E5=8F=96=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E7=9A=84equipmentId=204.=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=A7=BB=E5=BA=93=E5=90=8E=E8=BD=BD=E5=85=B7=E7=9A=84=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E6=9C=AA=E6=9B=B4=E6=96=B0=205.=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E4=BB=BB=E5=8A=A1=E8=BD=BD=E5=85=B7=E5=8F=B7?= =?UTF-8?q?=E9=87=8D=E5=A4=8D,=20=E4=BF=AE=E6=94=B9=E4=B8=BAsaveOrUpdate?= =?UTF-8?q?=206.=20=E5=88=A0=E9=99=A4TAppTask=E8=A1=A8=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E7=9A=84=E5=88=9B=E5=BB=BA=E4=B8=8E=E6=9B=B4=E6=96=B0=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/wms_main/dao/ITAppWcsTaskService.java | 3 + .../dao/impl/TAppWcsTaskServiceImpl.java | 15 +++++ .../com/wms_main/model/po/TAppWcsTask.java | 5 ++ .../serviceImpl/StackerTaskServiceImpl.java | 58 ++++++++++++++++++- .../quartz_job/job_executor/OutsExecutor.java | 43 +++++++------- .../job_executor/WcsStackerTaskSender.java | 18 +++--- 6 files changed, 111 insertions(+), 31 deletions(-) diff --git a/wms_serve_nantong_yachi/src/main/java/com/wms_main/dao/ITAppWcsTaskService.java b/wms_serve_nantong_yachi/src/main/java/com/wms_main/dao/ITAppWcsTaskService.java index f895cc1..422270f 100644 --- a/wms_serve_nantong_yachi/src/main/java/com/wms_main/dao/ITAppWcsTaskService.java +++ b/wms_serve_nantong_yachi/src/main/java/com/wms_main/dao/ITAppWcsTaskService.java @@ -12,4 +12,7 @@ public interface ITAppWcsTaskService extends IService { public Boolean existsTaskWithLocation(String Location); + public Integer getEquipmentByLocation(String Location); + + public Integer getDepthByLocation(String Location); } diff --git a/wms_serve_nantong_yachi/src/main/java/com/wms_main/dao/impl/TAppWcsTaskServiceImpl.java b/wms_serve_nantong_yachi/src/main/java/com/wms_main/dao/impl/TAppWcsTaskServiceImpl.java index 2effca3..04a160e 100644 --- a/wms_serve_nantong_yachi/src/main/java/com/wms_main/dao/impl/TAppWcsTaskServiceImpl.java +++ b/wms_serve_nantong_yachi/src/main/java/com/wms_main/dao/impl/TAppWcsTaskServiceImpl.java @@ -34,4 +34,19 @@ public class TAppWcsTaskServiceImpl extends ServiceImpl(stockMap.values()); if (!stockMap.isEmpty()) { @@ -679,6 +681,45 @@ public class StackerTaskServiceImpl implements IStackerTaskService { .eq(TAppTask::getVehicleId, vehicleId)); continue; } + // 当前载具的任务列表 + List thisVehicleOutTasks = vehicleIdToTaskMap.get(vehicleId); + for (TAppWcsTask outTask : thisVehicleOutTasks) { + String orderId = outTask.getOrderId(); + if (StringUtils.isEmpty(orderId)) { + continue; + } + // 查询订单信息 + TAppOrderOut order = appOrderOutService.getOne( + new LambdaQueryWrapper() + .eq(TAppOrderOut::getOrderId, orderId) + ); + if (order == null) { + log.warn("订单{}不存在,无法更新数量", orderId); + continue; + } + // 获取订单的商品属性 + String goodsId = order.getGoodsId(); + String batch = order.getBatch(); + int specification = order.getSpecification(); + + // 筛选匹配的库存并计算总数量 + int totalQty = appStockService.list(new LambdaQueryWrapper().eq(TAppStock::getVehicleId, vehicleId)).stream() + .filter(stock -> + goodsId.equals(stock.getGoodsId()) && batch.equals(stock.getBatch()) && specification == stock.getSled()) + .mapToInt(TAppStock::getTotalNum) + .sum(); + + if (totalQty > 0) { + int newQuantity = order.getQuantity() - totalQty; + // 更新订单数量 + appOrderOutService.update( + new LambdaUpdateWrapper() + .eq(TAppOrderOut::getOrderId, orderId) + .set(TAppOrderOut::getQuantity, newQuantity) + ); + } + } + // 释放当前库位 appLocationService.update(new LambdaUpdateWrapper() .set(TAppLocation::getIsOccupy, WmsLocationOccupyStatusEnums.EMPTY.getCode()) @@ -693,8 +734,18 @@ public class StackerTaskServiceImpl implements IStackerTaskService { // 更新当前载具对应的所有库存的状态为已出库 appStockService.remove(new LambdaUpdateWrapper() .eq(TAppStock::getVehicleId, vehicleId)); - // 当前载具的任务列表 - List thisVehicleOutTasks = vehicleIdToTaskMap.get(vehicleId); +// List orderIds = thisVehicleOutTasks.stream() +// .map(TAppWcsTask::getOrderId) +// .filter(Objects::nonNull) +// .distinct() +// .collect(Collectors.toList()); +// +// List thisVehicleOutOrders = orderIds.isEmpty() ? +// Collections.emptyList() : +// appOrderOutService.list( +// new LambdaQueryWrapper() +// .in(TAppOrderOut::getOrderId, orderIds) +// ); if (!thisVehicleOutTasks.isEmpty()) { // 存储出库记录 List stockOutRecordList = thisVehicleOutTasks.stream() @@ -719,5 +770,6 @@ public class StackerTaskServiceImpl implements IStackerTaskService { .in(TAppWcsTask::getWcsTaskId, thisVehicleOutTasks.stream().map(TAppWcsTask::getWcsTaskId).toList())); } } + appOrderOutService.remove(new LambdaUpdateWrapper().le(TAppOrderOut::getQuantity, 0)); } } diff --git a/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/quartz_job/job_executor/OutsExecutor.java b/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/quartz_job/job_executor/OutsExecutor.java index 15fb703..1532c18 100644 --- a/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/quartz_job/job_executor/OutsExecutor.java +++ b/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/quartz_job/job_executor/OutsExecutor.java @@ -101,26 +101,26 @@ public class OutsExecutor implements Job { } } - List appTaskList = new ArrayList<>(); - for (TAppStock stockItem : outStockList) { - TAppTask appTask = new TAppTask(); - appTask.setTaskId(UUIDUtils.getNewUUID()); - appTask.setTaskType(WmsTaskTypeEnums.OUT.getCode()); - appTask.setTaskStatus(WmsStackerTaskStatusEnums.WAIT.getCode()); - appTask.setTaskPriority(1); - appTask.setVehicleId(stockItem.getVehicleId()); - appTask.setOrigin(stockItem.getLocationId()); - appTask.setDestination(stockItem.getBarCode()); - appTask.setGoodsId(stockItem.getGoodsId()); - appTask.setBatch(stockItem.getBatch()); - appTask.setCreateTime(LocalDateTime.now()); - appTask.setOpNum(stockItem.getRealNum()); - appTask.setStockNum(0); - appTask.setOpUser("wms_order_out"); - appTask.setBatch(orderOut.getBatch()); - appTask.setCallStand(stockItem.getBarCode()); - appTaskList.add(appTask); - } +// List appTaskList = new ArrayList<>(); +// for (TAppStock stockItem : outStockList) { +// TAppTask appTask = new TAppTask(); +// appTask.setTaskId(UUIDUtils.getNewUUID()); +// appTask.setTaskType(WmsTaskTypeEnums.OUT.getCode()); +// appTask.setTaskStatus(WmsStackerTaskStatusEnums.WAIT.getCode()); +// appTask.setTaskPriority(1); +// appTask.setVehicleId(stockItem.getVehicleId()); +// appTask.setOrigin(stockItem.getLocationId()); +// appTask.setDestination(stockItem.getBarCode()); +// appTask.setGoodsId(stockItem.getGoodsId()); +// appTask.setBatch(stockItem.getBatch()); +// appTask.setCreateTime(LocalDateTime.now()); +// appTask.setOpNum(stockItem.getRealNum()); +// appTask.setStockNum(0); +// appTask.setOpUser("wms_order_out"); +// appTask.setBatch(orderOut.getBatch()); +// appTask.setCallStand(stockItem.getBarCode()); +// appTaskList.add(appTask); +// } List wcsTasks = new ArrayList<>(); for (TAppStock stockItem : outStockList) { TAppWcsTask wcsTask = new TAppWcsTask(); @@ -129,6 +129,7 @@ public class OutsExecutor implements Job { wcsTask.setWcsTaskStatus(WcsStackerTaskStatusEnums.INIT.getCode()); wcsTask.setTaskPriority(1); wcsTask.setVehicleId(stockItem.getVehicleId()); + wcsTask.setOrderId(orderOut.getOrderId()); wcsTask.setCreateTime(LocalDateTime.now()); wcsTask.setOrigin(stockItem.getLocationId()); wcsTask.setDestination(stockItem.getBarCode()); @@ -137,7 +138,7 @@ public class OutsExecutor implements Job { orderOut.setOrderStatus(OrderStatusEnum.RUNNING.getCode()); orderOutService.updateById(orderOut); - taskService.saveBatch(appTaskList); +// taskService.saveBatch(appTaskList); wcsTaskService.saveBatch(wcsTasks); stockService.updateBatchById(outStockList); } diff --git a/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/quartz_job/job_executor/WcsStackerTaskSender.java b/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/quartz_job/job_executor/WcsStackerTaskSender.java index a6836bc..5087441 100644 --- a/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/quartz_job/job_executor/WcsStackerTaskSender.java +++ b/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/quartz_job/job_executor/WcsStackerTaskSender.java @@ -8,10 +8,8 @@ import com.wms_main.constant.enums.wcs.WcsStackerTaskTypeEnums; import com.wms_main.constant.enums.wms.OrderStatusEnum; import com.wms_main.constant.enums.wms.WmsStackerTaskStatusEnums; import com.wms_main.constant.enums.wms.WmsStockStatusEnums; -import com.wms_main.dao.ITAppOrderOutService; -import com.wms_main.dao.ITAppStockService; -import com.wms_main.dao.ITAppTaskService; -import com.wms_main.dao.ITAppWcsTaskService; +import com.wms_main.constant.enums.wms.WmsVehicleStatusEnums; +import com.wms_main.dao.*; import com.wms_main.model.bo.wcs.WcsStackerTask; import com.wms_main.model.dto.request.wcs.WcsStackerTaskRequest; import com.wms_main.model.dto.response.wcs.WcsApiResponse; @@ -54,6 +52,8 @@ public class WcsStackerTaskSender implements Job { */ private final IStackerTaskService stackerTaskService; + private final ITAppVehicleService appVehicleService; + /** * 运行定时任务 * 向Wcs发送堆垛机任务 @@ -69,9 +69,8 @@ public class WcsStackerTaskSender implements Job { for (TAppWcsTask wcsTask : appWcsTasks) { String locationId = wcsTask.getOrigin(); String[] str_lst = locationId.split("-"); - int depth = Integer.parseInt(str_lst[str_lst.length - 1]); - int row = Integer.parseInt(str_lst[0].replace("A", "")); - int equipmentId = Math.round((float) (row + 1) / 2); + Integer equipmentId = appWcsTaskService.getEquipmentByLocation(locationId); + Integer depth = appWcsTaskService.getDepthByLocation(locationId); // 深度1, 直接出库 if (depth == 1) { WcsStackerTaskRequest request = new WcsStackerTaskRequest(); @@ -148,6 +147,11 @@ public class WcsStackerTaskSender implements Job { .eq(TAppStock::getLocationId, locationId) .eq(TAppStock::getStockStatus, WmsStockStatusEnums.OK.getCode()) .set(TAppStock::getLocationId, preLocation.getLocationId())); + appVehicleService.update( + new LambdaUpdateWrapper() + .eq(TAppVehicle::getLocationId, locationId) + .eq(TAppVehicle::getVehicleStatus, WmsVehicleStatusEnums.ON.getCode()) + .set(TAppVehicle::getLocationId, preLocation.getLocationId())); } } catch (Exception e) { log.error("堆垛机任务发送失败,任务号:{},载具号:{},起点:{},终点:{}。", request.getTaskId(), request.getVehicleNo(), request.getOrigin(), request.getDestination());