xiaof 4 жил өмнө
parent
commit
b35072d44c
17 өөрчлөгдсөн 465 нэмэгдсэн , 17 устгасан
  1. 89 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientPrintTaskTotalDto.java
  2. 139 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ClientPrintData.java
  3. 15 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ClientPrintDataMapper.java
  4. 3 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamPrintPlanMapper.java
  5. 18 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ClientPrintDataService.java
  6. 4 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ClientService.java
  7. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java
  8. 3 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamPrintPlanService.java
  9. 24 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientPrintDataServiceImpl.java
  10. 10 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientServiceImpl.java
  11. 22 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  12. 30 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java
  13. 4 0
      distributed-print-business/src/main/resources/mapper/ClientPrintDataMapper.xml
  14. 94 0
      distributed-print-business/src/main/resources/mapper/ExamPrintPlanMapper.xml
  15. 2 2
      distributed-print-business/src/main/resources/mapper/ExamTaskDetailMapper.xml
  16. 1 0
      distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml
  17. 6 3
      distributed-print/src/main/java/com/qmth/distributed/print/api/ClientController.java

+ 89 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientPrintTaskTotalDto.java

@@ -0,0 +1,89 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+/**
+ * @Date: 2021/3/29.
+ */
+public class ClientPrintTaskTotalDto {
+
+    private Integer totalSubjects;
+    private Integer packageCount;
+    private Integer paperCount;
+    private Integer pagesA3;
+    private Integer pagesA4;
+    private Integer pagesA3Left;
+    private Integer pagesA4Left;
+    private Integer hostPagesA3;
+    private Integer hostPagesA4;
+
+    public Integer getTotalSubjects() {
+        return totalSubjects;
+    }
+
+    public void setTotalSubjects(Integer totalSubjects) {
+        this.totalSubjects = totalSubjects;
+    }
+
+    public Integer getPackageCount() {
+        return packageCount;
+    }
+
+    public void setPackageCount(Integer packageCount) {
+        this.packageCount = packageCount;
+    }
+
+    public Integer getPaperCount() {
+        return paperCount;
+    }
+
+    public void setPaperCount(Integer paperCount) {
+        this.paperCount = paperCount;
+    }
+
+    public Integer getPagesA3() {
+        return pagesA3;
+    }
+
+    public void setPagesA3(Integer pagesA3) {
+        this.pagesA3 = pagesA3;
+    }
+
+    public Integer getPagesA4() {
+        return pagesA4;
+    }
+
+    public void setPagesA4(Integer pagesA4) {
+        this.pagesA4 = pagesA4;
+    }
+
+    public Integer getPagesA3Left() {
+        return pagesA3Left;
+    }
+
+    public void setPagesA3Left(Integer pagesA3Left) {
+        this.pagesA3Left = pagesA3Left;
+    }
+
+    public Integer getPagesA4Left() {
+        return pagesA4Left;
+    }
+
+    public void setPagesA4Left(Integer pagesA4Left) {
+        this.pagesA4Left = pagesA4Left;
+    }
+
+    public Integer getHostPagesA3() {
+        return hostPagesA3;
+    }
+
+    public void setHostPagesA3(Integer hostPagesA3) {
+        this.hostPagesA3 = hostPagesA3;
+    }
+
+    public Integer getHostPagesA4() {
+        return hostPagesA4;
+    }
+
+    public void setHostPagesA4(Integer hostPagesA4) {
+        this.hostPagesA4 = hostPagesA4;
+    }
+}

+ 139 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ClientPrintData.java

