xiaofei 1 gadu atpakaļ
vecāks
revīzija
6a1540c675
22 mainītis faili ar 99 papildinājumiem un 146 dzēšanām
  1. 3 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/ExamDetailList.java
  2. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/ExamDetailParams.java
  3. 0 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/ExamTaskSubmitPram.java
  4. 10 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/BasicExamStudentResult.java
  5. 0 6
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicTeachClazzService.java
  6. 4 6
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamStudentService.java
  7. 0 13
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/PrintCommonService.java
  8. 0 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamStudentServiceImpl.java
  9. 0 9
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTeachClazzServiceImpl.java
  10. 35 25
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamStudentServiceImpl.java
  11. 12 36
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  12. 0 33
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java
  13. 2 1
      distributed-print-business/src/main/resources/mapper/BasicExamStudentMapper.xml
  14. 3 0
      distributed-print/install/mysql/upgrade/3.4.0.sql
  15. 0 4
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicCourseController.java
  16. 0 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskApplyController.java
  17. 2 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkQuestionController.java
  18. 9 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/mark/MarkSettingDto.java
  19. 12 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkPaper.java
  20. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkQuestionService.java
  21. 4 4
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkQuestionServiceImpl.java
  22. 1 0
      teachcloud-mark/src/main/resources/mapper/MarkPaperMapper.xml

+ 3 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/ExamDetailList.java

