Quellcode durchsuchen

Merge remote-tracking branch 'origin/dev_v3.1.0' into dev_v3.1.0

wangliang vor 3 Jahren
Ursprung
Commit
c9ccd99879

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamStudentMapper.java

@@ -51,5 +51,5 @@ public interface ExamStudentMapper extends BaseMapper<ExamStudent> {
 
     List<Map> listStudentScoreSync(@Param("schoolId") Long schoolId, @Param("studentCode") String studentCode, @Param("examNumber") String examNumber, @Param("subjectCode") String subjectCode, @Param("printPlanId") Long printPlanId);
 
-    List<ExamStudentCourseClassDto> listExamStudentByPaperNumberAndPaperType(@Param("paperNumber") String paperNumber, @Param("paperType") String paperType);
+    List<ExamStudentCourseClassDto> listExamStudentByPaperNumberAndPaperType(@Param("batchId") Long batchId, @Param("paperNumber") String paperNumber, @Param("paperType") String paperType);
 }

+ 7 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradeBatchServiceImpl.java

@@ -65,9 +65,6 @@ public class GradeBatchServiceImpl extends ServiceImpl<GradeBatchMapper, GradeBa
     @Resource
     ExamStudentMapper examStudentMapper;
 
-    @Resource
-    GradeBatchStudentService gradeBatchStudentService;
-
     @Resource
     GradeBatchStudentClazzService gradeBatchStudentClazzService;
 
@@ -184,7 +181,7 @@ public class GradeBatchServiceImpl extends ServiceImpl<GradeBatchMapper, GradeBa
 
         List<ExamStudentCourseClassDto> finalList = new ArrayList<>();
         for (GradeBatchPaper gradeBatchPaper : gradeBatchPaperList) {
-            List<ExamStudentCourseClassDto> examStudentClassList = examStudentMapper.listExamStudentByPaperNumberAndPaperType(gradeBatchPaper.getPaperNumber(), gradeBatchPaper.getPaperType());
+            List<ExamStudentCourseClassDto> examStudentClassList = examStudentMapper.listExamStudentByPaperNumberAndPaperType(batchId, gradeBatchPaper.getPaperNumber(), gradeBatchPaper.getPaperType());
             if (!examStudentClassList.isEmpty()) {
                 finalList.addAll(examStudentClassList);
             }
@@ -293,10 +290,16 @@ public class GradeBatchServiceImpl extends ServiceImpl<GradeBatchMapper, GradeBa
             XSSFCell cell6 = row.createCell(6);
             cell6.setCellStyle(unlockStyle);
             cell6.setCellType(CellType.STRING);
+            if(StringUtils.isNotBlank(examStudentCourseDto.getTeacherName())){
+                cell6.setCellValue(examStudentCourseDto.getTeacherName());
+            }
 
             XSSFCell cell7 = row.createCell(7);
             cell7.setCellStyle(unlockStyle);
             cell7.setCellType(CellType.STRING);
+            if(StringUtils.isNotBlank(examStudentCourseDto.getTeacherNumber())){
+                cell7.setCellValue(examStudentCourseDto.getTeacherNumber());
+            }
         }
 
         for (int i = 0; i < fieldsNameList.length; i++) {

+ 41 - 26
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradePaperStructServiceImpl.java

@@ -165,7 +165,7 @@ public class GradePaperStructServiceImpl extends ServiceImpl<GradePaperStructMap
                 .eq(GradePaperStruct::getPaperNumber, paperNumber)
                 .eq(GradePaperStruct::getPaperType, paperType));
         this.saveBatch(gradePaperStructList);
-        gradeBatchPaperService.updatePaperAndBatchStatus(schoolId,paperNumber,paperType);
+        gradeBatchPaperService.updatePaperAndBatchStatus(schoolId, paperNumber, paperType);
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -273,7 +273,7 @@ public class GradePaperStructServiceImpl extends ServiceImpl<GradePaperStructMap
             }
         }
 
-        String cloudInfoJson = cloudMarkingTaskUtils.queryPaperStructure(schoolId, examId, subjectCode,paperType);
+        String cloudInfoJson = cloudMarkingTaskUtils.queryPaperStructure(schoolId, examId, subjectCode, paperType);
         examPaperStructure.setCloudInfoJson(cloudInfoJson);
         examPaperStructure.setStructureChange(false);
         examPaperStructureService.updateById(examPaperStructure);
