Commit e1a480e6385938c31595b586b207b1c8c2b77631
1 parent
ec78344f
WMS-WIS 任务
Showing
6 changed files
with
169 additions
and
24 deletions
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wms/service/WmsService.java
@@ -13,7 +13,38 @@ public interface WmsService { | @@ -13,7 +13,38 @@ public interface WmsService { | ||
13 | */ | 13 | */ |
14 | Result sendWmsTask(WmsEntity wmsEntity); | 14 | Result sendWmsTask(WmsEntity wmsEntity); |
15 | 15 | ||
16 | + /** | ||
17 | + * 创建入库任务 | ||
18 | + * @param wmsEntity | ||
19 | + * @return | ||
20 | + */ | ||
16 | Result createReceiptTask(WmsEntity wmsEntity); | 21 | Result createReceiptTask(WmsEntity wmsEntity); |
17 | 22 | ||
23 | + /** | ||
24 | + * 创建出库任务 | ||
25 | + * @param wmsEntity | ||
26 | + * @return | ||
27 | + */ | ||
18 | Result createShipmentTask(WmsEntity wmsEntity); | 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,6 +2,7 @@ package org.jeecg.modules.wms.api.wms.service; | ||
2 | 2 | ||
3 | import java.util.ArrayList; | 3 | import java.util.ArrayList; |
4 | import java.util.List; | 4 | import java.util.List; |
5 | +import java.util.stream.Collectors; | ||
5 | 6 | ||
6 | import javax.annotation.Resource; | 7 | import javax.annotation.Resource; |
7 | 8 | ||
@@ -21,6 +22,10 @@ import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptHeaderService | @@ -21,6 +22,10 @@ import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptHeaderService | ||
21 | import org.jeecg.modules.wms.receipt.receiving.domain.Receive; | 22 | import org.jeecg.modules.wms.receipt.receiving.domain.Receive; |
22 | import org.jeecg.modules.wms.receipt.receiving.service.IReceiveService; | 23 | import org.jeecg.modules.wms.receipt.receiving.service.IReceiveService; |
23 | import org.jeecg.modules.wms.shipment.shipmentCombination.service.IShipmentCombinationService; | 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 | import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail; | 29 | import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentDetail; |
25 | import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentHeader; | 30 | import org.jeecg.modules.wms.shipment.shipmentHeader.entity.ShipmentHeader; |
26 | import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentDetailService; | 31 | import org.jeecg.modules.wms.shipment.shipmentHeader.service.IShipmentDetailService; |
@@ -62,6 +67,10 @@ public class WmsServiceImpl implements WmsService { | @@ -62,6 +67,10 @@ public class WmsServiceImpl implements WmsService { | ||
62 | private IShipmentDetailService shipmentDetailService; | 67 | private IShipmentDetailService shipmentDetailService; |
63 | @Resource | 68 | @Resource |
64 | private IShipmentCombinationService shipmentCombinationService; | 69 | private IShipmentCombinationService shipmentCombinationService; |
70 | + @Resource | ||
71 | + private IShipmentContainerHeaderService shipmentContainerHeaderService; | ||
72 | + @Resource | ||
73 | + private IShipmentContainerDetailService shipmentContainerDetailService; | ||
65 | 74 | ||
66 | @Override | 75 | @Override |
67 | @Transactional(rollbackFor = Exception.class) | 76 | @Transactional(rollbackFor = Exception.class) |
@@ -75,8 +84,11 @@ public class WmsServiceImpl implements WmsService { | @@ -75,8 +84,11 @@ public class WmsServiceImpl implements WmsService { | ||
75 | break; | 84 | break; |
76 | case QuantityConstant.TASK_TYPE_WHOLESHIPMENT: | 85 | case QuantityConstant.TASK_TYPE_WHOLESHIPMENT: |
77 | case QuantityConstant.TASK_TYPE_SORTINGSHIPMENT: | 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 | break; | 91 | break; |
79 | - | ||
80 | } | 92 | } |
81 | return result; | 93 | return result; |
82 | } | 94 | } |
@@ -113,6 +125,9 @@ public class WmsServiceImpl implements WmsService { | @@ -113,6 +125,9 @@ public class WmsServiceImpl implements WmsService { | ||
113 | erpReceipt.setReceiptHeader(erpReceiptHeader); | 125 | erpReceipt.setReceiptHeader(erpReceiptHeader); |
114 | erpReceipt.setReceiptDetailList(erpReceiptDetailList); | 126 | erpReceipt.setReceiptDetailList(erpReceiptDetailList); |
115 | Result result = erpService.receipt(erpReceipt); | 127 | Result result = erpService.receipt(erpReceipt); |
128 | + if (!result.isSuccess()) { | ||
129 | + return result; | ||
130 | + } | ||
116 | ReceiptHeader receiptHeader = receiptHeaderService.getReceiptHeaderByReferCode(referCode, warehouseCode); | 131 | ReceiptHeader receiptHeader = receiptHeaderService.getReceiptHeaderByReferCode(referCode, warehouseCode); |
117 | if (receiptHeader == null) { | 132 | if (receiptHeader == null) { |
118 | return Result.error("WMS下发入库任务失败,没有找到匹配的入库单, 上游单号:" + referCode); | 133 | return Result.error("WMS下发入库任务失败,没有找到匹配的入库单, 上游单号:" + referCode); |
@@ -143,9 +158,9 @@ public class WmsServiceImpl implements WmsService { | @@ -143,9 +158,9 @@ public class WmsServiceImpl implements WmsService { | ||
143 | throw new JeecgBootException("WMS下发入库任务失败"); | 158 | throw new JeecgBootException("WMS下发入库任务失败"); |
144 | } | 159 | } |
145 | receiptContainerHeader.setToPort(toPort); | 160 | receiptContainerHeader.setToPort(toPort); |
146 | - boolean success = receiptContainerHeaderService.updateById(receiptContainerHeader); | 161 | + boolean success = receiptContainerHeaderService.updateToPortById(toPort, receiptContainerHeader.getId()); |
147 | if (!success) { | 162 | if (!success) { |
148 | - throw new JeecgBootException("MES下发入库信息,更新入库组盘头失败"); | 163 | + throw new JeecgBootException("WMS下发入库信息,更新入库组盘头失败"); |
149 | } | 164 | } |
150 | return huahengMultiHandlerService.createReceiptTask(receiptContainerHeader, warehouseCode); | 165 | return huahengMultiHandlerService.createReceiptTask(receiptContainerHeader, warehouseCode); |
151 | } | 166 | } |
@@ -161,19 +176,6 @@ public class WmsServiceImpl implements WmsService { | @@ -161,19 +176,6 @@ public class WmsServiceImpl implements WmsService { | ||
161 | if (wmsInventoryList == null) { | 176 | if (wmsInventoryList == null) { |
162 | return Result.error("WMS下发出库任务失败,库存为空"); | 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 | ErpShipment erpShipment = new ErpShipment(); | 179 | ErpShipment erpShipment = new ErpShipment(); |
178 | ErpShipmentHeader erpShipmentHeader = new ErpShipmentHeader(); | 180 | ErpShipmentHeader erpShipmentHeader = new ErpShipmentHeader(); |
179 | List<ErpShipmentDetail> erpShipmentDetailList = new ArrayList<>(); | 181 | List<ErpShipmentDetail> erpShipmentDetailList = new ArrayList<>(); |
@@ -182,16 +184,98 @@ public class WmsServiceImpl implements WmsService { | @@ -182,16 +184,98 @@ public class WmsServiceImpl implements WmsService { | ||
182 | erpShipmentHeader.setReferCode(referCode); | 184 | erpShipmentHeader.setReferCode(referCode); |
183 | erpShipmentHeader.setRemark(remark); | 185 | erpShipmentHeader.setRemark(remark); |
184 | erpShipmentHeader.setWarehouseCode(warehouseCode); | 186 | erpShipmentHeader.setWarehouseCode(warehouseCode); |
185 | - for (ShipmentDetail shipmentDetail : shipmentDetailList) { | 187 | + for (WmsInventory wmsInventory : wmsInventoryList) { |
186 | ErpShipmentDetail erpShipmentDetail = new ErpShipmentDetail(); | 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 | if (!result.isSuccess()) { | 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<ReceiptContaine | @@ -54,11 +54,15 @@ public interface IReceiptContainerHeaderService extends IService<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<ReceiptContai | @@ -438,4 +438,13 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai | ||
438 | return result; | 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<ShipmentContai | @@ -72,4 +72,12 @@ public interface IShipmentContainerHeaderService extends IService<ShipmentContai | ||
72 | */ | 72 | */ |
73 | boolean updateStatusById(int status, int id); | 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<ShipmentCont | @@ -265,4 +265,13 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont | ||
265 | return success; | 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 | } |