Browse Source

Merge remote-tracking branch 'origin/dev_v3.3.1' into dev_v3.3.1

caozixuan 1 year ago
parent
commit
30f37e6ade

+ 11 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRBasicInfoServiceImpl.java

@@ -18,6 +18,7 @@ import com.qmth.distributed.print.business.bean.result.report.PaperStructResult;
 import com.qmth.distributed.print.business.bean.result.report.word.CourseReportBean;
 import com.qmth.distributed.print.business.bean.result.report.word.CourseTargetTableBean3;
 import com.qmth.distributed.print.business.bean.result.report.word.CourseTargetTableBean4;
+import com.qmth.distributed.print.business.entity.ExamStudent;
 import com.qmth.distributed.print.business.entity.TCPaperStruct;
 import com.qmth.distributed.print.business.entity.TRBasicInfo;
 import com.qmth.distributed.print.business.entity.TRExamStudent;
@@ -76,6 +77,9 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
     @Resource
     CourseWeightService courseWeightService;
 
+    @Resource
+    ExamStudentService examStudentService;
+
     protected final static DecimalFormat df = new DecimalFormat("0.##");
     protected final static String tbBgColor = "F2F2F2";
     protected final static String tbPercentWidth = "100%";
@@ -344,11 +348,15 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         BasicSemester basicSemester = basicSemesterService.selectByExamId(markPaper.getExamId());
         Objects.requireNonNull(basicSemester, "未找到学期信息");
 
-        //TODO 有测试数据,待肖飞补充授课对象和任课老师数据
+        ExamStudent examStudent = examStudentService.getOne(new QueryWrapper<ExamStudent>().select(" GROUP_CONCAT(DISTINCT clazz_name) as clazzName ")
+                .eq("exam_id", markPaper.getExamId())
+                .eq("paper_number", markPaper.getPaperNumber()));
+        String teachingObject = Objects.nonNull(examStudent) ? examStudent.getClazzName() : null;
+        //TODO 有测试数据,待肖飞补充任课老师数据
         if (Objects.isNull(trBasicInfo)) {
-            trBasicInfo = new TRBasicInfo(markPaper.getExamId(), markPaper.getCourseCode(), markPaper.getCourseName(), markPaper.getPaperNumber(), basicSemester.getName(), "测试班级1", "测试老师1", 40, userId);
+            trBasicInfo = new TRBasicInfo(markPaper.getExamId(), markPaper.getCourseCode(), markPaper.getCourseName(), markPaper.getPaperNumber(), basicSemester.getName(), teachingObject, null, null, userId);
         } else {
-            trBasicInfo.setBasicInfo(markPaper.getExamId(), markPaper.getCourseCode(), markPaper.getCourseName(), markPaper.getPaperNumber(), basicSemester.getName(), "测试班级1", "测试老师1", 40);
+            trBasicInfo.setBasicInfo(markPaper.getExamId(), markPaper.getCourseCode(), markPaper.getCourseName(), markPaper.getPaperNumber(), basicSemester.getName(), teachingObject, "测试老师1", null);
         }
         //测试数据
         //课程基本情况

+ 1 - 1
distributed-print-business/src/main/resources/mapper/TCFinalScoreMapper.xml

@@ -60,7 +60,7 @@
             tcfs.score as finalScore,
             tcfs.score_detail as finalScoreDetail,
             tcus.score as usualScore,
-            es.teach_clazz_name as administrativeClass
+            es.clazz_name as administrativeClass
         from t_c_final_score tcfs
         join t_c_usual_score tcus on tcfs.exam_id = tcus.exam_id and tcfs.course_code = tcus.course_code and tcfs.paper_number and tcus.paper_number and tcfs.student_code = tcus.student_code
         join exam_student es on es.exam_id = tcfs.exam_id and es.paper_number = tcfs.paper_number and es.student_code = tcfs.student_code

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