瀏覽代碼

3.4.0 update

xiaofei 11 月之前
父節點
當前提交
9e54ef3d6d

+ 13 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamTask.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.distributed.print.business.enums.ExamStatusEnum;
 import com.qmth.distributed.print.business.enums.ExamStatusEnum;
+import com.qmth.distributed.print.business.enums.ExamTaskSourceEnum;
 import com.qmth.distributed.print.business.enums.ReviewStatusEnum;
 import com.qmth.distributed.print.business.enums.ReviewStatusEnum;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
@@ -138,6 +139,10 @@ public class ExamTask extends BaseEntity implements Serializable {
     @TableField(value = "approve_form_attachment_id")
     @TableField(value = "approve_form_attachment_id")
     private Long approveFormAttachmentId;
     private Long approveFormAttachmentId;
 
 
+    @ApiModelProperty(value = "命题任务发起方式")
+    @TableField(value = "source")
+    private ExamTaskSourceEnum source;
+
     @TableField(exist = false)
     @TableField(exist = false)
     private Long examStartTime;
     private Long examStartTime;
 
 
@@ -390,4 +395,12 @@ public class ExamTask extends BaseEntity implements Serializable {
     public void setExamEndTime(Long examEndTime) {
     public void setExamEndTime(Long examEndTime) {
         this.examEndTime = examEndTime;
         this.examEndTime = examEndTime;
     }
     }
+
+    public ExamTaskSourceEnum getSource() {
+        return source;
+    }
+
+    public void setSource(ExamTaskSourceEnum source) {
+        this.source = source;
+    }
 }
 }

+ 41 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/ExamTaskSourceEnum.java

@@ -0,0 +1,41 @@
+package com.qmth.distributed.print.business.enums;
+
+import com.qmth.teachcloud.common.enums.EnumResult;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 命题任务创建方式
+ */
+public enum ExamTaskSourceEnum {
+
+    ASSIGN("指派"),
+    SELF("自主发起");
+
+    ExamTaskSourceEnum(String name) {
+        this.name = name;
+    }
+
+    private String name;
+
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * @return
+     */
+    public static List<EnumResult> listTypes() {
+        List<EnumResult> list = new ArrayList<EnumResult>();
+        for (ExamTaskSourceEnum value : ExamTaskSourceEnum.values()) {
+            EnumResult result = new EnumResult();
+            result.setCode(value.name());
+            result.setName(value.getName());
+            result.setOrdinal(value.ordinal());
+            list.add(result);
+        }
+        return list;
+    }
+
+}

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

@@ -21,7 +21,7 @@ public interface ExamCardMapper extends BaseMapper<ExamCard> {
 
 
     List<ExamCard> listGenericCard(@Param("schoolId") Long schoolId, @Param("type") String type, @Param("cardRuleId") Long cardRuleId);
     List<ExamCard> listGenericCard(@Param("schoolId") Long schoolId, @Param("type") String type, @Param("cardRuleId") Long cardRuleId);
 
 
-    List<ExamCard> listCustom(@Param("schoolId") Long schoolId, @Param("courseId") Long courseId, @Param("type") String type, @Param("cardRuleId") Long cardRuleId);
+    List<ExamCard> listCustom(@Param("schoolId") Long schoolId, @Param("courseId") Long courseId, @Param("type") String type, @Param("cardRuleId") Long cardRuleId, @Param("paperId") Long paperId, @Param("userId") Long userId);
 
 
     IPage<ExamCard> listPage(@Param("page") Page<ExamCard> page, @Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("courseId") Long courseId, @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);
     IPage<ExamCard> listPage(@Param("page") Page<ExamCard> page, @Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("courseId") Long courseId, @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);
 
 

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

@@ -23,7 +23,7 @@ public interface ExamCardService extends IService<ExamCard> {
 
 
     Map<String, String> saveExamCard(ExamCardParams examCardParams) throws Exception;
     Map<String, String> saveExamCard(ExamCardParams examCardParams) throws Exception;
 
 
-    List<ExamCard> listSelectCard(Long examId, Long courseId, String paperNumber);
+    List<ExamCard> listSelectCard(Long examId, Long courseId, String paperNumber, Long paperId);
 
 
     IPage<ExamCard> listPage(Long semesterId, Long examId, Long courseId, String paperNumber, String cardType, String title, String createMethod, Boolean enable, Long createStartTime, Long createEndTime, Integer pageNumber, Integer pageSize);
     IPage<ExamCard> listPage(Long semesterId, Long examId, Long courseId, String paperNumber, String cardType, String title, String createMethod, Boolean enable, Long createStartTime, Long createEndTime, Integer pageNumber, Integer pageSize);
 
 

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

@@ -41,6 +41,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import javax.print.attribute.standard.Severity;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.File;
 import java.util.*;
 import java.util.*;
@@ -165,28 +166,31 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
     }
     }
 
 
     @Override
     @Override