@@ -299,6 +299,44 @@ public class GradePaperStructServiceImpl extends ServiceImpl<GradePaperStructMap
         Long schoolId = requestUser.getSchoolId();
         Long userId = requestUser.getId();
 
+        return datasource.stream().flatMap(e -> {
+            GradePaperStruct gradePaperStruct = new GradePaperStruct();
+            gradePaperStruct.setSchoolId(schoolId);
+            gradePaperStruct.setPaperNumber(paperNumber);
+            gradePaperStruct.setPaperType(paperType);
+            gradePaperStruct.setPaperName(paperName);
+            gradePaperStruct.setQuestionName(e.getBigTopicName() + " " + e.getBigQuestionNumber() + SystemConstant.HYPHEN + e.getSmallQuestionNumber());
+            gradePaperStruct.setNumberType(e.getNumberType());
+            gradePaperStruct.setBigQuestionNumber(e.getBigQuestionNumber());
+            gradePaperStruct.setSmallQuestionNumber(e.getSmallQuestionNumber());
+            gradePaperStruct.setBigTopicName(e.getBigTopicName());
+            gradePaperStruct.setFullScore(e.getFullScore());
+            gradePaperStruct.setScoreRules(e.getScoreRules());
+            if (SystemConstant.strNotNull(e.getKnowledgeDimension())) {
+                gradePaperStruct.setKnowledgeDimension(e.getKnowledgeDimension());
+            }
+            if (SystemConstant.strNotNull(e.getAbilityDimension())) {
+                gradePaperStruct.setAbilityDimension(e.getAbilityDimension());
+            }
+            gradePaperStruct.insertInfo(userId);
+            return Stream.of(gradePaperStruct);
+        }).collect(Collectors.toList());
+    }
+
+    /**
+     * 保存教研分析分析中基础配置命题蓝图设置保存时的数据校验
+     * <p>
+     * 1.优先校验云阅卷试卷结构返回字段
+     * 2.如果云阅卷试卷结构返回字段为空,则和知学知考原字段做比较
+     * </p>
+     *
+     * @param datasource  保存的试卷结构数据集
+     * @param paperNumber 试卷编号
+     * @param paperType   试卷类型
+     * @param requestUser 请求用户
+     */
+    private void checkPaperStructWhenSave(List<GradePaperStructDatasource> datasource, String paperNumber, String paperType, SysUser requestUser) {
+        Long schoolId = requestUser.getSchoolId();
         ExamPaperStructure examPaperStructure = examPaperStructureService.getOne(new QueryWrapper<ExamPaperStructure>()
                 .lambda()
                 .eq(ExamPaperStructure::getSchoolId, schoolId)
@@ -307,7 +345,7 @@ public class GradePaperStructServiceImpl extends ServiceImpl<GradePaperStructMap
         if (Objects.isNull(examPaperStructure)) {
             throw ExceptionResultEnum.ERROR.exception("该试卷还没有上传评卷参数设置");
         }
-        // 客观题
+        //客观题
         List<Question> examPaperObjList = new ArrayList<>();
         // 主观题
         List<Question> examPaperSubList = new ArrayList<>();
@@ -364,28 +402,5 @@ public class GradePaperStructServiceImpl extends ServiceImpl<GradePaperStructMap
             throw ExceptionResultEnum.ERROR.exception(code, "试卷编号为【" + paperNumber + "】,试卷类型为【" + paperType +
                     "】的分析试卷结构和 [" + comparison + "] 试卷结构在【" + QuestionType.SUBJECTIVE.getDesc() + "】上不一致");
         }
-
-        return datasource.stream().flatMap(e -> {
-            GradePaperStruct gradePaperStruct = new GradePaperStruct();
-            gradePaperStruct.setSchoolId(schoolId);
-            gradePaperStruct.setPaperNumber(paperNumber);
-            gradePaperStruct.setPaperType(paperType);
-            gradePaperStruct.setPaperName(paperName);
-            gradePaperStruct.setQuestionName(e.getBigTopicName() + " " + e.getBigQuestionNumber() + SystemConstant.HYPHEN + e.getSmallQuestionNumber());
-            gradePaperStruct.setNumberType(e.getNumberType());
-            gradePaperStruct.setBigQuestionNumber(e.getBigQuestionNumber());
-            gradePaperStruct.setSmallQuestionNumber(e.getSmallQuestionNumber());
-            gradePaperStruct.setBigTopicName(e.getBigTopicName());
-            gradePaperStruct.setFullScore(e.getFullScore());
-            gradePaperStruct.setScoreRules(e.getScoreRules());
-            if (SystemConstant.strNotNull(e.getKnowledgeDimension())) {
-                gradePaperStruct.setKnowledgeDimension(e.getKnowledgeDimension());
-            }
-            if (SystemConstant.strNotNull(e.getAbilityDimension())) {
-                gradePaperStruct.setAbilityDimension(e.getAbilityDimension());
-            }
-            gradePaperStruct.insertInfo(userId);
-            return Stream.of(gradePaperStruct);
-        }).collect(Collectors.toList());
     }
 }

