From 75b2904fbaf4fab6a9fb3baf065d2c927cc7a7a2 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 27 九月 2023 18:16:34 +0800
Subject: [PATCH] 基础数据-物料清单维护-导出
---
framework/src/main/java/com/yuanchu/mom/utils/easyexcel/template/ExcelMBomTemplate.java | 45 ++++++
base-server/src/main/java/com/yuanchu/mom/service/MbomModelService.java | 9 +
framework/src/main/java/com/yuanchu/mom/utils/easyexcel/converter/LocalDateConverter.java | 2
framework/src/main/java/com/yuanchu/mom/utils/easyexcel/CustemHandler.java | 1
base-server/src/main/java/com/yuanchu/mom/service/impl/MbomModelServiceImpl.java | 141 +++++++++++++++++++
framework/src/main/java/com/yuanchu/mom/utils/easyexcel/EasyExcelUtils.java | 50 ++++++-
inventory-server/src/main/java/com/yuanchu/mom/controller/SaleController.java | 10 -
inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java | 18 --
framework/src/main/java/com/yuanchu/mom/utils/easyexcel/ExcelMergeStrategy.java | 87 ++++++++++++
base-server/pom.xml | 12 +
base-server/src/main/java/com/yuanchu/mom/controller/MbomModelController.java | 19 ++
pom.xml | 5
12 files changed, 363 insertions(+), 36 deletions(-)
diff --git a/base-server/pom.xml b/base-server/pom.xml
index 5bfa438..79512fe 100644
--- a/base-server/pom.xml
+++ b/base-server/pom.xml
@@ -27,6 +27,18 @@
<artifactId>user-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-ooxml</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-ooxml-schemas</artifactId>
+ </dependency>
</dependencies>
diff --git a/base-server/src/main/java/com/yuanchu/mom/controller/MbomModelController.java b/base-server/src/main/java/com/yuanchu/mom/controller/MbomModelController.java
index a7904f8..66124f7 100644
--- a/base-server/src/main/java/com/yuanchu/mom/controller/MbomModelController.java
+++ b/base-server/src/main/java/com/yuanchu/mom/controller/MbomModelController.java
@@ -2,7 +2,7 @@
import com.yuanchu.mom.pojo.dto.MbomModelDto;
-import com.yuanchu.mom.pojo.dto.TechniqueModelDto;
+import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -12,6 +12,11 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.yuanchu.mom.service.MbomModelService;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
/**
@@ -70,5 +75,17 @@
return Result.success("鎵归噺鍒犻櫎鎴愬姛!");
}
+ @ApiOperation(value = "涓嬭浇妯℃澘")
+ @PostMapping("/downloadTemplate")
+ public void downloadMBomTemplate(@RequestBody Map<String,Object> map,HttpServletResponse response){
+ mbomModelService.downloadTemplate(map,response);
+ }
+
+ @ApiOperation(value = "瀵煎嚭鐗╂枡娓呭崟")
+ @PostMapping("/exportMBom")
+ public void exportMBom(@RequestBody Map<String,Object> map, HttpServletResponse response){
+ mbomModelService.exportMBom(map,response);
+ }
+
}
diff --git a/base-server/src/main/java/com/yuanchu/mom/service/MbomModelService.java b/base-server/src/main/java/com/yuanchu/mom/service/MbomModelService.java
index 92cc714..58af0bf 100644
--- a/base-server/src/main/java/com/yuanchu/mom/service/MbomModelService.java
+++ b/base-server/src/main/java/com/yuanchu/mom/service/MbomModelService.java
@@ -4,6 +4,7 @@
import com.yuanchu.mom.pojo.MbomModel;
import com.yuanchu.mom.pojo.dto.MbomModelDto;
+import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
@@ -40,5 +41,13 @@
* @param ids
*/
void delAllMbom(String ids);
+
+ void downloadTemplate(Map<String, Object> map,HttpServletResponse response);
+
+ /**
+ * 瀵煎嚭
+ * @param map
+ */
+ void exportMBom(Map<String, Object> map,HttpServletResponse response);
}
diff --git a/base-server/src/main/java/com/yuanchu/mom/service/impl/MbomModelServiceImpl.java b/base-server/src/main/java/com/yuanchu/mom/service/impl/MbomModelServiceImpl.java
index 81dd894..d92a843 100644
--- a/base-server/src/main/java/com/yuanchu/mom/service/impl/MbomModelServiceImpl.java
+++ b/base-server/src/main/java/com/yuanchu/mom/service/impl/MbomModelServiceImpl.java
@@ -1,17 +1,32 @@
package com.yuanchu.mom.service.impl;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.support.ExcelTypeEnum;
+import com.alibaba.excel.write.metadata.WriteSheet;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.MbomModelMapper;
import com.yuanchu.mom.pojo.MbomModel;
import com.yuanchu.mom.pojo.dto.MbomModelDto;
import com.yuanchu.mom.pojo.dto.MbomModelDto2;
import com.yuanchu.mom.service.MbomModelService;
+import com.yuanchu.mom.service.TechnicalModelService;
+import com.yuanchu.mom.utils.StringUtils;
+import com.yuanchu.mom.utils.easyexcel.CustemHandler;
+import com.yuanchu.mom.utils.easyexcel.EasyExcelUtils;
+import com.yuanchu.mom.utils.easyexcel.ExcelMergeStrategy;
+import com.yuanchu.mom.utils.easyexcel.converter.LocalDateConverter;
+import com.yuanchu.mom.utils.easyexcel.template.ExcelMBomTemplate;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.map.HashedMap;
import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-import java.util.List;
-import java.util.Map;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -25,6 +40,9 @@
@Resource
MbomModelMapper mbomModelMapper;
+
+ @Autowired
+ private TechnicalModelService technicalModelService;
//鏌ヨ鐗╂枡娓呭崟缁存姢鍒楄〃-->鍙宠竟灞曠ず璇ュ伐鑹烘墍闇�瑕佺殑鍘熸潗鏂�
@@ -61,5 +79,124 @@
public void delAllMbom(String ids) {
mbomModelMapper.delAllMbom(ids);
}
+
+ @Override
+ public void downloadTemplate(Map<String, Object> map,HttpServletResponse response) {
+ try{
+ List<String> typeList = getTypeList(map);
+ ExcelWriter excelWriter = EasyExcel.write(EasyExcelUtils.getResponse(response,"鐗╂枡娓呭崟瀵煎叆妯℃澘").getOutputStream())
+ .excelType(ExcelTypeEnum.XLS)
+ .build();
+ // 瀵煎嚭澶氫釜sheet椤�
+ for (int i = 0; i < typeList.size(); i++) {
+ WriteSheet sheet = EasyExcel.writerSheet(i, typeList.get(i))
+ .head(ExcelMBomTemplate.class)
+ .registerConverter(new LocalDateConverter())
+ .registerWriteHandler(new CustemHandler())
+ .registerWriteHandler(EasyExcelUtils.getStyleStrategy())
+ .build();
+ excelWriter.write(null, sheet);
+ }
+ // 鍏抽棴 ExcelWriter锛屽畬鎴愬鍑�
+ excelWriter.finish();
+ }catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ response.getOutputStream().close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public void exportMBom(Map<String, Object> map,HttpServletResponse response) {
+ try{
+ //绫诲瀷鍒楄〃
+ List<String> typeList = getTypeList(map);
+ //sheet鏁版嵁
+ Map<String,List<ExcelMBomTemplate>> exportListByType = new HashedMap<>();
+ typeList.forEach((type)->{
+ List<Map<String,Object>> techTemList =
+ technicalModelService.selectAllTechTem(type, "");
+ List<ExcelMBomTemplate> list = new ArrayList<>();
+ techTemList.forEach(tech -> {
+ String father = "";
+ if(StringUtils.isNotEmpty(tech.get("name").toString())){
+ father = tech.get("name").toString();
+ }
+ if(StringUtils.isNotEmpty(tech.get("children").toString())){
+ List<Map<String,Object>> childrenList = (List<Map<String, Object>>) tech.get("children");
+ String finalFather = father;
+ childrenList.forEach(c -> {
+ String name = c.get("name").toString();
+ Integer id = Integer.parseInt(c.get("id").toString());
+ List<Map<String, Object>> mbom = mbomModelMapper.selectAllMbom(id);
+ if(CollectionUtils.isNotEmpty(mbom)){
+ mbom.forEach(m->{
+ ExcelMBomTemplate temp = new ExcelMBomTemplate();
+ temp.setFather(finalFather);
+ temp.setName(name);
+ temp.setMaterialName(m.get("name").toString());
+ temp.setUnit(m.get("unit").toString());
+ list.add(temp);
+ });
+ }
+ });
+ }
+ });
+ exportListByType.put(type,list);
+ });
+ ExcelWriter excelWriter = EasyExcel.write(
+ EasyExcelUtils.getResponse(response, "鐗╂枡娓呭崟瀵煎嚭").getOutputStream()
+ )
+ .excelType(ExcelTypeEnum.XLS)
+ .build();
+ // 瀵煎嚭澶氫釜sheet椤�
+ for (int i = 0; i < typeList.size(); i++) {
+ String type = typeList.get(i);
+ List<String> fathers = exportListByType.get(type).stream()
+ .map(ExcelMBomTemplate::getFather).collect(Collectors.toList());
+ List<String> names = exportListByType.get(type).stream()
+ .map(ExcelMBomTemplate::getName).collect(Collectors.toList());
+ WriteSheet sheet = EasyExcel.writerSheet(i, typeList.get(i))
+ .head(ExcelMBomTemplate.class)
+ .registerConverter(new LocalDateConverter())
+ .registerWriteHandler(new CustemHandler())
+ .registerWriteHandler(EasyExcelUtils.getStyleStrategy())
+ .registerWriteHandler(new ExcelMergeStrategy(fathers,0))
+ .registerWriteHandler(new ExcelMergeStrategy(names,1))
+ .build();
+ excelWriter.write(exportListByType.get(type), sheet);
+ }
+ // 鍏抽棴 ExcelWriter锛屽畬鎴愬鍑�
+ excelWriter.finish();
+ }catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ response.getOutputStream().close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ /**
+ * 鑾峰彇绫诲瀷鍒楄〃
+ * @param map
+ * @return
+ */
+ private List<String> getTypeList(Map<String, Object> map){
+ if(!map.isEmpty()){
+ String arrStr = String.valueOf(map.get("typeList"));
+ String[] strings = arrStr.split(",");
+ return Arrays.asList(strings);
+ }
+ return null;
+ }
+
}
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/CustemHandler.java b/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/CustemHandler.java
index e6fc804..207dced 100644
--- a/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/CustemHandler.java
+++ b/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/CustemHandler.java
@@ -20,7 +20,6 @@
public class CustemHandler extends AbstractColumnWidthStyleStrategy {
private static final int MAX_COLUMN_WIDTH = 255;
- //鍥犱负鍦ㄨ嚜鍔ㄥ垪瀹界殑杩囩▼涓紝鏈変簺璁剧疆鍦版柟璁╁垪瀹芥樉寰楃揣鍑戯紝鎵�浠ュ仛鍑轰簡涓垽鏂�
private static final int COLUMN_WIDTH = 20;
private Map<Integer, Map<Integer, Integer>> CACHE = new HashMap(8);
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/EasyExcelUtils.java b/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/EasyExcelUtils.java
index 578666c..13018f6 100644
--- a/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/EasyExcelUtils.java
+++ b/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/EasyExcelUtils.java
@@ -1,6 +1,7 @@
package com.yuanchu.mom.utils.easyexcel;
+import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.ExcelWriter;
@@ -15,13 +16,17 @@
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.yuanchu.mom.exception.ExcelException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.ss.formula.functions.T;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.http.HttpServletResponse;
import java.io.*;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
@@ -33,7 +38,6 @@
**/
public class EasyExcelUtils {
-
public static HorizontalCellStyleStrategy getStyleStrategy() {
// 澶寸殑绛栫暐
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
@@ -42,7 +46,7 @@
WriteFont headWriteFont = new WriteFont();
headWriteFont.setFontHeightInPoints((short) 12);
// 瀛椾綋鏍峰紡
- headWriteFont.setFontName("Frozen");
+ headWriteFont.setFontName("瀹嬩綋");
headWriteCellStyle.setWriteFont(headWriteFont);
// 鑷姩鎹㈣
headWriteCellStyle.setWrapped(false);
@@ -59,12 +63,19 @@
contentWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
WriteFont contentWriteFont = new WriteFont();
// 瀛椾綋澶у皬
- contentWriteFont.setFontHeightInPoints((short) 12);
+ contentWriteFont.setFontHeightInPoints((short) 11);
// 瀛椾綋鏍峰紡
- contentWriteFont.setFontName("Calibri");
+ contentWriteFont.setFontName("瀹嬩綋");
contentWriteCellStyle.setWriteFont(contentWriteFont);
- // 鍐呭宸﹀榻�
- contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
+ // 鍐呭灞呬腑瀵归綈
+ contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
+ //鍐呭鍨傜洿灞呬腑
+ contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+ //杈规璁剧疆
+ contentWriteCellStyle.setBorderTop(BorderStyle.THIN);
+ contentWriteCellStyle.setBorderRight(BorderStyle.THIN);
+ contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);
+ contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);
// 杩欎釜绛栫暐鏄� 澶存槸澶寸殑鏍峰紡 鍐呭鏄唴瀹圭殑鏍峰紡 鍏朵粬鐨勭瓥鐣ュ彲浠ヨ嚜宸卞疄鐜�
return new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
}
@@ -82,7 +93,7 @@
// 鑷姩鎹㈣
headWriteCellStyle.setWrapped(false);
// 姘村钩瀵归綈鏂瑰紡
- headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
+ headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
// 鍨傜洿瀵归綈鏂瑰紡
headWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
// 鍐呭鐨勭瓥鐣�
@@ -141,6 +152,31 @@
}
/**
+ * 璁剧疆response
+ * @param response
+ * @param targetName
+ * @return
+ */
+ public static HttpServletResponse getResponse(HttpServletResponse response, String targetName){
+ String fileName;
+ try {
+ fileName = String.valueOf(new StringBuilder()
+ .append(targetName)
+ .append("_")
+ .append(DateUtil.today())
+ .append(ExcelTypeEnum.XLS.getValue()));
+ fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString());
+ response.setContentType("application/vnd.ms-excel");
+ response.setHeader("Cache-Control", "no-cache");
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+ response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
+ return response;
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
* excel鏂囦欢璇诲彇
*
* @param clazz model绫诲瀷Class瀵硅薄
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/ExcelMergeStrategy.java b/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/ExcelMergeStrategy.java
new file mode 100644
index 0000000..59b0146
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/ExcelMergeStrategy.java
@@ -0,0 +1,87 @@
+package com.yuanchu.mom.utils.easyexcel;
+
+import com.alibaba.excel.metadata.Head;
+import com.alibaba.excel.write.merge.AbstractMergeStrategy;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 鍚堝苟鍗曞厓鏍�
+ * @Author: Zou, Yu
+ * @DATE: 2023/9/26 0026 10:16
+ */
+public class ExcelMergeStrategy extends AbstractMergeStrategy {
+
+ /**
+ * 鍒嗙粍锛屾瘡鍑犺鍚堝苟涓�娆�
+ */
+ private List<Integer> exportFieldGroupCountList;
+
+ /**
+ * 鐩爣鍚堝苟鍒梚ndex
+ */
+ private Integer targetColumnIndex;
+
+ // 闇�瑕佸紑濮嬪悎骞跺崟鍏冩牸鐨勯琛宨ndex
+ private Integer rowIndex;
+
+ // exportDataList涓哄緟鍚堝苟鐩爣鍒楃殑鍊�
+ public ExcelMergeStrategy(List<String> exportDataList, Integer targetColumnIndex) {
+ this.exportFieldGroupCountList = getGroupCountList(exportDataList);
+ this.targetColumnIndex = targetColumnIndex;
+ }
+
+ @Override
+ protected void merge(Sheet sheet, Cell cell, Head head, Integer integer) {
+ if (null == rowIndex) {
+ rowIndex = cell.getRowIndex();
+ }
+ // 浠呬粠棣栬浠ュ強鐩爣鍒楃殑鍗曞厓鏍煎紑濮嬪悎骞讹紝蹇界暐鍏朵粬
+ if (cell.getRowIndex() == rowIndex && cell.getColumnIndex() == targetColumnIndex) {
+ mergeGroupColumn(sheet);
+ }
+ }
+
+ private void mergeGroupColumn(Sheet sheet) {
+ int rowCount = rowIndex;
+ for (Integer count : exportFieldGroupCountList) {
+ if(count == 1) {
+ rowCount += count;
+ continue ;
+ }
+ // 鍚堝苟鍗曞厓鏍�
+ CellRangeAddress cellRangeAddress = new CellRangeAddress(rowCount, rowCount + count - 1, targetColumnIndex, targetColumnIndex);
+ sheet.addMergedRegionUnsafe(cellRangeAddress);
+ rowCount += count;
+ }
+ }
+
+ // 璇ユ柟娉曞皢鐩爣鍒楁牴鎹�兼槸鍚︾浉鍚岃繛缁彲鍚堝苟锛屽瓨鍌ㄥ彲鍚堝苟鐨勮鏁�
+ private List<Integer> getGroupCountList(List<String> exportDataList){
+ if (CollectionUtils.isEmpty(exportDataList)) {
+ return new ArrayList<>();
+ }
+
+ List<Integer> groupCountList = new ArrayList<>();
+ int count = 1;
+
+ for (int i = 1; i < exportDataList.size(); i++) {
+ if (exportDataList.get(i).equals(exportDataList.get(i - 1))) {
+ count++;
+ } else {
+ groupCountList.add(count);
+ count = 1;
+ }
+ }
+ // 澶勭悊瀹屾渶鍚庝竴鏉″悗
+ groupCountList.add(count);
+ return groupCountList;
+ }
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/LocalDateConverter.java b/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/converter/LocalDateConverter.java
similarity index 96%
rename from framework/src/main/java/com/yuanchu/mom/utils/easyexcel/LocalDateConverter.java
rename to framework/src/main/java/com/yuanchu/mom/utils/easyexcel/converter/LocalDateConverter.java
index 91e2eb5..3582407 100644
--- a/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/LocalDateConverter.java
+++ b/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/converter/LocalDateConverter.java
@@ -1,4 +1,4 @@
-package com.yuanchu.mom.utils.easyexcel;
+package com.yuanchu.mom.utils.easyexcel.converter;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/template/ExcelMBomTemplate.java b/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/template/ExcelMBomTemplate.java
new file mode 100644
index 0000000..5d26f52
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/utils/easyexcel/template/ExcelMBomTemplate.java
@@ -0,0 +1,45 @@
+package com.yuanchu.mom.utils.easyexcel.template;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentLoopMerge;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.metadata.BaseRowModel;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * @Author: Zou, Yu
+ * @DATE: 2023/9/25 0025 12:47
+ */
+@Data
+@HeadRowHeight(40)
+@ContentRowHeight(25)
+@EqualsAndHashCode(callSuper = true)
+public class ExcelMBomTemplate extends BaseRowModel implements Serializable {
+
+ @ColumnWidth(30)
+ @ExcelProperty(value="宸ュ簭", index = 0)
+ @JsonSerialize
+ private String father;
+
+ @ColumnWidth(30)
+ @ExcelProperty(value="宸ヨ壓鍚嶇О", index = 1)
+ @JsonSerialize
+ private String name;
+
+ @ColumnWidth(30)
+ @ExcelProperty(value="鍘熸潗鏂欏悕绉�", index = 2)
+ @JsonSerialize
+ private String materialName;
+
+ @ColumnWidth(30)
+ @ExcelProperty(value="鍗曚綅", index = 3)
+ @JsonSerialize
+ private String unit;
+
+}
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/controller/SaleController.java b/inventory-server/src/main/java/com/yuanchu/mom/controller/SaleController.java
index bd6a077..d2bc5b0 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/controller/SaleController.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/controller/SaleController.java
@@ -1,22 +1,15 @@
package com.yuanchu.mom.controller;
-import cn.hutool.core.date.DateUtil;
-import com.alibaba.excel.EasyExcel;
-import com.alibaba.excel.support.ExcelTypeEnum;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.dto.ExportSaleDto;
-import com.yuanchu.mom.utils.easyexcel.template.ExportSaleTemplate;
import com.yuanchu.mom.pojo.dto.SaleDto;
import com.yuanchu.mom.pojo.dto.SaleMaterialDto;
import com.yuanchu.mom.pojo.vo.SaleVo;
import com.yuanchu.mom.service.SaleService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.utils.Jwt;
-import com.yuanchu.mom.utils.easyexcel.CustemHandler;
-import com.yuanchu.mom.utils.easyexcel.EasyExcelUtils;
-import com.yuanchu.mom.utils.easyexcel.LocalDateConverter;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -28,9 +21,6 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
import java.util.*;
/**
diff --git a/inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java b/inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java
index 516d62d..4f61f64 100644
--- a/inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java
+++ b/inventory-server/src/main/java/com/yuanchu/mom/service/impl/SaleServiceImpl.java
@@ -7,21 +7,20 @@
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.Task.SyncOrder;
+import com.yuanchu.mom.mapper.SaleMapper;
import com.yuanchu.mom.mapper.SaleMaterialMapper;
import com.yuanchu.mom.pojo.Sale;
-import com.yuanchu.mom.mapper.SaleMapper;
import com.yuanchu.mom.pojo.SaleMaterial;
import com.yuanchu.mom.pojo.dto.*;
import com.yuanchu.mom.pojo.vo.SaleVo;
import com.yuanchu.mom.service.SaleMaterialService;
import com.yuanchu.mom.service.SaleService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.utils.easyexcel.CustemHandler;
import com.yuanchu.mom.utils.easyexcel.EasyExcelUtils;
-import com.yuanchu.mom.utils.easyexcel.LocalDateConverter;
+import com.yuanchu.mom.utils.easyexcel.converter.LocalDateConverter;
import com.yuanchu.mom.utils.easyexcel.template.ExportSaleTemplate;
-import com.yuanchu.mom.vo.Result;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -272,16 +271,7 @@
for (int i = 0; i < exportSaleTemplates.size(); i++) {
exportSaleTemplates.get(i).setId(i+1);
}
- String fileName = String.valueOf(new StringBuilder()
- .append("閿�鍞鍗昣")
- .append(DateUtil.today())
- .append(ExcelTypeEnum.XLS.getValue()));
- fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString());
- response.setContentType("application/octet-stream");
- response.setHeader("Cache-Control", "no-cache");
- response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
- response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
- EasyExcel.write(response.getOutputStream())
+ EasyExcel.write(EasyExcelUtils.getResponse(response,"閿�鍞鍗�").getOutputStream())
.head(ExportSaleTemplate.class)
.registerConverter(new LocalDateConverter())
.autoCloseStream(true)
diff --git a/pom.xml b/pom.xml
index 1929bb9..0318ba8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -124,6 +124,11 @@
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-ooxml-schemas</artifactId>
+ <version>${poi.version}</version>
+ </dependency>
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
--
Gitblit v1.9.3