Commit e1a480e6385938c31595b586b207b1c8c2b77631

Authored by 肖超群
1 parent ec78344f

WMS-WIS 任务

huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wms/service/WmsService.java
... ... @@ -13,7 +13,38 @@ public interface WmsService {
13 13 */
14 14 Result sendWmsTask(WmsEntity wmsEntity);
15 15  
  16 + /**
  17 + * 创建入库任务
  18 + * @param wmsEntity
  19 + * @return
  20 + */
16 21 Result createReceiptTask(WmsEntity wmsEntity);
17 22  
  23 + /**
  24 + * 创建出库任务
  25 + * @param wmsEntity
  26 + * @return
  27 + */
18 28 Result createShipmentTask(WmsEntity wmsEntity);
  29 +
  30 + /**
  31 + * 创建空托入库
  32 + * @param wmsEntity
  33 + * @return
  34 + */
  35 + Result createEmptyIn(WmsEntity wmsEntity);
  36 +
  37 + /**
  38 + * 创建空托出库
  39 + * @param wmsEntity
  40 + * @return
  41 + */
  42 + Result createEmptyOut(WmsEntity wmsEntity);
  43 +
  44 + /**
  45 + * 创建出库查看
  46 + * @param wmsEntity
  47 + * @return
  48 + */
  49 + Result createCheckOut(WmsEntity wmsEntity);
19 50 }
... ...
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;
2 2  
3 3 import java.util.ArrayList;
4 4 import java.util.List;
  5 +import java.util.stream.Collectors;
5 6  
6 7 import javax.annotation.Resource;
7 8  
... ... @@ -21,6 +22,10 @@ import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptHeaderService
21 22 import org.jeecg.modules.wms.receipt.receiving.domain.Receive;
22 23 import org.jeecg.modules.wms.receipt.receiving.service.IReceiveService;
23 24 import org.jeecg.modules.wms.shipment.shipmentCombination.service.IShipmentCombinationService;
  25 +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerDetail;
  26 +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.entity.ShipmentContainerHeader;
  27 +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.service.IShipmentContainerDetailService;
  28 +import org.jeecg.modules.wms.shipment.shipmentContainerHeader.service.IShipmentContainerHeaderService;
