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);
|
|
|
|
|
}
|
|
|
|
|
}
|