Przeglądaj źródła

出入库流水添加excel导出

yzc 1 rok temu
rodzic
commit
29b0bc694a

+ 10 - 0
hx-wms/src/main/java/com/fjhx/wms/controller/stock/StockJournalDetailsController.java

@@ -14,6 +14,8 @@ 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>
@@ -87,4 +89,12 @@ public class StockJournalDetailsController {
         stockJournalDetailsService.editQuantity(dto);
     }
 
+    /**
+     * 出入库流水Excel导出
+     */
+    @PostMapping("/exportExcel")
+    void exportExcel(@RequestBody StockJournalSelectDto dto, HttpServletResponse httpServletResponse) {
+        stockJournalDetailsService.exportExcel(dto, httpServletResponse);
+    }
+
 }

+ 58 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/bo/StockJournalDetailsExcelBo.java

@@ -0,0 +1,58 @@
+package com.fjhx.wms.entity.stock.bo;
+
+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.util.Date;
+
+@Getter
+@Setter
+@ExcelIgnoreUnannotated
+public class StockJournalDetailsExcelBo {
+
+    /**
+     * 操作类型
+     */
+    private Integer opType;
+    /**
+     * 流水类型
+     */
+    private Integer type;
+
+    @ColumnWidth(20)
+    @ExcelProperty("操作类型")
+    private String opTypeName;
+    @ColumnWidth(20)
+    @ExcelProperty("关联单号")
+    private String contractCode;
+    @ColumnWidth(20)
+    @ExcelProperty("出入库类型")
+    private String typeName;
+    @ColumnWidth(20)
+    @ExcelProperty("仓库名称")
+    private String warehouseName;
+    @ColumnWidth(20)
+    @ExcelProperty("物品编码")
+    private String productCustomCode;
+    @ColumnWidth(20)
+    @ExcelProperty("物品名称")
+    private String productName;
+    @ColumnWidth(20)
+    @ExcelProperty("物品规格")
+    private String productSpec;
+    @ColumnWidth(20)
+    @ExcelProperty("物品单位")
+    private String productUnit;
+    @ColumnWidth(20)
+    @ExcelProperty("操作数量")
+    private String quantity;
+    @ColumnWidth(20)
+    @ExcelProperty("操作人")
+    private String opUserName;
+    @ColumnWidth(20)
+    @ExcelProperty("操作时间")
+    private Date createTime;
+}

+ 15 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/emums/JournalType.java

@@ -3,6 +3,9 @@ package com.fjhx.wms.entity.stock.emums;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
+import java.util.HashMap;
+import java.util.Map;
+
 @AllArgsConstructor
 @Getter
 public enum JournalType {
@@ -52,4 +55,16 @@ public enum JournalType {
      */
     private final String linkBusinessTableName;
 
+    private static final Map<Integer, String> map = new HashMap<>();
+
+    static {
+        for (JournalType journalType : JournalType.values()) {
+            map.put(journalType.getDetailType(),journalType.getDetailTypeRemark());
+        }
+    }
+
+    public static String getJournalTypeVal(Integer type) {
+        return map.get(type);
+    }
+
 }

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

@@ -100,4 +100,9 @@ public class StockJournalDetailsVo extends StockJournalDetails {
      * 物流公司名称
      */
     private String logisticsCompanyName;
+
+    /**
+     * 合同号
+     */
+    private String contractCode;
 }

+ 7 - 2
hx-wms/src/main/java/com/fjhx/wms/mapper/stock/StockJournalDetailsMapper.java

@@ -1,11 +1,10 @@
 package com.fjhx.wms.mapper.stock;
 
-import com.fjhx.wms.entity.stock.po.StockJournalDetails;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.wms.entity.stock.po.StockJournalDetails;
 import com.fjhx.wms.entity.stock.po.StockWait;
 import com.fjhx.wms.entity.stock.vo.StockJournalDetailsVo;
-import com.fjhx.wms.entity.stock.vo.StockJournalVo;
 import com.fjhx.wms.entity.stock.vo.StockWaitVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
@@ -33,4 +32,10 @@ public interface StockJournalDetailsMapper extends BaseMapper<StockJournalDetail
      */
     List<StockWaitVo> getStockWaitInfo(@Param("ew") IWrapper<StockWait> wrapper);
 
+    /**
+     * 流水明细列表
+     */
+    List<StockJournalDetailsVo> getList(@Param("ew") IWrapper<StockJournalDetails> wrapper);
+
+
 }

+ 7 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/StockJournalDetailsService.java

@@ -7,6 +7,8 @@ import com.fjhx.wms.entity.stock.po.StockJournalDetails;
 import com.fjhx.wms.entity.stock.vo.StockJournalDetailsVo;
 import com.ruoyi.common.core.service.BaseService;
 
+import javax.servlet.http.HttpServletResponse;
+
 
 /**
  * <p>
@@ -52,4 +54,9 @@ public interface StockJournalDetailsService extends BaseService<StockJournalDeta
      * 修改数量
      */
     void editQuantity(StockJournalDetails dto);
+
+    /**
+     * 出入库流水Excel导出
+     */
+    void exportExcel(StockJournalSelectDto dto, HttpServletResponse httpServletResponse);
 }

+ 42 - 3
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockJournalDetailsServiceImpl.java

