|
@@ -9,6 +9,7 @@ import com.deepoove.poi.XWPFTemplate;
|
|
|
import com.qmth.boot.api.constant.ApiConstant;
|
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
|
import com.qmth.distributed.print.business.bean.dto.report.*;
|
|
|
+import com.qmth.distributed.print.business.bean.result.CourseWeightResult;
|
|
|
import com.qmth.distributed.print.business.bean.result.ScoreResult;
|
|
|
import com.qmth.distributed.print.business.bean.result.report.ReportResult;
|
|
|
import com.qmth.distributed.print.business.bean.result.report.word.CourseBasicBean;
|
|
@@ -48,6 +49,7 @@ import java.io.FileInputStream;
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -108,19 +110,26 @@ public class TRBasicInfoController {
|
|
|
if (Objects.isNull(trBasicInfo)) {
|
|
|
trBasicInfo = trBasicInfoService.getReportView(trBasicInfo, markPaper, sysUser.getId());
|
|
|
} else {
|
|
|
- ReportCourseBasicInfoDto reportCourseBasicInfoDto = new ReportCourseBasicInfoDto(trBasicInfo);
|
|
|
- ReportCourseEvaluationSpreadDto reportCourseEvaluationSpreadDto = Objects.nonNull(trBasicInfo.getCourseEvaluationSpread()) ? JSONObject.parseObject(trBasicInfo.getCourseEvaluationSpread(), ReportCourseEvaluationSpreadDto.class) : null;
|
|
|
+ CourseWeightResult courseWeightResult = trBasicInfoService.findCourseWeightResultRmi(examId, courseCode);
|
|
|
ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = Objects.nonNull(trBasicInfo.getCourseEvaluationResult()) ? JSONObject.parseObject(trBasicInfo.getCourseEvaluationResult(), ReportCourseEvaluationResultDto.class) : null;
|
|
|
- ReportCourseEvaluationResultDetailDto reportCourseEvaluationResultDetailDto = null;
|
|
|
- List<TRExamStudent> trExamStudentList = trExamStudentService.list(new QueryWrapper<TRExamStudent>().lambda().eq(TRExamStudent::getrBasicInfoId, trBasicInfo.getId()));
|
|
|
- if (!CollectionUtils.isEmpty(trExamStudentList)) {
|
|
|
- List<ReportExamStudentDto> examStudentList = new ArrayList<>(trExamStudentList.size());
|
|
|
- for (TRExamStudent trExamStudent : trExamStudentList) {
|
|
|
- examStudentList.add(new ReportExamStudentDto(trExamStudent));
|
|
|
+ if (Objects.nonNull(reportCourseEvaluationResultDto.getWeightSettingSign()) && reportCourseEvaluationResultDto.getWeightSettingSign().longValue() != courseWeightResult.getWeightSettingSign().longValue()) {
|
|
|
+ trExamStudentService.remove(examId, courseCode, paperNumber);
|
|
|
+ trBasicInfoService.remove(examId, courseCode, paperNumber);
|
|
|
+ trBasicInfo = trBasicInfoService.getReportView(trBasicInfo, markPaper, sysUser.getId());
|
|
|
+ } else {
|
|
|
+ ReportCourseBasicInfoDto reportCourseBasicInfoDto = new ReportCourseBasicInfoDto(trBasicInfo);
|
|
|
+ ReportCourseEvaluationSpreadDto reportCourseEvaluationSpreadDto = Objects.nonNull(trBasicInfo.getCourseEvaluationSpread()) ? JSONObject.parseObject(trBasicInfo.getCourseEvaluationSpread(), ReportCourseEvaluationSpreadDto.class) : null;
|
|
|
+ ReportCourseEvaluationResultDetailDto reportCourseEvaluationResultDetailDto = null;
|
|
|
+ List<TRExamStudent> trExamStudentList = trExamStudentService.list(new QueryWrapper<TRExamStudent>().lambda().eq(TRExamStudent::getrBasicInfoId, trBasicInfo.getId()));
|
|
|
+ if (!CollectionUtils.isEmpty(trExamStudentList)) {
|
|
|
+ List<ReportExamStudentDto> examStudentList = new ArrayList<>(trExamStudentList.size());
|
|
|
+ for (TRExamStudent trExamStudent : trExamStudentList) {
|
|
|
+ examStudentList.add(new ReportExamStudentDto(trExamStudent));
|
|
|
+ }
|
|
|
+ reportCourseEvaluationResultDetailDto = new ReportCourseEvaluationResultDetailDto(examStudentList);
|
|
|
}
|
|
|
- reportCourseEvaluationResultDetailDto = new ReportCourseEvaluationResultDetailDto(examStudentList);
|
|
|
+ trBasicInfo.setReportResult(new ReportResult(new ReportCommonDto(examId, courseCode, markPaper.getCourseName(), paperNumber), reportCourseBasicInfoDto, reportCourseEvaluationSpreadDto, reportCourseEvaluationResultDto, reportCourseEvaluationResultDetailDto));
|
|
|
}
|
|
|
- trBasicInfo.setReportResult(new ReportResult(new ReportCommonDto(examId, courseCode, markPaper.getCourseName(), paperNumber), reportCourseBasicInfoDto, reportCourseEvaluationSpreadDto, reportCourseEvaluationResultDto, reportCourseEvaluationResultDetailDto));
|
|
|
}
|
|
|
|
|
|
trBasicInfo.updateInfo(sysUser.getId());
|
|
@@ -161,6 +170,7 @@ public class TRBasicInfoController {
|
|
|
@ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) throws IOException {
|
|
|
File txtFileTemp = null, fileTemp = null;
|
|
|
try {
|
|
|
+ SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
|
BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
|
|
|
|
|
@@ -169,60 +179,76 @@ public class TRBasicInfoController {
|
|
|
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;
|
|
|
-
|
|
|
+ CourseWeightResult courseWeightResult = trBasicInfoService.findCourseWeightResultRmi(examId, courseCode);
|
|
|
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());
|
|
|
+ if (Objects.nonNull(reportCourseEvaluationResultDto.getWeightSettingSign()) && reportCourseEvaluationResultDto.getWeightSettingSign().longValue() != courseWeightResult.getWeightSettingSign().longValue()) {
|
|
|
+ MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
|
|
|
+ Objects.requireNonNull(markPaper, "未找到科目信息");
|
|
|
+ trExamStudentService.remove(examId, courseCode, paperNumber);
|
|
|
+ trBasicInfoService.remove(examId, courseCode, paperNumber);
|
|
|
+ trBasicInfoService.getReportView(trBasicInfo, markPaper, sysUser.getId());
|
|
|
+ this.reportExport(examId, courseCode, paperNumber);
|
|
|
+ } else {
|
|
|
+ //评价样本的基本信息
|
|
|
+ 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;
|
|
|
|
|
|
- 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);
|
|
|
|
|
|
- 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);
|
|
|
+ StringJoiner courseTarget = new StringJoiner("");
|
|
|
+ courseTargetWordDtoList.stream().peek(s -> {
|
|
|
+ courseTarget.add(" ").add(s.getTargetName()).add("——").add(s.getGraduationRequirementPoint()).add("\r\n");
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
|
|
- //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));
|
|
|
+ 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),
|
|
|
+ courseTarget.toString(), reportCourseEvaluationResultDto.getTargetList().size());
|
|
|
|
|
|
- //table2-课程目标达成评价依据
|
|
|
- courseReportBean.setCourseTargetTable2(trBasicInfoService.buildWordTable2(courseTargetWordDtoList, courseTargetWebDtoList, header2_1List, header2_2List));
|
|
|
+ CourseReportBean courseReportBean = new CourseReportBean(trBasicInfo.getOpenTime() + "《" + trBasicInfo.getCourseName() + "》", courseBasicBean);
|
|
|
|
|
|
- //table3-课程课后作业考核/评价内容及目标分值
|
|
|
- courseReportBean.setCourseTargetTable3(trBasicInfoService.buildWordTable3(courseTargetWordDtoList));
|
|
|
|
|
|
- //table4-课程期末考试考核/评价内容及目标分值
|
|
|
- courseReportBean.setCourseTargetTable4(trBasicInfoService.buildWordTable4(courseTargetWordDtoList));
|
|
|
+ //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));
|
|
|
|
|
|
- //examstudent-课程目标达成评价依据-考生
|
|
|
- courseReportBean.setExamStudentTable1(trBasicInfoService.buildWordTable5(trBasicInfo, courseReportBean));
|
|
|
+ //table2-课程目标达成评价依据
|
|
|
+ courseReportBean.setCourseTargetTable2(trBasicInfoService.buildWordTable2(courseTargetWordDtoList, courseTargetWebDtoList, header2_1List, header2_2List));
|
|
|
|
|
|
- InputStream inputStream = null;
|
|
|
- txtFileTemp = SystemConstant.getFileTempVar(SystemConstant.WORD_PREFIX);
|
|
|
- SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.SCHOOL_COURSE_DEGREE_TEMPLATE);
|
|
|
- if (Objects.isNull(sysConfig)) {
|
|
|
- inputStream = FileUtil.getStream("static/" + ImportTemplateEnum.STATIC_COURSE_DEGREE_REPORT.getTemplateName());
|
|
|
- } else {
|
|
|
- fileTemp = fileUploadService.downloadFile(Long.parseLong(sysConfig.getConfigValue()), fileTemp.getName());
|
|
|
- inputStream = FileUtil.getStream(fileTemp.getPath());
|
|
|
- }
|
|
|
- FileUtils.copyInputStreamToFile(inputStream, txtFileTemp);
|
|
|
- XWPFTemplate template = XWPFTemplate.compile(txtFileTemp.getAbsolutePath()).render(courseReportBean);
|
|
|
- template.writeToFile(txtFileTemp.getAbsolutePath());
|
|
|
- // 导出
|
|
|
- String fileName = Objects.nonNull(basicSchool) ? basicSchool.getName() + "_" + courseReportBean.getTitle1() + "_" + ImportTemplateEnum.STATIC_COURSE_DEGREE_REPORT.getFileName() + SystemConstant.WORD_PREFIX : courseReportBean.getTitle1() + "_" + ImportTemplateEnum.STATIC_COURSE_DEGREE_REPORT.getFileName() + SystemConstant.WORD_PREFIX;
|
|
|
- FileUtil.outputFile(ServletUtil.getResponse(), new FileInputStream(txtFileTemp), fileName);
|
|
|
+ //table3-课程课后作业考核/评价内容及目标分值
|
|
|
+ courseReportBean.setCourseTargetTable3(trBasicInfoService.buildWordTable3(courseTargetWordDtoList));
|
|
|
+
|
|
|
+ //table4-课程期末考试考核/评价内容及目标分值
|
|
|
+ courseReportBean.setCourseTargetTable4(trBasicInfoService.buildWordTable4(courseTargetWordDtoList));
|
|
|
+
|
|
|
+ //examstudent-课程目标达成评价依据-考生
|
|
|
+ courseReportBean.setExamStudentTable1(trBasicInfoService.buildWordTable5(trBasicInfo, courseReportBean));
|
|
|
+
|
|
|
+ InputStream inputStream = null;
|
|
|
+ txtFileTemp = SystemConstant.getFileTempVar(SystemConstant.WORD_PREFIX);
|
|
|
+ SysConfig sysConfig = commonCacheService.addSysConfigCache(schoolId, SystemConstant.SCHOOL_COURSE_DEGREE_TEMPLATE);
|
|
|
+ if (Objects.isNull(sysConfig)) {
|
|
|
+ inputStream = FileUtil.getStream("static/" + ImportTemplateEnum.STATIC_COURSE_DEGREE_REPORT.getTemplateName());
|
|
|
+ } else {
|
|
|
+ fileTemp = fileUploadService.downloadFile(Long.parseLong(sysConfig.getConfigValue()), fileTemp.getName());
|
|
|
+ inputStream = FileUtil.getStream(fileTemp.getPath());
|
|
|
+ }
|
|
|
+ FileUtils.copyInputStreamToFile(inputStream, txtFileTemp);
|
|
|
+ XWPFTemplate template = XWPFTemplate.compile(txtFileTemp.getAbsolutePath()).render(courseReportBean);
|
|
|
+ template.writeToFile(txtFileTemp.getAbsolutePath());
|
|
|
+ // 导出
|
|
|
+ String fileName = Objects.nonNull(basicSchool) ? basicSchool.getName() + "_" + courseReportBean.getTitle1() + "_" + ImportTemplateEnum.STATIC_COURSE_DEGREE_REPORT.getFileName() + SystemConstant.WORD_PREFIX : courseReportBean.getTitle1() + "_" + ImportTemplateEnum.STATIC_COURSE_DEGREE_REPORT.getFileName() + SystemConstant.WORD_PREFIX;
|
|
|
+ FileUtil.outputFile(ServletUtil.getResponse(), new FileInputStream(txtFileTemp), fileName);
|
|
|
|
|
|
// 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");
|
|
|
+ }
|
|
|
} catch (Exception e) {
|
|
|
if (e instanceof ApiException) {
|
|
|
ResultUtil.error((ApiException) e, ((ApiException) e).getCode(), e.getMessage());
|