From 23317ed94a5e2d9b19c16627a70f9c7b69c908a2 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 29 十月 2026 16:36:54 +0800
Subject: [PATCH] feat: 发货支持无库存批号(未启用仓储模块的租户)
---
src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java | 25 ++++++++++++++++++++-----
1 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
index be34bc0..17909ec 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
@@ -85,7 +85,7 @@
throw new RuntimeException("鍙戣揣淇℃伅涓嶅瓨鍦�");
}
for (ShippingProductDetail shippingProductDetail : shippingProductDetails) {
- stockUtils.substractStock(shippingProductDetail.getProductModelId(), shippingProductDetail.getQuantity(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), req.getId(), shippingProductDetail.getBatchNo());
+ deductOrRecordStock(shippingProductDetail, req.getId());
}
}
byId.setExpressNumber(req.getExpressNumber());
@@ -143,16 +143,31 @@
@Override
public boolean add(ShippingInfoDto req) {
this.save(req);
- req.getBatchNoDetailList().forEach(item -> item.setShippingInfoId(req.getId()));
- shippingProductDetailMapper.insert(req.getBatchNoDetailList());
- for (ShippingProductDetail shippingProductDetail : req.getBatchNoDetailList()) {
- stockUtils.substractStock(shippingProductDetail.getProductModelId(), shippingProductDetail.getQuantity(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), req.getId(), shippingProductDetail.getBatchNo());
+ List<ShippingProductDetail> detailList = req.getBatchNoDetailList();
+ if (CollectionUtils.isNotEmpty(detailList)) {
+ detailList.forEach(item -> item.setShippingInfoId(req.getId()));
+ shippingProductDetailMapper.insert(detailList);
+ for (ShippingProductDetail shippingProductDetail : detailList) {
+ deductOrRecordStock(shippingProductDetail, req.getId());
+ }
}
// 淇濆瓨鏂囦欢
fileUtil.saveStorageAttachment(ApplicationTypeEnum.IMAGE, RecordTypeEnum.SHIPPING_INFO, req.getId(), req.getStorageBlobDTOs());
return true;
}
+ /**
+ * 鏈夊簱瀛樻壒鍙风殑鍙戣揣鎵e噺搴撳瓨锛涙病鏈夊簱瀛樻壒鍙凤紙鏈惎鐢ㄤ粨鍌ㄦā鍧楋級鐨勫彂璐у彧鐧昏鍑哄簱娴佹按銆�
+ */
+ private void deductOrRecordStock(ShippingProductDetail detail, Long shippingInfoId) {
+ String recordType = StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode();
+ if (detail.getStockInventoryId() == null) {
+ stockUtils.recordStockOutWithoutInventory(detail.getProductModelId(), detail.getQuantity(), recordType, shippingInfoId, detail.getBatchNo());
+ } else {
+ stockUtils.substractStock(detail.getProductModelId(), detail.getQuantity(), recordType, shippingInfoId, detail.getBatchNo());
+ }
+ }
+
@Override
public List<ShippingProductDetailDto> getDetail(Long id) {
return shippingProductDetailMapper.getDetail(id);
--
Gitblit v1.9.3