@@ -17,7 +17,7 @@ public class ExamDetailList {
     private Long printHouseId;
     private String printHouseName;
     private String extendFields;
-    private List<ExamTaskStudentObjectParam> examTaskStudentObjectParamList;
+    private List<Long> examTaskStudentObjectParamList;
 
     public String getClassId() {
         return classId;
@@ -91,11 +91,11 @@ public class ExamDetailList {
         this.extendFields = extendFields;
     }
 
-    public List<ExamTaskStudentObjectParam> getExamTaskStudentObjectParamList() {
+    public List<Long> getExamTaskStudentObjectParamList() {
         return examTaskStudentObjectParamList;
     }
 
-    public void setExamTaskStudentObjectParamList(List<ExamTaskStudentObjectParam> examTaskStudentObjectParamList) {
+    public void setExamTaskStudentObjectParamList(List<Long> examTaskStudentObjectParamList) {
         this.examTaskStudentObjectParamList = examTaskStudentObjectParamList;
     }
 }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/ExamDetailParams.java

@@ -12,7 +12,7 @@ public class ExamDetailParams {
     private String paperNumber;
     private String courseCode;
     private String courseName;
-
+    private String courseId;
     private Double backupCount;
     private Integer totalSubjects; // 总数量,适用于模式2
     private Long printHouseId; // 总印刷室,适用于模式2

+ 0 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/ExamTaskSubmitPram.java

@@ -36,7 +36,6 @@ public class ExamTaskSubmitPram extends BaseEntity implements Serializable {
     /**
      * 保存内容
      */
-    @TableField("exam_task_content")
     private String examTaskContent;
 
     @ApiModelProperty(value = "流程审批人列表")

+ 10 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/BasicExamStudentResult.java

@@ -24,6 +24,8 @@ public class BasicExamStudentResult extends BasicExamStudent {
 
     @ApiModelProperty("课程代码")
     private String courseCode;
+    @ApiModelProperty("开课学院Id")
+    private String teachingRoomId;
     @ApiModelProperty("开课学院")
     private String teachingRoomName;
 
@@ -67,6 +69,14 @@ public class BasicExamStudentResult extends BasicExamStudent {
         this.courseCode = courseCode;
     }
 
+    public String getTeachingRoomId() {
+        return teachingRoomId;
+    }
+
+    public void setTeachingRoomId(String teachingRoomId) {
+        this.teachingRoomId = teachingRoomId;
+    }
+
     public String getTeachingRoomName() {
         return teachingRoomName;
     }

+ 0 - 6
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicTeachClazzService.java

@@ -26,10 +26,4 @@ public interface BasicTeachClazzService extends IService<BasicTeachClazz> {
      */
     List<BasicTeachClazzResult> findAllTeachClazz(Long examId, String courseCode, String clazzName);
 
-    /**
-     * 根据基础班id删除空闲的班级(该班级已经没有学生了)
-     *
-     * @param basicTeachClazzId 基础班级id
-     */
-    void deleteFreeClazz(Long basicTeachClazzId);
 }

+ 4 - 6
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamStudentService.java

@@ -5,6 +5,8 @@ import com.qmth.distributed.print.business.bean.dto.ExamStudentCourseDto;
 import com.qmth.distributed.print.business.bean.dto.ExamStudentDto;
 import com.qmth.distributed.print.business.bean.dto.ExamStudentPdfInfoDto;
 import com.qmth.distributed.print.business.entity.ExamStudent;
+import com.qmth.distributed.print.business.entity.ExamTask;
+import com.qmth.teachcloud.common.entity.SysUser;
 
 import java.util.List;
 import java.util.Map;
@@ -36,14 +38,8 @@ public interface ExamStudentService extends IService<ExamStudent> {
 
     void removeByExamDetailCourseId(Long id);
 
-    List<String> listUserClass(Long schoolId, Long examId, String paperNumber);
-
-    ExamStudent listByExamDetailCourseIdLimit1(Long schoolId, Long examDetailCourseId);
-
     List<ExamStudent> listByExamDetailCourseIdNotIntMarkStudent(Long examDetailCourseId, String paperType);
 
-    int countByExamDetailCourseIdAndStudentCode(Long examDetailCourseId, String studentCode);
-
     List<ExamStudent> listByExamDetailCourseId(Long examDetailCourseId);
 
     /**
@@ -55,4 +51,6 @@ public interface ExamStudentService extends IService<ExamStudent> {
      * @return
      */
     ExamStudentDto queryExamStudent(Long examId, String courseCode, String paperNumber);
+
+    List<ExamStudent> saveStudentForExamApply(ExamTask examTask, String extendFields, List<Long> examTaskStudentObjectParamList, Long examDetailCourseId, SysUser sysUser);
 }

+ 0 - 13
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/PrintCommonService.java

@@ -198,19 +198,6 @@ public interface PrintCommonService {
 
     void checkDataMakeup(Long schoolId, ExamDetail examDetail, String courseCode, String paperNumber, SysUser user);
 
-    /**
-     * 根据学生集合创建考生考务数据
-     *
-     * @param examTask                       命题任务
-     * @param extendFields                   扩展字段
-     * @param examTaskStudentObjectParamList 学生参数集合
-     * @param examDetailCourseId             考察表id
-     * @param sysUser                        请求用户
-     * @return 结果
-     */
-    List<ExamStudent> createBatchStudentByStudentList(Long examId, ExamTask examTask,
-                                                      String extendFields, List<ExamTaskStudentObjectParam> examTaskStudentObjectParamList, Long examDetailCourseId, SysUser sysUser);
-
     /**
      * 保存任务附件(导出)
      *

+ 0 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamStudentServiceImpl.java

@@ -219,7 +219,6 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
                 }
             }
             this.removeByIds(idList);
-            basicExamStudentList.stream().map(BasicExamStudent::getClazzId).distinct().forEach(e -> basicTeachClazzService.deleteFreeClazz(e));
         }
     }
 

+ 0 - 9
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTeachClazzServiceImpl.java

@@ -37,13 +37,4 @@ public class BasicTeachClazzServiceImpl extends ServiceImpl<BasicTeachClazzMappe
         return this.baseMapper.findTeachClazzList(examId, courseCode, clazzName);
     }
 
-    @Transactional
-    @Override
-    public void deleteFreeClazz(Long basicTeachClazzId) {
-        if (basicExamStudentService.count(
-                new QueryWrapper<BasicExamStudent>().lambda().eq(BasicExamStudent::getClazzId, basicTeachClazzId))
-                == 0) {
-            this.removeById(basicTeachClazzId);
-        }
-    }
 }

+ 35 - 25
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamStudentServiceImpl.java

@@ -7,19 +7,24 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.dto.ExamStudentCourseDto;
 import com.qmth.distributed.print.business.bean.dto.ExamStudentDto;
 import com.qmth.distributed.print.business.bean.dto.ExamStudentPdfInfoDto;
+import com.qmth.distributed.print.business.bean.params.ExamTaskStudentObjectParam;
 import com.qmth.distributed.print.business.entity.ExamDetailCourse;
 import com.qmth.distributed.print.business.entity.ExamStudent;
+import com.qmth.distributed.print.business.entity.ExamTask;
 import com.qmth.distributed.print.business.mapper.ExamDetailCourseMapper;
 import com.qmth.distributed.print.business.mapper.ExamStudentMapper;
+import com.qmth.distributed.print.business.service.BasicExamStudentService;
 import com.qmth.distributed.print.business.service.ExamStudentService;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.BasicExamStudent;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /**
@@ -34,10 +39,11 @@ import java.util.stream.Collectors;
 public class ExamStudentServiceImpl extends ServiceImpl<ExamStudentMapper, ExamStudent> implements ExamStudentService {
 
     @Resource
-    ExamStudentMapper examStudentMapper;
-
+    private ExamStudentMapper examStudentMapper;
+    @Resource
+    private ExamDetailCourseMapper examDetailCourseMapper;
     @Resource
-    ExamDetailCourseMapper examDetailCourseMapper;
+    private BasicExamStudentService basicExamStudentService;
 
     @Override
     public List<String> listPaperTypeByExamDetailCourseId(String examDetailCourseId) {
@@ -90,29 +96,11 @@ public class ExamStudentServiceImpl extends ServiceImpl<ExamStudentMapper, ExamS
         this.remove(updateWrapper);
     }
 
-    @Override
-    public List<String> listUserClass(Long schoolId, Long examId, String paperNumber) {
-        return this.baseMapper.listUserClass(schoolId, examId, paperNumber);
-    }
-
-    @Override
-    public ExamStudent listByExamDetailCourseIdLimit1(Long schoolId, Long examDetailCourseId) {
-        return this.baseMapper.listByExamDetailCourseIdLimit1(schoolId, examDetailCourseId);
-    }
-
     @Override
     public List<ExamStudent> listByExamDetailCourseIdNotIntMarkStudent(Long examDetailCourseId, String paperType) {
         return this.baseMapper.listByExamDetailCourseIdNotIntMarkStudent(examDetailCourseId, paperType);
     }
 
-    @Override
-    public int countByExamDetailCourseIdAndStudentCode(Long examDetailCourseId, String studentCode) {
-        QueryWrapper<ExamStudent> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(ExamStudent::getExamDetailCourseId, examDetailCourseId)
-                .eq(ExamStudent::getStudentCode, studentCode);
-        return this.count(queryWrapper);
-    }
-
     @Override
     public List<ExamStudent> listByExamDetailCourseId(Long examDetailCourseId) {
         QueryWrapper<ExamStudent> queryWrapper = new QueryWrapper<>();
@@ -133,4 +121,26 @@ public class ExamStudentServiceImpl extends ServiceImpl<ExamStudentMapper, ExamS
     public ExamStudentDto queryExamStudent(Long examId, String courseCode, String paperNumber) {
         return this.baseMapper.queryExamStudent(examId, courseCode, paperNumber);
     }
+
+    @Override
+    public List<ExamStudent> saveStudentForExamApply(ExamTask examTask, String extendFields, List<Long> examTaskStudentObjectParamList, Long examDetailCourseId, SysUser sysUser) {
+        List<ExamStudent> examStudentList = new ArrayList<>();
+        for (Long studentId : examTaskStudentObjectParamList) {
+            BasicExamStudent basicExamStudent = basicExamStudentService.getById(studentId);
+            if (basicExamStudent == null) {
+                continue;
+            }
+            ExamStudent examStudent = new ExamStudent();
+            examStudent.setId(SystemConstant.getDbUuid());
+            examStudent.setSchoolId(sysUser.getSchoolId());
+            examStudent.setExamDetailCourseId(examDetailCourseId);
+            examStudent.setStudentId(studentId);
+            examStudent.setExamId(examTask.getExamId());
+            examStudent.setPaperNumber(examTask.getPaperNumber());
+            examStudent.setCoursePaperId(String.valueOf(examTask.getId()));
+            examStudent.setExtendFields(extendFields);
+            examStudentList.add(examStudent);
+        }
+        return examStudentList;
+    }
 }

+ 12 - 36
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -1103,9 +1103,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId)
                     .eq(ExamTask::getExamId, examTask.getExamId())
                     .eq(ExamTask::getPaperNumber, examTask.getPaperNumber());
-            if (Objects.nonNull(examTask.getId())) {
-                taskQueryWrapper.lambda().ne(ExamTask::getId, examTask.getId());
-            }
             ExamTask task = this.getOne(taskQueryWrapper);
             if (task != null) {
                 throw ExceptionResultEnum.ERROR.exception("试卷编号已存在");
@@ -1158,18 +1155,11 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             examTask.setReview(basicPrintConfig.getReview());
             examTask.setUserId(sysUser.getId());
             examTask.setStatus(ExamStatusEnum.SUBMIT);
-            examTask.setCreateId(sysUser.getId());
-            examTask.setCreateTime(System.currentTimeMillis());
-
-            examTask.setCardRuleId(basicPrintConfig.getCardRuleId());
+            examTask.insertInfo(sysUser.getId());
 
             if (Objects.isNull(examTask.getFlowId())) {
                 if (Objects.nonNull(basicPrintConfig.getReview()) && basicPrintConfig.getReview()) {
-                    Map<String, Object> map = SystemConstant.buildFlowVar(examTask.getId(),
-                            examTask,
-                            TFCustomTypeEnum.ELECTRON_FLOW,
-                            examTask.getUserId(),
-                            false);
+                    Map<String, Object> map = SystemConstant.buildFlowVar(examTask.getId(), examTask, TFCustomTypeEnum.ELECTRON_FLOW, examTask.getUserId(), false);
                     map = activitiService.customFlowStart(map);
                     examTask.setFlowId(SystemConstant.convertIdToLong((String) map.get(SystemConstant.FLOW_ID)));
                     map.computeIfAbsent(SystemConstant.FLOW_JOIN_TYPE, v -> FlowJoinTypeEnum.NEW);
@@ -1187,8 +1177,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             examTaskDetail.setId(SystemConstant.getDbUuid());
             examTaskDetail.setUnexposedPaperType(examTaskDetail.getPaperType());
             examTaskDetail.setExamTaskId(examTask.getId());
-            examTaskDetail.setCreateId(sysUser.getId());
-            examTaskDetail.setCreateTime(System.currentTimeMillis());
+            examTaskDetail.insertInfo(sysUser.getId());
             examTaskDetailService.save(examTaskDetail);
 
             String paperAttachmentIds = examTaskDetail.getPaperAttachmentIds();
@@ -1267,7 +1256,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 List<ExamDetailCourseDto> examDetailCourseList = examDetailService.listByExamIdAndCourseCode(schoolId, examTask.getExamId(), examTask.getCourseCode());
                 if (!CollectionUtils.isEmpty(examDetailCourseList)) {
                     examDetailCourseList.stream().filter(m -> StringUtils.isNotBlank(m.getClazzId())).forEach(m -> {
-//                        usedClassIds.addAll(Arrays.asList(m.getClazzId().split(",")));
                         for (String s : m.getClazzId().split(",")) {
                             usedClassIdsMap.put(s, String.format("%s(%s)", m.getRealName(), m.getLoginName()));
                         }
@@ -1330,18 +1318,11 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                         examDetailCourse.setClazzId(examDetailList.getClassId());
                         examDetailCourse.setTotalSubjects(examDetailList.getStudentCount());
                         examDetailCourse.setCreateId(sysUser.getId());
+                        examDetailCourseService.save(examDetailCourse);
 
                         // 更新实际考生数量
-                        List<ExamTaskStudentObjectParam> examTaskStudentObjectParamList = examDetailList.getExamTaskStudentObjectParamList();
-                        List<ExamStudent> examStudents = printCommonService.createBatchStudentByStudentList(examPrintPlan.getExamId(), examTask, examDetailList.getExtendFields(), examTaskStudentObjectParamList, examDetailCourse.getId(), sysUser);
-
-                        Set<String> classNameSet = new HashSet<>();
-                        for (ExamStudent examStudent : examStudents) {
-                            classNameSet.add(examStudent.getTeachClazzName());
-                        }
-
-                        examDetailCourse.setClazzName(!CollectionUtils.isEmpty(classNameSet) ? String.join(",", classNameSet) : examDetailList.getClassName());
-                        examDetailCourseService.save(examDetailCourse);
+                        List<Long> examTaskStudentObjectParamList = examDetailList.getExamTaskStudentObjectParamList();
+                        List<ExamStudent> examStudents = examStudentService.saveStudentForExamApply(examTask, examDetailList.getExtendFields(), examTaskStudentObjectParamList, examDetailCourse.getId(), sysUser);
 
                         if (!CollectionUtils.isEmpty(examStudents)) {
                             examStudentService.saveBatch(examStudents);
@@ -1375,8 +1356,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                     examDetail.setPrintPlanId(examPrintPlan.getId());
                     examDetail.setPrintPlanName(examPrintPlan.getName());
                     examDetail.setExamId(examPrintPlan.getExamId());
-//                    examDetail.setExamPlace("考点1"); // 默认填充班级所在校区
-//                    examDetail.setExamRoom("考场1"); // 默认填充班级
                     examDetail.setStatus(ExamDetailStatusEnum.NEW);
                     if (!ExamCategoryEnum.REBUILD.equals(basicExam.getCategory())) {
                         examDetail.setExamStartTime(examDetailParams.getExamStartTime());
@@ -1633,7 +1612,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         basicExamStudentQuery.setCourseId(courseId);
         basicExamStudentQuery.setTeacherName(teacher);
         basicExamStudentQuery.setTeachClassName(teachClassName);
-        basicExamStudentQuery.setTeachClassName(className);
+        basicExamStudentQuery.setClassName(className);
         basicExamStudentQuery.setPaperNumber(paperNumber);
         List<BasicExamStudentResult> basicStudentResultList = basicExamStudentService.listByParams(basicExamStudentQuery);
         if (!CollectionUtils.isEmpty(basicStudentResultList)) {
@@ -2100,21 +2079,21 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
      * @param examTaskDetail
      */
     void validSubmitParam(ExamTaskDetail examTaskDetail, String printContent) {
-        if (StringUtils.isBlank(examTaskDetail.getPaperType())) {
-            throw ExceptionResultEnum.ERROR.exception("没有设置卷型");
+        List<PaperInfoVo> paperInfoVoList = ExamTaskUtil.parsePaperAttachmentPath(examTaskDetail.getPaperAttachmentIds());
+        if (StringUtils.isBlank(examTaskDetail.getPaperType()) || CollectionUtils.isEmpty(paperInfoVoList)) {
+            throw ExceptionResultEnum.ERROR.exception("请先设置卷型并上传相关文件");
         }
 
-        List<PaperInfoVo> paperInfoVoList = ExamTaskUtil.parsePaperAttachmentPath(examTaskDetail.getPaperAttachmentIds());
         for (PaperInfoVo paperInfoVo : paperInfoVoList) {
             // 校验试卷必须绑定题卡
             Long cardId = Long.valueOf(paperInfoVo.getCardId());
             if (Objects.isNull(cardId)) {
-                throw ExceptionResultEnum.ERROR.exception("没有绑定题卡");
+                throw ExceptionResultEnum.ERROR.exception("卷型[" + paperInfoVo.getName() + "]没有绑定题卡");
             }
             // 校验题卡是否提交
             ExamCard examCard = examCardService.getById(cardId);
             if (!ExamCardStatusEnum.SUBMIT.name().equals(examCard.getStatus().name())) {
-                throw ExceptionResultEnum.ERROR.exception("绑定的题卡未提交");
+                throw ExceptionResultEnum.ERROR.exception("卷型[" + paperInfoVo.getName() + "]绑定的题卡未提交");
             }
         }
 
@@ -2127,9 +2106,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         // 未上传试卷的类型个数
         long count = paperInfoVoList.stream().filter(m -> Objects.isNull(m.getAttachmentId())).count();
         if (printContent.contains("PAPER")) {
-            if (CollectionUtils.isEmpty(paperInfoVoList)) {
-                throw ExceptionResultEnum.ERROR.exception("没有设置卷型");
-            }
             if (count > 0) {
                 throw ExceptionResultEnum.ERROR.exception("有部分卷型未上传试卷文件");
             }

+ 0 - 33
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java

@@ -1247,39 +1247,6 @@ public class PrintCommonServiceImpl implements PrintCommonService {
         }
     }
 
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public List<ExamStudent> createBatchStudentByStudentList(Long examId, ExamTask examTask, String extendFields, List<ExamTaskStudentObjectParam> examTaskStudentObjectParamList, Long examDetailCourseId, SysUser sysUser) {
-        AtomicInteger atomicInteger = new AtomicInteger(1);
-
-        List<ExamStudent> examStudentList = new ArrayList<>();
-        for (ExamTaskStudentObjectParam student : examTaskStudentObjectParamList) {
-            // 禁用考生
-            if (!student.isEnable()) {
-                continue;
-            }
-            Long studentId = student.getStudentId();
-            BasicExamStudent basicExamStudent = basicExamStudentService.getById(studentId);
-            if (basicExamStudent == null) {
-                throw ExceptionResultEnum.ERROR.exception("ID[" + studentId + "]的考生不存在");
-            }
-            ExamStudent examStudent = new ExamStudent();
-            examStudent.setId(SystemConstant.getDbUuid());
-            examStudent.setSchoolId(sysUser.getSchoolId());
-            examStudent.setExamDetailCourseId(examDetailCourseId);
-            examStudent.setStudentId(studentId);
-            examStudent.setExamId(examId);
-            examStudent.setPaperNumber(examTask.getPaperNumber());
-            examStudent.setCoursePaperId(String.valueOf(examTask.getId()));
-            examStudent.setSiteNumber(String.valueOf(atomicInteger.getAndIncrement()));
-            examStudent.setTeacherId(basicExamStudent.getTeacherId());
-            examStudent.setExtendFields(extendFields);
-            examStudent.setCreateId(sysUser.getId());
-            examStudentList.add(examStudent);
-        }
-        return examStudentList;
-    }
-
     /**
      * 保存任务附件(导出)
      *

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

@@ -11,6 +11,7 @@
             bes.course_id courseId,
             bc.name AS courseName,
             bc.code AS courseCode,
+            bc.teaching_room_id AS teachingRoomId,
             so.name AS teachingRoomName,
             bes.student_name AS studentName,
             bes.student_code AS studentCode,
@@ -196,7 +197,7 @@
                 and (su.login_name like concat('%', #{query.teacherName}, '%') or su.real_name like concat('%', #{query.teacherName}, '%'))
             </if>
             <if test="query.teachClassName != null and query.teachClassName != ''">
-                and stu.teach_class_name like concat('%', #{teachClassName}, '%')
+                and stu.teach_class_name like concat('%', #{query.teachClassName}, '%')
             </if>
             <if test="query.className != null and query.className != ''">
                 and stu.class_name like concat('%', #{query.className}, '%')

+ 3 - 0
distributed-print/install/mysql/upgrade/3.4.0.sql

@@ -100,6 +100,9 @@ ALTER TABLE `basic_exam_student`
 
 update basic_exam_student bes set bes.teach_class_name = (select btc.clazz_name from basic_teach_clazz btc where bes.clazz_id = btc.id) where bes.teach_class_name is null;
 
+ALTER TABLE `mark_paper` ADD COLUMN `question_status` TINYINT(1) NULL DEFAULT '0' COMMENT '试卷结构是否提交' AFTER `show_object_score`;
+update mark_paper set question_status = group_status;
+
 -- drop table if exists exam_detail_course_paper_type;
 -- drop table if exists basic_template_org;
 -- drop table if exists cloud_user_push_status;

+ 0 - 4
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicCourseController.java

@@ -47,9 +47,6 @@ import java.util.stream.Collectors;
 @Validated
 public class BasicCourseController {
 
-    @Resource
-    private PrintCommonService printCommonService;
-
     @Resource
     private BasicCourseService basicCourseService;
     @Resource
@@ -59,7 +56,6 @@ public class BasicCourseController {
     @RequestMapping(value = "/query", method = RequestMethod.POST)
     public Result query(@RequestParam(value = "param", required = false) String param,
                         @RequestParam(value = "teachingRoomId", required = false) Long teachingRoomId) {
-//        List<BasicCourse> basicCourseList = printCommonService.list(param, printPlanId, teachingRoomId);
         CourseResult courseResult = teachCourseService.listUserCourse(param, teachingRoomId);
         return ResultUtil.ok(courseResult);
     }

+ 0 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskApplyController.java

@@ -177,7 +177,6 @@ public class ExamTaskApplyController {
     /**
      * 入库申请-新建任务-保存
      *
-     * @param examTaskApplyTemp
      * @return
      */
     @ApiOperation(value = "入库申请-新建任务-保存")

+ 2 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkQuestionController.java

@@ -79,7 +79,8 @@ public class MarkQuestionController extends BaseController {
                 }
             }
         }
-        MarkQuestionDto markQuestionDto = markQuestionService.pageQuestionsByExamIdAndPaperNumber(examId, paperNumber, paperType, canCreate);
+        MarkQuestionDto markQuestionDto = markQuestionService.pageQuestionsByExamIdAndPaperNumber(examId, paperNumber, paperType);
+        markQuestionDto.setCanCreate(canCreate);
         return ResultUtil.ok(markQuestionDto);
     }
 

+ 9 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/mark/MarkSettingDto.java

@@ -14,6 +14,7 @@ public class MarkSettingDto {
     private String courseCode;
     private String courseName;
     private String paperNumber;
+    private Boolean questionStatus;
     private Boolean groupStatus;
     private MarkMode markMode;
     private String markModeDisplay;
@@ -53,6 +54,14 @@ public class MarkSettingDto {
         this.paperNumber = paperNumber;
     }
 
+    public Boolean getQuestionStatus() {
+        return questionStatus;
+    }
+
+    public void setQuestionStatus(Boolean questionStatus) {
+        this.questionStatus = questionStatus;
+    }
+
     public Boolean getGroupStatus() {
         return groupStatus;
     }

+ 12 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkPaper.java

@@ -112,6 +112,8 @@ public class MarkPaper implements Serializable {
 
     @ApiModelProperty(value = "评卷是否显示客观分")
     private Boolean showObjectScore;
+    @ApiModelProperty(value = "试卷结构是否提交")
+    private Boolean questionStatus;
     @ApiModelProperty(value = "评卷分组是否提交")
     private Boolean groupStatus;
 
@@ -146,6 +148,7 @@ public class MarkPaper implements Serializable {
         this.studentCount = 0;
         this.uploadCount = 0;
         this.absentCount = 0;
+        this.questionStatus = false;
         this.groupStatus = false;
         this.openMarkClass = false;
         this.openDoubleMarking = false;
@@ -381,6 +384,14 @@ public class MarkPaper implements Serializable {
         this.showObjectScore = showObjectScore;
     }
 
+    public Boolean getQuestionStatus() {
+        return questionStatus;
+    }
+
+    public void setQuestionStatus(Boolean questionStatus) {
+        this.questionStatus = questionStatus;
+    }
+
     public Boolean getGroupStatus() {
         return groupStatus;
     }
@@ -455,6 +466,7 @@ public class MarkPaper implements Serializable {
                 ", markEndTime=" + markEndTime +
                 ", sheetView=" + sheetView +
                 ", showObjectScore=" + showObjectScore +
+                ", questionStatus=" + questionStatus +
                 ", groupStatus=" + groupStatus +
                 ", openMarkClass=" + openMarkClass +
                 ", status=" + status +

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkQuestionService.java

@@ -68,7 +68,7 @@ public interface MarkQuestionService extends IService<MarkQuestion> {
 
     List<MarkQuestion> listByExamIdAndPaperNumberAndPaperIndexAndPageIndex(Long examId, String paperNumber, Integer paperIndex, Integer pageIndex, boolean isObjective);
 
-    MarkQuestionDto pageQuestionsByExamIdAndPaperNumber(Long examId, String paperNumber, String paperType, boolean canCreate);
+    MarkQuestionDto pageQuestionsByExamIdAndPaperNumber(Long examId, String paperNumber, String paperType);
 
     void updateGroupNumberByExamIdAndPaperNumberAndGroupNumber(Integer newGroupNumber, Long examId, String paperNumber,
             Integer groupNumber);

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

@@ -208,6 +208,7 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
         updateWrapper.lambda().set(MarkPaper::getObjectiveScore, objectiveScore)
                 .set(MarkPaper::getSubjectiveScore, subjectiveScore)
                 .set(MarkPaper::getTotalScore, totalScore)
+                .set(MarkPaper::getQuestionStatus, true)
                 .eq(MarkPaper::getExamId, examId)
                 .eq(MarkPaper::getPaperNumber, paperNumber);
         markPaperService.update(updateWrapper);
@@ -449,12 +450,11 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
     }
 
     @Override
-    public MarkQuestionDto pageQuestionsByExamIdAndPaperNumber(Long examId, String paperNumber, String paperType, boolean canCreate) {
+    public MarkQuestionDto pageQuestionsByExamIdAndPaperNumber(Long examId, String paperNumber, String paperType) {
         MarkQuestionDto markQuestionDto = new MarkQuestionDto();
-        markQuestionDto.setCanCreate(canCreate);
+        MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
         List<MarkQuestion> markQuestionList = this.listQuestionByExamIdAndPaperNumberAndPaperType(examId, paperNumber, null);
-        long subjectiveCount = markQuestionList.stream().filter(m -> !m.getObjective() && m.getTotalScore() != null && m.getUpdateTime() != null).count();
-        markQuestionDto.setQuestionSubmit(subjectiveCount > 0);
+        markQuestionDto.setQuestionSubmit(markPaper.getQuestionStatus());
         long objectiveCount = markQuestionList.stream().filter(m -> m.getObjective() && StringUtils.isNotBlank(m.getAnswer()) && m.getUpdateTime() != null).count();
         markQuestionDto.setObjectiveSubmit(objectiveCount > 0);
         markQuestionDto.setQuestions(markQuestionList);

+ 1 - 0
teachcloud-mark/src/main/resources/mapper/MarkPaperMapper.xml

@@ -35,6 +35,7 @@
         bc.name courseName,
         mp.paper_number paperNumber,
         mp.mark_mode markMode,
+        mp.question_status questionStatus,
         mp.group_status groupStatus,
         mp.paper_type paperType
         FROM