caozixuan 4 lat temu
rodzic
commit
00618af0ee

+ 61 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExtendFieldsDto.java

@@ -0,0 +1,61 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+/**
+ * @Description: 考务学生-扩展字段
+ * @Author: CaoZixuan
+ * @Date: 2021-04-21
+ */
+public class ExtendFieldsDto {
+
+    /**
+     * 考务字段代码
+     */
+    private String code;
+
+    /**
+     * 考务字段名称
+     */
+    private String name;
+
+    /**
+     * 考务字段是否可用(仅考务规则有)
+     */
+    private Boolean enable;
+
+    /**
+     * 考务字段值(仅考生有)
+     */
+    private String value;
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+}

+ 2 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/CommonService.java

@@ -164,6 +164,8 @@ public interface CommonService {
      */
     public void checkData(Long schoolId, String courseCode, String paperNumber,SysUser user) throws IOException;
 
+//    public void checkDataForExamination()
+
     /**
      * 根据orgId查询所有子机构ID集合
      * @return

+ 8 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java

@@ -93,4 +93,12 @@ public interface ExamTaskService extends IService<ExamTask> {
     ExamTask getByCourseCodeAndPaperNumber(Long schoolId, String courseCode, String paperNumber);
 
     IPage<ClientExamTaskDto> listTryTask(Long schoolId, String machineCode, Long orgId, Long printPlanId, String courseCode, String paperNumber, Boolean isTry, Boolean isPass, Integer pageNumber, Integer pageSize);
+
+    /**
+     * 检测考务数据的试卷编号和课程代码的正确性(根据试卷编号查询命题任务的试卷编号,如果存在,查询该命题任务记录对应的课程代码和考务数据导入的该条课程代码是否一致)
+     * @param schoolId 考务数据导入的学校代码
+     * @param paperNumber 考务数据导入的试卷编号
+     * @param courseCode 考务数据导入的课程代码
+     */
+    void verifyCourseCodeByPaperNumber(Long schoolId,String paperNumber,String courseCode);
 }

+ 15 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -27,6 +27,7 @@ import org.apache.poi.ss.usermodel.HorizontalAlignment;
 import org.apache.poi.xssf.usermodel.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -461,6 +462,9 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             String paperNumber = String.valueOf(map.get("paperNumber"));
             String studentName = String.valueOf(map.get("studentName"));
             String studentCode = String.valueOf(map.get("studentCode"));
+
+            List<FieldsDto> fieldsDtoList = (List<FieldsDto>) map.get("secondaryFieldList");
+            List<ExtendFieldsDto> extendFieldsDtoList = this.getExtendFieldsByFields(fieldsDtoList);
             List<ExamDetail> examDetailList = this.list(new QueryWrapper<ExamDetail>().lambda()
                     .eq(ExamDetail::getPrintPlanId, printPlanId)
                     .eq(ExamDetail::getExamPlace, examPlace)
@@ -488,6 +492,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             examStudent.setStudentName(studentName);
             examStudent.setStudentCode(studentCode);
             examStudent.setTicketNumber(studentCode);
+            examStudent.setExtendFields(JSON.toJSONString(extendFieldsDtoList));
             examStudent.setSiteNumber("");
             examStudent.setCreateId(userId);
             examStudent.setUpdateId(userId);
@@ -635,4 +640,14 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         // 删除exam_student 表数据
         examStudentService.remove(new QueryWrapper<ExamStudent>().lambda().in(ExamStudent::getId, examStudentIds));
     }
+
+    private List<ExtendFieldsDto> getExtendFieldsByFields(List<FieldsDto> fieldsDtoList){
+        List<ExtendFieldsDto> extendFieldsDtoList = new ArrayList<>();
+        for (FieldsDto fieldsDto : fieldsDtoList) {
+            ExtendFieldsDto extendFieldsDto = new ExtendFieldsDto();
+            BeanUtils.copyProperties(fieldsDto,extendFieldsDto);
+            extendFieldsDtoList.add(extendFieldsDto);
+        }
+        return extendFieldsDtoList;
+    }
 }

+ 15 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -739,4 +739,19 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         IPage<ClientExamTaskDto> examTaskDtoIPage = this.baseMapper.listClientExamTaskPage(page, schoolId, machineCode, printPlanId, courseCode, paperNumber, isTry, isPass, orgIds);
         return examTaskDtoIPage;
     }
+
+    @Transactional
+    @Override
+    public void verifyCourseCodeByPaperNumber(Long schoolId,String paperNumber, String courseCode) {
+        List<ExamTask> examTaskList = this.list(new QueryWrapper<ExamTask>().lambda()
+                .eq(ExamTask::getPaperNumber,paperNumber).eq(ExamTask::getSchoolId,schoolId));
+        if (examTaskList.size() > 1){
+            throw ExceptionResultEnum.ERROR.exception("异常 : 有多条命题任务记录 schoolId = " + schoolId + " paperNumber = " + paperNumber);
+        }else if (examTaskList.size() == 1){
+            ExamTask examTask = examTaskList.get(0);
+            if (!courseCode.equals(examTask.getCourseCode())){
+                throw ExceptionResultEnum.ERROR.exception("要导入的考务数据的试卷编号在命题任务中已存在,但该试卷编号对应的考务数据课程代码和命题任务中的课程代码不匹配  试卷编号 : " + paperNumber);
+            }
+        }
+    }
 }

+ 5 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -109,6 +109,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     @Resource
     RedisTemplate<String, Object> redisTemplate;
 
+
     /**
      * 创建pdf逻辑
      *
@@ -470,6 +471,9 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     }
                 }
             }
+            // 校验试卷编号
+            examTaskService.verifyCourseCodeByPaperNumber(schoolId,paperNumber,courseCode);
+
             // 校验课程信息
             basicCourseService.verifyCourseInfo(schoolId, courseCode, courseName, userId);
 
@@ -494,6 +498,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             dataMap.put("printPlanName", printPlanName);
             dataList.add(dataMap);
         }
+        System.out.println(JSON.toJSONString(dataList));
         // 校验课程代码和试卷编号在印刷计划下是1对1的关系
         List<String> courseCodeList = dataList.stream().map(e -> String.valueOf(e.get("courseCode"))).distinct().collect(Collectors.toList());
         List<String> paperNumberList = dataList.stream().map(e -> String.valueOf(e.get("paperNumber"))).distinct().collect(Collectors.toList());