package testElectronJ;
|
|
import org.apache.poi.hssf.usermodel.*;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
import sun.misc.BASE64Decoder;
|
import testElectronJ.util.ServletUtils;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.File;
|
import java.io.IOException;
|
import java.io.OutputStream;
|
import java.io.UnsupportedEncodingException;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
@RestController
|
@RequestMapping("test")
|
public class TestController {
|
//@Autowired
|
//private FboDataInf fboDataInf;
|
|
@GetMapping("/hello")
|
public Response hello(){
|
return new Response().set(1,"hello");
|
}
|
|
@PostMapping("/readFboFile")
|
public Response readFboFile(@RequestParam String filePath) throws UnsupportedEncodingException {
|
FboDataInf fboDataInf = new FboDataInf();
|
//String filePath1 = java.net.URLDecoder.decode(filePath,"utf-8");
|
fboDataInf.readFboFile(filePath);
|
return new Response().set(1,fboDataInf,filePath);
|
}
|
|
@PostMapping("/export")
|
public void export(HttpServletRequest req, HttpServletResponse resp){
|
|
String lbottom_echart = req.getParameter("lbottom_echart"); //电池电流折线图
|
String rbottom_echart = req.getParameter("rbottom_echart"); //单体电压折现图
|
|
String rl_echart = req.getParameter("ltop_echart"); //单体容量柱状图
|
String sjbg_echart = req.getParameter("rtop_echart"); //数据表格
|
|
String zddy_echart = req.getParameter("ltop_echart"); //组端电压
|
String dtdy_echart = req.getParameter("rtop_echart"); //单体电压折线图
|
|
//int battGroupId =Integer.valueOf(req.getParameter("battGroupId")); //电池组编号
|
//int testRecordCount =Integer.valueOf(req.getParameter("testRecordCount")); //测试编号
|
|
String filePath = req.getParameter("filePath");
|
FboDataInf fboDataInf = new FboDataInf();
|
fboDataInf.readFboFile(filePath);
|
|
List<FboData> list = fboDataInf.fboData;
|
|
List<byte[]> bytes = new ArrayList<>();
|
|
try {
|
if (ServletUtils.isNotNull(lbottom_echart)) {
|
String[] url = lbottom_echart.split(",");
|
bytes.add(new BASE64Decoder().decodeBuffer(url[1]));
|
}if (ServletUtils.isNotNull(rbottom_echart)) {
|
String[] url = rbottom_echart.split(",");
|
bytes.add(new BASE64Decoder().decodeBuffer(url[1]));
|
}if (ServletUtils.isNotNull(rl_echart)) {
|
String[] url = rl_echart.split(",");
|
bytes.add(new BASE64Decoder().decodeBuffer(url[1]));
|
}if (ServletUtils.isNotNull(sjbg_echart)) {
|
String[] url = sjbg_echart.split(",");
|
bytes.add(new BASE64Decoder().decodeBuffer(url[1]));
|
}if (ServletUtils.isNotNull(zddy_echart)) {
|
String[] url = zddy_echart.split(",");
|
bytes.add(new BASE64Decoder().decodeBuffer(url[1]));
|
}if (ServletUtils.isNotNull(dtdy_echart)) {
|
String[] url = dtdy_echart.split(",");
|
bytes.add(new BASE64Decoder().decodeBuffer(url[1]));
|
}
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
//当前日期
|
String nowFormat = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
|
String excelName = "FGCD-"+nowFormat;
|
HSSFWorkbook wb = new HSSFWorkbook();
|
|
HSSFSheet sheet = wb.createSheet("Sheet1");
|
|
//图片元素
|
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
|
|
//字体格式-加粗
|
HSSFCellStyle cellStyle = wb.createCellStyle();
|
HSSFFont font = wb.createFont();
|
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
|
cellStyle.setFont(font);
|
|
//新建行
|
//抬头
|
int rowNum = 0;
|
HSSFRow rowTitle = sheet.createRow(rowNum);
|
HSSFCell cellTitle = rowTitle.createCell(0);
|
cellTitle.setCellValue("一体机充放电数据");
|
cellTitle.setCellStyle(cellStyle);
|
rowNum++;
|
//属性栏
|
HSSFRow row = sheet.createRow(rowNum);
|
|
row.createCell(0).setCellValue("测试时长"); //创建单元格
|
row.createCell(1).setCellValue("总电压");
|
row.createCell(2).setCellValue("测试容量");
|
row.createCell(3).setCellValue("剩余容量");
|
for(int i=0;i<5;i++){
|
row.createCell(4+i).setCellValue("#"+Integer.valueOf(i+1));
|
}
|
rowNum++;
|
//数据栏
|
if(5!=0){
|
for (int i = 0; i < list.size(); i++) {
|
sheet.createRow(rowNum); //创建行
|
for(int j=0;j<5;j++){
|
FboData fbo=list.get(i+j);
|
sheet.getRow(rowNum).createCell(0).setCellValue(fbo.m_TestTime.toString());
|
sheet.getRow(rowNum).createCell(1).setCellValue(fbo.SumVoltage);
|
sheet.getRow(rowNum).createCell(2).setCellValue(fbo.testCap);
|
sheet.getRow(rowNum).createCell(3).setCellValue(fbo.residualCap);
|
//sheet.getRow(rowNum).createCell(4+j).setCellValue(fbo.getMonVol());
|
}
|
i=i+5-1;
|
rowNum++;
|
}
|
}
|
rowNum+=2;
|
//插入图片
|
int picNum = 0;
|
String[] picName = new String[]{
|
"电池电流折线图","单体电压柱状图","单体容量柱状图","数据表格","组端电压","单体电压折线图"
|
};
|
//for(int i=0;i<picName.length;i++){
|
// sheet.createRow(rowNum-1);
|
// sheet.getRow(rowNum-1).createCell(0).setCellValue(picName[i]);
|
// //rowNum++;
|
// HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 512, 255,(short) 0, rowNum, (short) 10, rowNum+27);
|
// anchor.setAnchorType(3);
|
// patriarch.createPicture(anchor,wb.addPicture(bytes.get(picNum),HSSFWorkbook.PICTURE_TYPE_PNG)).resize(1);
|
// picNum ++;rowNum+=27;
|
//}
|
|
rowNum++;
|
|
try {
|
// 转码防止乱码
|
resp.addHeader("Content-Disposition", "attachment;filename="
|
+ new String(excelName.getBytes("UTF-8"), "ISO8859-1")
|
+ ".xls");
|
OutputStream out = resp.getOutputStream();
|
wb.write(out);
|
out.close();
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
|
|
}
|