瀏覽代碼

课程目标达成度word报表修改

wangliang 1 年之前
父節點
當前提交
e3c2fc64b6

+ 14 - 12
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRBasicInfoServiceImpl.java

@@ -92,6 +92,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
 
     protected static final String tbBgColor = "F2F2F2";
     protected static final String tbPercentWidth = "100%";
+    protected static final String[] scoreTitles = new String[]{"100-90", "89-80", "79-70", "69-60", "<60"};
 
 
     @Override
@@ -721,6 +722,12 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
             }
 
             List<BigDecimal> scoreList = new ArrayList<>();
+            List<TRExamStudent> trExamStudentNewList = new ArrayList<>();
+            trExamStudentNewList.addAll(trExamStudentList);
+            trExamStudentNewList.remove(trExamStudentNewList.size() - 1);
+            trExamStudentNewList.remove(trExamStudentNewList.size() - 1);
+
+            BigDecimal targetAvgScore = new BigDecimal(trExamStudentNewList.stream().mapToDouble(s -> s.getScore().doubleValue()).sum()).divide(new BigDecimal(trExamStudentNewList.size()), 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
             for (int i = 0; i < trExamStudentList.size(); i++) {
                 TRExamStudent trExamStudent = trExamStudentList.get(i);
                 RowRenderData examStudent_row = new RowRenderData();
@@ -744,7 +751,6 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                 }
                 examStudent_cells.add(Cells.of(trExamStudent.getAdministrativeClass()).create());
 
-                BigDecimal targetAvgScore = new BigDecimal(0);
                 if (Objects.nonNull(trExamStudent.getResultDetail())) {
                     List<ReportExamStudentTargetDto> reportExamStudentTargetDtoList = JSONArray.parseArray(trExamStudent.getResultDetail(), ReportExamStudentTargetDto.class);
                     for (ReportExamStudentTargetDto reportExamStudentTargetDto : reportExamStudentTargetDtoList) {
@@ -757,7 +763,6 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                                     switch (trExamStudent.getName()) {
                                         case "平均分":
                                             examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentUsualScoreObjDto.getMatrixAvgScore())).create());
-                                            targetAvgScore = targetAvgScore.add(reportExamStudentUsualScoreObjDto.getMatrixAvgScore());
                                             break;
                                         case "各课程目标平均分":
                                             examStudent_cells.add(Cells.of(targetCourseDegreeMap.get(reportExamStudentTargetDto.getTargetId()) + "").create());
@@ -775,7 +780,6 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                                 switch (trExamStudent.getName()) {
                                     case "平均分":
                                         examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentFinalScoreDto.getMatrixAvgScore())).create());
-                                        targetAvgScore = targetAvgScore.add(reportExamStudentFinalScoreDto.getMatrixAvgScore());
                                         break;
                                     case "各课程目标平均分":
                                         examStudent_cells.add(Cells.of(targetCourseDegreeMap.get(reportExamStudentTargetDto.getTargetId()) + "").create());
