24282 1 年之前
父節點
當前提交
d76185323d

+ 19 - 0
sd-business/src/main/java/com/sd/business/controller/sku/SkuSpecController.java

@@ -1,8 +1,15 @@
 package com.sd.business.controller.sku;
 
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.sd.business.service.sku.SkuSpecService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
+
 
 /**
  * <p>
@@ -16,4 +23,16 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/skuSpec")
 public class SkuSpecController {
 
+    @Autowired
+    private SkuSpecService skuSpecService;
+
+    /**
+     * 获取sku的库存数
+     */
+    @PostMapping("/getSkuInventoryQuantity")
+    public BigDecimal getSkuInventoryQuantity(@RequestBody BaseSelectDto dto) {
+        return skuSpecService.getSkuInventoryQuantity(dto.getId());
+    }
+
+
 }

+ 0 - 5
sd-business/src/main/java/com/sd/business/entity/artwork/po/ArtworkLibrary.java

@@ -58,9 +58,4 @@ public class ArtworkLibrary extends BasePo {
      */
     private String fileUrl;
 
-    /**
-     * 是否下载
-     */
-    private Boolean download;
-
 }

+ 4 - 3
sd-business/src/main/java/com/sd/business/service/order/impl/OrderInfoServiceImpl.java

@@ -1214,10 +1214,11 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
         List<Long> bomSpecIdList = orderSkuList.stream().map(OrderSku::getBomSpecId).collect(Collectors.toList());
         Map<Long, BomSpecBo> bomSpecBoMap = bomSpecService.getBomSpecBo(bomSpecIdList);
 
-        boolean result = inventoryService.lockStorage(orderSkuList.stream()
+        List<OrderSku> list = orderSkuList.stream()
                 .filter(item -> bomSpecBoMap.get(item.getBomSpecId()).getClassifyParentId().equals(1L))
-                .collect(Collectors.toList())
-        );
+                .collect(Collectors.toList());
+
+        boolean result = inventoryService.lockStorage(list);
 
         if (!result) {
             throw new ServiceException("主材库存不足,无法确认订单");

+ 7 - 0
sd-business/src/main/java/com/sd/business/service/sku/SkuSpecService.java

@@ -3,6 +3,8 @@ package com.sd.business.service.sku;
 import com.ruoyi.common.core.service.BaseService;
 import com.sd.business.entity.sku.po.SkuSpec;
 
+import java.math.BigDecimal;
+
 
 /**
  * <p>
@@ -14,4 +16,9 @@ import com.sd.business.entity.sku.po.SkuSpec;
  */
 public interface SkuSpecService extends BaseService<SkuSpec> {
 
+    /**
+     * 获取sku的库存数
+     */
+    BigDecimal getSkuInventoryQuantity(Long id);
+
 }

+ 48 - 0
sd-business/src/main/java/com/sd/business/service/sku/impl/SkuSpecServiceImpl.java

@@ -1,11 +1,21 @@
 package com.sd.business.service.sku.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sd.business.entity.bom.bo.BomSpecBo;
+import com.sd.business.entity.inventory.po.Inventory;
 import com.sd.business.entity.sku.po.SkuSpec;
+import com.sd.business.entity.warehouse.constant.WarehouseConstant;
 import com.sd.business.mapper.sku.SkuSpecMapper;
+import com.sd.business.service.bom.BomSpecService;
+import com.sd.business.service.inventory.InventoryService;
 import com.sd.business.service.sku.SkuSpecService;
+import com.sd.framework.util.Assert;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+
 
 /**
  * <p>
@@ -18,4 +28,42 @@ import org.springframework.stereotype.Service;
 @Service
 public class SkuSpecServiceImpl extends ServiceImpl<SkuSpecMapper, SkuSpec> implements SkuSpecService {
 
+    @Autowired
+    private InventoryService inventoryService;
+
+    @Autowired
+    private BomSpecService bomSpecService;
+
+    @Override
+    public BigDecimal getSkuInventoryQuantity(Long id) {
+        // 获取sku信息
+        SkuSpec skuSpec = this.getById(id);
+        Assert.notNull(skuSpec, "没有找到sku信息");
+
+        // 获取bom规格id
+        Long bomSpecId = skuSpec.getBomSpecId();
+        if (ObjectUtil.isEmpty(bomSpecId)) {
+            return BigDecimal.ZERO;
+        }
+
+        // 获取bom规格信息
+        BomSpecBo bomSpecBo = bomSpecService.getBomSpecBo(bomSpecId);
+        Assert.notNull(bomSpecBo, "未知bom规格id:" + bomSpecId);
+
+        // 获取库存仓库id
+        Long warehouseId = ObjectUtil.equals(bomSpecBo.getClassifyParentId(), 1L) ?
+                WarehouseConstant.SEMI_FINISHED_PRODUCT : WarehouseConstant.PACKAGING_MATERIAL;
+
+        // 查询库存
+        Inventory inventory = inventoryService.getOne(q -> q
+                .eq(Inventory::getWarehouseId, warehouseId)
+                .eq(Inventory::getBomSpecId, bomSpecId));
+
+        if (inventory == null) {
+            return BigDecimal.ZERO;
+        }
+
+        return ObjectUtil.defaultIfNull(inventory.getQuantity(), BigDecimal.ZERO);
+    }
+
 }