|
@@ -20,12 +20,15 @@ import com.qmth.distributed.print.business.service.TRExamStudentService;
|
|
|
import com.qmth.teachcloud.common.annotation.OperationLogDetail;
|
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
|
+import com.qmth.teachcloud.common.enums.ImportTemplateEnum;
|
|
|
import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
|
|
|
+import com.qmth.teachcloud.common.util.FileUtil;
|
|
|
import com.qmth.teachcloud.common.util.ResultUtil;
|
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
import com.qmth.teachcloud.mark.entity.MarkPaper;
|
|
|
import com.qmth.teachcloud.mark.service.MarkPaperService;
|
|
|
import io.swagger.annotations.*;
|
|
|
+import org.apache.commons.io.FileUtils;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.validation.BindingResult;
|
|
@@ -35,7 +38,10 @@ import javax.annotation.Resource;
|
|
|
import javax.validation.Valid;
|
|
|
import javax.validation.constraints.Max;
|
|
|
import javax.validation.constraints.Min;
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileInputStream;
|
|
|
import java.io.IOException;
|
|
|
+import java.io.InputStream;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
@@ -142,48 +148,62 @@ public class TRBasicInfoController {
|
|
|
public void reportExport(@ApiParam(value = "考试id", required = true) @RequestParam Long examId,
|
|
|
@ApiParam(value = "科目编码", required = true) @RequestParam String courseCode,
|
|
|
@ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) throws IOException {
|
|
|
- TRBasicInfo trBasicInfo = trBasicInfoService.getOne(new QueryWrapper<TRBasicInfo>().lambda().eq(TRBasicInfo::getExamId, examId).eq(TRBasicInfo::getCourseCode, courseCode).eq(TRBasicInfo::getPaperNumber, paperNumber));
|
|
|
- Objects.requireNonNull(trBasicInfo, "没有报告信息");
|
|
|
- Objects.requireNonNull(trBasicInfo.getCourseEvaluationResult(), "没有课程目标信息");
|
|
|
- Objects.requireNonNull(trBasicInfo.getCourseEvaluationResultDetail(), "没有课程考生信息");
|
|
|
-
|
|
|
- //评价样本的基本信息
|
|
|
- String period = Objects.nonNull(trBasicInfo.getPeriod()) ? trBasicInfo.getPeriod() : null;
|
|
|
- String credit = Objects.nonNull(trBasicInfo.getCredit()) ? trBasicInfo.getCredit() : null;
|
|
|
- period = Objects.nonNull(credit) ? period + "/" + credit : period;
|
|
|
-
|
|
|
- ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = JSONObject.parseObject(trBasicInfo.getCourseEvaluationResult(), ReportCourseEvaluationResultDto.class);
|
|
|
- CourseBasicBean courseBasicBean = new CourseBasicBean(trBasicInfo.getCourseName(),
|
|
|
- trBasicInfo.getCourseCode(), null, trBasicInfo.getCourseType(),
|
|
|
- period, null, null, trBasicInfo.getDirector(),
|
|
|
- DateUtil.format(new Date(trBasicInfo.getCreateTime()), SystemConstant.DEFAULT_DATE_PATTERN),
|
|
|
- "测试:我们的目标是没有目标", reportCourseEvaluationResultDto.getTargetList().size());
|
|
|
-
|
|
|
- CourseReportBean courseReportBean = new CourseReportBean(trBasicInfo.getOpenTime() + "《" + trBasicInfo.getCourseName() + "》", courseBasicBean);
|
|
|
-
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(trBasicInfo.getCourseEvaluationResultDetail());
|
|
|
- List<CourseTargetWordDto> courseTargetWordDtoList = JSONArray.parseArray(jsonObject.get("targetWordMap").toString(), CourseTargetWordDto.class);
|
|
|
- List<CourseTargetWebDto> courseTargetWebDtoList = JSONArray.parseArray(jsonObject.get("targetWebMap").toString(), CourseTargetWebDto.class);
|
|
|
-
|
|
|
- //table1-课程目标目标与毕业要求指标点的对应关系
|
|
|
- List<String> header2_1List = new ArrayList<>(Arrays.asList("课程目标", "支撑毕业要求")), header2_2List = new ArrayList<>();
|
|
|
- header2_2List.addAll(header2_1List);
|
|
|
- header2_1List.add("考核/评价环节及目标分值");
|
|
|
- courseReportBean.setCourseTargetTable1(trBasicInfoService.buildWordTable1(courseTargetWordDtoList, header2_1List, header2_2List));
|
|
|
-
|
|
|
- //table2-课程目标达成评价依据
|
|
|
- courseReportBean.setCourseTargetTable2(trBasicInfoService.buildWordTable2(courseTargetWordDtoList, courseTargetWebDtoList, header2_1List, header2_2List));
|
|
|
-
|
|
|
- //table3-课程课后作业考核/评价内容及目标分值
|
|
|
- courseReportBean.setCourseTargetTable3(trBasicInfoService.buildWordTable3(courseTargetWordDtoList));
|
|
|
-
|
|
|
- //table4-课程期末考试考核/评价内容及目标分值
|
|
|
- courseReportBean.setCourseTargetTable4(trBasicInfoService.buildWordTable4(courseTargetWordDtoList));
|
|
|
-
|
|
|
- //examstudent-课程目标达成评价依据-考生
|
|
|
- courseReportBean.setExamStudentTable1(trBasicInfoService.buildWordTable5(trBasicInfo, courseReportBean));
|
|
|
-
|
|
|
- XWPFTemplate template = XWPFTemplate.compile("/Users/king/git/teachcloud-server/distributed-print/src/main/resources/static/course_degree_report.docx").render(courseReportBean);
|
|
|
- template.writeToFile("/Users/king/Downloads/demo_course_degree_report.docx");
|
|
|
+ File txtFileTemp = null;
|
|
|
+ try {
|
|
|
+ TRBasicInfo trBasicInfo = trBasicInfoService.getOne(new QueryWrapper<TRBasicInfo>().lambda().eq(TRBasicInfo::getExamId, examId).eq(TRBasicInfo::getCourseCode, courseCode).eq(TRBasicInfo::getPaperNumber, paperNumber));
|
|
|
+ Objects.requireNonNull(trBasicInfo, "没有报告信息");
|
|
|
+ Objects.requireNonNull(trBasicInfo.getCourseEvaluationResult(), "没有课程目标信息");
|
|
|
+ Objects.requireNonNull(trBasicInfo.getCourseEvaluationResultDetail(), "没有课程考生信息");
|
|
|
+
|
|
|
+ //评价样本的基本信息
|
|
|
+ String period = Objects.nonNull(trBasicInfo.getPeriod()) ? trBasicInfo.getPeriod() : null;
|
|
|
+ String credit = Objects.nonNull(trBasicInfo.getCredit()) ? trBasicInfo.getCredit() : null;
|
|
|
+ period = Objects.nonNull(credit) ? period + "/" + credit : period;
|
|
|
+
|
|
|
+ ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = JSONObject.parseObject(trBasicInfo.getCourseEvaluationResult(), ReportCourseEvaluationResultDto.class);
|
|
|
+ CourseBasicBean courseBasicBean = new CourseBasicBean(trBasicInfo.getCourseName(),
|
|
|
+ trBasicInfo.getCourseCode(), null, trBasicInfo.getCourseType(),
|
|
|
+ period, null, null, trBasicInfo.getDirector(),
|
|
|
+ DateUtil.format(new Date(trBasicInfo.getCreateTime()), SystemConstant.DEFAULT_DATE_PATTERN),
|
|
|
+ "测试:我们的目标是没有目标", reportCourseEvaluationResultDto.getTargetList().size());
|
|
|
+
|
|
|
+ CourseReportBean courseReportBean = new CourseReportBean(trBasicInfo.getOpenTime() + "《" + trBasicInfo.getCourseName() + "》", courseBasicBean);
|
|
|
+
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(trBasicInfo.getCourseEvaluationResultDetail());
|
|
|
+ List<CourseTargetWordDto> courseTargetWordDtoList = JSONArray.parseArray(jsonObject.get("targetWordMap").toString(), CourseTargetWordDto.class);
|
|
|
+ List<CourseTargetWebDto> courseTargetWebDtoList = JSONArray.parseArray(jsonObject.get("targetWebMap").toString(), CourseTargetWebDto.class);
|
|
|
+
|
|
|
+ //table1-课程目标目标与毕业要求指标点的对应关系
|
|
|
+ List<String> header2_1List = new ArrayList<>(Arrays.asList("课程目标", "支撑毕业要求")), header2_2List = new ArrayList<>();
|
|
|
+ header2_2List.addAll(header2_1List);
|
|
|
+ header2_1List.add("考核/评价环节及目标分值");
|
|
|
+ courseReportBean.setCourseTargetTable1(trBasicInfoService.buildWordTable1(courseTargetWordDtoList, header2_1List, header2_2List));
|
|
|
+
|
|
|
+ //table2-课程目标达成评价依据
|
|
|
+ courseReportBean.setCourseTargetTable2(trBasicInfoService.buildWordTable2(courseTargetWordDtoList, courseTargetWebDtoList, header2_1List, header2_2List));
|
|
|
+
|
|
|
+ //table3-课程课后作业考核/评价内容及目标分值
|
|
|
+ courseReportBean.setCourseTargetTable3(trBasicInfoService.buildWordTable3(courseTargetWordDtoList));
|
|
|
+
|
|
|
+ //table4-课程期末考试考核/评价内容及目标分值
|
|
|
+ courseReportBean.setCourseTargetTable4(trBasicInfoService.buildWordTable4(courseTargetWordDtoList));
|
|
|
+
|
|
|
+ //examstudent-课程目标达成评价依据-考生
|
|
|
+ courseReportBean.setExamStudentTable1(trBasicInfoService.buildWordTable5(trBasicInfo, courseReportBean));
|
|
|
+
|
|
|
+ InputStream inputStream = FileUtil.getStream("static/" + ImportTemplateEnum.STATIC_COURSE_DEGREE_REPORT.getTemplateName());
|
|
|
+ txtFileTemp = SystemConstant.getFileTempVar(SystemConstant.WORD_PREFIX);
|
|
|
+ FileUtils.copyInputStreamToFile(inputStream, txtFileTemp);
|
|
|
+ XWPFTemplate template = XWPFTemplate.compile(txtFileTemp.getAbsolutePath()).render(courseReportBean);
|
|
|
+ template.writeToFile(txtFileTemp.getAbsolutePath());
|
|
|
+ // 导出
|
|
|
+ FileUtil.outputFile(ServletUtil.getResponse(), new FileInputStream(txtFileTemp), ImportTemplateEnum.STATIC_COURSE_DEGREE_REPORT.getFileName() + "_" + courseReportBean.getTitle1() + SystemConstant.WORD_PREFIX);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ if (Objects.nonNull(txtFileTemp)) {
|
|
|
+ txtFileTemp.delete();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|