xiaof 4 vuotta sitten
vanhempi
commit
fe8621d591
25 muutettua tiedostoa jossa 705 lisäystä ja 58 poistoa
  1. 80 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientExamStudentDto.java
  2. 71 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientPrintDataDto.java
  3. 7 11
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ClientStatus.java
  4. 7 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamDetailMapper.java
  5. 3 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskDetailMapper.java
  6. 25 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ClientService.java
  7. 1 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ClientStatusService.java
  8. 7 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/CommonService.java
  9. 7 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java
  10. 1 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamPrintPlanService.java
  11. 5 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskDetailService.java
  12. 168 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientServiceImpl.java
  13. 26 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientStatusServiceImpl.java
  14. 37 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CommonServiceImpl.java
  15. 24 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  16. 7 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java
  17. 36 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java
  18. 10 10
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  19. 12 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/OssUtil.java
  20. 2 2
      distributed-print-business/src/main/resources/db/init-table.sql
  21. 55 0
      distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml
  22. 21 0
      distributed-print-business/src/main/resources/mapper/ExamTaskDetailMapper.xml
  23. 58 1
      distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml
  24. 22 25
      distributed-print/src/main/java/com/qmth/distributed/print/api/ClientController.java
  25. 13 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanController.java

+ 80 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientExamStudentDto.java

