فهرست منبع

佰穗莱单据工具类excel封装、转换单/多类型单据方法封装

zhangxin 1 سال پیش
والد
کامیت
cd31d9642c

+ 0 - 15
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/doc/BionutritionDocHeaderController.java

@@ -1,41 +1,26 @@
 package com.ruoyi.web.controller.warewms.doc;
 
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.util.ArrayUtil;
 import com.github.pagehelper.PageInfo;
-import com.ruoyi.ams.asn.domain.WmsDocAsnHeader;
 import com.ruoyi.ams.bionutrition.doc.dto.BionutritionDocBaseDTO;
 import com.ruoyi.ams.bionutrition.doc.dto.BionutritionDocDetailsDTO;
 import com.ruoyi.ams.bionutrition.doc.dto.BionutritionDocHeaderDTO;
-import com.ruoyi.ams.bionutrition.doc.dto.header.PurchaseOrderHeaderDTO;
-import com.ruoyi.ams.bionutrition.doc.excel.PurchaseOrderExcel;
-import com.ruoyi.ams.bionutrition.doc.excel.detail.PurchaseOrderDetailsExcel;
-import com.ruoyi.ams.bionutrition.doc.excel.header.PurchaseOrderHeaderExcel;
 import com.ruoyi.ams.bionutrition.doc.service.BionutritionDocDetailsService;
 import com.ruoyi.ams.bionutrition.doc.service.BionutritionDocHeaderService;
-import com.ruoyi.ams.bionutrition.org.bean.dto.OrgDTO;
 import com.ruoyi.base.constant.type.BizEnum;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.ConvertUtils;
 import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.poi.ExcelUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
-import java.util.stream.Collectors;
 
 @Slf4j
 @RestController

+ 21 - 0
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/excel/BionutritionDocBaseExcel.java

@@ -0,0 +1,21 @@
+package com.ruoyi.ams.bionutrition.doc.excel;
+
+import com.ruoyi.ams.bionutrition.doc.excel.detail.BionutritionDocDetailsBaseExcel;
+import com.ruoyi.ams.bionutrition.doc.excel.header.BionutritionDocHeaderBaseExcel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class BionutritionDocBaseExcel implements Serializable {
+
+    private static final long serialVersionUID = -7953644964862229377L;
+
+    @ApiModelProperty("单据头")
+    private BionutritionDocHeaderBaseExcel bionutritionDocHeaderBaseExcelDTO;
+
+    @ApiModelProperty("单据明细")
+    private List<BionutritionDocDetailsBaseExcel> bionutritionDocDetailsBaseExcelList;
+}

+ 0 - 21
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/excel/FinishedProductReceiptExcel.java

@@ -1,21 +0,0 @@
-package com.ruoyi.ams.bionutrition.doc.excel;
-
-import com.ruoyi.ams.bionutrition.doc.excel.detail.FinishedProductReceiptDetailsExcel;
-import com.ruoyi.ams.bionutrition.doc.excel.header.FinishedProductReceiptHeaderExcel;
-import com.ruoyi.common.annotation.Excel;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-@Data
-public class FinishedProductReceiptExcel implements Serializable {
-
-    private static final long serialVersionUID = -3010237686378441980L;
-
-    @Excel(name = "单头")
-    private FinishedProductReceiptHeaderExcel finishedProductReceiptHeaderExcel;
-
-    @Excel(name = "明细")
-    private List<FinishedProductReceiptDetailsExcel> detailsExcelList;
-}

+ 0 - 19
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/excel/ProductionPickingReceiptExcel.java

@@ -1,19 +0,0 @@
-package com.ruoyi.ams.bionutrition.doc.excel;
-
-import com.ruoyi.ams.bionutrition.doc.excel.detail.ProductionPickingReceiptDetailsExcel;
-import com.ruoyi.ams.bionutrition.doc.excel.header.ProductionPickingReceiptHeaderExcel;
-import com.ruoyi.common.annotation.Excel;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-@Data
-public class ProductionPickingReceiptExcel implements Serializable {
-    private static final long serialVersionUID = 8034996096098859764L;
-
-    @Excel(name = "单头")
-    private ProductionPickingReceiptHeaderExcel productionPickingReceiptHeaderExcel;
-    @Excel(name = "明细")
-    private List<ProductionPickingReceiptDetailsExcel> detailsExcels;
-}