+ 10 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/OpenApiServiceImpl.java

@@ -10,6 +10,7 @@ import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.entity.BasicMajor;
 import com.qmth.teachcloud.common.entity.BasicSchool;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.service.BasicMajorService;
 import org.springframework.stereotype.Service;
 
@@ -199,9 +200,13 @@ public class OpenApiServiceImpl implements OpenApiService {
                 BasicMajor basicMajor = basicMajorService.getById(m.getMajorId());
                 examStudentScore.setMajor(basicMajor == null ? null : basicMajor.getName());
                 examStudentScore.setClassName(m.getClazzName());
-                GradeBatchStudentClazz gradeBatchStudentClazz = gradeBatchStudentClazzList.isEmpty() ? null : gradeBatchStudentClazzList.stream().filter(s -> s.getClazzId().equals(m.getClazzId().toString()) && s.getPaperNumber().equals(examStudentScore.getPaperNumber()) && s.getPaperType().equals(examStudentScore.getPaperType())).findFirst().orElseGet(null);
-                examStudentScore.setTeacherName(gradeBatchStudentClazz != null ? gradeBatchStudentClazz.getTeacherName() : null);
-                examStudentScore.setTeacherCode(gradeBatchStudentClazz != null ? gradeBatchStudentClazz.getTeacherNumber() : null);
+                List<GradeBatchStudentClazz> gradeBatchStudentClazzs = gradeBatchStudentClazzList.isEmpty() ? null : gradeBatchStudentClazzList.stream().filter(s -> s.getClazzId().equals(m.getClazzId().toString()) && s.getPaperNumber().equals(examStudentScore.getPaperNumber()) && s.getPaperType().equals(examStudentScore.getPaperType())).collect(Collectors.toList());
+                GradeBatchStudentClazz gradeBatchStudentClazz = gradeBatchStudentClazzs == null || gradeBatchStudentClazzs.isEmpty() ? null : gradeBatchStudentClazzs.get(0);
+                if(gradeBatchStudentClazz == null){
+                    throw ExceptionResultEnum.ERROR.exception(String.format("科目[%s],试卷编号[%s],班级[%s]未导入任课老师", examTask.getCourseName(), examTask.getPaperNumber(), m.getClazzName()));
+                }
+                examStudentScore.setTeacherName(gradeBatchStudentClazz.getTeacherName());
+                examStudentScore.setTeacherCode(gradeBatchStudentClazz.getTeacherNumber());
                 examStudentScore.setStatus(m.getStatus());
                 examStudentScore.setTotalScore(m.getTotalScore());
                 examStudentScore.setObjectiveScore(m.getObjectiveScore());
@@ -210,6 +215,7 @@ public class OpenApiServiceImpl implements OpenApiService {
                 return examStudentScore;
             }
         }).collect(Collectors.toList());
-        return examStudentScoreList.stream().filter(Objects::nonNull).collect(Collectors.toList());
+        List<ExamStudentScore> list = examStudentScoreList.stream().filter(Objects::nonNull).collect(Collectors.toList());
+        return list;
     }
 }

+ 21 - 9
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/PdfUtil.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.util;
 
+import com.alibaba.fastjson.JSON;
 import com.itextpdf.text.Document;
 import com.itextpdf.text.Rectangle;
 import com.itextpdf.text.pdf.*;
