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

264 lines
13 KiB
Java
Raw Normal View History

2024-05-15 09:01:56 +08:00
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", "☑是 □否");
2024-05-20 17:59:01 +08:00
} else if (trainingData.get("IS_SELECT2") != null && "否".equals(trainingData.getString("IS_SELECT2"))) {
2024-05-15 09:01:56 +08:00
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);
}
}