@@ -0,0 +1,80 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+/**
+ * @Date: 2021/3/31.
+ */
+public class ClientExamStudentDto {
+
+    private String examDetailId;
+    private String courseCode;
+    private String courseName;
+    private String paperNumber;
+    private String studentCode;
+    private String ticketNumber;
+    private String studentName;
+    private String siteNumber;
+
+    public String getExamDetailId() {
+        return examDetailId;
+    }
+
+    public void setExamDetailId(String examDetailId) {
+        this.examDetailId = examDetailId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getTicketNumber() {
+        return ticketNumber;
+    }
+
+    public void setTicketNumber(String ticketNumber) {
+        this.ticketNumber = ticketNumber;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getSiteNumber() {
+        return siteNumber;
+    }
+
+    public void setSiteNumber(String siteNumber) {
+        this.siteNumber = siteNumber;
+    }
+}

+ 71 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientPrintDataDto.java

@@ -0,0 +1,71 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+/**
+ * @Date: 2021/3/31.
+ */
+public class ClientPrintDataDto {
+
+    private String courseCode;
+    private String courseName;
+    private String paperNumber;
+    private String studentName;
+    private String studentCode;
+    private String paperType;
+    private String url;
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+}

+ 7 - 11
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ClientStatus.java

@@ -5,12 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.distributed.print.business.base.BaseEntity;
-import com.qmth.distributed.print.business.enums.ExamStatusEnum;
-import com.qmth.distributed.print.business.enums.ReviewStatusEnum;
 
 import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
 
 /**
  * <p>
@@ -35,11 +31,11 @@ public class ClientStatus extends BaseEntity implements Serializable {
     @TableField("machine_code")
     private String machineCode;
     /**
-     * 考场ID
+     * 命题任务ID
      */
     @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("exam_detail_id")
-    private Long examDetailId;
+    @TableField("exam_task_id")
+    private Long examTaskId;
     /**
      * 是否打样
      */
@@ -78,12 +74,12 @@ public class ClientStatus extends BaseEntity implements Serializable {
         this.machineCode = machineCode;
     }
 
-    public Long getExamDetailId() {
-        return examDetailId;
+    public Long getExamTaskId() {
+        return examTaskId;
     }
 
-    public void setExamDetailId(Long examDetailId) {
-        this.examDetailId = examDetailId;
+    public void setExamTaskId(Long examTaskId) {
+        this.examTaskId = examTaskId;
     }
 
     public Boolean getTry() {

+ 7 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamDetailMapper.java

@@ -3,14 +3,14 @@ package com.qmth.distributed.print.business.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.qmth.distributed.print.business.bean.dto.PrintTaskDto;
-import com.qmth.distributed.print.business.bean.dto.PrintTaskTotalDto;
-import com.qmth.distributed.print.business.bean.dto.TaskTotalLeftDto;
+import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.result.ExaminationDetailResult;
 import com.qmth.distributed.print.business.bean.result.ExaminationResult;
 import com.qmth.distributed.print.business.entity.ExamDetail;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -48,4 +48,8 @@ public interface ExamDetailMapper extends BaseMapper<ExamDetail> {
     PrintTaskTotalDto taskTotalData(@Param("schoolId") Long schoolId, @Param("printPlanId") Long printPlanId, @Param("status") String status, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("examPlace") String examPlace, @Param("examRoom") String examRoom, @Param("examStartTime") Long examStartTime, @Param("examEndTime") Long examEndTime);
 
     TaskTotalLeftDto calcLeftA3(Long schoolId);
+
+    IPage<ClientExamStudentDto> listClientExamStudentPage(Page<ClientExamStudentDto> page, @Param("schoolId") Long schoolId, @Param("examDetailId") Long examDetailId, @Param("ticketNumber") String ticketNumber, @Param("studentName") String studentName, @Param("courseCode") String courseCode);
+
+    List<Map<String, String>> listStudentByExamDetailId(@Param("schoolId") Long schoolId, @Param("examDetailId") Long examDetailId, @Param("ticketNumber") String ticketNumber, @Param("type") String type);
 }

+ 3 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskDetailMapper.java

@@ -8,6 +8,7 @@ import com.qmth.distributed.print.business.entity.ExamTaskDetail;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -22,4 +23,6 @@ public interface ExamTaskDetailMapper extends BaseMapper<ExamTaskDetail> {
     IPage<ExamTaskDetailDto> listPage(Page<ExamTaskDetailDto> page, @Param("schoolId") Long schoolId, @Param("relateType") String relateType, @Param("printPlanId") Long printPlanId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("orgIds") Set<Long> orgIds);
 
     List<ExamTaskDetail> listByTemplateId(Long templateId);
+
+    List<Map<String, String>> listByExamDetailId(@Param("schoolId") Long schoolId, @Param("examDetailId") Long examDetailId);
 }

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

@@ -0,0 +1,25 @@
+package com.qmth.distributed.print.business.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.qmth.distributed.print.business.bean.dto.ClientExamStudentDto;
+import com.qmth.distributed.print.business.bean.dto.ClientExamTaskDto;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Date: 2021/4/20.
+ */
+public interface ClientService {
+    IPage<ClientExamTaskDto> listTryTask(Long schoolId, String machineCode, Long orgId, Long printPlanId, String courseCode, String paperNumber, Boolean isTry, Boolean isPass, Integer pageNumber, Integer pageSize);
+
+    String getUrl(Long schoolId, Long examTaskId);
+
+    Boolean tagPass(Long schoolId, Long examTaskId, String machineCode, Boolean isPass, Long userId);
+
+    Boolean updatePrintProgress(Long schoolId, Long examDetailId, Integer printProgress);
+
+    IPage<ClientExamStudentDto> listStudent(Long schoolId, Long examDetailId, String ticketNumber, String studentName, String courseCode, Integer pageNumber, Integer pageSize);
+
+    Map<String, Object> getReprintData(Long schoolId, Long examDetailId, String ticketNumber, String type);
+}

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

@@ -12,4 +12,5 @@ import com.qmth.distributed.print.business.entity.ClientStatus;
  * @since 2021-04-19
  */
 public interface ClientStatusService extends IService<ClientStatus> {
+    Boolean tagPass(Long schoolId, Long examTaskId, String machineCode, Boolean isPass, Long userId);
 }

+ 7 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/CommonService.java

@@ -97,6 +97,13 @@ public interface CommonService {
      */
     public String filePreview(String path);
 
+    /**
+     * 文件预览
+     * @param attachmentId
+     * @return
+     */
+    public String filePreview(String attachmentId, Boolean isExpire);
+
     /**
      * 题卡html文件上传,读取文件内容
      *

+ 7 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java

@@ -2,10 +2,7 @@ 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.dto.ExaminationExportDto;
-import com.qmth.distributed.print.business.bean.dto.FieldsDto;
-import com.qmth.distributed.print.business.bean.dto.PrintTaskDto;
-import com.qmth.distributed.print.business.bean.dto.PrintTaskTotalDto;
+import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.params.SerialNumberParams;
 import com.qmth.distributed.print.business.bean.result.ExaminationDetailResult;
 import com.qmth.distributed.print.business.bean.result.ExaminationResult;
@@ -169,4 +166,10 @@ public interface ExamDetailService extends IService<ExamDetail> {
      * @return 导出数据源
      */
     List<ExaminationExportDto> findExaminationExportDtoDatasource(Map<String, Object> map);
+
+    Boolean updatePrintProgress(Long schoolId, Long examDetailId, Integer printProgress);
+
+    IPage<ClientExamStudentDto> listStudent(Long schoolId, Long examDetailId, String ticketNumber, String studentName, String courseCode, Integer pageNumber, Integer pageSize);
+
+    List<Map<String, String>> listStudentByExamDetailId(Long schoolId, Long examDetailId, String ticketNumber, String type);
 }

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

@@ -69,4 +69,5 @@ public interface ExamPrintPlanService extends IService<ExamPrintPlan> {
      */
     Boolean removePrintPlan(DeleteParams deleteParams);
 
+    List<Map<String, String>> tempalteView(Long printPlanId);
 }

+ 5 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskDetailService.java

@@ -8,6 +8,7 @@ import com.qmth.distributed.print.business.entity.ExamTaskDetail;
 
 import java.io.IOException;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -32,4 +33,8 @@ public interface ExamTaskDetailService extends IService<ExamTaskDetail> {
     void resetCardId(Long id);
 
     List<ExamTaskDetail> listByTemplateId(Long templateId);
+
+    String getUrl(Long schoolId, Long examTaskId);
+
+    List<Map<String, String>> listByExamDetailId(Long schoolId, Long examDetailId);
 }

+ 168 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientServiceImpl.java

@@ -0,0 +1,168 @@
+package com.qmth.distributed.print.business.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.ClientPrintDataDto;
+import com.qmth.distributed.print.business.entity.BasicAttachment;
+import com.qmth.distributed.print.business.entity.ExamDetail;
+import com.qmth.distributed.print.business.entity.ExamPrintPlan;
+import com.qmth.distributed.print.business.service.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Date: 2021/4/20.
+ */
+@Service
+public class ClientServiceImpl implements ClientService {
+
+    @Autowired
+    private ExamTaskService examTaskService;
+
+    @Autowired
+    private ExamTaskDetailService examTaskDetailService;
+
+    @Autowired
+    private ClientStatusService clientStatusService;
+
+    @Autowired
+    private ExamDetailService examDetailService;
+
+    @Autowired
+    private BasicAttachmentService basicAttachmentService;
+
+    @Autowired
+    private CommonService commonService;
+
+    @Autowired
+    private ExamPrintPlanService examPrintPlanService;
+
+    @Override
+    public IPage<ClientExamTaskDto> listTryTask(Long schoolId, String machineCode, Long orgId, Long printPlanId, String courseCode, String paperNumber, Boolean isTry, Boolean isPass, Integer pageNumber, Integer pageSize) {
+        return examTaskService.listTryTask(schoolId, machineCode, orgId, printPlanId, courseCode, paperNumber, isTry, isPass, pageNumber, pageSize);
+    }
+
+    @Override
+    public String getUrl(Long schoolId, Long examTaskId) {
+        return examTaskDetailService.getUrl(schoolId, examTaskId);
+    }
+
+    @Override
+    public Boolean tagPass(Long schoolId, Long examTaskId, String machineCode, Boolean isPass, Long userId) {
+        return clientStatusService.tagPass(schoolId, examTaskId, machineCode, isPass, userId);
+    }
+
+    @Override
+    public Boolean updatePrintProgress(Long schoolId, Long examDetailId, Integer printProgress) {
+        return examDetailService.updatePrintProgress(schoolId, examDetailId, printProgress);
+    }
+
+    @Override
+    public IPage<ClientExamStudentDto> listStudent(Long schoolId, Long examDetailId, String ticketNumber, String studentName, String courseCode, Integer pageNumber, Integer pageSize) {
+        return examDetailService.listStudent(schoolId, examDetailId, ticketNumber, studentName, courseCode, pageNumber, pageSize);
+    }
+
+    @Override
+    public Map<String, Object> getReprintData(Long schoolId, Long examDetailId, String ticketNumber, String type) {
+        Map<String, Object> finalMap = new HashMap<>();
+        // 取试卷
+        Map<String, String> map = mapCourseUrl(schoolId, examDetailId);
+        // 取考生
+        List<Map<String, String>> studentList = examDetailService.listStudentByExamDetailId(schoolId, examDetailId, ticketNumber, type);
+        // 生成试卷List
+        List<ClientPrintDataDto> paperList = studentList.stream().map(m -> {
+            ClientPrintDataDto printDataDto = new ClientPrintDataDto();
+            String courseCode = m.get("courseCode");
+            String courseName = m.get("courseName");
+            String paperNumber = m.get("paperNumber");
+            String studentName = m.get("studentName");
+            String studentCode = m.get("studentCode");
+            String paperType = m.get("paperType");
+            printDataDto.setCourseCode(courseCode);
+            printDataDto.setCourseName(courseName);
+            printDataDto.setStudentName(studentName);
+            printDataDto.setStudentCode(studentCode);
+            printDataDto.setPaperType(paperType);
+
+            StringJoiner sj = new StringJoiner(":");
+            String key = sj.add(courseCode).add(paperNumber).add(paperType).toString();
+            printDataDto.setUrl(map.get(key));
+            return printDataDto;
+        }).collect(Collectors.toList());
+        finalMap.put("paper", paperList);
+        // 生成题卡List
+        List<ClientPrintDataDto> cardList = studentList.stream().map(m -> {
+            ClientPrintDataDto printDataDto = new ClientPrintDataDto();
+            String courseCode = m.get("courseCode");
+            String courseName = m.get("courseName");
+            String studentName = m.get("studentName");
+            String studentCode = m.get("studentCode");
+            String paperType = m.get("paperType");
+            String attachmentId = m.get("attachmentId");
+            printDataDto.setCourseCode(courseCode);
+            printDataDto.setCourseName(courseName);
+            printDataDto.setStudentName(studentName);
+            printDataDto.setStudentCode(studentCode);
+            printDataDto.setPaperType(paperType);
+            printDataDto.setUrl(commonService.filePreview(attachmentId, false));
+            return printDataDto;
+        }).collect(Collectors.toList());
+        finalMap.put("card", cardList);
+        //
+        ExamDetail examDetail = examDetailService.getById(examDetailId);
+        ExamPrintPlan examPrintPlan = examPrintPlanService.getById(examDetail.getPrintPlanId());
+        String variableContent = examPrintPlan.getVariableContent();
+        String ordinaryContent = examPrintPlan.getOrdinaryContent();
+        List<Map> variableList = JSONObject.parseArray(variableContent, Map.class);
+        List<Map> otherList = new ArrayList<>();
+        // todo 签到表、卷袋贴生成html路径
+        for (Map variable : variableList) {
+            Map vMap = new HashMap();
+            vMap.put("type", variable.get("type"));
+            vMap.put("url", commonService.filePreview(variable.get("attachmentId").toString()));
+            otherList.add(vMap);
+        }
+        List<Map> ordinaryList = JSONObject.parseArray(ordinaryContent, Map.class);
+        for (Map ordinary : ordinaryList) {
+            Map vMap = new HashMap();
+            vMap.put("type", ordinary.get("type"));
+            vMap.put("url", commonService.filePreview(ordinary.get("attachmentId").toString()));
+            otherList.add(vMap);
+        }
+        finalMap.put("other", otherList);
+        return finalMap;
+    }
+
+    /**
+     * 根据考场生成试卷map
+     *
+     * @param schoolId
+     * @param examDetailId
+     * @return
+     */
+    public Map<String, String> mapCourseUrl(Long schoolId, Long examDetailId) {
+        List<Map<String, String>> taskDetails = examTaskDetailService.listByExamDetailId(schoolId, examDetailId);
+        Map<String, String> map = new HashMap<>();
+        for (Map<String, String> taskDetail : taskDetails) {
+            String courseCode = taskDetail.get("courseCode");
+            String paperNumber = taskDetail.get("paperNumber");
+            String paperAttachmentIds = taskDetail.get("paperAttachmentIds");
+            List<Map> attachementIds = JSONObject.parseArray(paperAttachmentIds, Map.class);
+            for (Map attaMap : attachementIds) {
+                String name = attaMap.get("name").toString();
+                String attachmentId = attaMap.get("attachmentId").toString();
+                BasicAttachment attachment = basicAttachmentService.getById(attachmentId);
+                String url = commonService.filePreview(attachment.getPath());
+                StringJoiner sj = new StringJoiner(":");
+                String key = sj.add(courseCode).add(paperNumber).add(name).toString();
+                map.put(key, url);
+            }
+        }
+        return map;
+    }
+}

+ 26 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientStatusServiceImpl.java

@@ -1,9 +1,11 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.entity.ClientStatus;
 import com.qmth.distributed.print.business.mapper.ClientStatusMapper;
 import com.qmth.distributed.print.business.service.ClientStatusService;
+import com.qmth.distributed.print.common.contant.SystemConstant;
 import org.springframework.stereotype.Service;
 
 /**
@@ -11,4 +13,28 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class ClientStatusServiceImpl extends ServiceImpl<ClientStatusMapper, ClientStatus> implements ClientStatusService {
+    @Override
+    public Boolean tagPass(Long schoolId, Long examTaskId, String machineCode, Boolean isPass, Long userId) {
+        QueryWrapper<ClientStatus> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ClientStatus::getSchoolId, schoolId).eq(ClientStatus::getExamTaskId, examTaskId).eq(ClientStatus::getMachineCode, machineCode);
+        ClientStatus clientStatus = this.getOne(queryWrapper);
+        if(clientStatus != null){
+            clientStatus.setPass(isPass);
+            clientStatus.setUpdateId(userId);
+            clientStatus.setUpdateTime(System.currentTimeMillis());
+            return this.updateById(clientStatus);
+        } else {
+            clientStatus = new ClientStatus();
+            clientStatus.setId(SystemConstant.getDbUuid());
+            clientStatus.setSchoolId(schoolId);
+            clientStatus.setMachineCode(machineCode);
+            clientStatus.setExamTaskId(examTaskId);
+            clientStatus.setTry(true);
+            clientStatus.setTryTime(System.currentTimeMillis());
+            clientStatus.setPass(isPass);
+            clientStatus.setCreateId(userId);
+            clientStatus.setCreateTime(System.currentTimeMillis());
+            return this.save(clientStatus);
+        }
+    }
 }

+ 37 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CommonServiceImpl.java

@@ -93,6 +93,9 @@ public class CommonServiceImpl implements CommonService {
     @Autowired
     private SysOrgService sysOrgService;
 
+    @Autowired
+    private BasicAttachmentService basicAttachmentService;
+
     /**
      * 新增用户权限
      *
@@ -316,7 +319,6 @@ public class CommonServiceImpl implements CommonService {
 
     /**
      * 文件预览
-     *
      * @param path
      * @return
      */
@@ -339,6 +341,40 @@ public class CommonServiceImpl implements CommonService {
         return url;
     }
 
+    /**
+     * 文件预览
+     * @param attachmentId 附件ID
+     * @param isExpire url是否带过期时间
+     * @return
+     */
+    @Override
+    public String filePreview(String attachmentId, Boolean isExpire) {
+        BasicAttachment attachment = basicAttachmentService.getById(attachmentId);
+        if(attachment == null){
+            return  null;
+        }
+
+        String url;
+        JSONObject jsonObject = JSONObject.parseObject(attachment.getPath());
+        String attachmentType = (String) jsonObject.get(SystemConstant.TYPE);
+        String filePath = (String) jsonObject.get(SystemConstant.PATH);
+        UploadFileEnum uploadFileEnum = UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
+        if (Objects.equals(attachmentType, SystemConstant.LOCAL)) {
+            url = SystemConstant.HTTP + dictionaryConfig.sysDomain().getFileHost() + File.separator + filePath;
+        } else {
+            if (uploadFileEnum == UploadFileEnum.PAPER) {
+                if(isExpire){
+                    url = ossUtil.getPrivateUrl(filePath);
+                } else {
+                    url = ossUtil.getPrivateUrlNotExpire(filePath);
+                }
+            } else {
+                url = dictionaryConfig.aliYunOssDomain().getUrl() + File.separator + filePath;
+            }
+        }
+        return url;
+    }
+
     @Override
     public String readFileContent(String path) {
         // 解析path

+ 24 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -375,7 +375,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             System.out.println("totalSubjects" + totalSubjects);
             ExamDetail examDetail = new ExamDetail();
             examDetail.setId(SystemConstant.getDbUuid());
-            examDetail.setPackageCode(convertUtil.getIncre(serialNumberParams.getPrefix(),serialNumberParams.getModel(),serialNumberParams.getDigit()));
+            examDetail.setPackageCode(convertUtil.getIncre(serialNumberParams.getPrefix(), serialNumberParams.getModel(), serialNumberParams.getDigit()));
             examDetail.setSchoolId(Long.valueOf(String.valueOf(map.get("schoolId"))));
             examDetail.setPrintPlanId(Long.valueOf(String.valueOf(map.get("printPlanId"))));
             examDetail.setPrintPlanName(String.valueOf(map.get("printPlanName")));
@@ -574,6 +574,29 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         return examinationExportDtoList;
     }
 
+    //    @Transactional
+    @Override
+    public Boolean updatePrintProgress(Long schoolId, Long examDetailId, Integer printProgress) {
+        // 更新考场进度、状态
+        UpdateWrapper<ExamDetail> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(ExamDetail::getPrintProgress, printProgress).set(ExamDetail::getStatus, ExamDetailStatusEnum.FINISH).eq(ExamDetail::getId, examDetailId);
+        return this.update(updateWrapper);
+        // todo 更新考生(是否需要这个字段,待定)
+
+    }
+
+    @Override
+    public IPage<ClientExamStudentDto> listStudent(Long schoolId, Long examDetailId, String ticketNumber, String studentName, String courseCode, Integer pageNumber, Integer pageSize) {
+        Page<ClientExamStudentDto> page = new Page<>(pageNumber, pageSize);
+        IPage<ClientExamStudentDto> examStudentDtoIPage = this.baseMapper.listClientExamStudentPage(page, schoolId, examDetailId, ticketNumber, studentName, courseCode);
+        return examStudentDtoIPage;
+    }
+
+    @Override
+    public List<Map<String, String>> listStudentByExamDetailId(Long schoolId, Long examDetailId, String ticketNumber, String type) {
+        return this.baseMapper.listStudentByExamDetailId(schoolId, examDetailId, ticketNumber, type);
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void deleteExaminationData(Long printPlanId) {

+ 7 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java

@@ -21,6 +21,7 @@ import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.util.ServletUtil;
 import com.qmth.distributed.print.common.contant.SystemConstant;
 import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
+import io.swagger.annotations.Example;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -235,6 +236,12 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
         return this.removeById(id);
     }
 
+    @Override
+    public List<Map<String, String>> tempalteView(Long printPlanId) {
+        ExamPrintPlan examPrintPlan = this.getById(printPlanId);
+        return null;
+    }
+
     /**
      * 查找子机构
      *

+ 36 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -15,6 +16,7 @@ import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.templete.execute.AsyncCreatePdfTempleteService;
 import com.qmth.distributed.print.business.util.ServletUtil;
 import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -55,6 +57,9 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
     @Resource
     private AsyncCreatePdfTempleteService asyncCreatePdfTempleteService;
 
+    @Autowired
+    private BasicAttachmentService basicAttachmentService;
+
     @Resource
     TBTaskService tbTaskService;
 
@@ -135,4 +140,35 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
         return this.baseMapper.listByTemplateId(templateId);
     }
 
+    @Override
+    public String getUrl(Long schoolId, Long examTaskId) {
+        QueryWrapper<ExamTaskDetail> examTaskDetailQueryWrapper = new QueryWrapper<>();
+        examTaskDetailQueryWrapper.lambda().eq(ExamTaskDetail::getExamTaskId, examTaskId);
+        ExamTaskDetail examTaskDetail = this.getById(examTaskDetailQueryWrapper);
+        if(examTaskDetail != null){
+            String relatePaperType = examTaskDetail.getRelatePaperType();
+            if(StringUtils.isNotBlank(relatePaperType)){
+                String paperAttachmentIds = examTaskDetail.getPaperAttachmentIds();
+                List<Map> list = JSONObject.parseArray(paperAttachmentIds, Map.class);
+                String attachmentId = null;
+                for (Map map : list) {
+                    String name = map.get("name").toString();
+                    if(relatePaperType.equals(name)){
+                        attachmentId = map.get("attachmentId").toString();
+                    }
+                }
+                if(StringUtils.isNotBlank(attachmentId)){
+                    BasicAttachment attachment = basicAttachmentService.getById(attachmentId);
+                    return attachment == null ? null : commonService.filePreview(attachment.getPath());
+                }
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public List<Map<String, String>> listByExamDetailId(Long schoolId, Long examDetailId) {
+        return this.baseMapper.listByExamDetailId(schoolId, examDetailId);
+    }
+
 }

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

@@ -211,8 +211,8 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             }
         } else {
             // 试卷编号生成规则:年月日(例如:20100419)+0000(例如:0001)顺序编号
-            String date = DateUtil.today().replace("-","");
-            String paperNumber = convertUtil.getIncre(date, "paperNumber", 5);
+            String date = DateUtil.today().replace("-", "");
+            String paperNumber = convertUtil.getIncre(date, "paperNumber" + schoolId, 5);
             examTask.setPaperNumber(paperNumber);
         }
 
@@ -260,7 +260,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                     BasicCourse course = basicCourseService.getOne(queryWrapper);
                     if (course == null) {
                         excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程代码]在系统中不存在"));
-                    } else if (!userImportDto.getCourseName().equals(course.getName())) {
+                    } else if (!course.getName().equals(userImportDto.getCourseName())) {
                         excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程名称]与系统中不匹配"));
                     }
                 }
@@ -303,9 +303,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 examTaskTempService.save(examTaskTemp);
 
                 if (StringUtils.isNotBlank(examTaskTemp.getPaperNumber())) {
-                    if(paperNumbers.contains(examTaskTemp.getPaperNumber())){
+                    if (paperNumbers.contains(examTaskTemp.getPaperNumber())) {
                         // 试卷编号在文件内重复,跳过
-                        String error = examTaskTemp.getPaperNumber()+"文件中重复";
+                        String error = examTaskTemp.getPaperNumber() + "文件中重复";
                         stringJoiner.add(error);
                         continue;
                     }
@@ -314,7 +314,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                     ExamTask task1 = this.getOne(taskQueryWrapper);
                     if (task1 != null) {
                         // 试卷编号已存在,直接跳过
-                        String error = examTaskTemp.getPaperNumber()+"已存在";
+                        String error = examTaskTemp.getPaperNumber() + "已存在";
                         stringJoiner.add(error);
                         continue;
                     }
@@ -385,7 +385,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             examTask.setSpecialty(examTaskTemp.getSpecialty());
 
             if (StringUtils.isNotBlank(examTaskTemp.getPaperNumber())) {
-                if(paperNumbers.contains(examTaskTemp.getPaperNumber())){
+                if (paperNumbers.contains(examTaskTemp.getPaperNumber())) {
                     // 试卷编号在文件内重复,跳过
                     continue;
                 }
@@ -400,8 +400,8 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 paperNumbers.add(examTaskTemp.getPaperNumber());
             } else {
                 // 试卷编号生成规则:年月日(例如:20100419)+0000(例如:0001)顺序编号
-                String date = DateUtil.today().replace("-","");
-                String paperNumber = convertUtil.getIncre(date, "paperNumber", 5);
+                String date = DateUtil.today().replace("-", "");
+                String paperNumber = convertUtil.getIncre(date, "paperNumber" + schoolId, 5);
                 examTask.setPaperNumber(paperNumber);
             }
             examTask.setPaperNumber(examTaskTemp.getPaperNumber());
@@ -423,7 +423,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             for (Map<String, String> user : task.getUsers()) {
                 String ucourseCode = user.get("courseCode");
                 String upaperNumber = user.get("paperNumber");
-                if(examTaskTemp.getCourseCode().equals(ucourseCode) && examTaskTemp.getPaperNumber().equals(upaperNumber)){
+                if (examTaskTemp.getCourseCode().equals(ucourseCode) && examTaskTemp.getPaperNumber().equals(upaperNumber)) {
                     userId = user.get("userId");
                     specialty = user.get("specialty");
                 }

+ 12 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/OssUtil.java

@@ -172,4 +172,16 @@ public class OssUtil {
         generatePresignedUrlRequest.setExpiration(calendar.getTime());
         return ossClient.generatePresignedUrl(generatePresignedUrlRequest).toString();
     }
+
+    /**
+     * 获取私有bucket文件访问url
+     *
+     * @param objectPath
+     * @return
+     */
+    public String getPrivateUrlNotExpire(String objectPath) {
+        GeneratePresignedUrlRequest generatePresignedUrlRequest;
+        generatePresignedUrlRequest = new GeneratePresignedUrlRequest(this.aliYunOssDomain.getBucket(), objectPath);
+        return ossClient.generatePresignedUrl(generatePresignedUrlRequest).toString();
+    }
 }

+ 2 - 2
distributed-print-business/src/main/resources/db/init-table.sql

@@ -196,7 +196,7 @@ CREATE TABLE `client_status`  (
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
   `school_id` bigint(20) NULL DEFAULT NULL,
   `machine_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '机器唯一码',
-  `exam_detail_id` bigint(20) NOT NULL COMMENT '考场ID',
+  `exam_task_id` bigint(20) NOT NULL COMMENT '命题任务ID',
   `is_try` tinyint(1) NULL DEFAULT NULL COMMENT '是否打样:true-是,false-否',
   `try_time` bigint(20) NULL DEFAULT NULL COMMENT '打样时间',
   `is_pass` tinyint(1) NULL DEFAULT NULL COMMENT '是否合格:true-合格,false-不合格',
@@ -424,7 +424,7 @@ CREATE TABLE `exam_task_temp`  (
   `batch_no` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '本次导入数据临时ID',
   `course_code` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '课程代码',
   `course_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '课程名称',
-  `paper_number` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '试卷编号',
+  `paper_number` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '试卷编号',
   `specialty` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '适用专业',
   `user_account` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '命题老师账号',
   `user_name` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '命题老师姓名',

+ 55 - 0
distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml

@@ -306,5 +306,60 @@
             </if>
         </where>
     </select>
+    <select id="listClientExamStudentPage"
+            resultType="com.qmth.distributed.print.business.bean.dto.ClientExamStudentDto">
+        SELECT
+            a.id examDetailId,
+            b.course_code courseCode,
+            b.course_name courseName,
+            b.paper_number paperNumber,
+            c.student_code studentCode,
+            c.ticket_number ticketNumber,
+            c.student_name studentName,
+            c.site_number siteNumber
+        FROM
+            exam_detail a
+                JOIN
+            exam_detail_course b ON a.id = b.exam_detail_id
+                JOIN
+            exam_student c ON b.id = c.exam_detail_course_id
+        <where>
+            and a.school_id = #{schoolId}
+            and a.id = #{examDetailId}
+            <if test="ticketNumber != null and ticketNumber != ''">
+                and c.ticket_number like concat('%', #{ticketNumber}, '%')
+            </if>
+            <if test="studentName != null and studentName != ''">
+                and c.student_name like concat('%', #{studentName}, '%')
+            </if>
+            <if test="courseCode != null and courseCode != ''">
+                and b.course_code = #{courseCode}
+            </if>
+        </where>
+    </select>
+    <select id="listStudentByExamDetailId" resultType="java.util.Map">
+        SELECT
+            b.course_code courseCode,
+            b.course_name courseName,
+            b.paper_number paperNumber,
+            c.student_name studentName,
+            c.student_code studentCode,
+            c.attachment_id attachmentId,
+            c.paper_type paperType
+        FROM
+            exam_detail a
+                JOIN
+            exam_detail_course b ON a.id = b.exam_detail_id
+                JOIN
+            exam_student c ON b.id = c.exam_detail_course_id
+        WHERE
+            a.id = #{examDetailId}
+        <if test="type == 'ONE'">
+            and c.ticket_number = #{ticketNumber}
+        </if>
+        <if test="type == 'MORE'">
+            and c.ticket_number > 0+cast(#{ticketNumber} as char)
+        </if>
+    </select>
 
 </mapper>

+ 21 - 0
distributed-print-business/src/main/resources/mapper/ExamTaskDetailMapper.xml

@@ -108,4 +108,25 @@
                     a.card_id = b.id
                         AND b.template_id = #{templateId})
     </select>
+    <select id="listByExamDetailId" resultType="java.util.Map">
+        SELECT
+            a.course_code courseCode,
+            a.paper_number paperNumber,
+            b.paper_attachment_ids paperAttachmentIds
+        FROM
+            exam_task a
+                LEFT JOIN
+            exam_task_detail b ON a.id = b.exam_task_id
+        WHERE
+            a.school_id = #{schoolId}
+                AND EXISTS( SELECT
+                    1
+                FROM
+                    exam_detail_course b
+                WHERE
+                    b.exam_detail_id = #{examDetailId}
+                        AND a.school_id = b.school_id
+                        AND a.course_code = b.course_code
+                        AND a.paper_number = b.paper_number)
+    </select>
 </mapper>

+ 58 - 1
distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml

@@ -424,7 +424,64 @@
         </where>
     </select>
     <select id="listClientExamTaskPage"
-            resultType="com.qmth.distributed.print.business.bean.dto.ClientExamTaskDto"></select>
+            resultType="com.qmth.distributed.print.business.bean.dto.ClientExamTaskDto">
+        SELECT
+            a.school_id schoolId,
+            a.id printPlanId,
+            a.name printPlanName,
+            c.course_code courseCode,
+            c.course_name courseName,
+            c.paper_number paperNumber,
+            d.id examTaskId,
+            d.specialty,
+            d.user_id userId,
+            f.real_name userName,
+            e.is_try isTry,
+            e.is_pass isPass,
+            e.try_time tryTime
+        FROM
+            exam_print_plan a
+                JOIN
+            exam_detail b ON a.id = b.print_plan_id
+                JOIN
+            exam_detail_course c ON b.id = c.exam_detail_id
+                JOIN
+            exam_task d ON d.school_id = c.school_id
+                AND d.course_code = c.course_code
+                AND d.paper_number = c.paper_number
+                LEFT JOIN
+            client_status e ON e.school_id = d.school_id
+                AND e.exam_task_id = d.id
+                LEFT JOIN
+            sys_user f ON d.user_id = f.id
+                LEFT JOIN
+            sys_user g ON a.create_id = g.id
+        <where>
+            and a.status = 'READY'
+            and e.machine_code = #{machineCode}
+            <if test="printPlanId != null and printPlanId != ''">
+                and a.id = #{printPlanId}
+            </if>
+            <if test="courseCode != null and courseCode != ''">
+                and c.course_code = #{courseCode}
+            </if>
+            <if test="paperNumber != null and paperNumber != ''">
+                and c.paper_number = #{paperNumber}
+            </if>
+            <if test="isTry != null and isTry != ''">
+                and e.is_try = #{isTry}
+            </if>
+            <if test="isPass != null and isPass != ''">
+                and e.is_pass = #{isPass}
+            </if>
+            <if test="orgIds != null">
+                AND g.org_id IN
+                <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
 
     <sql id="myworkCommonHead">
         SELECT

+ 22 - 25
distributed-print/src/main/java/com/qmth/distributed/print/api/ClientController.java

@@ -4,9 +4,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.distributed.print.business.bean.dto.ClientExamStudentDto;
 import com.qmth.distributed.print.business.bean.dto.ClientExamTaskDto;
 import com.qmth.distributed.print.business.entity.SysUser;
-import com.qmth.distributed.print.business.service.ExamTaskService;
+import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.common.util.Result;
 import com.qmth.distributed.print.common.util.ResultUtil;
 import io.swagger.annotations.Api;
@@ -14,6 +15,9 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * @Date: 2021/4/19.
  */
@@ -24,8 +28,7 @@ import org.springframework.web.bind.annotation.*;
 public class ClientController {
 
     @Autowired
-    private ExamTaskService examTaskService;
-
+    private ClientService clientService;
 
     /**
      * 登录
@@ -67,7 +70,7 @@ public class ClientController {
                                @RequestParam(value = "isPass", required = false) Boolean isPass,
                                @RequestParam("pageNumber") Integer pageNumber,
                                @RequestParam("pageSize") Integer pageSize) {
-        IPage<ClientExamTaskDto> examTasks = examTaskService.listTryTask(schoolId, machineCode, orgId, printPlanId, courseCode, paperNumber, isTry, isPass, pageNumber, pageSize);
+        IPage<ClientExamTaskDto> examTasks = clientService.listTryTask(schoolId, machineCode, orgId, printPlanId, courseCode, paperNumber, isTry, isPass, pageNumber, pageSize);
         return ResultUtil.ok(examTasks);
     }
 
@@ -82,8 +85,8 @@ public class ClientController {
     @RequestMapping(value = "/paper_try/print", method = RequestMethod.POST)
     public Result paperTryPrint(@RequestParam("schoolId") Long schoolId,
                                 @RequestParam("examTaskId") Long examTaskId) {
-
-        return null;
+        String url = clientService.getUrl(schoolId, examTaskId);
+        return ResultUtil.ok(url);
     }
 
     /**
@@ -93,8 +96,7 @@ public class ClientController {
      * @param examTaskId
      * @param machineCode
      * @param isPass
-     * @param courseCode
-     * @param paperNumber
+     * @param userId
      * @return
      */
     @ApiOperation(value = "试卷打样-标记合格状态")
@@ -103,10 +105,9 @@ public class ClientController {
                                   @RequestParam("examTaskId") Long examTaskId,
                                   @RequestParam("machineCode") String machineCode,
                                   @RequestParam("isPass") Boolean isPass,
-                                  @RequestParam("courseCode") String courseCode,
-                                  @RequestParam("paperNumber") String paperNumber) {
-
-        return null;
+                                  @RequestParam("userId") Long userId) {
+        Boolean isSuccess = clientService.tagPass(schoolId, examTaskId, machineCode, isPass, userId);
+        return ResultUtil.ok(isSuccess);
     }
 
     /**
@@ -272,7 +273,6 @@ public class ClientController {
      * 印刷管理-更新打印进度
      *
      * @param schoolId
-     * @param orgId
      * @param examDetailId
      * @param printProgress
      * @return
@@ -280,18 +280,16 @@ public class ClientController {
     @ApiOperation(value = "印刷管理-更新打印进度")
     @RequestMapping(value = "/print/update_progress", method = RequestMethod.POST)
     public Result updateProgress(@RequestParam("schoolId") Long schoolId,
-                                 @RequestParam("orgId") Long orgId,
                                  @RequestParam("examDetailId") Long examDetailId,
                                  @RequestParam("printProgress") Integer printProgress) {
-
-        return null;
+        Boolean isSuccess = clientService.updatePrintProgress(schoolId, examDetailId, printProgress);
+        return ResultUtil.ok(isSuccess);
     }
 
     /**
      * 重打-查询考生列表
      *
      * @param schoolId
-     * @param orgId
      * @param examDetailId
      * @param ticketNumber
      * @param studentName
@@ -301,20 +299,20 @@ public class ClientController {
     @ApiOperation(value = "重打-查询考生列表")
     @RequestMapping(value = "/print/list_student", method = RequestMethod.POST)
     public Result listStudent(@RequestParam("schoolId") Long schoolId,
-                              @RequestParam("orgId") Long orgId,
                               @RequestParam("examDetailId") Long examDetailId,
                               @RequestParam(value = "ticketNumber", required = false) String ticketNumber,
                               @RequestParam(value = "studentName", required = false) String studentName,
-                              @RequestParam(value = "courseCode", required = false) String courseCode) {
-
-        return null;
+                              @RequestParam(value = "courseCode", required = false) String courseCode,
+                              @RequestParam("pageNumber") Integer pageNumber,
+                              @RequestParam("pageSize") Integer pageSize) {
+        IPage<ClientExamStudentDto> examStudentDtoIPage = clientService.listStudent(schoolId, examDetailId, ticketNumber, studentName, courseCode, pageNumber, pageSize);
+        return ResultUtil.ok(examStudentDtoIPage);
     }
 
     /**
      * 重打-内容查询
      *
      * @param schoolId
-     * @param orgId
      * @param examDetailId
      * @param ticketNumber
      * @param type
@@ -323,11 +321,10 @@ public class ClientController {
     @ApiOperation(value = "重打-内容查询")
     @RequestMapping(value = "/print/get_reprint_data", method = RequestMethod.POST)
     public Result getReprintData(@RequestParam("schoolId") Long schoolId,
-                                 @RequestParam("orgId") Long orgId,
                                  @RequestParam("examDetailId") Long examDetailId,
                                  @RequestParam("ticketNumber") String ticketNumber,
                                  @RequestParam("type") String type) {
-
-        return null;
+        Map<String, Object> map = clientService.getReprintData(schoolId, examDetailId, ticketNumber, type);
+        return ResultUtil.ok(map);
     }
 }

+ 13 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanController.java

@@ -270,6 +270,19 @@ public class ExamPrintPlanController {
         return ResultUtil.ok(printTaskTotalDto);
     }
 
+    /**
+     * 印刷任务管理-查看印品
+     *
+     * @param map
+     * @return
+     */
+    @ApiOperation(value = "印刷任务管理-查看印品")
+    @RequestMapping(value = "/template_view", method = RequestMethod.POST)
+    public Result tempalteViewPDF(@RequestBody  Map<String, Long> map) {
+        List<Map<String, String>> list = examPrintPlanService.tempalteView(map.get("printPlanId"));
+        return ResultUtil.ok(list);
+    }
+
     /**
      * 印刷任务管理-查看PDF
      *