xiaofei 11 mesi fa
parent
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 = "状态更新")
     @RequestMapping(value = "/status", method = RequestMethod.POST)
     @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,
                          @ApiParam(value = "状态", required = true) @RequestParam BasicExamStudentStatusEnum 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("objectiveEndScore") Double objectiveEndScore, @Param("subScore") Double subScore, @Param("objectiveScoreLt") Double objectiveScoreLt,
                                                   @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,
                                                         @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<>();
         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;
     }
@@ -220,6 +220,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
                                                          Double endScore, Double subjectiveStartScore, Double subjectiveEndScore, Double objectiveStartScore, Double objectiveEndScore,
                                                          Double subScore, Integer objectiveScoreRateLt, String studentName, String studentCode,
                                                          String orderType, String orderField, Integer pageNumber, Integer pageSize) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         if (startScore != null && endScore == null) {
             throw ExceptionResultEnum.ERROR.exception("请输入试卷总分结束分数值");
         }
@@ -239,10 +240,11 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         Double objectiveScoreLt = objectiveScoreRateLt == null ?
                 null :
                 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,
                 paperNumber, college, majorName,teachClassName, className, teacher, filter, status, breach, startScore, endScore,
                 subjectiveStartScore, subjectiveEndScore, objectiveStartScore, objectiveEndScore, subScore,
-                objectiveScoreLt, studentName, studentCode, orderType, orderField);
+                objectiveScoreLt, studentName, studentCode, orderType, orderField, dpr);
         for (StudentScoreDetailDto scoreDetailDto : studentScoreDetailDtoIPage.getRecords()) {
             // 原图
             scoreDetailDto.setSheetUrls(buildSheetUrls(scoreDetailDto.getStudentId()));
@@ -954,8 +956,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     public IPage<ArchiveStudentVo> studentList(ArchiveStudentQuery query) {
         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());
         IPage<ArchiveStudentVo> ret = baseMapper.studentList(page, sysUser.getSchoolId(), query, dpr);
         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
             LEFT JOIN
         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>
             <if test="schoolId != null">
                 and su.school_id = #{schoolId}
@@ -59,7 +61,7 @@
                 and mp.paper_number = #{paperNumber}
             </if>
             <if test="groupStatus != null">
-                and mp.group_status = #{groupStatus}
+                and (mp.question_status = #{groupStatus} or mp.group_status = #{groupStatus})
             </if>
             <if test="dpr != null">
                 <if test="dpr.requestUserId != null">
@@ -110,7 +112,11 @@
         </if>
         <if test="dpr != 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 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)

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

@@ -77,17 +77,16 @@
         ms.is_upload upload,
         bes.status studentStatus
         FROM
-        mark_student ms
+        (select * from mark_student where exam_id = #{examId} and paper_number = #{paperNumber}) ms
         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
         basic_course bc ON ms.course_id = bc.id
         LEFT JOIN
         sys_user su ON ms.check_user_id = su.id
         LEFT JOIN
         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 != ''">
             AND bes.college_name LIKE CONCAT('%', #{college}, '%')
         </if>
@@ -202,6 +201,21 @@
                 </otherwise>
             </choose>
         </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 == ''">
             order by bes.student_code
         </if>
@@ -383,6 +397,9 @@
             <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 = #{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">
                 AND bc.teaching_room_id IN
                 <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
 			(select * from mark_user_class where exam_id = #{examId} and paper_number = #{paperNumber} and user_id = #{userId}) mc
                 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>
@@ -244,7 +244,8 @@
               FROM
               basic_exam_student
               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>
     </select>
     <select id="countByExamIdAndPaperNumberAndGroupNumberAndUserIdAndAndClassNameStatusIn" resultType="java.lang.Integer">
@@ -269,16 +270,23 @@
         </if>
         <if test="classNames != null and classNames.size() > 0">
             AND EXISTS( SELECT
-            1
+            ms.id, ms.exam_id, ms.paper_number, bes.teach_class_name
             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=")">
                 #{className}
-            </foreach>) ms
+            </foreach>) bes ON ms.basic_student_id = bes.id
             WHERE
             mt.student_id = ms.id)
         </if>