-    public List<ExamCard> listSelectCard(Long examId, Long courseId, String paperNumber) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+    public List<ExamCard> listSelectCard(Long examId, Long courseId, String paperNumber, Long paperId) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamId(examId);
         BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamId(examId);
         Long cardRuleId = basicPrintConfig.getCardRuleId();
         Long cardRuleId = basicPrintConfig.getCardRuleId();
 
 
         // 通用题卡
         // 通用题卡
         List<ExamCard> list = new ArrayList<>();
         List<ExamCard> list = new ArrayList<>();
-        List<ExamCard> genericCards = this.baseMapper.listGenericCard(schoolId, CardTypeEnum.GENERIC.name(), cardRuleId);
-        if (!genericCards.isEmpty()) {
-            list.addAll(genericCards);
+        // 题库选择不返回通卡
+        if (paperId == null) {
+            List<ExamCard> genericCards = this.baseMapper.listGenericCard(sysUser.getSchoolId(), CardTypeEnum.GENERIC.name(), cardRuleId);
+            if (!genericCards.isEmpty()) {
+                list.addAll(genericCards);
+            }
         }
         }
         // 专卡
         // 专卡
         if (SystemConstant.ALL_CARD != cardRuleId) {
         if (SystemConstant.ALL_CARD != cardRuleId) {
             // 只查自己创建的专卡(20230405已改为查询课程下所有题卡,允许复制,不能选择)
             // 只查自己创建的专卡(20230405已改为查询课程下所有题卡,允许复制,不能选择)
-            List<ExamCard> customCards = this.baseMapper.listCustom(schoolId, courseId, CardTypeEnum.CUSTOM.name(), cardRuleId);
+            List<ExamCard> customCards = this.baseMapper.listCustom(sysUser.getSchoolId(), courseId, CardTypeEnum.CUSTOM.name(), cardRuleId, paperId, sysUser.getId());
             if (!customCards.isEmpty()) {
             if (!customCards.isEmpty()) {
                 list.addAll(customCards);
                 list.addAll(customCards);
             }
             }
         }
         }
 
 
         // 命题任务未提交的任务,单独查询题卡
         // 命题任务未提交的任务,单独查询题卡
