Browse Source

Merge branch 'dev_v3.2.0' into release_v3.2.0
merge

wangliang 2 years ago
parent
commit
cfdd2aa4ec

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

@@ -71,6 +71,7 @@ public interface GradePaperStructService extends IService<GradePaperStruct> {
      *
      * @param schoolId    学校id
      * @param paperNumber 试卷编号
+     * @param paperType   试卷类型
      */
-    void updateExamCloudPaperStruct(Long schoolId, String paperNumber);
+    void updateExamCloudPaperStruct(Long schoolId, String paperNumber, String paperType);
 }

+ 17 - 14
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncReportServiceImpl.java

@@ -24,7 +24,6 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -149,7 +148,7 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
         TaskResultEnum result = null;
         TaskStatusEnum status;
         String errorMessage = null;
-        String source = null;
+        String source;
         String remark = null;
         Long schoolId = tbSyncTask.getSchoolId();
         try {
@@ -164,13 +163,10 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
                 throw ExceptionResultEnum.ERROR.exception("没有可分析的课程");
             }
 
-            List<String> courseCodes = gradeBatchPaperList.stream().map(m -> m.getPaperNumber() + m.getPaperType()).collect(Collectors.toList());
-            Collections.sort(courseCodes);
+            List<String> courseCodes = gradeBatchPaperList.stream().map(m -> m.getPaperNumber() + m.getPaperType()).sorted().collect(Collectors.toList());
             source = Base64Util.encode(ShaUtils.sha1(gradeBatch.getThirdExamId() + courseCodes.toString()));
             UpdateWrapper<GradeBatch> gradeBatchUpdateWrapper = new UpdateWrapper<>();
-            if (source != null) {
-                gradeBatchUpdateWrapper.lambda().set(GradeBatch::getSource, source);
-            }
+            gradeBatchUpdateWrapper.lambda().set(GradeBatch::getSource, source);
             gradeBatchUpdateWrapper.lambda().set(GradeBatch::getReportFilePath, null).eq(GradeBatch::getId, gradeBatch.getId());
             gradeBatchService.update(gradeBatchUpdateWrapper);
             teachCloudReportTaskUtils.startCalc(schoolId, gradeBatch.getThirdExamId(), courseCodes);
@@ -180,16 +176,23 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
             result = TaskResultEnum.ERROR;
             errorMessage = e.getMessage();
             if (e instanceof ApiException) {
-                ApiException apiException = (ApiException) e;
-                if (SystemConstant.strNotNull(errorMessage) && errorMessage.contains("(") && errorMessage.contains("(") && errorMessage.contains("【") && errorMessage.contains("】")) {
-                    String code = errorMessage.substring(errorMessage.indexOf("(") + 1, errorMessage.indexOf(")"));
+                // "...【试卷编号】(试卷类型)...[异常代码]"
+                if (SystemConstant.strNotNull(errorMessage) && errorMessage.contains("【") && errorMessage.contains("】") && errorMessage.contains("[") && errorMessage.contains("]")) {
+                    String code = errorMessage.substring(errorMessage.indexOf("[") + 1, errorMessage.indexOf("]"));
+
                     if (String.valueOf(ExceptionResultEnum.PAPER_STRUCT_EXCEPTION.getCode()).equals(code)) {
                         // 截取试卷编号当做remark
-                        remark = errorMessage.substring(errorMessage.indexOf("【") + 1, errorMessage.indexOf("】"));
-                        errorMessage = errorMessage.substring(0, errorMessage.indexOf("("));
+                        String paperNumber = errorMessage.substring(errorMessage.indexOf("【") + 1, errorMessage.indexOf("】"));
+                        remark = paperNumber;
+                        errorMessage = errorMessage.substring(0, errorMessage.indexOf("["));
                         // 更新状态(structureChange)
                         UpdateWrapper<ExamPaperStructure> updateWrapper = new UpdateWrapper<>();
-                        updateWrapper.lambda().set(ExamPaperStructure::getStructureChange, true).eq(ExamPaperStructure::getSchoolId, schoolId).eq(ExamPaperStructure::getPaperNumber, remark);
+                        updateWrapper.lambda().set(ExamPaperStructure::getStructureChange, true).eq(ExamPaperStructure::getSchoolId, schoolId).eq(ExamPaperStructure::getPaperNumber, paperNumber);
+                        if (errorMessage.contains("(") && errorMessage.contains(")")) {
+                            String paperType = errorMessage.substring(errorMessage.indexOf("(") + 1, errorMessage.indexOf(")"));
+                            remark = paperNumber + "(" + paperType + ")";
+                            updateWrapper.lambda().eq(ExamPaperStructure::getPaperType, paperType);
+                        }
                         examPaperStructureService.update(updateWrapper);
                     }
                 }
@@ -277,7 +280,7 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
                         }
                     }
                     // 删除批次
