|
@@ -152,192 +152,41 @@ public class TRBasicInfoController {
|
|
|
@ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) throws IOException {
|
|
|
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.getCourseEvaluationResultDetail(), "没有课程目标信息");
|
|
|
+ Objects.requireNonNull(trBasicInfo.getCourseEvaluationResult(), "没有课程目标信息");
|
|
|
+ Objects.requireNonNull(trBasicInfo.getCourseEvaluationResultDetail(), "没有课程考生信息");
|
|
|
|
|
|
+ //评价样本的基本信息
|
|
|
String period = Objects.nonNull(trBasicInfo.getPeriod()) ? trBasicInfo.getPeriod() : null;
|
|
|
String credit = Objects.nonNull(trBasicInfo.getCredit()) ? trBasicInfo.getCredit() : null;
|
|
|
- if (Objects.nonNull(credit)) {
|
|
|
- period = period + "/" + credit;
|
|
|
- }
|
|
|
- ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = Objects.nonNull(trBasicInfo.getCourseEvaluationResult()) ? JSONObject.parseObject(trBasicInfo.getCourseEvaluationResult(), ReportCourseEvaluationResultDto.class) : null;
|
|
|
+ period = Objects.nonNull(credit) ? period + "/" + credit : period;
|
|
|
+
|
|
|
+ ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = JSONObject.parseObject(trBasicInfo.getCourseEvaluationResult(), ReportCourseEvaluationResultDto.class);
|
|
|
CourseBasicBean courseBasicBean = new CourseBasicBean(trBasicInfo.getCourseName(),
|
|
|
- trBasicInfo.getCourseCode(), null, trBasicInfo.getCourseType(), period, null, null, trBasicInfo.getDirector(), DateUtil.format(new Date(trBasicInfo.getCreateTime()), SystemConstant.DEFAULT_DATE_PATTERN), "测试:我们的目标是没有目标", Objects.nonNull(reportCourseEvaluationResultDto) && !CollectionUtils.isEmpty(reportCourseEvaluationResultDto.getTargetList()) ? reportCourseEvaluationResultDto.getTargetList().size() : null);
|
|
|
+ trBasicInfo.getCourseCode(), null, trBasicInfo.getCourseType(),
|
|
|
+ period, null, null, trBasicInfo.getDirector(),
|
|
|
+ DateUtil.format(new Date(trBasicInfo.getCreateTime()), SystemConstant.DEFAULT_DATE_PATTERN),
|
|
|
+ "测试:我们的目标是没有目标", reportCourseEvaluationResultDto.getTargetList().size());
|
|
|
|
|
|
- CourseReportBean courseReportBean = new CourseReportBean(trBasicInfo.getOpenTime() + "《测试输出报告》", courseBasicBean);
|
|
|
+ CourseReportBean courseReportBean = new CourseReportBean(trBasicInfo.getOpenTime() + "《" + trBasicInfo.getCourseName() + "》", courseBasicBean);
|
|
|
|
|
|
JSONObject jsonObject = JSONObject.parseObject(trBasicInfo.getCourseEvaluationResultDetail());
|
|
|
List<CourseTargetWordDto> courseTargetWordDtoList = JSONArray.parseArray(jsonObject.get("targetWordMap").toString(), CourseTargetWordDto.class);
|
|
|
List<CourseTargetWebDto> courseTargetWebDtoList = JSONArray.parseArray(jsonObject.get("targetWebMap").toString(), CourseTargetWebDto.class);
|
|
|
|
|
|
- //table1课程目标目标与毕业要求指标点的对应关系
|
|
|
- RowRenderData header1 = Rows.of("课程目标", "毕业要求指标点").bgColor("F2F2F2").center().create();
|
|
|
- Tables.TableBuilder tableBuilder1 = Tables.ofPercentWidth("100%");
|
|
|
- tableBuilder1.addRow(header1);
|
|
|
-
|
|
|
+ //table1-课程目标目标与毕业要求指标点的对应关系
|
|
|
List<String> header2_1List = new ArrayList<>(Arrays.asList("课程目标", "支撑毕业要求")), header2_2List = new ArrayList<>();
|
|
|
header2_2List.addAll(header2_1List);
|
|
|
header2_1List.add("考核/评价环节及目标分值");
|
|
|
+ courseReportBean.setCourseTargetTable1(this.buildTable1(courseTargetWordDtoList, header2_1List, header2_2List));
|
|
|
|
|
|
- for (int i = 0; i < courseTargetWordDtoList.size(); i++) {
|
|
|
- CourseTargetWordDto courseTargetWordDto = courseTargetWordDtoList.get(i);
|
|
|
- List<ReportEvaluationDto> reportEvaluationDtoList = courseTargetWordDto.getUsualScoreDto().getUsualScoreDetailList();
|
|
|
- for (ReportEvaluationDto r : reportEvaluationDtoList) {
|
|
|
- header2_1List.add("");
|
|
|
- header2_2List.add(r.getEvaluation());
|
|
|
- }
|
|
|
-
|
|
|
- CourseTargetTableBean1 courseTargetTableBean1 = new CourseTargetTableBean1(courseTargetWordDto.getTargetName(), courseTargetWordDto.getGraduationRequirement());
|
|
|
- RowRenderData row = Rows.of(courseTargetTableBean1.getName(), courseTargetTableBean1.getTarget()).rowStyle(this.getRowStyle()).create();
|
|
|
- tableBuilder1.addRow(row);
|
|
|
- }
|
|
|
- header2_1List.add("目标分值统计");
|
|
|
- header2_2List.add("期末考试");
|
|
|
- header2_2List.add("目标分值统计");
|
|
|
-
|
|
|
- TableRenderData tableRenderData1 = tableBuilder1.left().create();
|
|
|
- courseReportBean.setCourseTargetTable1(tableRenderData1);
|
|
|
-
|
|
|
- RowRenderData header2_1 = Rows.of(header2_1List.toArray(new String[header2_1List.size()])).bgColor("F2F2F2").center().create();
|
|
|
- RowRenderData header2_2 = Rows.of(header2_2List.toArray(new String[header2_1List.size()])).bgColor("F2F2F2").center().create();
|
|
|
-
|
|
|
- RowRenderData[] rowRenderData2 = new RowRenderData[courseTargetWordDtoList.size() + 3];
|
|
|
- Map<String, BigDecimal> rowRenderData2SumMap = new LinkedHashMap<>();
|
|
|
- BigDecimal targetSum = new BigDecimal(0);
|
|
|
- for (int i = 0; i < courseTargetWebDtoList.size(); i++) {
|
|
|
- CourseTargetWebDto courseTargetWebDto = courseTargetWebDtoList.get(i);
|
|
|
- List<ReportEvaluationDto> reportEvaluationDtoList = courseTargetWebDto.getEvaluationList();
|
|
|
- Map<String, ReportEvaluationDto> reportEvaluationDtoMap = reportEvaluationDtoList.stream().collect(Collectors.toMap(ReportEvaluationDto::getEvaluation, Function.identity(), (dto1, dto2) -> dto1));
|
|
|
- List<String> rowData = new ArrayList<>();
|
|
|
- BigDecimal sumScore = new BigDecimal(0);
|
|
|
- rowData.add(header2_2List.get(0));
|
|
|
- rowData.add(header2_2List.get(1));
|
|
|
- for (int y = 2; y < header2_2List.size() - 1; y++) {
|
|
|
- String key = header2_2List.get(y);
|
|
|
- if (!rowRenderData2SumMap.containsKey(key) && Objects.nonNull(reportEvaluationDtoMap.get(key))) {
|
|
|
- rowRenderData2SumMap.put(key, reportEvaluationDtoMap.get(key).getTargetScore());
|
|
|
- } else if (Objects.nonNull(reportEvaluationDtoMap.get(key))) {
|
|
|
- BigDecimal bigDecimal = rowRenderData2SumMap.get(key);
|
|
|
- bigDecimal = bigDecimal.add(reportEvaluationDtoMap.get(key).getTargetScore());
|
|
|
- rowRenderData2SumMap.put(key, bigDecimal);
|
|
|
- }
|
|
|
- if (reportEvaluationDtoMap.containsKey(key)) {
|
|
|
- BigDecimal targetScore = reportEvaluationDtoMap.get(key).getTargetScore();
|
|
|
- rowData.add(targetScore.toString());
|
|
|
- sumScore = sumScore.add(targetScore);
|
|
|
- } else {
|
|
|
- rowData.add("0");
|
|
|
- }
|
|
|
- }
|
|
|
- rowData.add(sumScore.toString());
|
|
|
- targetSum = targetSum.add(sumScore);
|
|
|
- rowRenderData2SumMap.put("目标分值统计", targetSum);
|
|
|
- rowRenderData2[i + 2] = Rows.of(rowData.toArray(new String[header2_2List.size()])).rowStyle(this.getRowStyle()).create();
|
|
|
- }
|
|
|
- rowRenderData2[0] = header2_1;
|
|
|
- rowRenderData2[1] = header2_2;
|
|
|
-
|
|
|
- List<String> header2FootList = new ArrayList<>(header2_2List.size());
|
|
|
- header2FootList.add("合计");
|
|
|
- header2FootList.add("");
|
|
|
- for (int y = 2; y < header2_2List.size(); y++) {
|
|
|
- header2FootList.add(rowRenderData2SumMap.get(header2_2List.get(y)).toString());
|
|
|
- }
|
|
|
-
|
|
|
- RowRenderData header2_foot = Rows.of(header2FootList.toArray(new String[header2_2List.size()])).rowStyle(this.getRowStyle()).create();
|
|
|
- rowRenderData2[rowRenderData2.length - 1] = header2_foot;
|
|
|
-
|
|
|
- // 表格合并,根据坐标
|
|
|
- MergeCellRule mergeCellRule2 = MergeCellRule.builder().map(MergeCellRule.Grid.of(0, 0), MergeCellRule.Grid.of(1, 0)).
|
|
|
- map(MergeCellRule.Grid.of(0, 1), MergeCellRule.Grid.of(1, 1)).
|
|
|
- map(MergeCellRule.Grid.of(0, 2), MergeCellRule.Grid.of(0, header2FootList.size() - 2)).
|
|
|
- map(MergeCellRule.Grid.of(0, header2FootList.size() - 1), MergeCellRule.Grid.of(1, header2FootList.size() - 1)).
|
|
|
- map(MergeCellRule.Grid.of(rowRenderData2.length - 1, 0), MergeCellRule.Grid.of(rowRenderData2.length - 1, 1)).
|
|
|
- build();
|
|
|
-
|
|
|
- Tables.TableBuilder tableBuilder2 = Tables.ofPercentWidth("100%");
|
|
|
- for (int i = 0; i < rowRenderData2.length; i++) {
|
|
|
- tableBuilder2.addRow(rowRenderData2[i]);
|
|
|
- }
|
|
|
- TableRenderData tableRenderData2 = tableBuilder2.mergeRule(mergeCellRule2).left().create();
|
|
|
-// TableRenderData tableRenderData2 = Tables.of(rowRenderData2).mergeRule(mergeCellRule2)
|
|
|
-// .width(17f, new double[]{17 / 6, 22 / 6, 15 / 6, 15 / 6, 15 / 6, 15 / 6, 17 / 6})
|
|
|
-// .left().create();
|
|
|
- courseReportBean.setCourseTargetTable2(tableRenderData2);
|
|
|
-
|
|
|
- //TODO 等待曹子轩接口table3-课程目标达成评价依据-平时作业目标分值
|
|
|
- RowRenderData header3_1 = Rows.of("序号", "项目", "考核内容及要求", "目标分值", "对应的课程目标").bgColor("F2F2F2").center().create();
|
|
|
- List<CourseTargetTableBean3> courseTargetTableBean3List = new ArrayList<>();
|
|
|
- BigDecimal targetSum3 = new BigDecimal(0);
|
|
|
- String tableFootTitle3 = "合计${sum}分,占课程总评成绩的30%";
|
|
|
- for (int i = 0; i < 2; i++) {
|
|
|
- CourseTargetTableBean3 courseTargetTableBean3 = new CourseTargetTableBean3((i + 1), "项目" + (i + 1), "内容" + (i + 1), new BigDecimal(i + 3).doubleValue(), "目标分值" + (i + 1));
|
|
|
- targetSum3 = targetSum3.add(new BigDecimal(courseTargetTableBean3.getTarget()));
|
|
|
- courseTargetTableBean3List.add(courseTargetTableBean3);
|
|
|
- }
|
|
|
- tableFootTitle3 = tableFootTitle3.replace("${sum}", targetSum3.toString());
|
|
|
-
|
|
|
- RowRenderData[] rowRenderData3 = new RowRenderData[courseTargetTableBean3List.size() + 2];
|
|
|
- for (int i = 0; i < courseTargetTableBean3List.size(); i++) {
|
|
|
- CourseTargetTableBean3 courseTargetTableBean3 = courseTargetTableBean3List.get(i);
|
|
|
- rowRenderData3[i + 1] = Rows.of(courseTargetTableBean3.getNum().toString(), courseTargetTableBean3.getProject(), courseTargetTableBean3.getContent(), courseTargetTableBean3.getTarget().toString(), courseTargetTableBean3.getCourseTarget()).rowStyle(this.getRowStyle()).create();
|
|
|
- }
|
|
|
- rowRenderData3[0] = header3_1;
|
|
|
- RowRenderData header3_foot = Rows.of(tableFootTitle3, "", "", "", "").center().create();
|
|
|
- rowRenderData3[rowRenderData3.length - 1] = header3_foot;
|
|
|
-
|
|
|
- // 表格合并,根据坐标
|
|
|
- MergeCellRule mergeCellRule3 = MergeCellRule.builder().map(MergeCellRule.Grid.of(rowRenderData3.length - 1, 0), MergeCellRule.Grid.of(rowRenderData3.length - 1, 4)).
|
|
|
- build();
|
|
|
-
|
|
|
-// TableRenderData tableRenderData3 = Tables.of(rowRenderData3).mergeRule(mergeCellRule3)
|
|
|
-// .width(17f, new double[]{10 / 6, 15 / 6, 24 / 6, 15 / 6, 20 / 6}).left().create();
|
|
|
- Tables.TableBuilder tableBuilder3 = Tables.ofPercentWidth("100%");
|
|
|
- for (int i = 0; i < rowRenderData3.length; i++) {
|
|
|
- tableBuilder3.addRow(rowRenderData3[i]);
|
|
|
- }
|
|
|
- TableRenderData tableRenderData3 = tableBuilder3.mergeRule(mergeCellRule3).left().create();
|
|
|
- courseReportBean.setCourseTargetTable3(tableRenderData3);
|
|
|
-
|
|
|
- //table4-课程目标达成评价依据-期末考试知识单元目标分值
|
|
|
- RowRenderData header4_1 = Rows.of("序号", "考核项目", "考核内容所涵盖的知识单元", "目标分值", "对应的课程目标").bgColor("F2F2F2").center().create();
|
|
|
- List<CourseTargetTableBean4> courseTargetTableBean4List = new ArrayList<>();
|
|
|
- BigDecimal sum4 = new BigDecimal(0);
|
|
|
- Integer seq4 = 0;
|
|
|
- for (int i = 0; i < courseTargetWordDtoList.size(); i++) {
|
|
|
- CourseTargetWordDto courseTargetWordDto = courseTargetWordDtoList.get(i);
|
|
|
- List<DimensionDto> dimensionDtoList = courseTargetWordDto.getFinalScoreDto().getDimensionList();
|
|
|
- for (DimensionDto dimensionDto : dimensionDtoList) {
|
|
|
- sum4 = sum4.add(new BigDecimal(dimensionDto.getDimensionScore()));
|
|
|
- seq4 = seq4 + 1;
|
|
|
- CourseTargetTableBean4 courseTargetTableBean4 = new CourseTargetTableBean4(seq4, courseTargetWordDto.getGraduationRequirement(), dimensionDto.getDimensionName(), dimensionDto.getDimensionScore(), courseTargetWordDto.getTargetName());
|
|
|
- courseTargetTableBean4List.add(courseTargetTableBean4);
|
|
|
- }
|
|
|
- }
|
|
|
- String tableFootTitle4 = "合计${sum}分,占课程总评成绩的70%";
|
|
|
- tableFootTitle4 = tableFootTitle4.replace("${sum}", sum4.toString());
|
|
|
-
|
|
|
- RowRenderData[] rowRenderData4 = new RowRenderData[courseTargetTableBean4List.size() + 2];
|
|
|
- for (int i = 0; i < courseTargetTableBean4List.size(); i++) {
|
|
|
- CourseTargetTableBean4 courseTargetTableBean4 = courseTargetTableBean4List.get(i);
|
|
|
- rowRenderData4[i + 1] = Rows.of(courseTargetTableBean4.getNum().toString(), courseTargetTableBean4.getProject(), courseTargetTableBean4.getContent(), courseTargetTableBean4.getTarget().toString(), courseTargetTableBean4.getCourseTarget()).rowStyle(this.getRowStyle()).create();
|
|
|
- }
|
|
|
- rowRenderData4[0] = header4_1;
|
|
|
- RowRenderData header4_foot = Rows.of(tableFootTitle4, "", "", "", "").center().create();
|
|
|
- rowRenderData4[rowRenderData4.length - 1] = header4_foot;
|
|
|
+ //table2-课程目标达成评价依据
|
|
|
+ courseReportBean.setCourseTargetTable2(this.buildTable2(courseTargetWordDtoList, courseTargetWebDtoList, header2_1List, header2_2List));
|
|
|
|
|
|
- // 表格合并,根据坐标
|
|
|
- MergeCellRule mergeCellRule4 = MergeCellRule.builder().map(MergeCellRule.Grid.of(rowRenderData4.length - 1, 0), MergeCellRule.Grid.of(rowRenderData4.length - 1, 4)).
|
|
|
- build();
|
|
|
+ //table3-课程课后作业考核/评价内容及目标分值
|
|
|
+ courseReportBean.setCourseTargetTable3(this.buildTable3(courseTargetWordDtoList));
|
|
|
|
|
|
-// TableRenderData tableRenderData4 = Tables.of(rowRenderData3).mergeRule(mergeCellRule4)
|
|
|
-// .width(17f, new double[]{10 / 6, 15 / 6, 24 / 6, 15 / 6, 20 / 6})
|
|
|
-// .left().create();
|
|
|
- Tables.TableBuilder tableBuilder4 = Tables.ofPercentWidth("100%");
|
|
|
- for (int i = 0; i < rowRenderData4.length; i++) {
|
|
|
- tableBuilder4.addRow(rowRenderData4[i]);
|
|
|
- }
|
|
|
- TableRenderData tableRenderData4 = tableBuilder4.mergeRule(mergeCellRule4).left().create();
|
|
|
- courseReportBean.setCourseTargetTable4(tableRenderData4);
|
|
|
+ //table4-课程期末考试考核/评价内容及目标分值
|
|
|
+ courseReportBean.setCourseTargetTable4(this.buildTable4(courseTargetWordDtoList));
|
|
|
|
|
|
//examstudent-课程目标达成评价依据-考生
|
|
|
// List<TRExamStudent> trExamStudentList = trExamStudentService.list(new QueryWrapper<TRExamStudent>().lambda().eq(TRExamStudent::getrBasicInfoId, trBasicInfo.getId()));
|
|
@@ -586,4 +435,213 @@ public class TRBasicInfoController {
|
|
|
rowStyle.setDefaultCellStyle(cellStyle);
|
|
|
return rowStyle;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建word动态表格1
|
|
|
+ *
|
|
|
+ * @param courseTargetWordDtoList
|
|
|
+ * @param header2_1List
|
|
|
+ * @param header2_2List
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ protected TableRenderData buildTable1(List<CourseTargetWordDto> courseTargetWordDtoList,
|
|
|
+ List<String> header2_1List,
|
|
|
+ List<String> header2_2List) {
|
|
|
+ //table1课程目标目标与毕业要求指标点的对应关系
|
|
|
+ RowRenderData header1 = Rows.of("课程目标", "毕业要求指标点").bgColor("F2F2F2").center().create();
|
|
|
+ Tables.TableBuilder tableBuilder1 = Tables.ofPercentWidth("100%");
|
|
|
+ tableBuilder1.addRow(header1);
|
|
|
+
|
|
|
+// List<String> header2_1List = new ArrayList<>(Arrays.asList("课程目标", "支撑毕业要求")), header2_2List = new ArrayList<>();
|
|
|
+// header2_2List.addAll(header2_1List);
|
|
|
+// header2_1List.add("考核/评价环节及目标分值");
|
|
|
+
|
|
|
+ for (int i = 0; i < courseTargetWordDtoList.size(); i++) {
|
|
|
+ CourseTargetWordDto courseTargetWordDto = courseTargetWordDtoList.get(i);
|
|
|
+ List<ReportEvaluationDto> reportEvaluationDtoList = courseTargetWordDto.getUsualScoreDto().getUsualScoreDetailList();
|
|
|
+ for (ReportEvaluationDto r : reportEvaluationDtoList) {
|
|
|
+ header2_1List.add("");
|
|
|
+ header2_2List.add(r.getEvaluation());
|
|
|
+ }
|
|
|
+
|
|
|
+ CourseTargetTableBean1 courseTargetTableBean1 = new CourseTargetTableBean1(courseTargetWordDto.getTargetName(), courseTargetWordDto.getGraduationRequirement());
|
|
|
+ RowRenderData row = Rows.of(courseTargetTableBean1.getName(), courseTargetTableBean1.getTarget()).rowStyle(this.getRowStyle()).create();
|
|
|
+ tableBuilder1.addRow(row);
|
|
|
+ }
|
|
|
+ header2_1List.add("目标分值统计");
|
|
|
+ header2_2List.add("期末考试");
|
|
|
+ header2_2List.add("目标分值统计");
|
|
|
+ return tableBuilder1.left().create();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建word动态表格2
|
|
|
+ *
|
|
|
+ * @param courseTargetWordDtoList
|
|
|
+ * @param courseTargetWebDtoList
|
|
|
+ * @param header2_1List
|
|
|
+ * @param header2_2List
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ protected TableRenderData buildTable2(List<CourseTargetWordDto> courseTargetWordDtoList,
|
|
|
+ List<CourseTargetWebDto> courseTargetWebDtoList,
|
|
|
+ List<String> header2_1List,
|
|
|
+ List<String> header2_2List) {
|
|
|
+ RowRenderData header2_1 = Rows.of(header2_1List.toArray(new String[header2_1List.size()])).bgColor("F2F2F2").center().create();
|
|
|
+ RowRenderData header2_2 = Rows.of(header2_2List.toArray(new String[header2_1List.size()])).bgColor("F2F2F2").center().create();
|
|
|
+
|
|
|
+ RowRenderData[] rowRenderData2 = new RowRenderData[courseTargetWordDtoList.size() + 3];
|
|
|
+ Map<String, BigDecimal> rowRenderData2SumMap = new LinkedHashMap<>();
|
|
|
+ BigDecimal targetSum = new BigDecimal(0);
|
|
|
+ for (int i = 0; i < courseTargetWebDtoList.size(); i++) {
|
|
|
+ CourseTargetWebDto courseTargetWebDto = courseTargetWebDtoList.get(i);
|
|
|
+ List<ReportEvaluationDto> reportEvaluationDtoList = courseTargetWebDto.getEvaluationList();
|
|
|
+ Map<String, ReportEvaluationDto> reportEvaluationDtoMap = reportEvaluationDtoList.stream().collect(Collectors.toMap(ReportEvaluationDto::getEvaluation, Function.identity(), (dto1, dto2) -> dto1));
|
|
|
+ List<String> rowData = new ArrayList<>();
|
|
|
+ BigDecimal sumScore = new BigDecimal(0);
|
|
|
+ rowData.add(header2_2List.get(0));
|
|
|
+ rowData.add(header2_2List.get(1));
|
|
|
+ for (int y = 2; y < header2_2List.size() - 1; y++) {
|
|
|
+ String key = header2_2List.get(y);
|
|
|
+ if (!rowRenderData2SumMap.containsKey(key) && Objects.nonNull(reportEvaluationDtoMap.get(key))) {
|
|
|
+ rowRenderData2SumMap.put(key, reportEvaluationDtoMap.get(key).getTargetScore());
|
|
|
+ } else if (Objects.nonNull(reportEvaluationDtoMap.get(key))) {
|
|
|
+ BigDecimal bigDecimal = rowRenderData2SumMap.get(key);
|
|
|
+ bigDecimal = bigDecimal.add(reportEvaluationDtoMap.get(key).getTargetScore());
|
|
|
+ rowRenderData2SumMap.put(key, bigDecimal);
|
|
|
+ }
|
|
|
+ if (reportEvaluationDtoMap.containsKey(key)) {
|
|
|
+ BigDecimal targetScore = reportEvaluationDtoMap.get(key).getTargetScore();
|
|
|
+ rowData.add(targetScore.toString());
|
|
|
+ sumScore = sumScore.add(targetScore);
|
|
|
+ } else {
|
|
|
+ rowData.add("0");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ rowData.add(sumScore.toString());
|
|
|
+ targetSum = targetSum.add(sumScore);
|
|
|
+ rowRenderData2SumMap.put("目标分值统计", targetSum);
|
|
|
+ rowRenderData2[i + 2] = Rows.of(rowData.toArray(new String[header2_2List.size()])).rowStyle(this.getRowStyle()).create();
|
|
|
+ }
|
|
|
+ rowRenderData2[0] = header2_1;
|
|
|
+ rowRenderData2[1] = header2_2;
|
|
|
+
|
|
|
+ List<String> header2FootList = new ArrayList<>(header2_2List.size());
|
|
|
+ header2FootList.add("合计");
|
|
|
+ header2FootList.add("");
|
|
|
+ for (int y = 2; y < header2_2List.size(); y++) {
|
|
|
+ header2FootList.add(rowRenderData2SumMap.get(header2_2List.get(y)).toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ RowRenderData header2_foot = Rows.of(header2FootList.toArray(new String[header2_2List.size()])).rowStyle(this.getRowStyle()).create();
|
|
|
+ rowRenderData2[rowRenderData2.length - 1] = header2_foot;
|
|
|
+
|
|
|
+ // 表格合并,根据坐标
|
|
|
+ MergeCellRule mergeCellRule2 = MergeCellRule.builder().map(MergeCellRule.Grid.of(0, 0), MergeCellRule.Grid.of(1, 0)).
|
|
|
+ map(MergeCellRule.Grid.of(0, 1), MergeCellRule.Grid.of(1, 1)).
|
|
|
+ map(MergeCellRule.Grid.of(0, 2), MergeCellRule.Grid.of(0, header2FootList.size() - 2)).
|
|
|
+ map(MergeCellRule.Grid.of(0, header2FootList.size() - 1), MergeCellRule.Grid.of(1, header2FootList.size() - 1)).
|
|
|
+ map(MergeCellRule.Grid.of(rowRenderData2.length - 1, 0), MergeCellRule.Grid.of(rowRenderData2.length - 1, 1)).
|
|
|
+ build();
|
|
|
+
|
|
|
+ Tables.TableBuilder tableBuilder2 = Tables.ofPercentWidth("100%");
|
|
|
+ for (int i = 0; i < rowRenderData2.length; i++) {
|
|
|
+ tableBuilder2.addRow(rowRenderData2[i]);
|
|
|
+ }
|
|
|
+ return tableBuilder2.mergeRule(mergeCellRule2).left().create();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建word动态表格3
|
|
|
+ *
|
|
|
+ * @param courseTargetWordDtoList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ protected TableRenderData buildTable3(List<CourseTargetWordDto> courseTargetWordDtoList) {
|
|
|
+ RowRenderData header3_1 = Rows.of("序号", "项目", "考核内容及要求", "目标分值", "对应的课程目标").bgColor("F2F2F2").center().create();
|
|
|
+ String tableFootTitle3 = "合计${usualScoreSum}分,占课程总评成绩的${usualScoreSumWeight}%";
|
|
|
+ List<CourseTargetTableBean3> courseTargetTableBean3List = new ArrayList<>();
|
|
|
+ BigDecimal usualScoreSum3 = new BigDecimal(0), usualScoreTargetSumWeight3 = new BigDecimal(0);
|
|
|
+ Integer seq3 = 0;
|
|
|
+ for (CourseTargetWordDto courseTargetWordDto : courseTargetWordDtoList) {
|
|
|
+ UsualScoreWordDto usualScoreWordDto = courseTargetWordDto.getUsualScoreDto();
|
|
|
+ List<ReportEvaluationDto> reportEvaluationDtoList = usualScoreWordDto.getUsualScoreDetailList();
|
|
|
+ for (int i = 0; i < reportEvaluationDtoList.size(); i++) {
|
|
|
+ ReportEvaluationDto reportEvaluationDto = reportEvaluationDtoList.get(i);
|
|
|
+ CourseTargetTableBean3 courseTargetTableBean3 = new CourseTargetTableBean3(seq3++, reportEvaluationDto.getEvaluation(), reportEvaluationDto.getEvaluationDesc(), reportEvaluationDto.getTargetScore(), courseTargetWordDto.getTargetName());
|
|
|
+ courseTargetTableBean3List.add(courseTargetTableBean3);
|
|
|
+ }
|
|
|
+ usualScoreSum3 = usualScoreSum3.add(usualScoreWordDto.getUsualScoreTargetSumScore());
|
|
|
+ usualScoreTargetSumWeight3 = usualScoreTargetSumWeight3.add(usualScoreWordDto.getUsualScoreTargetSumWeight());
|
|
|
+ }
|
|
|
+ usualScoreTargetSumWeight3 = usualScoreTargetSumWeight3.divide(new BigDecimal(courseTargetWordDtoList.size()), 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ tableFootTitle3 = tableFootTitle3.replace("${usualScoreSum}", usualScoreSum3.toString());
|
|
|
+ tableFootTitle3 = tableFootTitle3.replace("${usualScoreSumWeight}", usualScoreTargetSumWeight3.toString());
|
|
|
+
|
|
|
+ RowRenderData[] rowRenderData3 = new RowRenderData[courseTargetTableBean3List.size() + 2];
|
|
|
+ for (int i = 0; i < courseTargetTableBean3List.size(); i++) {
|
|
|
+ CourseTargetTableBean3 courseTargetTableBean3 = courseTargetTableBean3List.get(i);
|
|
|
+ rowRenderData3[i + 1] = Rows.of(courseTargetTableBean3.getNum().toString(), courseTargetTableBean3.getProject(), courseTargetTableBean3.getContent(), courseTargetTableBean3.getTarget().toString(), courseTargetTableBean3.getCourseTarget()).rowStyle(this.getRowStyle()).create();
|
|
|
+ }
|
|
|
+ rowRenderData3[0] = header3_1;
|
|
|
+ RowRenderData header3_foot = Rows.of(tableFootTitle3, "", "", "", "").center().create();
|
|
|
+ rowRenderData3[rowRenderData3.length - 1] = header3_foot;
|
|
|
+
|
|
|
+ // 表格合并,根据坐标
|
|
|
+ MergeCellRule mergeCellRule3 = MergeCellRule.builder().map(MergeCellRule.Grid.of(rowRenderData3.length - 1, 0), MergeCellRule.Grid.of(rowRenderData3.length - 1, 4)).
|
|
|
+ build();
|
|
|
+
|
|
|
+ Tables.TableBuilder tableBuilder3 = Tables.ofPercentWidth("100%");
|
|
|
+ for (int i = 0; i < rowRenderData3.length; i++) {
|
|
|
+ tableBuilder3.addRow(rowRenderData3[i]);
|
|
|
+ }
|
|
|
+ return tableBuilder3.mergeRule(mergeCellRule3).left().create();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建word动态表格4
|
|
|
+ *
|
|
|
+ * @param courseTargetWordDtoList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ protected TableRenderData buildTable4(List<CourseTargetWordDto> courseTargetWordDtoList) {
|
|
|
+ RowRenderData header4_1 = Rows.of("序号", "考核项目", "考核内容所涵盖的知识单元", "目标分值", "对应的课程目标").bgColor("F2F2F2").center().create();
|
|
|
+ List<CourseTargetTableBean4> courseTargetTableBean4List = new ArrayList<>();
|
|
|
+ BigDecimal finalScoreSum4 = new BigDecimal(0), finalScoreTargetSumWeight4 = new BigDecimal(0);
|
|
|
+ Integer seq4 = 0;
|
|
|
+ for (int i = 0; i < courseTargetWordDtoList.size(); i++) {
|
|
|
+ CourseTargetWordDto courseTargetWordDto = courseTargetWordDtoList.get(i);
|
|
|
+ FinalScoreWordDto finalScoreWordDto = courseTargetWordDto.getFinalScoreDto();
|
|
|
+ finalScoreSum4 = finalScoreSum4.add(finalScoreWordDto.getFinalScoreTargetSumScore());
|
|
|
+ finalScoreTargetSumWeight4 = finalScoreTargetSumWeight4.add(finalScoreWordDto.getFinalScoreSumWeight());
|
|
|
+ List<DimensionDto> dimensionDtoList = courseTargetWordDto.getFinalScoreDto().getDimensionList();
|
|
|
+ for (DimensionDto dimensionDto : dimensionDtoList) {
|
|
|
+ CourseTargetTableBean4 courseTargetTableBean4 = new CourseTargetTableBean4(seq4++, courseTargetWordDto.getGraduationRequirement(), dimensionDto.getDimensionName(), dimensionDto.getDimensionScore(), courseTargetWordDto.getTargetName());
|
|
|
+ courseTargetTableBean4List.add(courseTargetTableBean4);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ finalScoreTargetSumWeight4 = finalScoreTargetSumWeight4.divide(new BigDecimal(courseTargetWordDtoList.size()), 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ String tableFootTitle4 = "合计${dimensionScoreSum}分,占课程总评成绩的${dimensionSumWeight}%";
|
|
|
+ tableFootTitle4 = tableFootTitle4.replace("${dimensionScoreSum}", finalScoreSum4.toString());
|
|
|
+ tableFootTitle4 = tableFootTitle4.replace("${dimensionSumWeight}", finalScoreTargetSumWeight4.toString());
|
|
|
+
|
|
|
+ RowRenderData[] rowRenderData4 = new RowRenderData[courseTargetTableBean4List.size() + 2];
|
|
|
+ for (int i = 0; i < courseTargetTableBean4List.size(); i++) {
|
|
|
+ CourseTargetTableBean4 courseTargetTableBean4 = courseTargetTableBean4List.get(i);
|
|
|
+ rowRenderData4[i + 1] = Rows.of(courseTargetTableBean4.getNum().toString(), courseTargetTableBean4.getProject(), courseTargetTableBean4.getContent(), courseTargetTableBean4.getTargetScore().toString(), courseTargetTableBean4.getCourseTarget()).rowStyle(this.getRowStyle()).create();
|
|
|
+ }
|
|
|
+ rowRenderData4[0] = header4_1;
|
|
|
+ RowRenderData header4_foot = Rows.of(tableFootTitle4, "", "", "", "").center().create();
|
|
|
+ rowRenderData4[rowRenderData4.length - 1] = header4_foot;
|
|
|
+
|
|
|
+ // 表格合并,根据坐标
|
|
|
+ MergeCellRule mergeCellRule4 = MergeCellRule.builder().map(MergeCellRule.Grid.of(rowRenderData4.length - 1, 0), MergeCellRule.Grid.of(rowRenderData4.length - 1, 4)).
|
|
|
+ build();
|
|
|
+
|
|
|
+ Tables.TableBuilder tableBuilder4 = Tables.ofPercentWidth("100%");
|
|
|
+ for (int i = 0; i < rowRenderData4.length; i++) {
|
|
|
+ tableBuilder4.addRow(rowRenderData4[i]);
|
|
|
+ }
|
|
|
+ return tableBuilder4.mergeRule(mergeCellRule4).left().create();
|
|
|
+ }
|
|
|
}
|