+ 0 - 21
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/excel/ProductionReturnOrderExcel.java

@@ -1,21 +0,0 @@
-package com.ruoyi.ams.bionutrition.doc.excel;
-
-import com.ruoyi.ams.bionutrition.doc.excel.detail.ProductionReturnOrderDetailsExcel;
-import com.ruoyi.ams.bionutrition.doc.excel.header.ProductionPickingReceiptHeaderExcel;
-import com.ruoyi.ams.bionutrition.doc.excel.header.ProductionReturnOrderHeaderExcel;
-import com.ruoyi.common.annotation.Excel;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-@Data
-public class ProductionReturnOrderExcel implements Serializable {
-    private static final long serialVersionUID = 5209118764435821705L;
-
-    @Excel(name = "单头")
-    private ProductionReturnOrderHeaderExcel productionReturnOrderHeaderExcel;
-
-    @Excel(name = "明细")
-    private List<ProductionReturnOrderDetailsExcel> detailsExcels;
-}

+ 0 - 21
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/excel/PurchaseOrderExcel.java

@@ -1,21 +0,0 @@
-package com.ruoyi.ams.bionutrition.doc.excel;
-
-import com.ruoyi.ams.bionutrition.doc.excel.detail.PurchaseOrderDetailsExcel;
-import com.ruoyi.ams.bionutrition.doc.excel.header.PurchaseOrderHeaderExcel;
-import com.ruoyi.common.annotation.Excel;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-@Data
-public class PurchaseOrderExcel implements Serializable {
-
-    private static final long serialVersionUID = 8278143828971487117L;
-
-    @Excel(name = "单头")
-    private PurchaseOrderHeaderExcel purchaseOrderHeaderExcel;
-
-    @Excel(name = "明细")
-    private List<PurchaseOrderDetailsExcel> detailsExcelList;
-}

+ 0 - 21
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/excel/PurchaseReceiptExcel.java

@@ -1,21 +0,0 @@
-package com.ruoyi.ams.bionutrition.doc.excel;
-
-import com.ruoyi.ams.bionutrition.doc.excel.detail.PurchaseReceiptDetailsExcel;
-import com.ruoyi.ams.bionutrition.doc.excel.header.PurchaseOrderHeaderExcel;
-import com.ruoyi.ams.bionutrition.doc.excel.header.PurchaseReceiptHeaderExcel;
-import com.ruoyi.common.annotation.Excel;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-@Data
-public class PurchaseReceiptExcel implements Serializable {
-    private static final long serialVersionUID = 5521453657256275364L;
-
-    @Excel(name = "单头")
-    private PurchaseReceiptHeaderExcel purchaseReceiptHeaderExcel;
-
-    @Excel(name = "明细")
-    private List<PurchaseReceiptDetailsExcel> detailsExcels;
-}

+ 0 - 20
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/excel/SaleOutboundOrderExcel.java

@@ -1,20 +0,0 @@
-package com.ruoyi.ams.bionutrition.doc.excel;
-
-import com.ruoyi.ams.bionutrition.doc.excel.detail.SaleOutboundOrderDetailsExcel;
-import com.ruoyi.ams.bionutrition.doc.excel.header.SaleOutboundOrderHeaderExcel;
-import com.ruoyi.common.annotation.Excel;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-@Data
-public class SaleOutboundOrderExcel implements Serializable {
-    private static final long serialVersionUID = -7556938536266851824L;
-
-    @Excel(name = "单头")
-    private SaleOutboundOrderHeaderExcel saleOutboundOrderHeaderExcel;
-
-    @Excel(name = "明细")
-    private List<SaleOutboundOrderDetailsExcel> detailsExcels;
-}

+ 0 - 21
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/excel/SaleReturnOrderExcel.java