@@ -894,7 +898,6 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
      */
     @Override
     public TableRenderData buildWordTable6(Map<String, Object> map) {
-        String[] scoreTitles = new String[]{"100-90", "89-80", "79-70", "69-60", "<60"};
         Integer[] scoreSizes = (Integer[]) map.get("scoreSizes");
         BigDecimal[] scorePercent = (BigDecimal[]) map.get("scorePercent");
         Double maxScore = new BigDecimal((Double) map.get("maxScore")).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
@@ -909,19 +912,19 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         for (int i = 0; i < scoreTitles.length; i++) {
             cells_1.add(Cells.of(scoreTitles[i]).center().create());
             cells_2.add(Cells.of(scoreSizes[i] + "").create());
-            cells_3.add(Cells.of(scorePercent[i] + "%").create());
+            cells_3.add(Cells.of(SystemConstant.df.format(scorePercent[i]) + "%").create());
         }
         cells_1.add(Cells.of("平均分").center().create());
         cells_1.add(Cells.of("最高分").center().create());
         cells_1.add(Cells.of("最低分").center().create());
 
-        cells_2.add(Cells.of(avgScore + "").create());
-        cells_2.add(Cells.of(maxScore + "").create());
-        cells_2.add(Cells.of(minScore + "").create());
+        cells_2.add(Cells.of(SystemConstant.df.format(avgScore) + "").create());
+        cells_2.add(Cells.of(SystemConstant.df.format(maxScore) + "").create());
+        cells_2.add(Cells.of(SystemConstant.df.format(minScore) + "").create());
 
-        cells_3.add(Cells.of(avgScore + "").create());
-        cells_3.add(Cells.of(maxScore + "").create());
-        cells_3.add(Cells.of(minScore + "").create());
+        cells_3.add(Cells.of(SystemConstant.df.format(avgScore) + "").create());
+        cells_3.add(Cells.of(SystemConstant.df.format(maxScore) + "").create());
+        cells_3.add(Cells.of(SystemConstant.df.format(minScore) + "").create());
 
         RowRenderData row_1 = new RowRenderData();
         row_1.setCells(cells_1);
@@ -960,7 +963,6 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
      */
     @Override
     public ChartMultiSeriesRenderData buildCourseTargetColumnDiagram1(Map<String, Object> map) {
-        String[] scoreTitles = new String[]{"100-90", "89-80", "79-70", "69-60", "<60"};
         Integer[] scoreSizes = (Integer[]) map.get("scoreSizes");
         ChartMultiSeriesRenderData chart = Charts
                 .ofMultiSeries("达成度分布柱状图", scoreTitles)

+ 0 - 25
distributed-print/src/main/java/com/qmth/distributed/print/api/TRBasicInfoController.java

@@ -238,11 +238,6 @@ public class TRBasicInfoController {
                 for (CourseWeightDto c : obeCourseWeightResult.getSubmitForm()) {
                     Double score = paperStructDimensionResultList.stream().filter(s -> Objects.equals(s.getCourseTargetName(), c.getCourseTargetName())).mapToDouble(s -> s.getScore().doubleValue()).sum();
                     Objects.requireNonNull(c.getTotalWeight(), "[" + c.getCourseTargetName() + "]未设置权重");
-//                    Objects.requireNonNull(c.getTotalScore(), "[" + c.getCourseTargetName() + "]未设置目标分值");
-//                    if (new BigDecimal(score).compareTo(c.getTotalWeight()) == 1) {
-//                        trBasicInfoService.clearReportData(examId, courseCode, paperNumber, teachCourseId, false);
-//                        throw ExceptionResultEnum.ERROR.exception("[" + c.getCourseTargetName() + "]包含的小题总分与权重设置不一致,请到期末成绩--试卷蓝图设置里调整");
-//                    }
                     List<CourseWeightDetailDto> courseWeightDetailDtoList = c.getEvaluationList();
                     for (CourseWeightDetailDto courseWeightDetailDto : courseWeightDetailDtoList) {
                         if (Objects.equals(courseWeightDetailDto.getEvaluationName(), SystemConstant.FINAL_SCORE_STR)) {
@@ -263,9 +258,6 @@ public class TRBasicInfoController {
                 this.reportExport(cultureProgramId, courseId, 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;
                 JSONObject jsonObject = JSONObject.parseObject(trBasicInfo.getCourseEvaluationResultDetail());
                 List<CourseTargetWordDto> courseTargetWordDtoList = JSONArray.parseArray(jsonObject.get("targetWordMap").toString(), CourseTargetWordDto.class);
 
@@ -283,12 +275,6 @@ public class TRBasicInfoController {
                 //table2-课程目标达成评价依据
                 courseReportBean.setCourseTargetTable2(trBasicInfoService.buildWordTable2(courseTargetWordDtoList));
 
-//                //table3-课程课后作业考核/评价内容及目标分值
-//                courseReportBean.setCourseTargetTable3(trBasicInfoService.buildWordTable3(courseTargetWordDtoList));
-//
-//                //table4-课程期末考试考核/评价内容及目标分值
-//                courseReportBean.setCourseTargetTable4(trBasicInfoService.buildWordTable4(courseTargetWordDtoList));
-
                 //examstudent-课程目标达成评价依据-考生
                 courseReportBean.setExamStudentTable1(trBasicInfoService.buildWordTable5(trBasicInfo, courseReportBean));
 
@@ -308,8 +294,6 @@ public class TRBasicInfoController {
                 // 导出
                 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) {
@@ -389,19 +373,10 @@ public class TRBasicInfoController {
                     }.getType());
                     StringJoiner stringJoiner = new StringJoiner("");
                     for (CourseWeightDto c : courseWeightDtoList) {
-                        Double score = paperStructDimensionResultList.stream().filter(s -> Objects.equals(s.getCourseTargetName(), c.getCourseTargetName())).mapToDouble(s -> s.getScore().doubleValue()).sum();
                         if (Objects.isNull(c.getTotalWeight())) {
                             reportChangeResult.setTargetScoreChange(true);
                             stringJoiner.add("[").add(c.getCourseTargetName()).add("]").add("未设置权重").add("\r\n");
                         }
-//                        else if (Objects.isNull(c.getTotalScore())) {
-//                            reportChangeResult.setTargetScoreChange(true);
-//                            stringJoiner.add("[").add(c.getCourseTargetName()).add("]").add("未设置目标分值").add("\r\n");
-//                        }
-//                        else if (new BigDecimal(score).compareTo(c.getTotalWeight()) == 1) {
-//                            reportChangeResult.setTargetScoreChange(true);
-//                            stringJoiner.add("[").add(c.getCourseTargetName()).add("]").add("包含的小题总分与权重设置不一致,请到期末成绩--试卷蓝图设置里调整").add("\r\n");
-//                        }
                     }
                     if (reportChangeResult.isTargetScoreChange()) {
                         trBasicInfoService.clearReportData(cultureProgramId, courseId, paperNumber, false);