-                    boolean batchDeleteResult = true;
+                    boolean batchDeleteResult;
                     batchDeleteResult = teachCloudReportTaskUtils.syncDeleteExam(schoolId, thirdExamId);
                     if (batchDeleteResult) {
                         gradeBatchService.removeById(gradeBatch.getId());

+ 16 - 9
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradePaperStructServiceImpl.java

@@ -249,12 +249,18 @@ public class GradePaperStructServiceImpl extends ServiceImpl<GradePaperStructMap
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void updateExamCloudPaperStruct(Long schoolId, String paperNumber) {
+    public void updateExamCloudPaperStruct(Long schoolId, String paperNumber, String paperType) {
         // 更新试卷结构参数的云阅卷试卷结构
-        List<ExamPaperStructure> examPaperStructureList = examPaperStructureService.list(new QueryWrapper<ExamPaperStructure>()
-                .lambda()
+        QueryWrapper<ExamPaperStructure> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda()
                 .eq(ExamPaperStructure::getSchoolId, schoolId)
-                .eq(ExamPaperStructure::getPaperNumber, paperNumber));
+                .eq(ExamPaperStructure::getPaperNumber, paperNumber);
+        if (SystemConstant.strNotNull(paperType)){
+            queryWrapper.lambda().eq(ExamPaperStructure::getPaperType,paperType);
+        }
+
+        List<ExamPaperStructure> examPaperStructureList = examPaperStructureService.list(queryWrapper);
+
         if (examPaperStructureList.size() != 1) {
             throw ExceptionResultEnum.ERROR.exception("知学知考试卷结构异常");
         }
@@ -264,7 +270,6 @@ public class GradePaperStructServiceImpl extends ServiceImpl<GradePaperStructMap
         // 科目代码(课程代码+卷型+课程序号)
         String subjectCode = examPaperStructure.getCourseCode().concat(examPaperStructure.getPaperType()).concat(examPaperStructure.getSequence());
 
-        String paperType = null;
         String examPaperObj = examPaperStructure.getObjectiveStructure();
         if (SystemConstant.strNotNull(examPaperObj)) {
             List<Question> examPaperObjList = JSON.parseArray(examPaperObj, Question.class);
@@ -279,10 +284,12 @@ public class GradePaperStructServiceImpl extends ServiceImpl<GradePaperStructMap
         examPaperStructureService.updateById(examPaperStructure);
 
         // 更新grade_paper_struct
-        this.remove(new QueryWrapper<GradePaperStruct>()
-                .lambda()
-                .eq(GradePaperStruct::getSchoolId, schoolId)
-                .eq(GradePaperStruct::getPaperNumber, paperNumber));
+        QueryWrapper<GradePaperStruct> willDeleteQueryWrapper = new QueryWrapper<>();
+        willDeleteQueryWrapper.lambda().eq(GradePaperStruct::getSchoolId,schoolId).eq(GradePaperStruct::getPaperNumber,paperNumber);
+        if (SystemConstant.strNotNull(paperType)){
+            willDeleteQueryWrapper.lambda().eq(GradePaperStruct::getPaperType,paperType);
+        }
+        this.remove(willDeleteQueryWrapper);
     }
 
     /**

File diff suppressed because it is too large
+ 446 - 458
distributed-print-business/src/main/resources/db/2、init-table-data.sql


+ 3 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/GradePaperStructController.java

@@ -95,12 +95,13 @@ public class GradePaperStructController {
     @ApiOperation(value = "成绩分析试卷结构-更新试卷机构")
     @RequestMapping(value = "/change_paper_structure", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "更新成功", response = Result.class)})
-    public Result updateExamCloudPaperStruct(@ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) {
+    public Result updateExamCloudPaperStruct(@ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber,
+                                             @ApiParam(value = "试卷类型") @RequestParam(required = false) String paperType) {
         if (SystemConstant.isOneNull(paperNumber)){
             throw ExceptionResultEnum.ERROR.exception("缺少试卷编号");
         }
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-        gradePaperStructService.updateExamCloudPaperStruct(requestUser.getSchoolId(),paperNumber);
+        gradePaperStructService.updateExamCloudPaperStruct(requestUser.getSchoolId(),paperNumber,paperType);
         return ResultUtil.ok();
     }
 }

+ 3 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysUserMapper.java

@@ -28,7 +28,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 
     IPage<UserDto> listForPrintSystem(Page<UserDto> page, @Param("schoolId") Long schoolId, @Param("userInfo") String userInfo, @Param("orgId") Long orgId, @Param("roleId") String roleId, @Param("enable") Boolean enable);
 
-    IPage<UserDto> listForReportSystem(Page<UserDto> page, @Param("schoolId") Long schoolId, @Param("roleId") String roleId, @Param("enable") Boolean enable,@Param("loginName") String loginName,@Param("realName") String realName);
+    IPage<UserDto> listForReportSystem(Page<UserDto> page, @Param("schoolId") Long schoolId, @Param("roleId") String roleId, @Param("enable") Boolean enable, @Param("loginName") String loginName, @Param("realName") String realName);
 
     List<BlurryUserDto> listUser(@Param("schoolId") Long schoolId, @Param("type") String type, @Param("courseCode") String courseCode, @Param("param") String param, @Param("orgIds") Set<Long> orgIds);
 
@@ -110,9 +110,10 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      *
      * @param roleId
      * @param name
+     * @param schoolId
      * @return
      */
-    List<ApproveUserResult> findByRoldIdAndMemberName(@Param("roleId") Long roleId, @Param("name") String name);
+    List<ApproveUserResult> findByRoldIdAndMemberName(@Param("roleId") Long roleId, @Param("name") String name, @Param("schoolId") Long schoolId);
 
     List<CloudUserPushStatusDto> findCloudUserPushStatus(@Param("userId") Long userId, @Param("schoolId") Long schoolId);
 }

+ 3 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysUserRoleMapper.java

@@ -18,9 +18,11 @@ import java.util.List;
  */
 public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
 
-    List<SysRole> listRoleByUserId(Long userId);
+    List<SysRole> listRoleByUserId(@Param("userId") Long userId);
 
     List<MenuDto> listByUserId(@Param("userId") Long userId, @Param("schoolId") Long schoolId);
 
     List<MenuDto> listAll(@Param("schoolId") Long schoolId);
+
+    List<SysUserRole> listByRoleId(@Param("roleId") Long roleId, @Param("schoolId") Long schoolId);
 }

+ 1 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysPrivilegeServiceImpl.java

@@ -281,6 +281,7 @@ public class SysPrivilegeServiceImpl extends ServiceImpl<SysPrivilegeMapper, Sys
             }
             if (v.getParentId() > 0 && v.getType() == PrivilegeEnum.MENU) {
                 map.get(v.getParentId()).getChildren().add(v);
+                Collections.sort(map.get(v.getParentId()).getChildren());
                 deleteKeys.add(k);
             }
         });

