|
@@ -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);
|
|
|
+ }
|
|
|
}
|