Browse Source

3.3.1 优化

xiaofei 1 year ago
parent
commit
d534123ae0

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientExamTaskDto.java

@@ -20,6 +20,7 @@ public class ClientExamTaskDto {
     private Boolean isTry;
     private Boolean isPass;
     private Long tryTime;
+    private String examDetailIds;
 
     public String getExamTaskId() {
         return examTaskId;
@@ -140,4 +141,12 @@ public class ClientExamTaskDto {
     public void setTryTime(Long tryTime) {
         this.tryTime = tryTime;
     }
+
+    public String getExamDetailIds() {
+        return examDetailIds;
+    }
+
+    public void setExamDetailIds(String examDetailIds) {
+        this.examDetailIds = examDetailIds;
+    }
 }

+ 45 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/client/PrintSingleDto.java

@@ -4,16 +4,29 @@ import java.util.List;
 
 public class PrintSingleDto {
 
+    private Long examId;
     private String examName;
+    private Long printPlanId;
+    private String printPlanName;
     private String courseCode;
     private String courseName;
     private String paperNumber;
+    private String paperType;
+    private String examDetailIds;
     private List<UrlMd5Dto> paper;
     private List<UrlMd5Dto> card;
     private List<UrlMd5Dto> signs;
     private List<UrlMd5Dto> packages;
     private List<UrlMd5Dto> checkIn;
 
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
     public String getExamName() {
         return examName;
     }
@@ -22,6 +35,22 @@ public class PrintSingleDto {
         this.examName = examName;
     }
 
+    public Long getPrintPlanId() {
+        return printPlanId;
+    }
+
+    public void setPrintPlanId(Long printPlanId) {
+        this.printPlanId = printPlanId;
+    }
+
+    public String getPrintPlanName() {
+        return printPlanName;
+    }
+
+    public void setPrintPlanName(String printPlanName) {
+        this.printPlanName = printPlanName;
+    }
+
     public String getCourseCode() {
         return courseCode;
     }
@@ -46,6 +75,22 @@ public class PrintSingleDto {
         this.paperNumber = paperNumber;
     }
 
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getExamDetailIds() {
+        return examDetailIds;
+    }
+
+    public void setExamDetailIds(String examDetailIds) {
+        this.examDetailIds = examDetailIds;
+    }
+
     public List<UrlMd5Dto> getPaper() {
         return paper;
     }

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

@@ -6,6 +6,7 @@ import com.qmth.distributed.print.business.bean.dto.ClientExamStudentDto;
 import com.qmth.distributed.print.business.bean.dto.ClientExamTaskDto;
 import com.qmth.distributed.print.business.bean.dto.ClientPrintTaskDto;
 import com.qmth.distributed.print.business.bean.dto.ClientPrintTaskTotalDto;
+import com.qmth.distributed.print.business.bean.dto.client.PrintSingleDto;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -21,5 +22,5 @@ public interface ClientMapper {
 
     IPage<ClientExamStudentDto> listClientExamStudentPage(Page<ClientExamStudentDto> page, Long schoolId, Long examDetailId, String studentCode, String studentName, String courseCode);
 
-    List<ClientExamTaskDto> pagePrintSingleData(@Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("printPlanId") Long printPlanId, @Param("courseCode") Long courseCode, @Param("paperNumber") Long paperNumber, @Param("examDetailStatus") String[] examDetailStatus);
+    IPage<PrintSingleDto> pagePrintSingleData(@Param("page") Page<PrintSingleDto> page, @Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("printPlanId") Long printPlanId, @Param("courseCode") Long courseCode, @Param("paperNumber") Long paperNumber, @Param("examDetailStatus") String[] examDetailStatus);
 }

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

@@ -54,5 +54,5 @@ public interface ClientService {
 
     Set<String> getRoleByUserId(Long id);
 
-    PrintSingleDto getSingleData(Long semesterId, Long examId, Long printPlanId, Long courseCode, Long paperNumber, Integer pageNumber, Integer pageSize);
+    IPage<PrintSingleDto> getSingleData(Long semesterId, Long examId, Long printPlanId, Long courseCode, Long paperNumber, Integer pageNumber, Integer pageSize);
 }

+ 19 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.dto.client.PrintSingleDto;
+import com.qmth.distributed.print.business.bean.dto.client.UrlMd5Dto;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
 import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
@@ -27,6 +28,7 @@ import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import net.sf.jsqlparser.statement.select.Select;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.Streams;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -36,6 +38,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 客户端
@@ -771,10 +774,23 @@ public class ClientServiceImpl implements ClientService {
     }
 
     @Override
-    public PrintSingleDto getSingleData(Long semesterId, Long examId, Long printPlanId, Long courseCode, Long paperNumber, Integer pageNumber, Integer pageSize) {
-        Page<ClientExamTaskDto> page = new Page<>(pageNumber, pageSize);
+    public IPage<PrintSingleDto> getSingleData(Long semesterId, Long examId, Long printPlanId, Long courseCode, Long paperNumber, Integer pageNumber, Integer pageSize) {
+        Page<PrintSingleDto> page = new Page<>(pageNumber, pageSize);
         String[] examDetailStatus = {ExamDetailStatusEnum.NEW.name(), ExamDetailStatusEnum.READY.name(), ExamDetailStatusEnum.CANCEL.name()};
-        List<ClientExamTaskDto> clientExamTaskDtoList = clientMapper.pagePrintSingleData(semesterId, examId, printPlanId, courseCode, paperNumber, examDetailStatus);
+        IPage<PrintSingleDto> clientExamTaskDtoList = clientMapper.pagePrintSingleData(page, semesterId, examId, printPlanId, courseCode, paperNumber, examDetailStatus);
+        for (PrintSingleDto record : clientExamTaskDtoList.getRecords()) {
+            ExamTaskDetail examTaskDetail = examTaskDetailService.getByExamIdAndCourseCodeAndPaperNumber(record.getExamId(), record.getCourseCode(), record.getPaperNumber());
+            // 试卷
+            List<PaperInfoVo> paperInfoVoList = examTaskDetail.getPaperInfoVoList(record.getPaperType());
+            List<UrlMd5Dto> paperList = new ArrayList<>();
+            for (PaperInfoVo paperInfoVo : paperInfoVoList) {
+                BasicAttachment basicAttachment = basicAttachmentService.getById(paperInfoVo.getAttachmentId());
+                String url = teachcloudCommonService.filePreview(paperInfoVo.getAttachmentId());
+                paperList.add(new UrlMd5Dto(url, basicAttachment.getMd5()));
+            }
+            record.setPaper(paperList);
+
+        }
         return null;
     }
 

+ 12 - 8
distributed-print-business/src/main/resources/mapper/ClientMapper.xml

@@ -358,24 +358,21 @@
         </where>
         order by c.student_code
     </select>
-    <select id="pagePrintSingleData" resultType="com.qmth.distributed.print.business.bean.dto.ClientExamTaskDto">
+    <select id="pagePrintSingleData" resultType="com.qmth.distributed.print.business.bean.dto.client.PrintSingleDto">
         SELECT
-            distinct b.exam_id examId,
+            b.exam_id examId,
+            be.name examName,
             epp.id printPlanId,
             epp.name printPlanName,
             c.course_code courseCode,
             c.course_name courseName,
             c.paper_number paperNumber,
-            c.paper_type paperType,
-            d.id examTaskId
+            group_concat(c.paper_type) paperType,
+            group_concat(b.id) examDetailIds
         FROM
             exam_detail b
                 JOIN
             exam_detail_course c ON b.id = c.exam_detail_id
-                JOIN
-            exam_task d ON d.exam_id = b.exam_id
-                AND d.course_code = c.course_code
-                AND d.paper_number = c.paper_number
                 LEFT JOIN
             exam_print_plan epp ON b.print_plan_id = epp.id
                 LEFT JOIN
@@ -401,5 +398,12 @@
                 #{item}
             </foreach>
         </where>
+        group by b.exam_id,
+            be.name,
+            epp.id,
+            epp.name,
+            c.course_code,
+            c.course_name,
+            c.paper_number
     </select>
 </mapper>

+ 5 - 3
distributed-print/install/mysql/upgrade/3.3.1.sql

@@ -382,11 +382,13 @@ UPDATE `sys_privilege` SET `parent_id` = '115' WHERE (`id` = '413');
 UPDATE `sys_privilege` SET `parent_id` = '115' WHERE (`id` = '190');
 
 update mark_question t
-set t.objective_policy = 'LEAK'
-where t.objective_policy = 'LEAK_HALF';
+set t.objective_policy = 'LEAK_HALF'
+where t.objective_policy = 'LEAK';
 ALTER TABLE `mark_question`
     ADD COLUMN `objective_policy_score` double DEFAULT NULL COMMENT '客观题判分策略计分';
 ALTER TABLE `scan_paper`
     ADD COLUMN `invalid` bit(1) NOT NULL COMMENT '强制绑定';
 ALTER TABLE `mark_student`
-    ADD COLUMN `invalid` bit(1) NOT NULL COMMENT '强制绑定';
+    ADD COLUMN `invalid` bit(1) NOT NULL COMMENT '强制绑定';
+
+ALTER TABLE `exam_card` ADD COLUMN `blank_card_path` VARCHAR(500) NULL COMMENT '空白题卡pdf路径' AFTER `update_time`;

+ 2 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/client/PrintController.java

@@ -305,7 +305,7 @@ public class PrintController {
                                   @ApiParam(value = "试卷编号") @RequestParam(value = "paperNumber", required = false) Long paperNumber,
                                   @ApiParam(value = "分页参数", required = true) @RequestParam Integer pageNumber,
                                   @ApiParam(value = "分页参数", required = true) @RequestParam Integer pageSize) {
-        PrintSingleDto printSingleDto = clientService.getSingleData(semesterId, examId, printPlanId, courseCode, paperNumber, pageNumber, pageSize);
-        return ResultUtil.ok(printSingleDto);
+        IPage<PrintSingleDto> printSingleDtoIPage = clientService.getSingleData(semesterId, examId, printPlanId, courseCode, paperNumber, pageNumber, pageSize);
+        return ResultUtil.ok(printSingleDtoIPage);
     }
 }

+ 1 - 1
teachcloud-task/src/main/java/com/qmth/teachcloud/task/config/RedisMessageListener.java

@@ -110,7 +110,7 @@ public class RedisMessageListener implements MessageListener {
                                     Object finalV = v;
                                     finalMap.computeIfAbsent(k, v1 -> finalV);
                                 });
-                                asyncCreatePdfTempleteService.createPdf(finalMap, null);
+//                                asyncCreatePdfTempleteService.createPdf(finalMap, null);
                             } else if (Objects.equals(topic, MqTagEnum.FLOW_MQ_WORK.getCode())) {
                                 log.info("创建flowMqWork消息进来了");
                                 Map<String, Object> map = (Map<String, Object>) mqDto.getBody();