wangliang 1 gadu atpakaļ
vecāks
revīzija
82b3ac4fb6

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

@@ -21,6 +21,10 @@ public class ReportCourseEvaluationResultDto implements Serializable {
     @ApiModelProperty(value = "权重变化id")
     private Long weightSettingSign;
 
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty("知识点变化id")
+    private Long dimensionSign;
+
     @ApiModelProperty(value = "课程目标总达成评价值")
     private BigDecimal targetEvaluationSumValue;
 
@@ -31,10 +35,19 @@ public class ReportCourseEvaluationResultDto implements Serializable {
 
     }
 
-    public ReportCourseEvaluationResultDto(BigDecimal targetEvaluationSumValue, List<CourseTargetWebDto> targetList, Long weightSettingSign) {
+    public ReportCourseEvaluationResultDto(BigDecimal targetEvaluationSumValue, List<CourseTargetWebDto> targetList, Long weightSettingSign, Long dimensionSign) {
         this.targetEvaluationSumValue = targetEvaluationSumValue;
         this.targetList = targetList;
         this.weightSettingSign = weightSettingSign;
+        this.dimensionSign = dimensionSign;
+    }
+
+    public Long getDimensionSign() {
+        return dimensionSign;
+    }
+
+    public void setDimensionSign(Long dimensionSign) {
+        this.dimensionSign = dimensionSign;
     }
 
     public BigDecimal getTargetEvaluationSumValue() {

+ 10 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TRBasicInfoService.java

@@ -120,4 +120,14 @@ public interface TRBasicInfoService extends IService<TRBasicInfo> {
      * @return
      */
     public CourseWeightResult findCourseWeightResultRmi(Long examId, String courseCode);
+
+    /**
+     * 清除报告数据
+     *
+     * @param examId
+     * @param courseCode
+     * @param paperNumber
+     * @param clearDimension
+     */
+    public void clearReportData(Long examId, String courseCode, String paperNumber, boolean clearDimension);
 }

+ 2 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TCFinalScoreServiceImpl.java

@@ -166,8 +166,7 @@ public class TCFinalScoreServiceImpl extends ServiceImpl<TCFinalScoreMapper, TCF
                     if (CollectionUtils.isEmpty(tcFinalScoreDbSourceList) || !CollectionUtils.isEqualCollection(tcFinalScoreDbSourceList, tcFinalScoreList)) {
                         tcFinalScoreService.removeByIds(tcFinalScoreDbSourceList.stream().map(s -> s.getId()).collect(Collectors.toList()));
                         tcFinalScoreService.saveBatch(tcFinalScoreList);
-                        trExamStudentService.remove(examId, courseCode, paperNumber);
-                        trBasicInfoService.remove(examId, courseCode, paperNumber);
+                        trBasicInfoService.clearReportData(examId, courseCode, paperNumber, false);
                     }
                 }
             }
@@ -288,8 +287,7 @@ public class TCFinalScoreServiceImpl extends ServiceImpl<TCFinalScoreMapper, TCF
                     if (CollectionUtils.isEmpty(tcFinalScoreDbSourceList) || !CollectionUtils.isEqualCollection(tcFinalScoreDbSourceList, tcFinalScoreList)) {
                         tcFinalScoreService.removeByIds(tcFinalScoreDbSourceList.stream().map(s -> s.getId()).collect(Collectors.toList()));
                         tcFinalScoreService.saveBatch(tcFinalScoreList);
-                        trExamStudentService.remove(examId, courseCode, paperNumber);
-                        trBasicInfoService.remove(examId, courseCode, paperNumber);
+                        trBasicInfoService.clearReportData(examId, courseCode, paperNumber, false);
                     }
                 }
             }

+ 1 - 6
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TCUsualScoreServiceImpl.java

