Ver código fonte

库存excel导出

yzc 1 ano atrás
pai
commit
b3a0f04431

+ 9 - 1
hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockController.java

@@ -13,13 +13,15 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletResponse;
+
 
 /**
  * <p>
  * 库存 前端控制器
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-03-20
  */
 //@DS(SourceConstant.WMS)
@@ -37,6 +39,7 @@ public class StockController {
     public Page<StockVo> page(@RequestBody StockSelectDto dto) {
         return stockService.getPage(dto);
     }
+
     /**
      * 库存明细
      */
@@ -77,4 +80,9 @@ public class StockController {
         return stockService.stockWarningPage(dto);
     }
 
+    @PostMapping("/exportExcel")
+    public void exportExcel(@RequestBody StockSelectDto dto, HttpServletResponse httpServletResponse) {
+        stockService.exportExcel(dto, httpServletResponse);
+    }
+
 }

+ 44 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/StockExcelBo.java

@@ -0,0 +1,44 @@
+package com.fjhx.wms.entity.stock;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+@ExcelIgnoreUnannotated
+public class StockExcelBo {
+    private final int columnWidth = 16;
+
+    @ColumnWidth(columnWidth)
+    @ExcelProperty("公司名称")
+    private String companyName;
+    @ColumnWidth(columnWidth)
+    @ExcelProperty("仓库名称")
+    private String warehouseName;
+    @ColumnWidth(columnWidth)
+    @ExcelProperty("物品类型")
+    private String productDefinition;
+    @ColumnWidth(columnWidth)
+    @ExcelProperty("所属分类")
+    private String productClassifyNames;
+    @ColumnWidth(columnWidth)
+    @ExcelProperty("物品编码")
+    private String productCustomCode;
+    @ColumnWidth(columnWidth)
+    @ExcelProperty("物品名称")
+    private String productName;
+    @ColumnWidth(columnWidth)
+    @ExcelProperty("规格尺寸")
+    private String productSpecDim;
+    @ColumnWidth(columnWidth)
+    @ExcelProperty("物品颜色")
+    private String productColor;
+    @ColumnWidth(columnWidth)
+    @ExcelProperty("库存数量")
+    private BigDecimal quantity;
+}

+ 5 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockVo.java

@@ -142,4 +142,9 @@ public class StockVo extends Stock {
      */
     private BigDecimal availableQuantity;
 
+    /**
+     * 规格尺寸
+     */
+    private String productSpecDim;
+
 }

+ 5 - 0
hx-wms/src/main/java/com/fjhx/wms/mapper/stock/StockMapper.java

@@ -7,6 +7,8 @@ import com.fjhx.wms.entity.stock.vo.StockVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -23,6 +25,9 @@ public interface StockMapper extends BaseMapper<Stock> {
      */
     Page<StockVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Stock> wrapper);
 
+    List<StockVo> getList(@Param("ew") IWrapper<Stock> wrapper);
+
+
     Page<StockVo> pageByProduct(@Param("page") Page<Object> page, @Param("ew") IWrapper<Stock> wrapper);
 
     Page<StockVo> pageByProductSpu(@Param("page") Page<Object> page, @Param("ew") IWrapper<Stock> wrapper);

+ 3 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/StockService.java

@@ -11,6 +11,7 @@ import com.fjhx.wms.entity.stock.po.StockJournalDetails;
 import com.fjhx.wms.entity.stock.vo.StockVo;
 import com.ruoyi.common.core.service.BaseService;
 
+import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.List;
 
@@ -61,4 +62,6 @@ public interface StockService extends BaseService<Stock> {
      * 库存预警分页
      */
     Page<StockVo> stockWarningPage(StockSelectDto dto);
+
+    void exportExcel(StockSelectDto dto, HttpServletResponse httpServletResponse);
 }

+ 42 - 5
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

@@ -11,6 +11,7 @@ import com.fjhx.common.entity.AvailableStockBo;
 import com.fjhx.common.entity.InOutBo;
 import com.fjhx.common.enums.InOutType;
 import com.fjhx.common.utils.Assert;
+import com.fjhx.common.utils.excel.util.ExcelUtil;
 import com.fjhx.item.entity.product.po.ProductClassify;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.entity.product.po.ProductStockInfo;
@@ -18,6 +19,7 @@ import com.fjhx.item.enums.ProductAvailableRecordType;
 import com.fjhx.item.service.product.ProductClassifyService;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.item.service.product.ProductStockInfoService;
+import com.fjhx.wms.entity.stock.StockExcelBo;
 import com.fjhx.wms.entity.stock.dto.StockDto;
 import com.fjhx.wms.entity.stock.dto.StockJournalDetailsDto;
 import com.fjhx.wms.entity.stock.dto.StockSelectDto;
@@ -43,6 +45,7 @@ import com.ruoyi.system.service.ISysDeptService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
@@ -75,9 +78,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
     @Autowired
     private ISysDeptService sysDeptService;
 