@@ -8,10 +8,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.utils.Assert;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.item.util.excel.util.ExcelUtil;
 import com.fjhx.wms.entity.arrival.po.ArrivalStockRecords;
 import com.fjhx.wms.entity.arrival.po.ArrivalStockRecordsDetails;
+import com.fjhx.wms.entity.stock.bo.StockJournalDetailsExcelBo;
 import com.fjhx.wms.entity.stock.dto.StockJournalDetailsDto;
 import com.fjhx.wms.entity.stock.dto.StockJournalSelectDto;
+import com.fjhx.wms.entity.stock.emums.JournalType;
 import com.fjhx.wms.entity.stock.po.*;
 import com.fjhx.wms.entity.stock.vo.StockJournalDetailsVo;
 import com.fjhx.wms.entity.stock.vo.StockWaitVo;
@@ -25,6 +28,7 @@ import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
@@ -61,15 +65,16 @@ public class StockJournalDetailsServiceImpl extends ServiceImpl<StockJournalDeta
     @Autowired
     private StockJournalDetailsService stockJournalDetailsService;
 
-    @Override
-    public Page<StockJournalDetailsVo> getPage(StockJournalSelectDto dto) {
+    /**
+     * 分页公共参数
+     */
+    private IWrapper<StockJournalDetails> getPageWrapper(StockJournalSelectDto dto) {
         IWrapper<StockJournalDetails> wrapper = getWrapper();
         wrapper.eq("sj.op_type", dto.getOpType());
         wrapper.eq("sj.type", dto.getType());
         wrapper.eq("w.id", dto.getWarehouseId());
         wrapper.eq("sj.to_warehouse_id", dto.getToWarehouseId());
         wrapper.eq("sjd.product_id", dto.getProductId());
-        wrapper.orderByDesc("sjd", StockJournalDetails::getCreateTime);
 
         if (ObjectUtil.isNotEmpty(dto.getKeyword())) {
             //产品编号过滤
@@ -81,6 +86,21 @@ public class StockJournalDetailsServiceImpl extends ServiceImpl<StockJournalDeta
             );
         }
 
+        //时间范围过滤
+        wrapper.ge("sjd",StockJournalDetails::getCreateTime,dto.getBeginTime());
+        wrapper.le("sjd",StockJournalDetails::getCreateTime,dto.getEndTime());
+
+        //排序
+        wrapper.orderByDesc("sjd", StockJournalDetails::getCreateTime);
+
+        return wrapper;
+    }
+
+    @Override
+    public Page<StockJournalDetailsVo> getPage(StockJournalSelectDto dto) {
+        IWrapper<StockJournalDetails> wrapper = getPageWrapper(dto);
+
+
         Page<StockJournalDetailsVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<StockJournalDetailsVo> records = page.getRecords();
         if (ObjectUtil.isEmpty(records)) {
@@ -278,4 +298,23 @@ public class StockJournalDetailsServiceImpl extends ServiceImpl<StockJournalDeta
         this.updateById(stockJournalDetails);
     }
 
+    /**
+     * 出入库流水Excel导出
+     */
+    @Override
+    public void exportExcel(StockJournalSelectDto dto, HttpServletResponse httpServletResponse) {
+        IWrapper<StockJournalDetails> wrapper = getPageWrapper(dto);
+        List<StockJournalDetailsVo> list = baseMapper.getList(wrapper);
+        List<StockJournalDetailsExcelBo> stockJournalDetailsExcelBos = BeanUtil.copyToList(list, StockJournalDetailsExcelBo.class);
+        for (StockJournalDetailsExcelBo stockJournalDetailsExcelBo : stockJournalDetailsExcelBos) {
+            //赋值操作类型
+            stockJournalDetailsExcelBo.setOpTypeName(Objects.equals(stockJournalDetailsExcelBo.getOpType(), 1) ? "入库" : "出库");
+            //赋值业务类型
+            stockJournalDetailsExcelBo.setTypeName(JournalType.getJournalTypeVal(stockJournalDetailsExcelBo.getType()));
+        }
+
+        //导出Excel
+        ExcelUtil.export(httpServletResponse, stockJournalDetailsExcelBos, StockJournalDetailsExcelBo.class);
+    }
+
 }

+ 22 - 0
hx-wms/src/main/resources/mapper/stock/StockJournalDetailsMapper.xml

@@ -37,5 +37,27 @@
                 JOIN stock_wait sw ON asr.stock_wait_id = sw.id
             ${ew.customSqlSegment}
     </select>
+    <select id="getList" resultType="com.fjhx.wms.entity.stock.vo.StockJournalDetailsVo">
+        SELECT
+            sj.op_type,
+            sw.business_code as contractCode,
+            sj.type,
+            w.`name` as warehouseName,
+            pi.custom_code as productCustomCode,
+            pi.`name` productName,
+            pi.spec productSpec,
+            pi.unit productUnit,
+            sjd.quantity,
+            u.nick_name as opUserName,
+            sjd.create_time
+        FROM
+            stock_journal_details sjd
+                JOIN stock_journal sj ON sjd.stock_journal_id = sj.id
+                JOIN warehouse w ON sj.warehouse_id = w.id
+                LEFT JOIN stock_wait sw ON sj.business_id = sw.id
+                LEFT JOIN bytesailing_item.product_info pi ON sjd.product_id = pi.id
+                LEFT JOIN bytesailing_base.sys_user u ON sjd.create_user = u.user_id
+            ${ew.customSqlSegment}
+    </select>
 
 </mapper>