24 29 import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail;
25 30 import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentHeader;
26 31 import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentDetailService;
... ... @@ -62,6 +67,10 @@ public class WmsServiceImpl implements WmsService {
62 67 private IShipmentDetailService shipmentDetailService;
63 68 @Resource
64 69 private IShipmentCombinationService shipmentCombinationService;
  70 + @Resource
  71 + private IShipmentContainerHeaderService shipmentContainerHeaderService;
  72 + @Resource
  73 + private IShipmentContainerDetailService shipmentContainerDetailService;
65 74  
66 75 @Override
67 76 @Transactional(rollbackFor = Exception.class)
... ... @@ -75,8 +84,11 @@ public class WmsServiceImpl implements WmsService {
75 84 break;
76 85 case QuantityConstant.TASK_TYPE_WHOLESHIPMENT:
77 86 case QuantityConstant.TASK_TYPE_SORTINGSHIPMENT:
  87 + result = wmsService.createShipmentTask(wmsEntity);
  88 + break;
  89 + case QuantityConstant.TASK_TYPE_EMPTYRECEIPT:
  90 + result = wmsService.createReceiptTask(wmsEntity);
78 91 break;
79   -
80 92 }
81 93 return result;
82 94 }
... ... @@ -113,6 +125,9 @@ public class WmsServiceImpl implements WmsService {
113 125 erpReceipt.setReceiptHeader(erpReceiptHeader);
114 126 erpReceipt.setReceiptDetailList(erpReceiptDetailList);
115 127 Result result = erpService.receipt(erpReceipt);
  128 + if (!result.isSuccess()) {
  129 + return result;
  130 + }
116 131 ReceiptHeader receiptHeader = receiptHeaderService.getReceiptHeaderByReferCode(referCode, warehouseCode);
117 132 if (receiptHeader == null) {
118 133 return Result.error("WMS下发入库任务失败,没有找到匹配的入库单, 上游单号:" + referCode);
... ... @@ -143,9 +158,9 @@ public class WmsServiceImpl implements WmsService {
143 158 throw new JeecgBootException("WMS下发入库任务失败");
144 159 }
145 160 receiptContainerHeader.setToPort(toPort);
146   - boolean success = receiptContainerHeaderService.updateById(receiptContainerHeader);
  161 + boolean success = receiptContainerHeaderService.updateToPortById(toPort, receiptContainerHeader.getId());
147 162 if (!success) {
148   - throw new JeecgBootException("MES下发入库信息,更新入库组盘头失败");
  163 + throw new JeecgBootException("WMS下发入库信息,更新入库组盘头失败");
149 164 }
150 165 return huahengMultiHandlerService.createReceiptTask(receiptContainerHeader, warehouseCode);
151 166 }
... ... @@ -161,19 +176,6 @@ public class WmsServiceImpl implements WmsService {
161 176 if (wmsInventoryList == null) {
162 177 return Result.error("WMS下发出库任务失败,库存为空");
163 178 }
164   - ShipmentHeader shipmentHeader = shipmentHeaderService.getShipmentHeaderByReferCode(referCode, warehouseCode);
165   - if (shipmentHeader == null) {
166   - return Result.error("MES下发出库信息,没有找到匹配的出库单, 上游单号:" + referCode);
167   - }
168   - String shipmentCode = shipmentHeader.getCode();
169   - if (StringUtils.isEmpty(shipmentCode)) {
170   - return Result.error("MES下发出库信息,出库单号为空");
171   - }
172   - List<ShipmentDetail> shipmentDetailList = shipmentDetailService.selectByMainId(String.valueOf(shipmentHeader.getId()));
173   - if (shipmentDetailList == null || shipmentDetailList.size() == 0) {
174   - return Result.error("MES下发出库信息,没有找到匹配的出库单详情, 上游单号:" + referCode);
175   - }
176   -
177 179 ErpShipment erpShipment = new ErpShipment();
178 180 ErpShipmentHeader erpShipmentHeader = new ErpShipmentHeader();
179 181 List<ErpShipmentDetail> erpShipmentDetailList = new ArrayList<>();
... ... @@ -182,16 +184,98 @@ public class WmsServiceImpl implements WmsService {
182 184 erpShipmentHeader.setReferCode(referCode);
183 185 erpShipmentHeader.setRemark(remark);
184 186 erpShipmentHeader.setWarehouseCode(warehouseCode);
185   - for (ShipmentDetail shipmentDetail : shipmentDetailList) {
  187 + for (WmsInventory wmsInventory : wmsInventoryList) {
186 188 ErpShipmentDetail erpShipmentDetail = new ErpShipmentDetail();
187   - erpShipmentDetail.setMaterialCode(shipmentDetail.getMaterialCode());
188   - erpShipmentDetail.setBatch(shipmentDetail.getBatch());
  189 + erpShipmentDetail.setMaterialCode(wmsInventory.getMaterialCode());
  190 + erpShipmentDetail.setBatch(wmsInventory.getBatch());
  191 + erpShipmentDetail.setInventoryStatus(wmsInventory.getInventoryStatus());
  192 + erpShipmentDetail.setQty(wmsInventory.getQty());
  193 + erpShipmentDetailList.add(erpShipmentDetail);
  194 + }
  195 + erpShipment.setShipmentHeader(erpShipmentHeader);
  196 + erpShipment.setShipmentDetailList(erpShipmentDetailList);
  197 + Result result = erpService.shipment(erpShipment);
  198 + if (!result.isSuccess()) {
  199 + return result;
  200 + }
  201 + ShipmentHeader shipmentHeader = shipmentHeaderService.getShipmentHeaderByReferCode(referCode, warehouseCode);
  202 + if (shipmentHeader == null) {
  203 + return Result.error("WMS下发出库信息,没有找到匹配的出库单, 上游单号:" + referCode);
  204 + }
  205 + String shipmentCode = shipmentHeader.getCode();
  206 + if (StringUtils.isEmpty(shipmentCode)) {
  207 + return Result.error("WMS下发出库信息,出库单号为空");
  208 + }
  209 + List<ShipmentDetail> shipmentDetailList = shipmentDetailService.selectByMainId(String.valueOf(shipmentHeader.getId()));
  210 + if (shipmentDetailList == null || shipmentDetailList.size() == 0) {
  211 + return Result.error("WMS下发出库信息,没有找到匹配的出库单详情, 上游单号:" + referCode);
189 212 }
190   - Result result = shipmentCombinationService.autoCombination(shipmentCode, warehouseCode);
  213 + result = shipmentCombinationService.autoCombination(shipmentCode, warehouseCode);
191 214 if (!result.isSuccess()) {
192   - throw new JeecgBootException("MES下发出库信息," + result.getMessage());
  215 + throw new JeecgBootException("WMS下发出库信息," + result.getMessage());
193 216 }
194   - return null;
  217 + List<ShipmentContainerDetail> shipmentContainerDetailList = shipmentContainerDetailService.getShipmentContainerDetailListByShipmentCode(shipmentCode);
  218 + if (shipmentContainerDetailList == null) {
  219 + throw new JeecgBootException("WMS下发出库信息, 没有找到出库配盘详情");
  220 + }
  221 + List<Integer> shipmentContainerIdList =
  222 + shipmentContainerDetailList.stream().map(ShipmentContainerDetail::getShipmentContainerId).distinct().collect(Collectors.toList());
  223 + long shipmentOrder = System.currentTimeMillis();
  224 + int sequenceNumber = shipmentContainerIdList.size();
  225 + int sequence = 0;
  226 + for (int shipmentContainerId : shipmentContainerIdList) {
  227 + sequence++;
  228 + ShipmentContainerHeader shipmentContainerHeader = shipmentContainerHeaderService.getById(shipmentContainerId);
  229 + if (shipmentContainerHeader == null) {
  230 + throw new JeecgBootException("WMS下发出库信息,没有找到出库表头:" + shipmentContainerId);
  231 + }
  232 + shipmentContainerHeader.setToPort(toPort);
  233 + boolean success = shipmentContainerHeaderService.updateById(shipmentContainerHeader);
  234 + if (!success) {
  235 + throw new JeecgBootException("WMS下发出库信息,更新出库组盘头失败");
  236 + }
  237 + result = huahengMultiHandlerService.createShipmentTask(shipmentContainerHeader, warehouseCode, shipmentOrder, sequence, sequenceNumber);
  238 + if (!result.isSuccess()) {
  239 + throw new JeecgBootException(result.getMessage());
  240 + }
  241 + }
  242 + return Result.ok("WMS下发出库信息成功");
  243 + }
  244 +
  245 + @Override
  246 + @Transactional(rollbackFor = Exception.class)
  247 + public Result createEmptyIn(WmsEntity wmsEntity) {
  248 + String warehouseCode = wmsEntity.getWarehouseCode();
  249 + String toPort = wmsEntity.getToPort();
  250 + String referCode = wmsEntity.getTaskNo();
  251 + String contaienrCode = wmsEntity.getContainerCode();
  252 +
  253 + Result result = taskHeaderService.createEmptyIn(contaienrCode, QuantityConstant.EMPTY_STRING, warehouseCode);
  254 + return result;
  255 + }
  256 +
  257 + @Override
  258 + @Transactional(rollbackFor = Exception.class)
  259 + public Result createEmptyOut(WmsEntity wmsEntity) {
  260 + String warehouseCode = wmsEntity.getWarehouseCode();
  261 + String toPort = wmsEntity.getToPort();
  262 + String referCode = wmsEntity.getTaskNo();
  263 + String contaienrCode = wmsEntity.getContainerCode();
  264 +
  265 + Result result = taskHeaderService.createEmptyOut(contaienrCode, toPort, warehouseCode);
  266 + return result;
  267 + }
  268 +
  269 + @Override
  270 + @Transactional(rollbackFor = Exception.class)
  271 + public Result createCheckOut(WmsEntity wmsEntity) {
  272 + String warehouseCode = wmsEntity.getWarehouseCode();
  273 + String toPort = wmsEntity.getToPort();
  274 + String referCode = wmsEntity.getTaskNo();
  275 + String contaienrCode = wmsEntity.getContainerCode();
  276 +
  277 + Result result = taskHeaderService.createCheckOutTask(contaienrCode, toPort, warehouseCode);
  278 + return result;
195 279 }
196 280  
197 281 }
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/IReceiptContainerHeaderService.java
... ... @@ -54,11 +54,15 @@ public interface IReceiptContainerHeaderService extends IService&lt;ReceiptContaine
54 54 /**
55 55 * 取消组盘
56 56 */
57   - public Result cancelReceiving(Integer id);
  57 + Result cancelReceiving(Integer id);
58 58  
59 59 /**
60 60 * 批量取消组盘
61 61 */
62   - public Result cancelReceiving(List<Integer> ids);
  62 + Result cancelReceiving(List<Integer> ids);
63 63  
  64 + /**
  65 + * 更新去向port
  66 + */
  67 + boolean updateToPortById(String toPort, int id);
64 68 }
... ...
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&lt;ReceiptContai
438 438 return result;
439 439 }
440 440  
  441 + @Override
  442 + public boolean updateToPortById(String toPort, int id) {
  443 + ReceiptContainerHeader receiptContainerHeader = new ReceiptContainerHeader();
  444 + receiptContainerHeader.setToPort(toPort);
  445 + receiptContainerHeader.setId(id);
  446 + boolean success = updateById(receiptContainerHeader);
  447 + return success;
  448 + }
  449 +