-        List<ExamCard> customCards = this.baseMapper.listCustomByExamStage(schoolId, examId, courseId, paperNumber, CardTypeEnum.CUSTOM.name());
+        List<ExamCard> customCards = this.baseMapper.listCustomByExamStage(sysUser.getSchoolId(), examId, courseId, paperNumber, CardTypeEnum.CUSTOM.name());
         if (!customCards.isEmpty()) {
         if (!customCards.isEmpty()) {
             for (ExamCard customCard : customCards) {
             for (ExamCard customCard : customCards) {
                 long count = list.stream().filter(m -> m.getId().equals(customCard.getId())).count();
                 long count = list.stream().filter(m -> m.getId().equals(customCard.getId())).count();

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

@@ -289,7 +289,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         try {
         try {
             Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
             Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
             Long examId = examTask.getExamId();
             Long examId = examTask.getExamId();
-//            String courseCode = examTask.getCourseCode();
             BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamId(examId);
             BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamId(examId);
             examTask.setSchoolId(schoolId);
             examTask.setSchoolId(schoolId);
             examTask.setCardRuleId(basicPrintConfig.getCardRuleId());
             examTask.setCardRuleId(basicPrintConfig.getCardRuleId());
@@ -332,6 +331,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             } else if (Objects.nonNull(examTask.getReview()) && !examTask.getReview()) {
             } else if (Objects.nonNull(examTask.getReview()) && !examTask.getReview()) {
                 examTask.setStatus(ExamStatusEnum.STAGE);
                 examTask.setStatus(ExamStatusEnum.STAGE);
             }
             }
+            examTask.setSource(ExamTaskSourceEnum.ASSIGN);
             this.save(examTask);
             this.save(examTask);
         } catch (Exception e) {
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
             log.error(SystemConstant.LOG_ERROR, e);
@@ -602,6 +602,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 examTask.setStatus(ExamStatusEnum.DRAFT);
                 examTask.setStatus(ExamStatusEnum.DRAFT);
             }
             }
             examTask.setReview(basicPrintConfig.getReview());
             examTask.setReview(basicPrintConfig.getReview());
+            examTask.setSource(ExamTaskSourceEnum.ASSIGN);
             list.add(examTask);
             list.add(examTask);
         }
         }
 
 
@@ -1077,6 +1078,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             examTask.setReview(basicPrintConfig.getReview());
             examTask.setReview(basicPrintConfig.getReview());
             examTask.setUserId(sysUser.getId());
             examTask.setUserId(sysUser.getId());
             examTask.setStatus(ExamStatusEnum.SUBMIT);
             examTask.setStatus(ExamStatusEnum.SUBMIT);