+ 5 - 8
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserRoleServiceImpl.java

@@ -1,11 +1,9 @@
 package com.qmth.teachcloud.common.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.teachcloud.common.bean.result.MenuResult;
 import com.qmth.teachcloud.common.entity.SysRole;
-import com.qmth.teachcloud.common.entity.SysRolePrivilege;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUserRole;
 import com.qmth.teachcloud.common.mapper.SysUserRoleMapper;
@@ -15,10 +13,7 @@ import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
 import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -34,11 +29,13 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
     @Resource
     CommonCacheService commonCacheService;
 
+    @Resource
+    SysUserRoleMapper sysUserRoleMapper;
+
     @Override
     public List<SysUserRole> listByRoleId(Long id) {
-        QueryWrapper<SysUserRole> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(SysUserRole::getRoleId, id);
-        return this.list(queryWrapper);
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        return sysUserRoleMapper.listByRoleId(id, sysUser.getSchoolId());
     }
 
     @Override

+ 2 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -961,7 +961,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      */
     @Override
     public List<ApproveUserResult> findByRoldIdAndMemberName(Long roleId, String name) {
-        return sysUserMapper.findByRoldIdAndMemberName(roleId, name);
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        return sysUserMapper.findByRoldIdAndMemberName(roleId, name, sysUser.getSchoolId());
     }
 
     @Override

+ 3 - 0
teachcloud-common/src/main/resources/mapper/SysUserMapper.xml

