虚拟清单--模板下载

This commit is contained in:
zhn
2022-04-18 15:33:18 +08:00
parent 5ca0c88988
commit 898065e34b
2 changed files with 110 additions and 5 deletions
@@ -193,7 +193,7 @@ public class DummyInventoryInfoEOController extends JeroController<DummyInventor
@ApiOperation(value = "模板下载")
@GetMapping(value = "/exportTemplate")
public void exportTemplate(@Validated @RequestBody DummyInventoryInfoEO dummyInventoryInfoEO, HttpServletResponse response, HttpServletRequest request) throws Exception {
public void exportTemplate(DummyInventoryInfoEO dummyInventoryInfoEO, HttpServletResponse response, HttpServletRequest request) throws Exception {
dummyInventoryInfoEOService.exportTemplate(dummyInventoryInfoEO,response,request);
}
@@ -1,11 +1,13 @@
package com.jero.modules.dummy.service.impl;
import com.aliyuncs.utils.IOUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.enums.CutEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.document.entity.BussDocumentLibraryEO;
import com.jero.modules.document.service.IBussDocumentLibraryEOService;
@@ -17,12 +19,23 @@ import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.system.entity.SysCategory;
import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.util.CellRangeAddress;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
@@ -48,6 +61,8 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
private SysCategoryServiceImpl sysCategoryService;
@Autowired
private IOSSFileService iOSSFileService;
@Value(value = "${jero.path.upload}")
private String uploadpath;
@Override
@@ -229,6 +244,94 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
*/
@Override
public void exportTemplate(DummyInventoryInfoEO dummyInventoryInfoEO, HttpServletResponse response, HttpServletRequest request) {
OutputStream os = null;
HSSFWorkbook workbook = new HSSFWorkbook();
String fileOriName = "虚拟清单导入模板.xls";
String filePath = uploadpath + File.separator + fileOriName;
try {
String titleOne = "编号,标题,子标题,适用范围,状态,对应标准,实施类别,新车实施日期,在产车实施日期,WVTA ID,认证类型,认证级别,技术领域," +
"责任领域,适用地区,备注,设计符合性确认,Pre-homo确认,验证符合性确认";
String titleTwo = "交付物类型,交付物模板,发起人,责任人,交付物类型,交付物模板,发起人,责任人,交付物类型,交付物模板,发起人,责任人";
List<String> list = Arrays.asList(titleOne.split(","));
int index = list.indexOf("备注") + 1;
//创建临时文件夹
File nowFile = new File(filePath);
if (nowFile.exists()) {
nowFile.delete();
}
nowFile.mkdirs();
HSSFSheet sheet = workbook.createSheet("虚拟清单导入模板");
sheet.setDefaultColumnWidth(16);//列宽
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setWrapText(true);//自动换行
cellStyle.setAlignment(HorizontalAlignment.CENTER);//垂直居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//水平居中
int count = 1;
int startLine = 0;
int endLine = 0;
int line = 3;
for (int i = 0; i < index; i++) {
//合并单元格
CellRangeAddress region1 =
new CellRangeAddress(0, 1, i, i);
sheet.addMergedRegion(region1);
}
for (int i = index; i < 19; i++) {
if(count > 1){
startLine = startLine + line + 1;
endLine = startLine + line;
}else{
startLine = i;
endLine = i + line;
}
//合并单元格
CellRangeAddress region1 =
new CellRangeAddress(0, 0, startLine, endLine); //参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列
sheet.addMergedRegion(region1);
count ++;
}
for (int i = 0; i < 2; i++) {
//表头
Row row = sheet.createRow(i);//开始创建标题行
String[] headerArr = titleOne.split(",");
int lineTemp = index;
if (i == 0) {
for (int m = 0; m < headerArr.length; m++) {
if(m < index){
row.createCell(m).setCellValue(headerArr[m]);
}else{
row.createCell(lineTemp).setCellValue(headerArr[m]);
Cell cell = row.getCell(lineTemp);
cell.setCellStyle(cellStyle);
lineTemp = lineTemp + 4;
}
}
}else{
//titleTwo
String[] headerArrTwo = titleTwo.split(",");
for (int j = 0; j < headerArrTwo.length; j++) {
row.createCell(16+j).setCellValue(headerArrTwo[j]);
}
}
}
response.setHeader("Content-Disposition",
"attachment; filename=\"" + fileOriName + ".xls");
response.setContentType("application/force-download");
response.flushBuffer();
os = response.getOutputStream();
workbook.write(os);
} catch (Exception e) {
e.printStackTrace();
throw new JeroBootException("下载文件失败,请重试");
} finally {
IOUtils.closeQuietly(os);
}
}
@@ -277,10 +380,12 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
StringBuilder sb = new StringBuilder();
for (String technologyTerritory : technologyTerritoryList) {
List<SysCategory> collect = categoryList.stream().filter(e -> technologyTerritory.equals(e.getId())).collect(Collectors.toList());
if (CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())) {
sb.append(collect.get(0).getName() + ",");
} else {
sb.append(collect.get(0).getEnName());
if(collect.size() != 0){
if (CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())) {
sb.append(collect.get(0).getName() + ",");
} else {
sb.append(collect.get(0).getEnName());
}
}
}
String technologyTerritoryName = "";