package com.zcloud.util.archivesUtil; import com.zcloud.entity.PageData; import com.zcloud.entity.TrainingPlanDao; import com.zcloud.mapper.dsno3.eduArchives.ArchivesMapper; import com.zcloud.mapper.dsno3.eduStudy.ClassMapper; import com.zcloud.service.eduArchives.ArchivesService; import com.zcloud.util.Const; import com.zcloud.util.DateUtil; import com.zcloud.util.WordToPdfUtil; import fr.opensagres.xdocreport.document.IXDocReport; import fr.opensagres.xdocreport.document.registry.XDocReportRegistry; import fr.opensagres.xdocreport.template.IContext; import fr.opensagres.xdocreport.template.TemplateEngineKind; import fr.opensagres.xdocreport.template.formatter.FieldsMetadata; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.List; /** * 说明:安全培训教材会审表 * 作者:wangxuan * 官网:www.zcloudchina.com * * @author wangxuan */ @Component public class AchievementAbsHandler extends AbsHandlerBatchExport { @Autowired private ClassMapper classMapper; @Autowired private ArchivesMapper archivesMapper; /** * @Description: 返回pdf路径 * @Author: dearLin * @Date: 2023/3/20/020 10:41 * @Param: [com.zcloud.entity.PageData] [pageData] * @Return: java.lang.String */ @Override public File batchExport(PageData pd, String nowZip) throws Exception { String projectPath = pd.getString("projectPath"); String now = DateUtil.getSdfTimesSSS(); ArrayList files = new ArrayList<>(); //最外层 PageData clazz = classMapper.findById(pd); List studentList = archivesMapper.getStudents(pd); File file = new File(projectPath + Const.FILEPATHWORDTEMPLATE + "traffic-records4.docx"); InputStream mbwj = new FileInputStream(file); //注册xdocreport实例并加载FreeMarker模板引擎 IXDocReport report = XDocReportRegistry.getRegistry().loadReport(mbwj, TemplateEngineKind.Freemarker); //创建xdocreport上下文对象 IContext context = report.createContext(); List list1 = new ArrayList<>(); //一共多少行 for (int i = 0; i < studentList.size(); i++) { if (i % 3 == 0) { TrainingPlanDao trainingPlanDao = new TrainingPlanDao(); //每行的内容实体类 trainingPlanDao.setValue1(String.valueOf(i + 1)); //序号 trainingPlanDao.setValue2(studentList.get(i).getString("NAME")); //序号 if ("1".equals(clazz.get("EXAMINATION").toString())) { if (Integer.parseInt(String.valueOf(studentList.get(i).get("examnum"))) > 0) { trainingPlanDao.setValue3(Double.parseDouble(studentList.get(i).getString("STAGEEXAMSCORE")) > -1 ? studentList.get(i).getString("STAGEEXAMSCORE") : "0分"); } else { trainingPlanDao.setValue3(Double.parseDouble(studentList.get(i).getString("STAGEEXAMSCORE")) > -1 ? studentList.get(i).getString("STAGEEXAMSCORE") : "未参加"); } } else { trainingPlanDao.setValue3("不考试"); } if ((i + 1) < studentList.size()) { trainingPlanDao.setValue4(String.valueOf(i + 2)); //序号 trainingPlanDao.setValue5(studentList.get(i + 1).getString("NAME")); //序号 if ("1".equals(clazz.get("EXAMINATION").toString())) { if (Integer.parseInt(String.valueOf(studentList.get(i + 1).get("examnum"))) > 0) { trainingPlanDao.setValue6(Double.parseDouble(studentList.get(i + 1).getString("STAGEEXAMSCORE")) > -1 ? studentList.get(i + 1).getString("STAGEEXAMSCORE") : "0分"); } else { trainingPlanDao.setValue6(Double.parseDouble(studentList.get(i + 1).getString("STAGEEXAMSCORE")) > -1 ? studentList.get(i + 1).getString("STAGEEXAMSCORE") : "未参加"); } } else { trainingPlanDao.setValue6("不考试"); } } else { trainingPlanDao.setValue4(""); trainingPlanDao.setValue5(""); trainingPlanDao.setValue6(""); } if ((i + 2) < studentList.size()) { trainingPlanDao.setValue7(String.valueOf(i + 3)); //序号 trainingPlanDao.setValue8(studentList.get(i + 2).getString("NAME")); //序号 if ("1".equals(clazz.get("EXAMINATION").toString())) { if (Integer.parseInt(String.valueOf(studentList.get(i + 2).get("examnum"))) > 0) { trainingPlanDao.setValue9(Double.parseDouble(studentList.get(i + 2).getString("STAGEEXAMSCORE")) > -1 ? studentList.get(i + 2).getString("STAGEEXAMSCORE") : "0分"); } else { trainingPlanDao.setValue9(Double.parseDouble(studentList.get(i + 2).getString("STAGEEXAMSCORE")) > -1 ? studentList.get(i + 2).getString("STAGEEXAMSCORE") : "未参加"); } } else { trainingPlanDao.setValue9("不考试"); } } else { trainingPlanDao.setValue7(""); trainingPlanDao.setValue8(""); trainingPlanDao.setValue9(""); } list1.add(trainingPlanDao); } } context.put("list1", list1); FieldsMetadata fm = report.createFieldsMetadata(); fm.load("list1", TrainingPlanDao.class, true); //输出到本地目录 FileOutputStream out = new FileOutputStream(new File(projectPath + Const.FILEPATHFILE + "安全知识培训成绩表-" + now + ".docx")); report.process(context, out); WordToPdfUtil.docToPdf(projectPath + Const.FILEPATHFILE + "安全知识培训成绩表-" + now + ".docx", projectPath + Const.FILEPATHFILE + "安全知识培训成绩表-" + now + ".pdf"); //删除本地word pdf File word = new File(projectPath + Const.FILEPATHFILE + "安全知识培训成绩表-" + now + ".docx"); word.delete(); return new File(projectPath + Const.FILEPATHFILE + "安全知识培训成绩表-" + now + ".pdf"); } @Override public void afterPropertiesSet() throws Exception { BatchExportFactory.register("archives113", this); } }