@@ -346,6 +346,9 @@
             <if test="name != null and name != ''">
                 and su.real_name like concat('%',#{name},'%')
             </if>
+            <if test="schoolId != null and schoolId != ''">
+                and su.school_id = #{schoolId}
+            </if>
             and su.enable = 1
             and srgm.enable = 1
         </where>

+ 51 - 24
teachcloud-common/src/main/resources/mapper/SysUserRoleMapper.xml

@@ -4,42 +4,69 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.qmth.teachcloud.common.entity.SysUserRole">
-    <result column="id" property="id" />
-        <result column="user_id" property="userId" />
-        <result column="role_id" property="roleId" />
+        <result column="id" property="id"/>
+        <result column="user_id" property="userId"/>
+        <result column="role_id" property="roleId"/>
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        select id, user_id, role_id from sys_user_role
+        select id, user_id, role_id
+        from sys_user_role
     </sql>
     <select id="listRoleByUserId" resultMap="com.qmth.teachcloud.common.mapper.SysRoleMapper.BaseResultMap">
-        SELECT
-            *
-        FROM
-            sys_role a
-        WHERE
-            EXISTS( SELECT
-                    1
-                FROM
-                    sys_user_role b
-                WHERE
-                    a.id = b.role_id AND b.user_id = #{userId})
+        SELECT *
+        FROM sys_role a
+        WHERE EXISTS(SELECT 1
+                     FROM sys_user_role b
+                     WHERE a.id = b.role_id
+                       AND b.user_id = #{userId})
     </select>
 
     <select id="listByUserId" resultType="com.qmth.teachcloud.common.bean.dto.MenuDto">
-        SELECT
-            b.id,b.name,b.url,b.type,b.parent_id as parentId,b.school_id as schoolId,b.`sequence`,b.enable
-        FROM
-            sys_user_role a
-            join sys_role_privilege srp on srp.role_id = a.role_id
-            JOIN sys_privilege b ON srp.privilege_id = b.id
-        WHERE
-            a.user_id = #{userId} and b.school_id = #{schoolId}
+        SELECT b.id,
+               b.name,
+               b.url,
+               b.type,
+               b.parent_id as parentId,
+               b.school_id as schoolId,
+               b.`sequence`,
+               b.enable
+        FROM sys_user_role a
+                 join sys_role_privilege srp on srp.role_id = a.role_id
+                 JOIN sys_privilege b ON srp.privilege_id = b.id
+        WHERE a.user_id = #{userId}
+          and b.school_id = #{schoolId}
     </select>
 
     <select id="listAll" resultType="com.qmth.teachcloud.common.bean.dto.MenuDto">
-        select b.id,b.name,b.url,b.type,b.parent_id as parentId,b.school_id as schoolId,b.`sequence`,b.enable from sys_privilege b where b.school_id = #{schoolId}
+        select b.id,
+               b.name,
+               b.url,
+               b.type,
+               b.parent_id as parentId,
+               b.school_id as schoolId,
+               b.`sequence`,
+               b.enable
+        from sys_privilege b
+        where b.school_id = #{schoolId}
+    </select>
+
+    <select id="listByRoleId" resultType="com.qmth.teachcloud.common.entity.SysUserRole">
+        select
+        *
+        from
+        sys_user_role sur
+        join sys_user su on
+        su.id = sur.user_id
+        <where>
+            <if test="roleId != null and roleId != ''">
+                and sur.role_id = #{roleId}
+            </if>
+            <if test="schoolId != null and schoolId != ''">
+                and su.school_id = #{schoolId}
+            </if>
+        </where>
     </select>
 
 </mapper>

+ 44 - 25
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/AnalyzeDataCheckServiceImpl.java

@@ -1,6 +1,7 @@
 package com.qmth.teachcloud.report.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.service.BasicCourseService;
 import com.qmth.teachcloud.report.business.bean.dto.Answer;
@@ -63,11 +64,20 @@ public class AnalyzeDataCheckServiceImpl implements AnalyzeDataCheckService {
             sum = sum.add(tbPaperStruct.getFullScore());
         }
         if (totalScore.compareTo(sum) != 0) {
-            String paperNumber = courseCode.substring(0,courseCode.length() - tbPaper.getPaperType().length());
-            throw ExceptionResultEnum.ERROR.exception("试卷总分和试卷结构中各个题目分数之和不一致," +
-                    "请试卷编号为: 【" + paperNumber + "】的命题老师在知学知考教研分析板块下按照如下操作重新配置试卷总分和及格分:" +
+            String paperNumber = courseCode.substring(0, courseCode.length() - tbPaper.getPaperType().length());
+            String paperType = tbPaper.getPaperType();
+            final String regex = "T";
+            String errorMessage = "试卷总分和试卷结构中各个题目分数之和不一致," +
+                    "请试卷编号为: 【" + paperNumber + "】" + regex + "的命题老师在知学知考教研分析板块下按照如下操作重新配置试卷总分和及格分:" +
                     "数据初始化 -> 基础配置 -> 诊断规则定义 -> 更新满分,及格分,并检查满分为命题蓝图设置中各个题目分数之和 -> 保存。" +
-                    "之后管理员再重新计算该分析批次。");
+                    "之后管理员再重新计算该分析批次。";
+            if (SystemConstant.strNotNull(paperType)) {
+                //  试卷类型不为空 替换T
+                errorMessage = errorMessage.replaceAll(regex, ",试卷类型为: (" + paperType + ")");
+            } else {
+                errorMessage = errorMessage.replaceAll(regex, "");
+            }
+            throw ExceptionResultEnum.ERROR.exception(errorMessage);
         }
     }
 
@@ -75,26 +85,26 @@ public class AnalyzeDataCheckServiceImpl implements AnalyzeDataCheckService {
     @Override
     public void checkExamStudentAnswer(Long schoolId, Long examId, String courseCode) {
         TBPaper tbPaper = tbPaperService.getOne(new QueryWrapper<TBPaper>().lambda()
-                .eq(TBPaper::getExamId,examId)
-                .eq(TBPaper::getCourseCode,courseCode));
-        if (Objects.isNull(tbPaper)){
+                .eq(TBPaper::getExamId, examId)
+                .eq(TBPaper::getCourseCode, courseCode));
+        if (Objects.isNull(tbPaper)) {
             throw ExceptionResultEnum.ERROR.exception("未找到试卷信息");
         }
         Long paperId = tbPaper.getId();
         // 试卷结构蓝图
         List<TBPaperStruct> tbPaperStructList = tbPaperStructService.list(new QueryWrapper<TBPaperStruct>().lambda()
-                .eq(TBPaperStruct::getPaperId,paperId));
+                .eq(TBPaperStruct::getPaperId, paperId));
 
-        List<TBExamRecord> tbExamRecordList = tbExamRecordService.list(new QueryWrapper<TBExamRecord>().lambda().eq(TBExamRecord::getPaperId,paperId));
-        if (tbExamRecordList.isEmpty()){
+        List<TBExamRecord> tbExamRecordList = tbExamRecordService.list(new QueryWrapper<TBExamRecord>().lambda().eq(TBExamRecord::getPaperId, paperId));
+        if (tbExamRecordList.isEmpty()) {
             throw ExceptionResultEnum.ERROR.exception("没有找到考生成绩记录");
         }
         List<Long> examStudentIdList = tbExamRecordList.stream().map(TBExamRecord::getExamStudentId).collect(Collectors.toList());
 
         // 考生(不缺考的)
         List<TBExamStudent> tbExamStudentList = tbExamStudentService.list(new QueryWrapper<TBExamStudent>()
-                .lambda()
-                .in(TBExamStudent::getId,examStudentIdList))
+                        .lambda()
+                        .in(TBExamStudent::getId, examStudentIdList))
                 .stream()
                 .filter(e -> !e.getAbsent())
                 .collect(Collectors.toList());
@@ -102,22 +112,22 @@ public class AnalyzeDataCheckServiceImpl implements AnalyzeDataCheckService {
         // 有效的考生成绩记录
         List<TBExamRecord> effectTBExamRecordList = tbExamRecordList.stream().filter(e -> effectStudentIdList.contains(e.getExamStudentId())).collect(Collectors.toList());
         List<Long> effectRecordIdList = effectTBExamRecordList.stream().map(TBExamRecord::getId).collect(Collectors.toList());
-        if (effectRecordIdList.isEmpty()){
+        if (effectRecordIdList.isEmpty()) {
             throw ExceptionResultEnum.ERROR.exception("缺少有效的考生");
         }
 
         // 作答
         // 1.考生人数对应检查 - 本地试卷结构数量 * 考生数 =? 考生作答总记录数
-        List<TBAnswer> tbAnswerList = tbAnswerService.list(new QueryWrapper<TBAnswer>().lambda().in(TBAnswer::getExamRecordId,effectRecordIdList));
-        Map<Integer,Long> recordAnswerCountCheckMap = new HashMap<>();
-        Map<Long,List<TBAnswer>> recordAnswerMap = new HashMap<>();
+        List<TBAnswer> tbAnswerList = tbAnswerService.list(new QueryWrapper<TBAnswer>().lambda().in(TBAnswer::getExamRecordId, effectRecordIdList));
+        Map<Integer, Long> recordAnswerCountCheckMap = new HashMap<>();
+        Map<Long, List<TBAnswer>> recordAnswerMap = new HashMap<>();
         for (Long effectRecordId : effectRecordIdList) {
             List<TBAnswer> cell = tbAnswerList.stream().filter(e -> Objects.equals(e.getExamRecordId(), effectRecordId)).collect(Collectors.toList());
-            recordAnswerMap.put(effectRecordId,cell);
-            recordAnswerCountCheckMap.put(cell.size(),effectRecordId);
+            recordAnswerMap.put(effectRecordId, cell);
+            recordAnswerCountCheckMap.put(cell.size(), effectRecordId);
         }
 
-        if (recordAnswerCountCheckMap.keySet().size() > 1){
+        if (recordAnswerCountCheckMap.keySet().size() > 1) {
             throw ExceptionResultEnum.ERROR.exception("同一个试卷不同考生作答记录数量不一致");
         }
 
@@ -138,12 +148,21 @@ public class AnalyzeDataCheckServiceImpl implements AnalyzeDataCheckService {
             answer.setSubNumber(e.getSmallQuestionNumber());
             return Stream.of(answer);
         }).collect(Collectors.toList());
-        if (!Answer.matchTwoAnswerList(al1,al2)){
-            String paperNumber = courseCode.substring(0,courseCode.length() - tbPaper.getPaperType().length());
-            throw ExceptionResultEnum.PAPER_STRUCT_EXCEPTION.exception("考生作答中的试卷结构和分析参数中配置的试卷结构不一致(检查内容 : 题目类型(主观题、客观题),大题号,小题号)," +
-                    "请试卷编号为: 【" + paperNumber + "】的命题老师在知学知考教研分析板块下按照如下操作重新配置试卷结构:" +
+        if (!Answer.matchTwoAnswerList(al1, al2)) {
+            String paperNumber = courseCode.substring(0, courseCode.length() - tbPaper.getPaperType().length());
+            String paperType = tbPaper.getPaperType();
+            final String regex = "T";
+            String errorMessage = "考生作答中的试卷结构和分析参数中配置的试卷结构不一致(检查内容 : 题目类型(主观题、客观题),大题号,小题号)," +
+                    "请试卷编号为: 【" + paperNumber + "】" + regex + "的命题老师在知学知考教研分析板块下按照如下操作重新配置试卷结构:" +
                     "数据初始化 -> 基础配置 -> 命题蓝图设置 -> 更新试卷结构 -> 保存。" +
-                    "之后管理员再重新计算该分析批次。(" + ExceptionResultEnum.PAPER_STRUCT_EXCEPTION.getCode() + ")");
+                    "之后管理员再重新计算该分析批次。[" + ExceptionResultEnum.PAPER_STRUCT_EXCEPTION.getCode() + "]";
+            if (SystemConstant.strNotNull(paperType)) {
+                //  试卷类型不为空 替换T
+                errorMessage = errorMessage.replaceAll(regex, ",试卷类型为: (" + paperType + ")");
+            } else {
+                errorMessage = errorMessage.replaceAll(regex, "");
+            }
+            throw ExceptionResultEnum.PAPER_STRUCT_EXCEPTION.exception(errorMessage);
         }
     }
 
@@ -173,7 +192,7 @@ public class AnalyzeDataCheckServiceImpl implements AnalyzeDataCheckService {
         List<String> needRepeatCourseCodeList = new ArrayList<>();
         for (String courseCode : courseCodeList) {
             // 新增
-            if (analyzeDataGetAndEditService.dataGetAndEdit(examId, courseCode, schoolId)){
+            if (analyzeDataGetAndEditService.dataGetAndEdit(examId, courseCode, schoolId)) {
                 // 如果要重算 则记录该课程
                 needRepeatCourseCodeList.add(courseCode);
                 // 检查

Some files were not shown because too many files changed in this diff