Commit 2693f41e4caa17d9f760815cb2a22051e7ab73e3
1 parent
4cffe7ee
完善悬臂库移库
Showing
6 changed files
with
158 additions
and
37 deletions
ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
@@ -197,7 +197,7 @@ | @@ -197,7 +197,7 @@ | ||
197 | <a-button type="primary">组盘</a-button> | 197 | <a-button type="primary">组盘</a-button> |
198 | </a> | 198 | </a> |
199 | <a v-show="(record.lastStatus < 800 && record.firstStatus >= 15 && record.firstStatus != '20' && record.totallines != null ) || (flowOff == '0' && record.lastStatus < 800 && record.totallines != null) " @click="receiveB(record)" v-has="'receiptHeader:receive'"> | 199 | <a v-show="(record.lastStatus < 800 && record.firstStatus >= 15 && record.firstStatus != '20' && record.totallines != null ) || (flowOff == '0' && record.lastStatus < 800 && record.totallines != null) " @click="receiveB(record)" v-has="'receiptHeader:receive'"> |
200 | - <a-button type="primary">线圈组盘</a-button> | 200 | + <a-button type="primary">悬臂库组盘</a-button> |
201 | </a> | 201 | </a> |
202 | <a v-show="record.firstStatus == '0' && flowOff == '1'" @click="createAudit(record)"><a-button type="primary">提交审核</a-button></a> | 202 | <a v-show="record.firstStatus == '0' && flowOff == '1'" @click="createAudit(record)"><a-button type="primary">提交审核</a-button></a> |
203 | <a v-show="record.nextAuditor == username && flowOff == '1'" @click="audit(record)"><a-button type="primary">审核</a-button></a> | 203 | <a v-show="record.nextAuditor == username && flowOff == '1'" @click="audit(record)"><a-button type="primary">审核</a-button></a> |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryDetailService.java
@@ -165,7 +165,7 @@ public interface IInventoryDetailService extends IService<InventoryDetail> { | @@ -165,7 +165,7 @@ public interface IInventoryDetailService extends IService<InventoryDetail> { | ||
165 | 165 | ||
166 | Result shipmentCheck(List<ShipmentContainerAdvice> shipmentContainerAdviceList, String warehouseCode); | 166 | Result shipmentCheck(List<ShipmentContainerAdvice> shipmentContainerAdviceList, String warehouseCode); |
167 | 167 | ||
168 | - boolean updateInventoryDetailPositionByContainerCode(String containerCode, String warehouseCode); | 168 | + boolean updateInventoryDetailPositionByLocationCode(String locationCode, String warehouseCode); |
169 | 169 | ||
170 | 170 | ||
171 | } | 171 | } |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryDetailServiceImpl.java
@@ -838,9 +838,12 @@ public class InventoryDetailServiceImpl extends ServiceImpl<InventoryDetailMappe | @@ -838,9 +838,12 @@ public class InventoryDetailServiceImpl extends ServiceImpl<InventoryDetailMappe | ||
838 | } | 838 | } |
839 | 839 | ||
840 | @Override | 840 | @Override |
841 | - public boolean updateInventoryDetailPositionByContainerCode(String containerCode, String warehouseCode) { | ||
842 | - List<InventoryDetail> inventoryDetailList = inventoryDetailService.getInventoryDetailListByContainerCode(containerCode, warehouseCode); | 841 | + public boolean updateInventoryDetailPositionByLocationCode(String location, String warehouseCode) { |
842 | + List<InventoryDetail> inventoryDetailList = inventoryDetailService.getInventoryDetailListByLocationCode(location, warehouseCode); | ||
843 | int position = 1; | 843 | int position = 1; |
844 | + if (CollectionUtils.isEmpty(inventoryDetailList)) { | ||
845 | + return true; | ||
846 | + } | ||
844 | List<InventoryDetail> updateInventoryDetailList = new ArrayList<>(); | 847 | List<InventoryDetail> updateInventoryDetailList = new ArrayList<>(); |
845 | for (InventoryDetail inventoryDetail : inventoryDetailList) { | 848 | for (InventoryDetail inventoryDetail : inventoryDetailList) { |
846 | InventoryDetail updateInventoryDetail = new InventoryDetail(); | 849 | InventoryDetail updateInventoryDetail = new InventoryDetail(); |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskDetail.java
@@ -204,6 +204,11 @@ public class TaskDetail implements Serializable { | @@ -204,6 +204,11 @@ public class TaskDetail implements Serializable { | ||
204 | @ApiModelProperty(value = "备用字段3") | 204 | @ApiModelProperty(value = "备用字段3") |
205 | private String userdef3; | 205 | private String userdef3; |
206 | 206 | ||
207 | + /** 位置 */ | ||
208 | + @Excel(name = "位置", width = 15) | ||
209 | + @ApiModelProperty(value = "位置") | ||
210 | + private Integer position; | ||
211 | + | ||
207 | /** 创建人 */ | 212 | /** 创建人 */ |
208 | @ApiModelProperty(value = "创建人") | 213 | @ApiModelProperty(value = "创建人") |
209 | private String createBy; | 214 | private String createBy; |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/ITaskHeaderService.java
@@ -113,6 +113,12 @@ public interface ITaskHeaderService extends IService<TaskHeader> { | @@ -113,6 +113,12 @@ public interface ITaskHeaderService extends IService<TaskHeader> { | ||
113 | Result calculateLocationThickness(List<InventoryDetail> inventoryDetailList, String locationCode, int maxThickness, String warehouseCode); | 113 | Result calculateLocationThickness(List<InventoryDetail> inventoryDetailList, String locationCode, int maxThickness, String warehouseCode); |
114 | 114 | ||
115 | /** | 115 | /** |
116 | + * 判断库位长度是否超限 | ||
117 | + * @return | ||
118 | + */ | ||
119 | + boolean judgeLocationThickness(List<InventoryDetail> inventoryDetailList, String locationCode, int maxThickness, String warehouseCode); | ||
120 | + | ||
121 | + /** | ||
116 | * 取消任务,恢复数据 | 122 | * 取消任务,恢复数据 |
117 | * @param taskHeader | 123 | * @param taskHeader |
118 | * @return | 124 | * @return |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
@@ -1153,8 +1153,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | @@ -1153,8 +1153,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | ||
1153 | 1153 | ||
1154 | if (taskHeader.getZoneCode().equals(QuantityConstant.ZONE_B)) { | 1154 | if (taskHeader.getZoneCode().equals(QuantityConstant.ZONE_B)) { |
1155 | taskHeaderService.freshLocationThickness(taskId); | 1155 | taskHeaderService.freshLocationThickness(taskId); |
1156 | - if(!inventoryDetailService.updateInventoryDetailPositionByContainerCode(taskHeader.getContainerCode(), taskHeader.getWarehouseCode())) { | ||
1157 | - throw new JeecgBootException("完成任务,更新库存位置失败"); | 1156 | + if(!inventoryDetailService.updateInventoryDetailPositionByLocationCode(taskHeader.getFromLocationCode(), taskHeader.getWarehouseCode())) { |
1157 | + throw new JeecgBootException("完成任务,更新起始库存位置失败"); | ||
1158 | + } | ||
1159 | + if(!inventoryDetailService.updateInventoryDetailPositionByLocationCode(taskHeader.getToLocationCode(), taskHeader.getWarehouseCode())) { | ||
1160 | + throw new JeecgBootException("完成任务,更新目标库存位置失败"); | ||
1158 | } | 1161 | } |
1159 | } | 1162 | } |
1160 | return result; | 1163 | return result; |
@@ -1213,6 +1216,27 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | @@ -1213,6 +1216,27 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | ||
1213 | 1216 | ||
1214 | @Override | 1217 | @Override |
1215 | @Transactional(rollbackFor = Exception.class) | 1218 | @Transactional(rollbackFor = Exception.class) |
1219 | + public boolean judgeLocationThickness(List<InventoryDetail> inventoryDetailList, String locationCode, int maxThickness, String warehouseCode) { | ||
1220 | + int totalThickness = 0; | ||
1221 | + for (InventoryDetail inventoryDetail : inventoryDetailList) { | ||
1222 | + String materialCode = inventoryDetail.getMaterialCode(); | ||
1223 | + BigDecimal qty = inventoryDetail.getQty(); | ||
1224 | + Material material = materialService.getMaterialByCode(materialCode); | ||
1225 | + if (material == null) { | ||
1226 | + throw new JeecgBootException("判断库位厚度失败,没有找到物料信息" + materialCode); | ||
1227 | + } | ||
1228 | + int thickness = material.getThickness(); | ||
1229 | + int gap = material.getGap(); | ||
1230 | + totalThickness = totalThickness + (thickness + gap) * qty.intValue(); | ||
1231 | + } | ||
1232 | + if (totalThickness > maxThickness) { | ||
1233 | + throw new JeecgBootException("判断库位厚度失败,计算出的长度" + totalThickness + "超过最大值" + maxThickness); | ||
1234 | + } | ||
1235 | + return true; | ||
1236 | + } | ||
1237 | + | ||
1238 | + @Override | ||
1239 | + @Transactional(rollbackFor = Exception.class) | ||
1216 | public Result cancelTask(Integer taskId) { | 1240 | public Result cancelTask(Integer taskId) { |
1217 | TaskHeader taskHeader = this.getById(taskId); | 1241 | TaskHeader taskHeader = this.getById(taskId); |
1218 | if (taskHeader == null) { | 1242 | if (taskHeader == null) { |
@@ -1532,6 +1556,17 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | @@ -1532,6 +1556,17 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | ||
1532 | return Result.error("创建移库任务失败,起始库位:" + fromLocationCode + "和目标库位:" + toLocationCode + "是同一个"); | 1556 | return Result.error("创建移库任务失败,起始库位:" + fromLocationCode + "和目标库位:" + toLocationCode + "是同一个"); |
1533 | } | 1557 | } |
1534 | String containerCode = fromLocation.getContainerCode(); | 1558 | String containerCode = fromLocation.getContainerCode(); |
1559 | + | ||
1560 | + List<InventoryDetail> toInventoryDetailList = inventoryDetailService.getInventoryDetailListByLocationCode(toLocationCode, warehouseCode); | ||
1561 | + List<InventoryDetail> totalInventoryDetailList = new ArrayList<>(); | ||
1562 | + if (CollectionUtils.isNotEmpty(toInventoryDetailList)) { | ||
1563 | + totalInventoryDetailList.addAll(toInventoryDetailList); | ||
1564 | + } | ||
1565 | + totalInventoryDetailList.addAll(fromInventoryDetailList); | ||
1566 | + if(!taskHeaderService.judgeLocationThickness(totalInventoryDetailList, toLocationCode, toLocation.getMaxThickness(), warehouseCode)) { | ||
1567 | + return Result.error("创建移库任务时,校验库位厚度失败,移库后库位超出最大凑度"); | ||
1568 | + } | ||
1569 | + | ||
1535 | // 这里增加组盘校验,如果此托盘存在未完成的组盘数据,则不能移库 | 1570 | // 这里增加组盘校验,如果此托盘存在未完成的组盘数据,则不能移库 |
1536 | // 校验入库组盘 | 1571 | // 校验入库组盘 |
1537 | if (receiptContainerHeaderService.havaUnCompleteCombineByLocationCode(fromLocationCode, warehouseCode)) { | 1572 | if (receiptContainerHeaderService.havaUnCompleteCombineByLocationCode(fromLocationCode, warehouseCode)) { |
@@ -1612,6 +1647,12 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | @@ -1612,6 +1647,12 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | ||
1612 | throw new JeecgBootException("创建任务时,更新巷道值失败"); | 1647 | throw new JeecgBootException("创建任务时,更新巷道值失败"); |
1613 | } | 1648 | } |
1614 | List<TaskDetail> taskDetailList = new ArrayList<>(); | 1649 | List<TaskDetail> taskDetailList = new ArrayList<>(); |
1650 | + fromInventoryDetailList = fromInventoryDetailList.stream().sorted(new Comparator<InventoryDetail>() { | ||
1651 | + @Override | ||
1652 | + public int compare(InventoryDetail o1, InventoryDetail o2) { | ||
1653 | + return o1.getPosition() - o2.getPosition(); | ||
1654 | + } | ||
1655 | + }).collect(Collectors.toList()); | ||
1615 | for (InventoryDetail inventoryDetail : fromInventoryDetailList) { | 1656 | for (InventoryDetail inventoryDetail : fromInventoryDetailList) { |
1616 | TaskDetail taskDetail = new TaskDetail(); | 1657 | TaskDetail taskDetail = new TaskDetail(); |
1617 | taskDetail.setTaskHeaderId(taskHeader.getId()); | 1658 | taskDetail.setTaskHeaderId(taskHeader.getId()); |
@@ -1628,6 +1669,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | @@ -1628,6 +1669,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | ||
1628 | taskDetail.setMaterialName(inventoryDetail.getMaterialName()); | 1669 | taskDetail.setMaterialName(inventoryDetail.getMaterialName()); |
1629 | taskDetail.setMaterialUnit(inventoryDetail.getMaterialUnit()); | 1670 | taskDetail.setMaterialUnit(inventoryDetail.getMaterialUnit()); |
1630 | taskDetail.setQty(inventoryDetail.getQty()); | 1671 | taskDetail.setQty(inventoryDetail.getQty()); |
1672 | + taskDetail.setPosition(inventoryDetail.getPosition()); | ||
1631 | taskDetailList.add(taskDetail); | 1673 | taskDetailList.add(taskDetail); |
1632 | } | 1674 | } |
1633 | success = taskDetailService.saveBatch(taskDetailList); | 1675 | success = taskDetailService.saveBatch(taskDetailList); |
@@ -2027,9 +2069,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | @@ -2027,9 +2069,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | ||
2027 | if (!success) { | 2069 | if (!success) { |
2028 | throw new JeecgBootException("完成入库任务时,保存库存交易失败"); | 2070 | throw new JeecgBootException("完成入库任务时,保存库存交易失败"); |
2029 | } | 2071 | } |
2030 | - if (!taskHeaderService.combineInventoryDetail(containerCode, warehouseCode)) { | ||
2031 | - throw new JeecgBootException("完成入库任务时, 合并入库库存失败"); | ||
2032 | - } | 2072 | +// if (!taskHeaderService.combineInventoryDetail(containerCode, warehouseCode)) { |
2073 | +// throw new JeecgBootException("完成入库任务时, 合并入库库存失败"); | ||
2074 | +// } | ||
2033 | List<Integer> receiptIdList = receiptDetaiList.stream().map(ReceiptDetail::getReceiptId).distinct().collect(Collectors.toList()); | 2075 | List<Integer> receiptIdList = receiptDetaiList.stream().map(ReceiptDetail::getReceiptId).distinct().collect(Collectors.toList()); |
2034 | for (Integer receiptId : receiptIdList) { | 2076 | for (Integer receiptId : receiptIdList) { |
2035 | success = receiptHeaderService.updateReceiptHeaderStatus(receiptId); | 2077 | success = receiptHeaderService.updateReceiptHeaderStatus(receiptId); |
@@ -2377,6 +2419,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | @@ -2377,6 +2419,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | ||
2377 | InventoryDetail inventoryDetail2 = inventoryDetailList.get(j); | 2419 | InventoryDetail inventoryDetail2 = inventoryDetailList.get(j); |
2378 | if (inventoryDetail1.getMaterialCode().equals(inventoryDetail2.getMaterialCode()) && inventoryDetail1.getBatch().equals(inventoryDetail2.getBatch()) | 2420 | if (inventoryDetail1.getMaterialCode().equals(inventoryDetail2.getMaterialCode()) && inventoryDetail1.getBatch().equals(inventoryDetail2.getBatch()) |
2379 | && inventoryDetail1.getLot().equals(inventoryDetail2.getLot()) && inventoryDetail1.getProject().equals(inventoryDetail2.getProject()) | 2421 | && inventoryDetail1.getLot().equals(inventoryDetail2.getLot()) && inventoryDetail1.getProject().equals(inventoryDetail2.getProject()) |
2422 | + && inventoryDetail1.getPosition().equals(inventoryDetail2.getPosition()) | ||
2380 | && inventoryDetail1.getInventoryStatus().equals(inventoryDetail2.getInventoryStatus())) { | 2423 | && inventoryDetail1.getInventoryStatus().equals(inventoryDetail2.getInventoryStatus())) { |
2381 | // 属性一样的库存,相加合并。 | 2424 | // 属性一样的库存,相加合并。 |
2382 | if (StringUtils.isNotEmpty(inventoryDetail1.getSn())) { | 2425 | if (StringUtils.isNotEmpty(inventoryDetail1.getSn())) { |
@@ -2602,8 +2645,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | @@ -2602,8 +2645,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | ||
2602 | if (toLocation == null) { | 2645 | if (toLocation == null) { |
2603 | return Result.error("创建分拣任务时," + toLocationCode + "目标库位不存在"); | 2646 | return Result.error("创建分拣任务时," + toLocationCode + "目标库位不存在"); |
2604 | } | 2647 | } |
2605 | - if (StringUtils.isNotEmpty(toLocation.getContainerCode())) { | ||
2606 | - return Result.error("创建分拣任务时," + toLocationCode + "上已存在容器" + toLocation.getContainerCode()); | 2648 | + String toZoneCode = toLocation.getZoneCode(); |
2649 | + if (!toZoneCode.equals(QuantityConstant.ZONE_B)) { | ||
2650 | + if (StringUtils.isNotEmpty(toLocation.getContainerCode())) { | ||
2651 | + return Result.error("创建分拣任务时," + toLocationCode + "上已存在容器" + toLocation.getContainerCode()); | ||
2652 | + } | ||
2607 | } | 2653 | } |
2608 | if (!QuantityConstant.STATUS_LOCATION_EMPTY.equals(toLocation.getStatus())) { | 2654 | if (!QuantityConstant.STATUS_LOCATION_EMPTY.equals(toLocation.getStatus())) { |
2609 | return Result.error("创建分拣任务时, 目标库位非空闲"); | 2655 | return Result.error("创建分拣任务时, 目标库位非空闲"); |
@@ -3480,6 +3526,12 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | @@ -3480,6 +3526,12 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | ||
3480 | if (CollectionUtils.isEmpty(taskDetailList)) { | 3526 | if (CollectionUtils.isEmpty(taskDetailList)) { |
3481 | return Result.error("完成移库任务时, 任务详情为空"); | 3527 | return Result.error("完成移库任务时, 任务详情为空"); |
3482 | } | 3528 | } |
3529 | + taskDetailList = taskDetailList.stream().sorted(new Comparator<TaskDetail>() { | ||
3530 | + @Override | ||
3531 | + public int compare(TaskDetail o1, TaskDetail o2) { | ||
3532 | + return o1.getPosition() - o2.getPosition(); | ||
3533 | + } | ||
3534 | + }).collect(Collectors.toList()); | ||
3483 | List<InventoryTransaction> inventoryTransactionList = new ArrayList<>(); | 3535 | List<InventoryTransaction> inventoryTransactionList = new ArrayList<>(); |
3484 | for (TaskDetail taskDetail : taskDetailList) { | 3536 | for (TaskDetail taskDetail : taskDetailList) { |
3485 | int inventoryDetailId = taskDetail.getFromInventoryDetailId(); | 3537 | int inventoryDetailId = taskDetail.getFromInventoryDetailId(); |
@@ -3534,43 +3586,98 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | @@ -3534,43 +3586,98 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea | ||
3534 | if(!inventoryDetailService.saveBatch(inventoryDetailList)) { | 3586 | if(!inventoryDetailService.saveBatch(inventoryDetailList)) { |
3535 | throw new JeecgBootException("完成移库任务时,保存库存失败"); | 3587 | throw new JeecgBootException("完成移库任务时,保存库存失败"); |
3536 | } | 3588 | } |
3537 | - Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), QuantityConstant.TASK_TYPE_TRANSFER, | ||
3538 | - containerCode, fromLocationCode, toLocationCode, warehouseCode); | ||
3539 | - if (!result.isSuccess()) { | ||
3540 | - throw new JeecgBootException(result.getMessage()); | ||
3541 | - } | 3589 | +// Result result = taskHeaderService.completeTaskUnLockContainerAndLocation(taskHeader.getContainerFillStatus(), QuantityConstant.TASK_TYPE_TRANSFER, |
3590 | +// containerCode, fromLocationCode, toLocationCode, warehouseCode); | ||
3591 | +// if (!result.isSuccess()) { | ||
3592 | +// throw new JeecgBootException(result.getMessage()); | ||
3593 | +// } | ||
3542 | success = taskHeaderService.updateStatusById(QuantityConstant.TASK_STATUS_COMPLETED, taskHeader.getId()); | 3594 | success = taskHeaderService.updateStatusById(QuantityConstant.TASK_STATUS_COMPLETED, taskHeader.getId()); |
3543 | if (!success) { | 3595 | if (!success) { |
3544 | throw new JeecgBootException("完成移库任务时, 更新任务失败"); | 3596 | throw new JeecgBootException("完成移库任务时, 更新任务失败"); |
3545 | } | 3597 | } |
3546 | List<InventoryDetail> fromInventoryDetailList = inventoryDetailService.getInventoryDetailListByLocationCode(fromLocationCode, warehouseCode); | 3598 | List<InventoryDetail> fromInventoryDetailList = inventoryDetailService.getInventoryDetailListByLocationCode(fromLocationCode, warehouseCode); |
3547 | - if (CollectionUtils.isNotEmpty(fromInventoryDetailList)) { | ||
3548 | - Container fromContainer = containerService.createLSContainer(warehouseCode); | ||
3549 | - String fromContainerCode = fromContainer.getCode(); | ||
3550 | - if (!containerService.updateLocationCode(fromContainerCode, fromLocationCode, warehouseCode)) { | ||
3551 | - throw new JeecgBootException("完成移库任务时,更新容器失败"); | ||
3552 | - } | ||
3553 | - if (!locationService.updateContainerCode(fromLocationCode, fromContainerCode, warehouseCode)) { | ||
3554 | - throw new JeecgBootException("完成移库任务时,更新库位失败"); | 3599 | + InventoryHeader toInventoryHeader = inventoryHeaderService.getInventoryHeaderByLocationCode(toLocationCode, warehouseCode); |
3600 | + String toContainerCode = null; | ||
3601 | + if (toInventoryHeader == null) { | ||
3602 | + Container toContainer = containerService.createLSContainer(warehouseCode); | ||
3603 | + toContainerCode = toContainer.getCode(); | ||
3604 | + } else { | ||
3605 | + toContainerCode = toInventoryHeader.getContainerCode(); | ||
3606 | + } | ||
3607 | + if (CollectionUtils.isEmpty(fromInventoryDetailList)) { | ||
3608 | + if (!containerService.updateLocationCodeAndStatus(containerCode, QuantityConstant.EMPTY_STRING, QuantityConstant.STATUS_CONTAINER_EMPTY, warehouseCode)) { | ||
3609 | + throw new JeecgBootException("完成移库任务时,更新起始容器失败"); | ||
3555 | } | 3610 | } |
3556 | - InventoryHeader inventoryHeader = inventoryHeaderService.getInventoryHeaderByLocationCode(fromLocationCode, warehouseCode); | ||
3557 | - if (inventoryHeader == null) { | ||
3558 | - throw new JeecgBootException("完成移库任务时,没有找到库存头" + fromContainerCode); | 3611 | + if (!locationService.updateContainerCodeAndStatus(fromLocationCode, QuantityConstant.EMPTY_STRING, QuantityConstant.STATUS_CONTAINER_EMPTY, warehouseCode)) { |
3612 | + throw new JeecgBootException("完成移库任务时,更新起始库位失败"); | ||
3559 | } | 3613 | } |
3560 | - if (!inventoryHeaderService.updateContainerCodeById(containerCode, inventoryHeader.getId())) { | ||
3561 | - throw new JeecgBootException("完成移库任务时,更新库存头失败"); | 3614 | + } else { |
3615 | + if (!containerService.updateStatus(containerCode, QuantityConstant.STATUS_CONTAINER_EMPTY, warehouseCode)) { | ||
3616 | + throw new JeecgBootException("完成移库任务时,更新起始容器失败"); | ||
3562 | } | 3617 | } |
3563 | - List<InventoryDetail> updateInventoryList = new ArrayList<>(); | ||
3564 | - for (InventoryDetail inventoryDetail : fromInventoryDetailList) { | ||
3565 | - InventoryDetail inventoryDetail1 = new InventoryDetail(); | ||
3566 | - inventoryDetail1.setContainerCode(fromContainerCode); | ||
3567 | - inventoryDetail1.setId(inventoryDetail.getId()); | ||
3568 | - updateInventoryList.add(inventoryDetail1); | 3618 | + if (!locationService.updateStatus(fromLocationCode, QuantityConstant.STATUS_CONTAINER_EMPTY, warehouseCode)) { |
3619 | + throw new JeecgBootException("完成移库任务时,更新起始库位失败"); | ||
3569 | } | 3620 | } |
3570 | - if (!inventoryDetailService.updateBatchById(updateInventoryList)) { | ||
3571 | - throw new JeecgBootException("完成移库任务时,更新库存明细失败"); | 3621 | + } |
3622 | + if (!containerService.updateLocationCode(toContainerCode, toLocationCode, warehouseCode)) { | ||
3623 | + throw new JeecgBootException("完成移库任务时,更新目标容器失败"); | ||
3624 | + } | ||
3625 | + if (!locationService.updateContainerCodeAndStatus(toLocationCode, toContainerCode, QuantityConstant.STATUS_CONTAINER_EMPTY, warehouseCode)) { | ||
3626 | + throw new JeecgBootException("完成移库任务时,更新目标库位失败"); | ||
3627 | + } | ||
3628 | + if (toInventoryHeader == null) { | ||
3629 | + InventoryHeader inventoryHeader = new InventoryHeader(); | ||
3630 | + inventoryHeader.setContainerCode(toContainerCode); | ||
3631 | + inventoryHeader.setLocationCode(toLocationCode); | ||
3632 | + inventoryHeader.setWarehouseCode(warehouseCode); | ||
3633 | + inventoryHeader.setContainerStatus(QuantityConstant.STATUS_CONTAINER_EMPTY); | ||
3634 | + inventoryHeader.setEnable(QuantityConstant.STATUS_ENABLE); | ||
3635 | + inventoryHeader.setRoadWay(taskHeader.getRoadWay()); | ||
3636 | + if(!inventoryHeaderService.save(inventoryHeader)) { | ||
3637 | + throw new JeecgBootException("完成移库任务时,完成库存头失败"); | ||
3572 | } | 3638 | } |
3639 | + toInventoryHeader = inventoryHeader; | ||
3640 | + } | ||
3641 | + List<InventoryDetail> updateInventoryList = new ArrayList<>(); | ||
3642 | + for (InventoryDetail inventoryDetail : inventoryDetailList) { | ||
3643 | + InventoryDetail inventoryDetail1 = new InventoryDetail(); | ||
3644 | + inventoryDetail1.setContainerCode(toContainerCode); | ||
3645 | + inventoryDetail1.setInventoryHeaderId(toInventoryHeader.getId()); | ||
3646 | + inventoryDetail1.setId(inventoryDetail.getId()); | ||
3647 | + updateInventoryList.add(inventoryDetail1); | ||
3648 | + } | ||
3649 | + if (!inventoryDetailService.updateBatchById(updateInventoryList)) { | ||
3650 | + throw new JeecgBootException("完成移库任务时,更新库存明细失败"); | ||
3651 | + } | ||
3573 | 3652 | ||
3653 | + if (!inventoryHeaderService.updateInventoryContainerStatusByContainerCode(containerCode, warehouseCode)) { | ||
3654 | + throw new JeecgBootException("完成移库任务时,更新托盘状态失败1"); | ||
3655 | + } | ||
3656 | + if (!inventoryHeaderService.updateInventoryContainerStatusByContainerCode(toContainerCode, warehouseCode)) { | ||
3657 | + throw new JeecgBootException("完成移库任务时,更新托盘状态失败2"); | ||
3658 | + } | ||
3659 | + success = inventoryHeaderService.updateInventory(containerCode, fromLocationCode, warehouseCode); | ||
3660 | + if (!success) { | ||
3661 | + throw new JeecgBootException("完成移库任务时, 更新库存信息失败1"); | ||
3662 | + } | ||
3663 | + success = inventoryHeaderService.updateInventory(toContainerCode, toLocationCode, warehouseCode); | ||
3664 | + if (!success) { | ||
3665 | + throw new JeecgBootException("完成移库任务时, 更新库存信息失败2"); | ||
3666 | + } | ||
3667 | + if (CollectionUtils.isNotEmpty(fromInventoryDetailList)) { | ||
3668 | + success = taskHeaderService.combineInventoryDetail(containerCode, warehouseCode); | ||
3669 | + if (!success) { | ||
3670 | + throw new JeecgBootException("完成移库任务时, 更新库存失败1"); | ||
3671 | + } | ||
3672 | + } else { | ||
3673 | + InventoryHeader fromInventoryHeader = inventoryHeaderService.getInventoryHeaderByLocationCode(fromLocationCode, warehouseCode); | ||
3674 | + if (!inventoryHeaderService.removeById(fromInventoryHeader.getId())) { | ||
3675 | + throw new JeecgBootException("调整库存,删除托盘:" + containerCode + "库存失败"); | ||
3676 | + } | ||
3677 | + } | ||
3678 | + success = taskHeaderService.combineInventoryDetail(toContainerCode, warehouseCode); | ||
3679 | + if (!success) { | ||
3680 | + throw new JeecgBootException("完成移库任务时, 更新库存失败2"); | ||
3574 | } | 3681 | } |
3575 | log.info("完成移库任务" + taskHeader.getId()); | 3682 | log.info("完成移库任务" + taskHeader.getId()); |
3576 | return Result.OK("完成移库任务成功"); | 3683 | return Result.OK("完成移库任务成功"); |