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