Bladeren bron

3.4.0 update

xiaofei 11 maanden geleden
bovenliggende
commit
e3dd4b3fa4

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

@@ -93,7 +93,7 @@ public class BasicExamStudentController {
     @ApiOperation(value = "状态更新")
     @ApiOperation(value = "状态更新")
     @RequestMapping(value = "/status", method = RequestMethod.POST)
     @RequestMapping(value = "/status", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "更新成功", response = Result.class)})
     @ApiResponses({@ApiResponse(code = 200, message = "更新成功", response = Result.class)})
-    @OperationLogDetail(operationType = OperationTypeEnum.UPDATE, detail = "状态更新操作,id:{{id}}、状态:{{status}}")
+    @OperationLogDetail(operationType = OperationTypeEnum.UPDATE, detail = "状态更新操作,id:{{id}}、状态:{{status}}。备注:N(\"正常\"),D(\"缓考\"),F(\"免考\"),M(\"缺考\"),B(\"违纪\")")
     public Result status(@ApiParam(value = "考生ID", required = true) @RequestParam Long id,
     public Result status(@ApiParam(value = "考生ID", required = true) @RequestParam Long id,
                          @ApiParam(value = "状态", required = true) @RequestParam BasicExamStudentStatusEnum status) {
                          @ApiParam(value = "状态", required = true) @RequestParam BasicExamStudentStatusEnum status) {
         return ResultUtil.ok(basicExamStudentService.updateStatus(id, status));
         return ResultUtil.ok(basicExamStudentService.updateStatus(id, status));

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkStudentMapper.java

@@ -36,7 +36,7 @@ public interface MarkStudentMapper extends BaseMapper<MarkStudent> {
                                                   @Param("objectiveStartScore") Double objectiveStartScore,
                                                   @Param("objectiveStartScore") Double objectiveStartScore,
                                                   @Param("objectiveEndScore") Double objectiveEndScore, @Param("subScore") Double subScore, @Param("objectiveScoreLt") Double objectiveScoreLt,
                                                   @Param("objectiveEndScore") Double objectiveEndScore, @Param("subScore") Double subScore, @Param("objectiveScoreLt") Double objectiveScoreLt,
                                                   @Param("studentName") String studentName, @Param("studentCode") String studentCode, @Param("orderType") String orderType,
                                                   @Param("studentName") String studentName, @Param("studentCode") String studentCode, @Param("orderType") String orderType,
-                                                  @Param("orderField") String orderField);
+                                                  @Param("orderField") String orderField, @Param("dpr") DataPermissionRule dpr);
 
 
     List<MarkStudent> listAbsentOrBreachMarkTaskStudent(@Param("examId") Long examId,
     List<MarkStudent> listAbsentOrBreachMarkTaskStudent(@Param("examId") Long examId,
                                                         @Param("paperNumber") String paperNumber);
                                                         @Param("paperNumber") String paperNumber);

+ 6 - 5
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -164,8 +164,8 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 
 
         List<String> classNameList = new ArrayList<>();
         List<String> classNameList = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(markStudentList)) {
         if (CollectionUtils.isNotEmpty(markStudentList)) {
-            classNameList = markStudentList.stream().filter(m -> StringUtils.isNotBlank(m.getClassName()))
-                    .map(MarkStudentVo::getClassName).distinct().collect(Collectors.toList());
+            classNameList = markStudentList.stream().filter(m -> StringUtils.isNotBlank(m.getTeachClassName()))
+                    .map(MarkStudentVo::getTeachClassName).distinct().collect(Collectors.toList());
         }
         }
         return classNameList;
         return classNameList;
     }
     }
