|
@@ -20,13 +20,20 @@ import com.qmth.distributed.print.business.service.TRBasicInfoService;
|
|
|
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.BasicSchool;
|
|
|
+import com.qmth.teachcloud.common.entity.SysConfig;
|
|
|
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.service.CommonCacheService;
|
|
|
+import com.qmth.teachcloud.common.service.FileUploadService;
|
|
|
+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;
|
|
@@ -37,7 +44,9 @@ 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.*;
|
|
|
|
|
|
/**
|
|
@@ -65,6 +74,12 @@ public class TRBasicInfoController {
|
|
|
@Resource
|
|
|
TRExamStudentService trExamStudentService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ CommonCacheService commonCacheService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ FileUploadService fileUploadService;
|
|
|
+
|
|
|
@ApiOperation(value = "报告管理列表")
|
|
|
@RequestMapping(value = "/report/list", method = RequestMethod.POST)
|
|
|
@OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
|
|
@@ -144,8 +159,11 @@ 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 {
|
|
|
- File txtFileTemp = null;
|
|
|
+ File txtFileTemp = null, fileTemp = null;
|
|
|
try {
|
|
|
+ Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
|
+ BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
|
|
|
+
|
|
|
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(), "没有课程目标信息");
|
|
@@ -187,16 +205,24 @@ public class TRBasicInfoController {
|
|
|
//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);
|
|
|
-
|
|
|
- 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");
|
|
|
+ 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() + "_" + ImportTemplateEnum.STATIC_COURSE_DEGREE_REPORT.getFileName() + "_" + courseReportBean.getTitle1() + SystemConstant.WORD_PREFIX : ImportTemplateEnum.STATIC_COURSE_DEGREE_REPORT.getFileName() + "_" + courseReportBean.getTitle1() + 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());
|
|
@@ -207,6 +233,9 @@ public class TRBasicInfoController {
|
|
|
if (Objects.nonNull(txtFileTemp)) {
|
|
|
txtFileTemp.delete();
|
|
|
}
|
|
|
+ if (Objects.nonNull(fileTemp)) {
|
|
|
+ fileTemp.delete();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|