@@ -165,21 +166,15 @@ public class PdfUtil {
         PageSizeEnum pageSizeEnum = null;
         for (int i = 1; i <= totalPages; i++) {
             Rectangle pageSize = reader.getPageSize(i);
+            System.out.println(JSON.toJSONString(pageSize));
             float width = pageSize.getWidth();
             float height = pageSize.getHeight();
-            if (width <= height) {
-                min = width;
-                max = height;
-            } else {
-                min = height;
-                max = width;
-            }
             if (pageSizeEnum != null) {
-                if (!pageSizeEnum.equals(PageSizeEnum.convertToEnum(min, max))) {
+                if (!pageSizeEnum.equals(PageSizeEnum.convertToEnum(width, height))) {
                     throw ExceptionResultEnum.ERROR.exception("上传的试卷pdf中存在纸张格式不一样的");
                 }
             } else {
-                pageSizeEnum = PageSizeEnum.convertToEnum(min, max);
+                pageSizeEnum = PageSizeEnum.convertToEnum(width, height);
             }
         }
 
@@ -272,4 +267,21 @@ public class PdfUtil {
             }
         }
     }
+
+    public static void main(String[] args) {
+        File file2 = new File("E:\\file\\1.pdf");
+        try {
+            System.out.println(PdfUtil.getPdfFormat(file2));
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        File file1 = new File("E:\\file\\1左.pdf");
+        try {
+            System.out.println(PdfUtil.getPdfFormat(file1));
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+    }
 }

+ 31 - 12
distributed-print-business/src/main/resources/mapper/ExamStudentMapper.xml

@@ -226,18 +226,37 @@
     <select id="listExamStudentByPaperNumberAndPaperType"
             resultType="com.qmth.distributed.print.business.bean.dto.ExamStudentCourseClassDto">
         SELECT
-            distinct edc.course_code courseCode,
-            edc.course_name courseName,
-            edc.paper_number paperNumber,
-            es.paper_type paperType,
-            es.clazz_id clazzId,
-            es.clazz_name clazzName
+            a.course_code courseCode,
+            a.course_name courseName,
+            a.paper_number paperNumber,
+            a.paper_type paperType,
+            a.clazz_id clazzId,
+            a.clazz_name clazzName,
+            b.teacher_name teacherName,
+            b.teacher_number teacherNumber
         FROM
-            exam_student es
-                JOIN
-            exam_detail_course edc ON es.exam_detail_course_id = edc.id
-        WHERE
-            edc.paper_number = #{paperNumber}
-          AND es.paper_type = #{paperType}
+            (SELECT DISTINCT
+                 edc.course_code,
+                 edc.course_name,
+                 edc.paper_number,
+                 es.paper_type,
+                 es.clazz_id,
+                 es.clazz_name
+             FROM
+                 exam_student es
+                     JOIN exam_detail_course edc ON es.exam_detail_course_id = edc.id
+             WHERE
+                 edc.paper_number = #{paperNumber}
+               AND es.paper_type = #{paperType}) a
+                LEFT JOIN
+            (SELECT
+                 *
+             FROM
+                 grade_batch_student_clazz
+             WHERE
+                 batch_id = #{batchId}) b ON a.course_code = b.course_code
+                AND a.paper_number = b.paper_number
+                AND a.paper_type = b.paper_type
+                AND a.clazz_id = b.clazz_id
     </select>
 </mapper>

+ 3 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/PageSizeEnum.java

@@ -111,6 +111,9 @@ public enum PageSizeEnum {
             if (standardWidth - deviation <= width && width <= standardWidth + deviation && standardHeight - deviation <= height && height <= standardHeight + deviation){
                 return e;
             }
+            if (standardWidth - deviation <= height && height <= standardWidth + deviation && standardHeight - deviation <= width && width <= standardHeight + deviation){
+                throw ExceptionResultEnum.ERROR.exception("请检查上传的【"+ e.name() + "】纸张字体方向是否反了");
+            }
         }
         throw ExceptionResultEnum.ERROR.exception("pdf格式不符合标准规范,请提供标准的pdf(可使用wps、office的word转换)");
     }

+ 1 - 1
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/CallPrintOpenApiServiceImpl.java

@@ -171,7 +171,7 @@ public class CallPrintOpenApiServiceImpl implements CallPrintOpenApiService {
                 log.info("callResult:{}", JacksonUtil.parseJson(callResult));
                 Result result = JSON.parseObject(callResult, Result.class);
                 if (result.getData() == null){
-                    throw ExceptionResultEnum.ERROR.exception("未找到考生信息");
+                    throw ExceptionResultEnum.ERROR.exception(result.getMessage());
                 }
                 Object data = result.getData();
                 examStudentScoreCell = JSON.parseArray(JSON.toJSONString(data), ExamStudentScore.class);