Jelajahi Sumber

成绩管理1对多

wangliang 7 bulan lalu
induk
melakukan
01295febbb

+ 26 - 10
distributed-print/src/main/java/com/qmth/distributed/print/api/obe/TCPaperStructController.java

@@ -24,11 +24,10 @@ import com.qmth.teachcloud.obe.been.report.CourseTargetWebDto;
 import com.qmth.teachcloud.obe.been.result.ObeCourseWeightResult;
 import com.qmth.teachcloud.obe.been.result.report.PaperStructDimensionResult;
 import com.qmth.teachcloud.obe.entity.ObeCourseOutline;
+import com.qmth.teachcloud.obe.entity.TCFinalScore;
 import com.qmth.teachcloud.obe.entity.TCPaperStruct;
-import com.qmth.teachcloud.obe.service.ObeCourseOutlineService;
-import com.qmth.teachcloud.obe.service.TCFinalScoreService;
-import com.qmth.teachcloud.obe.service.TCPaperStructService;
-import com.qmth.teachcloud.obe.service.TRBasicInfoService;
+import com.qmth.teachcloud.obe.entity.TCUsualScore;
+import com.qmth.teachcloud.obe.service.*;
 import io.swagger.annotations.*;
 import org.apache.commons.collections4.CollectionUtils;
 import org.slf4j.Logger;
