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 | 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<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 | 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 | 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<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 | } |
... | ... |