+            examTask.setSource(ExamTaskSourceEnum.SELF);
             examTask.insertInfo(sysUser.getId());
             examTask.insertInfo(sysUser.getId());
 
 
             if (Objects.isNull(examTask.getFlowId())) {
             if (Objects.isNull(examTask.getFlowId())) {

+ 3 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java

@@ -13,6 +13,7 @@ import com.qmth.distributed.print.business.bean.dto.PdfSignDto;
 import com.qmth.distributed.print.business.bean.excel.ExcelField;
 import com.qmth.distributed.print.business.bean.excel.ExcelField;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
 import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
+import com.qmth.distributed.print.business.enums.ExamTaskSourceEnum;
 import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
 import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.util.CreatePrintPdfUtil;
 import com.qmth.distributed.print.business.util.CreatePrintPdfUtil;
@@ -891,7 +892,8 @@ public class PrintCommonServiceImpl implements PrintCommonService {
                     }
                     }
                 }
                 }
             } else {
             } else {
-                if (ExamModelEnum.MODEL1.equals(basicExam.getExamModel()) || ExamModelEnum.MODEL3.equals(basicExam.getExamModel())) {
+                // 指派命题老师方式,自动关联考生管理数据
+                if (ExamTaskSourceEnum.ASSIGN.equals(examTask.getSource())) {
                     // 自动关联考生表中数据,并生成考场信息
                     // 自动关联考生表中数据,并生成考场信息
                     List<ExamDetail> examDetailList1 = examTaskService.matchBasicExamStudent(basicExam, examTask, examTaskDetail, user);
                     List<ExamDetail> examDetailList1 = examTaskService.matchBasicExamStudent(basicExam, examTask, examTaskDetail, user);
                     if (CollectionUtils.isNotEmpty(examDetailList1)) {
                     if (CollectionUtils.isNotEmpty(examDetailList1)) {

+ 9 - 2
distributed-print-business/src/main/resources/mapper/ExamCardMapper.xml

@@ -57,14 +57,21 @@
             a.id, a.title, a.type, a.create_id createId, a.make_method makeMethod, a.create_method createMethod, a.used
             a.id, a.title, a.type, a.create_id createId, a.make_method makeMethod, a.create_method createMethod, a.used
         FROM
         FROM
             exam_card a
             exam_card a
-        WHERE
+        <where>
             a.school_id = #{schoolId}
             a.school_id = #{schoolId}
             AND a.course_id = #{courseId}
             AND a.course_id = #{courseId}
             AND a.type = #{type}
             AND a.type = #{type}
             AND a.card_rule_id = #{cardRuleId}
             AND a.card_rule_id = #{cardRuleId}
             AND a.create_time >= 1680624000000
             AND a.create_time >= 1680624000000
             AND a.enable = true
             AND a.enable = true
-            AND a.paper_id is null
+            <if test="paperId != null">
+                AND a.paper_id = #{paperId}
+            </if>
+            <if test="paperId == null">
+                AND a.paper_id is null
+            </if>
+            AND a.create_id = #{userId}
+        </where>
         order by a.create_time desc
         order by a.create_time desc
     </select>
     </select>
     <select id="listPage" resultType="com.qmth.distributed.print.business.entity.ExamCard">
     <select id="listPage" resultType="com.qmth.distributed.print.business.entity.ExamCard">

+ 16 - 1
distributed-print/install/mysql/upgrade/3.4.0.sql

@@ -272,4 +272,19 @@ INSERT INTO sys_privilege
 VALUES(2092, '列表', 'List', 'LIST', 2088, 1, 'AUTH', '2093', 1, 0, 1);
 VALUES(2092, '列表', 'List', 'LIST', 2088, 1, 'AUTH', '2093', 1, 0, 1);
 INSERT INTO sys_privilege
 INSERT INTO sys_privilege
 (id, name, url, `type`, parent_id, `sequence`, property, related, enable, default_auth, front_display)
 (id, name, url, `type`, parent_id, `sequence`, property, related, enable, default_auth, front_display)
-VALUES(2093, '命题任务统计查询', '/api/admin/statistics/statement/count', 'URL', 2088, 1, 'AUTH', NULL, 1, 1, 1);
+VALUES(2093, '命题任务统计查询', '/api/admin/statistics/statement/count', 'URL', 2088, 1, 'AUTH', NULL, 1, 1, 1);
+
+-- 2024-07-10
+ALTER TABLE `exam_task` ADD COLUMN `source` VARCHAR(45) NULL COMMENT '命题任务创建方式(ASSIGN:命题任务指派,SELF:老师自主发起)' AFTER `approve_form_attachment_id`;
+UPDATE exam_task et
+SET
+    et.source = (SELECT
+                     CASE
+                         WHEN etd.create_id IS NULL THEN 'ASSIGN'
+                         ELSE 'SELF'
+                         END
+                 FROM
+                     exam_task_detail etd
+                 WHERE
+                         et.id = etd.exam_task_id);
+update exam_task set source = 'ASSIGN' where paper_name is null and source is null;

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

@@ -142,8 +142,9 @@ public class ExamCardController {
     @RequestMapping(value = "/select_card_list", method = RequestMethod.POST)
     @RequestMapping(value = "/select_card_list", method = RequestMethod.POST)
     public Result selectCardList(@ApiParam(value = "考试ID") @RequestParam Long examId,
     public Result selectCardList(@ApiParam(value = "考试ID") @RequestParam Long examId,
                                  @ApiParam(value = "课程ID") @RequestParam Long courseId,
                                  @ApiParam(value = "课程ID") @RequestParam Long courseId,
-                                 @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber) {
-        List<ExamCard> list = examCardService.listSelectCard(examId, courseId, paperNumber);
+                                 @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
+                                 @ApiParam(value = "题库试卷ID") @RequestParam(required = false) Long paperId) {
+        List<ExamCard> list = examCardService.listSelectCard(examId, courseId, paperNumber, paperId);
         return ResultUtil.ok(list);
         return ResultUtil.ok(list);
     }
     }