@@ -1,21 +0,0 @@
-package com.ruoyi.ams.bionutrition.doc.excel;
-
-import com.ruoyi.ams.bionutrition.doc.excel.detail.SaleReturnOrderDetailsExcel;
-import com.ruoyi.ams.bionutrition.doc.excel.header.SaleReturnOrderHeaderExcel;
-import com.ruoyi.common.annotation.Excel;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-@Data
-public class SaleReturnOrderExcel implements Serializable {
-
-    private static final long serialVersionUID = -8838318178207197395L;
-
-    @Excel(name = "单头")
-    private SaleReturnOrderHeaderExcel saleReturnOrderHeaderExcel;
-
-    @Excel(name = "明细")
-    private List<SaleReturnOrderDetailsExcel> detailsExcels;
-}

+ 0 - 2
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/excel/header/FinishedProductReceiptHeaderExcel.java

@@ -1,8 +1,6 @@
 package com.ruoyi.ams.bionutrition.doc.excel.header;
 
-import com.ruoyi.ams.bionutrition.doc.dto.header.BionutritionDocHeaderBaseDTO;
 import com.ruoyi.common.annotation.Excel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**

+ 0 - 3
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/service/impl/BionutritionDocHeaderServiceImpl.java

@@ -11,7 +11,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
-import com.ruoyi.ams.bionutrition.doc.domain.BionutritionDocDetails;
 import com.ruoyi.ams.bionutrition.doc.domain.BionutritionDocHeader;
 import com.ruoyi.ams.bionutrition.doc.dto.BionutritionDocBaseDTO;
 import com.ruoyi.ams.bionutrition.doc.dto.BionutritionDocDetailsDTO;
@@ -22,8 +21,6 @@ import com.ruoyi.ams.bionutrition.doc.mapper.BionutritionDocHeaderMapper;
 import com.ruoyi.ams.bionutrition.doc.service.BionutritionDocDetailsService;
 import com.ruoyi.ams.bionutrition.doc.service.BionutritionDocHeaderService;
 import com.ruoyi.ams.bionutrition.doc.util.BionutritionDocUtil;
-import com.ruoyi.ams.bionutrition.org.bean.dto.OrgDTO;
-import com.ruoyi.ams.bionutrition.org.bean.entity.OrgEntity;
 import com.ruoyi.common.utils.ConvertUtils;
 import com.ruoyi.common.utils.PageUtil;
 import com.ruoyi.common.utils.StringUtils;

+ 29 - 11
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/util/BionutritionDocUtil.java

@@ -2,10 +2,14 @@ package com.ruoyi.ams.bionutrition.doc.util;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.ruoyi.ams.bionutrition.doc.dto.BionutritionDocBaseDTO;
 import com.ruoyi.ams.bionutrition.doc.dto.BionutritionDocDetailsDTO;
 import com.ruoyi.ams.bionutrition.doc.dto.BionutritionDocHeaderDTO;
 import com.ruoyi.ams.bionutrition.doc.dto.detail.BionutritionDocDetailsBaseDTO;
 import com.ruoyi.ams.bionutrition.doc.dto.header.BionutritionDocHeaderBaseDTO;
+import com.ruoyi.ams.bionutrition.doc.excel.BionutritionDocBaseExcel;
+import com.ruoyi.ams.bionutrition.doc.excel.detail.BionutritionDocDetailsBaseExcel;
+import com.ruoyi.ams.bionutrition.doc.excel.header.BionutritionDocHeaderBaseExcel;
 import com.ruoyi.base.constant.type.BizEnum;
 import com.ruoyi.common.constant.base.EnumUtils;
 import com.ruoyi.common.utils.ConvertUtils;
