xiaofei 11 сар өмнө
parent
commit
a596d13090

+ 69 - 14
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/BasicExamStudentDto.java

@@ -61,49 +61,72 @@ public class BasicExamStudentDto {
     @ExcelNote(value = "教学班")
     @ExcelColumn(name = "教学班",index = 6,nullable = true)
     private String teachClassName;
+    @ApiModelProperty("行政班")
+    @ExcelProperty(name = "行政班", width = 10, index = 8)
+    @ExcelNote(value = "行政班")
+    @ExcelColumn(name = "行政班",index = 7,nullable = true)
+    private String className;
 
     @ApiModelProperty("试卷编号")
-    @ExcelProperty(name = "试卷编号", width = 10, index = 8)
+    @ExcelProperty(name = "试卷编号", width = 10, index = 9)
     @ExcelNote(value = "试卷编号")
-    @ExcelColumn(name = "试卷编号",index = 7)
+    @ExcelColumn(name = "试卷编号",index = 8)
     private String paperNumber;
 
+    @ApiModelProperty("卷型")
+    @ExcelProperty(name = "卷型", width = 10, index = 10)
+    @ExcelNote(value = "卷型")
+    @ExcelColumn(name = "卷型",index = 9)
+    private String paperType;
+
     @ApiModelProperty("任课老师")
-    @ExcelProperty(name = "任课老师", width = 10, index = 9)
+    @ExcelProperty(name = "任课老师", width = 10, index = 11)
     @ExcelNote(value = "任课老师")
-    @ExcelColumn(name = "任课老师",index = 8)
+    @ExcelColumn(name = "任课老师",index = 10)
     private String teacherName;
 
     @ApiModelProperty("任课老师工号")
-    @ExcelProperty(name = "任课老师工号", width = 10, index = 10)
+    @ExcelProperty(name = "任课老师工号", width = 10, index = 12)
     @ExcelNote(value = "任课老师工号")
-    @ExcelColumn(name = "任课老师工号",index = 9)
+    @ExcelColumn(name = "任课老师工号",index = 11)
     private String teacherCode;
 
     @ApiModelProperty("考试日期")
-    @ExcelProperty(name = "考试日期", width = 10, index = 11)
+    @ExcelProperty(name = "考试日期", width = 10, index = 13)
     @ExcelNote(value = "考试日期")
-    @ExcelColumn(name = "考试日期",index = 10)
+    @ExcelColumn(name = "考试日期",index = 12)
     private String examDate;
 
     @ApiModelProperty("考试时间")
-    @ExcelProperty(name = "考试时间", width = 10, index = 12)
+    @ExcelProperty(name = "考试时间", width = 10, index = 14)
     @ExcelNote(value = "考试时间")
-    @ExcelColumn(name = "考试时间",index = 11)
+    @ExcelColumn(name = "考试时间",index = 13)
     private String examTime;
 
     @ApiModelProperty("考点(校区)")
-    @ExcelProperty(name = "考点(校区)", width = 10, index = 13)
+    @ExcelProperty(name = "考点(校区)", width = 10, index = 15)
     @ExcelNote(value = "考点(校区)")
-    @ExcelColumn(name = "考点(校区)",index = 12)
+    @ExcelColumn(name = "考点(校区)",index = 14)
     private String examPlace;
 
     @ApiModelProperty("考场(考试教室)")
-    @ExcelProperty(name = "考场(考试教室)", width = 10, index = 14)
+    @ExcelProperty(name = "考场(考试教室)", width = 10, index = 16)
     @ExcelNote(value = "考场(考试教室)")
-    @ExcelColumn(name = "考场(考试教室)",index = 13)
+    @ExcelColumn(name = "考场(考试教室)",index = 15)
     private String examRoom;
 
+    @ApiModelProperty("开课学院")
+    @ExcelProperty(name = "开课学院", width = 10, index = 17)
+    @ExcelNote(value = "开课学院")
+    @ExcelColumn(name = "开课学院",index = 16)
+    private String teachingRoomName;
+
+    @ApiModelProperty("状态")
+    @ExcelProperty(name = "状态", width = 10, index = 18)
+    @ExcelNote(value = "状态")
+    @ExcelColumn(name = "状态",index = 17)
+    private String statusDisplay;
+
     @ApiModelProperty("异常信息")
     @ExcelError
     private String errorMsg;
@@ -164,6 +187,14 @@ public class BasicExamStudentDto {
         this.teachClassName = teachClassName;
     }
 
+    public String getClassName() {
+        return className;
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+
     public String getPaperNumber() {
         return paperNumber;
     }
@@ -172,6 +203,14 @@ public class BasicExamStudentDto {
         this.paperNumber = paperNumber;
     }
 
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
     public String getTeacherName() {
         return teacherName;
     }
@@ -220,6 +259,22 @@ public class BasicExamStudentDto {
         this.examRoom = examRoom;
     }
 
+    public String getTeachingRoomName() {
+        return teachingRoomName;
+    }
+
+    public void setTeachingRoomName(String teachingRoomName) {
+        this.teachingRoomName = teachingRoomName;
+    }
+
+    public String getStatusDisplay() {
+        return statusDisplay;
+    }
+
+    public void setStatusDisplay(String statusDisplay) {
+        this.statusDisplay = statusDisplay;
+    }
+
     public String getErrorMsg() {
         return errorMsg;
     }

+ 2 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -846,11 +846,12 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
 
     @Override
     public boolean taskNormal(ExamDetail examDetail) {
+        ExamDetail examDetailExist = this.getById(examDetail.getId());
         // 已扫描过,不能作废
         if (!examDetail.getNormal()) {
             List<ExamDetailCourse> examDetailCourseList = examDetailCourseService.listByExamDetailId(examDetail.getId());
             for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
-                boolean isScanPaper = scanPaperService.isScanByExamIdAndPaperNumber(examDetail.getExamId(), examDetailCourse.getPaperNumber());
+                boolean isScanPaper = scanPaperService.isScanByExamIdAndPaperNumber(examDetailExist.getExamId(), examDetailCourse.getPaperNumber());
                 if (isScanPaper) {
                     throw ExceptionResultEnum.ERROR.exception("有课程已开始扫描,无法作废");
                 }

+ 12 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/ImportLogicServiceImpl.java

@@ -131,7 +131,8 @@ public class ImportLogicServiceImpl implements ImportLogicService {
         BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
         // 学校设置强制校验卷型或者模式4
         boolean needPaperNumber = (basicSchool.getHasPaperNumber() != null && basicSchool.getHasPaperNumber()) || ExamModelEnum.MODEL4.equals(basicExam.getExamModel());
-
+        // 试卷编号->课程
+        Map<String, Long> paperNumberCourseIdMap = new HashMap<>();
         Map<String, Long> basicCourseIdMap = new HashMap<>();
         // 课程学号唯一
         List<String> courseCodeStudentCodeList = new ArrayList<>();
@@ -237,6 +238,16 @@ public class ImportLogicServiceImpl implements ImportLogicService {
                         oldPaperNumberList.add(student.getPaperNumber());
                     }
                 }
+
+                if (StringUtils.isNotBlank(basicExamStudent.getPaperNumber())) {
+                    if (paperNumberCourseIdMap.containsKey(basicExamStudent.getPaperNumber())) {
+                        if (!paperNumberCourseIdMap.get(basicExamStudent.getPaperNumber()).equals(basicExamStudent.getCourseId())) {
+                            stringJoiner.add("试卷编号[" + basicExamStudent.getPaperNumber() + "]不能绑定多个课程");
+                        }
+                    } else {
+                        paperNumberCourseIdMap.put(basicExamStudent.getPaperNumber(), basicExamStudent.getCourseId());
+                    }
+                }
             }
 
             if (stringJoiner.toString().length() > 0) {

+ 7 - 1
distributed-print-business/src/main/resources/mapper/BasicExamStudentMapper.xml

@@ -98,13 +98,17 @@
             bes.college_name AS collegeName,
             bes.major_name AS majorName,
             bes.teach_class_name AS teachClassName,
+            bes.class_name AS className,
             bes.paper_number AS paperNumber,
+            bes.paper_type paperType,
+            bes.status,
             teacher.real_name AS teacherName,
             teacher.code AS teacherCode,
             bes.exam_start_time AS examStartTime,
             bes.exam_end_time AS examEndTime,
             bes.exam_place AS examPlace,
-            bes.exam_room AS examRoom
+            bes.exam_room AS examRoom,
+            so.name teachingRoomName
         FROM
             basic_exam_student bes
                 LEFT JOIN
@@ -113,6 +117,8 @@
             sys_user teacher ON bes.teacher_id = teacher.id
                 LEFT JOIN
             sys_user su ON bes.create_id = su.id
+                LEFT JOIN
+            sys_org so ON bc.teaching_room_id = so.id
         <where>
             <if test="schoolId != null and schoolId != ''">
                 AND bes.school_id = #{schoolId}

+ 1 - 0
distributed-print-business/src/main/resources/mapper/ExamPrintPlanMapper.xml

@@ -144,6 +144,7 @@
                 </if>
             </if>
         </where>
+            order by a.create_time desc
     </select>
     <select id="listClientPrintStatistics"
             resultType="com.qmth.distributed.print.business.bean.dto.ClientPrintStatisticsDto">

+ 14 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/MarkQuestion.java

@@ -1,6 +1,7 @@
 package com.qmth.teachcloud.common.entity;
 
 import java.io.Serializable;
+import java.util.Objects;
 
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
@@ -240,4 +241,17 @@ public class MarkQuestion extends BaseEntity implements Serializable {
     public void setObjectivePolicyScore(Double objectivePolicyScore) {
         this.objectivePolicyScore = objectivePolicyScore;
     }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        MarkQuestion that = (MarkQuestion) o;
+        return mainNumber.equals(that.mainNumber) && subNumber.equals(that.subNumber) && questionType.equals(that.questionType);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(mainNumber, subNumber, questionType);
+    }
 }

+ 9 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/score/StudentObjectiveAnswerDto.java

@@ -7,6 +7,7 @@ public class StudentObjectiveAnswerDto {
     // 标答
     private String standardAnswer;
     private String answer;
+    private Double totalScore;
     private Boolean exist;
     private Integer questionType;
 
@@ -42,6 +43,14 @@ public class StudentObjectiveAnswerDto {
         this.answer = answer;
     }
 
+    public Double getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(Double totalScore) {
+        this.totalScore = totalScore;
+    }
+
     public Boolean getExist() {
         return exist;
     }

+ 3 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkQuestionServiceImpl.java

@@ -220,6 +220,9 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
                 markGroupService.updateTotalScore(examId, paperNumber, entry.getKey(), entry.getValue());
             }
         }
+
+        // 主观题结构有变动
+
     }
 
     @Override

+ 3 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java

@@ -858,7 +858,9 @@ public class MarkServiceImpl implements MarkService {
         TaskLock taskLock = TaskLockUtil.getFormalTask(key);
         MarkUserGroup markUserGroup = markUserGroupService.getByExamIdAndPaperNumberAndGroupNumberAndUserId(examId,
                 paperNumber, groupNumber, userId);
-        taskLock.clear(markUserGroup.getId());
+        if (markUserGroup != null) {
+            taskLock.clear(markUserGroup.getId());
+        }
     }
 
     @Override

+ 1 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -691,6 +691,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
                 studentObjectiveAnswerDto.setSubNumber(q != null ? q.getSubNumber() : 0);
                 studentObjectiveAnswerDto.setStandardAnswer(q != null ? q.getAnswer() : null);
                 studentObjectiveAnswerDto.setAnswer(answer);
+                studentObjectiveAnswerDto.setTotalScore(q.getTotalScore());
                 studentObjectiveAnswerDto.setExist(q != null && q.getTotalScore() > 0);
                 studentObjectiveAnswerDto.setQuestionType(q != null ? q.getQuestionType() : 0);
                 answerDtoList.add(studentObjectiveAnswerDto);