Browse Source

3.4.0 update

xiaofei 1 year ago
parent
commit
7fee41199b
17 changed files with 172 additions and 118 deletions
  1. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamCardMapper.java
  2. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamCardService.java
  3. 1 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicPrintConfigServiceImpl.java
  4. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardServiceImpl.java
  5. 23 23
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  6. 29 0
      distributed-print-business/src/main/resources/mapper/ExamCardMapper.xml
  7. 14 8
      distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml
  8. 18 3
      distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml
  9. 3 0
      distributed-print-business/src/main/resources/mapper/TCUsualScoreMapper.xml
  10. 3 3
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicCardRuleController.java
  11. 11 17
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamCardController.java
  12. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysRoleController.java
  13. 3 3
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/aspect/LogAspect.java
  14. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/UploadFileEnum.java
  15. 54 50
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/ConvertUtil.java
  16. 1 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/FileStoreUtil.java
  17. 6 0
      teachcloud-mark/src/main/resources/mapper/MarkPaperMapper.xml

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

@@ -23,7 +23,7 @@ public interface ExamCardMapper extends BaseMapper<ExamCard> {
 
     List<ExamCard> listCustom(@Param("schoolId") Long schoolId, @Param("courseCode") String courseCode, @Param("type") String type, @Param("cardRuleId") Long cardRuleId);
 
-    IPage<ExamCard> listPage(@Param("page") Page<ExamCard> page, @Param("schoolId") Long schoolId, @Param("cardType") String cardType, @Param("title") String title, @Param("createMethod") String createMethod, @Param("enable") Boolean enable, @Param("createStartTime") Long createStartTime, @Param("createEndTime") Long createEndTime, @Param("dpr") DataPermissionRule dpr);
+    IPage<ExamCard> listPage(@Param("page") Page<ExamCard> page, @Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("cardType") String cardType, @Param("title") String title, @Param("createMethod") String createMethod, @Param("enable") Boolean enable, @Param("createStartTime") Long createStartTime, @Param("createEndTime") Long createEndTime, @Param("dpr") DataPermissionRule dpr);
 
     List<ExamCard> listCustomByExamStage(@Param("schoolId") Long schoolId, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("type") String type);
 }

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

@@ -25,7 +25,7 @@ public interface ExamCardService extends IService<ExamCard> {
 
     List<ExamCard> listSelectCard(String courseCode, Long examId, String paperNumber);
 
-    IPage<ExamCard> listPage(String cardType, String title, String createMethod, Boolean enable, Long createStartTime, Long createEndTime, Integer pageNumber, Integer pageSize);
+    IPage<ExamCard> listPage(Long semesterId, Long examId, String courseCode, String paperNumber, String cardType, String title, String createMethod, Boolean enable, Long createStartTime, Long createEndTime, Integer pageNumber, Integer pageSize);
 
     Map<String, String> saveGeneric(GenericExamCardParams params) throws Exception;
 

+ 1 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicPrintConfigServiceImpl.java

@@ -40,17 +40,13 @@ public class BasicPrintConfigServiceImpl extends ServiceImpl<BasicPrintConfigMap
 
     @Resource
     private BasicExamService basicExamService;
-    @Resource
-    private BasicRoleDataPermissionService basicRoleDataPermissionService;
 
     @Override
     public IPage<BasicPrintConfig> listPage(Long examId, Boolean enable, Long createStartTime, Long createEndTime, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
 
         Page<BasicPrintConfig> page = new Page<>(pageNumber, pageSize);
-        return this.baseMapper.listPage(page, schoolId, examId, enable, createStartTime, createEndTime, dpr);
+        return this.baseMapper.listPage(page, schoolId, examId, enable, createStartTime, createEndTime, null);
     }
 
     @Override

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardServiceImpl.java

@@ -201,11 +201,11 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
     }
 
     @Override
