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