@@ -220,6 +220,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
                                                          Double endScore, Double subjectiveStartScore, Double subjectiveEndScore, Double objectiveStartScore, Double objectiveEndScore,
                                                          Double endScore, Double subjectiveStartScore, Double subjectiveEndScore, Double objectiveStartScore, Double objectiveEndScore,
                                                          Double subScore, Integer objectiveScoreRateLt, String studentName, String studentCode,
                                                          Double subScore, Integer objectiveScoreRateLt, String studentName, String studentCode,
                                                          String orderType, String orderField, Integer pageNumber, Integer pageSize) {
                                                          String orderType, String orderField, Integer pageNumber, Integer pageSize) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         if (startScore != null && endScore == null) {
         if (startScore != null && endScore == null) {
             throw ExceptionResultEnum.ERROR.exception("请输入试卷总分结束分数值");
             throw ExceptionResultEnum.ERROR.exception("请输入试卷总分结束分数值");
         }
         }
@@ -239,10 +240,11 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         Double objectiveScoreLt = objectiveScoreRateLt == null ?
         Double objectiveScoreLt = objectiveScoreRateLt == null ?
                 null :
                 null :
                 Calculator.round(Calculator.divide(Calculator.multiply(markPaper.getObjectiveScore(), Double.parseDouble(String.valueOf(objectiveScoreRateLt))), 100), 2);
                 Calculator.round(Calculator.divide(Calculator.multiply(markPaper.getObjectiveScore(), Double.parseDouble(String.valueOf(objectiveScoreRateLt))), 100), 2);
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), "/api/admin/mark/setting/scoreList");
         IPage<StudentScoreDetailDto> studentScoreDetailDtoIPage = this.baseMapper.pageStudentScore(page, examId,
         IPage<StudentScoreDetailDto> studentScoreDetailDtoIPage = this.baseMapper.pageStudentScore(page, examId,
                 paperNumber, college, majorName,teachClassName, className, teacher, filter, status, breach, startScore, endScore,
                 paperNumber, college, majorName,teachClassName, className, teacher, filter, status, breach, startScore, endScore,
                 subjectiveStartScore, subjectiveEndScore, objectiveStartScore, objectiveEndScore, subScore,
                 subjectiveStartScore, subjectiveEndScore, objectiveStartScore, objectiveEndScore, subScore,
-                objectiveScoreLt, studentName, studentCode, orderType, orderField);
+                objectiveScoreLt, studentName, studentCode, orderType, orderField, dpr);
         for (StudentScoreDetailDto scoreDetailDto : studentScoreDetailDtoIPage.getRecords()) {
         for (StudentScoreDetailDto scoreDetailDto : studentScoreDetailDtoIPage.getRecords()) {
             // 原图
             // 原图
             scoreDetailDto.setSheetUrls(buildSheetUrls(scoreDetailDto.getStudentId()));
             scoreDetailDto.setSheetUrls(buildSheetUrls(scoreDetailDto.getStudentId()));
@@ -954,8 +956,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     public IPage<ArchiveStudentVo> studentList(ArchiveStudentQuery query) {
     public IPage<ArchiveStudentVo> studentList(ArchiveStudentQuery query) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         // 使用成绩管理列表请求的数据权限
         // 使用成绩管理列表请求的数据权限
-        String postUrl = "/api/admin/mark/archive/score/list";
-        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), postUrl);
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), "/api/admin/mark/archive/score/list");
         Page<ArchiveStudentVo> page = new Page<>(query.getPageNumber(), query.getPageSize());
         Page<ArchiveStudentVo> page = new Page<>(query.getPageNumber(), query.getPageSize());
         IPage<ArchiveStudentVo> ret = baseMapper.studentList(page, sysUser.getSchoolId(), query, dpr);
         IPage<ArchiveStudentVo> ret = baseMapper.studentList(page, sysUser.getSchoolId(), query, dpr);
         for (ArchiveStudentVo record : ret.getRecords()) {
         for (ArchiveStudentVo record : ret.getRecords()) {

+ 8 - 2
teachcloud-mark/src/main/resources/mapper/MarkPaperMapper.xml

@@ -45,6 +45,8 @@
         basic_course bc ON mp.course_id = bc.id
         basic_course bc ON mp.course_id = bc.id
             LEFT JOIN
             LEFT JOIN
         sys_user su ON mp.user_id = su.id
         sys_user su ON mp.user_id = su.id
+            JOIN
+        (select * from basic_exam where enable = true) be ON mp.exam_id = be.id
         <where>
         <where>
             <if test="schoolId != null">
             <if test="schoolId != null">
                 and su.school_id = #{schoolId}
                 and su.school_id = #{schoolId}
@@ -59,7 +61,7 @@
                 and mp.paper_number = #{paperNumber}
                 and mp.paper_number = #{paperNumber}
             </if>
             </if>
             <if test="groupStatus != null">
             <if test="groupStatus != null">
-                and mp.group_status = #{groupStatus}
+                and (mp.question_status = #{groupStatus} or mp.group_status = #{groupStatus})
             </if>
             </if>
             <if test="dpr != null">
             <if test="dpr != null">
                 <if test="dpr.requestUserId != null">
                 <if test="dpr.requestUserId != null">
@@ -110,7 +112,11 @@
         </if>
         </if>
         <if test="dpr != null">
         <if test="dpr != null">
             <if test="dpr.requestUserId != null">
             <if test="dpr.requestUserId != null">
-                AND mp.user_id = #{dpr.requestUserId}
+                AND EXISTS( SELECT 1 FROM  (select exam_id, paper_number,basic_student_id from mark_student where exam_id = #{examId}
+                            <if test="paperNumber != null and paperNumber != ''">
+                                AND paper_number = #{paperNumber}
+                            </if>
+                            ) ms join (select id from basic_exam_student where exam_id = #{examId} and teacher_id = #{dpr.requestUserId}) bes on ms.basic_student_id = bes.id WHERE mp.exam_id = ms.exam_id and mp.paper_number = ms.paper_number)
             </if>
             </if>
             <if test="dpr.courseUserId != null">
             <if test="dpr.courseUserId != null">
                 AND EXISTS( SELECT 1 FROM (select course_id from teach_course where exam_id = #{examId} and user_id = #{dpr.courseUserId}) tc WHERE tc.course_id = mp.course_id)
                 AND EXISTS( SELECT 1 FROM (select course_id from teach_course where exam_id = #{examId} and user_id = #{dpr.courseUserId}) tc WHERE tc.course_id = mp.course_id)

+ 21 - 4
teachcloud-mark/src/main/resources/mapper/MarkStudentMapper.xml

@@ -77,17 +77,16 @@
         ms.is_upload upload,
         ms.is_upload upload,
         bes.status studentStatus
         bes.status studentStatus
         FROM
         FROM
-        mark_student ms
+        (select * from mark_student where exam_id = #{examId} and paper_number = #{paperNumber}) ms
         LEFT JOIN
         LEFT JOIN
-        basic_exam_student bes ON ms.basic_student_id = bes.id
+        (select * from basic_exam_student where exam_id = #{examId}) bes ON ms.basic_student_id = bes.id
         LEFT JOIN
         LEFT JOIN
         basic_course bc ON ms.course_id = bc.id
         basic_course bc ON ms.course_id = bc.id
         LEFT JOIN
         LEFT JOIN
         sys_user su ON ms.check_user_id = su.id
         sys_user su ON ms.check_user_id = su.id
         LEFT JOIN
         LEFT JOIN
         sys_user su1 ON bes.teacher_id = su1.id
         sys_user su1 ON bes.teacher_id = su1.id
-        where ms.exam_id = #{examId}
-        AND ms.paper_number = #{paperNumber}
+        <where>
         <if test="college != null and college != ''">
         <if test="college != null and college != ''">
             AND bes.college_name LIKE CONCAT('%', #{college}, '%')
             AND bes.college_name LIKE CONCAT('%', #{college}, '%')
         </if>
         </if>
@@ -202,6 +201,21 @@
                 </otherwise>
                 </otherwise>
             </choose>
             </choose>
         </if>
         </if>
+        <if test="dpr != null">
+            <if test="dpr.requestUserId != null">
+                AND bes.teacher_id = #{dpr.requestUserId}
+            </if>
+            <if test="dpr.courseUserId != null">
+                AND EXISTS( SELECT 1 FROM (select course_id from teach_course where exam_id = #{examId} and user_id = #{dpr.courseUserId}) tc WHERE tc.course_id = ms.course_id)
+            </if>
+            <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                AND bc.teaching_room_id IN
+                <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </if>
+        </where>
         <if test="orderType == null or orderType == '' or orderField == null or orderField == ''">
         <if test="orderType == null or orderType == '' or orderField == null or orderField == ''">
             order by bes.student_code
             order by bes.student_code
         </if>
         </if>
@@ -383,6 +397,9 @@
             <if test="dpr.requestUserId != null">
             <if test="dpr.requestUserId != null">
                 AND bes.teacher_id = #{dpr.requestUserId}
                 AND bes.teacher_id = #{dpr.requestUserId}
             </if>
             </if>
+            <if test="dpr.courseUserId != null">
+                AND EXISTS( SELECT 1 FROM (select course_id from teach_course where exam_id = #{req.examId} and user_id = #{dpr.courseUserId}) tc WHERE tc.course_id = s.course_id)
+            </if>
             <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
             <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
                 AND bc.teaching_room_id IN
                 AND bc.teaching_room_id IN
                 <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
                 <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">

+ 17 - 9
teachcloud-mark/src/main/resources/mapper/MarkTaskMapper.xml

@@ -209,7 +209,7 @@
 			FROM
 			FROM
 			(select * from mark_user_class where exam_id = #{examId} and paper_number = #{paperNumber} and user_id = #{userId}) mc
 			(select * from mark_user_class where exam_id = #{examId} and paper_number = #{paperNumber} and user_id = #{userId}) mc
                 join
                 join
-			(select * from mark_student where exam_id = #{examId} and paper_number = #{paperNumber}) s on mc.class_name = s.class_name
+			(select ms.id, bes.teach_class_name from (select * from mark_student where exam_id = #{examId} and paper_number = #{paperNumber}) ms join (select id,teach_class_name from basic_exam_student where exam_id = #{examId}) bes on ms.basic_student_id = bes.id) s on mc.class_name = s.teach_class_name
 			WHERE mt.student_id = s.id
 			WHERE mt.student_id = s.id
 		)
 		)
         </where>
         </where>
@@ -244,7 +244,8 @@
               FROM
               FROM
               basic_exam_student
               basic_exam_student
               WHERE
               WHERE
-              exam_id = #{examId} AND teach_class_name = #{className}) bes ON ms.basic_student_id = bes.id)
+              exam_id = #{examId} AND teach_class_name = #{className}) bes ON ms.basic_student_id = bes.id
+              where mt.student_id = ms.id)
           </if>
           </if>
     </select>
     </select>
     <select id="countByExamIdAndPaperNumberAndGroupNumberAndUserIdAndAndClassNameStatusIn" resultType="java.lang.Integer">
     <select id="countByExamIdAndPaperNumberAndGroupNumberAndUserIdAndAndClassNameStatusIn" resultType="java.lang.Integer">
@@ -269,16 +270,23 @@
         </if>
         </if>
         <if test="classNames != null and classNames.size() > 0">
         <if test="classNames != null and classNames.size() > 0">
             AND EXISTS( SELECT
             AND EXISTS( SELECT
-            1
+            ms.id, ms.exam_id, ms.paper_number, bes.teach_class_name
             FROM
             FROM
-            (select id, exam_id, paper_number, class_name
-            from mark_student
-            where exam_id = #{examId}
-            and paper_number = #{paperNumber}
-            and class_name in
+            (SELECT
+            *
+            FROM
+            mark_student
+            WHERE
+            exam_id = #{examId} AND paper_number = #{paperNumber}) ms
+            JOIN (SELECT
+            *
+            FROM
+            basic_exam_student
+            WHERE
+            exam_id = #{examId} AND teach_class_name in
             <foreach collection="classNames" item="className" separator="," open="(" close=")">
             <foreach collection="classNames" item="className" separator="," open="(" close=")">
                 #{className}
                 #{className}
-            </foreach>) ms
+            </foreach>) bes ON ms.basic_student_id = bes.id
             WHERE
             WHERE
             mt.student_id = ms.id)
             mt.student_id = ms.id)
         </if>
         </if>