@@ -22,6 +26,28 @@ import java.util.stream.Collectors;
 @Slf4j
 public class BionutritionDocUtil {
 
+    /**
+     * 单据详情转换excel
+     *
+     * @param bionutritionDocBaseDTO
+     * @return
+     */
+    @SneakyThrows
+    public static <E> BionutritionDocBaseExcel buildBionutritionDocBaseExcel(String docType, BionutritionDocBaseDTO bionutritionDocBaseDTO) {
+        Assert.isTrue(ObjectUtil.isNotNull(bionutritionDocBaseDTO), "bionutritionDocBaseDTO is null");
+        Assert.isTrue(StringUtils.isNotBlank(docType), "docType is null");
+        BizEnum.BionutritionHeaderExcelDocTypeEnum bionutritionHeaderExcelDocTypeEnum = EnumUtils.getEnumByCode(docType, BizEnum.BionutritionHeaderExcelDocTypeEnum.class);
+        Class<E> docHeaderClass = (Class<E>) Class.forName(bionutritionHeaderExcelDocTypeEnum.getClassName());
+        BizEnum.BionutritionDetailsExcelDocTypeEnum bionutritionDetailsExcelDocTypeEnum = EnumUtils.getEnumByCode(docType, BizEnum.BionutritionDetailsExcelDocTypeEnum.class);
+        Class<E> docDetailsClass = (Class<E>) Class.forName(bionutritionDetailsExcelDocTypeEnum.getClassName());
+        BionutritionDocBaseExcel bionutritionDocBaseExcel = new BionutritionDocBaseExcel();
+        bionutritionDocBaseExcel.setBionutritionDocHeaderBaseExcelDTO(ObjectUtil.isNotNull(bionutritionDocBaseDTO.getBionutritionDocHeaderBaseDTO()) ?
+                (BionutritionDocHeaderBaseExcel) ConvertUtils.sourceToTarget(bionutritionDocBaseDTO.getBionutritionDocHeaderBaseDTO(), docHeaderClass) : null);
+        bionutritionDocBaseExcel.setBionutritionDocDetailsBaseExcelList(CollectionUtil.isNotEmpty(bionutritionDocBaseDTO.getBionutritionDocDetailsBaseDTOList()) ?
+                (List<BionutritionDocDetailsBaseExcel>) ConvertUtils.sourceToTarget(bionutritionDocBaseDTO.getBionutritionDocDetailsBaseDTOList(), docDetailsClass) : null);
+        return bionutritionDocBaseExcel;
+    }
+
     /**
      * 获取单类型单据明细
      *
@@ -46,18 +72,10 @@ public class BionutritionDocUtil {
      */
     @SneakyThrows
     public static <E extends BionutritionDocDetailsBaseDTO> List<E> buildBionutritionDocDetailsDTOList(String docType, List<BionutritionDocDetailsDTO> bionutritionDocDetailsDTOList) {
-        if (CollectionUtil.isNotEmpty(bionutritionDocDetailsDTOList)){
-            Assert.isTrue(StringUtils.isNotBlank(docType), "docType is null");
-            return bionutritionDocDetailsDTOList.stream().map(item -> (E) buildBionutritionDocDetailsDTO(docType, item)).collect(Collectors.toList());
-        } else {
-            List<E> docDetailsDTOList = new ArrayList<>();
-            E docDetailsBaseDTO = buildBionutritionDocDetailsDTO(docType, new BionutritionDocDetailsDTO());
-            docDetailsDTOList.add(docDetailsBaseDTO);
-            return docDetailsDTOList;
-        }
-        /*Assert.isTrue(CollectionUtil.isNotEmpty(bionutritionDocDetailsDTOList), "bionutritionDocDetailsDTOList is null");
         Assert.isTrue(StringUtils.isNotBlank(docType), "docType is null");
-        return bionutritionDocDetailsDTOList.stream().map(item -> (E) buildBionutritionDocDetailsDTO(docType, item)).collect(Collectors.toList());*/
+        return CollectionUtil.isNotEmpty(bionutritionDocDetailsDTOList) ?
+                bionutritionDocDetailsDTOList.stream().map(item -> (E) buildBionutritionDocDetailsDTO(docType, item)).collect(Collectors.toList()) :
+                buildBionutritionDocDetailsDTO(docType, new BionutritionDocDetailsDTO());
     }
 
     /**

+ 114 - 0
warewms-base/src/main/java/com/ruoyi/base/constant/type/BizEnum.java

@@ -174,4 +174,118 @@ public class BizEnum {
 
     }
 
+    /**
+     * 单据类型, 类型对应单据单头excel指向类
+     */
+    public enum BionutritionDetailsExcelDocTypeEnum implements IBaseEnum {
+        /**
+         * 成品入库单
+         */
+        FINISHED_PRODUCT_RECEIPT("FinishedProductReceipt", "com.ruoyi.ams.bionutrition.doc.excel.detail.FinishedProductReceiptDetailsExcel"),
+        /**
+         * 生产领料单
+         */
+        PRODUCTION_PICKING_RECEIPT("ProductionPickingReceipt", "com.ruoyi.ams.bionutrition.doc.excel.detail.ProductionPickingReceiptDetailsExcel"),
+        /**
+         * 生产退库单
+         */
+        PRODUCTION_RETURN_ORDER("ProductionReturnOrder", "com.ruoyi.ams.bionutrition.doc.excel.detail.ProductionReturnOrderDetailsExcel"),
+        /**
+         * 采购收货单
+         */
+        PURCHASE_RECEIPT("PurchaseReceipt", "com.ruoyi.ams.bionutrition.doc.excel.detail.PurchaseReceiptDetailsExcel"),
+        /**
+         * 销售出库单
+         */
+        SALE_OUTBOUND_ORDER("SaleOutboundOrder", "com.ruoyi.ams.bionutrition.doc.excel.detail.SaleOutboundOrderDetailsExcel"),
+        /**
+         * 销售退库单
+         */
+        SALE_RETURN_ORDER("SaleReturnOrder", "com.ruoyi.ams.bionutrition.doc.excel.detail.SaleReturnOrderDetailsExcel"),
+        /**
+         * 采购单
+         */
+        PURCHASE_ORDER("PurchaseOrder","com.ruoyi.ams.bionutrition.doc.excel.detail.PurchaseOrderDetailsExcel");
+
+        private String docType;
+
+        private String className;
+
+        BionutritionDetailsExcelDocTypeEnum(String docType, String className) {
+            this.docType = docType;
+            this.className = className;
+        }
+
+        public String getClassName() {
+            return className;
+        }
+
+        public String getDocType() {
+            return docType;
+        }
+
+        @Override
+        public String getCode() {
+            return getDocType();
+        }
+
+    }
+
+    /**
+     * 单据类型, 类型对应单据单头excel指向类
+     */
+    public enum BionutritionHeaderExcelDocTypeEnum implements IBaseEnum {
+        /**
+         * 成品入库单
+         */
+        FINISHED_PRODUCT_RECEIPT("FinishedProductReceipt", "com.ruoyi.ams.bionutrition.doc.excel.header.FinishedProductReceiptHeaderExcel"),
+        /**
+         * 生产领料单
+         */
+        PRODUCTION_PICKING_RECEIPT("ProductionPickingReceipt", "com.ruoyi.ams.bionutrition.doc.excel.header.ProductionPickingReceiptHeaderExcel"),
+        /**
+         * 生产退库单
+         */
+        PRODUCTION_RETURN_ORDER("ProductionReturnOrder", "com.ruoyi.ams.bionutrition.doc.excel.header.ProductionReturnOrderHeaderExcel"),
+        /**
+         * 采购收货单
+         */
+        PURCHASE_RECEIPT("PurchaseReceipt", "com.ruoyi.ams.bionutrition.doc.excel.header.PurchaseReceiptHeaderExcel"),
+        /**
+         * 销售出库单
+         */
+        SALE_OUTBOUND_ORDER("SaleOutboundOrder", "com.ruoyi.ams.bionutrition.doc.excel.header.SaleOutboundOrderHeaderExcel"),
+        /**
+         * 销售退库单
+         */
+        SALE_RETURN_ORDER("SaleReturnOrder", "com.ruoyi.ams.bionutrition.doc.excel.header.SaleReturnOrderHeaderExcel"),
+        /**
+         * 采购单
+         */
+        PURCHASE_ORDER("PurchaseOrder","com.ruoyi.ams.bionutrition.doc.excel.header.PurchaseOrderHeaderExcel");
+
+        private String docType;
+
+        private String className;
+
+        BionutritionHeaderExcelDocTypeEnum(String docType, String className) {
+            this.docType = docType;
+            this.className = className;
+        }
+
+        public String getClassName() {
+            return className;
+        }
+
+        public String getDocType() {
+            return docType;
+        }
+
+        @Override
+        public String getCode() {
+            return getDocType();
+        }
+
+    }
+
 }