@@ -13,7 +13,6 @@ import com.qmth.distributed.print.business.mapper.TCUsualScoreMapper;
 import com.qmth.distributed.print.business.service.PrintCommonService;
 import com.qmth.distributed.print.business.service.TCUsualScoreService;
 import com.qmth.distributed.print.business.service.TRBasicInfoService;
-import com.qmth.distributed.print.business.service.TRExamStudentService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
@@ -56,9 +55,6 @@ public class TCUsualScoreServiceImpl extends ServiceImpl<TCUsualScoreMapper, TCU
     @Resource
     TRBasicInfoService trBasicInfoService;
 
-    @Resource
-    TRExamStudentService trExamStudentService;
-
     /**
      * 导入平时成绩excel
      *
@@ -145,8 +141,7 @@ public class TCUsualScoreServiceImpl extends ServiceImpl<TCUsualScoreMapper, TCU
                     if (CollectionUtils.isEmpty(tcUsualScoreDbSourceList) || !CollectionUtils.isEqualCollection(tcUsualScoreDbSourceList, tcUsualScoreList)) {
                         tcUsualScoreService.removeByIds(tcUsualScoreDbSourceList.stream().map(s -> s.getId()).collect(Collectors.toList()));
                         tcUsualScoreService.saveBatch(tcUsualScoreList);
-                        trExamStudentService.remove(examId, courseCode, paperNumber);
-                        trBasicInfoService.remove(examId, courseCode, paperNumber);
+                        trBasicInfoService.clearReportData(examId, courseCode, paperNumber, false);
                     }
                 }
             }

+ 23 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRBasicInfoServiceImpl.java

@@ -136,7 +136,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         Map<Long, CourseTargetWordDto> targetWordMap = null;//word目标集合
         Map<Long, CourseTargetWebDto> targetWebMap = null;//web目标集合
         Map<String, ReportEvaluationDto> usualScoreMap = null;//平时作业集合
-        Long weightSettingSign = null;//权重变化id
+        Long weightSettingSign = null, dimensionSign = null;//权重变化id,知识点变化id
         if (!CollectionUtils.isEmpty(finalScoreResultList)) {
             targetWordMap = new LinkedHashMap<>();
             targetWebMap = new LinkedHashMap<>();
@@ -145,6 +145,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
             CourseWeightResult courseWeightResult = trBasicInfoService.findCourseWeightResultRmi(trBasicInfo.getExamId(), trBasicInfo.getCourseCode());
             List<CourseWeightDto> courseWeightDtoList = courseWeightResult.getSubmitForm();
             weightSettingSign = courseWeightResult.getWeightSettingSign();
+            dimensionSign = courseWeightResult.getDimensionSign();
 
             BigDecimal bigDecimal = new BigDecimal(100);
             for (CourseWeightDto courseWeightDto : courseWeightDtoList) {
@@ -254,6 +255,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         paramsMap.put("targetWordMap", targetWordMap);
         paramsMap.put("targetWebMap", targetWebMap);
         paramsMap.put("weightSettingSign", weightSettingSign);
+        paramsMap.put("dimensionSign", dimensionSign);
         return paramsMap;
     }
 
@@ -312,7 +314,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                         courseTargetWordDto.setEvaluationValue(targetEvaluationValue);
                     }
                 }
-                reportCourseEvaluationResultDto = new ReportCourseEvaluationResultDto(targetEvaluationSumValue, new ArrayList<>(targetWebMap.values()), (Long) paramsMap.get("weightSettingSign"));
+                reportCourseEvaluationResultDto = new ReportCourseEvaluationResultDto(targetEvaluationSumValue, new ArrayList<>(targetWebMap.values()), (Long) paramsMap.get("weightSettingSign"), (Long) paramsMap.get("dimensionSign"));
             }
             paramsMap.put("targetWebMap", targetWebMap);
         }
@@ -784,6 +786,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         Objects.requireNonNull(courseWeightResult.getCustomRate(), "未设置平时成绩权重");
         Objects.requireNonNull(courseWeightResult.getDefaultRate(), "未设置期末考试权重");
         Objects.requireNonNull(courseWeightResult.getWeightSettingSign(), "课程权重变化id为空");
+        Objects.requireNonNull(courseWeightResult.getDimensionSign(), "知识点变化id为空");
         List<CourseWeightDto> courseWeightDtoList = courseWeightResult.getSubmitForm();
         if (CollectionUtils.isEmpty(courseWeightDtoList)) {
             throw ExceptionResultEnum.ERROR.exception("未设置课程目标评价方式");
@@ -791,6 +794,24 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         return courseWeightResult;
     }
 
+    /**
+     * 清除报告数据
+     *
+     * @param examId
+     * @param courseCode
+     * @param paperNumber
+     * @param clearDimension
+     */
+    @Override
+    @Transactional
+    public void clearReportData(Long examId, String courseCode, String paperNumber, boolean clearDimension) {
+        trExamStudentService.remove(examId, courseCode, paperNumber);
+        trBasicInfoService.remove(examId, courseCode, paperNumber);
+        if (clearDimension) {
+            tcPaperStructService.remove(examId, courseCode, paperNumber);
+        }
+    }
+
     /**
      * 获取行样式
      *

+ 16 - 6
distributed-print/src/main/java/com/qmth/distributed/print/api/TCFinalScoreController.java

@@ -1,16 +1,20 @@
 package com.qmth.distributed.print.api;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.gson.reflect.TypeToken;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.api.exception.ApiException;
+import com.qmth.distributed.print.business.bean.dto.report.ReportCourseEvaluationResultDto;
 import com.qmth.distributed.print.business.bean.excel.ExcelField;
 import com.qmth.distributed.print.business.bean.params.report.PaperStructParams;
+import com.qmth.distributed.print.business.bean.result.CourseWeightResult;
 import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.bean.result.report.PaperStructResult;
 import com.qmth.distributed.print.business.entity.TCFinalScore;
 import com.qmth.distributed.print.business.entity.TCPaperStruct;
+import com.qmth.distributed.print.business.entity.TRBasicInfo;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -199,8 +203,7 @@ public class TCFinalScoreController {
         tcFinalScoreDb.updateInfo(tcFinalScore, sysUser.getId());
 
         if (!tcFinalScoreSource.equals(tcFinalScoreDb)) {
-            trExamStudentService.remove(tcFinalScoreDb.getExamId(), tcFinalScoreDb.getCourseCode(), tcFinalScoreDb.getPaperNumber());
-            trBasicInfoService.remove(tcFinalScoreDb.getExamId(), tcFinalScoreDb.getCourseCode(), tcFinalScoreDb.getPaperNumber());
+            trBasicInfoService.clearReportData(tcFinalScoreDb.getExamId(), tcFinalScoreDb.getCourseCode(), tcFinalScoreDb.getPaperNumber(), false);
             tcFinalScoreService.updateById(tcFinalScoreDb);
         }
         return ResultUtil.ok(true);
@@ -222,8 +225,7 @@ public class TCFinalScoreController {
         if (!tcFinalScoreSource.equals(tcFinalScoreDb)) {
             SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
             tcFinalScoreDb.updateInfo(sysUser.getId());
-            trExamStudentService.remove(tcFinalScoreDb.getExamId(), tcFinalScoreDb.getCourseCode(), tcFinalScoreDb.getPaperNumber());
-            trBasicInfoService.remove(tcFinalScoreDb.getExamId(), tcFinalScoreDb.getCourseCode(), tcFinalScoreDb.getPaperNumber());
+            trBasicInfoService.clearReportData(tcFinalScoreDb.getExamId(), tcFinalScoreDb.getCourseCode(), tcFinalScoreDb.getPaperNumber(), false);
             tcFinalScoreService.updateById(tcFinalScoreDb);
         }
         return ResultUtil.ok(true);
@@ -262,8 +264,7 @@ public class TCFinalScoreController {
             BeanUtils.copyProperties(tcPaperStructDb, tcPaperStructSource);
             tcPaperStructDb.updateInfo(JacksonUtil.parseJson(paperStructParams.getPaperStruct()), sysUser.getId());
             if (!tcPaperStructDb.equals(tcPaperStructSource)) {
-                trExamStudentService.remove(paperStructParams.getExamId(), paperStructParams.getCourseCode(), paperStructParams.getPaperNumber());
-                trBasicInfoService.remove(paperStructParams.getExamId(), paperStructParams.getCourseCode(), paperStructParams.getPaperNumber());
+                trBasicInfoService.clearReportData(paperStructParams.getExamId(), paperStructParams.getCourseCode(), paperStructParams.getPaperNumber(), false);
                 tcPaperStructService.updateById(tcPaperStructDb);
             }
         }
@@ -277,6 +278,15 @@ public class TCFinalScoreController {
     public Object finalScorePaperStructQuery(@ApiParam(value = "考试id", required = true) @RequestParam Long examId,
                                              @ApiParam(value = "科目编码", required = true) @RequestParam String courseCode,
                                              @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));
+        if (Objects.nonNull(trBasicInfo)) {
+            ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = JSONObject.parseObject(trBasicInfo.getCourseEvaluationResult(), ReportCourseEvaluationResultDto.class);
+            CourseWeightResult courseWeightResult = trBasicInfoService.findCourseWeightResultRmi(examId, courseCode);
+            if (Objects.nonNull(reportCourseEvaluationResultDto.getDimensionSign()) && reportCourseEvaluationResultDto.getDimensionSign().longValue() != courseWeightResult.getDimensionSign().longValue()) {
+                trBasicInfoService.clearReportData(examId, courseCode, paperNumber, true);
+            }
+        }
+
         List<PaperStructResult> paperStructResultList = null;
         TCPaperStruct tcPaperStruct = tcPaperStructService.getOne(new QueryWrapper<TCPaperStruct>().lambda().eq(TCPaperStruct::getExamId, examId).eq(TCPaperStruct::getCourseCode, courseCode).eq(TCPaperStruct::getPaperNumber, paperNumber));
         if (Objects.isNull(tcPaperStruct)) {

+ 6 - 8
distributed-print/src/main/java/com/qmth/distributed/print/api/TCUsualScoreController.java

@@ -9,7 +9,10 @@ import com.qmth.distributed.print.business.bean.result.CourseWeightResult;
 import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.bean.result.ScoreResult;
 import com.qmth.distributed.print.business.entity.TCUsualScore;
-import com.qmth.distributed.print.business.service.*;
+import com.qmth.distributed.print.business.service.PrintCommonService;
+import com.qmth.distributed.print.business.service.TCUsualScoreService;
+import com.qmth.distributed.print.business.service.TRBasicInfoService;
+import com.qmth.distributed.print.business.service.TRExamStudentService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
@@ -59,9 +62,6 @@ public class TCUsualScoreController {
     @Resource
     TRBasicInfoService trBasicInfoService;
 
-    @Resource
-    TRExamStudentService trExamStudentService;
-
     @ApiOperation(value = "成绩管理列表")
     @RequestMapping(value = "/score/list", method = RequestMethod.POST)
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
@@ -150,8 +150,7 @@ public class TCUsualScoreController {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         tcUsualScoreDb.updateInfo(tcUsualScore, sysUser.getId());
         if (!tcUsualScoreSource.equals(tcUsualScoreDb)) {
-            trExamStudentService.remove(tcUsualScoreDb.getExamId(), tcUsualScoreDb.getCourseCode(), tcUsualScoreDb.getPaperNumber());
-            trBasicInfoService.remove(tcUsualScoreDb.getExamId(), tcUsualScoreDb.getCourseCode(), tcUsualScoreDb.getPaperNumber());
+            trBasicInfoService.clearReportData(tcUsualScoreDb.getExamId(), tcUsualScoreDb.getCourseCode(), tcUsualScoreDb.getPaperNumber(), false);
             tcUsualScoreService.updateById(tcUsualScoreDb);
         }
         return ResultUtil.ok(true);
@@ -173,8 +172,7 @@ public class TCUsualScoreController {
         if (!tcUsualScoreSource.equals(tcUsualScoreDb)) {
             SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
             tcUsualScoreDb.updateInfo(sysUser.getId());
-            trExamStudentService.remove(tcUsualScoreDb.getExamId(), tcUsualScoreDb.getCourseCode(), tcUsualScoreDb.getPaperNumber());
-            trBasicInfoService.remove(tcUsualScoreDb.getExamId(), tcUsualScoreDb.getCourseCode(), tcUsualScoreDb.getPaperNumber());
+            trBasicInfoService.clearReportData(tcUsualScoreDb.getExamId(), tcUsualScoreDb.getCourseCode(), tcUsualScoreDb.getPaperNumber(), false);
             tcUsualScoreService.updateById(tcUsualScoreDb);
         }
         return ResultUtil.ok(true);

+ 3 - 4
distributed-print/src/main/java/com/qmth/distributed/print/api/TRBasicInfoController.java

@@ -113,8 +113,7 @@ public class TRBasicInfoController {
             CourseWeightResult courseWeightResult = trBasicInfoService.findCourseWeightResultRmi(examId, courseCode);
             ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = Objects.nonNull(trBasicInfo.getCourseEvaluationResult()) ? JSONObject.parseObject(trBasicInfo.getCourseEvaluationResult(), ReportCourseEvaluationResultDto.class) : null;
             if (Objects.nonNull(reportCourseEvaluationResultDto.getWeightSettingSign()) && reportCourseEvaluationResultDto.getWeightSettingSign().longValue() != courseWeightResult.getWeightSettingSign().longValue()) {
-                trExamStudentService.remove(examId, courseCode, paperNumber);
-                trBasicInfoService.remove(examId, courseCode, paperNumber);
+                trBasicInfoService.clearReportData(examId, courseCode, paperNumber, Objects.nonNull(reportCourseEvaluationResultDto.getDimensionSign()) && reportCourseEvaluationResultDto.getDimensionSign().longValue() != courseWeightResult.getDimensionSign().longValue() ? true : false);
                 trBasicInfo = trBasicInfoService.getReportView(trBasicInfo, markPaper, sysUser.getId());
             } else {
                 ReportCourseBasicInfoDto reportCourseBasicInfoDto = new ReportCourseBasicInfoDto(trBasicInfo);
@@ -182,10 +181,10 @@ public class TRBasicInfoController {
             CourseWeightResult courseWeightResult = trBasicInfoService.findCourseWeightResultRmi(examId, courseCode);
             ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = JSONObject.parseObject(trBasicInfo.getCourseEvaluationResult(), ReportCourseEvaluationResultDto.class);
             if (Objects.nonNull(reportCourseEvaluationResultDto.getWeightSettingSign()) && reportCourseEvaluationResultDto.getWeightSettingSign().longValue() != courseWeightResult.getWeightSettingSign().longValue()) {
+                trBasicInfoService.clearReportData(examId, courseCode, paperNumber, Objects.nonNull(reportCourseEvaluationResultDto.getDimensionSign()) && reportCourseEvaluationResultDto.getDimensionSign().longValue() != courseWeightResult.getDimensionSign().longValue() ? true : false);
+
                 MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
                 Objects.requireNonNull(markPaper, "未找到科目信息");
-                trExamStudentService.remove(examId, courseCode, paperNumber);
-                trBasicInfoService.remove(examId, courseCode, paperNumber);
                 trBasicInfoService.getReportView(trBasicInfo, markPaper, sysUser.getId());
                 this.reportExport(examId, courseCode, paperNumber);
             } else {