@@ -81,6 +80,9 @@ public class TCPaperStructController {
     @Resource
     ObeCourseOutlineService obeCourseOutlineService;
 
+    @Resource
+    TCUsualScoreService tcUsualScoreService;
+
     @ApiOperation(value = "导入试卷结构")
     @RequestMapping(value = "/final_score/paper_struct/import", method = RequestMethod.POST)
     @OperationLogDetail(operationType = OperationTypeEnum.IMPORT)
@@ -206,11 +208,24 @@ public class TCPaperStructController {
         List<PaperStructDimensionResult> paperStructDimensionResultList = null;
         TCPaperStruct tcPaperStruct = tcPaperStructService.queryPaperStruct(cultureProgramId, courseId, paperNumber, examId);
         if (Objects.isNull(tcPaperStruct) || (Objects.isNull(tcPaperStruct.getPaperStruct()) && Objects.isNull(tcPaperStruct.getPaperStructDimension()))) {
-            List<MarkQuestion> markQuestionList = markQuestionService.listQuestionByExamIdAndPaperNumber(examId, paperNumber);
-            if (!CollectionUtils.isEmpty(markQuestionList)) {
-                paperStructDimensionResultList = new ArrayList<>(markQuestionList.size());
-                for (MarkQuestion markQuestion : markQuestionList) {
-                    paperStructDimensionResultList.add(new PaperStructDimensionResult(markQuestion.getMainNumber(), markQuestion.getSubNumber(), examId, markQuestion.getPaperNumber(), new BigDecimal(markQuestion.getTotalScore())));
+            List<TCFinalScore> tcFinalScoreList = tcFinalScoreService.queryFinalScore(cultureProgramId, courseId, paperNumber, examId);
+            List<TCUsualScore> tcUsualScoreList = tcUsualScoreService.queryUsualScore(cultureProgramId, courseId, paperNumber, examId);
+            int tcFinalScoreFilterCount = 0, tcUsualScoreFilterCount = 0;
+            if (!CollectionUtils.isEmpty(tcFinalScoreList)) {
+                List<TCFinalScore> tcFinalScoreFilterList = tcFinalScoreList.stream().filter(s -> Objects.nonNull(s.getScore())).collect(Collectors.toList());
+                tcFinalScoreFilterCount = tcFinalScoreFilterList.size();
+            }
+            if (!CollectionUtils.isEmpty(tcUsualScoreList)) {
+                List<TCUsualScore> tcUsualScoreFilterList = tcUsualScoreList.stream().filter(s -> Objects.nonNull(s.getScore())).collect(Collectors.toList());
+                tcUsualScoreFilterCount = tcUsualScoreFilterList.size();
+            }
+            if (tcFinalScoreFilterCount > 0 && tcUsualScoreFilterCount > 0) {
+                List<MarkQuestion> markQuestionList = markQuestionService.listQuestionByExamIdAndPaperNumber(examId, paperNumber);
+                if (!CollectionUtils.isEmpty(markQuestionList)) {
+                    paperStructDimensionResultList = new ArrayList<>(markQuestionList.size());
+                    for (MarkQuestion markQuestion : markQuestionList) {
+                        paperStructDimensionResultList.add(new PaperStructDimensionResult(markQuestion.getMainNumber(), markQuestion.getSubNumber(), examId, markQuestion.getPaperNumber(), new BigDecimal(markQuestion.getTotalScore())));
+                    }
                 }
             }
         } else {
@@ -264,8 +279,9 @@ public class TCPaperStructController {
         TCPaperStruct tcPaperStruct = tcPaperStructService.queryPaperStruct(cultureProgramId, courseId, paperNumber, examId);
         Objects.requireNonNull(tcPaperStruct, "未找到试卷结构");
         trBasicInfoService.clearReportData(cultureProgramId, courseId, paperNumber, examId, false);
-        tcFinalScoreService.remove(cultureProgramId, courseId, paperNumber, examId);
         tcPaperStructService.removeById(tcPaperStruct.getId());
+        tcFinalScoreService.updateScore(cultureProgramId, courseId, paperNumber, examId);
+        tcUsualScoreService.updateScore(cultureProgramId, courseId, paperNumber, examId);
         return ResultUtil.ok(true);
     }
 

+ 11 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/service/TCFinalScoreService.java

@@ -170,4 +170,15 @@ public interface TCFinalScoreService extends IService<TCFinalScore> {
      * @param courseId         课程ID
      */
     void checkUsualOrFinalScoreExist(Long cultureProgramId, Long courseId);
+
+    /**
+     * 更新成绩数据
+     *
+     * @param cultureProgramId
+     * @param courseId
+     * @param paperNumber
+     * @param examId
+     * @return
+     */
+    public Boolean updateScore(Long cultureProgramId, Long courseId, String paperNumber, Long examId);
 }

+ 11 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/service/TCUsualScoreService.java

@@ -75,4 +75,15 @@ public interface TCUsualScoreService extends IService<TCUsualScore> {
      * @return
      */
     public Boolean remove(Long cultureProgramId, Long courseId, String paperNumber, Long examId);
+
+    /**
+     * 更新成绩数据
+     *
+     * @param cultureProgramId
+     * @param courseId
+     * @param paperNumber
+     * @param examId
+     * @return
+     */
+    public Boolean updateScore(Long cultureProgramId, Long courseId, String paperNumber, Long examId);
 }

+ 28 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/service/impl/TCFinalScoreServiceImpl.java

@@ -1,6 +1,7 @@
 package com.qmth.teachcloud.obe.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.gson.reflect.TypeToken;
@@ -576,4 +577,31 @@ public class TCFinalScoreServiceImpl extends ServiceImpl<TCFinalScoreMapper, TCF
             throw ExceptionResultEnum.ERROR.exception("已导入期末成绩,无法删除");
         }
     }
+
+    /**
+     * 更新成绩数据
+     *
+     * @param cultureProgramId
+     * @param courseId
+     * @param paperNumber
+     * @param examId
+     * @return
+     */
+    @Override
+    @Transactional
+    public Boolean updateScore(Long cultureProgramId, Long courseId, String paperNumber, Long examId) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        UpdateWrapper<TCFinalScore> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(TCFinalScore::getCultureProgramId, cultureProgramId)
+                .eq(TCFinalScore::getCourseId, courseId);
+        if (Objects.nonNull(paperNumber)) {
+            updateWrapper.lambda().and(w -> w.eq(TCFinalScore::getPaperNumber, paperNumber).or().isNull(TCFinalScore::getPaperNumber));
+        }
+        if (Objects.nonNull(examId)) {
+            updateWrapper.lambda().eq(TCFinalScore::getExamId, examId);
+        }
+        updateWrapper.lambda().set(TCFinalScore::getScore, null).set(TCFinalScore::getScoreDetail, null)
+                .set(TCFinalScore::getUpdateId, sysUser.getId()).set(TCFinalScore::getUpdateTime, System.currentTimeMillis());
+        return tcFinalScoreService.update(updateWrapper);
+    }
 }

+ 27 - 1
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/service/impl/TCUsualScoreServiceImpl.java

@@ -1,6 +1,7 @@
 package com.qmth.teachcloud.obe.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.gson.reflect.TypeToken;
@@ -20,7 +21,6 @@ import com.qmth.teachcloud.common.service.BasicCourseService;
 import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.util.*;
 import com.qmth.teachcloud.obe.been.dto.TCUsualScoreDto;
-import com.qmth.teachcloud.obe.entity.TCFinalScore;
 import com.qmth.teachcloud.obe.entity.TCUsualScore;
 import com.qmth.teachcloud.obe.mapper.TCUsualScoreMapper;
 import com.qmth.teachcloud.obe.service.TCUsualScoreService;
@@ -285,4 +285,30 @@ public class TCUsualScoreServiceImpl extends ServiceImpl<TCUsualScoreMapper, TCU
         }
         return tcUsualScoreService.remove(queryWrapper);
     }
+
+    /**
+     * 更新成绩数据
+     *
+     * @param cultureProgramId
+     * @param courseId
+     * @param paperNumber
+     * @param examId
+     * @return
+     */
+    @Override
+    @Transactional
+    public Boolean updateScore(Long cultureProgramId, Long courseId, String paperNumber, Long examId) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        UpdateWrapper<TCUsualScore> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(TCUsualScore::getCultureProgramId, cultureProgramId)
+                .eq(TCUsualScore::getCourseId, courseId);
+        if (Objects.nonNull(paperNumber)) {
+            updateWrapper.lambda().and(w -> w.eq(TCUsualScore::getPaperNumber, paperNumber).or().isNull(TCUsualScore::getPaperNumber));
+        }
+        if (Objects.nonNull(examId)) {
+            updateWrapper.lambda().eq(TCUsualScore::getExamId, examId);
+        }
+        updateWrapper.lambda().set(TCUsualScore::getScore, null).set(TCUsualScore::getUpdateId, sysUser.getId()).set(TCUsualScore::getUpdateTime, System.currentTimeMillis());
+        return tcUsualScoreService.update(updateWrapper);
+    }
 }