/**
* 上传word文档到OSS
*
* @param dataStatisticsTask
* @param energyManagementStatisticsVo
* @param fileName
* @return
*/
public String exportWord(DataStatisticsTask dataStatisticsTask, EnergyManagementStatisticsVo energyManagementStatisticsVo, String fileName) {
String temDir = this.getClass().getResource("/").getPath() + "/bin/ENERGY.docx";
Map<String, Object> params = Maps.newHashMap();
params.put(EnergyManagementStatisticsVo.DATA_DATE, DatetimeUtil.formatDate(new Date(), DatetimeUtil.TIME_FORMAT_Y_M_D));
params.put(EnergyManagementStatisticsVo.PLATE_NO, dataStatisticsTask.getPlateNo());
params.put(EnergyManagementStatisticsVo.BEGIN_DATE, DatetimeUtil.formatDate(dataStatisticsTask.getBeginDate(), DatetimeUtil.DATE_FORMAT_YMD_LONG));
params.put(EnergyManagementStatisticsVo.END_DATA, DatetimeUtil.formatDate(dataStatisticsTask.getEndDate(), DatetimeUtil.DATE_FORMAT_YMD_LONG));
params.put(EnergyManagementStatisticsVo.WHOLE_VEHICLE, energyManagementStatisticsVo.getWholeVehicleVo());
params.put(EnergyManagementStatisticsVo.WHOLE_MOTOR_POWER, generatePicture(energyManagementStatisticsVo.getWholeVehicleVo().getMotorPowerDistributionList(), EnergyManagementStatisticsVo.WHOLE_MOTOR_POWER_IMAGE, "功率/W", "次数/%", "占比"));
params.put(EnergyManagementStatisticsVo.WHOLE_ACCESSORY_POWER, generatePicture(energyManagementStatisticsVo.getWholeVehicleVo().getAccessoryPowerDistributionList(), EnergyManagementStatisticsVo.WHOLE_ACCESSORY_POWER_IMAGE, "功率/W", "次数/%", "占比"));
params.put(EnergyManagementStatisticsVo.FUEL_CELL_SYSTEM, energyManagementStatisticsVo.getFuelCellSystemVo());
params.put(EnergyManagementStatisticsVo.FUEL_CELL_OFF_TILE, generatePicture(energyManagementStatisticsVo.getFuelCellSystemVo().getOffTimeList(), EnergyManagementStatisticsVo.FUEL_CELL_OFF_TILE_IMAGE, "时间/min", "次数/%", "占比"));
params.put(EnergyManagementStatisticsVo.FUEL_CELL_OPERATING_POINT, generatePicture(energyManagementStatisticsVo.getFuelCellSystemVo().getOperatingPointList(), EnergyManagementStatisticsVo.FUEL_CELL_OPERATING_POINT_IMAGE, "电流/A", "次数/%", "占比"));
params.put(EnergyManagementStatisticsVo.FUEL_CELL_AVERAGE_GROSS_POWER, generatePicture(energyManagementStatisticsVo.getFuelCellSystemVo().getGrossPowerDistributionList(), EnergyManagementStatisticsVo.FUEL_CELL_AVERAGE_GROSS_POWER_IMAGE, "功率/W", "次数/%", "占比"));
params.put(EnergyManagementStatisticsVo.BATTERY, energyManagementStatisticsVo.getBatteryVo());
params.put(EnergyManagementStatisticsVo.BATTERY_RUN_POINT, generatePicture(energyManagementStatisticsVo.getBatteryVo().getRunPointList(), EnergyManagementStatisticsVo.BATTERY_RUN_POINT_IMAGE, "功率/W", "次数/%", "占比"));
params.put(EnergyManagementStatisticsVo.BATTERY_SOC, generatePicture(energyManagementStatisticsVo.getBatteryVo().getSocList(), EnergyManagementStatisticsVo.BATTERY_SOC_IMAGE, "占比/%", "次数/%", "占比"));
params.put(EnergyManagementStatisticsVo.STACK_LIFE_PREDICTION, energyManagementStatisticsVo.getStackLifePredictionVo());
params.put(EnergyManagementStatisticsVo.BATTERY_LIFE_PREDICTION, energyManagementStatisticsVo.getBatteryLifePredictionVo());
params.put(EnergyManagementStatisticsVo.PARTS_LIFE_PREDICTION, energyManagementStatisticsVo.getPartsLifePredictionVo());
try {
WordUtil.exportWord(temDir, internalReportFilePath, fileName, params);
} catch (Exception e) {
LOGGER.warn("Failed to generate file", e);
return null;
}
String iReportDirName = "http://" + "rfdmas" + "." + "oss-cn-shenzhen.aliyuncs.com" + "/" + "rfdmas-master/fat-report-files/internal/";
return iReportDirName + fileName;
}
generatePicture方法生成图片,参照https://mp.csdn.net/editor/html/115749962
package com.utils;
import cn.afterturn.easypoi.word.WordExportUtil;
import com.alibaba.dubbo.common.utils.Assert;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Map;
/**
* @author leo.xiong
* @version 2020/6/6
* @className WordUtil
* @Description
*/
public class WordUtil {
/**
* 导出word
* <p>第一步生成替换后的word文件,只支持docx</p>
* <p>第二步下载生成的文件</p>
* <p>第三步删除生成的临时文件</p>
* 模版变量中变量格式:{
{foo}}
* @param templatePath word模板地址
* @param temDir 生成临时文件存放地址
* @param params 替换的参数
*/
public static void exportWord(String templatePath, String temDir, String fileName, Map<String, Object> params) {
Assert.notNull(templatePath, "模板路径不能为空");
Assert.notNull(temDir, "临时文件路径不能为空");
// Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式");
if (!temDir.endsWith("/")) {
temDir = temDir + File.separator;
}
File dir = new File(temDir);
if (!dir.exists()) {
dir.mkdirs();
}
try {
XWPFDocument doc = WordExportUtil.exportWord07(templatePath, params);
String tmpPath = temDir+ fileName;
FileOutputStream fos = new FileOutputStream(tmpPath);
doc.write(fos);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
模板样板地址:https://download.csdn.net/download/xionglangs/16686619