From e1a480e6385938c31595b586b207b1c8c2b77631 Mon Sep 17 00:00:00 2001 From: youjie <272855983@qq.com> Date: Tue, 6 Jun 2023 11:32:13 +0800 Subject: [PATCH] WMS-WIS 任务 --- huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wms/service/WmsService.java | 31 +++++++++++++++++++++++++++++++ huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wms/service/WmsServiceImpl.java | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------- huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/IReceiptContainerHeaderService.java | 8 ++++++-- huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java | 9 +++++++++ huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/IShipmentContainerHeaderService.java | 8 ++++++++ huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/impl/ShipmentContainerHeaderServiceImpl.java | 9 +++++++++ 6 files changed, 169 insertions(+), 24 deletions(-) diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wms/service/WmsService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wms/service/WmsService.java index 71131bd..c341d92 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wms/service/WmsService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wms/service/WmsService.java @@ -13,7 +13,38 @@ public interface WmsService { */ Result sendWmsTask(WmsEntity wmsEntity); + /** + * 创建入库任务 + * @param wmsEntity + * @return + */ Result createReceiptTask(WmsEntity wmsEntity); + /** + * 创建出库任务 + * @param wmsEntity + * @return + */ Result createShipmentTask(WmsEntity wmsEntity); + + /** + * 创建空托入库 + * @param wmsEntity + * @return + */ + Result createEmptyIn(WmsEntity wmsEntity); + + /** + * 创建空托出库 + * @param wmsEntity + * @return + */ + Result createEmptyOut(WmsEntity wmsEntity); + + /** + * 创建出库查看 + * @param wmsEntity + * @return + */ + Result createCheckOut(WmsEntity wmsEntity); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wms/service/WmsServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wms/service/WmsServiceImpl.java index 897caae..02806bb 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wms/service/WmsServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wms/service/WmsServiceImpl.java @@ -2,6 +2,7 @@ package org.jeecg.modules.wms.api.wms.service; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import javax.annotation.Resource; @@ -21,6 +22,10 @@ import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptHeaderService import org.jeecg.modules.wms.receipt.receiving.domain.Receive; import org.jeecg.modules.wms.receipt.receiving.service.IReceiveService; import org.jeecg.modules.wms.shipment.shipmentCombination.service.IShipmentCombinationService; +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerDetail; +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerHeader; +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.service.IShipmentContainerDetailService; +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.service.IShipmentContainerHeaderService; import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail; import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentHeader; import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentDetailService; @@ -62,6 +67,10 @@ public class WmsServiceImpl implements WmsService { private IShipmentDetailService shipmentDetailService; @Resource private IShipmentCombinationService shipmentCombinationService; + @Resource + private IShipmentContainerHeaderService shipmentContainerHeaderService; + @Resource + private IShipmentContainerDetailService shipmentContainerDetailService; @Override @Transactional(rollbackFor = Exception.class) @@ -75,8 +84,11 @@ public class WmsServiceImpl implements WmsService { break; case QuantityConstant.TASK_TYPE_WHOLESHIPMENT: case QuantityConstant.TASK_TYPE_SORTINGSHIPMENT: + result = wmsService.createShipmentTask(wmsEntity); + break; + case QuantityConstant.TASK_TYPE_EMPTYRECEIPT: + result = wmsService.createReceiptTask(wmsEntity); break; - } return result; } @@ -113,6 +125,9 @@ public class WmsServiceImpl implements WmsService { erpReceipt.setReceiptHeader(erpReceiptHeader); erpReceipt.setReceiptDetailList(erpReceiptDetailList); Result result = erpService.receipt(erpReceipt); + if (!result.isSuccess()) { + return result; + } ReceiptHeader receiptHeader = receiptHeaderService.getReceiptHeaderByReferCode(referCode, warehouseCode); if (receiptHeader == null) { return Result.error("WMS下发入库任务失败,没有找到匹配的入库单, 上游单号:" + referCode); @@ -143,9 +158,9 @@ public class WmsServiceImpl implements WmsService { throw new JeecgBootException("WMS下发入库任务失败"); } receiptContainerHeader.setToPort(toPort); - boolean success = receiptContainerHeaderService.updateById(receiptContainerHeader); + boolean success = receiptContainerHeaderService.updateToPortById(toPort, receiptContainerHeader.getId()); if (!success) { - throw new JeecgBootException("MES下发入库信息,更新入库组盘头失败"); + throw new JeecgBootException("WMS下发入库信息,更新入库组盘头失败"); } return huahengMultiHandlerService.createReceiptTask(receiptContainerHeader, warehouseCode); } @@ -161,19 +176,6 @@ public class WmsServiceImpl implements WmsService { if (wmsInventoryList == null) { return Result.error("WMS下发出库任务失败,库存为空"); } - ShipmentHeader shipmentHeader = shipmentHeaderService.getShipmentHeaderByReferCode(referCode, warehouseCode); - if (shipmentHeader == null) { - return Result.error("MES下发出库信息,没有找到匹配的出库单, 上游单号:" + referCode); - } - String shipmentCode = shipmentHeader.getCode(); - if (StringUtils.isEmpty(shipmentCode)) { - return Result.error("MES下发出库信息,出库单号为空"); - } - List<ShipmentDetail> shipmentDetailList = shipmentDetailService.selectByMainId(String.valueOf(shipmentHeader.getId())); - if (shipmentDetailList == null || shipmentDetailList.size() == 0) { - return Result.error("MES下发出库信息,没有找到匹配的出库单详情, 上游单号:" + referCode); - } - ErpShipment erpShipment = new ErpShipment(); ErpShipmentHeader erpShipmentHeader = new ErpShipmentHeader(); List<ErpShipmentDetail> erpShipmentDetailList = new ArrayList<>(); @@ -182,16 +184,98 @@ public class WmsServiceImpl implements WmsService { erpShipmentHeader.setReferCode(referCode); erpShipmentHeader.setRemark(remark); erpShipmentHeader.setWarehouseCode(warehouseCode); - for (ShipmentDetail shipmentDetail : shipmentDetailList) { + for (WmsInventory wmsInventory : wmsInventoryList) { ErpShipmentDetail erpShipmentDetail = new ErpShipmentDetail(); - erpShipmentDetail.setMaterialCode(shipmentDetail.getMaterialCode()); - erpShipmentDetail.setBatch(shipmentDetail.getBatch()); + erpShipmentDetail.setMaterialCode(wmsInventory.getMaterialCode()); + erpShipmentDetail.setBatch(wmsInventory.getBatch()); + erpShipmentDetail.setInventoryStatus(wmsInventory.getInventoryStatus()); + erpShipmentDetail.setQty(wmsInventory.getQty()); + erpShipmentDetailList.add(erpShipmentDetail); + } + erpShipment.setShipmentHeader(erpShipmentHeader); + erpShipment.setShipmentDetailList(erpShipmentDetailList); + Result result = erpService.shipment(erpShipment); + if (!result.isSuccess()) { + return result; + } + ShipmentHeader shipmentHeader = shipmentHeaderService.getShipmentHeaderByReferCode(referCode, warehouseCode); + if (shipmentHeader == null) { + return Result.error("WMS下发出库信息,没有找到匹配的出库单, 上游单号:" + referCode); + } + String shipmentCode = shipmentHeader.getCode(); + if (StringUtils.isEmpty(shipmentCode)) { + return Result.error("WMS下发出库信息,出库单号为空"); + } + List<ShipmentDetail> shipmentDetailList = shipmentDetailService.selectByMainId(String.valueOf(shipmentHeader.getId())); + if (shipmentDetailList == null || shipmentDetailList.size() == 0) { + return Result.error("WMS下发出库信息,没有找到匹配的出库单详情, 上游单号:" + referCode); } - Result result = shipmentCombinationService.autoCombination(shipmentCode, warehouseCode); + result = shipmentCombinationService.autoCombination(shipmentCode, warehouseCode); if (!result.isSuccess()) { - throw new JeecgBootException("MES下发出库信息," + result.getMessage()); + throw new JeecgBootException("WMS下发出库信息," + result.getMessage()); } - return null; + List<ShipmentContainerDetail> shipmentContainerDetailList = shipmentContainerDetailService.getShipmentContainerDetailListByShipmentCode(shipmentCode); + if (shipmentContainerDetailList == null) { + throw new JeecgBootException("WMS下发出库信息, 没有找到出库配盘详情"); + } + List<Integer> shipmentContainerIdList = + shipmentContainerDetailList.stream().map(ShipmentContainerDetail::getShipmentContainerId).distinct().collect(Collectors.toList()); + long shipmentOrder = System.currentTimeMillis(); + int sequenceNumber = shipmentContainerIdList.size(); + int sequence = 0; + for (int shipmentContainerId : shipmentContainerIdList) { + sequence++; + ShipmentContainerHeader shipmentContainerHeader = shipmentContainerHeaderService.getById(shipmentContainerId); + if (shipmentContainerHeader == null) { + throw new JeecgBootException("WMS下发出库信息,没有找到出库表头:" + shipmentContainerId); + } + shipmentContainerHeader.setToPort(toPort); + boolean success = shipmentContainerHeaderService.updateById(shipmentContainerHeader); + if (!success) { + throw new JeecgBootException("WMS下发出库信息,更新出库组盘头失败"); + } + result = huahengMultiHandlerService.createShipmentTask(shipmentContainerHeader, warehouseCode, shipmentOrder, sequence, sequenceNumber); + if (!result.isSuccess()) { + throw new JeecgBootException(result.getMessage()); + } + } + return Result.ok("WMS下发出库信息成功"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result createEmptyIn(WmsEntity wmsEntity) { + String warehouseCode = wmsEntity.getWarehouseCode(); + String toPort = wmsEntity.getToPort(); + String referCode = wmsEntity.getTaskNo(); + String contaienrCode = wmsEntity.getContainerCode(); + + Result result = taskHeaderService.createEmptyIn(contaienrCode, QuantityConstant.EMPTY_STRING, warehouseCode); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result createEmptyOut(WmsEntity wmsEntity) { + String warehouseCode = wmsEntity.getWarehouseCode(); + String toPort = wmsEntity.getToPort(); + String referCode = wmsEntity.getTaskNo(); + String contaienrCode = wmsEntity.getContainerCode(); + + Result result = taskHeaderService.createEmptyOut(contaienrCode, toPort, warehouseCode); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result createCheckOut(WmsEntity wmsEntity) { + String warehouseCode = wmsEntity.getWarehouseCode(); + String toPort = wmsEntity.getToPort(); + String referCode = wmsEntity.getTaskNo(); + String contaienrCode = wmsEntity.getContainerCode(); + + Result result = taskHeaderService.createCheckOutTask(contaienrCode, toPort, warehouseCode); + return result; } } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/IReceiptContainerHeaderService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/IReceiptContainerHeaderService.java index df45ca0..2aedbe1 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/IReceiptContainerHeaderService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/IReceiptContainerHeaderService.java @@ -54,11 +54,15 @@ public interface IReceiptContainerHeaderService extends IService<ReceiptContaine /** * 取消组盘 */ - public Result cancelReceiving(Integer id); + Result cancelReceiving(Integer id); /** * 批量取消组盘 */ - public Result cancelReceiving(List<Integer> ids); + Result cancelReceiving(List<Integer> ids); + /** + * 更新去向port + */ + boolean updateToPortById(String toPort, int id); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java index e2d1781..ae4e579 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java @@ -438,4 +438,13 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai return result; } + @Override + public boolean updateToPortById(String toPort, int id) { + ReceiptContainerHeader receiptContainerHeader = new ReceiptContainerHeader(); + receiptContainerHeader.setToPort(toPort); + receiptContainerHeader.setId(id); + boolean success = updateById(receiptContainerHeader); + return success; + } + } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/IShipmentContainerHeaderService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/IShipmentContainerHeaderService.java index db27731..7af682b 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/IShipmentContainerHeaderService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/IShipmentContainerHeaderService.java @@ -72,4 +72,12 @@ public interface IShipmentContainerHeaderService extends IService<ShipmentContai */ boolean updateStatusById(int status, int id); + /** + * 根据托盘号找到未完成任务的出库配盘头 + * @param containerCode + * @param warehouseCode + * @return + */ + ShipmentContainerHeader getUnCompleteShipmentContainerByCode(String containerCode, String warehouseCode); + } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/impl/ShipmentContainerHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/impl/ShipmentContainerHeaderServiceImpl.java index 9b1109b..c35ffcb 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/impl/ShipmentContainerHeaderServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/impl/ShipmentContainerHeaderServiceImpl.java @@ -265,4 +265,13 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont return success; } + @Override + public ShipmentContainerHeader getUnCompleteShipmentContainerByCode(String containerCode, String warehouseCode) { + LambdaQueryWrapper<ShipmentContainerHeader> shipmentContainerHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); + shipmentContainerHeaderLambdaQueryWrapper.eq(ShipmentContainerHeader::getContainerCode, containerCode) + .eq(ShipmentContainerHeader::getWarehouseCode, warehouseCode).lt(ShipmentContainerHeader::getStatus, QuantityConstant.SHIPMENT_CONTAINER_FINISHED); + ShipmentContainerHeader shipmentContainerHeader = getOne(shipmentContainerHeaderLambdaQueryWrapper); + return shipmentContainerHeader; + } + } -- libgit2 0.22.2