From bee96a1d36c86068cd5a7eb69f4e3294a8123b04 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 03 七月 2026 18:02:55 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_business' into dev_business
---
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordServiceImpl.java | 114 ++------------------------------------------------------
1 files changed, 5 insertions(+), 109 deletions(-)
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordServiceImpl.java
index 0bfaed8..d84951c 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordServiceImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockRecordServiceImpl.java
@@ -1,33 +1,20 @@
package cn.iocoder.yudao.module.erp.service.stock;
-import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record.ErpStockRecordPageReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockRecordDO;
import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockRecordMapper;
import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO;
-import cn.iocoder.yudao.module.mdm.api.item.MdmItemSkuApi;
-import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemSkuRespDTO;
-import cn.iocoder.yudao.module.wms.api.inventory.WmsInventoryApi;
-import cn.iocoder.yudao.module.wms.api.inventory.dto.WmsReceiptReqDTO;
-import cn.iocoder.yudao.module.wms.api.inventory.dto.WmsShipmentReqDTO;
-import cn.iocoder.yudao.module.wms.enums.inventory.WmsInventoryBizTypeEnum;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
-import java.util.List;
/**
* ERP 浜у搧搴撳瓨鏄庣粏 Service 瀹炵幇绫�
- *
- * 鏀归�犺鏄庯細搴撳瓨鍙樻洿璋冪敤 WMS 搴撳瓨 API
- * - 鍏ュ簱鎿嶄綔璋冪敤 WmsInventoryApi.receipt()
- * - 鍑哄簱鎿嶄綔璋冪敤 WmsInventoryApi.shipment()
- * - productId 瀵瑰簲 MDM itemId锛岄�氳繃 SKU API 鑾峰彇榛樿 SKU
*
* @author 鑺嬮亾婧愮爜
*/
@@ -40,12 +27,6 @@
@Resource
private ErpStockService stockService;
-
- @Resource
- private WmsInventoryApi wmsInventoryApi;
-
- @Resource
- private MdmItemSkuApi mdmItemSkuApi;
@Override
public ErpStockRecordDO getStockRecord(Long id) {
@@ -60,98 +41,13 @@
@Override
@Transactional(rollbackFor = Exception.class)
public void createStockRecord(ErpStockRecordCreateReqBO createReqBO) {
- // 1. 鑾峰彇浜у搧鐨勯粯璁� SKU ID锛圗RP productId = MDM itemId锛�
- Long skuId = getDefaultSkuId(createReqBO.getProductId());
- if (skuId == null) {
- // 濡傛灉娌℃湁 SKU锛屼娇鐢ㄥ師鏈夐�昏緫鏇存柊搴撳瓨
- BigDecimal totalCount = stockService.updateStockCountIncrement(
- createReqBO.getProductId(), createReqBO.getWarehouseId(), createReqBO.getCount());
- ErpStockRecordDO stockRecord = BeanUtils.toBean(createReqBO, ErpStockRecordDO.class)
- .setTotalCount(totalCount);
- stockRecordMapper.insert(stockRecord);
- return;
- }
-
- // 2. 鏍规嵁 count 姝h礋鍒ゆ柇鍏ュ簱杩樻槸鍑哄簱
- BigDecimal count = createReqBO.getCount();
- if (count.compareTo(BigDecimal.ZERO) > 0) {
- // 鍏ュ簱鎿嶄綔
- WmsReceiptReqDTO receiptReq = buildReceiptReqDTO(createReqBO, skuId);
- wmsInventoryApi.receipt(receiptReq);
- } else if (count.compareTo(BigDecimal.ZERO) < 0) {
- // 鍑哄簱鎿嶄綔锛堟暟閲忚浆涓烘鏁帮級
- WmsShipmentReqDTO shipmentReq = buildShipmentReqDTO(createReqBO, skuId);
- wmsInventoryApi.shipment(shipmentReq);
- }
-
- // 3. 鍒涘缓搴撳瓨鏄庣粏锛堣褰曟搷浣滐級
- BigDecimal currentStock = wmsInventoryApi.getAvailableQuantity(skuId, createReqBO.getWarehouseId()).getCheckedData();
+ // 1. 鏇存柊搴撳瓨
+ BigDecimal totalCount = stockService.updateStockCountIncrement(
+ createReqBO.getProductId(), createReqBO.getWarehouseId(), createReqBO.getCount());
+ // 2. 鍒涘缓搴撳瓨鏄庣粏
ErpStockRecordDO stockRecord = BeanUtils.toBean(createReqBO, ErpStockRecordDO.class)
- .setTotalCount(currentStock != null ? currentStock : BigDecimal.ZERO);
+ .setTotalCount(totalCount);
stockRecordMapper.insert(stockRecord);
- }
-
- /**
- * 鑾峰彇浜у搧鐨勯粯璁� SKU ID
- */
- private Long getDefaultSkuId(Long productId) {
- if (productId == null) {
- return null;
- }
- List<MdmItemSkuRespDTO> skuList = mdmItemSkuApi.getItemSkuListByItemId(productId).getCheckedData();
- if (CollUtil.isEmpty(skuList)) {
- return null;
- }
- return skuList.get(0).getId();
- }
-
- /**
- * 鏋勫缓鍏ュ簱璇锋眰
- */
- private WmsReceiptReqDTO buildReceiptReqDTO(ErpStockRecordCreateReqBO createReqBO, Long skuId) {
- WmsReceiptReqDTO receiptReq = new WmsReceiptReqDTO();
- receiptReq.setBizType(convertBizType(createReqBO.getBizType()));
- receiptReq.setBizId(createReqBO.getBizId());
- receiptReq.setBizNo(createReqBO.getBizNo());
- receiptReq.setWarehouseId(createReqBO.getWarehouseId());
- receiptReq.setRemark(createReqBO.getRemark());
-
- WmsReceiptReqDTO.Item item = new WmsReceiptReqDTO.Item();
- item.setSkuId(skuId);
- item.setQuantity(createReqBO.getCount());
- receiptReq.setItems(List.of(item));
- return receiptReq;
- }
-
- /**
- * 鏋勫缓鍑哄簱璇锋眰
- */
- private WmsShipmentReqDTO buildShipmentReqDTO(ErpStockRecordCreateReqBO createReqBO, Long skuId) {
- WmsShipmentReqDTO shipmentReq = new WmsShipmentReqDTO();
- shipmentReq.setBizType(convertBizType(createReqBO.getBizType()));
- shipmentReq.setBizId(createReqBO.getBizId());
- shipmentReq.setBizNo(createReqBO.getBizNo());
- shipmentReq.setWarehouseId(createReqBO.getWarehouseId());
- shipmentReq.setRemark(createReqBO.getRemark());
-
- WmsShipmentReqDTO.Item item = new WmsShipmentReqDTO.Item();
- item.setSkuId(skuId);
- item.setQuantity(createReqBO.getCount().negate()); // 鍑哄簱鏁伴噺涓烘鏁�
- shipmentReq.setItems(List.of(item));
- return shipmentReq;
- }
-
- /**
- * 杞崲涓氬姟绫诲瀷锛圗RP 涓氬姟绫诲瀷鏄犲皠鍒� WMS 涓氬姟绫诲瀷锛�
- */
- private Integer convertBizType(Integer erpBizType) {
- // ERP 涓氬姟绫诲瀷鏄犲皠鍒� WMS 涓氬姟绫诲瀷
- // 鍙互鏍规嵁瀹為檯涓氬姟闇�姹傛墿灞曟槧灏勫叧绯�
- if (erpBizType == null) {
- return WmsInventoryBizTypeEnum.OTHER.getType();
- }
- // 榛樿杩斿洖 OTHER 绫诲瀷锛屽悗缁彲鏍规嵁 ERP 涓氬姟绫诲瀷鏋氫妇鎵╁睍
- return WmsInventoryBizTypeEnum.OTHER.getType();
}
}
\ No newline at end of file
--
Gitblit v1.9.3