浏览代码

库存导出

刘俊驰 1 年之前
父节点
当前提交
9266af4d0f
共有 15 个文件被更改,包括 311 次插入13 次删除
  1. 82 0
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/ExportController.java
  2. 3 2
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/PmsSkuStockController.java
  3. 4 0
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/dao/PmsSkuStockDao.java
  4. 3 0
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/PmsProductService.java
  5. 2 1
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/PmsSkuStockService.java
  6. 12 3
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/PmsProductServiceImpl.java
  7. 15 0
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/PmsProductSkuStockRecordServiceImpl.java
  8. 32 2
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/PmsSkuStockServiceImpl.java
  9. 15 0
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/wrapper/PmsProductSkuStockRecordWrapper.java
  10. 37 0
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/wrapper/PmsProductWrapper.java
  11. 79 0
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/wrapper/PmsSkuStockWrapper.java
  12. 5 3
      mec-mall/mall-admin/src/main/resources/config/mybatis/PmsProductDao.xml
  13. 6 0
      mec-mall/mall-admin/src/main/resources/config/mybatis/PmsProductSkuStockRecordDao.xml
  14. 14 0
      mec-mall/mall-admin/src/main/resources/config/mybatis/PmsSkuStockDao.xml
  15. 2 2
      mec-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/PmsSkuStock.java

+ 82 - 0
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/ExportController.java

@@ -2,22 +2,33 @@ package com.yonge.cooleshow.admin.controller;
 
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.alibaba.fastjson.JSON;
+import com.google.common.collect.Lists;
+import com.yonge.cooleshow.admin.dao.PmsSkuStockDao;
 import com.yonge.cooleshow.admin.dto.OmsOrderQueryParam;
 import com.yonge.cooleshow.admin.dto.OrderDetailVo;
+import com.yonge.cooleshow.admin.dto.PmsProductQueryParam;
 import com.yonge.cooleshow.admin.service.OmsOrderService;
+import com.yonge.cooleshow.admin.service.PmsProductService;
 import com.yonge.cooleshow.admin.service.PmsProductSkuStockRecordService;
 import com.yonge.cooleshow.admin.wrapper.PmsProductSkuStockRecordWrapper;
+import com.yonge.cooleshow.admin.wrapper.PmsProductWrapper;
+import com.yonge.cooleshow.admin.wrapper.PmsSkuStockWrapper;
 import com.yonge.cooleshow.mall.common.api.CommonPage;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
+import com.yonge.cooleshow.mbg.model.PmsProduct;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @RestController
 @Api(tags = "数据导出服务")
