|
@@ -1,6 +1,7 @@
|
|
package com.qmth.distributed.print.api;
|
|
package com.qmth.distributed.print.api;
|
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -43,6 +44,10 @@ import javax.validation.constraints.Min;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
+import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
+import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
+import java.util.function.Function;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
* <p>
|
|
* <p>
|
|
@@ -150,6 +155,7 @@ public class TRBasicInfoController {
|
|
@ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) throws IOException {
|
|
@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));
|
|
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, "没有报告信息");
|
|
|
|
+ Objects.requireNonNull(trBasicInfo.getCourseEvaluationResultDetail(), "没有课程目标信息");
|
|
|
|
|
|
String period = Objects.nonNull(trBasicInfo.getPeriod()) ? trBasicInfo.getPeriod() : null;
|
|
String period = Objects.nonNull(trBasicInfo.getPeriod()) ? trBasicInfo.getPeriod() : null;
|
|
String credit = Objects.nonNull(trBasicInfo.getCredit()) ? trBasicInfo.getCredit() : null;
|
|
String credit = Objects.nonNull(trBasicInfo.getCredit()) ? trBasicInfo.getCredit() : null;
|
|
@@ -162,35 +168,61 @@ public class TRBasicInfoController {
|
|
|
|
|
|
CourseReportBean courseReportBean = new CourseReportBean(trBasicInfo.getOpenTime() + "《测试输出报告》", courseBasicBean);
|
|
CourseReportBean courseReportBean = new CourseReportBean(trBasicInfo.getOpenTime() + "《测试输出报告》", courseBasicBean);
|
|
|
|
|
|
|
|
+ List<ReportCourseTargetDto> reportCourseTargetDtoList = JSONArray.parseArray(trBasicInfo.getCourseEvaluationResultDetail(), ReportCourseTargetDto.class);
|
|
|
|
+ Map<Long, ReportCourseTargetDto> courseTargetValueDtoMap = reportCourseTargetDtoList.stream().collect(Collectors.toMap(ReportCourseTargetDto::getTargetId, Function.identity(), (dto1, dto2) -> dto1));
|
|
|
|
+
|
|
//table1
|
|
//table1
|
|
RowRenderData header1 = Rows.of("课程目标", "毕业要求指标点").bgColor("F2F2F2").center().create();
|
|
RowRenderData header1 = Rows.of("课程目标", "毕业要求指标点").bgColor("F2F2F2").center().create();
|
|
Tables.TableBuilder tableBuilder1 = Tables.ofPercentWidth("100%");
|
|
Tables.TableBuilder tableBuilder1 = Tables.ofPercentWidth("100%");
|
|
tableBuilder1.addRow(header1);
|
|
tableBuilder1.addRow(header1);
|
|
- Map<String, Integer> courseTargetMap = new LinkedHashMap<>();
|
|
|
|
- for (int i = 0; i < 2; i++) {
|
|
|
|
- CourseTargetTableBean1 courseTargetTableBean1 = new CourseTargetTableBean1("课程目标" + (i + 1), "完成目标" + (i + 1));
|
|
|
|
|
|
+
|
|
|
|
+ Map<String, Long> courseTargetMap = new LinkedHashMap<>();
|
|
|
|
+ List<String> header2_1List = new ArrayList<>(Arrays.asList("课程目标", "支撑毕业要求")), header2_2List = new ArrayList<>();
|
|
|
|
+ header2_2List.addAll(header2_1List);
|
|
|
|
+ header2_1List.add("考核/评价环节及目标分值");
|
|
|
|
+
|
|
|
|
+ courseTargetValueDtoMap.forEach((k, v) -> {
|
|
|
|
+ CourseTargetValueDto courseTargetValueDto = v.getCourseTargetValueDto();
|
|
|
|
+ Map<String, BigDecimal> usualScoreWeightMap = courseTargetValueDto.getUsualScoreWeight();
|
|
|
|
+ usualScoreWeightMap.forEach((k1, v1) -> {
|
|
|
|
+ header2_1List.add("");
|
|
|
|
+ header2_2List.add(k1);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ CourseTargetTableBean1 courseTargetTableBean1 = new CourseTargetTableBean1(courseTargetValueDto.getTargetName(), courseTargetValueDto.getGraduationRequirement());
|
|
RowRenderData row = Rows.of(courseTargetTableBean1.getName(), courseTargetTableBean1.getTarget()).rowStyle(this.getRowStyle()).create();
|
|
RowRenderData row = Rows.of(courseTargetTableBean1.getName(), courseTargetTableBean1.getTarget()).rowStyle(this.getRowStyle()).create();
|
|
tableBuilder1.addRow(row);
|
|
tableBuilder1.addRow(row);
|
|
- courseTargetMap.put(courseTargetTableBean1.getName(), i + 1);
|
|
|
|
- }
|
|
|
|
|
|
+ courseTargetMap.put(courseTargetTableBean1.getName(), k);
|
|
|
|
+ });
|
|
|
|
+ header2_1List.add("目标分值统计");
|
|
|
|
+ header2_2List.add("期末考试");
|
|
|
|
+ header2_2List.add("目标分值统计");
|
|
|
|
+
|
|
TableRenderData tableRenderData1 = tableBuilder1.left().create();
|
|
TableRenderData tableRenderData1 = tableBuilder1.left().create();
|
|
courseReportBean.setCourseTargetTable1(tableRenderData1);
|
|
courseReportBean.setCourseTargetTable1(tableRenderData1);
|
|
|
|
|
|
- //table2
|
|
|
|
- RowRenderData header2_1 = Rows.of("课程目标", "支撑毕业要求", "考核/评价环节及目标分值", "", "", "", "目标分值统计").bgColor("F2F2F2").center().create();
|
|
|
|
- RowRenderData header2_2 = Rows.of("课程目标", "支撑毕业要求", "平时表现", "课后作业", "课程实验", "期末考试", "目标分值统计").bgColor("F2F2F2").center().create();
|
|
|
|
|
|
+ //TODO 等待曹子轩接口table2
|
|
|
|
+ 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();
|
|
|
|
|
|
List<CourseTargetTableBean2> courseTargetTableBean2List = new ArrayList<>();
|
|
List<CourseTargetTableBean2> courseTargetTableBean2List = new ArrayList<>();
|
|
- BigDecimal bigDecimalExpressionSum = new BigDecimal(0), homeworkSum = new BigDecimal(0), testSum = new BigDecimal(0), examSum = new BigDecimal(0), targetSum2 = new BigDecimal(0);
|
|
|
|
- for (int i = 0; i < 2; i++) {
|
|
|
|
- CourseTargetTableBean2 courseTargetTableBean2 = new CourseTargetTableBean2("课程目标" + (i + 1), "考核目标" + (i + 1), new BigDecimal(i + 2), new BigDecimal(i + 3), new BigDecimal(i + 4), new BigDecimal(i + 5), new BigDecimal(i + 10));
|
|
|
|
- bigDecimalExpressionSum = bigDecimalExpressionSum.add(courseTargetTableBean2.getExpression());
|
|
|
|
- homeworkSum = homeworkSum.add(courseTargetTableBean2.getHomework());
|
|
|
|
- testSum = testSum.add(courseTargetTableBean2.getTest());
|
|
|
|
- examSum = examSum.add(courseTargetTableBean2.getExam());
|
|
|
|
- targetSum2 = targetSum2.add(courseTargetTableBean2.getTargetSum());
|
|
|
|
|
|
+ AtomicReference<BigDecimal> bigDecimalExpressionSum = new AtomicReference<>(new BigDecimal(0));
|
|
|
|
+ AtomicReference<BigDecimal> homeworkSum = new AtomicReference<>(new BigDecimal(0));
|
|
|
|
+ AtomicReference<BigDecimal> testSum = new AtomicReference<>(new BigDecimal(0));
|
|
|
|
+ AtomicReference<BigDecimal> examSum = new AtomicReference<>(new BigDecimal(0));
|
|
|
|
+ AtomicReference<BigDecimal> targetSum2 = new AtomicReference<>(new BigDecimal(0));
|
|
|
|
+ AtomicInteger atomicReference = new AtomicInteger(0);
|
|
|
|
+ courseTargetValueDtoMap.forEach((k, v) -> {
|
|
|
|
+ CourseTargetValueDto courseTargetValueDto = v.getCourseTargetValueDto();
|
|
|
|
+ CourseTargetTableBean2 courseTargetTableBean2 = new CourseTargetTableBean2(courseTargetValueDto.getTargetName(), courseTargetValueDto.getGraduationRequirement(), new BigDecimal(atomicReference.get() + 2), new BigDecimal(atomicReference.get() + 3), new BigDecimal(atomicReference.get() + 4), new BigDecimal(atomicReference.get() + 5), new BigDecimal(atomicReference.get() + 10));
|
|
|
|
+ bigDecimalExpressionSum.set(bigDecimalExpressionSum.get().add(courseTargetTableBean2.getExpression()));
|
|
|
|
+ homeworkSum.set(homeworkSum.get().add(courseTargetTableBean2.getHomework()));
|
|
|
|
+ testSum.set(testSum.get().add(courseTargetTableBean2.getTest()));
|
|
|
|
+ examSum.set(examSum.get().add(courseTargetTableBean2.getExam()));
|
|
|
|
+ targetSum2.set(targetSum2.get().add(courseTargetTableBean2.getTargetSum()));
|
|
courseTargetTableBean2List.add(courseTargetTableBean2);
|
|
courseTargetTableBean2List.add(courseTargetTableBean2);
|
|
- }
|
|
|
|
|
|
+ atomicReference.decrementAndGet();
|
|
|
|
+ });
|
|
|
|
|
|
RowRenderData[] rowRenderData2 = new RowRenderData[courseTargetTableBean2List.size() + 3];
|
|
RowRenderData[] rowRenderData2 = new RowRenderData[courseTargetTableBean2List.size() + 3];
|
|
for (int i = 0; i < courseTargetTableBean2List.size(); i++) {
|
|
for (int i = 0; i < courseTargetTableBean2List.size(); i++) {
|
|
@@ -222,7 +254,7 @@ public class TRBasicInfoController {
|
|
// .left().create();
|
|
// .left().create();
|
|
courseReportBean.setCourseTargetTable2(tableRenderData2);
|
|
courseReportBean.setCourseTargetTable2(tableRenderData2);
|
|
|
|
|
|
- //table3
|
|
|
|
|
|
+ //TODO 等待曹子轩接口table3
|
|
RowRenderData header3_1 = Rows.of("序号", "项目", "考核内容及要求", "目标分值", "对应的课程目标").bgColor("F2F2F2").center().create();
|
|
RowRenderData header3_1 = Rows.of("序号", "项目", "考核内容及要求", "目标分值", "对应的课程目标").bgColor("F2F2F2").center().create();
|
|
List<CourseTargetTableBean3> courseTargetTableBean3List = new ArrayList<>();
|
|
List<CourseTargetTableBean3> courseTargetTableBean3List = new ArrayList<>();
|
|
BigDecimal targetSum3 = new BigDecimal(0);
|
|
BigDecimal targetSum3 = new BigDecimal(0);
|