@@ -0,0 +1,139 @@
+package com.qmth.distributed.print.business.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+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 io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 机器打样状态表
+ * </p>
+ *
+ * @author xf
+ * @since 2021-03-23
+ */
+@TableName("client_print_data")
+public class ClientPrintData extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id")
+    private Long id;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField("school_id")
+    private Long schoolId;
+
+    /**
+     * 机器唯一码
+     */
+    @TableField("machine_code")
+    private String machineCode;
+    /**
+     * 考场ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField("exam_detail_id")
+    private Long examDetailId;
+
+    /**
+     * A4页数
+     */
+    @TableField("pages_a4")
+    private Integer pagesA4;
+
+    /**
+     * A3页数
+     */
+    @TableField("pages_a3")
+    private Integer pagesA3;
+
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField("create_id")
+    @ApiModelProperty(value = "创建人id")
+    private Long createId;
+
+    @TableField(value = "create_time", fill = FieldFill.INSERT)
+    @ApiModelProperty(value = "创建时间")
+    private Long createTime;
+
+    @Override
+    public Long getId() {
+        return id;
+    }
+
+    @Override
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public String getMachineCode() {
+        return machineCode;
+    }
+
+    public void setMachineCode(String machineCode) {
+        this.machineCode = machineCode;
+    }
+
+    public Long getExamDetailId() {
+        return examDetailId;
+    }
+
+    public void setExamDetailId(Long examDetailId) {
+        this.examDetailId = examDetailId;
+    }
+
+    public Integer getPagesA4() {
+        return pagesA4;
+    }
+
+    public void setPagesA4(Integer pagesA4) {
+        this.pagesA4 = pagesA4;
+    }
+
+    public Integer getPagesA3() {
+        return pagesA3;
+    }
+
+    public void setPagesA3(Integer pagesA3) {
+        this.pagesA3 = pagesA3;
+    }
+
+    @Override
+    public Long getCreateId() {
+        return createId;
+    }
+
+    @Override
+    public void setCreateId(Long createId) {
+        this.createId = createId;
+    }
+
+    @Override
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    @Override
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+}

+ 15 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ClientPrintDataMapper.java

@@ -0,0 +1,15 @@
+package com.qmth.distributed.print.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.distributed.print.business.entity.ClientPrintData;
+
+/**
+ * <p>
+ * 各机器打印数量 Mapper 接口
+ * </p>
+ *
+ * @author xf
+ * @since 2021-04-19
+ */
+public interface ClientPrintDataMapper extends BaseMapper<ClientPrintData> {
+}

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

@@ -4,6 +4,7 @@ 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.ClientPrintTaskDto;
+import com.qmth.distributed.print.business.bean.dto.ClientPrintTaskTotalDto;
 import com.qmth.distributed.print.business.bean.result.PrintPlanBrief;
 import com.qmth.distributed.print.business.bean.result.PrintPlanResult;
 import com.qmth.distributed.print.business.entity.ExamPrintPlan;
@@ -35,4 +36,6 @@ public interface ExamPrintPlanMapper extends BaseMapper<ExamPrintPlan> {
     IPage<ClientPrintTaskDto> listClientPrintTask(Page<ClientPrintTaskDto> page, @Param("schoolId") Long schoolId, @Param("machineCode") Long machineCode, @Param("printPlanId") String 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, @Param("isDownload") Boolean isDownload, @Param("validate") Boolean validate, @Param("orgIds") Set<Long> orgIds, @Param("examDetailStatus") String[] examDetailStatus);
 
     List<ClientPrintTaskDto> listClientPrintTask(@Param("schoolId") Long schoolId, @Param("machineCode") Long machineCode, @Param("printPlanId") String 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, @Param("isDownload") Boolean isDownload, @Param("validate") Boolean validate, @Param("orgIds") Set<Long> orgIds, @Param("examDetailStatus") String[] examDetailStatus);
+
+    ClientPrintTaskTotalDto clientTaskTotalData(@Param("schoolId") Long schoolId, @Param("printPlanId") String 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, @Param("isDownload") Boolean isDownload, @Param("validate") Boolean validate, @Param("machineCode") Long machineCode, @Param("orgIds") Set<Long> orgIds, @Param("examDetailStatus") String[] examDetailStatus);
 }

+ 18 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ClientPrintDataService.java

@@ -0,0 +1,18 @@
+package com.qmth.distributed.print.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.distributed.print.business.entity.ClientPrintData;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 各机器打印数量 服务类
+ * </p>
+ *
+ * @author xf
+ * @since 2021-04-19
+ */
+public interface ClientPrintDataService extends IService<ClientPrintData> {
+    List<ClientPrintData> listBySchoolIdAndMachineCode(Long schoolId, Long machineCode);
+}

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