@@ -28,6 +39,13 @@ public class ExportController {
 
     @Autowired
     private PmsProductSkuStockRecordService pmsProductSkuStockRecordService;
+
+    @Autowired
+    private PmsProductService productService;
+
+    @Autowired
+    private PmsSkuStockDao skuStockDao;
+
     @ApiOperation("订单详情")
     @RequestMapping(value = "/orderDetail", method = RequestMethod.POST)
     public void orderDetail(@RequestBody OmsOrderQueryParam queryParam, HttpServletResponse response) throws IOException {
@@ -58,4 +76,68 @@ public class ExportController {
             .sheet("商品库存入库记录").doWrite(productList);
     }
 
+
+    @ApiOperation("商品库存导出")
+    @RequestMapping(value = "/productExport", method = RequestMethod.GET)
+    @ResponseBody
+    public void productExport(PmsProductQueryParam productQueryParam, HttpServletResponse response) throws IOException {
+        List<PmsProduct> productList = productService.list(productQueryParam, 99999, 1);
+
+        List<PmsProductWrapper.PmsProductExport> list = JSON.parseArray(JSON.toJSONString(productList), PmsProductWrapper.PmsProductExport.class);
+        if (!CollectionUtils.isEmpty(list)) {
+            List<Long> productIds = list.stream().map(PmsProductWrapper.PmsProductExport::getId).collect(Collectors.toList());
+
+            // 计算库存数据
+            List<PmsSkuStockWrapper.PmsSkuStockStock> skuStockStocks = skuStockDao.getSkuStockByProductIds(productIds);
+
+            // Convert to map
+            Map<Long, List<PmsSkuStockWrapper.PmsSkuStockStock>> skuStockStockMap = skuStockStocks.stream().collect(Collectors.groupingBy(PmsSkuStockWrapper.PmsSkuStockStock::getProductId));
+
+            // Merge
+            for (PmsProductWrapper.PmsProductExport pmsProductExport : list) {
+                List<PmsSkuStockWrapper.PmsSkuStockStock> skuStockStock = skuStockStockMap.get(pmsProductExport.getId());
+                if (!CollectionUtils.isEmpty(skuStockStock)) {
+                    pmsProductExport.setInternalStock(skuStockStock.stream().mapToInt(PmsSkuStockWrapper.PmsSkuStockStock::getInternalStock).sum());
+                    pmsProductExport.setTaxStock(skuStockStock.stream().mapToInt(PmsSkuStockWrapper.PmsSkuStockStock::getTaxStock).sum());
+                }
+            }
+        }
+
+
+        // 设置文本内省
+        response.setContentType("application/vnd.ms-excel");
+        // 设置字符编码
+        response.setCharacterEncoding("utf-8");
+        // 设置响应头
+        response.setHeader("Content-disposition", "attachment;filename=商品库存导出.xlsx");
+        EasyExcel.write(response.getOutputStream(), PmsProductWrapper.PmsProductExport.class)
+            .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+            .sheet("商品库存导出").doWrite(list);
+    }
+
+
+    @ApiOperation("商品进货清单导出")
+    @RequestMapping(value = "/productStockRecordExport", method = RequestMethod.GET)
+    @ResponseBody
+    public void productStockRecordExport(PmsProductQueryParam productQueryParam, HttpServletResponse response) throws IOException {
+        List<PmsProduct> productList = productService.list(productQueryParam, 99999, 1);
+
+
+        PmsProductSkuStockRecordWrapper.PmsProductSkuStockRecordQuery query = new PmsProductSkuStockRecordWrapper.PmsProductSkuStockRecordQuery();
+        query.setPageSize(99999);
+        // id 集合
+        List<Long> productIds = productList.stream().map(PmsProduct::getId).collect(Collectors.toList());
+        query.setProductIds(productIds);
+        List<PmsProductSkuStockRecordWrapper.PmsProductSkuStockRecord> productRecordList = pmsProductSkuStockRecordService.list(query);
+
+        // 设置文本内省
+        response.setContentType("application/vnd.ms-excel");
+        // 设置字符编码
+        response.setCharacterEncoding("utf-8");
+        // 设置响应头
+        response.setHeader("Content-disposition", "attachment;filename=商品进货清单导出.xlsx");
+        EasyExcel.write(response.getOutputStream(), PmsProductSkuStockRecordWrapper.PmsProductSkuStockRecord.class)
+            .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+            .sheet("商品进货清单导出").doWrite(productRecordList);
+    }
 }

+ 3 - 2
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/PmsSkuStockController.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.admin.controller;
 
+import com.yonge.cooleshow.admin.wrapper.PmsSkuStockWrapper;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
 import com.yonge.cooleshow.mbg.model.PmsSkuStock;
 import com.yonge.cooleshow.admin.service.PmsSkuStockService;
@@ -25,8 +26,8 @@ public class PmsSkuStockController {
     @ApiOperation("根据商品ID及sku编码模糊搜索sku库存")
     @RequestMapping(value = "/{pid}", method = RequestMethod.GET)
     @ResponseBody
-    public CommonResult<List<PmsSkuStock>> getList(@PathVariable Long pid, @RequestParam(value = "keyword",required = false) String keyword) {
-        List<PmsSkuStock> skuStockList = skuStockService.getList(pid, keyword);
+    public CommonResult<List<PmsSkuStockWrapper.PmsSkuStock>> getList(@PathVariable Long pid, @RequestParam(value = "keyword",required = false) String keyword) {
+        List<PmsSkuStockWrapper.PmsSkuStock> skuStockList = skuStockService.getList(pid, keyword);
         return CommonResult.success(skuStockList);
     }
     @ApiOperation("批量更新sku库存信息")

+ 4 - 0
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/dao/PmsSkuStockDao.java

@@ -1,8 +1,10 @@
 package com.yonge.cooleshow.admin.dao;
 
+import com.yonge.cooleshow.admin.wrapper.PmsSkuStockWrapper;
 import com.yonge.cooleshow.mbg.model.PmsSkuStock;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -19,4 +21,6 @@ public interface PmsSkuStockDao {
      * 批量插入或替换操作
      */
     int replaceList(@Param("list")List<PmsSkuStock> skuStockList);
+
+    List<PmsSkuStockWrapper.PmsSkuStockStock> getSkuStockByProductIds(@Param("productIds") List<Long> productIds);
 }

+ 3 - 0
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/PmsProductService.java

@@ -10,6 +10,7 @@ import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 商品管理Service
@@ -87,4 +88,6 @@ public interface PmsProductService {
      * @return
      */
     HomeStatistical countProductShowStatus();
+
+    Map<Long, PmsProduct> getMapByIds(List<Long> productIds);
 }

+ 2 - 1
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/PmsSkuStockService.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.admin.service;
 
+import com.yonge.cooleshow.admin.wrapper.PmsSkuStockWrapper;
 import com.yonge.cooleshow.mbg.model.PmsSkuStock;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -14,7 +15,7 @@ public interface PmsSkuStockService {
     /**
      * 根据产品id和skuCode关键字模糊搜索
      */
-    List<PmsSkuStock> getList(Long pid, String keyword);
+    List<PmsSkuStockWrapper.PmsSkuStock> getList(Long pid, String keyword);
 
     /**
      * 批量更新商品库存信息

+ 12 - 3
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/PmsProductServiceImpl.java

@@ -22,9 +22,7 @@ import org.springframework.util.StringUtils;
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -314,6 +312,17 @@ public class PmsProductServiceImpl implements PmsProductService {
         return productDao.selectProductShowStatusCount();
     }
 
+    @Override
+    public Map<Long, PmsProduct> getMapByIds(List<Long> productIds) {
+        if (CollectionUtils.isEmpty(productIds)) {
+            return new HashMap<>();
+        }
+        PmsProductExample example = new PmsProductExample();
+        example.createCriteria().andIdIn(productIds);
+        List<PmsProduct> pmsProducts = productMapper.selectByExample(example);
+        return pmsProducts.stream().collect(Collectors.toMap(PmsProduct::getId, pmsProduct -> pmsProduct));
+    }
+
     /**
      * 建立和插入关系表操作
      *

+ 15 - 0
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/PmsProductSkuStockRecordServiceImpl.java

@@ -41,6 +41,10 @@ public class PmsProductSkuStockRecordServiceImpl implements PmsProductSkuStockRe
 
     @Autowired
     private PmsProductMapper pmsProductMapper;
+
+    @Autowired
+    private PmsProductService pmsProductService;
+
     /**
      * 列表分页
      *
@@ -55,12 +59,23 @@ public class PmsProductSkuStockRecordServiceImpl implements PmsProductSkuStockRe
         }
         // sku id 集合
         List<Long> skuIds = list.stream().map(PmsProductSkuStockRecordWrapper.PmsProductSkuStockRecord::getProductSkuId).distinct().collect(Collectors.toList());
+
+        // 商品ID 集合
+        List<Long> productIds = list.stream().map(PmsProductSkuStockRecordWrapper.PmsProductSkuStockRecord::getProductId).distinct().collect(Collectors.toList());
+        // 获取商品信息
+        Map<Long, PmsProduct> productMap = pmsProductService.getMapByIds(productIds);
+
         Map<Long, PmsSkuStock> skuStockMap = skuStockService.getMapByIds(skuIds);
         list.forEach(item -> {
             PmsSkuStock skuStock = skuStockMap.get(item.getProductSkuId());
             if (skuStock != null) {
                 item.setProductSkuCode(skuStock.getSkuCode());
             }
+            PmsProduct pmsProduct = productMap.get(item.getProductId());
+            if (pmsProduct != null) {
+                item.setProductName(pmsProduct.getName());
+                item.setProductSn(pmsProduct.getProductSn());
+            }
         });
 
         return list;

+ 32 - 2
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/PmsSkuStockServiceImpl.java

@@ -1,6 +1,9 @@
 package com.yonge.cooleshow.admin.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.google.common.collect.Lists;
 import com.yonge.cooleshow.admin.dao.PmsSkuStockDao;
+import com.yonge.cooleshow.admin.wrapper.PmsSkuStockWrapper;
 import com.yonge.cooleshow.mbg.mapper.PmsSkuStockMapper;
 import com.yonge.cooleshow.mbg.model.PmsSkuStock;
 import com.yonge.cooleshow.mbg.model.PmsSkuStockExample;
@@ -10,6 +13,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -27,13 +31,39 @@ public class PmsSkuStockServiceImpl implements PmsSkuStockService {
     private PmsSkuStockDao skuStockDao;
 
     @Override
-    public List<PmsSkuStock> getList(Long pid, String keyword) {
+    public List<PmsSkuStockWrapper.PmsSkuStock> getList(Long pid, String keyword) {
         PmsSkuStockExample example = new PmsSkuStockExample();
         PmsSkuStockExample.Criteria criteria = example.createCriteria().andProductIdEqualTo(pid);
         if (!StringUtils.isEmpty(keyword)) {
             criteria.andSkuCodeLike("%" + keyword + "%");
         }
-        return skuStockMapper.selectByExample(example);
+        List<PmsSkuStock> pmsSkuStocks = skuStockMapper.selectByExample(example);
+        if (CollectionUtils.isEmpty(pmsSkuStocks)) {
+            return new ArrayList<>();
+        }
+
+        // Convert to wrapper
+        List<PmsSkuStockWrapper.PmsSkuStock> stockList = JSON.parseArray(JSON.toJSONString(pmsSkuStocks), PmsSkuStockWrapper.PmsSkuStock.class);
+
+        // 计算库存数据
+        List<PmsSkuStockWrapper.PmsSkuStockStock> skuStockStocks =  skuStockDao.getSkuStockByProductIds(Lists.newArrayList(pid));
+
+        // Convert to map
+        Map<Long, PmsSkuStockWrapper.PmsSkuStockStock> skuStockStockMap = skuStockStocks.stream().collect(Collectors.toMap(PmsSkuStockWrapper.PmsSkuStockStock::getId, skuStock -> skuStock));
+
+        // Merge
+        for (PmsSkuStockWrapper.PmsSkuStock stock : stockList) {
+            PmsSkuStockWrapper.PmsSkuStockStock skuStockStock = skuStockStockMap.get(stock.getId());
+            if (skuStockStock != null) {
+                stock.setInternalStock(skuStockStock.getInternalStock());
+                stock.setTaxStock(skuStockStock.getTaxStock());
+            } else {
+                stock.setInternalStock(0);
+                stock.setTaxStock(0);
+            }
+        }
+
+        return stockList;
     }
 
     @Override

+ 15 - 0
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/wrapper/PmsProductSkuStockRecordWrapper.java

@@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.format.DateTimeFormat;
 import com.alibaba.excel.annotation.format.NumberFormat;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -11,6 +12,7 @@ import lombok.Data;
 import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 public class PmsProductSkuStockRecordWrapper {
 
@@ -41,6 +43,8 @@ public class PmsProductSkuStockRecordWrapper {
         @ApiModelProperty("入库结束时间")
         private Date endTime;
 
+        private List<Long> productIds;
+
     }
 
 
@@ -54,6 +58,7 @@ public class PmsProductSkuStockRecordWrapper {
         @ApiModelProperty("批次号")
 
         @ExcelProperty(value = "批次号",order = 1)
+        @ColumnWidth(20)
         private Long id;
 
         /**
@@ -64,6 +69,15 @@ public class PmsProductSkuStockRecordWrapper {
         @ExcelIgnore
         private Long productId;
 
+        @ApiModelProperty("商品货号")
+        @ExcelProperty(value = "商品货号",order = 2)
+        private String productSn;
+
+
+        @ApiModelProperty("商品名称")
+        @ExcelProperty(value = "商品名称",order = 2)
+        private String productName;
+
         /**
          * 商品skuId
          */
@@ -132,6 +146,7 @@ public class PmsProductSkuStockRecordWrapper {
          * 创建时间
          */
         @ApiModelProperty("创建时间")
+        @ColumnWidth(30)
         @ExcelProperty(value = "创建时间",order = 9)
         @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
         private Date createTime;

+ 37 - 0
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/wrapper/PmsProductWrapper.java

@@ -0,0 +1,37 @@
+package com.yonge.cooleshow.admin.wrapper;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+public class PmsProductWrapper {
+
+    @Data
+    @ApiModel("商品导出数据")
+    public static class PmsProductExport {
+        @ExcelProperty("商品编号")
+        private Long id;
+
+        @ExcelProperty("商品货号")
+        private String productSn;
+
+        @ExcelProperty("商品名称")
+        private String name;
+
+        @ExcelProperty("品牌")
+        private String brandName;
+
+
+        /**
+         * 内部库存
+         */
+        @ExcelProperty(value = "内部剩余库存")
+        private Integer internalStock;
+
+        /**
+         * 税务库存
+         */
+        @ExcelProperty(value = "税务剩余库存")
+        private Integer taxStock;
+    }
+}

+ 79 - 0
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/wrapper/PmsSkuStockWrapper.java

@@ -0,0 +1,79 @@
+package com.yonge.cooleshow.admin.wrapper;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+public class PmsSkuStockWrapper {
+
+    @Data
+    @ApiModel("PmsSkuStock-sku管理")
+    public static class PmsSkuStock {
+        @ApiModelProperty(value = "sku库存表id")
+        private Long id;
+
+        @ApiModelProperty(value = "商品id")
+        private Long productId;
+
+        @ApiModelProperty(value = "sku编码")
+        private String skuCode;
+
+        private BigDecimal price;
+
+        /**
+         * 内部库存
+         */
+        @ApiModelProperty("内部库存")
+        private Integer internalStock;
+
+        /**
+         * 税务库存
+         */
+        @ApiModelProperty("税务库存")
+        private Integer taxStock;
+
+        @ApiModelProperty(value = "预警库存")
+        private Integer lowStock;
+
+        @ApiModelProperty(value = "展示图片")
+        private String pic;
+
+        @ApiModelProperty(value = "销量")
+        private Integer sale;
+
+        @ApiModelProperty(value = "单品促销价格")
+        private BigDecimal promotionPrice;
+
+
+        @ApiModelProperty(value = "商品销售属性,json格式")
+        private String spData;
+    }
+
+
+    @Data
+    @ApiModel("PmsSkuStock-sku管理")
+    public static class PmsSkuStockStock {
+        @ApiModelProperty(value = "sku库存表id")
+        private Long id;
+
+        @ApiModelProperty(value = "商品id")
+        private Long productId;
+
+        /**
+         * 内部库存
+         */
+        @ApiModelProperty("内部库存")
+        private Integer internalStock;
+
+        /**
+         * 税务库存
+         */
+        @ApiModelProperty("税务库存")
+        private Integer taxStock;
+
+    }
+}

+ 5 - 3
mec-mall/mall-admin/src/main/resources/config/mybatis/PmsProductDao.xml

@@ -74,7 +74,9 @@
             left join
             (select DISTINCT pss.product_id
             from  pms_sku_stock pss
-            where pss.stock &lt;= pss.low_stock) b
+            left join pms_product_sku_stock_record t3 on t3.product_sku_id= pss.id
+            group by pss.product_id,pss.id,pss.low_stock
+            having sum(t3.internal_stock - t3.internal_sale_stock) &lt;= pss.low_stock) b
             on b.product_id = pp.id
         </if>
 
@@ -99,10 +101,10 @@
                 and pp.product_category_id = #{param.productCategoryId}
             </if>
             <if test="param.stock == 1">
-                and (pp.stock &lt;= pp.low_stock or b.product_id is not null)
+                and ( b.product_id is not null)
             </if>
             <if test="param.stock == 0">
-                and (pp.stock &gt; pp.low_stock and b.product_id is null)
+                and (b.product_id is null)
             </if>
         </where>
         order by pp.sort desc,pp.id desc

+ 6 - 0
mec-mall/mall-admin/src/main/resources/config/mybatis/PmsProductSkuStockRecordDao.xml

@@ -24,6 +24,12 @@
             <if test="param.endTime != null">
                 and t.create_time &lt;= #{param.endTime}
             </if>
+            <if test="param.productIds != null and param.productIds.size() != 0">
+                and t.product_id in
+                <foreach collection="param.productIds" item="productId" open="(" separator="," close=")">
+                    #{productId}
+                </foreach>
+            </if>
 
         </where>
 

+ 14 - 0
mec-mall/mall-admin/src/main/resources/config/mybatis/PmsSkuStockDao.xml

@@ -28,4 +28,18 @@
             #{item.spData,jdbcType=VARCHAR})
         </foreach>
     </insert>
+
+    <select id="getSkuStockByProductIds"
+            resultType="com.yonge.cooleshow.admin.wrapper.PmsSkuStockWrapper$PmsSkuStockStock">
+        select t.product_sku_id                              as id,
+               t.product_id                                  as productId,
+               sum(t.internal_stock - t.internal_sale_stock) as internalStock,
+               sum(t.tax_stock - t.tax_sale_stock) as taxStock
+        from pms_product_sku_stock_record t
+        where t.product_id in
+        <foreach collection="productIds" item="productId" open="(" separator="," close=")">
+            #{productId}
+        </foreach>
+        group by t.product_sku_id, t.product_id
+    </select>
 </mapper>

+ 2 - 2
mec-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/PmsSkuStock.java

@@ -14,7 +14,7 @@ public class PmsSkuStock implements Serializable {
 
     private BigDecimal price;
 
-    @ApiModelProperty(value = "库存")
+    @ApiModelProperty(value = "库存 弃用 库存从进货清单中计算")
     private Integer stock;
 
     @ApiModelProperty(value = "预警库存")
@@ -29,7 +29,7 @@ public class PmsSkuStock implements Serializable {
     @ApiModelProperty(value = "单品促销价格")
     private BigDecimal promotionPrice;
 
-    @ApiModelProperty(value = "锁定库存")
+    @ApiModelProperty(value = "锁定库存 弃用 不在锁定库存 库存在发货时扣减")
     private Integer lockStock;
 
     @ApiModelProperty(value = "商品销售属性,json格式")