-    public IPage<ExamCard> listPage(String cardType, String title, String createMethod, Boolean enable, Long createStartTime, Long createEndTime, Integer pageNumber, Integer pageSize) {
+    public IPage<ExamCard> listPage(Long semesterId, Long examId, String courseCode, String paperNumber, String cardType, String title, String createMethod, Boolean enable, Long createStartTime, Long createEndTime, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
-        IPage<ExamCard> cardPageDtoIPage = this.baseMapper.listPage(new Page<>(pageNumber, pageSize), schoolId, cardType, title, createMethod, enable, createStartTime, createEndTime, dpr);
+        IPage<ExamCard> cardPageDtoIPage = this.baseMapper.listPage(new Page<>(pageNumber, pageSize), schoolId, semesterId, examId, courseCode, paperNumber, cardType, title, createMethod, enable, createStartTime, createEndTime, dpr);
         for (ExamCard record : cardPageDtoIPage.getRecords()) {
             if (StringUtils.isNotBlank(record.getJpgAttachment())) {
                 List<JSONObject> mapList = JSON.parseArray(record.getJpgAttachment(), JSONObject.class);

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

@@ -857,25 +857,25 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         activitiService.taskApprove(map);
 
         // 清除cardId
-        ExamTaskDetail examTaskDetail = examTaskDetailService.getByExamTaskId(examTask.getId());
-        String paperAttachmentIds = examTaskDetail.getPaperAttachmentIds();
-        if (StringUtils.isNotBlank(paperAttachmentIds)) {
-            List<PaperInfoVo> paperInfoVoList = ExamTaskUtil.parsePaperAttachmentPath(paperAttachmentIds);
-            List<String> cardIds = new ArrayList<>();
-            for (PaperInfoVo paperInfoVo : paperInfoVoList) {
-                cardIds.add(paperInfoVo.getCardId());
-                paperInfoVo.setCardId(null);
-                paperInfoVo.setCardType(null);
-                paperInfoVo.setCardTitle(null);
-            }
-            examTaskDetail.setPaperAttachmentIds(JSON.toJSONString(paperInfoVoList));
-            examTaskDetailService.updateById(examTaskDetail);
-
-            // 更新题卡为未使用
-            UpdateWrapper<ExamCard> updateWrapper = new UpdateWrapper<>();
-            updateWrapper.lambda().set(ExamCard::getUsed, false).in(ExamCard::getId, cardIds);
-            examCardService.update(updateWrapper);
-        }
+//        ExamTaskDetail examTaskDetail = examTaskDetailService.getByExamTaskId(examTask.getId());
+//        String paperAttachmentIds = examTaskDetail.getPaperAttachmentIds();
+//        if (StringUtils.isNotBlank(paperAttachmentIds)) {
+//            List<PaperInfoVo> paperInfoVoList = ExamTaskUtil.parsePaperAttachmentPath(paperAttachmentIds);
+//            List<String> cardIds = new ArrayList<>();
+//            for (PaperInfoVo paperInfoVo : paperInfoVoList) {
+//                cardIds.add(paperInfoVo.getCardId());
+//                paperInfoVo.setCardId(null);
+//                paperInfoVo.setCardType(null);
+//                paperInfoVo.setCardTitle(null);
+//            }
+//            examTaskDetail.setPaperAttachmentIds(JSON.toJSONString(paperInfoVoList));
+//            examTaskDetailService.updateById(examTaskDetail);
+//
+//            // 更新题卡为未使用
+//            UpdateWrapper<ExamCard> updateWrapper = new UpdateWrapper<>();
+//            updateWrapper.lambda().set(ExamCard::getUsed, false).in(ExamCard::getId, cardIds);
+//            examCardService.update(updateWrapper);
+//        }
         return map;
     }
 
@@ -1471,8 +1471,8 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                     examDetailCourse.setPaperNumber(paperNumber);
                     examDetailCourse.setClazzId(examDetailParams.getClassId());
                     if (StringUtils.isNotBlank(examDetailParams.getClassId())) {
-                        List<BasicClazz> basicClazzList = basicClazzService.listByIds(Arrays.asList(examDetailParams.getClassId().split(",")));
-                        examDetailCourse.setClazzName(basicClazzList.stream().map(BasicClazz::getClazzName).collect(Collectors.joining(",")));
+                        List<BasicTeachClazz> basicClazzList = basicTeachClazzService.listByIds(Arrays.asList(examDetailParams.getClassId().split(",")));
+                        examDetailCourse.setClazzName(basicClazzList.stream().map(BasicTeachClazz::getClazzName).collect(Collectors.joining(",")));
                     }
                     examDetailCourse.setTotalSubjects(examDetailParams.getTotalSubjects());
                     examDetailCourse.setCreateId(sysUser.getId());
@@ -1941,9 +1941,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         TFFlowApprove tfFlowApprove = tfFlowApproveService.getOne(queryWrapper);
         //审核状态
         if (tfFlowApprove != null && !tfFlowApprove.getStatus().equals(FlowStatusEnum.START) && !tfFlowApprove.getStatus().equals(FlowStatusEnum.REJECT) && !tfFlowApprove.getStatus().equals(FlowStatusEnum.CANCEL)) {
-            throw ExceptionResultEnum.ERROR.exception("当前状态无法删除");
+            throw ExceptionResultEnum.ERROR.exception(tfFlowApprove.getStatus().getTitle() + "状态无法删除");
         }
-        this.removeById(id);
+        // 删除命题任务及试卷信息
         this.removeByExamTaskId(id);
         // 删除考场信息
         examDetailService.deleteByExamIdAndPaperNumber(examTask.getSchoolId(), examTask.getExamId(), examTask.getPaperNumber());

+ 29 - 0
distributed-print-business/src/main/resources/mapper/ExamCardMapper.xml

@@ -63,12 +63,41 @@
             AND a.type = #{type}
             AND a.card_rule_id = #{cardRuleId}
             AND a.create_time >= 1680624000000
+            AND a.enable = true
         order by a.create_time desc
     </select>
     <select id="listPage" resultMap="BaseResultMap">
         <include refid="Base_Column_List"></include>
         <where>
             school_id = #{schoolId}
+            <if test="semesterId != null || examId != null">
+               AND EXISTS( SELECT
+                    1
+                FROM
+                (SELECT
+                REPLACE(substring_index(substring_index(CONVERT((etd.paper_attachment_ids ->>'$[*].cardId')
+                USING utf8), ']', 1), '[',-1),'"','') as cardId
+                FROM
+                exam_task et
+                LEFT JOIN exam_task_detail etd ON et.id = etd.exam_task_id
+                LEFT JOIN basic_exam be ON et.exam_id = be.id
+                <where>
+                    <if test="semesterId != null">
+                       AND be.semester_id = #{semesterId}
+                    </if>
+                    <if test="examId != null">
+                        AND et.exam_id = #{examId}
+                    </if>
+                    <if test="courseCode != null">
+                        AND et.course_code = #{courseCode}
+                    </if>
+                    <if test="paperNumber != null">
+                        AND et.paper_number = #{paperNumber}
+                    </if>
+                </where>
+                ) t
+                WHERE LOCATE(id,t.cardId) > 0)
+            </if>
             <if test="cardType != null and cardType != ''">
                 and type = #{cardType}
             </if>

+ 14 - 8
distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml

@@ -50,7 +50,8 @@
                  a.*
              FROM
                  exam_detail a
-                     LEFT JOIN basic_exam b ON a.exam_id = b.id
+                     LEFT JOIN exam_print_plan epp ON a.print_plan_id = epp.id
+                     LEFT JOIN basic_exam b ON epp.exam_id = b.id
                 <where>
                     <if test="schoolId != null">
                         and a.school_id = #{schoolId}
@@ -59,7 +60,7 @@
                         and b.semester_id = #{semesterId}
                     </if>
                     <if test="examId != null">
-                        and a.exam_id = #{examId}
+                        and epp.exam_id = #{examId}
                     </if>
                     <if test="printPlanId != null">
                         and a.print_plan_id = #{printPlanId}
@@ -102,9 +103,10 @@
                              1
                          FROM
                              exam_detail ed
+                                LEFT JOIN exam_print_plan epp ON ed.print_plan_id = epp.id
                          WHERE
                              edc.exam_detail_id = ed.id
-                           AND ed.exam_id = #{examId})
+                           AND epp.exam_id = #{examId})
              GROUP BY exam_detail_id) c ON ed.id = c.exam_detail_id
                 LEFT JOIN
             exam_print_plan epp ON ed.print_plan_id = epp.id
@@ -123,10 +125,11 @@
                                          1
                                      FROM
                                          exam_detail ed
+                                            LEFT JOIN exam_print_plan epp ON ed.print_plan_id = epp.id
                                      WHERE
                                          edc.exam_detail_id = ed.id
-                                       AND ed.exam_id = #{examId})) edc
-                            JOIN
+                                       AND epp.exam_id = #{examId})) edc
+                           LEFT JOIN
                         (SELECT
                              *
                          FROM
@@ -426,7 +429,8 @@
                  a.*
              FROM
                  exam_detail a
-                     LEFT JOIN basic_exam b ON a.exam_id = b.id
+                    LEFT JOIN exam_print_plan epp ON a.print_plan_id = epp.id
+                     LEFT JOIN basic_exam b ON epp.exam_id = b.id
                     <where>
                         <if test="schoolId != null">
                             and a.school_id = #{schoolId}
@@ -435,7 +439,7 @@
                             and b.semester_id = #{semesterId}
                         </if>
                         <if test="examId != null">
-                            and a.exam_id = #{examId}
+                            and epp.exam_id = #{examId}
                         </if>
                         <if test="printPlanId != null">
                             and a.print_plan_id = #{printPlanId}
@@ -479,9 +483,10 @@
                                          1
                                      FROM
                                          exam_detail ed
+                                            LEFT JOIN exam_print_plan epp ON ed.print_plan_id = epp.id
                                      WHERE
                                          edc.exam_detail_id = ed.id
-                                       AND ed.exam_id = #{examId})) edc
+                                       AND epp.exam_id = #{examId})) edc
                             JOIN
                         (SELECT
                              *
@@ -490,6 +495,7 @@
                          WHERE
                              exam_id = #{examId}) et ON edc.course_code = et.course_code
                             AND edc.paper_number = et.paper_number
+                            left join sys_user su ON et.user_id = su.id
                     WHERE
                         ed.id = edc.exam_detail_id
                         <if test="courseCode != null and courseCode != ''">

+ 18 - 3
distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml

@@ -1262,8 +1262,8 @@
             b.backup_count,
             b.status,
             b.print_house_id,
-            b.exam_place campusName,
-            b.clazz_name className
+            ifnull(b.exam_place, a.exam_place) campusName,
+            ifnull(b.clazz_name, a.clazz_name) className
         FROM
         (SELECT
             et.exam_id,
@@ -1273,12 +1273,27 @@
             su.login_name,
             su.real_name,
             etd.unexposed_paper_type,
-            etd.exposed_paper_type
+            etd.exposed_paper_type,
+            c.exam_place,
+            c.clazz_name
         FROM
             exam_task et
         LEFT JOIN exam_task_detail etd ON et.id = etd.exam_task_id
         LEFT JOIN basic_exam be ON et.exam_id = be.id
         LEFT JOIN sys_user su ON et.user_id = su.id
+        LEFT JOIN (select ed.exam_id , edc.paper_number,
+                          group_concat(distinct ed.exam_place) exam_place,
+                          group_concat(distinct edc.clazz_name) clazz_name
+                          from exam_detail ed left join exam_detail_course edc on ed.id = edc.exam_detail_id
+                where ed.exam_id = #{examId}
+                <if test="courseCode != null and courseCode != ''">
+                    AND edc.course_code = #{courseCode}
+                </if>
+                <if test="paperNumber != null and paperNumber != ''">
+                    AND edc.paper_number = #{paperNumber}
+                </if>
+                group by ed.exam_id , edc.paper_number
+                ) c on et.exam_id = c.exam_id and et.paper_number = c.paper_number
         WHERE
         be.semester_id = #{semesterId}
         AND et.exam_id = #{examId}

+ 3 - 0
distributed-print-business/src/main/resources/mapper/TCUsualScoreMapper.xml

@@ -29,6 +29,9 @@
                 <if test="dpr.requestUserId != null">
                     AND tc.user_id = #{dpr.requestUserId}
                 </if>
+                <if test="dpr.courseUserId != null">
+                    AND tc.user_id = #{dpr.courseUserId}
+                </if>
                 <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
                     AND su.org_id IN
                     <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">

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

@@ -97,7 +97,7 @@ public class BasicCardRuleController {
      */
     @ApiOperation(value = "新增/修改")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
-    @OperationLogDetail(operationType = OperationTypeEnum.SAVE)
+    @OperationLogDetail(operationType = OperationTypeEnum.SAVE, detail = "新增/修改操作,题卡规则ID:{{cardRule.id}}、题卡规则名称:{{cardRule.name}}")
     public Result save(@RequestBody BasicCardRule cardRule) {
         return ResultUtil.ok(basicCardRuleService.saveCardRule(cardRule));
     }
@@ -110,7 +110,7 @@ public class BasicCardRuleController {
      */
     @ApiOperation(value = "删除")
     @RequestMapping(value = "/delete", method = RequestMethod.POST)
-    @OperationLogDetail(operationType = OperationTypeEnum.DELETE)
+    @OperationLogDetail(operationType = OperationTypeEnum.DELETE, detail = "删除操作,题卡规则ID:{{cardRule.id}}")
     public Result delete(@RequestBody BasicCardRule cardRule) {
         return ResultUtil.ok(basicCardRuleService.delete(cardRule));
     }
@@ -120,7 +120,7 @@ public class BasicCardRuleController {
      */
     @ApiOperation(value = "启用/禁用")
     @RequestMapping(value = "/enable", method = RequestMethod.POST)
-    @OperationLogDetail(operationType = OperationTypeEnum.UPDATE)
+    @OperationLogDetail(operationType = OperationTypeEnum.ENABLE, detail = "启用/禁用操作,题卡规则ID:{{basicCardRule.id}}、启用/状态:{{basicCardRule.enable}}")
     public Result enable(@RequestBody BasicCardRule basicCardRule) {
         return ResultUtil.ok(basicCardRuleService.enable(basicCardRule.getId(), basicCardRule.getEnable()));
     }

+ 11 - 17
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamCardController.java

@@ -45,28 +45,22 @@ public class ExamCardController {
 
     /**
      * 题卡管理-分页查询
-     *
-     * @param cardType        题卡类型(通卡或专卡)
-     * @param title           题卡名称模糊查询
-     * @param createMethod    题卡创建方式(上传、自定义)
-     * @param enable          1正常/0禁用
-     * @param createStartTime 创建时间(开始)
-     * @param createEndTime   创建时间(结束)
-     * @param pageNumber      分页参数
-     * @param pageSize        分页参数
-     * @return Result
      */
     @ApiOperation(value = "分页查询")
     @RequestMapping(value = "/page", method = RequestMethod.POST)
-    public Result page(@RequestParam(value = "cardType", required = false) String cardType,
-                       @RequestParam(value = "title", required = false) String title,
-                       @RequestParam(value = "createMethod", required = false) String createMethod,
-                       @RequestParam(value = "enable", required = false) Boolean enable,
-                       @RequestParam(value = "createStartTime", required = false) Long createStartTime,
-                       @RequestParam(value = "createEndTime", required = false) Long createEndTime,
+    public Result page(@ApiParam(value = "学期ID") @RequestParam(required = false) Long semesterId,
+                       @ApiParam(value = "考试ID") @RequestParam(required = false) Long examId,
+                       @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
+                       @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
+                       @ApiParam(value = "题卡类型(通卡或专卡)") @RequestParam(value = "cardType", required = false) String cardType,
+                       @ApiParam(value = "题卡名称模糊查询") @RequestParam(value = "title", required = false) String title,
+                       @ApiParam(value = "题卡创建方式(上传、自定义)") @RequestParam(value = "createMethod", required = false) String createMethod,
+                       @ApiParam(value = "1正常/0禁用") @RequestParam(value = "enable", required = false) Boolean enable,
+                       @ApiParam(value = "创建时间(开始)") @RequestParam(value = "createStartTime", required = false) Long createStartTime,
+                       @ApiParam(value = "创建时间(结束)") @RequestParam(value = "createEndTime", required = false) Long createEndTime,
                        @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                        @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        IPage<ExamCard> examCardIPage = examCardService.listPage(cardType, title, createMethod, enable, createStartTime, createEndTime, pageNumber, pageSize);
+        IPage<ExamCard> examCardIPage = examCardService.listPage(semesterId, examId, courseCode, paperNumber, cardType, title, createMethod, enable, createStartTime, createEndTime, pageNumber, pageSize);
         return ResultUtil.ok(examCardIPage);
     }
 

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

@@ -103,7 +103,7 @@ public class SysRoleController {
      */
     @ApiOperation(value = "启用/禁用")
     @RequestMapping(value = "/enable", method = RequestMethod.POST)
-    @OperationLogDetail(operationType = OperationTypeEnum.UPDATE, detail = "启用/禁用操作,角色ID:{{role.id}}、启用/状态:{{role.enable}}")
+    @OperationLogDetail(operationType = OperationTypeEnum.ENABLE, detail = "启用/禁用操作,角色ID:{{role.id}}、启用/状态:{{role.enable}}")
     public Result enable(@RequestBody SysRole role) throws NoSuchAlgorithmException {
         return ResultUtil.ok(sysRoleService.enableReport(role));
     }

+ 3 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/aspect/LogAspect.java

@@ -234,7 +234,7 @@ public class LogAspect {
                                         field.setAccessible(true);
                                         obj = field.get(v);
                                     }
-                                    detail = detail.replace("{{" + s + "}}", JSON.toJSONString(obj));
+                                    detail = detail.replace("{{" + s + "}}", JSON.toJSONString(obj == null ? "" : obj));
                                 }
                             } else if (fs.length == 3) {
                                 if (k.equals(fs[0])) {
@@ -255,12 +255,12 @@ public class LogAspect {
                                             }
                                         }
                                     }
-                                    detail = detail.replace("{{" + s + "}}", JSON.toJSONString(obj));
+                                    detail = detail.replace("{{" + s + "}}", JSON.toJSONString(obj == null ? "" : obj));
                                 }
                             }
                         } else {
                             if (k.equals(s)) {
-                                detail = detail.replace("{{" + s + "}}", JSON.toJSONString(v));
+                                detail = detail.replace("{{" + s + "}}", JSON.toJSONString(v == null ? "" : v));
                             }
                         }
                     }

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/UploadFileEnum.java

@@ -63,7 +63,7 @@ public enum UploadFileEnum {
     /**
      * 安装包/升级包
      */
-    UPGRADE("upgrade", "private", "");
+    UPGRADE("upgrade", "public", "");
 
 
     private String title;

+ 54 - 50
teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/ConvertUtil.java

@@ -89,33 +89,37 @@ public class ConvertUtil {
      * @return 键值对
      */
     public static Map<String, Object> analyzeDateAndTime(Long startTime, Long endTime) {
-        String tmpDateStart;
-        String tmpDateEnd;
-        String tmpTimeStart;
-        String tmpTimeEnd;
-        String date;
-        String time;
-
         Map<String, Object> map = new HashMap<>();
+        if (startTime != null && startTime > 0 && endTime != null && endTime > 0) {
+            String tmpDateStart;
+            String tmpDateEnd;
+            String tmpTimeStart;
+            String tmpTimeEnd;
+            String date;
+            String time;
+
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(new Date(startTime));
+            tmpDateStart = (new SimpleDateFormat("yyyy-MM-dd")).format(calendar.getTime());
+            tmpTimeStart = (new SimpleDateFormat("HH:mm:ss")).format(calendar.getTime());
+
+            calendar.setTime(new Date(endTime));
+            tmpDateEnd = (new SimpleDateFormat("yyyy-MM-dd")).format(calendar.getTime());
+            tmpTimeEnd = (new SimpleDateFormat("HH:mm:ss")).format(calendar.getTime());
+
+            if (!tmpDateStart.equals(tmpDateEnd)) {
+                throw ExceptionResultEnum.ERROR.exception("开始时间和结束时间不在同一天");
+            }
 
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(new Date(startTime));
-        tmpDateStart = (new SimpleDateFormat("yyyy-MM-dd")).format(calendar.getTime());
-        tmpTimeStart = (new SimpleDateFormat("HH:mm:ss")).format(calendar.getTime());
-
-        calendar.setTime(new Date(endTime));
-        tmpDateEnd = (new SimpleDateFormat("yyyy-MM-dd")).format(calendar.getTime());
-        tmpTimeEnd = (new SimpleDateFormat("HH:mm:ss")).format(calendar.getTime());
-
-        if (!tmpDateStart.equals(tmpDateEnd)) {
-            throw ExceptionResultEnum.ERROR.exception("开始时间和结束时间不在同一天");
+            date = tmpDateStart;
+            time = tmpTimeStart + " - " + tmpTimeEnd;
+            map.put("date", date);
+            map.put("time", time);
+        } else {
+            map.put("date", "-");
+            map.put("time", "-");
         }
 
-        date = tmpDateStart;
-        time = tmpTimeStart + " - " + tmpTimeEnd;
-        map.put("date", date);
-        map.put("time", time);
-
         return map;
     }
 
@@ -257,18 +261,18 @@ public class ConvertUtil {
         DataType dataType = getDataType(type);
 
         switch (dataType) {
-        case INT:
-            return parseInt(value);
-        case DOUBLE:
-            return parseDouble(value);
-        case LONG:
-            return parseLong(value);
-        case FLOAT:
-            return parseFloat(value);
-        case DATE:
-            return parseDate(value);
-        default:
-            return value;
+            case INT:
+                return parseInt(value);
+            case DOUBLE:
+                return parseDouble(value);
+            case LONG:
+                return parseLong(value);
+            case FLOAT:
+                return parseFloat(value);
+            case DATE:
+                return parseDate(value);
+            default:
+                return value;
         }
     }
 
@@ -280,21 +284,21 @@ public class ConvertUtil {
      */
     private static DataType getDataType(String type) {
         switch (type.toLowerCase()) {
-        case "int":
-        case "integer":
-            return DataType.INT;
-        case "double":
-            return DataType.DOUBLE;
-        case "long":
-            return DataType.LONG;
-        case "float":
-            return DataType.FLOAT;
-        case "date":
-            return DataType.DATE;
-        case "string":
-            return DataType.STRING;
-        default:
-            return DataType.valueOf(type); // 对于未知类型,尝试直接匹配枚举值
+            case "int":
+            case "integer":
+                return DataType.INT;
+            case "double":
+                return DataType.DOUBLE;
+            case "long":
+                return DataType.LONG;
+            case "float":
+                return DataType.FLOAT;
+            case "date":
+                return DataType.DATE;
+            case "string":
+                return DataType.STRING;
+            default:
+                return DataType.valueOf(type); // 对于未知类型,尝试直接匹配枚举值
         }
     }
 

+ 1 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/FileStoreUtil.java

@@ -247,6 +247,7 @@ public class FileStoreUtil {
     public String getPrivateUrlPrefix(String objectPath, String type) {
         String server = null;
         if ("public".equals(type)) {
+            server = dictionaryConfig.fssPublicDomain().getServer();
             return server + SystemConstant.ORG_SPLIT;
         } else if ("private".equals(type)) {
             Boolean oss = dictionaryConfig.sysDomain().isOss();

+ 6 - 0
teachcloud-mark/src/main/resources/mapper/MarkPaperMapper.xml

@@ -157,6 +157,9 @@
             <if test="dpr.requestUserId != null">
                 AND s.teacher_id = #{dpr.requestUserId}
             </if>
+            <if test="dpr.courseUserId != null">
+                AND EXISTS( SELECT 1 FROM (select course_code from teach_course where exam_id = #{req.examId} and user_id = #{dpr.courseUserId}) tc WHERE tc.course_code = t.course_code)
+            </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=")">
@@ -249,6 +252,9 @@
             <if test="dpr.requestUserId != null">
                 AND t.user_id = #{dpr.requestUserId}
             </if>
+            <if test="dpr.courseUserId != null">
+                AND EXISTS( SELECT 1 FROM (select course_code from teach_course where exam_id = #{req.examId} and user_id = #{dpr.courseUserId}) tc WHERE tc.course_code = t.course_code)
+            </if>
             <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
                 AND su.org_id IN
                 <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">