@@ -4,6 +4,7 @@ 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.ClientPrintTaskDto;
+import com.qmth.distributed.print.business.bean.dto.ClientPrintTaskTotalDto;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
@@ -19,7 +20,7 @@ public interface ClientService {
 
     Boolean tagPass(String courseCode, String courseName, String paperNumber, String machineCode, Boolean isPass, Long userId);
 
-    Boolean updatePrintProgress(Long examDetailId, Integer printProgress);
+    Boolean updatePrintProgress(Long examDetailId, String machineCode, Integer printProgress);
 
     IPage<ClientExamStudentDto> listStudent(Long examDetailId, String ticketNumber, String studentName, String courseCode, Integer pageNumber, Integer pageSize);
 
@@ -40,4 +41,6 @@ public interface ClientService {
     List<Map<String, String>> getBatchUrl(String machineCode, Long orgId, Long printPlanId, String courseCode, String paperNumber, Boolean isTry, Boolean isPass);
 
     void exportClientPrintTask(HttpServletResponse response, Long machineCode, String orgId, String printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Boolean isDownload, Boolean validate) throws Exception;
+
+    ClientPrintTaskTotalDto taskTotalData(String printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Boolean isDownload, Boolean validate, Long machineCode);
 }

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

@@ -173,7 +173,7 @@ public interface ExamDetailService extends IService<ExamDetail> {
      */
     List<ExaminationExportDto> findExaminationExportDtoDatasource(Map<String, Object> map);
 
-    Boolean updatePrintProgress(Long schoolId, Long examDetailId, Integer printProgress);
+    Boolean updatePrintProgress(Long schoolId, Long examDetailId, String machineCode, Integer printProgress);
 
     IPage<ClientExamStudentDto> listStudent(Long schoolId, Long examDetailId, String ticketNumber, String studentName, String courseCode, Integer pageNumber, Integer pageSize);
 

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

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 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.params.DeleteParams;
 import com.qmth.distributed.print.business.bean.params.PrintPlanParams;
 import com.qmth.distributed.print.business.bean.result.PrintPlanBrief;
@@ -78,4 +79,6 @@ public interface ExamPrintPlanService extends IService<ExamPrintPlan> {
     IPage<ClientPrintTaskDto> listClientPrintTask(Page<ClientPrintTaskDto> page, Long schoolId, Long machineCode, String printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Boolean isDownload, Boolean validate, Set<Long> orgIds);
 
     List<ClientPrintTaskDto> listClientPrintTask(Long schoolId, Long machineCode, String printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Boolean isDownload, Boolean validate, Set<Long> orgIds);
+
+    ClientPrintTaskTotalDto clientTaskTotalData(String printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Boolean isDownload, Boolean validate, Long machineCode);
 }

+ 24 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientPrintDataServiceImpl.java

@@ -0,0 +1,24 @@
+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.ClientPrintData;
+import com.qmth.distributed.print.business.mapper.ClientPrintDataMapper;
+import com.qmth.distributed.print.business.service.ClientPrintDataService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Date: 2021/4/19.
+ */
+@Service
+public class ClientPrintDataServiceImpl extends ServiceImpl<ClientPrintDataMapper, ClientPrintData> implements ClientPrintDataService {
+
+    @Override
+    public List<ClientPrintData> listBySchoolIdAndMachineCode(Long schoolId, Long machineCode) {
+        QueryWrapper<ClientPrintData> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ClientPrintData::getSchoolId, schoolId).eq(ClientPrintData::getMachineCode, machineCode);
+        return this.list(queryWrapper);
+    }
+}

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

@@ -77,9 +77,9 @@ public class ClientServiceImpl implements ClientService {
     }
 
     @Override
-    public Boolean updatePrintProgress(Long examDetailId, Integer printProgress) {
+    public Boolean updatePrintProgress(Long examDetailId, String machineCode, Integer printProgress) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        return examDetailService.updatePrintProgress(schoolId, examDetailId, printProgress);
+        return examDetailService.updatePrintProgress(schoolId, examDetailId, machineCode, printProgress);
     }
 
     @Override
@@ -141,12 +141,12 @@ public class ClientServiceImpl implements ClientService {
     @Transactional
     @Override
     public Map<String, Object> getPrintData(Long examDetailId, String machineCode, Boolean isPrint, String printUser) {
-        if(isPrint && StringUtils.isBlank(printUser)){
+        if (isPrint && StringUtils.isBlank(printUser)) {
             throw ExceptionResultEnum.ERROR.exception("打印员不能为空");
         }
         ExamDetail examDetail = examDetailService.getById(examDetailId);
-        if(isPrint && StringUtils.isNotBlank(examDetail.getPrintUser()) && !examDetail.getPrintUser().equals(printUser)){
-            throw ExceptionResultEnum.ERROR.exception("该任务已被["+printUser+"]占用");
+        if (isPrint && StringUtils.isNotBlank(examDetail.getPrintUser()) && !examDetail.getPrintUser().equals(printUser)) {
+            throw ExceptionResultEnum.ERROR.exception("该任务已被[" + printUser + "]占用");
         }
 
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
@@ -442,6 +442,11 @@ public class ClientServiceImpl implements ClientService {
         ExcelUtil.excelExport("印刷管理", ClientPrintTaskDto.class, printTaskDtoIList, response);
     }
 
+    @Override
+    public ClientPrintTaskTotalDto taskTotalData(String printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Boolean isDownload, Boolean validate, Long machineCode) {
+        return examPrintPlanService.clientTaskTotalData(printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, isDownload, validate, machineCode);
+    }
+
     /**
      * 根据考场生成试卷map
      *

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

@@ -29,6 +29,7 @@ import org.apache.poi.xssf.usermodel.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -73,6 +74,9 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     @Resource
     ConvertUtil convertUtil;
 
+    @Autowired
+    private ClientPrintDataService clientPrintDataService;
+
     @Resource
     AsyncCreatePdfTempleteService asyncCreatePdfTempleteService;
 
@@ -635,12 +639,28 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         return examinationExportDtoList;
     }
 
+    @Transactional
     @Override
-    public Boolean updatePrintProgress(Long schoolId, Long examDetailId, Integer printProgress) {
+    public Boolean updatePrintProgress(Long schoolId, Long examDetailId, String machineCode, Integer printProgress) {
         // 更新考场进度、状态、打印结束时间
         UpdateWrapper<ExamDetail> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(ExamDetail::getPrintProgress, printProgress).set(ExamDetail::getPrintEndTime, System.currentTimeMillis()).set(ExamDetail::getStatus, ExamDetailStatusEnum.FINISH).eq(ExamDetail::getId, examDetailId);
-        return this.update(updateWrapper);
+        this.update(updateWrapper);
+
+        // 记录机器打印数量
+        ExamDetail examDetail = this.getById(examDetailId);
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        ClientPrintData clientPrintData = new ClientPrintData();
+        clientPrintData.setId(SystemConstant.getDbUuid());
+        clientPrintData.setSchoolId(schoolId);
+        clientPrintData.setExamDetailId(examDetailId);
+        clientPrintData.setMachineCode(machineCode);
+        clientPrintData.setPagesA3(examDetail.getPagesA3());
+        clientPrintData.setPagesA4(examDetail.getPagesA4());
+        clientPrintData.setCreateId(sysUser.getId());
+        clientPrintData.setCreateTime(System.currentTimeMillis());
+        clientPrintDataService.save(clientPrintData);
+        return true;
     }
 
     @Override

+ 30 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 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.params.DeleteParams;
 import com.qmth.distributed.print.business.bean.params.PrintPlanParams;
 import com.qmth.distributed.print.business.bean.result.PrintPlanBrief;
@@ -66,6 +67,9 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
     @Resource
     private TBTaskService tbTaskService;
 
+    @Autowired
+    private ClientPrintDataService clientPrintDataService;
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public IPage<PrintPlanResult> printPlanPage(Long schoolId, Long printPlanId, PrintPlanStatusEnum status, Long startTime, Long endTime, int pageNumber, int pageSize) {
@@ -248,7 +252,7 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
         if (!PrintPlanStatusEnum.NEW.equals(examPrintPlan.getStatus())) {
             throw ExceptionResultEnum.ERROR.exception("只有'新建'状态的项目计划可以被删除");
         }
-        if (!tbTaskService.countByPrintPlanIdAndEntityId(examPrintPlan.getSchoolId(),id,null)){
+        if (!tbTaskService.countByPrintPlanIdAndEntityId(examPrintPlan.getSchoolId(), id, null)) {
             throw ExceptionResultEnum.ERROR.exception("要删除的印刷计划正在生成pdf中,无法删除");
         }
         examDetailService.deleteExaminationData(id);
@@ -276,7 +280,7 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
     @Override
     public IPage<ClientPrintTaskDto> listClientPrintTask(Page<ClientPrintTaskDto> page, Long schoolId, Long machineCode, String printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Boolean isDownload, Boolean validate, Set<Long> orgIds) {
         // 以下状态考场状态不可查询
-        String[] examDetailStatus = new String[]{ExamDetailStatusEnum.NEW.name(),PrintPlanStatusEnum.READY.name()};
+        String[] examDetailStatus = new String[]{ExamDetailStatusEnum.NEW.name(), PrintPlanStatusEnum.READY.name()};
         return this.baseMapper.listClientPrintTask(page, schoolId, machineCode, printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, isDownload, validate, orgIds, examDetailStatus);
     }
 
@@ -284,10 +288,33 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
     @Override
     public List<ClientPrintTaskDto> listClientPrintTask(Long schoolId, Long machineCode, String printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Boolean isDownload, Boolean validate, Set<Long> orgIds) {
         // 以下状态考场状态不可查询
-        String[] examDetailStatus = new String[]{ExamDetailStatusEnum.NEW.name(),PrintPlanStatusEnum.READY.name()};
+        String[] examDetailStatus = new String[]{ExamDetailStatusEnum.NEW.name(), PrintPlanStatusEnum.READY.name()};
         return this.baseMapper.listClientPrintTask(schoolId, machineCode, printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, isDownload, validate, orgIds, examDetailStatus);
     }
 
+    @Override
+    public ClientPrintTaskTotalDto clientTaskTotalData(String printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Boolean isDownload, Boolean validate, Long machineCode) {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        Set<Long> orgIds = commonService.listSubOrgIds(null);
+        // 以下状态考场状态不可查询
+        String[] examDetailStatus = new String[]{ExamDetailStatusEnum.NEW.name(), PrintPlanStatusEnum.READY.name()};
+        ClientPrintTaskTotalDto clientPrintTaskTotalDto = this.baseMapper.clientTaskTotalData(schoolId, printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, isDownload, validate, machineCode, orgIds, examDetailStatus);
+
+        if (clientPrintTaskTotalDto == null) {
+            clientPrintTaskTotalDto = new ClientPrintTaskTotalDto();
+        }
+        // 累计a3,a4
+        List<ClientPrintData> list = clientPrintDataService.listBySchoolIdAndMachineCode(schoolId, machineCode);
+        if (!list.isEmpty()) {
+            int pagesA3 = list.stream().mapToInt(m -> m.getPagesA3()).sum();
+            clientPrintTaskTotalDto.setHostPagesA3(pagesA3 / 2);
+            int pagesA4 = list.stream().mapToInt(m -> m.getPagesA4()).sum();
+            clientPrintTaskTotalDto.setHostPagesA4(pagesA4 / 2);
+        }
+
+        return clientPrintTaskTotalDto;
+    }
+
 
     /**
      * 查找子机构

+ 4 - 0
distributed-print-business/src/main/resources/mapper/ClientPrintDataMapper.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!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.ClientPrintDataMapper">
+</mapper>

+ 94 - 0
distributed-print-business/src/main/resources/mapper/ExamPrintPlanMapper.xml

@@ -206,5 +206,99 @@
             </if>
         </where>
     </select>
+    <select id="clientTaskTotalData" resultType="com.qmth.distributed.print.business.bean.dto.ClientPrintTaskTotalDto">
+        SELECT
+            ifnull(count(b.package_code), 0) packageCount,
+            ifnull(sum(b.total_subjects), 0) totalSubjects,
+            ifnull(sum(ifnull(b.pages_a3, 0)), 0)/2 pagesA3,
+            ifnull(sum(ifnull(b.pages_a4, 0)), 0) /2 pagesA4,
+            ifnull(sum(case b.status when 'FINISH' then 0 else ifnull(b.pages_a3, 0) end),0)/2 pagesA3Left,
+            ifnull(sum(case b.status when 'FINISH' then 0 else ifnull(b.pages_a4, 0) end),0)/2 pagesA4Left,
+            ifnull(c.paperCount, 0) paperCount
+        FROM
+            exam_print_plan a
+        JOIN
+            exam_detail b ON a.id = b.print_plan_id
+        JOIN
+            (SELECT
+                exam_detail_id,
+                count(distinct a.paper_number) paperCount,
+                GROUP_CONCAT(CONCAT(a.course_name, '(', a.course_code, ')')) courseNameCode,
+                GROUP_CONCAT(a.paper_number) paperNumber,
+                GROUP_CONCAT(IFNULL(a.paper_pages_a3, 0) + IFNULL(a.card_pages_a3, 0)) singlePagesA3,
+                SUM(CASE b.is_download
+                    WHEN true THEN 0
+                    ELSE 1
+                    END) isDownload,
+                SUM(CASE b.is_try
+                    WHEN true THEN 0
+                    ELSE 1
+                    END) isTry,
+                SUM(CASE b.is_pass
+                    WHEN true THEN 0
+                    ELSE 1
+                    END) isPass
+        FROM
+            exam_detail_course a
+                LEFT JOIN client_status b ON a.school_id = b.school_id
+                AND a.course_code = b.course_code
+                AND a.paper_number = b.paper_number
+                AND b.machine_code = #{machineCode}
+        <where>
+            <if test="courseCode != null and courseCode != ''">
+                and a.course_code = #{courseCode}
+            </if>
+            <if test="paperNumber != null and paperNumber != ''">
+                and a.paper_number = #{paperNumber}
+            </if>
+        </where>
+        GROUP BY exam_detail_id) c ON b.id = c.exam_detail_id
+            LEFT JOIN
+        sys_user e ON b.print_user = e.login_name
+            LEFT JOIN
+        sys_user d ON a.create_id = d.id
+        <where>
+            and a.school_id = #{schoolId}
+            AND b.status not IN
+            <foreach collection="examDetailStatus" item="item" index="index" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+            <if test="printPlanId != null and printPlanId != ''">
+                and a.id = #{printPlanId}
+            </if>
+            <if test="status != null and status != ''">
+                and a.status = #{status}
+            </if>
+            <if test="examPlace != null and examPlace != ''">
+                and b.exam_place = #{examPlace}
+            </if>
+            <if test="examRoom != null and examRoom != ''">
+                and b.exam_room = #{examRoom}
+            </if>
+            <if test="examStartTime != null and examStartTime != ''">
+                and b.exam_start_time &gt; #{examStartTime}
+            </if>
+            <if test="examEndTime != null and examEndTime != ''">
+                and b.exam_end_time &lt; #{examEndTime}
+            </if>
+            <if test="validate != null and validate != ''">
+                and b.validate = #{validate}
+            </if>
+            <if test="isDownload != null and isDownload != ''">
+                <if test="isDownload == true">
+                    and c.isDownload = 0
+                </if>
+                <if test="isDownload == false">
+                    and c.isDownload > 0
+                </if>
+            </if>
+            <if test="orgIds != null">
+                AND d.org_id IN
+                <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
 
 </mapper>

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

@@ -75,10 +75,10 @@
             </if>
             <if test="relateType != null and relateType != ''">
                 <if test="relateType == 'RELATE'">
-                   and d.relate_paper_type is not null
+                   and a.paper_type is not null
                 </if>
                 <if test="relateType == 'NOT_RELATE'">
-                    and d.relate_paper_type is null
+                    and a.paper_type is null
                 </if>
             </if>
             <if test="printPlanId != null and printPlanId != ''">

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

@@ -478,6 +478,7 @@
             sys_user g ON a.create_id = g.id
         <where>
             and a.status = #{printPlanStatus}
+            and b.status = #{examDetailStatus}
             <if test="printPlanId != null and printPlanId != ''">
                 and a.id = #{printPlanId}
             </if>

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

@@ -9,6 +9,7 @@ import com.qmth.distributed.print.business.bean.auth.AuthBean;
 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.params.ClientLoginParam;
 import com.qmth.distributed.print.business.bean.result.LoginResult;
 import com.qmth.distributed.print.business.entity.SysUser;
@@ -276,8 +277,8 @@ public class ClientController {
                                      @RequestParam(value = "examEndTime", required = false) Long examEndTime,
                                      @RequestParam(value = "isDownload", required = false) Boolean isDownload,
                                      @RequestParam(value = "validate", required = false) Boolean validate) {
-
-        return null;
+        ClientPrintTaskTotalDto clientPrintTaskTotalDto = clientService.taskTotalData(printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, isDownload, validate, machineCode);
+        return ResultUtil.ok(clientPrintTaskTotalDto);
     }
 
 
@@ -373,14 +374,16 @@ public class ClientController {
      * 印刷管理-更新打印进度
      *
      * @param examDetailId
+     * @param machineCode
      * @param printProgress
      * @return
      */
     @ApiOperation(value = "印刷管理-更新打印进度")
     @RequestMapping(value = "/print/update_progress", method = RequestMethod.POST)
     public Result updateProgress(@RequestParam("examDetailId") Long examDetailId,
+                                 @RequestParam("machineCode") String machineCode,
                                  @RequestParam("printProgress") Integer printProgress) {
-        Boolean isSuccess = clientService.updatePrintProgress(examDetailId, printProgress);
+        Boolean isSuccess = clientService.updatePrintProgress(examDetailId, machineCode, printProgress);
         return ResultUtil.ok(isSuccess);
     }