wangliang пре 1 година
родитељ
комит
a9ff9d241a

+ 40 - 11
distributed-print/src/main/java/com/qmth/distributed/print/api/TRBasicInfoController.java

@@ -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();
+            }
         }
     }
 }