From ab2ff3ab41f062cce79cc50a6a339de397e53acb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=A3=E5=9C=A3=E5=8D=8E?= <752718920@qq.com>
Date: Mon, 17 Apr 2023 23:40:42 +0800
Subject: [PATCH] =?UTF-8?q?=E7=BB=99=E5=95=86=E5=93=81=E5=AF=BC=E5=87=BA?=
=?UTF-8?q?=E5=88=9D=E6=AD=A5=E5=A2=9E=E5=8A=A0=E5=B8=A6=E6=A8=A1=E6=9D=BF?=
=?UTF-8?q?=E5=AF=BC=E5=87=BA=E7=9A=84=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
jshERP-boot/pom.xml | 5 ++
.../erp/controller/MaterialController.java | 80 ++++++++++++-------
.../java/com/jsh/erp/utils/ExcelUtils.java | 19 +++++
.../com/jsh/erp/utils/ExportExecUtil.java | 38 ++++++++-
.../src/main/resources/application.properties | 6 +-
5 files changed, 114 insertions(+), 34 deletions(-)
diff --git a/jshERP-boot/pom.xml b/jshERP-boot/pom.xml
index a28c25b4..dbc3df73 100644
--- a/jshERP-boot/pom.xml
+++ b/jshERP-boot/pom.xml
@@ -63,6 +63,11 @@
jxl
2.6.12
+
+ com.alibaba
+ easyexcel
+ 3.2.1
+
org.projectlombok
diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java
index c1ddde8f..016a3dae 100644
--- a/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java
+++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java
@@ -1,11 +1,10 @@
package com.jsh.erp.controller;
+import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
-import com.jsh.erp.datasource.entities.MaterialInitialStockWithMaterial;
import com.jsh.erp.datasource.entities.MaterialVo4Unit;
import com.jsh.erp.datasource.entities.Unit;
-import com.jsh.erp.datasource.vo.MaterialVoSearch;
import com.jsh.erp.service.depot.DepotService;
import com.jsh.erp.service.depotItem.DepotItemService;
import com.jsh.erp.service.material.MaterialService;
@@ -16,6 +15,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -23,6 +23,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
+import java.io.InputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
@@ -55,6 +56,15 @@ public class MaterialController {
@Resource
private RedisService redisService;
+ @Value("${server.tomcat.basedir}")
+ private String basedir;
+
+ @Value("${template.path}")
+ private String templatePath;
+
+ @Value("${export.mode}")
+ private Integer exportMode;
+
/**
* 检查商品是否存在
* @param id
@@ -360,35 +370,47 @@ public class MaterialController {
List dataList = materialService.exportExcel(StringUtil.toNull(materialParam), StringUtil.toNull(color),
StringUtil.toNull(weight), StringUtil.toNull(expiryNum), StringUtil.toNull(enabled), StringUtil.toNull(enableSerialNumber),
StringUtil.toNull(enableBatchNumber), StringUtil.toNull(remark), StringUtil.toNull(categoryId));
- String[] names = {"条码", "名称", "规格", "型号", "颜色", "类别", "扩展信息", "单位", "基础重量", "保质期", "采购价", "零售价", "销售价", "最低售价", "备注", "状态", "序列号", "批号"};
- String title = "商品信息";
- List objects = new ArrayList<>();
- if (null != dataList) {
- for (MaterialVo4Unit m : dataList) {
- String[] objs = new String[100];
- objs[0] = m.getmBarCode();
- objs[1] = m.getName();
- objs[2] = m.getStandard();
- objs[3] = m.getModel();
- objs[4] = m.getColor();
- objs[5] = m.getCategoryName();
- objs[6] = materialService.getMaterialOtherByParam(mpArr, m);
- objs[7] = m.getCommodityUnit();
- objs[8] = m.getWeight() == null? "" : m.getWeight().toString();
- objs[9] = m.getExpiryNum() == null? "" : m.getExpiryNum().toString();
- objs[10] = m.getPurchaseDecimal() == null? "" : m.getPurchaseDecimal().setScale(2,BigDecimal.ROUND_HALF_UP).toString();
- objs[11] = m.getCommodityDecimal() == null? "" : m.getCommodityDecimal().setScale(2,BigDecimal.ROUND_HALF_UP).toString();
- objs[12] = m.getWholesaleDecimal() == null? "" : m.getWholesaleDecimal().setScale(2,BigDecimal.ROUND_HALF_UP).toString();
- objs[13] = m.getLowDecimal() == null? "" : m.getLowDecimal().setScale(2,BigDecimal.ROUND_HALF_UP).toString();
- objs[14] = m.getRemark();
- objs[15] = m.getEnabled() ? "启用" : "禁用";
- objs[16] = "1".equals(m.getEnableSerialNumber()) ? "有" : "无";
- objs[17] = "1".equals(m.getEnableBatchNumber()) ? "有" : "无";
- objects.add(objs);
+ if(exportMode == 0) {
+ String[] names = {"条码", "名称", "规格", "型号", "颜色", "类别", "扩展信息", "单位", "基础重量", "保质期", "采购价", "零售价", "销售价", "最低售价", "备注", "状态", "序列号", "批号"};
+ String title = "商品信息";
+ List objects = new ArrayList<>();
+ if (null != dataList) {
+ for (MaterialVo4Unit m : dataList) {
+ String[] objs = new String[100];
+ objs[0] = m.getmBarCode();
+ objs[1] = m.getName();
+ objs[2] = m.getStandard();
+ objs[3] = m.getModel();
+ objs[4] = m.getColor();
+ objs[5] = m.getCategoryName();
+ objs[6] = materialService.getMaterialOtherByParam(mpArr, m);
+ objs[7] = m.getCommodityUnit();
+ objs[8] = m.getWeight() == null ? "" : m.getWeight().toString();
+ objs[9] = m.getExpiryNum() == null ? "" : m.getExpiryNum().toString();
+ objs[10] = m.getPurchaseDecimal() == null ? "" : m.getPurchaseDecimal().setScale(2, BigDecimal.ROUND_HALF_UP).toString();
+ objs[11] = m.getCommodityDecimal() == null ? "" : m.getCommodityDecimal().setScale(2, BigDecimal.ROUND_HALF_UP).toString();
+ objs[12] = m.getWholesaleDecimal() == null ? "" : m.getWholesaleDecimal().setScale(2, BigDecimal.ROUND_HALF_UP).toString();
+ objs[13] = m.getLowDecimal() == null ? "" : m.getLowDecimal().setScale(2, BigDecimal.ROUND_HALF_UP).toString();
+ objs[14] = m.getRemark();
+ objs[15] = m.getEnabled() ? "启用" : "禁用";
+ objs[16] = "1".equals(m.getEnableSerialNumber()) ? "有" : "无";
+ objs[17] = "1".equals(m.getEnableBatchNumber()) ? "有" : "无";
+ objects.add(objs);
+ }
}
+ File file = ExcelUtils.exportObjectsWithoutTitle(title, names, title, objects);
+ ExportExecUtil.showExec(file, file.getName(), response);
+ } else {
+ List