|
@@ -15,10 +15,7 @@ import com.qmth.distributed.print.business.bean.result.FinalScoreResult;
|
|
import com.qmth.distributed.print.business.bean.result.ObeCourseWeightResult;
|
|
import com.qmth.distributed.print.business.bean.result.ObeCourseWeightResult;
|
|
import com.qmth.distributed.print.business.bean.result.report.PaperStructDimensionResult;
|
|
import com.qmth.distributed.print.business.bean.result.report.PaperStructDimensionResult;
|
|
import com.qmth.distributed.print.business.bean.result.report.word.CourseReportBean;
|
|
import com.qmth.distributed.print.business.bean.result.report.word.CourseReportBean;
|
|
-import com.qmth.distributed.print.business.entity.ObeCourseOutline;
|
|
|
|
-import com.qmth.distributed.print.business.entity.TCPaperStruct;
|
|
|
|
-import com.qmth.distributed.print.business.entity.TRBasicInfo;
|
|
|
|
-import com.qmth.distributed.print.business.entity.TRExamStudent;
|
|
|
|
|
|
+import com.qmth.distributed.print.business.entity.*;
|
|
import com.qmth.distributed.print.business.mapper.TRBasicInfoMapper;
|
|
import com.qmth.distributed.print.business.mapper.TRBasicInfoMapper;
|
|
import com.qmth.distributed.print.business.service.*;
|
|
import com.qmth.distributed.print.business.service.*;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
@@ -87,6 +84,12 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
@Resource
|
|
@Resource
|
|
ObeCourseOutlineService obeCourseOutlineService;
|
|
ObeCourseOutlineService obeCourseOutlineService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ ObeCultureProgramService obeCultureProgramService;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ BasicProfessionalService basicProfessionalService;
|
|
|
|
+
|
|
protected static final String tbBgColor = "F2F2F2";
|
|
protected static final String tbBgColor = "F2F2F2";
|
|
protected static final String tbPercentWidth = "100%";
|
|
protected static final String tbPercentWidth = "100%";
|
|
|
|
|
|
@@ -433,17 +436,22 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
BasicSemester basicSemester = basicSemesterService.getById(obeCourseOutline.getSemesterId());
|
|
BasicSemester basicSemester = basicSemesterService.getById(obeCourseOutline.getSemesterId());
|
|
Objects.requireNonNull(basicSemester, "未找到学期信息");
|
|
Objects.requireNonNull(basicSemester, "未找到学期信息");
|
|
|
|
|
|
- String teachingObject = null, teacher = null;
|
|
|
|
|
|
+ String teachingObject = Objects.nonNull(trBasicInfo) ? trBasicInfo.getTeachingObject() : null, teacher = null;
|
|
if (Objects.nonNull(markPaper.getPaperNumber())) {
|
|
if (Objects.nonNull(markPaper.getPaperNumber())) {
|
|
ExamStudentDto examStudentDto = examStudentService.queryExamStudent(markPaper.getExamId(), markPaper.getCourseCode(), markPaper.getPaperNumber());
|
|
ExamStudentDto examStudentDto = examStudentService.queryExamStudent(markPaper.getExamId(), markPaper.getCourseCode(), markPaper.getPaperNumber());
|
|
- teachingObject = Objects.nonNull(examStudentDto) ? examStudentDto.getClazzNames() : null;
|
|
|
|
|
|
+// teachingObject = Objects.nonNull(examStudentDto) ? examStudentDto.getClazzNames() : null;
|
|
teacher = Objects.nonNull(examStudentDto) ? examStudentDto.getTeacherNames() : null;
|
|
teacher = Objects.nonNull(examStudentDto) ? examStudentDto.getTeacherNames() : null;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ ObeCultureProgram obeCultureProgram = obeCultureProgramService.getById(obeCourseOutline.getCultureProgramId());
|
|
|
|
+ Objects.requireNonNull(obeCultureProgram, "未找到培养方案信息");
|
|
|
|
+ BasicProfessional basicProfessional = basicProfessionalService.getById(obeCultureProgram.getProfessionalId());
|
|
|
|
+ Objects.requireNonNull(basicProfessional, "未找到专业信息");
|
|
|
|
+ Double expectValue = obeCourseWeightResult.getSubmitForm().get(0).getExpectValue();
|
|
if (Objects.isNull(trBasicInfo)) {
|
|
if (Objects.isNull(trBasicInfo)) {
|
|
- trBasicInfo = new TRBasicInfo(cultureProgramId, basicCourseService.findByCourseCode(markPaper.getCourseCode(), basicSemester.getSchoolId()).getId(), markPaper.getCourseCode(), markPaper.getCourseName(), markPaper.getPaperNumber(), basicSemester.getName(), teachingObject, teacher, null, userId);
|
|
|
|
|
|
+ trBasicInfo = new TRBasicInfo(cultureProgramId, courseId, markPaper.getCourseCode(), markPaper.getCourseName(), markPaper.getPaperNumber(), basicSemester.getName(), teachingObject, teacher, null, userId, basicProfessional.getName(), Objects.nonNull(trBasicInfo) ? trBasicInfo.getFinishPoints() : null, Objects.nonNull(trBasicInfo) ? trBasicInfo.getRequirementPoints() : null, Objects.nonNull(trBasicInfo) ? trBasicInfo.getCourseSuggest() : null, expectValue, Objects.nonNull(trBasicInfo) ? trBasicInfo.getCourseEnName() : null);
|
|
} else {
|
|
} else {
|
|
- trBasicInfo.setBasicInfo(markPaper.getExamId(), markPaper.getCourseCode(), markPaper.getCourseName(), markPaper.getPaperNumber(), basicSemester.getName(), teachingObject, teacher, null, cultureProgramId, courseId);
|
|
|
|
|
|
+ trBasicInfo.setBasicInfo(markPaper.getExamId(), markPaper.getCourseCode(), markPaper.getCourseName(), markPaper.getPaperNumber(), basicSemester.getName(), teachingObject, teacher, null, cultureProgramId, courseId, expectValue, basicProfessional.getName(), trBasicInfo.getCourseEnName(), trBasicInfo.getCollege(), trBasicInfo.getFinishPoints(), trBasicInfo.getRequirementPoints(), trBasicInfo.getCourseSuggest());
|
|
}
|
|
}
|
|
//课程基本情况
|
|
//课程基本情况
|
|
ReportCourseBasicInfoDto reportCourseBasicInfoDto = new ReportCourseBasicInfoDto(trBasicInfo);
|
|
ReportCourseBasicInfoDto reportCourseBasicInfoDto = new ReportCourseBasicInfoDto(trBasicInfo);
|
|
@@ -518,7 +526,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
|
|
|
|
for (int i = 0; i < courseTargetWordDtoList.size(); i++) {
|
|
for (int i = 0; i < courseTargetWordDtoList.size(); i++) {
|
|
CourseTargetWordDto courseTargetWordDto = courseTargetWordDtoList.get(i);
|
|
CourseTargetWordDto courseTargetWordDto = courseTargetWordDtoList.get(i);
|
|
- RowRenderData row = Rows.of(courseTargetWordDto.getTargetName(), courseTargetWordDto.getGraduationRequirement(), courseTargetWordDto.getGraduationRequirementPoint()).rowStyle(this.getRowStyle()).create();
|
|
|
|
|
|
+ RowRenderData row = Rows.of(courseTargetWordDto.getTargetName(), courseTargetWordDto.getParentRequirementName(), courseTargetWordDto.getObeCultureProgramRequirementName()).rowStyle(this.getRowStyle()).create();
|
|
tableBuilder1.addRow(row);
|
|
tableBuilder1.addRow(row);
|
|
}
|
|
}
|
|
return tableBuilder1.left().create();
|
|
return tableBuilder1.left().create();
|
|
@@ -758,7 +766,10 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
@Override
|
|
@Override
|
|
public TableRenderData buildWordTable5(TRBasicInfo trBasicInfo, CourseReportBean courseReportBean) {
|
|
public TableRenderData buildWordTable5(TRBasicInfo trBasicInfo, CourseReportBean courseReportBean) {
|
|
TableRenderData tableRenderDataExamStudent = null;
|
|
TableRenderData tableRenderDataExamStudent = null;
|
|
- List<TRExamStudent> trExamStudentList = trExamStudentService.list(new QueryWrapper<TRExamStudent>().lambda().eq(TRExamStudent::getrBasicInfoId, trBasicInfo.getId()));
|
|
|
|
|
|
+ List<TRExamStudent> trExamStudentList = trExamStudentService.list(new QueryWrapper<TRExamStudent>().lambda()
|
|
|
|
+ .eq(TRExamStudent::getrBasicInfoId, trBasicInfo.getId()).and(w -> w.ne(TRExamStudent::getStudentCode, "目标分")
|
|
|
|
+// .ne(TRExamStudent::getStudentCode, "各课程目标平均分")
|
|
|
|
+ ));
|
|
if (!CollectionUtils.isEmpty(trExamStudentList)) {
|
|
if (!CollectionUtils.isEmpty(trExamStudentList)) {
|
|
List<CellRenderData> examStudent_cells_1 = new ArrayList<>(), examStudent_cells_2 = new ArrayList<>();
|
|
List<CellRenderData> examStudent_cells_1 = new ArrayList<>(), examStudent_cells_2 = new ArrayList<>();
|
|
examStudent_cells_1.add(Cells.of("序号").center().create());
|
|
examStudent_cells_1.add(Cells.of("序号").center().create());
|
|
@@ -768,9 +779,10 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
examStudent_cells_2.addAll(examStudent_cells_1);
|
|
examStudent_cells_2.addAll(examStudent_cells_1);
|
|
|
|
|
|
Map<Long, Integer> targetUsualScoreSizeMap = new LinkedHashMap<>();
|
|
Map<Long, Integer> targetUsualScoreSizeMap = new LinkedHashMap<>();
|
|
|
|
+ Map<Long, BigDecimal> targetCourseDegreeMap = new LinkedHashMap<>();
|
|
TRExamStudent trExamStudentTemp = trExamStudentList.get(0);
|
|
TRExamStudent trExamStudentTemp = trExamStudentList.get(0);
|
|
|
|
|
|
- RowRenderData[] rowRenderDataExamStudent = new RowRenderData[trExamStudentList.size() + 2];
|
|
|
|
|
|
+ RowRenderData[] rowRenderDataExamStudent = new RowRenderData[trExamStudentList.size() + 3];
|
|
RowRenderData examStudent_header_1 = new RowRenderData();
|
|
RowRenderData examStudent_header_1 = new RowRenderData();
|
|
examStudent_header_1.setCells(examStudent_cells_1);
|
|
examStudent_header_1.setCells(examStudent_cells_1);
|
|
examStudent_header_1.setRowStyle(this.getHeadRowStyle());
|
|
examStudent_header_1.setRowStyle(this.getHeadRowStyle());
|
|
@@ -790,6 +802,12 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
} else {
|
|
} else {
|
|
targetUsualScoreSizeMap.put(c.getTargetId(), 0);
|
|
targetUsualScoreSizeMap.put(c.getTargetId(), 0);
|
|
}
|
|
}
|
|
|
|
+ targetCourseDegreeMap.put(c.getTargetId(), c.getEvaluationValue());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Double courseDegree = 0.0d;
|
|
|
|
+ if (!CollectionUtils.isEmpty(targetCourseDegreeMap)) {
|
|
|
|
+ courseDegree = targetCourseDegreeMap.values().stream().mapToDouble(b -> b.doubleValue()).min().orElse(0);
|
|
}
|
|
}
|
|
//首行
|
|
//首行
|
|
if (Objects.nonNull(trExamStudentTemp.getResultDetail())) {
|
|
if (Objects.nonNull(trExamStudentTemp.getResultDetail())) {
|
|
@@ -823,25 +841,26 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
examStudent_cells_2.add(Cells.of("综合成绩").center().create());
|
|
examStudent_cells_2.add(Cells.of("综合成绩").center().create());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ List<Double> scoreList = new ArrayList<>();
|
|
for (int i = 0; i < trExamStudentList.size(); i++) {
|
|
for (int i = 0; i < trExamStudentList.size(); i++) {
|
|
TRExamStudent trExamStudent = trExamStudentList.get(i);
|
|
TRExamStudent trExamStudent = trExamStudentList.get(i);
|
|
RowRenderData examStudent_row = new RowRenderData();
|
|
RowRenderData examStudent_row = new RowRenderData();
|
|
List<CellRenderData> examStudent_cells = new ArrayList<>();
|
|
List<CellRenderData> examStudent_cells = new ArrayList<>();
|
|
switch (trExamStudent.getName()) {
|
|
switch (trExamStudent.getName()) {
|
|
- case "目标分":
|
|
|
|
- examStudent_cells.add(Cells.of("课程目标考核要素的目标分").create());
|
|
|
|
- examStudent_cells.add(Cells.of("课程目标考核要素的目标分").create());
|
|
|
|
- examStudent_cells.add(Cells.of("课程目标考核要素的目标分").create());
|
|
|
|
- break;
|
|
|
|
|
|
+// case "目标分":
|
|
|
|
+// examStudent_cells.add(Cells.of("课程目标考核要素的目标分").create());
|
|
|
|
+// examStudent_cells.add(Cells.of("课程目标考核要素的目标分").create());
|
|
|
|
+// examStudent_cells.add(Cells.of("课程目标考核要素的目标分").create());
|
|
|
|
+// break;
|
|
case "平均分":
|
|
case "平均分":
|
|
- examStudent_cells.add(Cells.of("课程目标考核要素的平均分").create());
|
|
|
|
- examStudent_cells.add(Cells.of("课程目标考核要素的平均分").create());
|
|
|
|
- examStudent_cells.add(Cells.of("课程目标考核要素的平均分").create());
|
|
|
|
|
|
+ examStudent_cells.add(Cells.of("平均分").create());
|
|
|
|
+ examStudent_cells.add(Cells.of("平均分").create());
|
|
|
|
+ examStudent_cells.add(Cells.of("平均分").create());
|
|
break;
|
|
break;
|
|
case "各课程目标平均分":
|
|
case "各课程目标平均分":
|
|
- examStudent_cells.add(Cells.of(trExamStudent.getName()).create());
|
|
|
|
- examStudent_cells.add(Cells.of(trExamStudent.getStudentCode()).create());
|
|
|
|
- examStudent_cells.add(Cells.of(trExamStudent.getName()).create());
|
|
|
|
|
|
+ examStudent_cells.add(Cells.of("课程目标达成度").create());
|
|
|
|
+ examStudent_cells.add(Cells.of("课程目标达成度").create());
|
|
|
|
+ examStudent_cells.add(Cells.of("课程目标达成度").create());
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
examStudent_cells.add(Cells.of(String.valueOf(i + 1)).create());
|
|
examStudent_cells.add(Cells.of(String.valueOf(i + 1)).create());
|
|
@@ -851,7 +870,8 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
}
|
|
}
|
|
examStudent_cells.add(Cells.of(trExamStudent.getAdministrativeClass()).create());
|
|
examStudent_cells.add(Cells.of(trExamStudent.getAdministrativeClass()).create());
|
|
|
|
|
|
- BigDecimal targetSumScore = new BigDecimal(0), targetAvgScore = new BigDecimal(0);
|
|
|
|
|
|
+// BigDecimal targetSumScore = new BigDecimal(0),
|
|
|
|
+ BigDecimal targetAvgScore = new BigDecimal(0);
|
|
if (Objects.nonNull(trExamStudent.getResultDetail())) {
|
|
if (Objects.nonNull(trExamStudent.getResultDetail())) {
|
|
List<ReportExamStudentTargetDto> reportExamStudentTargetDtoList = JSONArray.parseArray(trExamStudent.getResultDetail(), ReportExamStudentTargetDto.class);
|
|
List<ReportExamStudentTargetDto> reportExamStudentTargetDtoList = JSONArray.parseArray(trExamStudent.getResultDetail(), ReportExamStudentTargetDto.class);
|
|
for (ReportExamStudentTargetDto reportExamStudentTargetDto : reportExamStudentTargetDtoList) {
|
|
for (ReportExamStudentTargetDto reportExamStudentTargetDto : reportExamStudentTargetDtoList) {
|
|
@@ -863,16 +883,16 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList();
|
|
List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList();
|
|
for (ReportExamStudentUsualScoreObjDto reportExamStudentUsualScoreObjDto : reportExamStudentUsualScoreObjDtoList) {
|
|
for (ReportExamStudentUsualScoreObjDto reportExamStudentUsualScoreObjDto : reportExamStudentUsualScoreObjDtoList) {
|
|
switch (trExamStudent.getName()) {
|
|
switch (trExamStudent.getName()) {
|
|
- case "目标分":
|
|
|
|
- examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentUsualScoreObjDto.getTargetScore())).create());
|
|
|
|
- targetSumScore = targetSumScore.add(reportExamStudentUsualScoreObjDto.getTargetScore());
|
|
|
|
- break;
|
|
|
|
|
|
+// case "目标分":
|
|
|
|
+// examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentUsualScoreObjDto.getTargetScore())).create());
|
|
|
|
+// targetSumScore = targetSumScore.add(reportExamStudentUsualScoreObjDto.getTargetScore());
|
|
|
|
+// break;
|
|
case "平均分":
|
|
case "平均分":
|
|
examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentUsualScoreObjDto.getMatrixAvgScore())).create());
|
|
examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentUsualScoreObjDto.getMatrixAvgScore())).create());
|
|
targetAvgScore = targetAvgScore.add(new BigDecimal(reportExamStudentUsualScoreObjDto.getMatrixAvgScore()));
|
|
targetAvgScore = targetAvgScore.add(new BigDecimal(reportExamStudentUsualScoreObjDto.getMatrixAvgScore()));
|
|
break;
|
|
break;
|
|
case "各课程目标平均分":
|
|
case "各课程目标平均分":
|
|
- examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentTargetDto.getTargetMatrixAvgScore())).create());
|
|
|
|
|
|
+ examStudent_cells.add(Cells.of(targetCourseDegreeMap.get(reportExamStudentTargetDto.getTargetId()) + "").create());
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentUsualScoreObjDto.getScore())).create());
|
|
examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentUsualScoreObjDto.getScore())).create());
|
|
@@ -885,16 +905,16 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
if (Objects.nonNull(reportExamStudentFinalScoreDto) && Objects.equals(reportExamStudentFinalScoreDto.getEvaluation(), SystemConstant.FINAL_SCORE_STR)) {
|
|
if (Objects.nonNull(reportExamStudentFinalScoreDto) && Objects.equals(reportExamStudentFinalScoreDto.getEvaluation(), SystemConstant.FINAL_SCORE_STR)) {
|
|
courseReportBean.getCourseBasicBean().setFinalScoreWeight(reportExamStudentFinalScoreDto.getTargetWeight());
|
|
courseReportBean.getCourseBasicBean().setFinalScoreWeight(reportExamStudentFinalScoreDto.getTargetWeight());
|
|
switch (trExamStudent.getName()) {
|
|
switch (trExamStudent.getName()) {
|
|
- case "目标分":
|
|
|
|
- examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentFinalScoreDto.getTargetScore())).create());
|
|
|
|
- targetSumScore = targetSumScore.add(reportExamStudentFinalScoreDto.getTargetScore());
|
|
|
|
- break;
|
|
|
|
|
|
+// case "目标分":
|
|
|
|
+// examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentFinalScoreDto.getTargetScore())).create());
|
|
|
|
+// targetSumScore = targetSumScore.add(reportExamStudentFinalScoreDto.getTargetScore());
|
|
|
|
+// break;
|
|
case "平均分":
|
|
case "平均分":
|
|
examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentFinalScoreDto.getMatrixAvgScore())).create());
|
|
examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentFinalScoreDto.getMatrixAvgScore())).create());
|
|
targetAvgScore = targetAvgScore.add(new BigDecimal(reportExamStudentFinalScoreDto.getMatrixAvgScore()));
|
|
targetAvgScore = targetAvgScore.add(new BigDecimal(reportExamStudentFinalScoreDto.getMatrixAvgScore()));
|
|
break;
|
|
break;
|
|
case "各课程目标平均分":
|
|
case "各课程目标平均分":
|
|
- examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentTargetDto.getTargetMatrixAvgScore())).create());
|
|
|
|
|
|
+ examStudent_cells.add(Cells.of(targetCourseDegreeMap.get(reportExamStudentTargetDto.getTargetId()) + "").create());
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentFinalScoreDto.getTargetScoreSum())).create());
|
|
examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentFinalScoreDto.getTargetScoreSum())).create());
|
|
@@ -905,9 +925,9 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
}
|
|
}
|
|
}
|
|
}
|
|
switch (trExamStudent.getName()) {
|
|
switch (trExamStudent.getName()) {
|
|
- case "目标分":
|
|
|
|
- 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(targetSumScore.setScale(2, BigDecimal.ROUND_HALF_UP))).create());
|
|
|
|
+// break;
|
|
case "平均分":
|
|
case "平均分":
|
|
examStudent_cells.add(Cells.of(SystemConstant.df.format(targetAvgScore.setScale(1, BigDecimal.ROUND_DOWN))).create());
|
|
examStudent_cells.add(Cells.of(SystemConstant.df.format(targetAvgScore.setScale(1, BigDecimal.ROUND_DOWN))).create());
|
|
break;
|
|
break;
|
|
@@ -915,6 +935,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
examStudent_cells.add(Cells.of("").create());
|
|
examStudent_cells.add(Cells.of("").create());
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
|
|
+ scoreList.add(trExamStudent.getScore());
|
|
examStudent_cells.add(Cells.of(SystemConstant.df.format(trExamStudent.getScore())).create());
|
|
examStudent_cells.add(Cells.of(SystemConstant.df.format(trExamStudent.getScore())).create());
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
@@ -922,13 +943,27 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
examStudent_row.setRowStyle(this.getRowStyle());
|
|
examStudent_row.setRowStyle(this.getRowStyle());
|
|
rowRenderDataExamStudent[i + 2] = examStudent_row;
|
|
rowRenderDataExamStudent[i + 2] = examStudent_row;
|
|
}
|
|
}
|
|
|
|
+ List<CellRenderData> cellRenderData_last_cell = new ArrayList<>();
|
|
|
|
+ RowRenderData examStudent_last_row = new RowRenderData();
|
|
|
|
+ cellRenderData_last_cell.add(Cells.of("课程达成度").create());
|
|
|
|
+ cellRenderData_last_cell.add(Cells.of("课程达成度").create());
|
|
|
|
+ cellRenderData_last_cell.add(Cells.of("课程达成度").create());
|
|
|
|
+ cellRenderData_last_cell.add(Cells.of("课程达成度").create());
|
|
|
|
+
|
|
|
|
+ int cellSize = rowRenderDataExamStudent[rowRenderDataExamStudent.length - 2].getCells().size();
|
|
|
|
+ for (int i = 4; i < cellSize; i++) {
|
|
|
|
+ cellRenderData_last_cell.add(Cells.of(courseDegree + "").center().create());
|
|
|
|
+ }
|
|
|
|
+ examStudent_last_row.setCells(cellRenderData_last_cell);
|
|
|
|
+ examStudent_last_row.setRowStyle(this.getRowStyle());
|
|
|
|
+ rowRenderDataExamStudent[rowRenderDataExamStudent.length - 1] = examStudent_last_row;
|
|
|
|
|
|
- String title = Objects.nonNull(trBasicInfo.getTeachingObject()) ? trBasicInfo.getTeachingObject() : "";
|
|
|
|
- String sumTitle = "学生共${examStudentSum}名";
|
|
|
|
- sumTitle = sumTitle.replace("${examStudentSum}", trExamStudentList.size() - 3 + "");
|
|
|
|
|
|
+// String title = Objects.nonNull(trBasicInfo.getTeachingObject()) ? trBasicInfo.getTeachingObject() : "";
|
|
|
|
+// String sumTitle = "学生共${examStudentSum}名";
|
|
|
|
+// sumTitle = sumTitle.replace("${examStudentSum}", trExamStudentList.size() - 3 + "");
|
|
|
|
|
|
- courseReportBean.setExamStudentTitle1(title + sumTitle);
|
|
|
|
- courseReportBean.setExamStudentTitle2(title + "《" + courseReportBean.getCourseBasicBean().getCourseName() + "》");
|
|
|
|
|
|
+// courseReportBean.setExamStudentTitle1(title + sumTitle);
|
|
|
|
+// courseReportBean.setExamStudentTitle2(title + "《" + courseReportBean.getCourseBasicBean().getCourseName() + "》");
|
|
|
|
|
|
//表格合并,根据坐标
|
|
//表格合并,根据坐标
|
|
MergeCellRule mergeCellRuleExamStudent = MergeCellRule.builder().build();
|
|
MergeCellRule mergeCellRuleExamStudent = MergeCellRule.builder().build();
|
|
@@ -946,11 +981,12 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
int increaseNum = 1;
|
|
int increaseNum = 1;
|
|
while (increaseNum <= v) {
|
|
while (increaseNum <= v) {
|
|
mergeCellRuleExamStudent.getMapping().add(new MergeCellRule.GridRule(MergeCellRule.Grid.of(0, initNum.get()), MergeCellRule.Grid.of(0, initNum.get() + increaseNum)));
|
|
mergeCellRuleExamStudent.getMapping().add(new MergeCellRule.GridRule(MergeCellRule.Grid.of(0, initNum.get()), MergeCellRule.Grid.of(0, initNum.get() + increaseNum)));
|
|
- mergeCellRuleExamStudent.getMapping().add(new MergeCellRule.GridRule(MergeCellRule.Grid.of(rowRenderDataExamStudent.length - 1, initNum.get()), MergeCellRule.Grid.of(rowRenderDataExamStudent.length - 1, initNum.get() + increaseNum)));
|
|
|
|
|
|
+ mergeCellRuleExamStudent.getMapping().add(new MergeCellRule.GridRule(MergeCellRule.Grid.of(rowRenderDataExamStudent.length - 2, initNum.get()), MergeCellRule.Grid.of(rowRenderDataExamStudent.length - 2, initNum.get() + increaseNum)));
|
|
increaseNum++;
|
|
increaseNum++;
|
|
}
|
|
}
|
|
initNum.set(initNum.get() + increaseNum);
|
|
initNum.set(initNum.get() + increaseNum);
|
|
});
|
|
});
|
|
|
|
+ mergeCellRuleExamStudent.getMapping().add(new MergeCellRule.GridRule(MergeCellRule.Grid.of(rowRenderDataExamStudent.length - 1, 4), MergeCellRule.Grid.of(rowRenderDataExamStudent.length - 1, cellSize - 1)));
|
|
mergeCellRuleExamStudent.getMapping().add(new MergeCellRule.GridRule(MergeCellRule.Grid.of(0, rowRenderDataExamStudent[rowRenderDataExamStudent.length - 1].getCells().size() - 1), MergeCellRule.Grid.of(1, rowRenderDataExamStudent[rowRenderDataExamStudent.length - 1].getCells().size() - 1)));
|
|
mergeCellRuleExamStudent.getMapping().add(new MergeCellRule.GridRule(MergeCellRule.Grid.of(0, rowRenderDataExamStudent[rowRenderDataExamStudent.length - 1].getCells().size() - 1), MergeCellRule.Grid.of(1, rowRenderDataExamStudent[rowRenderDataExamStudent.length - 1].getCells().size() - 1)));
|
|
|
|
|
|
// Tables.TableBuilder tableBuilderExamStudent = Tables.ofPercentWidth(tbPercentWidth, new int[]{6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 16});
|
|
// Tables.TableBuilder tableBuilderExamStudent = Tables.ofPercentWidth(tbPercentWidth, new int[]{6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 16});
|
|
@@ -959,10 +995,149 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
tableBuilderExamStudent.addRow(rowRenderDataExamStudent[i]);
|
|
tableBuilderExamStudent.addRow(rowRenderDataExamStudent[i]);
|
|
}
|
|
}
|
|
tableRenderDataExamStudent = tableBuilderExamStudent.mergeRule(mergeCellRuleExamStudent).left().create();
|
|
tableRenderDataExamStudent = tableBuilderExamStudent.mergeRule(mergeCellRuleExamStudent).left().create();
|
|
|
|
+
|
|
|
|
+ if (!CollectionUtils.isEmpty(scoreList)) {
|
|
|
|
+ Integer[] scoreSizes = new Integer[]{0, 0, 0, 0, 0};
|
|
|
|
+ BigDecimal[] scorePercent = new BigDecimal[]{new BigDecimal(0), new BigDecimal(0), new BigDecimal(0), new BigDecimal(0), new BigDecimal(0)};
|
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
|
+ Double maxScore = scoreList.stream().mapToDouble(s -> s).max().orElse(0.0d);
|
|
|
|
+ Double minScore = scoreList.stream().mapToDouble(s -> s).min().orElse(0.0d);
|
|
|
|
+ Double avgScore = scoreList.stream().mapToDouble(s -> s).average().orElse(0.0d);
|
|
|
|
+ for (Double d : scoreList) {
|
|
|
|
+ if (d.doubleValue() <= 100 && d.doubleValue() >= 90) {
|
|
|
|
+ scoreSizes[0] = scoreSizes[0] + 1;
|
|
|
|
+ } else if (d.doubleValue() <= 89 && d.doubleValue() >= 80) {
|
|
|
|
+ scoreSizes[1] = scoreSizes[1] + 1;
|
|
|
|
+ } else if (d.doubleValue() <= 79 && d.doubleValue() >= 70) {
|
|
|
|
+ scoreSizes[2] = scoreSizes[2] + 1;
|
|
|
|
+ } else if (d.doubleValue() <= 69 && d.doubleValue() >= 60) {
|
|
|
|
+ scoreSizes[3] = scoreSizes[3] + 1;
|
|
|
|
+ } else {
|
|
|
|
+ scoreSizes[4] = scoreSizes[4] + 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ for (int i = 0; i < scoreSizes.length; i++) {
|
|
|
|
+ scorePercent[i] = new BigDecimal(scoreSizes[i]).divide(new BigDecimal(scoreList.size()), 2, BigDecimal.ROUND_HALF_UP).multiply(SystemConstant.PERCENT).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ }
|
|
|
|
+ map.put("scoreSizes", scoreSizes);
|
|
|
|
+ map.put("scorePercent", scorePercent);
|
|
|
|
+ map.put("maxScore", maxScore);
|
|
|
|
+ map.put("minScore", minScore);
|
|
|
|
+ map.put("avgScore", avgScore);
|
|
|
|
+ map.put("courseTargetWebDtoList", courseTargetWebDtoList);
|
|
|
|
+ courseReportBean.setCourseTargetTable6(this.buildWordTable6(map));
|
|
|
|
+ courseReportBean.setCourseTargetColumnDiagram1(this.buildCourseTargetColumnDiagram1(map));
|
|
|
|
+ courseReportBean.setCourseTargetColumnDiagram2(this.buildCourseTargetColumnDiagram2(map));
|
|
|
|
+ }
|
|
}
|
|
}
|
|
return tableRenderDataExamStudent;
|
|
return tableRenderDataExamStudent;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 构建word动态表格6
|
|
|
|
+ *
|
|
|
|
+ * @param map
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @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();
|
|
|
|
+ Double minScore = new BigDecimal((Double) map.get("minScore")).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
+ Double avgScore = new BigDecimal((Double) map.get("avgScore")).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
+
|
|
|
|
+ RowRenderData[] rowRenderData = new RowRenderData[3];
|
|
|
|
+ List<CellRenderData> cells_1 = new ArrayList<>(), cells_2 = new ArrayList<>(), cells_3 = new ArrayList<>();
|
|
|
|
+ cells_1.add(Cells.of("达成度区间").center().create());
|
|
|
|
+ cells_2.add(Cells.of("人数").create());
|
|
|
|
+ cells_3.add(Cells.of("百分比").create());
|
|
|
|
+ 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_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_3.add(Cells.of(avgScore + "").create());
|
|
|
|
+ cells_3.add(Cells.of(maxScore + "").create());
|
|
|
|
+ cells_3.add(Cells.of(minScore + "").create());
|
|
|
|
+
|
|
|
|
+ RowRenderData row_1 = new RowRenderData();
|
|
|
|
+ row_1.setCells(cells_1);
|
|
|
|
+ row_1.setRowStyle(this.getHeadRowStyle());
|
|
|
|
+
|
|
|
|
+ RowRenderData row_2 = new RowRenderData();
|
|
|
|
+ row_2.setCells(cells_2);
|
|
|
|
+ row_2.setRowStyle(this.getRowStyle());
|
|
|
|
+
|
|
|
|
+ RowRenderData row_3 = new RowRenderData();
|
|
|
|
+ row_3.setCells(cells_3);
|
|
|
|
+ row_3.setRowStyle(this.getRowStyle());
|
|
|
|
+
|
|
|
|
+ rowRenderData[0] = row_1;
|
|
|
|
+ rowRenderData[1] = row_2;
|
|
|
|
+ rowRenderData[2] = row_3;
|
|
|
|
+
|
|
|
|
+ MergeCellRule mergeCellRule6 = MergeCellRule.builder().
|
|
|
|
+ map(MergeCellRule.Grid.of(1, 6), MergeCellRule.Grid.of(2, 6)).
|
|
|
|
+ map(MergeCellRule.Grid.of(1, 7), MergeCellRule.Grid.of(2, 7)).
|
|
|
|
+ map(MergeCellRule.Grid.of(1, 8), MergeCellRule.Grid.of(2, 8)).
|
|
|
|
+ build();
|
|
|
|
+
|
|
|
|
+ Tables.TableBuilder tableBuilder6 = Tables.ofPercentWidth(tbPercentWidth);
|
|
|
|
+ for (int i = 0; i < rowRenderData.length; i++) {
|
|
|
|
+ tableBuilder6.addRow(rowRenderData[i]);
|
|
|
|
+ }
|
|
|
|
+ return tableBuilder6.mergeRule(mergeCellRule6).left().create();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 构建word图形表格1
|
|
|
|
+ *
|
|
|
|
+ * @param map
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @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)
|
|
|
|
+ .addSeries("人数", scoreSizes)
|
|
|
|
+ .create();
|
|
|
|
+ return chart;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 构建word图形表格2
|
|
|
|
+ *
|
|
|
|
+ * @param map
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public ChartMultiSeriesRenderData buildCourseTargetColumnDiagram2(Map<String, Object> map) {
|
|
|
|
+ List<CourseTargetWebDto> courseTargetWebDtoList = (List<CourseTargetWebDto>) map.get("courseTargetWebDtoList");
|
|
|
|
+ List<String> courseDegreeList = courseTargetWebDtoList.stream().map(s -> s.getTargetName()).collect(Collectors.toList());
|
|
|
|
+ List<BigDecimal> courseDegreeValueList = courseTargetWebDtoList.stream().map(s -> s.getEvaluationValue()).collect(Collectors.toList());
|
|
|
|
+ String[] courseDegreeTitle = new String[courseDegreeList.size()];
|
|
|
|
+ BigDecimal[] courseDegreeValues = new BigDecimal[courseDegreeValueList.size()];
|
|
|
|
+ courseDegreeList.toArray(courseDegreeTitle);
|
|
|
|
+ courseDegreeValueList.toArray(courseDegreeValues);
|
|
|
|
+ ChartMultiSeriesRenderData chart = Charts
|
|
|
|
+ .ofMultiSeries("课程目标达成度情况", courseDegreeTitle)
|
|
|
|
+ .addSeries("达成度", courseDegreeValues)
|
|
|
|
+ .create();
|
|
|
|
+ return chart;
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
@Transactional
|
|
@Transactional
|
|
public Boolean remove(Long cultureProgramId, Long courseId, String paperNumber) {
|
|
public Boolean remove(Long cultureProgramId, Long courseId, String paperNumber) {
|
|
@@ -987,8 +1162,8 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
// Objects.requireNonNull(obeCourseWeightResult.getCustomRate(), "未设置平时成绩权重");
|
|
// Objects.requireNonNull(obeCourseWeightResult.getCustomRate(), "未设置平时成绩权重");
|
|
// Objects.requireNonNull(obeCourseWeightResult.getDefaultRate(), "未设置期末考试权重");
|
|
// Objects.requireNonNull(obeCourseWeightResult.getDefaultRate(), "未设置期末考试权重");
|
|
|
|
|
|
-// Objects.requireNonNull(obeCourseWeightResult.getWeightSettingSign(), "课程权重变化id为空");
|
|
|
|
-// Objects.requireNonNull(obeCourseWeightResult.getDimensionSign(), "知识点变化id为空");
|
|
|
|
|
|
+ Objects.requireNonNull(obeCourseWeightResult.getWeightSettingSign(), "课程权重变化id为空");
|
|
|
|
+ Objects.requireNonNull(obeCourseWeightResult.getDimensionSign(), "知识点变化id为空");
|
|
List<CourseWeightDto> courseWeightDtoList = obeCourseWeightResult.getSubmitForm();
|
|
List<CourseWeightDto> courseWeightDtoList = obeCourseWeightResult.getSubmitForm();
|
|
if (CollectionUtils.isEmpty(courseWeightDtoList)) {
|
|
if (CollectionUtils.isEmpty(courseWeightDtoList)) {
|
|
throw ExceptionResultEnum.ERROR.exception("未设置课程目标评价方式");
|
|
throw ExceptionResultEnum.ERROR.exception("未设置课程目标评价方式");
|
|
@@ -1221,7 +1396,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
UsualScoreWordDto usualScoreWordDto = courseTargetWordDto.getUsualScoreDto();
|
|
UsualScoreWordDto usualScoreWordDto = courseTargetWordDto.getUsualScoreDto();
|
|
//old平时作业换算:分数/100*作业目标分
|
|
//old平时作业换算:分数/100*作业目标分
|
|
//new平时作业换算:分数/作业目标分
|
|
//new平时作业换算:分数/作业目标分
|
|
- Double matrixScore = new BigDecimal(score).multiply(reportEvaluationDto.getTargetWeight()).divide(SystemConstant.PERCENT, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
|
|
+ Double matrixScore = new BigDecimal(score).divide(reportEvaluationDto.getTargetScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(reportEvaluationDto.getTargetWeight()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
reportExamStudentUsualScoreObjDtoList.add(new ReportExamStudentUsualScoreObjDto(reportEvaluationDto.getTargetId(), reportEvaluationDto, score, matrixScore, usualScoreWordDto.getUsualScoreTargetSumScore()));
|
|
reportExamStudentUsualScoreObjDtoList.add(new ReportExamStudentUsualScoreObjDto(reportEvaluationDto.getTargetId(), reportEvaluationDto, score, matrixScore, usualScoreWordDto.getUsualScoreTargetSumScore()));
|
|
scoreListMap.put(reportEvaluationDto.getTargetId(), reportExamStudentUsualScoreObjDtoList);
|
|
scoreListMap.put(reportEvaluationDto.getTargetId(), reportExamStudentUsualScoreObjDtoList);
|
|
}
|
|
}
|