浏览代码

添加 批量拆分组合

yzc 2 年之前
父节点
当前提交
3cc7909463

+ 24 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/stock/GetSplitQuantityByWarehouseIdDto.java

@@ -0,0 +1,24 @@
+package com.fjhx.params.stock;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+@Getter
+@Setter
+public class GetSplitQuantityByWarehouseIdDto {
+
+    /**
+     * 产品组合id
+     */
+    @NotNull(message = "组合产品id不能为空")
+    private Long productId;
+
+    /**
+     * 产品所在仓库id
+     */
+    @NotNull(message = "产品所在仓库id不能为空")
+    private Long sourceWarehouseId;
+
+}

+ 19 - 4
hx-service/victoriatourist/src/main/java/com/fjhx/controller/stock/StockCombinationController.java

@@ -6,10 +6,7 @@ import com.fjhx.constants.StatusConstant;
 import com.fjhx.entity.product.ProductInfo;
 import com.fjhx.entity.stock.StockCombination;
 import com.fjhx.entity.stock.StockSplit;
-import com.fjhx.params.stock.GetQuantityByWarehouseIdDto;
-import com.fjhx.params.stock.StockCombinationPageDto;
-import com.fjhx.params.stock.StockCombinationPageVo;
-import com.fjhx.params.stock.StockSplitPageVo;
+import com.fjhx.params.stock.*;
 import com.fjhx.service.product.ProductInfoService;
 import com.fjhx.service.stock.StockCombinationService;
 import com.fjhx.service.stock.StockSplitService;
@@ -90,6 +87,15 @@ public class StockCombinationController {
     }
 
     /**
+     * 批量拆分组合
+     */
+    @PostMapping("/split_batch")
+    public R split(@Validated @RequestBody List<StockSplit> stockSplits) {
+        stockCombinationService.splitBatch(stockSplits);
+        return R.success();
+    }
+
+    /**
      * 获取可组合数量
      */
     @PostMapping("/getQuantityByWarehouseId")
@@ -99,6 +105,15 @@ public class StockCombinationController {
     }
 
     /**
+     * 获取可拆分数量
+     */
+    @PostMapping("/getSplitQuantityByWarehouseId")
+    public R getSplitQuantityByWarehouseId(@Validated @RequestBody GetSplitQuantityByWarehouseIdDto getSplitQuantityByWarehouseIdDto) {
+        int quantity = stockCombinationService.getSplitQuantityByWarehouseId(getSplitQuantityByWarehouseIdDto);
+        return R.success(quantity);
+    }
+
+    /**
      * 获取组合名称列表
      */
     @PostMapping("/getCombinationList")

+ 4 - 4
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/StockCombinationService.java

@@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.base.BaseService;
 import com.fjhx.entity.stock.StockCombination;
 import com.fjhx.entity.stock.StockSplit;
-import com.fjhx.params.stock.GetQuantityByWarehouseIdDto;
-import com.fjhx.params.stock.StockCombinationPageDto;
-import com.fjhx.params.stock.StockCombinationPageVo;
-import com.fjhx.params.stock.StockSplitPageVo;
+import com.fjhx.params.stock.*;
 import org.springblade.core.tool.api.R;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -34,4 +31,7 @@ public interface StockCombinationService extends BaseService<StockCombination> {
 
     int getQuantityByWarehouseId(GetQuantityByWarehouseIdDto getQuantityByWarehouseIdDto);
 
+    void splitBatch(List<StockSplit> stockSplits);
+
+    int getSplitQuantityByWarehouseId(GetSplitQuantityByWarehouseIdDto getSplitQuantityByWarehouseIdDto);
 }

+ 15 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/impl/StockCombinationServiceImpl.java

@@ -156,6 +156,14 @@ public class StockCombinationServiceImpl extends ServiceImpl<StockCombinationMap
         stockSplitService.save(stockSplit);
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void splitBatch(List<StockSplit> stockSplits){
+        for (StockSplit stockSplit:stockSplits){
+            split(stockSplit);
+        }
+    }
+
     @Override
     public int getQuantityByWarehouseId(GetQuantityByWarehouseIdDto dto) {
 
@@ -195,6 +203,13 @@ public class StockCombinationServiceImpl extends ServiceImpl<StockCombinationMap
         return ObjectUtil.defaultIfNull(quantity, 0);
     }
 
+    @Override
+    public int getSplitQuantityByWarehouseId(GetSplitQuantityByWarehouseIdDto getSplitQuantityByWarehouseIdDto){
+        List<Stock> list = stockService.list(q -> q.eq(Stock::getGoodsId, getSplitQuantityByWarehouseIdDto.getProductId()).eq(Stock::getWarehouseId, getSplitQuantityByWarehouseIdDto.getSourceWarehouseId()));
+        BigDecimal reduce = list.stream().map(Stock::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
+        return reduce.intValue();
+    }
+
     /**
      * 查询组合包涵产品id以和数量
      */