Parcourir la source

订单汇总Excel导出

yzc il y a 11 mois
Parent
commit
48e5124aec

+ 9 - 0
hx-form/src/main/java/com/fjhx/form/controller/ReportController.java

@@ -9,6 +9,7 @@ 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;
 import java.util.List;
 
 @RestController
@@ -62,4 +63,12 @@ public class ReportController {
         return reportService.orderSummary(dto);
     }
 
+    /**
+     * 订单汇总Excel导出
+     */
+    @PostMapping("/orderSummaryExcelExport")
+    void orderSummaryExcelExport(@RequestBody OrderSummarySelectDto dto, HttpServletResponse httpServletResponse) {
+        reportService.orderSummaryExcelExport(dto, httpServletResponse);
+    }
+
 }

+ 45 - 34
hx-form/src/main/java/com/fjhx/form/entity/OrderSummaryBo.java

@@ -1,5 +1,8 @@
 package com.fjhx.form.entity;
 
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
@@ -10,48 +13,56 @@ import java.util.Date;
 
 @Getter
 @Setter
+@ExcelIgnoreUnannotated
 public class OrderSummaryBo extends BasePo {
-    /**
-     * 订单号
-     */
+    @ColumnWidth(15)
+    @ExcelProperty("订单编号")
     private String contractCode;
     /**
      * 业务员
      */
     private Long salesmanId;
+    @ColumnWidth(15)
+    @ExcelProperty("业务员")
     private String salesmanName;
     /**
      * 跟单员
      */
     private Long merchUserId;
+    @ColumnWidth(15)
+    @ExcelProperty("跟单员")
     private String merchUserName;
-    /**
-     * 订单性质
-     */
+
+    @ColumnWidth(15)
+    @ExcelProperty("订单类型")
+    private String contractType;
+    @ColumnWidth(15)
+    @ExcelProperty("订单性质")
     private String belongType;
-    /**
-     * 销售金额
-     */
+    @ColumnWidth(15)
+    @ExcelProperty("销售金额")
     private BigDecimal amount;
     /**
      * 订单出货金额(工厂供货价)
      */
+    @ColumnWidth(18)
+    @ExcelProperty("订单出货金额")
     private BigDecimal factoryAmount;
     /**
      * 出货申请金额(实际出货的工厂供货价)
      */
+    @ColumnWidth(18)
+    @ExcelProperty("出货申请金额")
     private BigDecimal sumOutFactoryMoney;
-    /**
-     * 已收定金
-     */
+    @ColumnWidth(15)
+    @ExcelProperty("已收定金")
     private BigDecimal deposit;
     /**
      * 差额调整
      */
     private String difference;
-    /**
-     * 是否可结算
-     */
+    @ColumnWidth(15)
+    @ExcelProperty("是否可结算")
     private String isSettlement;
     /**
      * 结算开始时间
@@ -63,27 +74,24 @@ public class OrderSummaryBo extends BasePo {
      */
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
     private Date settleEndDate;
-    /**
-     * 订单类型
-     */
-    private String contractType;
+    @ColumnWidth(20)
+    @ExcelProperty("是否已结算")
+    private String settleDateStr;
 
-    /**
-     * 客户名称
-     */
+    @ColumnWidth(20)
+    @ExcelProperty("客户名称")
     private String customerName;
+    @ColumnWidth(15)
+    @ExcelProperty("客户简称")
     private String customerShortName;
-    /**
-     * 应收金额
-     */
+    @ColumnWidth(15)
+    @ExcelProperty("应收金额")
     private BigDecimal receivableAmount;
-    /**
-     * 收款金额
-     */
+    @ColumnWidth(15)
+    @ExcelProperty("收款金额")
     private BigDecimal sumClaimMoney;
-    /**
-     * 未收金额
-     */
+    @ColumnWidth(15)
+    @ExcelProperty("未收金额")
     private BigDecimal outstandingAmount;
     /**
      * 出货日期(第一次出货)
@@ -91,8 +99,11 @@ public class OrderSummaryBo extends BasePo {
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
     private Date firstTruckDate;
 
-    /**
-     * 账龄
-     */
+    @ColumnWidth(15)
+    @ExcelProperty("出货日期")
+    private String firstTruckDateStr;
+
+    @ColumnWidth(15)
+    @ExcelProperty("账龄级别")
     private String accountAge;
 }

+ 2 - 0
hx-form/src/main/java/com/fjhx/form/mapper/ReportMapper.java

@@ -20,4 +20,6 @@ public interface ReportMapper {
     List<WaitShipmentReportStatisticBo> waitShipmentReportStatistic();
 
     Page<OrderSummaryBo> orderSummary(@Param("page") Page<Object> page, @Param("dto") OrderSummarySelectDto dto, @Param("ew") IWrapper<Object> wrapper);
+
+    List<OrderSummaryBo> orderSummary(@Param("dto") OrderSummarySelectDto dto, @Param("ew") IWrapper<Object> wrapper);
 }

+ 6 - 0
hx-form/src/main/java/com/fjhx/form/service/ReportService.java

