|
@@ -8,19 +8,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.deepoove.poi.XWPFTemplate;
|
|
import com.deepoove.poi.XWPFTemplate;
|
|
import com.qmth.boot.api.constant.ApiConstant;
|
|
import com.qmth.boot.api.constant.ApiConstant;
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
|
|
+import com.qmth.distributed.print.business.bean.dto.CourseWeightDetailDto;
|
|
|
|
+import com.qmth.distributed.print.business.bean.dto.CourseWeightDto;
|
|
|
|
+import com.qmth.distributed.print.business.bean.dto.TCUsualScoreDto;
|
|
import com.qmth.distributed.print.business.bean.dto.report.*;
|
|
import com.qmth.distributed.print.business.bean.dto.report.*;
|
|
import com.qmth.distributed.print.business.bean.result.CourseWeightResult;
|
|
import com.qmth.distributed.print.business.bean.result.CourseWeightResult;
|
|
import com.qmth.distributed.print.business.bean.result.ScoreResult;
|
|
import com.qmth.distributed.print.business.bean.result.ScoreResult;
|
|
|
|
+import com.qmth.distributed.print.business.bean.result.report.ReportChangeResult;
|
|
import com.qmth.distributed.print.business.bean.result.report.ReportResult;
|
|
import com.qmth.distributed.print.business.bean.result.report.ReportResult;
|
|
import com.qmth.distributed.print.business.bean.result.report.word.CourseBasicBean;
|
|
import com.qmth.distributed.print.business.bean.result.report.word.CourseBasicBean;
|
|
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.TCPaperStruct;
|
|
import com.qmth.distributed.print.business.entity.TCPaperStruct;
|
|
|
|
+import com.qmth.distributed.print.business.entity.TCUsualScore;
|
|
import com.qmth.distributed.print.business.entity.TRBasicInfo;
|
|
import com.qmth.distributed.print.business.entity.TRBasicInfo;
|
|
import com.qmth.distributed.print.business.entity.TRExamStudent;
|
|
import com.qmth.distributed.print.business.entity.TRExamStudent;
|
|
-import com.qmth.distributed.print.business.service.PrintCommonService;
|
|
|
|
-import com.qmth.distributed.print.business.service.TCPaperStructService;
|
|
|
|
-import com.qmth.distributed.print.business.service.TRBasicInfoService;
|
|
|
|
-import com.qmth.distributed.print.business.service.TRExamStudentService;
|
|
|
|
|
|
+import com.qmth.distributed.print.business.service.*;
|
|
import com.qmth.teachcloud.common.annotation.OperationLogDetail;
|
|
import com.qmth.teachcloud.common.annotation.OperationLogDetail;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.entity.BasicSchool;
|
|
import com.qmth.teachcloud.common.entity.BasicSchool;
|
|
@@ -36,9 +38,9 @@ import com.qmth.teachcloud.common.util.ServletUtil;
|
|
import com.qmth.teachcloud.mark.entity.MarkPaper;
|
|
import com.qmth.teachcloud.mark.entity.MarkPaper;
|
|
import com.qmth.teachcloud.mark.service.MarkPaperService;
|
|
import com.qmth.teachcloud.mark.service.MarkPaperService;
|
|
import io.swagger.annotations.*;
|
|
import io.swagger.annotations.*;
|
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.io.FileUtils;
|
|
import org.apache.commons.io.FileUtils;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
-import org.springframework.util.CollectionUtils;
|
|
|
|
import org.springframework.validation.BindingResult;
|
|
import org.springframework.validation.BindingResult;
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
@@ -87,6 +89,9 @@ public class TRBasicInfoController {
|
|
@Resource
|
|
@Resource
|
|
TCPaperStructService tcPaperStructService;
|
|
TCPaperStructService tcPaperStructService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ TCUsualScoreService tcUsualScoreService;
|
|
|
|
+
|
|
@ApiOperation(value = "报告管理列表")
|
|
@ApiOperation(value = "报告管理列表")
|
|
@RequestMapping(value = "/report/list", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/report/list", method = RequestMethod.POST)
|
|
@OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
|
|
@OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
|
|
@@ -200,7 +205,6 @@ public class TRBasicInfoController {
|
|
|
|
|
|
JSONObject jsonObject = JSONObject.parseObject(trBasicInfo.getCourseEvaluationResultDetail());
|
|
JSONObject jsonObject = JSONObject.parseObject(trBasicInfo.getCourseEvaluationResultDetail());
|
|
List<CourseTargetWordDto> courseTargetWordDtoList = JSONArray.parseArray(jsonObject.get("targetWordMap").toString(), CourseTargetWordDto.class);
|
|
List<CourseTargetWordDto> courseTargetWordDtoList = JSONArray.parseArray(jsonObject.get("targetWordMap").toString(), CourseTargetWordDto.class);
|
|
- List<CourseTargetWebDto> courseTargetWebDtoList = JSONArray.parseArray(jsonObject.get("targetWebMap").toString(), CourseTargetWebDto.class);
|
|
|
|
|
|
|
|
StringJoiner courseTarget = new StringJoiner("");
|
|
StringJoiner courseTarget = new StringJoiner("");
|
|
courseTargetWordDtoList.stream().peek(s -> {
|
|
courseTargetWordDtoList.stream().peek(s -> {
|
|
@@ -262,4 +266,58 @@ public class TRBasicInfoController {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @ApiOperation(value = "报告发生改变")
|
|
|
|
+ @RequestMapping(value = "/report/change", method = RequestMethod.POST)
|
|
|
|
+ @ApiResponses({@ApiResponse(code = 200, message = "下载成功", response = Object.class)})
|
|
|
|
+ public Object reportDataChange(@ApiParam(value = "考试id", required = true) @RequestParam Long examId,
|
|
|
|
+ @ApiParam(value = "科目编码", required = true) @RequestParam String courseCode,
|
|
|
|
+ @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) throws IOException {
|
|
|
|
+ ReportChangeResult reportChangeResult = new ReportChangeResult();
|
|
|
|
+ List<TCUsualScore> tcUsualScoreList = tcUsualScoreService.list(new QueryWrapper<TCUsualScore>().lambda().eq(TCUsualScore::getExamId, examId).eq(TCUsualScore::getCourseCode, courseCode).eq(TCUsualScore::getPaperNumber, paperNumber));
|
|
|
|
+ if (CollectionUtils.isNotEmpty(tcUsualScoreList)) {
|
|
|
|
+ Set<String> usualScoreCourseSet = new LinkedHashSet<>();
|
|
|
|
+ TCUsualScore tcUsualScore = tcUsualScoreList.get(0);
|
|
|
|
+ List<TCUsualScoreDto> tcUsualScoreDtoList = JSONArray.parseArray(tcUsualScore.getScore(), TCUsualScoreDto.class);
|
|
|
|
+ List<String> usualScoreList = tcUsualScoreDtoList.stream().map(s -> s.getName()).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ List<CourseWeightDto> courseWeightDtoList = trBasicInfoService.findCourseWeightDtoRmi(examId, courseCode);
|
|
|
|
+ List<String> courseTargetList = new ArrayList<>(courseWeightDtoList.size());
|
|
|
|
+ if (CollectionUtils.isNotEmpty(courseWeightDtoList)) {
|
|
|
|
+ courseWeightDtoList.stream().peek(e -> {
|
|
|
|
+ courseTargetList.add(e.getCourseTargetName());
|
|
|
|
+ List<CourseWeightDetailDto> courseWeightDetailDtoList = e.getEvaluationList();
|
|
|
|
+ courseWeightDetailDtoList.stream().peek(s -> {
|
|
|
|
+ if (!Objects.equals(s.getEvaluationName(), "期末考试")) {
|
|
|
|
+ usualScoreCourseSet.add(s.getEvaluationName());
|
|
|
|
+ }
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (CollectionUtils.isNotEmpty(usualScoreList) && CollectionUtils.isNotEmpty(usualScoreCourseSet)) {
|
|
|
|
+ List<String> usualScoreCourseList = new ArrayList<>(usualScoreCourseSet);
|
|
|
|
+ Collections.sort(usualScoreList);
|
|
|
|
+ Collections.sort(usualScoreCourseList);
|
|
|
|
+ if (!CollectionUtils.isEqualCollection(usualScoreList, usualScoreCourseList)) {
|
|
|
|
+ reportChangeResult.setEvaluationChange(true);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ TRBasicInfo trBasicInfo = trBasicInfoService.getOne(new QueryWrapper<TRBasicInfo>().lambda().eq(TRBasicInfo::getExamId, examId).eq(TRBasicInfo::getCourseCode, courseCode).eq(TRBasicInfo::getPaperNumber, paperNumber));
|
|
|
|
+ if (Objects.nonNull(trBasicInfo) && Objects.nonNull(trBasicInfo.getCourseEvaluationResultDetail())) {
|
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(trBasicInfo.getCourseEvaluationResultDetail());
|
|
|
|
+ List<CourseTargetWordDto> courseTargetWordDtoList = JSONArray.parseArray(jsonObject.get("targetWordMap").toString(), CourseTargetWordDto.class);
|
|
|
|
+ List<String> courseTargetDbList = courseTargetWordDtoList.stream().map(s -> s.getTargetName()).collect(Collectors.toList());
|
|
|
|
+ if (CollectionUtils.isNotEmpty(courseTargetList) && CollectionUtils.isNotEmpty(courseTargetDbList)) {
|
|
|
|
+ Collections.sort(courseTargetList);
|
|
|
|
+ Collections.sort(courseTargetDbList);
|
|
|
|
+ if (!CollectionUtils.isEqualCollection(courseTargetList, courseTargetDbList)) {
|
|
|
|
+ reportChangeResult.setCourseTargetChange(true);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return ResultUtil.ok(reportChangeResult);
|
|
|
|
+ }
|
|
}
|
|
}
|