Commit 0a0b89c69d3ec0b66a3a3ec70eb26689c08f10b0

Authored by lst
1 parent e1ca62ff
Exists in dev

开发:气瓶导入模板下载

backend/lpg-common/pom.xml
... ... @@ -38,6 +38,34 @@
38 38 <version>8.2.1</version>
39 39 <scope>compile</scope>
40 40 </dependency>
  41 + <!--poi-->
  42 + <dependency>
  43 + <groupId>org.apache.poi</groupId>
  44 + <artifactId>poi</artifactId>
  45 + <version>4.1.2</version>
  46 + </dependency>
  47 + <dependency>
  48 + <groupId>org.apache.poi</groupId>
  49 + <artifactId>poi-ooxml</artifactId>
  50 + <version>4.1.2</version>
  51 + </dependency>
  52 +
  53 + <!--导出-->
  54 + <dependency>
  55 + <groupId>cn.afterturn</groupId>
  56 + <artifactId>easypoi-base</artifactId>
  57 + <version>4.1.0</version>
  58 + </dependency>
  59 + <dependency>
  60 + <groupId>cn.afterturn</groupId>
  61 + <artifactId>easypoi-web</artifactId>
  62 + <version>4.1.0</version>
  63 + </dependency>
  64 + <dependency>
  65 + <groupId>cn.afterturn</groupId>
  66 + <artifactId>easypoi-annotation</artifactId>
  67 + <version>4.1.0</version>
  68 + </dependency>
41 69 </dependencies>
42 70 <build>
43 71 <plugins>
... ... @@ -47,6 +75,7 @@
47 75 <configuration>
48 76 <nonFilteredFileExtensions>
49 77 <nonFilteredFileExtension>xls</nonFilteredFileExtension>
  78 + <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
