integrated_traffic/src/main/java/com/zcloud/util/archivesUtil/TrainingAbsHandler.java

264 lines
13 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.zcloud.util.archivesUtil;
import com.zcloud.entity.PageData;
import com.zcloud.mapper.dsno3.eduStudy.ClassMapper;
import com.zcloud.mapper.dsno3.eduStudy.ClassPostMapper;
import com.zcloud.service.eduArchives.ArchivesReviewRecordService;
import com.zcloud.service.eduArchives.ArchivesService;
import com.zcloud.util.*;
import fr.opensagres.xdocreport.document.IXDocReport;
import fr.opensagres.xdocreport.document.images.ByteArrayImageProvider;
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 fr.opensagres.xdocreport.template.formatter.NullImageBehaviour;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 说明:安全培训教材会审表
* 作者wangxuan
* 官网www.zcloudchina.com
*
* @author wangxuan
*/
@Component
public class TrainingAbsHandler extends AbsHandlerBatchExport {
@Resource
private ArchivesReviewRecordService archivesReviewRecordService;
@Autowired
private ClassMapper classMapper;
@Autowired
private ArchivesService archivesService;
@Autowired
private ClassPostMapper classPostMapper;
/**
* @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();
PageData clazz = classMapper.findById(pd);
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd"); //日期格式
SimpleDateFormat dayformat = new SimpleDateFormat("yyyy.MM.dd"); //日期格式
SimpleDateFormat formatter = new SimpleDateFormat("MM.dd");
List<PageData> byClass = classPostMapper.findByClass(pd);
Set<String> postNameSet = new HashSet<>();
for (PageData aClass : byClass) {
postNameSet.add(aClass.getString("POST_NAME"));
}
List<PageData> studentList = archivesService.getStudents(pd);
List<String> ArrayDATA_IDS = new ArrayList<String>();
pd.put("ArrayDATA_IDS", ArrayDATA_IDS);
List<PageData> coursewaresList = archivesService.getCoursewares(pd);
double CLASSHOUR = 0;
Set<String> TEACHER_NAME = new HashSet<>();
for (PageData pageData : coursewaresList) {
CLASSHOUR += (Double) pageData.get("CLASSHOUR");
TEACHER_NAME.add(pageData.get("TEACHERNAME").toString());
}
StringBuilder COURSEWARENAME = new StringBuilder();
List<PageData> curriculums = archivesService.getCurriculums(pd);
for (PageData curriculum : curriculums) {
COURSEWARENAME.append(curriculum.getString("CURRICULUMNAME")).append(",");
}
List<PageData> sdrs = studentList.stream().filter(item ->
"2".equals(item.getString("STUDYSTATE")) ||
"3".equals(item.getString("STUDYSTATE")) ||
"5".equals(item.getString("STUDYSTATE")) ||
"6".equals(item.getString("STUDYSTATE"))
).collect(Collectors.toList());
List<PageData> curList = archivesService.getCurriculums(pd);
for (PageData c : curList) {
PageData cha = new PageData();
PageData itemInfo = new PageData();
cha.put("PARENT_ID", "0");
itemInfo.put("var0", c.get("CURRICULUMNAME"));
itemInfo.put("var1", c.get("CATALOGUELEVEL"));
cha.put("CURRICULUM_ID", c.get("CURRICULUM_ID"));
cha.put("CLASS_ID", pd.get("CLASS_ID"));
List<PageData> chapterList = archivesService.getCoursewares(cha, false);
// 二级目录结构时,查询子级目录
// 二级目录结构时,查询子级目录
if (c != null && c.get("CATALOGUELEVEL") != null
&& Tools.notEmpty(c.get("CATALOGUELEVEL").toString())
&& "2".equals(c.get("CATALOGUELEVEL").toString())
&& chapterList != null && chapterList.size() > 0) {
for (int i = 0; i < chapterList.size(); i++) {
chapterList.get(i).put("NUM", NumToChinese.arabicNumToChineseNum((i + 1)));
PageData firstChapter = new PageData();
firstChapter.put("CURRICULUM_ID", c.get("CURRICULUM_ID"));
firstChapter.put("PARENT_ID", chapterList.get(i).get("CHAPTER_ID"));
firstChapter.put("CLASS_ID", pd.get("CLASS_ID"));
List<PageData> nodesList = archivesService.getCoursewares(firstChapter);
for (PageData chapter2 : nodesList) {
String COURSEWAREINTRODUCE = chapter2.getString("COURSEWAREINTRODUCE").replaceAll("\\\n", "");
chapter2.put("COURSEWAREINTRODUCE", COURSEWAREINTRODUCE);
if (org.apache.commons.lang.StringUtils.isEmpty(String.valueOf(chapter2.get("INDUSTRY_ALL_NAME")))) {
chapter2.put("INDUSTRY_ALL_NAME", " ");
} else {
chapter2.put("INDUSTRY_ALL_NAME", " ");
}
String TEACHERNAME = (String) chapter2.get("TEACHERNAME");
if (org.apache.commons.lang.StringUtils.isEmpty(TEACHERNAME)) {
chapter2.put("TEACHERNAME", " ");
}
String TRAININGTYPE_NAME = (String) chapter2.get("TRAININGTYPE_NAME");
if (org.apache.commons.lang.StringUtils.isEmpty(TRAININGTYPE_NAME)) {
chapter2.put("TRAININGTYPE_NAME", " ");
}
String POSTTYPE_NAME = (String) chapter2.get("POSTTYPE_NAME");
if (org.apache.commons.lang.StringUtils.isEmpty(POSTTYPE_NAME)) {
chapter2.put("POSTTYPE_NAME", " ");
}
chapterList.get(i).put("nodes", nodesList);
}
}
} else {
for (int i = 0; i < chapterList.size(); i++) {
chapterList.get(i).put("NUM", NumToChinese.arabicNumToChineseNum((i + 1)));
String industryAllName = (String) chapterList.get(i).get("INDUSTRY_ALL_NAME");
if (org.apache.commons.lang.StringUtils.isEmpty(industryAllName)) {
chapterList.get(i).put("INDUSTRY_ALL_NAME", " ");
}
String TEACHERNAME = (String) chapterList.get(i).get("TEACHERNAME");
if (org.apache.commons.lang.StringUtils.isEmpty(TEACHERNAME)) {
chapterList.get(i).put("TEACHERNAME", " ");
}
String TRAININGTYPE_NAME = (String) chapterList.get(i).get("TRAININGTYPE_NAME");
if (org.apache.commons.lang.StringUtils.isEmpty(TRAININGTYPE_NAME)) {
chapterList.get(i).put("TRAININGTYPE_NAME", " ");
}
String POSTTYPE_NAME = (String) chapterList.get(i).get("POSTTYPE_NAME");
if (org.apache.commons.lang.StringUtils.isEmpty(POSTTYPE_NAME)) {
chapterList.get(i).put("POSTTYPE_NAME", " ");
}
}
}
c.put("chapterList", chapterList);
}
File file = new File(projectPath + Const.FILEPATHWORDTEMPLATE + "traffic-records2.docx");
InputStream mbwj = new FileInputStream(file);
//注册xdocreport实例并加载FreeMarker模板引擎
IXDocReport report = XDocReportRegistry.getRegistry().loadReport(mbwj, TemplateEngineKind.Freemarker);
//创建xdocreport上下文对象
IContext context = report.createContext();
context.put("curList", curList);
context.put("value1", dayformat.format(dateformat.parse(clazz.getString("START_TIME"))) + "-" + formatter.format(dateformat.parse(clazz.getString("END_TIME"))));
context.put("value2", clazz.get("CORP_NAME"));
context.put("value3", String.join(",", postNameSet));
context.put("value4", String.join(",", TEACHER_NAME));
context.put("value5", CLASSHOUR);
context.put("value6", Tools.notEmpty(clazz.getString("PLAN_DEPARTMENT"))?clazz.getString("PLAN_DEPARTMENT"):"");
context.put("value7", studentList.size());
context.put("value8", sdrs.size());
context.put("value9", sdrs.size());
context.put("value10", COURSEWARENAME.toString().substring(0, COURSEWARENAME.length() - 1));
PageData trainingData = archivesReviewRecordService.getTraining(pd);
if (trainingData == null) {
trainingData = new PageData();
}
if (trainingData.get("IS_SELECT1") != null && "是".equals(trainingData.getString("IS_SELECT1"))) {
context.put("value12", "☑是 □否");
} else if (trainingData.get("IS_SELECT1") != null && "否".equals(trainingData.getString("IS_SELECT1"))) {
context.put("value12", "□是 ☑否");
} else {
context.put("value12", "□是 □否");
}
if (trainingData.get("IS_SELECT2") != null && "是".equals(trainingData.getString("IS_SELECT2"))) {
context.put("value13", "☑是 □否");
} else if (trainingData.get("IS_SELECT2") != null && "否".equals(trainingData.getString("IS_SELECT2"))) {
context.put("value13", "□是 ☑否");
} else {
context.put("value13", "□是 □否");
}
if (trainingData.get("IS_SELECT3") != null && "是".equals(trainingData.getString("IS_SELECT3"))) {
context.put("value14", "☑是 □否");
} else if (trainingData.get("IS_SELECT3") != null && "否".equals(trainingData.getString("IS_SELECT3"))) {
context.put("value14", "□是 ☑否");
} else {
context.put("value14", "□是 □否");
}
if (trainingData.get("IS_SELECT4") != null && "是".equals(trainingData.getString("IS_SELECT4"))) {
context.put("value15", "☑是 □否");
} else if (trainingData.get("IS_SELECT4") != null && "否".equals(trainingData.getString("IS_SELECT4"))) {
context.put("value15", "□是 ☑否");
} else {
context.put("value15", "□是 □否");
}
if (trainingData.get("IS_SELECT5") != null && "是".equals(trainingData.getString("IS_SELECT5"))) {
context.put("value16", "☑是 □否");
} else if (trainingData.get("IS_SELECT5") != null && "否".equals(trainingData.getString("IS_SELECT5"))) {
context.put("value16", "□是 ☑否");
} else {
context.put("value16", "□是 □否");
}
context.put("value18", trainingData.get("MEASURE") != null ? trainingData.get("MEASURE") : "");
String path = Const.HTTPFILEURL + clazz.get("SAFETYDEPTOR_URL");
URL url = new URL(path);
ByteArrayImageProvider byteArrayImageProvider = new ByteArrayImageProvider(url.openStream());//照片 读取网络路径
context.put("pic", byteArrayImageProvider);
context.put("pic2", byteArrayImageProvider);
FieldsMetadata fm = report.createFieldsMetadata();
fm.addFieldAsImage("pic", "pic", NullImageBehaviour.RemoveImageTemplate);
fm.addFieldAsImage("pic2", "pic2", NullImageBehaviour.RemoveImageTemplate);
FileOutputStream out = new FileOutputStream(projectPath + Const.TEMPZIPFILES + "教育培训记录-" + now + ".docx");
report.process(context, out);
out.close();
WordToPdfUtil.docToPdf(projectPath + Const.TEMPZIPFILES + "教育培训记录-" + now + ".docx",
projectPath + Const.TEMPZIPFILES + "教育培训记录-" + now + ".pdf");
//删除本地word pdf
File word = new File(projectPath + Const.TEMPZIPFILES + "教育培训记录-" + now + ".docx");
word.delete();
File pdf = new File(projectPath + Const.TEMPZIPFILES + "教育培训记录-" + now + ".pdf");
return pdf;
}
@Override
public void afterPropertiesSet() throws Exception {
BatchExportFactory.register("archives110", this);
}
}