-    @Override
-    public Page<StockVo> getPage(StockSelectDto dto) {
-        IWrapper<Stock> wrapper = getWrapper();
+    private void setPageWrapper(StockSelectDto dto, IWrapper<Stock> wrapper) {
         wrapper.eq(Stock::getWarehouseId, dto.getId());
         String keyword = dto.getKeyword();
         if (ObjectUtil.isNotEmpty(keyword)) {
@@ -97,8 +98,9 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
 
 
         wrapper.orderByDesc("s", Stock::getId);
-        Page<StockVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
-        List<StockVo> stockVos = page.getRecords();
+    }
+
+    private void setPageInfo(List<StockVo> stockVos) {
         //赋值产品信息
         productInfoService.attributeAssign(stockVos, StockVo::getProductId, (item, productInfo) -> {
             item.setProductCode(productInfo.getCode());
@@ -115,6 +117,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
             item.setProductHeight(productInfo.getHeight());
             item.setProductColor(productInfo.getColor());
         });
+
         //赋值产品分类
         productClassifyService.attributeAssign(stockVos, StockVo::getProductClassifyId, (item, productClassify) -> {
             item.setProductClassifyName(productClassify.getName());
@@ -157,12 +160,28 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
 
             //赋值归属公司
             stockVo.setCompanyName(sysDeptMap.get(stockVo.getCompanyId()));
+
+            stockVo.setProductSpecDim(String.format("%s * %s * %s", stockVo.getProductLength(), stockVo.getProductWidth(), stockVo.getProductHeight()));
         }
 
         //赋值仓库名称
         warehouseService.attributeAssign(stockVos, StockVo::getWarehouseId, (item, warehouse) -> {
             item.setWarehouseName(warehouse.getName());
         });
+    }
+
+
+    @Override
+    public Page<StockVo> getPage(StockSelectDto dto) {
+
+        IWrapper<Stock> wrapper = getWrapper();
+        setPageWrapper(dto, wrapper);
+
+        Page<StockVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<StockVo> stockVos = page.getRecords();
+
+        setPageInfo(stockVos);
+
         return page;
     }
 
@@ -470,4 +489,22 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         return baseMapper.stockWarningPage(dto.getPage(), SecurityUtils.getCompanyId());
     }
 
+    @Override
+    public void exportExcel(StockSelectDto dto, HttpServletResponse httpServletResponse) {
+        IWrapper<Stock> wrapper = getWrapper();
+        setPageWrapper(dto, wrapper);
+        List<StockVo> list = baseMapper.getList(wrapper);
+        setPageInfo(list);
+
+        List<StockExcelBo> stockExcelBos = BeanUtil.copyToList(list, StockExcelBo.class);
+        for (StockExcelBo stockExcelBo : stockExcelBos) {
+
+            String productDefinition = stockExcelBo.getProductDefinition();
+            if (ObjectUtil.isNotEmpty(productDefinition)) {
+                stockExcelBo.setProductDefinition(stockExcelBo.getProductDefinition().equals("0") ? "产品" : "物料");
+            }
+        }
+        ExcelUtil.export(httpServletResponse, stockExcelBos, StockExcelBo.class);
+    }
+
 }

+ 19 - 11
hx-wms/src/main/resources/mapper/stock/StockMapper.xml

@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.wms.mapper.stock.StockMapper">
-    <select id="getPage" resultType="com.fjhx.wms.entity.stock.vo.StockVo">
+
+    <sql id="list">
         SELECT s.id,
                pi.definition,
                s.warehouse_id,
@@ -15,18 +16,25 @@
         FROM stock s
                  LEFT JOIN warehouse w on s.warehouse_id = w.id
                  LEFT JOIN product_info pi ON s.product_id = pi.id
-            ${ew.customSqlSegment}
+    </sql>
+
+    <select id="getPage" resultType="com.fjhx.wms.entity.stock.vo.StockVo">
+        <include refid="list"/>
+        ${ew.customSqlSegment}
+    </select>
+    <select id="getList" resultType="com.fjhx.wms.entity.stock.vo.StockVo">
+        <include refid="list"/>
+        ${ew.customSqlSegment}
     </select>
     <select id="pageByProduct" resultType="com.fjhx.wms.entity.stock.vo.StockVo">
-        SELECT
-            s.id,
-            s.warehouse_id,
-            s.product_id,
-            sum(s.quantity)                                                     quantity,
-            s.create_user,
-            s.create_time,
-            s.update_user,
-            s.update_time
+        SELECT s.id,
+               s.warehouse_id,
+               s.product_id,
+               sum(s.quantity) quantity,
+               s.create_user,
+               s.create_time,
+               s.update_user,
+               s.update_time
         FROM stock s
                  LEFT JOIN product_info pi ON s.product_id = pi.id
             ${ew.customSqlSegment}