| | |
| | | package testElectronJ; |
| | | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | 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 java.io.FileInputStream; |
| | | 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") |
| | |
| | | return new Response().set(1,fboDataInf,filePath); |
| | | } |
| | | |
| | | @PostMapping("/readFboFileStream") |
| | | public Response readFboFileStream(@RequestParam FileInputStream fis) { |
| | | @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(); |
| | | //String filePath1 = java.net.URLDecoder.decode(filePath,"utf-8"); |
| | | fboDataInf.readFboFileStream(fis); |
| | | 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(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | @PostMapping("/readFboFileStream") |
| | | public Response readFboFileStream(@RequestParam("mFile") MultipartFile mFile, HttpServletRequest request) throws IOException { |
| | | if (!mFile.isEmpty()){ |
| | | File file = new File(mFile.getOriginalFilename()); |
| | | System.out.println(file.getPath()); |
| | | FboDataInf fboDataInf = new FboDataInf(); |
| | | fboDataInf.readFboFile(file); |
| | | return new Response().set(1,fboDataInf); |
| | | }else { |
| | | return new Response().set(0,"文件为空"); |
| | | } |
| | | } |
| | | |
| | | } |