Sfoglia il codice sorgente

新增模式4答题卡管理

wangliang 3 mesi fa
parent
commit
06742ae534

+ 27 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamCardModelFour.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.distributed.print.business.bean.params.GenericExamCardModelFourParams;
@@ -9,6 +10,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * <p>
@@ -27,6 +29,10 @@ public class ExamCardModelFour extends BaseEntity implements Serializable {
     @JsonSerialize(using = ToStringSerializer.class)
     private Long schoolId;
 
+    @ApiModelProperty(value = "机构id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
+
     @ApiModelProperty(value = "考试id")
     @JsonSerialize(using = ToStringSerializer.class)
     private Long examId;
@@ -66,13 +72,17 @@ public class ExamCardModelFour extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "备注")
     private String remark;
 
+    @TableField(exist = false)
+    private List<String> imageUrls;
+
     public ExamCardModelFour() {
 
     }
 
-    public ExamCardModelFour(Long schoolId, Long userId) {
+    public ExamCardModelFour(Long schoolId, Long orgId, Long userId) {
         this.insertInfo(userId);
         this.schoolId = schoolId;
+        this.orgId = orgId;
         this.enable = true;
     }
 
@@ -86,6 +96,14 @@ public class ExamCardModelFour extends BaseEntity implements Serializable {
         this.courseId = params.getCourseId();
     }
 
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
     public Long getSchoolId() {
         return schoolId;
     }
@@ -189,4 +207,12 @@ public class ExamCardModelFour extends BaseEntity implements Serializable {
     public void setRemark(String remark) {
         this.remark = remark;
     }
+
+    public List<String> getImageUrls() {
+        return imageUrls;
+    }
+
+    public void setImageUrls(List<String> imageUrls) {
+        this.imageUrls = imageUrls;
+    }
 }

+ 20 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamCardModelFourMapper.java

@@ -1,7 +1,12 @@
 package com.qmth.distributed.print.business.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.distributed.print.business.entity.ExamCardModelFour;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +18,19 @@ import com.qmth.distributed.print.business.entity.ExamCardModelFour;
  */
 public interface ExamCardModelFourMapper extends BaseMapper<ExamCardModelFour> {
 
+    /**
+     * 模式4答题卡列表(分页)
+     *
+     * @param iPage
+     * @param schoolId
+     * @param semesterId
+     * @param examId
+     * @param courseId
+     * @param collegeId
+     * @param title
+     * @param paperNumber
+     * @param dpr
+     * @return
+     */
+    IPage<ExamCardModelFour> listPage(IPage<Map> iPage, @Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("courseId") Long courseId, @Param("collegeId") Long collegeId, @Param("title") String title, @Param("paperNumber") String paperNumber, @Param("dpr") DataPermissionRule dpr);
 }

+ 16 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamCardModelFourService.java

@@ -1,7 +1,9 @@
 package com.qmth.distributed.print.business.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.bean.params.GenericExamCardModelFourParams;
+import com.qmth.distributed.print.business.entity.ExamCard;
 import com.qmth.distributed.print.business.entity.ExamCardModelFour;
 
 import java.util.Map;
@@ -32,4 +34,18 @@ public interface ExamCardModelFourService extends IService<ExamCardModelFour> {
      * @return
      */
     ExamCardModelFour createJpgImage(ExamCardModelFour examCardModelFour);
+
+    /**
+     * 模式4答题卡列表(分页)
+     *
+     * @param iPage
+     * @param semesterId
+     * @param examId
+     * @param courseId
+     * @param paperNumber
+     * @param collegeId
+     * @param title
+     * @return
+     */
+    IPage<ExamCardModelFour> listPage(IPage<Map> iPage, Long semesterId, Long examId, Long courseId, String paperNumber, Long collegeId, String title);
 }

+ 44 - 8
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardModelFourServiceImpl.java

@@ -1,7 +1,9 @@
 package com.qmth.distributed.print.business.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.boot.core.concurrent.service.ConcurrentService;
 import com.qmth.distributed.print.business.bean.params.GenericExamCardModelFourParams;
@@ -15,28 +17,28 @@ import com.qmth.distributed.print.business.service.ExamCardModelFourService;
 import com.qmth.distributed.print.business.util.CreatePdfUtil;
 import com.qmth.distributed.print.business.util.HtmlToJpgUtil;
 import com.qmth.distributed.print.business.util.PdfUtil;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.bean.marking.ConvertJpgStorage;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicCourse;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.service.BasicCourseService;
-import com.qmth.teachcloud.common.service.FileUploadService;
+import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
+import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.util.FileUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.mark.enums.LockType;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.io.File;
 import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 /**
  * <p>
@@ -62,10 +64,13 @@ public class ExamCardModelFourServiceImpl extends ServiceImpl<ExamCardModelFourM
     CreatePdfUtil createPdfUtil;
 
     @Resource
-    FileUploadService fileUploadService;
+    HtmlToJpgUtil htmlToJpgUtil;
 
     @Resource
-    HtmlToJpgUtil htmlToJpgUtil;
+    BasicRoleDataPermissionService basicRoleDataPermissionService;
+
+    @Resource
+    TeachcloudCommonService teachcloudCommonService;
 
     /**
      * 新增/修改模式4题卡
@@ -93,7 +98,7 @@ public class ExamCardModelFourServiceImpl extends ServiceImpl<ExamCardModelFourM
                 if (Objects.nonNull(checkTitleExamCardModelFourDb)) {
                     throw ExceptionResultEnum.ERROR.exception("题卡名称已使用");
                 }
-                examCardModelFour = new ExamCardModelFour(schoolId, sysUser.getId());
+                examCardModelFour = new ExamCardModelFour(schoolId, sysUser.getOrgId(), sysUser.getId());
             }
             // 修改
             else {
@@ -174,4 +179,35 @@ public class ExamCardModelFourServiceImpl extends ServiceImpl<ExamCardModelFourM
         }
         return examCardModelFour;
     }
+
+    /**
+     * 模式4答题卡列表(分页)
+     *
+     * @param semesterId
+     * @param examId
+     * @param courseId
+     * @param paperNumber
+     * @param collegeId
+     * @param title
+     * @return
+     */
+    @Override
+    public IPage<ExamCardModelFour> listPage(IPage<Map> iPage, Long semesterId, Long examId, Long courseId, String paperNumber, Long collegeId, String title) {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
+        IPage<ExamCardModelFour> cardPageDtoIPage = this.baseMapper.listPage(iPage, schoolId, semesterId, examId, courseId, collegeId, title, paperNumber, dpr);
+        for (ExamCardModelFour record : cardPageDtoIPage.getRecords()) {
+            if (StringUtils.isNotBlank(record.getJpgAttachment())) {
+                List<JSONObject> mapList = JSON.parseArray(record.getJpgAttachment(), JSONObject.class);
+                List<String> imageUrls = new ArrayList<>();
+                // 组装图片访问url
+                for (JSONObject object : mapList) {
+                    imageUrls.add(teachcloudCommonService.filePreview(object.getLong("attachmentId")));
+                }
+                record.setImageUrls(imageUrls);
+            }
+        }
+        return cardPageDtoIPage;
+    }
 }

+ 52 - 0
distributed-print-business/src/main/resources/mapper/ExamCardModelFourMapper.xml

@@ -2,4 +2,56 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.qmth.distributed.print.business.mapper.ExamCardModelFourMapper">
 
+    <select id="listPage" resultType="com.qmth.distributed.print.business.entity.ExamCardModelFour">
+        select bc.code courseCode,
+        bc.name courseName,
+        ecmf.*
+        from exam_card_model_four ecmf
+        left join basic_course bc on ecmf.course_id = bc.id
+        <where>
+            ec.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 semesterId != ''">
+                        AND be.semester_id = #{semesterId}
+                    </if>
+                    <if test="examId != null and examId != ''">
+                        AND et.exam_id = #{examId}
+                    </if>
+                    <if test="courseId != null and courseId != ''">
+                        AND et.course_id = #{courseId}
+                    </if>
+                    <if test="paperNumber != null and paperNumber != ''">
+                        AND et.paper_number = #{paperNumber}
+                    </if>
+                </where>
+                ) t
+                WHERE LOCATE(ecmf.id,t.cardId) > 0)
+            </if>
+            <if test="collegeId != null and collegeId != ''">
+                AND bc.teaching_room_id = #{collegeId}
+            </if>
+            <if test="title != null and title != ''">
+                and ecmf.title like concat('%', #{title}, '%')
+            </if>
+            <if test="dpr != null">
+                <if test="dpr.requestUserId != null">
+                    AND ecmf.create_id = #{dpr.requestUserId}
+                </if>
+                <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                    AND ecmf.org_id IN
+                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
+            </if>
+        </where>
+        order by create_time desc
+    </select>
 </mapper>

+ 1 - 0
distributed-print/install/mysql/upgrade/3.4.4.sql

@@ -184,6 +184,7 @@ VALUES(51, NULL, NULL, 'mark.score.calculate.job.db.limit', '统分查询考生
 CREATE TABLE IF NOT EXISTS `exam_card_model_four` (
   `id` bigint NOT NULL COMMENT '主键',
   `school_id` bigint NOT NULL COMMENT '学校id',
+  `org_id` bigint DEFAULT NULL COMMENT '机构id',
   `exam_id` bigint DEFAULT NULL COMMENT '考试id',
   `course_id` bigint DEFAULT NULL COMMENT '课程ID(basic_course表ID)',
   `title` varchar(200) NOT NULL COMMENT '标题',

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

@@ -1,6 +1,7 @@
 package com.qmth.distributed.print.api;
 
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.params.GenericExamCardModelFourParams;
 import com.qmth.distributed.print.business.bean.result.EditResult;
@@ -42,11 +43,11 @@ public class ExamCardModelFourController {
                        @ApiParam(value = "考试ID") @RequestParam(required = false) Long examId,
                        @ApiParam(value = "课程代码") @RequestParam(required = false) Long courseId,
                        @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
-                       @ApiParam(value = "开课学院ID") @RequestParam(required = false) String collegeId,
+                       @ApiParam(value = "开课学院ID") @RequestParam(required = false) Long collegeId,
                        @ApiParam(value = "题卡名称模糊查询") @RequestParam(required = false) String title,
                        @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                        @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        return ResultUtil.ok();
+        return ResultUtil.ok(examCardModelFourService.listPage(new Page<>(pageNumber, pageSize), semesterId, examId, courseId, paperNumber, collegeId, title));
     }
 
     @ApiOperation(value = "根据ID获取题卡详情")