Sfoglia il codice sorgente

1.1.0 update-20250110赋分查询问题

xiaofei 5 mesi fa
parent
commit
ec6d84da63

+ 2 - 1
src/main/java/com/qmth/eds/api/ExamAssignController.java

@@ -99,6 +99,7 @@ public class ExamAssignController {
                                       @ApiParam(value = "考试id", required = true) @RequestParam Long examTypeId,
                                       @ApiParam(value = "学院id", required = true) @RequestParam Long collegeId,
                                       @ApiParam(value = "科目代码", required = true) @RequestParam String courseCode,
+                                      @ApiParam(value = "考务数据科目代码", required = true) @RequestParam String syncCourseCode,
                                       @ApiParam(value = "开课学院", required = true) @RequestParam String openCollege,
                                       @ApiParam(value = "考查学院", required = false) @RequestParam(required = false) String kcCollege,
                                       @ApiParam(value = "班级id", required = false) @RequestParam(required = false) String clazzId,
@@ -107,7 +108,7 @@ public class ExamAssignController {
                                       @ApiParam(value = "赋分分数段(结束)", required = false) @RequestParam(required = false) String maxAssignScore,
                                       @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                                       @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        IPage<AssignResultPreviewResult> assignResultPreviewResultIPage = examAssignService.assignResultPreview(new Page<>(pageNumber, pageSize), semesterId, examTypeId, collegeId, courseCode, openCollege, kcCollege, clazzId, teacherCode, minAssignScore, maxAssignScore);
+        IPage<AssignResultPreviewResult> assignResultPreviewResultIPage = examAssignService.assignResultPreview(new Page<>(pageNumber, pageSize), semesterId, examTypeId, collegeId, courseCode, syncCourseCode, openCollege, kcCollege, clazzId, teacherCode, minAssignScore, maxAssignScore);
         if (Objects.nonNull(assignResultPreviewResultIPage) && !CollectionUtils.isEmpty(assignResultPreviewResultIPage.getRecords())) {
             for (AssignResultPreviewResult a : assignResultPreviewResultIPage.getRecords()) {
                 a.setScoreDetail("客观题评分明细:" + a.getObjectiveScoreDetail() + "\r\n" + "主观题评分明细:" + a.getSubjectiveScoreDetail());

+ 1 - 1
src/main/java/com/qmth/eds/mapper/CloudMarkingScoreMapper.java

@@ -20,7 +20,7 @@ public interface CloudMarkingScoreMapper extends BaseMapper<CloudMarkingScore> {
 
     IPage<CloudMarkingScoreDto> pageData(@Param("page") Page<CloudMarkingScoreDto> page, @Param("collegeId") Long collegeId, @Param("semesterId") Long semesterId, @Param("examTypeId") Long examTypeId, @Param("examId") String examId, @Param("syncCourseCode") String syncCourseCode, @Param("cloudMarkingCourseCode") String cloudMarkingCourseCode, @Param("studentCode") String studentCode, @Param("related") Boolean related);
 
-    List<ExamSyncStudentDto> listExamSyncStudentDtos(@Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("examTypeId") Long examTypeId, @Param("courseCode") String courseCode, @Param("openCollege") String openCollege);
+    List<ExamSyncStudentDto> listExamSyncStudentDtos(@Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("examTypeId") Long examTypeId, @Param("courseCode") String courseCode, @Param("syncCourseCode") String syncCourseCode, @Param("openCollege") String openCollege);
 
     /**
      * 查询学生成绩

+ 2 - 1
src/main/java/com/qmth/eds/mapper/ExamAssignMapper.java

@@ -42,6 +42,7 @@ public interface ExamAssignMapper extends BaseMapper<ExamAssign> {
                                                          @Param("semesterId") Long semesterId,
                                                          @Param("examTypeId") Long examTypeId,
                                                          @Param("courseCode") String courseCode,
+                                                         @Param("syncCourseCode") String syncCourseCode,
                                                          @Param("openCollege") String openCollege,
                                                          @Param("kcCollege") String kcCollege,
                                                          @Param("clazzId") String clazzId,
@@ -49,5 +50,5 @@ public interface ExamAssignMapper extends BaseMapper<ExamAssign> {
                                                          @Param("minAssignScore") String minAssignScore,
                                                          @Param("maxAssignScore") String maxAssignScore);
 
-    ExamAssign getBySchoolIdAndSemesterIdAndExamTypeIdAndCourseCodeAndOpenCollege(@Param("collegeId") Long collegeId, @Param("semesterId") Long semesterId, @Param("examTypeId") Long examTypeId, @Param("courseCode") String courseCode, @Param("kkxy") String kkxy);
+    ExamAssign getBySchoolIdAndSemesterIdAndExamTypeIdAndCourseCodeAndOpenCollege(@Param("collegeId") Long collegeId, @Param("semesterId") Long semesterId, @Param("examTypeId") Long examTypeId, @Param("courseCode") String courseCode, @Param("syncCourseCode") String syncCourseCode, @Param("kkxy") String kkxy);
 }

+ 2 - 2
src/main/java/com/qmth/eds/service/CloudMarkingScoreService.java

@@ -20,7 +20,7 @@ public interface CloudMarkingScoreService extends IService<CloudMarkingScore> {
 
     IPage<CloudMarkingScoreDto> pageData(Long collegeId, Long semesterId, Long examTypeId, String examId, String syncCourseCode, String cloudMarkingCourseCode,  String studentCode, Boolean related, Integer pageNumber, Integer pageSize);
 
-    List<ExamSyncStudentDto> listExamSyncStudentDtos(Long schoolId, Long semesterId, Long examTypeId, String courseCode, String openCollege);
+    List<ExamSyncStudentDto> listExamSyncStudentDtos(Long schoolId, Long semesterId, Long examTypeId, String courseCode, String syncCourseCode, String openCollege);
 
     /**
      * 查询学生成绩
@@ -39,7 +39,7 @@ public interface CloudMarkingScoreService extends IService<CloudMarkingScore> {
 
     List<ScoreDownloadDto> listScoreBySemesterIdAndExamTypeIdAndCollegeIdAndCourseCodeAndOpenCollege(Long semesterId, Long examTypeId, Long collegeId, String courseCode, String openCollege);
 
-    List<CloudMarkingScore> listByCollegeIdAndSemesterIdAndExamTypeIdAndSubjectCodeAndOpenCollege(Long collegeId, Long semesterId, Long examTypeId, String courseCode, String openCollege);
+    List<CloudMarkingScore> listByCollegeIdAndSemesterIdAndExamTypeIdAndSubjectCodeAndOpenCollege(Long collegeId, Long semesterId, Long examTypeId, String courseCode, String syncCourseCode, String openCollege);
 
     List<CourseResult> conditionCourseQuery(Long semesterId, Long examTypeId, Long collegeId);
 }

+ 1 - 0
src/main/java/com/qmth/eds/service/ExamAssignService.java

@@ -41,6 +41,7 @@ public interface ExamAssignService extends IService<ExamAssign> {
                                                          Long examTypeId,
                                                          Long collegeId,
                                                          String courseCode,
+                                                         String syncCourseCode,
                                                          String openCollege,
                                                          String kcCollege, String clazzId, String teacherCode, String minAssignScore, String maxAssignScore);
 

+ 4 - 3
src/main/java/com/qmth/eds/service/impl/CloudMarkingScoreServiceImpl.java

@@ -41,8 +41,8 @@ public class CloudMarkingScoreServiceImpl extends ServiceImpl<CloudMarkingScoreM
     }
 
     @Override
-    public List<ExamSyncStudentDto> listExamSyncStudentDtos(Long schoolId, Long semesterId, Long examTypeId, String courseCode, String openCollege) {
-        return this.baseMapper.listExamSyncStudentDtos(schoolId, semesterId, examTypeId, courseCode, openCollege);
+    public List<ExamSyncStudentDto> listExamSyncStudentDtos(Long schoolId, Long semesterId, Long examTypeId, String courseCode, String syncCourseCode, String openCollege) {
+        return this.baseMapper.listExamSyncStudentDtos(schoolId, semesterId, examTypeId, courseCode, syncCourseCode, openCollege);
     }
 
     /**
@@ -65,12 +65,13 @@ public class CloudMarkingScoreServiceImpl extends ServiceImpl<CloudMarkingScoreM
     }
 
     @Override
-    public List<CloudMarkingScore> listByCollegeIdAndSemesterIdAndExamTypeIdAndSubjectCodeAndOpenCollege(Long collegeId, Long semesterId, Long examTypeId, String courseCode, String openCollege) {
+    public List<CloudMarkingScore> listByCollegeIdAndSemesterIdAndExamTypeIdAndSubjectCodeAndOpenCollege(Long collegeId, Long semesterId, Long examTypeId, String courseCode, String syncCourseCode, String openCollege) {
         QueryWrapper<CloudMarkingScore> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(CloudMarkingScore::getSchoolId, collegeId)
                 .eq(CloudMarkingScore::getSemesterId, semesterId)
                 .eq(CloudMarkingScore::getExamTypeId, examTypeId)
                 .eq(CloudMarkingScore::getSubjectCode, courseCode)
+                .eq(CloudMarkingScore::getSyncCourseCode, syncCourseCode)
                 .eq(CloudMarkingScore::getOpenCollege, openCollege);
         return this.list(queryWrapper);
     }

+ 8 - 6
src/main/java/com/qmth/eds/service/impl/ExamAssignServiceImpl.java

@@ -69,7 +69,7 @@ public class ExamAssignServiceImpl extends ServiceImpl<ExamAssignMapper, ExamAss
                 record.setOpenCollege(Arrays.asList(record.getOpenCollege().split(",")).stream().filter(m -> StringUtils.isNotBlank(m)).collect(Collectors.joining(",")));
             }
 
-            ExamAssign examAssign = this.baseMapper.getBySchoolIdAndSemesterIdAndExamTypeIdAndCourseCodeAndOpenCollege(collegeId, semesterId, examTypeId, record.getCourseCode(), record.getOpenCollege());
+            ExamAssign examAssign = this.baseMapper.getBySchoolIdAndSemesterIdAndExamTypeIdAndCourseCodeAndOpenCollege(collegeId, semesterId, examTypeId, record.getCourseCode(), record.getSyncCourseCode(), record.getOpenCollege());
             if (examAssign != null) {
                 record.setId(examAssign.getId());
                 record.setFormula(examAssign.getFormula());
@@ -129,6 +129,7 @@ public class ExamAssignServiceImpl extends ServiceImpl<ExamAssignMapper, ExamAss
                                                                 Long examTypeId,
                                                                 Long collegeId,
                                                                 String courseCode,
+                                                                String syncCourseCode,
                                                                 String openCollege,
                                                                 String kcCollege,
                                                                 String clazzId,
@@ -136,7 +137,7 @@ public class ExamAssignServiceImpl extends ServiceImpl<ExamAssignMapper, ExamAss
                                                                 String minAssignScore,
                                                                 String maxAssignScore) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        return examAssignMapper.assignResultPreview(iPage, schoolId, collegeId, semesterId, examTypeId, courseCode, openCollege, kcCollege, clazzId, teacherCode, minAssignScore, maxAssignScore);
+        return examAssignMapper.assignResultPreview(iPage, schoolId, collegeId, semesterId, examTypeId, courseCode,syncCourseCode, openCollege, kcCollege, clazzId, teacherCode, minAssignScore, maxAssignScore);
     }
 
     @Override
@@ -151,7 +152,7 @@ public class ExamAssignServiceImpl extends ServiceImpl<ExamAssignMapper, ExamAss
         }
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
 
-        ExamAssign examAssign = this.baseMapper.getBySchoolIdAndSemesterIdAndExamTypeIdAndCourseCodeAndOpenCollege(collegeId, semesterId, examTypeId, courseCode, openCollege);
+        ExamAssign examAssign = this.baseMapper.getBySchoolIdAndSemesterIdAndExamTypeIdAndCourseCodeAndOpenCollege(collegeId, semesterId, examTypeId, courseCode, syncCourseCode, openCollege);
         ExamAssignDto examAssignDto = new ExamAssignDto();
         if (examAssign == null) {
             examAssign = new ExamAssign(collegeId, semesterId, examTypeId, syncCourseCode, courseCode, courseName, openCollege, null, null, ExamAssignStatusEnum.INIT, false);
@@ -165,7 +166,7 @@ public class ExamAssignServiceImpl extends ServiceImpl<ExamAssignMapper, ExamAss
         }
         int actualCount = 0;
         List<String> kcxyList = new ArrayList<>();
-        List<CloudMarkingScore> cloudMarkingScoreList = cloudMarkingScoreService.listByCollegeIdAndSemesterIdAndExamTypeIdAndSubjectCodeAndOpenCollege(collegeId, semesterId, examTypeId, courseCode, openCollege);
+        List<CloudMarkingScore> cloudMarkingScoreList = cloudMarkingScoreService.listByCollegeIdAndSemesterIdAndExamTypeIdAndSubjectCodeAndOpenCollege(collegeId, semesterId, examTypeId, courseCode, syncCourseCode, openCollege);
         if (!CollectionUtils.isEmpty(cloudMarkingScoreList)) {
             actualCount = cloudMarkingScoreList.size();
             kcxyList = cloudMarkingScoreList.stream().filter(m -> StringUtils.isNotBlank(m.getCollege())).map(CloudMarkingScore::getCollege).distinct().collect(Collectors.toList());
@@ -203,7 +204,8 @@ public class ExamAssignServiceImpl extends ServiceImpl<ExamAssignMapper, ExamAss
         queryWrapper.lambda().eq(CloudMarkingScore::getSchoolId, collegeId)
                 .eq(CloudMarkingScore::getSemesterId, semesterId)
                 .eq(CloudMarkingScore::getExamTypeId, examTypeId)
-                .eq(CloudMarkingScore::getSubjectCode, courseCode);
+                .eq(CloudMarkingScore::getSubjectCode, courseCode)
+                .eq(CloudMarkingScore::getSyncCourseCode, syncCourseCode);
         List<CloudMarkingScore> cloudMarkingScoreList = cloudMarkingScoreService.list(queryWrapper);
 
         List<CloudMarkingScoreForeign> cloudMarkingScoreForeigns = new ArrayList<>();
@@ -244,7 +246,7 @@ public class ExamAssignServiceImpl extends ServiceImpl<ExamAssignMapper, ExamAss
         }
 
         // 重新发布时,删除已发布的成绩
-        cloudMarkingScoreForeignService.deleteByCourseCode(collegeId, semesterId, examTypeId, syncCourseCode, courseCode);
+//        cloudMarkingScoreForeignService.deleteByCourseCode(collegeId, semesterId, examTypeId, syncCourseCode, courseCode);
 
         List<CloudMarkingScoreForeign> foreignData = new ArrayList<>();
         //1000条提交一次

+ 10 - 3
src/main/java/com/qmth/eds/service/impl/ExamSyncStudentServiceImpl.java

@@ -12,7 +12,9 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 @Service
 public class ExamSyncStudentServiceImpl extends ServiceImpl<ExamSyncStudentMapper, ExamSyncStudent> implements ExamSyncStudentService {
@@ -40,10 +42,15 @@ public class ExamSyncStudentServiceImpl extends ServiceImpl<ExamSyncStudentMappe
                 .eq(ExamCourseMapping::getExamTypeId, examTypeId);
         List<ExamCourseMapping> examCourseMappings = examCourseMappingService.list(examCourseMappingQueryWrapper);
         if (!examCourseMappings.isEmpty()) {
+            Map<String, String> examCourseMappingMap = examCourseMappings.stream().filter(m -> StringUtils.isNotBlank(m.getStudentCode())).collect(Collectors.toMap(m -> m.getStudentCode() + "#" + m.getSyncCourseCode(), n -> n.getCloudMarkingCourseCode()));
             for (ExamSyncStudent examSyncStudent : examSyncStudents) {
-                Optional<ExamCourseMapping> examCourseMapping = examCourseMappings.stream().filter(m -> StringUtils.isNotBlank(m.getStudentCode()) && m.getStudentCode().equals(examSyncStudent.getXh()) && m.getSyncCourseCode().equals(examSyncStudent.getKch())).findFirst();
-                if (examCourseMapping.isPresent()) {
-                    examSyncStudent.setCloudMarkingCourseCode(examCourseMapping.get().getCloudMarkingCourseCode());
+//                Optional<ExamCourseMapping> examCourseMapping = examCourseMappings.stream().filter(m -> StringUtils.isNotBlank(m.getStudentCode()) && m.getStudentCode().equals(examSyncStudent.getXh()) && m.getSyncCourseCode().equals(examSyncStudent.getKch())).findFirst();
+//                if (examCourseMapping.isPresent()) {
+//                    examSyncStudent.setCloudMarkingCourseCode(examCourseMapping.get().getCloudMarkingCourseCode());
+//                }
+                String key = examSyncStudent.getXh() + "#" + examSyncStudent.getKch();
+                if (examCourseMappingMap.containsKey(key)) {
+                    examSyncStudent.setCloudMarkingCourseCode(examCourseMappingMap.get(key));
                 }
             }
         }

+ 8 - 3
src/main/java/com/qmth/eds/service/impl/WhuDataSyncServiceImpl.java

@@ -234,7 +234,12 @@ public class WhuDataSyncServiceImpl implements WhuDataSyncService {
                         cloudMarkingScore.setStudentCode(m.getString("studentCode"));
                         cloudMarkingScore.setName(m.getString("name"));
                         cloudMarkingScore.setSubjectCode(m.getString("subjectCode"));
-                        cloudMarkingScore.setSyncCourseCode(m.getString("remark"));
+                        String remark = m.getString("remark");
+                        if(StringUtils.isNotBlank(remark)){
+                            cloudMarkingScore.setSyncCourseCode(remark.trim());
+                        } else {
+                            cloudMarkingScore.setSyncCourseCode(cloudMarkingScore.getSubjectCode());
+                        }
                         cloudMarkingScore.setSubjectName(m.getString("subjectName"));
                         cloudMarkingScore.setPaperType(m.getString("paperType"));
                         cloudMarkingScore.setCollege(m.getString("college"));
@@ -266,7 +271,7 @@ public class WhuDataSyncServiceImpl implements WhuDataSyncService {
 
             // 关联关系数据为空,保存
             if (CollectionUtils.isNotEmpty(examCourseMappingList)) {
-                examCourseMappingService.saveBatch(examCourseMappingList);
+                examCourseMappingService.saveOrUpdateBatch(examCourseMappingList);
             }
 
             //2.调用教务系统接口回传成绩
@@ -359,7 +364,7 @@ public class WhuDataSyncServiceImpl implements WhuDataSyncService {
                 }
             }
             List<ExamSyncStudentDto> finalList = new ArrayList<>();
-            List<ExamSyncStudentDto> examSyncStudentDtoList = cloudMarkingScoreService.listExamSyncStudentDtos(examAssign.getSchoolId(), examAssign.getSemesterId(), examAssign.getExamTypeId(), examAssign.getCourseCode(), examAssign.getOpenCollege());
+            List<ExamSyncStudentDto> examSyncStudentDtoList = cloudMarkingScoreService.listExamSyncStudentDtos(examAssign.getSchoolId(), examAssign.getSemesterId(), examAssign.getExamTypeId(), examAssign.getCourseCode(), examAssign.getSyncCourseCode(), examAssign.getOpenCollege());
             if (CollectionUtils.isEmpty(examSyncStudentDtoList)) {
                 throw ExceptionResultEnum.ERROR.exception("需要计算的数据有误,请联系管理员");
             }

+ 3 - 0
src/main/resources/mapper/CloudMarkingScoreMapper.xml

@@ -88,6 +88,9 @@
             <if test="courseCode != null and courseCode != ''">
                 and cms.subject_code = #{courseCode}
             </if>
+            <if test="syncCourseCode != null and syncCourseCode != ''">
+                and cms.sync_course_code = #{syncCourseCode}
+            </if>
             <if test="openCollege != null and openCollege != ''">
                 and cms.open_college = #{openCollege}
             </if>

+ 4 - 0
src/main/resources/mapper/ExamAssignMapper.xml

@@ -60,6 +60,9 @@
             <if test="courseCode != null and courseCode != ''">
                 and cms.subject_code = #{courseCode}
             </if>
+            <if test="syncCourseCode != null and syncCourseCode != ''">
+                and cms.sync_course_code = #{syncCourseCode}
+            </if>
             <if test="openCollege != null and openCollege != ''">
                 and cms.open_college = #{openCollege}
             </if>
@@ -100,6 +103,7 @@
             and t.semester_id = #{semesterId}
             and t.exam_type_id = #{examTypeId}
             and t.course_code = #{courseCode}
+            and t.sync_course_code = #{syncCourseCode}
             and t.open_college = #{kkxy}
     </select>
 </mapper>