wangliang 1 éve
szülő
commit
c16bc5a2d4

+ 1 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentDto.java

@@ -42,6 +42,7 @@ public class ReportExamStudentDto implements Serializable {
         this.name = trExamStudent.getName();
         this.studentCode = trExamStudent.getStudentCode();
         this.administrativeClass = trExamStudent.getAdministrativeClass();
+        this.score = trExamStudent.getScore();
         this.targetList = GsonUtil.fromJson(trExamStudent.getResultDetail(), new TypeToken<List<ReportExamStudentTargetDto>>() {
         }.getType());
     }

+ 7 - 6
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRBasicInfoServiceImpl.java

@@ -404,7 +404,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
     @Override
     public TableRenderData buildWordTable1(List<CourseTargetWordDto> courseTargetWordDtoList) {
         //table1课程目标目标与毕业要求指标点的对应关系
-        RowRenderData header1 = Rows.of("课程目标", "毕业要求指标点").bgColor(tbBgColor).center().create();
+        RowRenderData header1 = Rows.of("课程目标", "毕业要求指标点").rowStyle(this.getHeadRowStyle()).create();
         Tables.TableBuilder tableBuilder1 = Tables.ofPercentWidth(tbPercentWidth, new int[]{25, 75});
         tableBuilder1.addRow(header1);
 
@@ -424,8 +424,8 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
      */
     @Override
     public TableRenderData buildWordTable2(List<CourseTargetWordDto> courseTargetWordDtoList) {
-        RowRenderData header2_1 = Rows.of("课程目标", "支撑毕业要求", "考核/评价环节及目标分值", "", "目标分值统计").bgColor(tbBgColor).center().create();
-        RowRenderData header2_2 = Rows.of("课程目标", "支撑毕业要求", "平时成绩", "期末考试", "目标分值统计").bgColor(tbBgColor).center().create();
+        RowRenderData header2_1 = Rows.of("课程目标", "支撑毕业要求", "考核/评价环节及目标分值", "", "目标分值统计").rowStyle(this.getHeadRowStyle()).create();
+        RowRenderData header2_2 = Rows.of("课程目标", "支撑毕业要求", "平时成绩", "期末考试", "目标分值统计").rowStyle(this.getHeadRowStyle()).center().create();
         RowRenderData[] rowRenderData2 = new RowRenderData[courseTargetWordDtoList.size() + 3];
         BigDecimal usualScoreTargetSum = new BigDecimal(0), finalScoreTargetSum = new BigDecimal(0);
         for (int i = 0; i < courseTargetWordDtoList.size(); i++) {
@@ -466,7 +466,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
      */
     @Override
     public TableRenderData buildWordTable3(List<CourseTargetWordDto> courseTargetWordDtoList) {
-        RowRenderData header3_1 = Rows.of("序号", "项目", "考核内容及要求", "目标分值", "对应的课程目标").bgColor(tbBgColor).center().create();
+        RowRenderData header3_1 = Rows.of("序号", "项目", "考核内容及要求", "目标分值", "对应的课程目标").rowStyle(this.getHeadRowStyle()).create();
         String tableFootTitle3 = "合计${usualScoreSum}分,占课程总评成绩的${usualScoreSumWeight}%";
         List<CourseTargetTableBean3> courseTargetTableBean3List = new ArrayList<>();
         BigDecimal usualScoreSum3 = new BigDecimal(0), usualScoreTargetSumWeight3 = new BigDecimal(0);
@@ -514,7 +514,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
      */
     @Override
     public TableRenderData buildWordTable4(List<CourseTargetWordDto> courseTargetWordDtoList) {
-        RowRenderData header4_1 = Rows.of("序号", "考核项目", "考核内容所涵盖的知识单元", "目标分值", "对应的课程目标").bgColor(tbBgColor).center().create();
+        RowRenderData header4_1 = Rows.of("序号", "考核项目", "考核内容所涵盖的知识单元", "目标分值", "对应的课程目标").rowStyle(this.getHeadRowStyle()).create();
         List<CourseTargetTableBean4> courseTargetTableBean4List = new ArrayList<>();
         BigDecimal finalScoreSum4 = new BigDecimal(0), finalScoreTargetSumWeight4 = new BigDecimal(0);
         Integer seq4 = 1;
@@ -699,7 +699,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                         examStudent_cells.add(Cells.of(SystemConstant.df.format(targetSumScore.setScale(2, BigDecimal.ROUND_HALF_UP))).create());
                         break;
                     case "平均分":
-                        examStudent_cells.add(Cells.of(SystemConstant.df.format(targetAvgScore.setScale(2, BigDecimal.ROUND_HALF_UP))).create());
+                        examStudent_cells.add(Cells.of(SystemConstant.df.format(targetAvgScore.setScale(1, BigDecimal.ROUND_DOWN))).create());
                         break;
                     case "各课程目标平均分":
                         examStudent_cells.add(Cells.of("").create());
@@ -850,6 +850,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
      */
     protected RowStyle getHeadRowStyle() {
         RowStyle rowStyle = new RowStyle();
+        rowStyle.setRepeated(true);
         ParagraphStyle paragraphStyle = new ParagraphStyle();
         paragraphStyle.setAlign(ParagraphAlignment.CENTER);
         CellStyle cellStyle = new CellStyle();

+ 10 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRExamStudentServiceImpl.java

@@ -19,6 +19,7 @@ import org.springframework.util.CollectionUtils;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
 /**
@@ -123,14 +124,20 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
                     }
                     reportExamStudentDto.setTargetList(targetList);
                 });
-                reportExamStudentDto.setScore(new BigDecimal(reportExamStudentDto.getScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+                reportExamStudentDto.setScore(new BigDecimal(reportExamStudentDto.getScore()).setScale(0, BigDecimal.ROUND_DOWN).doubleValue());
                 Collections.sort(reportExamStudentDto.getTargetList());
                 trExamStudentList.add(new TRExamStudent(trBasicInfo.getId(), reportExamStudentDto));
             }
             //加入目标分&平均分&各课程目标平均分
             BigDecimal size = new BigDecimal(examStudentList.size());
             List<ReportExamStudentTargetDto> targetDtoList = this.targetDtoParams(reportExamStudentTargetDtoMap, size);
-            Double score = new BigDecimal(examStudentList.stream().mapToDouble(ReportExamStudentDto::getScore).sum()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+            AtomicReference<Double> dimensionScoreSum = new AtomicReference<>(0.0d);
+            AtomicReference<Double> usualScoreSum = new AtomicReference<>(0.0d);
+            targetDtoList.stream().peek(e -> {
+                dimensionScoreSum.set(dimensionScoreSum.get() + e.getFinalScore().getDimensionList().stream().mapToDouble(DimensionDto::getDimensionMatrixAvgScore).sum());
+                usualScoreSum.set(usualScoreSum.get() + e.getUsualScore().getScoreList().stream().mapToDouble(ReportExamStudentUsualScoreObjDto::getMatrixAvgScore).sum());
+            }).collect(Collectors.toList());
+            Double score = new BigDecimal(dimensionScoreSum.get()).add(new BigDecimal(usualScoreSum.get())).setScale(1, BigDecimal.ROUND_DOWN).doubleValue();
             ReportExamStudentDto reportExamStudentTargetDto = new ReportExamStudentDto("目标分", "目标分", null, 100.d, targetDtoList);
             ReportExamStudentDto reportExamStudentAvgDto = new ReportExamStudentDto("平均分", "平均分", null, score, targetDtoList);
             ReportExamStudentDto reportExamStudentTargetAvgDto = new ReportExamStudentDto("各课程目标平均分", "各课程目标平均分", null, null, targetDtoList);
@@ -201,7 +208,7 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
                 r.setMatrixAvgScore(new BigDecimal(r.getMatrixScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
                 v.setTargetMatrixAvgScore(v.getTargetMatrixAvgScore() + r.getMatrixAvgScore());
             }
-            v.setTargetMatrixAvgScore(new BigDecimal(v.getTargetMatrixAvgScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+            v.setTargetMatrixAvgScore(new BigDecimal(v.getTargetMatrixAvgScore()).setScale(1, BigDecimal.ROUND_DOWN).doubleValue());
             targetDtoList.add(v);
         });
         Collections.sort(targetDtoList);