50 79 </nonFilteredFileExtensions>
51 80 </configuration>
52 81 </plugin>
... ...
backend/lpg-common/src/main/java/com/hotent/lpg/common/util/DataExportUtils.java 0 → 100644
... ... @@ -0,0 +1,260 @@
  1 +package com.hotent.lpg.common.util;
  2 +
  3 +import cn.hutool.core.collection.CollUtil;
  4 +import cn.hutool.core.io.IoUtil;
  5 +import cn.hutool.core.map.MapUtil;
  6 +import cn.hutool.poi.excel.ExcelUtil;
  7 +import cn.hutool.poi.excel.ExcelWriter;
  8 +import com.alibaba.fastjson.JSONObject;
  9 +import io.swagger.annotations.ApiModel;
  10 +import io.swagger.annotations.ApiModelProperty;
  11 +import lombok.experimental.UtilityClass;
  12 +import lombok.extern.slf4j.Slf4j;
  13 +import org.apache.poi.ss.usermodel.CellStyle;
  14 +import org.apache.poi.ss.usermodel.HorizontalAlignment;
  15 +import org.apache.poi.ss.usermodel.VerticalAlignment;
  16 +
  17 +import javax.servlet.http.HttpServletResponse;
  18 +import javax.validation.constraints.NotBlank;
  19 +import javax.validation.constraints.Size;
  20 +import java.io.ByteArrayInputStream;
  21 +import java.io.IOException;
  22 +import java.io.OutputStream;
  23 +import java.lang.reflect.Field;
  24 +import java.net.URLEncoder;
  25 +import java.util.List;
  26 +import java.util.Map;
  27 +import java.util.Optional;
  28 +
  29 +@Slf4j
  30 +@UtilityClass
  31 +public class DataExportUtils {
  32 +
  33 + public void getExcel(Class<?> clazz, HttpServletResponse response, List<?> data) {
  34 +
  35 + Field[] entityFields = clazz.getDeclaredFields();
  36 + ExcelWriter writer = ExcelUtil.getWriter(true);
  37 + List<String> headers = CollUtil.newArrayList();
  38 + StringBuilder comment = new StringBuilder();
  39 + comment.append("提示(请勿删除此提示):");
  40 + for (Field field : entityFields) {
  41 + ApiModelProperty api = field.getAnnotation(ApiModelProperty.class);
  42 + Size size = field.getAnnotation(Size.class);
  43 + NotBlank notBlank = field.getAnnotation(NotBlank.class);
  44 + if (null != api) {
  45 + headers.add(api.value());
  46 + }
  47 + String sizeValue = Optional.ofNullable(size).map(Size::message).orElse("");
  48 + String notBlankValue = Optional.ofNullable(notBlank).map(NotBlank::message).orElse("");
  49 + comment.append("*").append(sizeValue).append(",").append(notBlankValue).append("\n");
  50 + }
  51 + comment.append("使用模板导入时请删除示例数据");
  52 + for (int i = 0; i < headers.size(); i++) {
  53 + writer.setColumnWidth(i, 22);
  54 + }
  55 + List<List<String>> rows = CollUtil.newArrayList();
  56 + rows.add(headers);
  57 + writer.merge(headers.size() - 1, comment).setRowHeight(0, headers.size() * 25);
  58 +
  59 + //设置注释单元格格式:水平左对齐,垂直居中,自动换行
  60 + CellStyle style = writer.createCellStyle();
  61 + style.setAlignment(HorizontalAlignment.LEFT);
  62 + style.setVerticalAlignment(VerticalAlignment.CENTER);
  63 + style.setWrapText(true);
  64 + writer.setStyle(style, 0, 0);
  65 +
  66 + writer.write(rows);
  67 + writer.write(data);
  68 + try {
  69 + final OutputStream output = response.getOutputStream();
  70 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
  71 + response.setHeader("Content-disposition",
  72 + "attachment;filename=" +
  73 + URLEncoder.encode(clazz.getSimpleName() + ".xlsx", "UTF-8"));
  74 + writer.flush(output);
  75 + writer.close();
  76 + IoUtil.close(output);
  77 + } catch (IOException e) {
  78 + log.error("转化流失败", e);
  79 + }
  80 + }
  81 +
  82 + public void bottleBatchImportTemplate(Class<?> clazz, HttpServletResponse response, List<?> data) {
  83 +
  84 + Field[] entityFields = clazz.getDeclaredFields();
  85 + ExcelWriter writer = ExcelUtil.getWriter(true);
  86 + List<String> headers = CollUtil.newArrayList();
  87 + StringBuilder comment = new StringBuilder();
  88 + comment.append("气瓶档案信息").append("\n");
  89 + String sizeValue = "0";
  90 + String notBlankValue = "0";
  91 + for (Field field : entityFields) {
  92 + ApiModelProperty api = field.getAnnotation(ApiModelProperty.class);
  93 + Size size = field.getAnnotation(Size.class);
  94 + NotBlank notBlank = field.getAnnotation(NotBlank.class);
  95 + if (null != api) {
  96 + headers.add(api.value());
  97 + }
  98 + sizeValue = Optional.ofNullable(size).map(Size::message).orElse("");
  99 + notBlankValue = Optional.ofNullable(notBlank).map(NotBlank::message).orElse("");
  100 + continue;
  101 + }
  102 + for (int i = 0; i < headers.size(); i++) {
  103 + writer.setColumnWidth(i, 22);
  104 + }
  105 + List<List<String>> rows = CollUtil.newArrayList();
  106 + rows.add(headers);
  107 + writer.merge(headers.size() - 1, comment).setRowHeight(0, 80);
  108 +
  109 + //设置注释单元格格式:水平左对齐,垂直居中,自动换行
  110 + CellStyle style = writer.createCellStyle();
  111 + style.setAlignment(HorizontalAlignment.LEFT);
  112 + style.setVerticalAlignment(VerticalAlignment.CENTER);
  113 + style.setWrapText(true);
  114 + writer.setStyle(style, 0, 0);
  115 +
  116 + writer.write(rows);
  117 + writer.write(data);
  118 + try {
  119 + final OutputStream output = response.getOutputStream();
  120 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
  121 + response.setHeader("Content-disposition",
  122 + "attachment;filename=" +
  123 + URLEncoder.encode(clazz.getSimpleName() + ".xlsx", "UTF-8"));
  124 + writer.flush(output);
  125 + writer.close();
  126 + IoUtil.close(output);
  127 + } catch (IOException e) {
  128 + log.error("转化流失败", e);
  129 + }
  130 + }
  131 +
  132 + public void getExcelVersion(Class<?> clazz, HttpServletResponse response, List<?> data) {
  133 +
  134 + Field[] entityFields = clazz.getDeclaredFields();
  135 + ExcelWriter writer = ExcelUtil.getWriter(true);
  136 + List<String> headers = CollUtil.newArrayList();
  137 + StringBuilder comment = new StringBuilder();
  138 + for (Field field : entityFields) {
  139 + ApiModelProperty api = field.getAnnotation(ApiModelProperty.class);
  140 + Size size = field.getAnnotation(Size.class);
  141 + NotBlank notBlank = field.getAnnotation(NotBlank.class);
  142 + if (null != api) {
  143 + headers.add(api.value());
  144 + }
  145 + String sizeValue = Optional.ofNullable(size).map(Size::message).orElse("");
  146 + String notBlankValue = Optional.ofNullable(notBlank).map(NotBlank::message).orElse("");
  147 + }
  148 + for (int i = 0; i < headers.size(); i++) {
  149 + writer.setColumnWidth(i, 22);
  150 + }
  151 + List<List<String>> rows = CollUtil.newArrayList();
  152 + rows.add(headers);
  153 +// writer.merge(headers.size() - 1, comment).setRowHeight(0, headers.size() * 25);
  154 +
  155 + //设置注释单元格格式:水平左对齐,垂直居中,自动换行
  156 + CellStyle style = writer.createCellStyle();
  157 + style.setAlignment(HorizontalAlignment.LEFT);
  158 + style.setVerticalAlignment(VerticalAlignment.CENTER);
  159 + style.setWrapText(true);
  160 + writer.setStyle(style, 0, 0);
  161 +
  162 + writer.write(rows);
  163 + writer.write(data);
  164 + try {
  165 + final OutputStream output = response.getOutputStream();
  166 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
  167 + response.setHeader("Content-disposition",
  168 + "attachment;filename=" +
  169 + URLEncoder.encode(clazz.getSimpleName() + ".xlsx", "UTF-8"));
  170 + writer.flush(output);
  171 + writer.close();
  172 + IoUtil.close(output);
  173 + } catch (IOException e) {
  174 + log.error("转化流失败", e);
  175 + }
  176 + }
  177 +
  178 + public void writeToExcel(List<?> list, HttpServletResponse response) {
  179 + if (list == null || list.isEmpty()) {
  180 + log.error("列表为空,生成表格失败");
  181 + return;
  182 + }
  183 +
  184 + Class<?> itemClass = list.get(0).getClass();
  185 + ApiModel apiModel = itemClass.getAnnotation(ApiModel.class);
  186 + String fileName = Optional.ofNullable(apiModel).map(ApiModel::value).orElse("导出数据");
  187 +
  188 + Field[] entityFields = itemClass.getDeclaredFields();
  189 +
  190 + //创建xlsx格式的writer
  191 + ExcelWriter writer = ExcelUtil.getWriter(true);
  192 +
  193 + setHeaderAlias(writer, entityFields);
  194 +
  195 + writer.write(list);
  196 +
  197 + //自适应每一列宽度
  198 + for (int i = 0; i < entityFields.length; i++) {
  199 + // 调整每一列宽度
  200 + writer.autoSizeColumn(i, false);
  201 + }
  202 +
  203 + try {
  204 + // 获取输出流
  205 + final OutputStream output = response.getOutputStream();
  206 + response.setHeader("Content-disposition",
  207 + "attachment;filename=" + URLEncoder.encode(fileName + ".xlsx", "UTF-8"));
  208 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
  209 + writer.flush(output);
  210 + writer.close();
  211 + IoUtil.close(output);
  212 + } catch (IOException e) {
  213 + log.error("转化为流失败", e);
  214 + }
  215 +
  216 + }
  217 +
  218 + public void writeToTxt(Object o, HttpServletResponse response) {
  219 + if (o == null) {
  220 + log.error("数据为空,生成文件失败");
  221 + return;
  222 + }
  223 +
  224 + Class<?> itemClass = o.getClass();
  225 + ApiModel apiModel = itemClass.getAnnotation(ApiModel.class);
  226 + String fileName = Optional.ofNullable(apiModel).map(ApiModel::value).orElse("导出数据") + ".txt";
  227 +
  228 + try {
  229 + ByteArrayInputStream inputStringStream = new ByteArrayInputStream(JSONObject.toJSONString(o).getBytes());
  230 + final OutputStream output = response.getOutputStream();
  231 + response.setHeader("Content-disposition",
  232 + "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
  233 + response.setContentType("text/plain");
  234 + int len;
  235 + byte[] buffer = new byte[1024 * 10];
  236 + while ((len = inputStringStream.read(buffer)) != -1) {
  237 + output.write(buffer, 0, len);
  238 + }
  239 + output.flush();
  240 + IoUtil.close(inputStringStream);
  241 + IoUtil.close(output);
  242 + } catch (IOException e) {
  243 + log.error("转化为流失败", e);
  244 + }
  245 + }
  246 +
  247 + private static void setHeaderAlias(ExcelWriter writer, Field[]... fieldsList) {
  248 + Map<String, String> headerAlias = MapUtil.newHashMap(true);
  249 + for (Field[] fields : fieldsList) {
  250 + for (Field field : fields) {
  251 + ApiModelProperty api = field.getAnnotation(ApiModelProperty.class);
  252 + if (null != api) {
  253 + headerAlias.put(field.getName(), api.value());
  254 + }
  255 + }
  256 + }
  257 + writer.setHeaderAlias(headerAlias);
  258 + }
  259 +
  260 +}
... ...
backend/lpg-common/src/main/java/com/hotent/lpg/common/util/ExcelUtils.java
... ... @@ -12,34 +12,34 @@ import java.util.Date;
12 12 import java.util.List;
13 13  
14 14 public class ExcelUtils {
15   - private final static String excel2003L =".xls"; //2003- 版本的excel
16   - private final static String excel2007U =".xlsx"; //2007+ 版本的excel
  15 + private final static String excel2003L = ".xls"; //2003- 版本的excel
  16 + private final static String excel2007U = ".xlsx"; //2007+ 版本的excel
17 17  
18 18  
19   - public static List<List<Object>> getListByExcel(InputStream in, String fileName) throws Exception{
  19 + public static List<List<Object>> getListByExcel(InputStream in, String fileName) throws Exception {
20 20 List<List<Object>> list = null;
21   -
22 21 //创建Excel工作薄
23   - Workbook work = getWorkbook(in,fileName);
24   - if(null == work){
  22 + Workbook work = getWorkbook(in, fileName);
  23 + if (null == work) {
25 24 throw new Exception("创建Excel工作薄为空!");
26 25 }
27 26 Sheet sheet = null; //页数
28 27 Row row = null; //行数
29 28 Cell cell = null; //列数
30   -
31 29 list = new ArrayList<List<Object>>();
32 30 //遍历Excel中所有的sheet
33 31 for (int i = 0; i < work.getNumberOfSheets(); i++) {
34 32 //取某个sheet
35 33 sheet = work.getSheetAt(i);
36   - if(sheet== null){continue;}
37   -
  34 + if (sheet == null) {
  35 + continue;
  36 + }
38 37 //遍历当前sheet中的所有行
39   - for (int j = sheet.getFirstRowNum()+1; j <= sheet.getLastRowNum(); j++) {
  38 + for (int j = sheet.getFirstRowNum() + 1; j <= sheet.getLastRowNum(); j++) {
40 39 row = sheet.getRow(j);
41   - if(row == null){continue;}
42   -
  40 + if (row == null) {
  41 + continue;
  42 + }
43 43 //遍历所有的列
44 44 List<Object> li = new ArrayList<Object>();
45 45 for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) {
... ... @@ -49,35 +49,33 @@ public class ExcelUtils {
49 49 list.add(li);
50 50 }
51 51 }
52   -
53 52 return list;
54   -
55 53 }
56 54  
57   - public static List<List<Object>> getListByExcelVersion2(InputStream in, String fileName) throws Exception{
  55 + public static List<List<Object>> getListByExcelVersion2(InputStream in, String fileName) throws Exception {
58 56 List<List<Object>> list = null;
59   -
60 57 //创建Excel工作薄
61   - Workbook work = getWorkbook(in,fileName);
62   - if(null == work){
  58 + Workbook work = getWorkbook(in, fileName);
  59 + if (null == work) {
63 60 throw new Exception("创建Excel工作薄为空!");
64 61 }
65 62 Sheet sheet = null; //页数
66 63 Row row = null; //行数
67 64 Cell cell = null; //列数
68   -
69 65 list = new ArrayList<List<Object>>();
70 66 //遍历Excel中所有的sheet
71 67 for (int i = 0; i < work.getNumberOfSheets(); i++) {
72 68 //取某个sheet
73 69 sheet = work.getSheetAt(i);
74   - if(sheet== null){continue;}
75   -
  70 + if (sheet == null) {
  71 + continue;
  72 + }
76 73 //遍历当前sheet中的所有行
77 74 for (int j = sheet.getFirstRowNum(); j <= sheet.getLastRowNum(); j++) {
78 75 row = sheet.getRow(j);
79   - if(row == null){continue;}
80   -
  76 + if (row == null) {
  77 + continue;
  78 + }
81 79 //遍历所有的列
82 80 List<Object> li = new ArrayList<Object>();
83 81 for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) {
... ... @@ -87,34 +85,33 @@ public class ExcelUtils {
87 85 list.add(li);
88 86 }
89 87 }
90   -
91 88 return list;
92   -
93 89 }
94   - public static List<List<Object>> getListByExcelVersion3(InputStream in, String fileName) throws Exception{
95   - List<List<Object>> list = null;
96 90  
  91 + public static List<List<Object>> getListByExcelVersion3(InputStream in, String fileName) throws Exception {
  92 + List<List<Object>> list = null;
97 93 //创建Excel工作薄
98   - Workbook work = getWorkbook(in,fileName);
99   - if(null == work){
  94 + Workbook work = getWorkbook(in, fileName);
  95 + if (null == work) {
100 96 throw new Exception("创建Excel工作薄为空!");
101 97 }
102 98 Sheet sheet = null; //页数
103 99 Row row = null; //行数
104 100 Cell cell = null; //列数
105   -
106 101 list = new ArrayList<List<Object>>();
107 102 //遍历Excel中所有的sheet
108 103 for (int i = 0; i < work.getNumberOfSheets(); i++) {
109 104 //取某个sheet
110 105 sheet = work.getSheetAt(i);
111   - if(sheet== null){continue;}
112   -
  106 + if (sheet == null) {
  107 + continue;
  108 + }
113 109 //遍历当前sheet中的所有行
114 110 for (int j = sheet.getFirstRowNum() + 1; j <= sheet.getLastRowNum(); j++) {
115 111 row = sheet.getRow(j);
116   - if(row == null){continue;}
117   -
  112 + if (row == null) {
  113 + continue;
  114 + }
118 115 //遍历所有的列
119 116 List<Object> li = new ArrayList<Object>();
120 117 for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) {
... ... @@ -124,39 +121,37 @@ public class ExcelUtils {
124 121 list.add(li);
125 122 }
126 123 }
127   -
128 124 return list;
129   -
130 125 }
131 126  
132 127 /**
133   - * @Description:根据文件后缀,自适应上传文件的版本
134 128 * @param inStr,fileName
135 129 * @return
136 130 * @throws Exception
  131 + * @Description:根据文件后缀,自适应上传文件的版本
137 132 */
138   - public static Workbook getWorkbook(InputStream inStr, String fileName) throws Exception{
  133 + public static Workbook getWorkbook(InputStream inStr, String fileName) throws Exception {
139 134 Workbook wb = null;
140 135 String fileType = fileName.substring(fileName.lastIndexOf("."));
141   - if(excel2003L.equals(fileType)){
  136 + if (excel2003L.equals(fileType)) {
142 137 wb = new HSSFWorkbook(inStr); //2003-
143   - }else if(excel2007U.equals(fileType)){
  138 + } else if (excel2007U.equals(fileType)) {
144 139 wb = new XSSFWorkbook(inStr); //2007+
145   - }else{
  140 + } else {
146 141 throw new Exception("解析的文件格式有误!");
147 142 }
148 143 return wb;
149 144 }
150 145  
151 146 /**
152   - * @Description:对表格中数值进行格式化
153 147 * @param cell
154 148 * @return
  149 + * @Description:对表格中数值进行格式化
155 150 */
156 151 //解决excel类型问题,获得数值
157 152 public static String getValue(Cell cell) {
158 153 String value = "";
159   - if(null == cell){
  154 + if (null == cell) {
160 155 return value;
161 156 }
162 157 switch (cell.getCellType()) {
... ... @@ -166,14 +161,15 @@ public class ExcelUtils {
166 161 //如果是date类型则 ,获取该cell的date值
167 162 Date date = DateUtil.getJavaDate(cell.getNumericCellValue());
168 163 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
169   - value = format.format(date);;
170   - }else {// 纯数字
171   - BigDecimal big= new BigDecimal(cell.getNumericCellValue());
  164 + value = format.format(date);
  165 + ;
  166 + } else {// 纯数字
  167 + BigDecimal big = new BigDecimal(cell.getNumericCellValue());
172 168 value = big.toString();
173 169 //解决1234.0 去掉后面的.0
174   - if(null!= value&&!"".equals(value.trim())){
  170 + if (null != value && !"".equals(value.trim())) {
175 171 String[] item = value.split("[.]");
176   - if(1<item.length&&"0".equals(item[1])){
  172 + if (1 < item.length && "0".equals(item[1])) {
177 173 value = item[0];
178 174 }
179 175 }
... ... @@ -193,16 +189,14 @@ public class ExcelUtils {
193 189 break;
194 190 // 布尔类型
195 191 case BOOLEAN:
196   - value = " "+ cell.getBooleanCellValue();
  192 + value = " " + cell.getBooleanCellValue();
197 193 break;
198 194 default:
199 195 value = cell.getStringCellValue();
200 196 }
201   - if("null".endsWith(value.trim())){
202   - value= "";
  197 + if ("null".endsWith(value.trim())) {
  198 + value = "";
203 199 }
204 200 return value;
205 201 }
206   -
207   -
208 202 }
... ...
backend/lpg-manage/pom.xml
... ... @@ -84,6 +84,7 @@
84 84 <configuration>
85 85 <nonFilteredFileExtensions>
86 86 <nonFilteredFileExtension>xls</nonFilteredFileExtension>
  87 + <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
87 88 </nonFilteredFileExtensions>
88 89 </configuration>
89 90 </plugin>
... ...
backend/lpg-manage/src/main/java/com/hotent/lpg/manage/controller/MQpxxController.java
1 1 package com.hotent.lpg.manage.controller;
2 2  
  3 +import cn.afterturn.easypoi.excel.ExcelExportUtil;
  4 +import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
3 5 import cn.hutool.core.util.ObjectUtil;
  6 +import com.alibaba.fastjson.JSON;
4 7 import com.baomidou.mybatisplus.core.metadata.IPage;
5 8 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
6 9 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
... ... @@ -9,6 +12,7 @@ import com.hotent.base.util.BeanUtils;
9 12 import com.hotent.base.util.StringUtil;
10 13 import com.hotent.lpg.common.model.WQpssxx;
11 14 import com.hotent.lpg.common.model.WQpxx;
  15 +import com.hotent.lpg.manage.dto.BottleBatchImportDTO;
12 16 import com.hotent.lpg.manage.dto.QpczDTO;
13 17 import com.hotent.lpg.manage.dto.ReceiveQpRequest;
14 18 import com.hotent.lpg.manage.manager.MCzxxManager;
... ... @@ -20,13 +24,18 @@ import com.hotent.runtime.script.ScriptImpl;
20 24 import io.swagger.annotations.ApiOperation;
21 25 import io.swagger.annotations.ApiParam;
22 26 import lombok.extern.slf4j.Slf4j;
  27 +import org.apache.poi.ss.usermodel.Workbook;
23 28 import org.springframework.beans.factory.annotation.Autowired;
24 29 import org.springframework.web.bind.annotation.*;
25 30 import org.springframework.web.multipart.MultipartFile;
26 31  
  32 +import javax.servlet.http.HttpServletResponse;
  33 +import java.io.OutputStream;
  34 +import java.net.URLEncoder;
27 35 import java.util.ArrayList;
28 36 import java.util.HashMap;
29 37 import java.util.List;
  38 +import java.util.Map;
30 39  
31 40 /**
32 41 * 员工气瓶
... ... @@ -228,4 +237,61 @@ public class MQpxxController {
228 237 log.info("耗时={}秒", (end - start) / 1000);
229 238 return CommonResult.ok().value("气瓶导入成功");
230 239 }
  240 +
  241 + @ApiOperation(value = "气瓶导入模板下载")
  242 + @PostMapping("/bottleBatchImportTemplate")
  243 + public void bottleBatchImportTemplate(HttpServletResponse response) throws Exception {
  244 + BottleBatchImportDTO bottleBatchImportDTO = BottleBatchImportDTO.builder()
  245 + .ro("1")
  246 + .czdwmc("云梦县城南液化气有限公司")
  247 + .ewm("4020968725")
  248 + .ccbh("1041628")
  249 + .zybh("000000")
  250 + .qpzl("液化石油气钢瓶")
  251 + .czjz("液化石油气")
  252 + .zzny("2016-09-20")
  253 + .xcjyny("2028-08-20")
  254 + .bcjyny("2024-08-20")
  255 + .sjsynx("2028-08-20")
  256 + .qprj("35.5")
  257 + .qpzt("正常")
  258 + .qpgg("YSP35.5")
  259 + .gcgzyl("2.1")
  260 + .sjbh("2.5")
  261 + .lrzh("9712001")
  262 + .qpcpzlzms("1")
  263 + .qpaqzljdjyzs("1")
  264 + .qpcqzm("1")
  265 + .qpjyhgzm("1")
  266 + .tjsj("2024/8/20 7:58:57")
  267 + .qpyszl("16.5")
  268 + .ssyyl("3.2")
  269 + .zzdw("佛山市良琦燃气具有限公司")
  270 + .jyhbh("44702")
  271 + .qpbz("自有产权瓶").build();
  272 + Map map = JSON.parseObject(JSON.toJSONString(bottleBatchImportDTO), Map.class);
  273 + TemplateExportParams params = new TemplateExportParams(
  274 + "doc/qpdadrmb.xlsx");
  275 + params.setColForEach(true);
  276 + Workbook workbook = ExcelExportUtil.exportExcel(params, map);
  277 + String fileName = "气瓶档案导入模板.xlsx";
  278 + response.setContentType("APPLICATION/OCTET-STREAM");
  279 + response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
  280 + response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));
  281 + response.addHeader("filename", fileName);
  282 + OutputStream os = null;
  283 + try {
  284 + os = response.getOutputStream();
  285 + if (workbook != null) {
  286 + workbook.write(os);
  287 + }
  288 + os.flush();
  289 + os.close();
  290 + } catch (Exception e) {
  291 + e.printStackTrace();
  292 + } finally {
  293 + if (os != null)
  294 + os.close();
  295 + }
  296 + }
231 297 }
... ...
backend/lpg-manage/src/main/java/com/hotent/lpg/manage/dto/BottleBatchImportDTO.java 0 → 100644
... ... @@ -0,0 +1,67 @@
  1 +package com.hotent.lpg.manage.dto;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Builder;
  6 +import lombok.Data;
  7 +
  8 +@Data
  9 +@Builder
  10 +@ApiModel(description = "气瓶导入模板")
  11 +public class BottleBatchImportDTO {
  12 +
  13 + @ApiModelProperty(value = "RO")
  14 + private String ro;
  15 + @ApiModelProperty(value = "充装单位名称")
  16 + private String czdwmc;
  17 + @ApiModelProperty(value = "二维码")
  18 + private String ewm;
  19 + @ApiModelProperty(value = "出厂编号")
  20 + private String ccbh;
  21 + @ApiModelProperty(value = "自有编号")
  22 + private String zybh;
  23 + @ApiModelProperty(value = "气瓶种类")
  24 + private String qpzl;
  25 + @ApiModelProperty(value = "充装介质")
  26 + private String czjz;
  27 + @ApiModelProperty(value = "制造年月")
  28 + private String zzny;
  29 + @ApiModelProperty(value = "下次检验年月")
  30 + private String xcjyny;
  31 + @ApiModelProperty(value = "本次检验年月")
  32 + private String bcjyny;
  33 + @ApiModelProperty(value = "设计使用年限")
  34 + private String sjsynx;
  35 + @ApiModelProperty(value = "气瓶容积")
  36 + private String qprj;
  37 + @ApiModelProperty(value = "气瓶状态")
  38 + private String qpzt;
  39 + @ApiModelProperty(value = "气瓶规格")
  40 + private String qpgg;
  41 + @ApiModelProperty(value = "公称工作压力")
  42 + private String gcgzyl;
  43 + @ApiModelProperty(value = "设计壁厚")
  44 + private String sjbh;
  45 + @ApiModelProperty(value = "录入账号")
  46 + private String lrzh;
  47 + @ApiModelProperty(value = "气瓶产品质量证明书")
  48 + private String qpcpzlzms;
  49 + @ApiModelProperty(value = "气瓶安全质量监督检验证书")
  50 + private String qpaqzljdjyzs;
  51 + @ApiModelProperty(value = "气瓶产权证明")
  52 + private String qpcqzm;
  53 + @ApiModelProperty(value = "气瓶检验合格证明")
  54 + private String qpjyhgzm;
  55 + @ApiModelProperty(value = "添加时间")
  56 + private String tjsj;
  57 + @ApiModelProperty(value = "气瓶原始重量")
  58 + private String qpyszl;
  59 + @ApiModelProperty(value = "水试验压力")
  60 + private String ssyyl;
  61 + @ApiModelProperty(value = "制造单位")
  62 + private String zzdw;
  63 + @ApiModelProperty(value = "检验环编号")
  64 + private String jyhbh;
  65 + @ApiModelProperty(value = "气瓶备注")
  66 + private String qpbz;
  67 +}
... ...
backend/lpg-manage/src/main/resources/doc/qpdadrmb.xlsx 0 → 100644
No preview for this file type