@@ -3,6 +3,7 @@ package com.fjhx.form.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.form.entity.*;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 public interface ReportService {
@@ -30,4 +31,9 @@ public interface ReportService {
      * 订单汇总
      */
     Page<OrderSummaryBo> orderSummary(OrderSummarySelectDto dto);
+
+    /**
+     * 订单汇总Excel导出
+     */
+    void orderSummaryExcelExport(OrderSummarySelectDto dto, HttpServletResponse httpServletResponse);
 }

+ 89 - 5
hx-form/src/main/java/com/fjhx/form/service/impl/ReportServiceImpl.java

@@ -1,7 +1,9 @@
 package com.fjhx.form.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.common.utils.excel.util.ExcelUtil;
 import com.fjhx.form.entity.*;
 import com.fjhx.form.mapper.ReportMapper;
 import com.fjhx.form.service.ReportService;
@@ -16,6 +18,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.math.RoundingMode;
 import java.util.ArrayList;
@@ -155,9 +158,10 @@ public class ReportServiceImpl implements ReportService {
         return waitShipmentReportBoPage;
     }
 
-    @Override
-    public Page<OrderSummaryBo> orderSummary(OrderSummarySelectDto dto) {
-        IWrapper<Object> wrapper = IWrapper.getWrapper();
+    /**
+     * 订单汇总查询条件
+     */
+    private void setOrderSummaryWrapper(OrderSummarySelectDto dto, IWrapper<Object> wrapper) {
         if (ObjectUtil.isNotEmpty(dto.getAccountAge())) {
             wrapper.having("accountAge = {0}", dto.getAccountAge());
         }
@@ -170,11 +174,91 @@ public class ReportServiceImpl implements ReportService {
                 new SqlField("cu.short_name")
         );
         wrapper.orderByDesc("c.create_time", "c.id");
-        Page<OrderSummaryBo> page = reportMapper.orderSummary(dto.getPage(), dto, wrapper);
+    }
 
-        List<OrderSummaryBo> records = page.getRecords();
+    /**
+     * 订单汇总数据处理
+     */
+    private void setOrderSummaryInfo(List<OrderSummaryBo> records) {
         UserUtil.assignmentNickName(records, OrderSummaryBo::getSalesmanId, OrderSummaryBo::setSalesmanName);
         UserUtil.assignmentNickName(records, OrderSummaryBo::getMerchUserId, OrderSummaryBo::setMerchUserName);
+    }
+
+    @Override
+    public Page<OrderSummaryBo> orderSummary(OrderSummarySelectDto dto) {
+        IWrapper<Object> wrapper = IWrapper.getWrapper();
+        //赋值查询条件
+        setOrderSummaryWrapper(dto, wrapper);
+        Page<OrderSummaryBo> page = reportMapper.orderSummary(dto.getPage(), dto, wrapper);
+        List<OrderSummaryBo> records = page.getRecords();
+        //赋值信息
+        setOrderSummaryInfo(records);
         return page;
     }
+
+    @Override
+    public void orderSummaryExcelExport(OrderSummarySelectDto dto, HttpServletResponse httpServletResponse) {
+        IWrapper<Object> wrapper = IWrapper.getWrapper();
+        //赋值查询条件
+        setOrderSummaryWrapper(dto, wrapper);
+        List<OrderSummaryBo> records = reportMapper.orderSummary(dto, wrapper);
+        //赋值信息
+        setOrderSummaryInfo(records);
+
+        //Excel数据处理
+        for (OrderSummaryBo record : records) {
+            //订单类型处理
+            String contractType = record.getContractType();
+            switch (contractType) {
+                case "1":
+                    contractType = "外贸订单(退税)";
+                    break;
+                case "2":
+                    contractType = "内销订单";
+                    break;
+                case "3":
+                    contractType = "打样订单";
+                    break;
+                case "4":
+                    contractType = "外贸订单(不退税)";
+                    break;
+            }
+            record.setContractType(contractType);
+
+            //订单性质处理
+            String belongType = record.getBelongType();
+            switch (belongType) {
+                case "1":
+                    belongType = "归属工厂";
+                    break;
+                case "2":
+                    belongType = "归属业务";
+                    break;
+            }
+            record.setBelongType(belongType);
+
+            //是否可结算
+            String isSettlement = record.getIsSettlement();
+            switch (isSettlement) {
+                case "0":
+                    isSettlement = "否";
+                    break;
+                case "1":
+                    isSettlement = "是";
+                    break;
+            }
+            record.setIsSettlement(isSettlement);
+
+            //是否已结算处理
+            String settleStart = DateUtil.format(record.getSettleStartDate(), "yyyy-MM-dd");
+            String settleEnd = DateUtil.format(record.getSettleEndDate(), "yyyy-MM-dd");
+            record.setSettleDateStr(String.format("%s~%s ", ObjectUtil.isEmpty(settleStart) ? "" : settleStart, ObjectUtil.isEmpty(settleEnd) ? "" : settleEnd));
+
+            //出货日期处理
+            record.setFirstTruckDateStr(DateUtil.format(record.getFirstTruckDate(), "yyyy-MM-dd"));
+        }
+
+        //导出Excel
+        ExcelUtil.export(httpServletResponse, records, OrderSummaryBo.class);
+    }
 }