diff --git a/oms_web/oms_vue/src/views/inventory/outer/components/GenerateDeliveryForm.vue b/oms_web/oms_vue/src/views/inventory/outer/components/GenerateDeliveryForm.vue index a3781882..ab72c159 100644 --- a/oms_web/oms_vue/src/views/inventory/outer/components/GenerateDeliveryForm.vue +++ b/oms_web/oms_vue/src/views/inventory/outer/components/GenerateDeliveryForm.vue @@ -285,8 +285,33 @@ export default { // } }, handleSelectPurchaseBeforeAssign() { + // 指定发货直接使用当前选中的采购单号 + if (!this.activePurchaseNo) { + this.$message.error('请先选择一个采购单标签页'); + return; + } + + // 从已绑定的采购单列表中找到当前选中的采购单信息 + const currentPurchase = this.filteredPurchaseOrderList.find( + purchase => purchase.purchaseNo === this.activePurchaseNo + ); + + if (!currentPurchase) { + this.$message.error('未找到当前选中的采购单信息'); + return; + } + + // 设置采购单信息 + this.warehouseId = currentPurchase.warehouseId; + this.warehouseName = currentPurchase.warehouseName; + this.price = currentPurchase.price; + this.taxRate = currentPurchase.taxRate; + this.form.purchaseNo = currentPurchase.purchaseNo; + this.form.itemId = currentPurchase.itemId; + + // 直接触发文件选择 this.isAssignMode = true; - this.purchaseOrderSelectVisible = true; + this.handleAssign(); }, handlePurchaseOrderSelect(order) { // 如果是指定发货模式,需要验证选择的采购单是否在已绑定列表中 @@ -365,7 +390,6 @@ export default { formData.append('productCode', this.productData.productCode); formData.append('orderType', this.productData.orderType); formData.append('purchaseNo', this.form.purchaseNo); - formData.append('itemId', this.form.itemId); assignDeliverySnData(formData).then(response => { this.$message.success('指定发货导入成功'); diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueInventoryOuterController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueInventoryOuterController.java index ecf7e4b1..a2d48384 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueInventoryOuterController.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueInventoryOuterController.java @@ -142,8 +142,7 @@ public class VueInventoryOuterController extends BaseController public AjaxResult assignDeliveryData(@RequestPart("file") MultipartFile file, @RequestParam(value = "productCode") String productCode, @RequestParam(value = "orderType", defaultValue = "1") String orderType, - @RequestParam(value = "purchaseNo") String purchaseNo, - @RequestParam(value = "itemId") Long itemId) { + @RequestParam(value = "purchaseNo") String purchaseNo) { ExcelUtil util = new ExcelUtil(InventoryInfoExcelDto.class); try (InputStream inputStream = file.getInputStream()) { @@ -152,7 +151,7 @@ public class VueInventoryOuterController extends BaseController return AjaxResult.error("导入数据为空"); } return AjaxResult.success(innerService.validateAndGetAssignDeliveryList( - inventoryInfoExcelDtoList, productCode, orderType, purchaseNo, itemId)); + inventoryInfoExcelDtoList, productCode, orderType, purchaseNo)); } catch (IOException e) { throw new ServiceException("读取excel错误,请联系管理员"); diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsInventoryInnerService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsInventoryInnerService.java index b0936911..2538ae92 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsInventoryInnerService.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IOmsInventoryInnerService.java @@ -66,5 +66,5 @@ public interface IOmsInventoryInnerService void importByOuter(List inventoryInfoList, String productCode, String purchaseNo,Long itemId); Map getInventoryInfoList(List inventoryInfoExcelDtoList, String productCode, String orderType); - Map validateAndGetAssignDeliveryList(List inventoryInfoExcelDtoList, String productCode, String orderType, String purchaseNo, Long itemId); + Map validateAndGetAssignDeliveryList(List inventoryInfoExcelDtoList, String productCode, String orderType, String purchaseNo); } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInventoryInnerServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInventoryInnerServiceImpl.java index 82e8bef0..41137f04 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInventoryInnerServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/OmsInventoryInnerServiceImpl.java @@ -374,7 +374,7 @@ public class OmsInventoryInnerServiceImpl implements IOmsInventoryInnerService { @Override public Map validateAndGetAssignDeliveryList(List inventoryInfoExcelDtoList, - String productCode, String orderType, String purchaseNo, Long itemId) { + String productCode, String orderType, String purchaseNo) { // 1. 判断文件中所有数据的产品编码是否相同 long distinctProductCodeCount = inventoryInfoExcelDtoList.stream() @@ -406,16 +406,17 @@ public class OmsInventoryInnerServiceImpl implements IOmsInventoryInnerService { .findFirst() .orElseThrow(() -> new ServiceException("文件中未找到入库价")); - // 3. 判断当前选择的采购单中是否存在这个产品编码 - List purchaseOrderItems = purchaseOrderService.listByItemId(itemId); + // 3. 通过purchaseNo和productCode查询采购单明细 + OmsPurchaseOrderItemDto query = new OmsPurchaseOrderItemDto(); + query.setPurchaseNo(purchaseNo); + query.setProductCode(productCode); + List purchaseOrderItems = purchaseOrderService.listItem(query); + if (CollUtil.isEmpty(purchaseOrderItems)) { throw new ServiceException("未找到采购单明细信息"); } - OmsPurchaseOrderItem matchedItem = purchaseOrderItems.stream() - .filter(item -> item.getProductCode().equals(productCode)) - .findFirst() - .orElseThrow(() -> new ServiceException("采购单中不存在产品编码:" + productCode)); + OmsPurchaseOrderItemDto matchedItem = purchaseOrderItems.get(0); // 4. 判断采购单中对应的产品价格是否和文件中的入库价相同 BigDecimal purchasePrice = matchedItem.getPrice();