441 450 }
... ...
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/service/IShipmentContainerHeaderService.java
... ... @@ -72,4 +72,12 @@ public interface IShipmentContainerHeaderService extends IService&lt;ShipmentContai
72 72 */
73 73 boolean updateStatusById(int status, int id);
74 74  
  75 + /**
  76 + * 根据托盘号找到未完成任务的出库配盘头
  77 + * @param containerCode
  78 + * @param warehouseCode
  79 + * @return
  80 + */
  81 + ShipmentContainerHeader getUnCompleteShipmentContainerByCode(String containerCode, String warehouseCode);
  82 +
75 83 }
... ...
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&lt;ShipmentCont
265 265 return success;
266 266 }
267 267  
  268 + @Override
  269 + public ShipmentContainerHeader getUnCompleteShipmentContainerByCode(String containerCode, String warehouseCode) {
  270 + LambdaQueryWrapper<ShipmentContainerHeader> shipmentContainerHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
  271 + shipmentContainerHeaderLambdaQueryWrapper.eq(ShipmentContainerHeader::getContainerCode, containerCode)
  272 + .eq(ShipmentContainerHeader::getWarehouseCode, warehouseCode).lt(ShipmentContainerHeader::getStatus, QuantityConstant.SHIPMENT_CONTAINER_FINISHED);
  273 + ShipmentContainerHeader shipmentContainerHeader = getOne(shipmentContainerHeaderLambdaQueryWrapper);
  274 + return shipmentContainerHeader;
  275 + }
  276 +
268 277 }
... ...