xiaof 2 лет назад
Сommit
2076fd5a11
100 измененных файлов с 8956 добавлено и 0 удалено
  1. BIN
      .DS_Store
  2. 33 0
      .gitignore
  3. 35 0
      README.md
  4. BIN
      distributed-print-business/.DS_Store
  5. 33 0
      distributed-print-business/.gitignore
  6. 210 0
      distributed-print-business/pom.xml
  7. BIN
      distributed-print-business/src/.DS_Store
  8. BIN
      distributed-print-business/src/main/.DS_Store
  9. BIN
      distributed-print-business/src/main/java/.DS_Store
  10. BIN
      distributed-print-business/src/main/java/com/.DS_Store
  11. BIN
      distributed-print-business/src/main/java/com/qmth/.DS_Store
  12. BIN
      distributed-print-business/src/main/java/com/qmth/distributed/.DS_Store
  13. BIN
      distributed-print-business/src/main/java/com/qmth/distributed/print/.DS_Store
  14. BIN
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/.DS_Store
  15. 192 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/custom/listener/ProcessEventListener.java
  16. 145 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/custom/service/AbstractMultiWorkFlowService.java
  17. 77 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/custom/service/DefaultInstanceConvertToMultiInstance.java
  18. 41 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/custom/service/MultiWorkFlow.java
  19. 28 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/custom/service/impl/MultiWorkFlowService.java
  20. BIN
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/.DS_Store
  21. 23 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/BasicExamDto.java
  22. 32 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/BasicPrintConfigDto.java
  23. 143 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/CardCustDto.java
  24. 80 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/CardDetailDto.java
  25. 194 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/CardRuleDto.java
  26. 103 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClazzContentDto.java
  27. 80 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientExamStudentDto.java
  28. 125 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientExamTaskDto.java
  29. 62 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientPrintBackupDataDto.java
  30. 80 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientPrintDataDto.java
  31. 134 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientPrintStatisticsDto.java
  32. 99 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientPrintStatisticsTotalDto.java
  33. 425 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientPrintTaskDto.java
  34. 107 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientPrintTaskTotalDto.java
  35. 96 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamCardDto.java
  36. 101 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamPaperInfoDto.java
  37. 92 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamPaperObjectiveStructureDto.java
  38. 73 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamPaperStructureDto.java
  39. 75 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamPaperSubjectiveStructureDto.java
  40. 71 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamStudentCourseClassDto.java
  41. 86 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamStudentCourseDto.java
  42. 25 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamStudentDto.java
  43. 58 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamStudentPdfInfoDto.java
  44. 214 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskDetailCardDto.java
  45. 301 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskDetailDto.java
  46. 382 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskDto.java
  47. 39 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskImportDto.java
  48. 34 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPaperDto.java
  49. 73 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPaperExportDto.java
  50. 189 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPaperFileDto.java
  51. 164 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPlanStatisticDto.java
  52. 19 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPrintDetailDto.java
  53. 55 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPrintDto.java
  54. 59 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskTempDto.java
  55. 158 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExaminationExportDto.java
  56. 262 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExaminationImportDto.java
  57. 61 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExtendFieldsDto.java
  58. 99 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/FieldsDto.java
  59. 87 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/GradeBatchStudentClazzDto.java
  60. 97 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/GradeBatchStudentDto.java
  61. 60 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/Original.java
  62. 77 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/PaperPdfDto.java
  63. 119 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/PdfDto.java
  64. 50 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/PdfPackageDto.java
  65. 78 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/PdfSignDto.java
  66. 272 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/PrintTaskDto.java
  67. 89 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/PrintTaskTotalDto.java
  68. 64 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/RelatePaperDto.java
  69. 92 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ReviewLogDto.java
  70. 32 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ReviewSampleDto.java
  71. 24 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/StudentExtendDto.java
  72. 75 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/SyncExamCardDto.java
  73. 61 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/SyncExamStudentDto.java
  74. 78 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/TCStatisticsDto.java
  75. 35 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/TaskPrintExtendFieldsDto.java
  76. 44 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/TaskPrintHouseDto.java
  77. 44 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/TaskTotalLeftDto.java
  78. 117 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/TemplateDto.java
  79. 30 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ThirdObjectDto.java
  80. 89 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/approvalForm/ApprovalInfo.java
  81. 124 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/approvalForm/BasicInfo.java
  82. 228 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/approvalForm/ExamPackageDetail.java
  83. 65 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/approvalForm/ExamRoomInfo.java
  84. 46 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/approvalForm/ExamTaskApprovalFormDto.java
  85. 80 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/examObject/ExamObjectDto.java
  86. 111 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/excel/ExamStudentImportDto.java
  87. 81 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/excel/GradePaperDimensionAbilityDto.java
  88. 94 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/excel/GradePaperDimensionKnowledgeDto.java
  89. 172 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/excel/GradePaperStructDto.java
  90. 28 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/excel/TeachStudentImportDto.java
  91. 190 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/open/ExamStudentScore.java
  92. 90 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/open/PaperConfig.java
  93. 98 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/open/PaperDimension.java
  94. 157 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/open/PaperEvaluation.java
  95. 111 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/open/PaperStructure.java
  96. 40 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/flow/CustomFlowApproveRoleDto.java
  97. 40 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/flow/CustomFlowApproveUserDto.java
  98. 108 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/flow/CustomFlowCommonDto.java
  99. 40 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/flow/CustomFlowCopyUserDto.java
  100. 72 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/flow/CustomFlowDto.java

+ 33 - 0
.gitignore

@@ -0,0 +1,33 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/

+ 35 - 0
README.md

@@ -0,0 +1,35 @@
+逸教云平台
+
+项目模块:
+1.distributed-print
+分布式印刷项目
+   
+2.distributed-print-business
+分布式印刷业务
+
+3.teachcloud-print-common
+项目公用
+
+4.teachcloud-print-common-api
+项目公用api
+
+5.teachcloud-report
+教研分析报告
+
+6.teachcloud-report-business
+教研分析报告业务
+
+7.teachcloud-task
+分布式job
+
+项目框架:
+java8,spring boot2.3.0
+
+数据库:
+mysql5.7or8.0
+
+部署:
+docker
+
+附件:
+本地或oss存储

BIN
distributed-print-business/.DS_Store


+ 33 - 0
distributed-print-business/.gitignore

@@ -0,0 +1,33 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/

+ 210 - 0
distributed-print-business/pom.xml

@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.qmth.distributed.print.business</groupId>
+    <artifactId>distributed-print-business</artifactId>
+    <version>1.0.0</version>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>8</source>
+                    <target>8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <packaging>jar</packaging>
+
+    <parent>
+        <groupId>com.qmth.paper.library.service</groupId>
+        <artifactId>paper-library-service</artifactId>
+        <version>1.0.0</version>
+    </parent>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.velocity</groupId>
+            <artifactId>velocity-engine-core</artifactId>
+            <version>2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.qmth.teachcloud.common</groupId>
+            <artifactId>teachcloud-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.jetbrains</groupId>
+            <artifactId>annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>itextpdf</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>itext-asian</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>javase</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.activiti</groupId>
+            <artifactId>activiti-engine</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>spring-beans</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>mybatis</artifactId>
+                    <groupId>org.mybatis</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.activiti</groupId>
+            <artifactId>activiti-spring</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.codehaus.jackson</groupId>
+                    <artifactId>jackson-core-asl</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-context</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-jdbc</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-tx</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-orm</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-beans</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>mybatis</artifactId>
+                    <groupId>org.mybatis</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>activation</artifactId>
+                    <groupId>javax.activation</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.activiti</groupId>
+            <artifactId>activiti-spring-boot-starter-basic</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>spring-beans</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-boot-starter</artifactId>
+                    <groupId>org.springframework.boot</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-boot-starter-jdbc</artifactId>
+                    <groupId>org.springframework.boot</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!-- Activiti 流程图 -->
+        <dependency>
+            <groupId>org.activiti</groupId>
+            <artifactId>activiti-common-rest</artifactId>
+        </dependency>
+        <!-- Activiti 在线设计 -->
+        <dependency>
+            <groupId>org.activiti</groupId>
+            <artifactId>activiti-modeler</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>spring-beans</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-context</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-core</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-tx</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-web</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-security-config</artifactId>
+                    <groupId>org.springframework.security</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-security-core</artifactId>
+                    <groupId>org.springframework.security</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-security-crypto</artifactId>
+                    <groupId>org.springframework.security</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-security-web</artifactId>
+                    <groupId>org.springframework.security</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>spring-webmvc</artifactId>
+                    <groupId>org.springframework</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>activation</artifactId>
+                    <groupId>javax.activation</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>commons-io</artifactId>
+                    <groupId>commons-io</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+            <version>5.2.12.RELEASE</version>
+        </dependency>
+        <dependency>
+            <groupId>org.activiti</groupId>
+            <artifactId>activiti-bpmn-layout</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

BIN
distributed-print-business/src/.DS_Store


BIN
distributed-print-business/src/main/.DS_Store


BIN
distributed-print-business/src/main/java/.DS_Store


BIN
distributed-print-business/src/main/java/com/.DS_Store


BIN
distributed-print-business/src/main/java/com/qmth/.DS_Store


BIN
distributed-print-business/src/main/java/com/qmth/distributed/.DS_Store


BIN
distributed-print-business/src/main/java/com/qmth/distributed/print/.DS_Store


BIN
distributed-print-business/src/main/java/com/qmth/distributed/print/business/.DS_Store


+ 192 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/custom/listener/ProcessEventListener.java

@@ -0,0 +1,192 @@
+package com.qmth.distributed.print.business.activiti.custom.listener;
+
+import com.google.gson.Gson;
+import com.qmth.distributed.print.business.bean.flow.CustomFlowVarDto;
+import com.qmth.distributed.print.business.bean.result.FlowTaskResult;
+import com.qmth.distributed.print.business.entity.ExamTask;
+import com.qmth.distributed.print.business.entity.TFFlowLog;
+import com.qmth.distributed.print.business.enums.CustomFlowMultipleUserApproveTypeEnum;
+import com.qmth.distributed.print.business.enums.MessageEnum;
+import com.qmth.distributed.print.business.service.ActivitiService;
+import com.qmth.distributed.print.business.service.BasicMessageService;
+import com.qmth.distributed.print.business.service.PrintCommonService;
+import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
+import com.qmth.teachcloud.common.contant.SpringContextHolder;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.FlowApproveOperationEnum;
+import com.qmth.teachcloud.common.enums.TFCustomTypeEnum;
+import com.qmth.teachcloud.common.service.SysUserService;
+import org.activiti.engine.HistoryService;
+import org.activiti.engine.TaskService;
+import org.activiti.engine.delegate.event.ActivitiEvent;
+import org.activiti.engine.delegate.event.ActivitiEventListener;
+import org.activiti.engine.delegate.event.ActivitiProcessStartedEvent;
+import org.activiti.engine.history.HistoricVariableInstance;
+import org.activiti.engine.task.Task;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: 全局监听
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/2/8
+ */
+@Component
+public class ProcessEventListener implements ActivitiEventListener, Serializable {
+    private final static Logger log = LoggerFactory.getLogger(ProcessEventListener.class);
+
+    @Override
+    public void onEvent(ActivitiEvent event) {
+        switch (event.getType()) {
+            case PROCESS_STARTED:
+                // 流程启动
+//                log.info("流程启动_PROCESS_STARTED:ProcessInstanceId:{},ExecutionId:{},ProcessDefinitionId:{}", event.getProcessInstanceId(), event.getExecutionId(), event.getProcessDefinitionId());
+                BasicMessageService basicMessageService = SpringContextHolder.getBean(BasicMessageService.class);
+                ActivitiProcessStartedEvent activitiProcessStartedEvent = (ActivitiProcessStartedEvent) event;
+                Map<String, Object> map = activitiProcessStartedEvent.getVariables();
+                Long objectId = (Long) map.get(SystemConstant.OBJECT_ID);
+                TFCustomTypeEnum flowType = (TFCustomTypeEnum) map.get(SystemConstant.FLOW_TYPE);
+                Object o = map.get(SystemConstant.OBJECT_DATA);
+                Boolean flowSubmit = (Boolean) map.get(SystemConstant.FLOW_SUBMIT);
+                //发送命题待审批短信
+                if (Objects.nonNull(objectId) && Objects.nonNull(flowType) && Objects.nonNull(o) && Objects.nonNull(flowSubmit) && flowSubmit) {
+                    if (flowType == TFCustomTypeEnum.ELECTRON_FLOW && o instanceof ExamTask) {
+                        basicMessageService.sendNoticeTaskCreate((ExamTask) o);
+                    }
+                }
+                break;
+            case PROCESS_COMPLETED:
+                // 流程结束
+//                log.info("流程结束_PROCESS_COMPLETED:ProcessInstanceId:{},ExecutionId:{},ProcessDefinitionId:{}", event.getProcessInstanceId(), event.getExecutionId(), event.getProcessDefinitionId());
+                HistoryService historyService = SpringContextHolder.getBean(HistoryService.class);
+                SysUserService sysUserService = SpringContextHolder.getBean(SysUserService.class);
+                PrintCommonService printCommonService = SpringContextHolder.getBean(PrintCommonService.class);
+
+                List<HistoricVariableInstance> historicVariableInstanceList = historyService.createHistoricVariableInstanceQuery().processInstanceId(event.getProcessInstanceId()).list();
+                if (Objects.nonNull(historicVariableInstanceList) && historicVariableInstanceList.size() > 0) {
+                    TFFlowLog tfFlowLog = null;
+                    Object object = null;
+                    for (HistoricVariableInstance h : historicVariableInstanceList) {
+                        if (Objects.equals(h.getVariableName(), SystemConstant.APPROVE_TF_FLOW_LOG)) {
+                            tfFlowLog = (TFFlowLog) h.getValue();
+                            Optional.ofNullable(tfFlowLog).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程审批日志为空"));
+                        } else if (Objects.equals(h.getVariableName(), SystemConstant.OBJECT_DATA)) {
+                            object = h.getValue();
+                            Optional.ofNullable(object).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("实体数据为空"));
+                        }
+                        if (Objects.nonNull(object) && Objects.nonNull(tfFlowLog)) {
+                            break;
+                        }
+                    }
+                    if (Objects.nonNull(tfFlowLog.getObjectTable())) {
+                        if (Objects.equals(tfFlowLog.getObjectTable(), TFCustomTypeEnum.ELECTRON_FLOW.getTable())) {//如果是命题任务交卷
+                            //取命题老师ID
+                            SysUser sysUser = sysUserService.getById(((ExamTask) object).getUserId());
+                            try {
+                                printCommonService.checkData(((ExamTask) object).getSchoolId(), ((ExamTask) object).getCourseCode(), ((ExamTask) object).getPaperNumber(), sysUser);
+                            } catch (IOException e) {
+                                throw ExceptionResultEnum.ERROR.exception("生成pdf失败");
+                            }
+                        }
+                    }
+                }
+                break;
+            case TASK_COMPLETED:
+                // 任务被完成了。它会在ENTITY_DELETE事件之前触发。当任务是流程一部分时,事件会在流程继续运行之前, 后续事件将是ACTIVITY_COMPLETE,对应着完成任务的节点。
+//                log.info("流程任务完成_TASK_COMPLETED:ProcessInstanceId:{},ExecutionId:{},ProcessDefinitionId:{}", event.getProcessInstanceId(), event.getExecutionId(), event.getProcessDefinitionId());
+                TaskService taskService = SpringContextHolder.getBean(TaskService.class);
+                sysUserService = SpringContextHolder.getBean(SysUserService.class);
+                basicMessageService = SpringContextHolder.getBean(BasicMessageService.class);
+                ActivitiService activitiService = SpringContextHolder.getBean(ActivitiService.class);
+
+                Task task = taskService.createTaskQuery().executionId(event.getExecutionId()).singleResult();
+                if (Objects.nonNull(task)) {
+                    TFFlowLog tfFlowLog = (TFFlowLog) taskService.getVariable(task.getId(), SystemConstant.APPROVE_TF_FLOW_LOG);
+                    Optional.ofNullable(tfFlowLog).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程审批日志为空"));
+                    o = taskService.getVariable(task.getId(), SystemConstant.OBJECT_DATA);
+                    Optional.ofNullable(o).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("实体数据为空"));
+                    Map<String, CustomFlowVarDto> agginessMap = (Map<String, CustomFlowVarDto>) taskService.getVariable(task.getId(), SystemConstant.AGGINESS_MAP);
+                    Optional.ofNullable(agginessMap).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程审批数据为空"));
+                    Map<String, FlowTaskResult> setupMap = (Map<String, FlowTaskResult>) taskService.getVariable(task.getId(), SystemConstant.SETUP_MAP);
+                    Optional.ofNullable(setupMap).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程审批步骤数据为空"));
+
+                    if (tfFlowLog.getApproveOperation() != FlowApproveOperationEnum.SUBMIT
+                            && tfFlowLog.getApproveOperation() != FlowApproveOperationEnum.END
+                            && tfFlowLog.getApproveOperation() != FlowApproveOperationEnum.FINISH) {
+                        if (Objects.nonNull(tfFlowLog.getPendApproveId())) {
+                            String[] strs = tfFlowLog.getPendApproveId().split(",");
+                            List<Long> userIds = new ArrayList<>();
+                            for (String s : strs) {
+                                userIds.add(SystemConstant.convertIdToLong(s.trim()));
+                            }
+                            Gson gson = new Gson();
+                            List<ApproveUserResult> nextApproverPeopleList = sysUserService.findByIdsForResult(userIds);
+                            if (Objects.nonNull(nextApproverPeopleList) && nextApproverPeopleList.size() > 0 && Objects.nonNull(tfFlowLog.getApproveUserApproveType()) && tfFlowLog.getApproveUserApproveType() == CustomFlowMultipleUserApproveTypeEnum.ORDER) {
+                                nextApproverPeopleList.removeAll(nextApproverPeopleList.subList(1, nextApproverPeopleList.size() - 0));
+                            }
+
+                            if (Objects.nonNull(nextApproverPeopleList) && tfFlowLog.getApproveOperation() == FlowApproveOperationEnum.APPROVE) {
+                                List<ApproveUserResult> copyUsersList = null;
+                                FlowTaskResult nextFlowTaskResult = null;
+                                FlowTaskResult currFlowTaskResult = gson.fromJson(gson.toJson(setupMap.get(task.getTaskDefinitionKey())), FlowTaskResult.class);
+                                int currSetup = currFlowTaskResult.getSetup().intValue();
+                                currSetup = currSetup == setupMap.size() - 1 ? 0 : currSetup + 1;
+
+                                nextFlowTaskResult = activitiService.getNextFlowTaskResult(setupMap, gson, currSetup, nextFlowTaskResult);
+                                CustomFlowVarDto customFlowVarDto = gson.fromJson(gson.toJson(agginessMap.get(nextFlowTaskResult.getTaskKey())), CustomFlowVarDto.class);
+                                if (Objects.nonNull(customFlowVarDto) && Objects.nonNull(customFlowVarDto.getCopyForUserIds()) && customFlowVarDto.getCopyForUserIds().size() > 0) {
+                                    Set<String> copyUserSet = new LinkedHashSet(customFlowVarDto.getCopyForUserIds());
+                                    copyUsersList = sysUserService.findByIdsForResult(copyUserSet.stream().map(s -> SystemConstant.convertIdToLong(s)).collect(Collectors.toList()));
+                                }
+
+                                //如果不是并行会签,则每个节点都发
+                                if (Objects.nonNull(tfFlowLog.getApproveUserApproveType()) && tfFlowLog.getApproveUserApproveType() == CustomFlowMultipleUserApproveTypeEnum.ORDER) {
+                                    if (Objects.nonNull(o) && o instanceof ExamTask) {
+                                        basicMessageService.sendNoticeTaskAuditFlow((ExamTask) o, nextApproverPeopleList, MessageEnum.NOTICE_OF_AUDIT_CREATED);
+                                        //抄送短信
+                                        if (Objects.nonNull(copyUsersList) && copyUsersList.size() > 0) {
+                                            basicMessageService.sendNoticeAuditCopyUser((ExamTask) o, copyUsersList, nextApproverPeopleList.get(0).getRealName(), MessageEnum.NOTICE_OF_AUDIT_COPY_USER);
+                                        }
+                                    }
+                                } else {
+                                    if (Objects.isNull(tfFlowLog.getApproveMultiSetup())) {
+                                        if (Objects.nonNull(o) && o instanceof ExamTask) {
+                                            basicMessageService.sendNoticeTaskAuditFlow((ExamTask) o, nextApproverPeopleList, MessageEnum.NOTICE_OF_AUDIT_CREATED);
+                                        }
+                                        //抄送短信
+                                        if (Objects.nonNull(copyUsersList) && copyUsersList.size() > 0) {
+                                            basicMessageService.sendNoticeAuditCopyUser((ExamTask) o, copyUsersList, nextApproverPeopleList.stream().map(s -> s.getRealName()).collect(Collectors.toList()).toString().replaceAll("\\[", "").replaceAll("\\]", "").trim(), MessageEnum.NOTICE_OF_AUDIT_COPY_USER);
+                                        }
+                                    }
+                                }
+                            } else if (Objects.nonNull(nextApproverPeopleList) && (tfFlowLog.getApproveOperation() == FlowApproveOperationEnum.REJECT
+                                    || tfFlowLog.getApproveOperation() == FlowApproveOperationEnum.CANCEL)) {
+                                if (Objects.nonNull(o) && o instanceof ExamTask) {
+                                    basicMessageService.sendNoticeTaskAuditFlow((ExamTask) o, nextApproverPeopleList, MessageEnum.NOTICE_OF_AUDIT_REJECT);
+                                }
+                            }
+                        }
+                    }
+                }
+                break;
+            default:
+//                log.info("default->type:{},ProcessInstanceId:{},ExecutionId:{},ProcessDefinitionId:{}", event.getType(), event.getProcessInstanceId(), event.getExecutionId(), event.getProcessDefinitionId());
+                break;
+        }
+    }
+
+    @Override
+    public boolean isFailOnException() {
+        return false;
+    }
+}

+ 145 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/custom/service/AbstractMultiWorkFlowService.java

@@ -0,0 +1,145 @@
+package com.qmth.distributed.print.business.activiti.custom.service;
+
+import com.qmth.distributed.print.business.bean.flow.CustomFlowDto;
+import com.qmth.distributed.print.business.bean.flow.link.FlowTaskLink;
+import com.qmth.distributed.print.business.bean.flow.link.FlowTaskNode;
+import com.qmth.distributed.print.business.enums.CustomFlowTypeEnum;
+import org.activiti.bpmn.model.MultiInstanceLoopCharacteristics;
+import org.activiti.bpmn.model.UserTask;
+import org.activiti.engine.ProcessEngine;
+import org.activiti.engine.impl.bpmn.behavior.MultiInstanceActivityBehavior;
+import org.activiti.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior;
+import org.activiti.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior;
+import org.activiti.engine.impl.bpmn.behavior.UserTaskActivityBehavior;
+import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
+import org.activiti.engine.impl.el.ExpressionManager;
+import org.springframework.beans.BeanUtils;
+
+import javax.annotation.Resource;
+import java.text.MessageFormat;
+import java.util.StringJoiner;
+
+/**
+ * @Description: 并行/串行业务service
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/2/8
+ */
+public abstract class AbstractMultiWorkFlowService implements DefaultInstanceConvertToMultiInstance {
+
+    @Resource
+    protected ProcessEngine processEngine;
+
+    /**
+     * 创建多实例行为解释器
+     *
+     * @param id
+     * @param isSequential 是否 串行
+     * @return
+     */
+    @Override
+    public MultiInstanceLoopCharacteristics createMultiInstanceLoopCharacteristics(String id, boolean isSequential) {
+        return createMultiInstanceLoopCharacteristics(isSequential, new StringJoiner("")
+                .add(MessageFormat.format("{0}{1}{2}", DEFAULT_ASSIGNEE_LIST_EXP, id, EXP_SUFFIX)).toString(), new StringJoiner("")
+                .add(MessageFormat.format("{0}{1}", ASSIGNEE_USER, id)).toString());
+    }
+
+    /**
+     * 创建多实例行为解释器
+     *
+     * @param isSequential    是否串行
+     * @param assigneeListExp 用户组表达
+     * @param assignee        用户标识
+     * @return
+     */
+    @Override
+    public MultiInstanceLoopCharacteristics createMultiInstanceLoopCharacteristics(boolean isSequential, String assigneeListExp, String assignee) {
+        MultiInstanceLoopCharacteristics multiInstanceLoopCharacteristics = new MultiInstanceLoopCharacteristics();
+        multiInstanceLoopCharacteristics.setSequential(isSequential);
+        multiInstanceLoopCharacteristics.setInputDataItem(assigneeListExp);
+        multiInstanceLoopCharacteristics.setElementVariable(assignee);
+        return multiInstanceLoopCharacteristics;
+    }
+
+    /**
+     * 创建多实例 循环解释器
+     *
+     * @param userTask
+     * @param sequential
+     * @return
+     */
+    @Override
+    public UserTask createMultiInstanceBehavior(UserTask userTask, boolean sequential) {
+        String id = userTask.getId().substring(userTask.getId().length() - 1, userTask.getId().length());
+        MultiInstanceLoopCharacteristics multiInstanceLoopCharacteristics = this.createMultiInstanceLoopCharacteristics(id, sequential);
+        multiInstanceLoopCharacteristics.setCompletionCondition(DefaultInstanceConvertToMultiInstance.REJECT_EXP + id + DefaultInstanceConvertToMultiInstance.REJECT_EXP_SUFFIX);
+        userTask.setAssignee(new StringJoiner("").add(MessageFormat.format("{0}{1}{2}", ASSIGNEE_USER_EXP, id, EXP_SUFFIX)).toString());
+        userTask.setLoopCharacteristics(multiInstanceLoopCharacteristics);
+        return createMultiInstanceBehavior(userTask, sequential, new StringJoiner("").add(MessageFormat.format("{0}{1}{2}", DEFAULT_ASSIGNEE_LIST_EXP, id, EXP_SUFFIX)).toString(), new StringJoiner("").add(MessageFormat.format("{0}{1}", ASSIGNEE_USER, id)).toString());
+    }
+
+    /**
+     * 创建多实例 循环解释器
+     *
+     * @param userTask        流程节点
+     * @param sequential      是否串行
+     * @param assigneeListExp 用户组表达
+     * @param assignee
+     * @return
+     */
+    @Override
+    public UserTask createMultiInstanceBehavior(UserTask userTask, boolean sequential, String assigneeListExp, String assignee) {
+        ProcessEngineConfigurationImpl processEngineConfiguration = (ProcessEngineConfigurationImpl) processEngine.getProcessEngineConfiguration();
+        //创建解释器
+        UserTaskActivityBehavior userTaskActivityBehavior = processEngineConfiguration.getActivityBehaviorFactory().createUserTaskActivityBehavior(userTask);
+        MultiInstanceActivityBehavior behavior = sequential ? new SequentialMultiInstanceBehavior(userTask, userTaskActivityBehavior) : new ParallelMultiInstanceBehavior(userTask, userTaskActivityBehavior);
+        //注入表达式 解释器
+        ExpressionManager expressionManager = processEngineConfiguration.getExpressionManager();
+        //设置表达式变量
+        behavior.setCollectionExpression(expressionManager.createExpression(assigneeListExp));
+        behavior.setCollectionElementVariable(assignee);
+        return userTask;
+    }
+
+    /**
+     * 创建默认用户节点
+     *
+     * @param customFlowDto
+     * @param flowTaskLink
+     * @param id
+     * @return
+     */
+    @Override
+    public CustomFlowDto createDefaultUserTask(CustomFlowDto customFlowDto, FlowTaskLink flowTaskLink, String id) {
+        CustomFlowDto customFlowDefaultDto = new CustomFlowDto();
+        BeanUtils.copyProperties(customFlowDto, customFlowDefaultDto);
+        customFlowDefaultDto.setId(id);
+        customFlowDefaultDto.setSetup(1);
+        customFlowDefaultDto.setType(CustomFlowTypeEnum.PROCESS);
+        customFlowDefaultDto.setContent(DEFAULT_USER_TASK_NAME);
+        customFlowDefaultDto.setH(customFlowDefaultDto.getH() + 30D);
+        customFlowDefaultDto.setY(customFlowDefaultDto.getY() + 50D);
+        customFlowDefaultDto.setFlowTaskId(CustomFlowTypeEnum.USER_TASK.getId() + id);
+        FlowTaskNode nodeDefault = new FlowTaskNode(customFlowDefaultDto);
+        flowTaskLink.add(nodeDefault);
+        return customFlowDefaultDto;
+    }
+
+//    /**
+//     * 更新atomicInteger值
+//     *
+//     * @param atomicInteger
+//     * @return
+//     */
+//    @Override
+//    public int getAndIncrement(AtomicInteger atomicInteger) {
+//        int value = 1;
+//        if (atomicInteger.get() >= Integer.MAX_VALUE) {
+//            atomicInteger.compareAndSet(atomicInteger.get(), value);
+//        } else {
+//            value = atomicInteger.getAndIncrement();
+//        }
+//        return value;
+//    }
+}

+ 77 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/custom/service/DefaultInstanceConvertToMultiInstance.java

@@ -0,0 +1,77 @@
+package com.qmth.distributed.print.business.activiti.custom.service;
+
+import com.qmth.teachcloud.common.enums.FlowApproveOperationEnum;
+import org.activiti.bpmn.model.MultiInstanceLoopCharacteristics;
+import org.activiti.bpmn.model.UserTask;
+
+/**
+ * @Description: 创建并行/串行业务
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/2/8
+ */
+public interface DefaultInstanceConvertToMultiInstance extends MultiWorkFlow {
+
+    public static final String EXP_PREFIX = "${";
+    public static final String EXP_SUFFIX = "}";
+    public static final String EXP_EQUAL = "==";
+    public static final String ASSIGNEE_USER = "assignee";
+    public static final String DEFAULT_ASSIGNEE_LIST = "assigneeList";
+    public static final String DEFAULT_ASSIGNEE_LIST_EXP = EXP_PREFIX + DEFAULT_ASSIGNEE_LIST;
+    public static final String ASSIGNEE_USER_EXP = EXP_PREFIX + ASSIGNEE_USER;
+    public static final String APPROVE_ID_EXP = EXP_PREFIX + "approveId" + EXP_SUFFIX;
+    public static final String DEFAULT_USER_TASK = "_default";
+    public static final String DEFAULT_USER_TASK_NAME = "提交申请";
+    public static final String USER_TASK_APPROVE_NAME = "审核人";
+    public static final String FLOW_BPMN_MODEL_NAME = "-dynamic-model.bpmn";
+    public static final String FLOW_BPMN_PROCESS_NAME = "-multiple-process.bpmn";
+    public static final String FLOW_BPMN_PNG_NAME = "-multiple-process-diagram.png";
+    public static final String FLOW_BPMN_DEPLOYMENT_NAME = "-multiple process deployment";
+    public static final String BPMN_NAME = "bpmn";
+    public static final String GATEWAY_NAME = "gateway";
+    public static final String SEQUENCE_NAME = "sequence";
+    public static final String NR_OF_COMPLETED_INSTANCES = "nrOfCompletedInstances";
+    public static final String NR_OF_INSTANCES = "nrOfInstances";
+    public static final String REJECT_EXP = EXP_PREFIX + NR_OF_COMPLETED_INSTANCES + "/" + NR_OF_INSTANCES + EXP_EQUAL + 1 + " || " + FlowApproveOperationEnum.REJECT.getId();
+    public static final String REJECT_EXP_SUFFIX = EXP_EQUAL + 1 + EXP_SUFFIX;
+
+    /**
+     * 创建多实例行为解释器
+     *
+     * @param userTask
+     * @param sequential
+     * @return
+     */
+    UserTask createMultiInstanceBehavior(UserTask userTask, boolean sequential);
+
+    /**
+     * 创建多实例行为解释器
+     *
+     * @param userTask        流程节点
+     * @param sequential      是否串行
+     * @param assigneeListExp 用户组表达
+     * @param assigneeExp     用户标识
+     * @return
+     */
+    UserTask createMultiInstanceBehavior(UserTask userTask, boolean sequential, String assigneeListExp, String assigneeExp);
+
+    /**
+     * 创建多实例循环解释器
+     *
+     * @param isSequential    是否串行
+     * @param assigneeListExp 用户组表达
+     * @param assignee        用户标识
+     * @return
+     */
+    MultiInstanceLoopCharacteristics createMultiInstanceLoopCharacteristics(boolean isSequential, String assigneeListExp, String assignee);
+
+    /**
+     * 创建多实例循环解释器
+     *
+     * @param id
+     * @param isSequential 是否 串行
+     * @return
+     */
+    MultiInstanceLoopCharacteristics createMultiInstanceLoopCharacteristics(String id, boolean isSequential);
+}

+ 41 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/custom/service/MultiWorkFlow.java

@@ -0,0 +1,41 @@
+package com.qmth.distributed.print.business.activiti.custom.service;
+
+import com.qmth.distributed.print.business.bean.flow.CustomFlowDto;
+import com.qmth.distributed.print.business.bean.flow.link.FlowTaskLink;
+import org.activiti.bpmn.model.UserTask;
+
+/**
+ * @Description: 并行/串行业务
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/2/8
+ */
+public interface MultiWorkFlow {
+
+    /**
+     * 创建并行/串行会签节点
+     *
+     * @param userTask
+     * @param sequential
+     */
+    UserTask createMultiInstanceLoopCharacteristics(UserTask userTask, boolean sequential);
+
+    /**
+     * 创建默认用户节点
+     *
+     * @param customFlowDto
+     * @param flowTaskLink
+     * @param id
+     * @return
+     */
+    CustomFlowDto createDefaultUserTask(CustomFlowDto customFlowDto, FlowTaskLink flowTaskLink, String id);
+
+//    /**
+//     * 更新atomicInteger值
+//     *
+//     * @param atomicInteger
+//     * @return
+//     */
+//    int getAndIncrement(AtomicInteger atomicInteger);
+}

+ 28 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/custom/service/impl/MultiWorkFlowService.java

@@ -0,0 +1,28 @@
+package com.qmth.distributed.print.business.activiti.custom.service.impl;
+
+import com.qmth.distributed.print.business.activiti.custom.service.AbstractMultiWorkFlowService;
+import org.activiti.bpmn.model.UserTask;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Description: 并行/串行业务impl
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/2/8
+ */
+@Service
+public class MultiWorkFlowService extends AbstractMultiWorkFlowService {
+
+    /**
+     * 创建多实例行为解释器
+     *
+     * @param userTask
+     * @param sequential
+     * @return
+     */
+    @Override
+    public UserTask createMultiInstanceLoopCharacteristics(UserTask userTask, boolean sequential) {
+        return createMultiInstanceBehavior(userTask, sequential);
+    }
+}

BIN
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/.DS_Store


+ 23 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/BasicExamDto.java

@@ -0,0 +1,23 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.teachcloud.common.entity.BasicExam;
+import com.qmth.teachcloud.common.entity.BasicPrintConfig;
+import com.qmth.teachcloud.common.entity.SysOrg;
+
+import java.util.List;
+
+/**
+ * @Date: 2022/2/11.
+ */
+public class BasicExamDto extends BasicExam {
+
+    private String semesterName;
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+}

+ 32 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/BasicPrintConfigDto.java

@@ -0,0 +1,32 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.teachcloud.common.entity.BasicPrintConfig;
+import com.qmth.teachcloud.common.entity.SysOrg;
+
+import java.util.List;
+
+/**
+ * @Date: 2022/2/11.
+ */
+public class BasicPrintConfigDto extends BasicPrintConfig {
+
+    private String orgNames;
+
+    private List<SysOrg> orgs;
+
+    public String getOrgNames() {
+        return orgNames;
+    }
+
+    public void setOrgNames(String orgNames) {
+        this.orgNames = orgNames;
+    }
+
+    public List<SysOrg> getOrgs() {
+        return orgs;
+    }
+
+    public void setOrgs(List<SysOrg> orgs) {
+        this.orgs = orgs;
+    }
+}

+ 143 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/CardCustDto.java

@@ -0,0 +1,143 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+/**
+ * @Date: 2021/3/29.
+ */
+public class CardCustDto {
+
+    private String examTaskId;
+    private String cardId;
+    private String cardRuleId;
+    private String courseCode;
+    private String courseName;
+    private String status;
+    private String paperNumber;
+    private String schoolId;
+    private String schoolName;
+    private String orgId;
+    private String orgName;
+    private String createId;
+    private Long createTime;
+    private String createName;
+    private Long updateTime;
+
+    public String getExamTaskId() {
+        return examTaskId;
+    }
+
+    public void setExamTaskId(String examTaskId) {
+        this.examTaskId = examTaskId;
+    }
+
+    public String getCardId() {
+        return cardId;
+    }
+
+    public void setCardId(String cardId) {
+        this.cardId = cardId;
+    }
+
+    public String getCardRuleId() {
+        return cardRuleId;
+    }
+
+    public void setCardRuleId(String cardRuleId) {
+        this.cardRuleId = cardRuleId;
+    }
+
+    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 getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(String schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public String getSchoolName() {
+        return schoolName;
+    }
+
+    public void setSchoolName(String schoolName) {
+        this.schoolName = schoolName;
+    }
+
+    public String getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(String orgId) {
+        this.orgId = orgId;
+    }
+
+    public String getOrgName() {
+        return orgName;
+    }
+
+    public void setOrgName(String orgName) {
+        this.orgName = orgName;
+    }
+
+    public String getCreateId() {
+        return createId;
+    }
+
+    public void setCreateId(String createId) {
+        this.createId = createId;
+    }
+
+    public String getCreateName() {
+        return createName;
+    }
+
+    public void setCreateName(String createName) {
+        this.createName = createName;
+    }
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+
+    public Long getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Long updateTime) {
+        this.updateTime = updateTime;
+    }
+}

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

@@ -0,0 +1,80 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+/**
+ * @Date: 2021/3/29.
+ */
+public class CardDetailDto {
+
+    private String cardId;
+    private String title;
+    private String createMethod;
+    private String makeMethod;
+    private String content;
+    private String htmlContent;
+    private String type;
+    private String paperType;
+
+    public String getCardId() {
+        return cardId;
+    }
+
+    public void setCardId(String cardId) {
+        this.cardId = cardId;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getCreateMethod() {
+        return createMethod;
+    }
+
+    public void setCreateMethod(String createMethod) {
+        this.createMethod = createMethod;
+    }
+
+    public String getMakeMethod() {
+        return makeMethod;
+    }
+
+    public void setMakeMethod(String makeMethod) {
+        this.makeMethod = makeMethod;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getHtmlContent() {
+        return htmlContent;
+    }
+
+    public void setHtmlContent(String htmlContent) {
+        this.htmlContent = htmlContent;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+}

+ 194 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/CardRuleDto.java

@@ -0,0 +1,194 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.distributed.print.business.enums.ExamNumberStyleEnum;
+import com.qmth.distributed.print.business.enums.PaperTypeEnum;
+import com.qmth.teachcloud.common.entity.SysOrg;
+
+import java.util.List;
+
+/**
+ * @Date: 2021/3/29.
+ */
+public class CardRuleDto {
+
+    private String id;
+    private String schoolId;
+    private String name;
+    private ExamNumberStyleEnum examNumberStyle;
+    private PaperTypeEnum paperType;
+    private Boolean examAbsent;
+    private Boolean writeSign;
+    private Boolean discipline;
+    private String requiredFields;
+    private String extendFields;
+    private String titleRule;
+    private String attention;
+    private String objectiveAttention;
+    private String subjectiveAttention;
+    private Boolean enable;
+    private String remark;
+    private String createId;
+    private Long createTime;
+    private List<SysOrg> orgs;
+    private Integer fillNumber;
+
+    public Integer getFillNumber() {
+        return fillNumber;
+    }
+
+    public void setFillNumber(Integer fillNumber) {
+        this.fillNumber = fillNumber;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(String schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public ExamNumberStyleEnum getExamNumberStyle() {
+        return examNumberStyle;
+    }
+
+    public void setExamNumberStyle(ExamNumberStyleEnum examNumberStyle) {
+        this.examNumberStyle = examNumberStyle;
+    }
+
+    public PaperTypeEnum getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(PaperTypeEnum paperType) {
+        this.paperType = paperType;
+    }
+
+    public Boolean getExamAbsent() {
+        return examAbsent;
+    }
+
+    public void setExamAbsent(Boolean examAbsent) {
+        this.examAbsent = examAbsent;
+    }
+
+    public Boolean getWriteSign() {
+        return writeSign;
+    }
+
+    public void setWriteSign(Boolean writeSign) {
+        this.writeSign = writeSign;
+    }
+
+    public Boolean getDiscipline() {
+        return discipline;
+    }
+
+    public void setDiscipline(Boolean discipline) {
+        this.discipline = discipline;
+    }
+
+    public String getRequiredFields() {
+        return requiredFields;
+    }
+
+    public void setRequiredFields(String requiredFields) {
+        this.requiredFields = requiredFields;
+    }
+
+    public String getExtendFields() {
+        return extendFields;
+    }
+
+    public void setExtendFields(String extendFields) {
+        this.extendFields = extendFields;
+    }
+
+    public String getTitleRule() {
+        return titleRule;
+    }
+
+    public void setTitleRule(String titleRule) {
+        this.titleRule = titleRule;
+    }
+
+    public String getAttention() {
+        return attention;
+    }
+
+    public void setAttention(String attention) {
+        this.attention = attention;
+    }
+
+    public String getObjectiveAttention() {
+        return objectiveAttention;
+    }
+
+    public void setObjectiveAttention(String objectiveAttention) {
+        this.objectiveAttention = objectiveAttention;
+    }
+
+    public String getSubjectiveAttention() {
+        return subjectiveAttention;
+    }
+
+    public void setSubjectiveAttention(String subjectiveAttention) {
+        this.subjectiveAttention = subjectiveAttention;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getCreateId() {
+        return createId;
+    }
+
+    public void setCreateId(String createId) {
+        this.createId = createId;
+    }
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+
+    public List<SysOrg> getOrgs() {
+        return orgs;
+    }
+
+    public void setOrgs(List<SysOrg> orgs) {
+        this.orgs = orgs;
+    }
+}

+ 103 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClazzContentDto.java

@@ -0,0 +1,103 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.distributed.print.business.enums.ClazzContentEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 命题计划统计表班级内容详细细心
+ * @Author: CaoZixuan
+ * @Date: 2022-04-26
+ */
+public class ClazzContentDto {
+    @ApiModelProperty(value = "班级id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long clazzId;
+
+    @ApiModelProperty(value = "班级名称")
+    private String clazzName;
+
+    @ApiModelProperty(value = "任课老师名称")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examPrintPlanId;
+
+    @ApiModelProperty(value = "任课老师名称")
+    private String examPrintPlanName;
+
+    @ApiModelProperty(value = "任课老师名称")
+    private String paperNumber;
+
+    @ApiModelProperty(value = "任课老师名称")
+    private ClazzContentEnum status;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "学生数量")
+    private String printCount;
+
+    public Long getClazzId() {
+        return clazzId;
+    }
+
+    public void setClazzId(Long clazzId) {
+        this.clazzId = clazzId;
+    }
+
+    public String getClazzName() {
+        return clazzName;
+    }
+
+    public void setClazzName(String clazzName) {
+        this.clazzName = clazzName;
+    }
+
+    public Long getExamPrintPlanId() {
+        return examPrintPlanId;
+    }
+
+    public void setExamPrintPlanId(Long examPrintPlanId) {
+        this.examPrintPlanId = examPrintPlanId;
+    }
+
+    public String getExamPrintPlanName() {
+        return examPrintPlanName;
+    }
+
+    public void setExamPrintPlanName(String examPrintPlanName) {
+        this.examPrintPlanName = examPrintPlanName;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public ClazzContentEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(ClazzContentEnum status) {
+        this.status = status;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getPrintCount() {
+        return printCount;
+    }
+
+    public void setPrintCount(String printCount) {
+        this.printCount = printCount;
+    }
+}

+ 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;
+    }
+}

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

@@ -0,0 +1,125 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+/**
+ * @Date: 2021/3/31.
+ */
+public class ClientExamTaskDto {
+
+    private String examTaskId;
+    private String schoolId;
+    private String printPlanId;
+    private String printPlanName;
+    private String paperNumber;
+    private String courseCode;
+    private String courseName;
+    private String specialty;
+    private String userId;
+    private String userName;
+    private Boolean isTry;
+    private Boolean isPass;
+    private Long tryTime;
+
+    public String getExamTaskId() {
+        return examTaskId;
+    }
+
+    public void setExamTaskId(String examTaskId) {
+        this.examTaskId = examTaskId;
+    }
+
+    public String getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(String schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public String getPrintPlanId() {
+        return printPlanId;
+    }
+
+    public void setPrintPlanId(String printPlanId) {
+        this.printPlanId = printPlanId;
+    }
+
+    public String getPrintPlanName() {
+        return printPlanName;
+    }
+
+    public void setPrintPlanName(String printPlanName) {
+        this.printPlanName = printPlanName;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    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 getSpecialty() {
+        return specialty;
+    }
+
+    public void setSpecialty(String specialty) {
+        this.specialty = specialty;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public Boolean getTry() {
+        return isTry;
+    }
+
+    public void setTry(Boolean aTry) {
+        isTry = aTry;
+    }
+
+    public Boolean getPass() {
+        return isPass;
+    }
+
+    public void setPass(Boolean pass) {
+        isPass = pass;
+    }
+
+    public Long getTryTime() {
+        return tryTime;
+    }
+
+    public void setTryTime(Long tryTime) {
+        this.tryTime = tryTime;
+    }
+}

+ 62 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientPrintBackupDataDto.java

@@ -0,0 +1,62 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+/**
+ * @Date: 2021/3/31.
+ */
+public class ClientPrintBackupDataDto {
+
+    private String courseCode;
+    private String courseName;
+    private String paperNumber;
+    private String paperType;
+    private String md5;
+    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 getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getMd5() {
+        return md5;
+    }
+
+    public void setMd5(String md5) {
+        this.md5 = md5;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+}

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

@@ -0,0 +1,80 @@
+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 md5;
+    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 getMd5() {
+        return md5;
+    }
+
+    public void setMd5(String md5) {
+        this.md5 = md5;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+}

+ 134 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientPrintStatisticsDto.java

@@ -0,0 +1,134 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+/**
+ * @Date: 2021/3/29.
+ */
+public class ClientPrintStatisticsDto {
+
+    private String printPlanId;
+    private String printPlanName;
+    private Long examStartTime;
+    private Long examEndTime;
+    private String courseNameCode;
+    private String paperNumber;
+    private String examPlace;
+    private Integer packageCount;
+    private Integer totalSubjects;
+    private Integer totalSubjectsLeft;
+    private Integer paperPagesLeft;
+    private Integer cardPagesLeft;
+    private Integer pagesA4Left;
+    private Integer progress;
+
+    public String getPrintPlanId() {
+        return printPlanId;
+    }
+
+    public void setPrintPlanId(String printPlanId) {
+        this.printPlanId = printPlanId;
+    }
+
+    public String getPrintPlanName() {
+        return printPlanName;
+    }
+
+    public void setPrintPlanName(String printPlanName) {
+        this.printPlanName = printPlanName;
+    }
+
+    public Long getExamStartTime() {
+        return examStartTime;
+    }
+
+    public void setExamStartTime(Long examStartTime) {
+        this.examStartTime = examStartTime;
+    }
+
+    public Long getExamEndTime() {
+        return examEndTime;
+    }
+
+    public void setExamEndTime(Long examEndTime) {
+        this.examEndTime = examEndTime;
+    }
+
+    public String getCourseNameCode() {
+        return courseNameCode;
+    }
+
+    public void setCourseNameCode(String courseNameCode) {
+        this.courseNameCode = courseNameCode;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getExamPlace() {
+        return examPlace;
+    }
+
+    public void setExamPlace(String examPlace) {
+        this.examPlace = examPlace;
+    }
+
+    public Integer getPackageCount() {
+        return packageCount;
+    }
+
+    public void setPackageCount(Integer packageCount) {
+        this.packageCount = packageCount;
+    }
+
+    public Integer getTotalSubjects() {
+        return totalSubjects;
+    }
+
+    public void setTotalSubjects(Integer totalSubjects) {
+        this.totalSubjects = totalSubjects;
+    }
+
+    public Integer getTotalSubjectsLeft() {
+        return totalSubjectsLeft;
+    }
+
+    public void setTotalSubjectsLeft(Integer totalSubjectsLeft) {
+        this.totalSubjectsLeft = totalSubjectsLeft;
+    }
+
+    public Integer getPaperPagesLeft() {
+        return paperPagesLeft;
+    }
+
+    public void setPaperPagesLeft(Integer paperPagesLeft) {
+        this.paperPagesLeft = paperPagesLeft;
+    }
+
+    public Integer getCardPagesLeft() {
+        return cardPagesLeft;
+    }
+
+    public void setCardPagesLeft(Integer cardPagesLeft) {
+        this.cardPagesLeft = cardPagesLeft;
+    }
+
+    public Integer getPagesA4Left() {
+        return pagesA4Left;
+    }
+
+    public void setPagesA4Left(Integer pagesA4Left) {
+        this.pagesA4Left = pagesA4Left;
+    }
+
+    public Integer getProgress() {
+        return progress;
+    }
+
+    public void setProgress(Integer progress) {
+        this.progress = progress;
+    }
+}

+ 99 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientPrintStatisticsTotalDto.java

@@ -0,0 +1,99 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+/**
+ * @Date: 2021/3/29.
+ */
+public class ClientPrintStatisticsTotalDto {
+
+    private Integer totalSubjects;
+    private Integer packageCount;
+    private Integer paperCount;
+    private String paperNumberAndType;
+    private Integer paperPages;
+    private Integer cardPages;
+    private Integer pagesA4;
+    private Integer paperPagesLeft;
+    private Integer cardPagesLeft;
+    private Integer pagesA4Left;
+
+    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 String getPaperNumberAndType() {
+        return paperNumberAndType;
+    }
+
+    public void setPaperNumberAndType(String paperNumberAndType) {
+        this.paperNumberAndType = paperNumberAndType;
+    }
+
+    public Integer getPaperPages() {
+        return paperPages;
+    }
+
+    public void setPaperPages(Integer paperPages) {
+        this.paperPages = paperPages;
+    }
+
+    public Integer getCardPages() {
+        return cardPages;
+    }
+
+    public void setCardPages(Integer cardPages) {
+        this.cardPages = cardPages;
+    }
+
+    public Integer getPagesA4() {
+        return pagesA4;
+    }
+
+    public void setPagesA4(Integer pagesA4) {
+        this.pagesA4 = pagesA4;
+    }
+
+    public Integer getPaperPagesLeft() {
+        return paperPagesLeft;
+    }
+
+    public void setPaperPagesLeft(Integer paperPagesLeft) {
+        this.paperPagesLeft = paperPagesLeft;
+    }
+
+    public Integer getCardPagesLeft() {
+        return cardPagesLeft;
+    }
+
+    public void setCardPagesLeft(Integer cardPagesLeft) {
+        this.cardPagesLeft = cardPagesLeft;
+    }
+
+    public Integer getPagesA4Left() {
+        return pagesA4Left;
+    }
+
+    public void setPagesA4Left(Integer pagesA4Left) {
+        this.pagesA4Left = pagesA4Left;
+    }
+
+}

+ 425 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClientPrintTaskDto.java

@@ -0,0 +1,425 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+
+import com.qmth.teachcloud.common.annotation.ExcelProperty;
+
+/**
+ * @Date: 2021/3/29.
+ */
+public class ClientPrintTaskDto {
+
+    private String examDetailId;
+    private String printPlanId;
+    @ExcelProperty(name = "印刷计划", width = 30, index = 2)
+    private String printPlanName;
+    private Long examStartTime;
+    @ExcelProperty(name = "考试开始日期", width = 30, index = 3)
+    private String examStartTimeStr;
+    private Long examEndTime;
+    @ExcelProperty(name = "考试结束日期", width = 30, index = 4)
+    private String examEndTimeStr;
+    @ExcelProperty(name = "课程(代码)", width = 30, index = 5)
+    private String courseNameCode;
+    @ExcelProperty(name = "试卷编号", width = 30, index = 6)
+    private String paperNumber;
+    @ExcelProperty(name = "考点", width = 30, index = 7)
+    private String examPlace;
+    @ExcelProperty(name = "考场", width = 30, index = 8)
+    private String examRoom;
+    private String classId;
+    private String className;
+    @ExcelProperty(name = "单科次A3(页)", width = 30, index = 9)
+    private String singlePagesA3;
+    private String singlePagesA4;
+    private Integer paperPages;
+    private Integer cardPages;
+    private Integer pagesA4;
+    @ExcelProperty(name = "科次", width = 30, index = 10)
+    private Integer totalSubjects;
+    private Integer totalPrint;
+    private String status;
+    @ExcelProperty(name = "印刷状态", width = 30, index = 11)
+    private String statusStr;
+    private Boolean validate;
+    @ExcelProperty(name = "是否校验", width = 30, index = 13)
+    private String validateStr;
+    private Boolean download;
+    @ExcelProperty(name = "是否缓存", width = 30, index = 12)
+    private String downloadStr;
+    private Boolean isTry;
+    private Boolean isPass;
+    @ExcelProperty(name = "印刷员", width = 30, index = 14)
+    private String printUser;
+    private Long printStartTime;
+    @ExcelProperty(name = "印刷开始时间", width = 30, index = 15)
+    private String printStartTimeStr;
+    private Long printEndTime;
+    @ExcelProperty(name = "印刷完成时间", width = 30, index = 16)
+    private String printEndTimeStr;
+    @ExcelProperty(name = "卷袋编号", width = 30, index = 1)
+    private String packageCode;
+    private Long createId;
+    private Long createTime;
+
+    private String printContent;
+    private String variableContent;
+    private String ordinaryContent;
+
+    private Boolean incluedPaper;
+    private Boolean incluedCard;
+    private Boolean incluedSign;
+    private Boolean incluedPackage;
+    private Boolean incluedCheckin;
+
+    public String getExamDetailId() {
+        return examDetailId;
+    }
+
+    public void setExamDetailId(String examDetailId) {
+        this.examDetailId = examDetailId;
+    }
+
+    public String getPrintPlanId() {
+        return printPlanId;
+    }
+
+    public void setPrintPlanId(String printPlanId) {
+        this.printPlanId = printPlanId;
+    }
+
+    public String getPrintPlanName() {
+        return printPlanName;
+    }
+
+    public void setPrintPlanName(String printPlanName) {
+        this.printPlanName = printPlanName;
+    }
+
+    public Long getExamStartTime() {
+        return examStartTime;
+    }
+
+    public void setExamStartTime(Long examStartTime) {
+        this.examStartTime = examStartTime;
+    }
+
+    public String getExamStartTimeStr() {
+        return examStartTimeStr;
+    }
+
+    public void setExamStartTimeStr(String examStartTimeStr) {
+        this.examStartTimeStr = examStartTimeStr;
+    }
+
+    public Long getExamEndTime() {
+        return examEndTime;
+    }
+
+    public void setExamEndTime(Long examEndTime) {
+        this.examEndTime = examEndTime;
+    }
+
+    public String getExamEndTimeStr() {
+        return examEndTimeStr;
+    }
+
+    public void setExamEndTimeStr(String examEndTimeStr) {
+        this.examEndTimeStr = examEndTimeStr;
+    }
+
+    public String getCourseNameCode() {
+        return courseNameCode;
+    }
+
+    public void setCourseNameCode(String courseNameCode) {
+        this.courseNameCode = courseNameCode;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getExamPlace() {
+        return examPlace;
+    }
+
+    public void setExamPlace(String examPlace) {
+        this.examPlace = examPlace;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+
+    public String getClassId() {
+        return classId;
+    }
+
+    public void setClassId(String classId) {
+        this.classId = classId;
+    }
+
+    public String getClassName() {
+        return className;
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+
+    public String getSinglePagesA3() {
+        return singlePagesA3;
+    }
+
+    public void setSinglePagesA3(String singlePagesA3) {
+        this.singlePagesA3 = singlePagesA3;
+    }
+
+    public String getSinglePagesA4() {
+        return singlePagesA4;
+    }
+
+    public void setSinglePagesA4(String singlePagesA4) {
+        this.singlePagesA4 = singlePagesA4;
+    }
+
+    public Integer getPaperPages() {
+        return paperPages;
+    }
+
+    public void setPaperPages(Integer paperPages) {
+        this.paperPages = paperPages;
+    }
+
+    public Integer getCardPages() {
+        return cardPages;
+    }
+
+    public void setCardPages(Integer cardPages) {
+        this.cardPages = cardPages;
+    }
+
+    public Integer getPagesA4() {
+        return pagesA4;
+    }
+
+    public void setPagesA4(Integer pagesA4) {
+        this.pagesA4 = pagesA4;
+    }
+
+    public Integer getTotalSubjects() {
+        return totalSubjects;
+    }
+
+    public void setTotalSubjects(Integer totalSubjects) {
+        this.totalSubjects = totalSubjects;
+    }
+
+    public Integer getTotalPrint() {
+        return totalPrint;
+    }
+
+    public void setTotalPrint(Integer totalPrint) {
+        this.totalPrint = totalPrint;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getStatusStr() {
+        return statusStr;
+    }
+
+    public void setStatusStr(String statusStr) {
+        this.statusStr = statusStr;
+    }
+
+    public Boolean getValidate() {
+        return validate;
+    }
+
+    public void setValidate(Boolean validate) {
+        this.validate = validate;
+    }
+
+    public String getValidateStr() {
+        return validateStr;
+    }
+
+    public void setValidateStr(String validateStr) {
+        this.validateStr = validateStr;
+    }
+
+    public Boolean getDownload() {
+        return download;
+    }
+
+    public void setDownload(Boolean download) {
+        this.download = download;
+    }
+
+    public String getDownloadStr() {
+        return downloadStr;
+    }
+
+    public void setDownloadStr(String downloadStr) {
+        this.downloadStr = downloadStr;
+    }
+
+    public Boolean getTry() {
+        return isTry;
+    }
+
+    public void setTry(Boolean aTry) {
+        isTry = aTry;
+    }
+
+    public Boolean getPass() {
+        return isPass;
+    }
+
+    public void setPass(Boolean pass) {
+        isPass = pass;
+    }
+
+    public String getPrintUser() {
+        return printUser;
+    }
+
+    public void setPrintUser(String printUser) {
+        this.printUser = printUser;
+    }
+
+    public Long getPrintStartTime() {
+        return printStartTime;
+    }
+
+    public void setPrintStartTime(Long printStartTime) {
+        this.printStartTime = printStartTime;
+    }
+
+    public String getPrintStartTimeStr() {
+        return printStartTimeStr;
+    }
+
+    public void setPrintStartTimeStr(String printStartTimeStr) {
+        this.printStartTimeStr = printStartTimeStr;
+    }
+
+    public Long getPrintEndTime() {
+        return printEndTime;
+    }
+
+    public void setPrintEndTime(Long printEndTime) {
+        this.printEndTime = printEndTime;
+    }
+
+    public String getPrintEndTimeStr() {
+        return printEndTimeStr;
+    }
+
+    public void setPrintEndTimeStr(String printEndTimeStr) {
+        this.printEndTimeStr = printEndTimeStr;
+    }
+
+    public String getPackageCode() {
+        return packageCode;
+    }
+
+    public void setPackageCode(String packageCode) {
+        this.packageCode = packageCode;
+    }
+
+    public Long getCreateId() {
+        return createId;
+    }
+
+    public void setCreateId(Long createId) {
+        this.createId = createId;
+    }
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getPrintContent() {
+        return printContent;
+    }
+
+    public void setPrintContent(String printContent) {
+        this.printContent = printContent;
+    }
+
+    public String getVariableContent() {
+        return variableContent;
+    }
+
+    public void setVariableContent(String variableContent) {
+        this.variableContent = variableContent;
+    }
+
+    public String getOrdinaryContent() {
+        return ordinaryContent;
+    }
+
+    public void setOrdinaryContent(String ordinaryContent) {
+        this.ordinaryContent = ordinaryContent;
+    }
+
+    public Boolean getIncluedPaper() {
+        return incluedPaper;
+    }
+
+    public void setIncluedPaper(Boolean incluedPaper) {
+        this.incluedPaper = incluedPaper;
+    }
+
+    public Boolean getIncluedCard() {
+        return incluedCard;
+    }
+
+    public void setIncluedCard(Boolean incluedCard) {
+        this.incluedCard = incluedCard;
+    }
+
+    public Boolean getIncluedSign() {
+        return incluedSign;
+    }
+
+    public void setIncluedSign(Boolean incluedSign) {
+        this.incluedSign = incluedSign;
+    }
+
+    public Boolean getIncluedPackage() {
+        return incluedPackage;
+    }
+
+    public void setIncluedPackage(Boolean incluedPackage) {
+        this.incluedPackage = incluedPackage;
+    }
+
+    public Boolean getIncluedCheckin() {
+        return incluedCheckin;
+    }
+
+    public void setIncluedCheckin(Boolean incluedCheckin) {
+        this.incluedCheckin = incluedCheckin;
+    }
+}

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

@@ -0,0 +1,107 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+/**
+ * @Date: 2021/3/29.
+ */
+public class ClientPrintTaskTotalDto {
+
+    private Integer totalSubjects;
+    private Integer packageCount;
+    private Integer paperPages;
+    private Integer cardPages;
+    private Integer pagesA4;
+    private Integer paperPagesLeft;
+    private Integer cardPagesLeft;
+    private Integer pagesA4Left;
+    private Integer hostPaperPages;
+    private Integer hostCardPages;
+    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 getPaperPages() {
+        return paperPages;
+    }
+
+    public void setPaperPages(Integer paperPages) {
+        this.paperPages = paperPages;
+    }
+
+    public Integer getCardPages() {
+        return cardPages;
+    }
+
+    public void setCardPages(Integer cardPages) {
+        this.cardPages = cardPages;
+    }
+
+    public Integer getPagesA4() {
+        return pagesA4;
+    }
+
+    public void setPagesA4(Integer pagesA4) {
+        this.pagesA4 = pagesA4;
+    }
+
+    public Integer getPaperPagesLeft() {
+        return paperPagesLeft;
+    }
+
+    public void setPaperPagesLeft(Integer paperPagesLeft) {
+        this.paperPagesLeft = paperPagesLeft;
+    }
+
+    public Integer getCardPagesLeft() {
+        return cardPagesLeft;
+    }
+
+    public void setCardPagesLeft(Integer cardPagesLeft) {
+        this.cardPagesLeft = cardPagesLeft;
+    }
+
+    public Integer getPagesA4Left() {
+        return pagesA4Left;
+    }
+
+    public void setPagesA4Left(Integer pagesA4Left) {
+        this.pagesA4Left = pagesA4Left;
+    }
+
+    public Integer getHostPaperPages() {
+        return hostPaperPages;
+    }
+
+    public void setHostPaperPages(Integer hostPaperPages) {
+        this.hostPaperPages = hostPaperPages;
+    }
+
+    public Integer getHostCardPages() {
+        return hostCardPages;
+    }
+
+    public void setHostCardPages(Integer hostCardPages) {
+        this.hostCardPages = hostCardPages;
+    }
+
+    public Integer getHostPagesA4() {
+        return hostPagesA4;
+    }
+
+    public void setHostPagesA4(Integer hostPagesA4) {
+        this.hostPagesA4 = hostPagesA4;
+    }
+}

+ 96 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamCardDto.java

@@ -0,0 +1,96 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.distributed.print.business.enums.CardStatusEnum;
+import com.qmth.distributed.print.business.enums.CardTypeEnum;
+import com.qmth.distributed.print.business.enums.MakeMethodEnum;
+import com.qmth.teachcloud.common.enums.CardCreateMethodEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 题卡dto对象
+ * @Author: CaoZixuan
+ * @Date: 2022-09-01
+ */
+public class ExamCardDto implements Serializable {
+    @ApiModelProperty(value = "题卡id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long cardId;
+
+    @ApiModelProperty(value = "标题")
+    private String title;
+
+    @ApiModelProperty(value = "题卡制作方式:SELECT-选择已有题卡,SELF-自助创建,CUST-客户制卡")
+    private MakeMethodEnum makeMethod;
+
+    @ApiModelProperty(value = "STAGE-暂存,SUBMIT-提交")
+    private CardStatusEnum status;
+
+    @ApiModelProperty(value = "题卡类型:GENERIC-通卡,CUSTOM-自定义")
+    private CardTypeEnum type;
+
+    @ApiModelProperty(value = "通卡创建方式(UPLOAD-上传,CUSTOMIZE-自定义)")
+    private CardCreateMethodEnum createMethod;
+
+    @ApiModelProperty(value = "试卷编号")
+    private String paperType;
+
+    public Long getCardId() {
+        return cardId;
+    }
+
+    public void setCardId(Long cardId) {
+        this.cardId = cardId;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public MakeMethodEnum getMakeMethod() {
+        return makeMethod;
+    }
+
+    public void setMakeMethod(MakeMethodEnum makeMethod) {
+        this.makeMethod = makeMethod;
+    }
+
+    public CardStatusEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(CardStatusEnum status) {
+        this.status = status;
+    }
+
+    public CardTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(CardTypeEnum type) {
+        this.type = type;
+    }
+
+    public CardCreateMethodEnum getCreateMethod() {
+        return createMethod;
+    }
+
+    public void setCreateMethod(CardCreateMethodEnum createMethod) {
+        this.createMethod = createMethod;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+}

+ 101 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamPaperInfoDto.java

@@ -0,0 +1,101 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 考试试卷题卡信息对象
+ * @Author: CaoZixuan
+ * @Date: 2022-09-01
+ */
+public class ExamPaperInfoDto {
+
+    @ApiModelProperty("卷型")
+    private String name;
+
+    @ApiModelProperty("附件id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long attachmentId;
+
+    @ApiModelProperty("试卷文件名称")
+    private String filename;
+
+    @ApiModelProperty("试卷页数")
+    private Integer pages;
+
+    private Boolean canDelete;
+
+    private Boolean isExposed;
+
+    @ApiModelProperty("题卡主键")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long cardId;
+
+    @ApiModelProperty("原卷")
+    private Original original;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Long getAttachmentId() {
+        return attachmentId;
+    }
+
+    public void setAttachmentId(Long attachmentId) {
+        this.attachmentId = attachmentId;
+    }
+
+    public String getFilename() {
+        return filename;
+    }
+
+    public void setFilename(String filename) {
+        this.filename = filename;
+    }
+
+    public Integer getPages() {
+        return pages;
+    }
+
+    public void setPages(Integer pages) {
+        this.pages = pages;
+    }
+
+    public Boolean getCanDelete() {
+        return canDelete;
+    }
+
+    public void setCanDelete(Boolean canDelete) {
+        this.canDelete = canDelete;
+    }
+
+    public Boolean getExposed() {
+        return isExposed;
+    }
+
+    public void setExposed(Boolean exposed) {
+        isExposed = exposed;
+    }
+
+    public Long getCardId() {
+        return cardId;
+    }
+
+    public void setCardId(Long cardId) {
+        this.cardId = cardId;
+    }
+
+    public Original getOriginal() {
+        return original;
+    }
+
+    public void setOriginal(Original original) {
+        this.original = original;
+    }
+}

+ 92 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamPaperObjectiveStructureDto.java

@@ -0,0 +1,92 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.teachcloud.common.annotation.ExcelNote;
+
+import java.io.Serializable;
+
+/**
+ * @Date: 2021/10/28.
+ */
+public class ExamPaperObjectiveStructureDto implements Serializable {
+
+    @ExcelNote(value = "科目代码")
+    private String courseCode;
+    @ExcelNote(value = "科目名称")
+    private String courseName;
+    @ExcelNote(value = "试卷类型")
+    private String paperType;
+    @ExcelNote(value = "大题名称")
+    private String mainName;
+    @ExcelNote(value = "大题号(只能用小写数字)")
+    private String mainNumber;
+    @ExcelNote(value = "小题号(只能用小写数字)")
+    private String subNumber;
+    @ExcelNote(value = "标准答案")
+    private String answer;
+    @ExcelNote(value = "小题满分")
+    private String score;
+
+    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 getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getMainName() {
+        return mainName;
+    }
+
+    public void setMainName(String mainName) {
+        this.mainName = mainName;
+    }
+
+    public String getMainNumber() {
+        return mainNumber;
+    }
+
+    public void setMainNumber(String mainNumber) {
+        this.mainNumber = mainNumber;
+    }
+
+    public String getSubNumber() {
+        return subNumber;
+    }
+
+    public void setSubNumber(String subNumber) {
+        this.subNumber = subNumber;
+    }
+
+    public String getAnswer() {
+        return answer;
+    }
+
+    public void setAnswer(String answer) {
+        this.answer = answer;
+    }
+
+    public String getScore() {
+        return score;
+    }
+
+    public void setScore(String score) {
+        this.score = score;
+    }
+}

+ 73 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamPaperStructureDto.java

@@ -0,0 +1,73 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * @Date: 2021/10/28.
+ */
+public class ExamPaperStructureDto {
+
+    private String paperType;
+    private MultipartFile subjectiveQuestionFile;
+    private String subjectiveQuestionMd5;
+    private MultipartFile objectiveQuestionFile;
+    private String objectiveQuestionMd5;
+    private MultipartFile standardAnswerFile;
+    private String standardAnswerMd5;
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public MultipartFile getSubjectiveQuestionFile() {
+        return subjectiveQuestionFile;
+    }
+
+    public void setSubjectiveQuestionFile(MultipartFile subjectiveQuestionFile) {
+        this.subjectiveQuestionFile = subjectiveQuestionFile;
+    }
+
+    public String getSubjectiveQuestionMd5() {
+        return subjectiveQuestionMd5;
+    }
+
+    public void setSubjectiveQuestionMd5(String subjectiveQuestionMd5) {
+        this.subjectiveQuestionMd5 = subjectiveQuestionMd5;
+    }
+
+    public MultipartFile getObjectiveQuestionFile() {
+        return objectiveQuestionFile;
+    }
+
+    public void setObjectiveQuestionFile(MultipartFile objectiveQuestionFile) {
+        this.objectiveQuestionFile = objectiveQuestionFile;
+    }
+
+    public String getObjectiveQuestionMd5() {
+        return objectiveQuestionMd5;
+    }
+
+    public void setObjectiveQuestionMd5(String objectiveQuestionMd5) {
+        this.objectiveQuestionMd5 = objectiveQuestionMd5;
+    }
+
+    public MultipartFile getStandardAnswerFile() {
+        return standardAnswerFile;
+    }
+
+    public void setStandardAnswerFile(MultipartFile standardAnswerFile) {
+        this.standardAnswerFile = standardAnswerFile;
+    }
+
+    public String getStandardAnswerMd5() {
+        return standardAnswerMd5;
+    }
+
+    public void setStandardAnswerMd5(String standardAnswerMd5) {
+        this.standardAnswerMd5 = standardAnswerMd5;
+    }
+}

+ 75 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamPaperSubjectiveStructureDto.java

@@ -0,0 +1,75 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.teachcloud.common.annotation.ExcelImportTempleteVaild;
+import com.qmth.teachcloud.common.annotation.ExcelNote;
+
+import java.io.Serializable;
+
+/**
+ * @Date: 2021/10/28.
+ */
+
+@ExcelImportTempleteVaild(value = true)
+public class ExamPaperSubjectiveStructureDto implements Serializable {
+
+    @ExcelNote(value = "科目代码")
+    private String courseCode;
+    @ExcelNote(value = "科目名称")
+    private String courseName;
+    @ExcelNote(value = "大题名称")
+    private String mainName;
+    @ExcelNote(value = "大题号(只能用小写数字)")
+    private String mainNumber;
+    @ExcelNote(value = "小题号(只能用小写数字)")
+    private String subNumber;
+    @ExcelNote(value = "小题满分")
+    private String score;
+
+    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 getMainName() {
+        return mainName;
+    }
+
+    public void setMainName(String mainName) {
+        this.mainName = mainName;
+    }
+
+    public String getMainNumber() {
+        return mainNumber;
+    }
+
+    public void setMainNumber(String mainNumber) {
+        this.mainNumber = mainNumber;
+    }
+
+    public String getSubNumber() {
+        return subNumber;
+    }
+
+    public void setSubNumber(String subNumber) {
+        this.subNumber = subNumber;
+    }
+
+    public String getScore() {
+        return score;
+    }
+
+    public void setScore(String score) {
+        this.score = score;
+    }
+}

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

@@ -0,0 +1,71 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.distributed.print.business.entity.ExamStudent;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 考生科目 dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/5/14
+ */
+public class ExamStudentCourseClassDto extends ExamStudent {
+
+    @ApiModelProperty(value = "科目编码")
+    private String courseCode;
+
+    @ApiModelProperty(value = "科目名称")
+    private String courseName;
+
+    @ApiModelProperty("试卷编号")
+    private String paperNumber;
+
+    @ApiModelProperty("任课老师")
+    private String teacherName;
+
+    @ApiModelProperty("任课老师工号")
+    private String teacherNumber;
+
+    @Override
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    @Override
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    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 getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherNumber() {
+        return teacherNumber;
+    }
+
+    public void setTeacherNumber(String teacherNumber) {
+        this.teacherNumber = teacherNumber;
+    }
+}

+ 86 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamStudentCourseDto.java

@@ -0,0 +1,86 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.distributed.print.business.entity.ExamStudent;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 考生科目 dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/5/14
+ */
+public class ExamStudentCourseDto extends ExamStudent {
+
+    @ApiModelProperty(value = "科目编码")
+    private String courseCode;
+
+    @ApiModelProperty(value = "科目名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "A3数量")
+    private Integer paperPageA3;
+
+    @ApiModelProperty("试卷编号")
+    private String paperNumber;
+
+    @ApiModelProperty("任课老师")
+    private String teacherName;
+
+    @ApiModelProperty("任课老师工号")
+    private String teacherNumber;
+
+    @Override
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    @Override
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    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 Integer getPaperPageA3() {
+        return paperPageA3;
+    }
+
+    public void setPaperPageA3(Integer paperPageA3) {
+        this.paperPageA3 = paperPageA3;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherNumber() {
+        return teacherNumber;
+    }
+
+    public void setTeacherNumber(String teacherNumber) {
+        this.teacherNumber = teacherNumber;
+    }
+}

+ 25 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamStudentDto.java

@@ -0,0 +1,25 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.distributed.print.business.entity.ExamStudent;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 考生dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/4/12
+ */
+public class ExamStudentDto extends ExamStudent {
+
+    @ApiModelProperty(value = "序号")
+    private Integer index; //序号
+
+    public Integer getIndex() {
+        return index;
+    }
+
+    public void setIndex(Integer index) {
+        this.index = index;
+    }
+}

+ 58 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamStudentPdfInfoDto.java

@@ -0,0 +1,58 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.distributed.print.business.entity.ExamStudent;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 生成pdf需要的考生信息
+ */
+public class ExamStudentPdfInfoDto extends ExamStudent {
+
+    private String courseCode;
+    private String courseName;
+    private String paperNumber;
+    private String examPlace;
+    private String examRoom;
+
+    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;
+    }
+
+    @Override
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    @Override
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getExamPlace() {
+        return examPlace;
+    }
+
+    public void setExamPlace(String examPlace) {
+        this.examPlace = examPlace;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+}

+ 214 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskDetailCardDto.java

@@ -0,0 +1,214 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.teachcloud.common.enums.FlowStatusEnum;
+
+import java.util.Objects;
+
+/**
+ * @Date: 2021/3/31.
+ */
+public class ExamTaskDetailCardDto {
+
+    private String examTaskId;
+    private String paperType;
+    private String paperAttachmentIds;
+//    private String cardId;
+    private String paperConfirmAttachmentIds;
+    private String remark;
+    private String exposedPaperType;
+    private String relatePaperType;
+    private String unexposedPaperType;
+    private Boolean enable;
+    private String makeMethod;
+    private Integer drawCount;
+//    private String status;
+    private String flowId;
+    private Integer setup;
+    // 审核流程taskId
+    private String flowTaskId;
+    private String examId;
+    private String examModel;
+    private String examName;
+    private String semesterName;
+    private FlowStatusEnum flowStatus;
+    private String flowStatusStr;
+
+    public FlowStatusEnum getFlowStatus() {
+        return flowStatus;
+    }
+
+    public void setFlowStatus(FlowStatusEnum flowStatus) {
+        this.flowStatus = flowStatus;
+    }
+
+    public String getFlowStatusStr() {
+        if (Objects.nonNull(flowStatus)) {
+            return flowStatus.getTitle();
+        } else {
+            return flowStatusStr;
+        }
+    }
+
+    public void setFlowStatusStr(String flowStatusStr) {
+        this.flowStatusStr = flowStatusStr;
+    }
+
+    public String getExamTaskId() {
+        return examTaskId;
+    }
+
+    public void setExamTaskId(String examTaskId) {
+        this.examTaskId = examTaskId;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getPaperAttachmentIds() {
+        return paperAttachmentIds;
+    }
+
+    public void setPaperAttachmentIds(String paperAttachmentIds) {
+        this.paperAttachmentIds = paperAttachmentIds;
+    }
+
+//    public String getCardId() {
+//        return cardId;
+//    }
+//
+//    public void setCardId(String cardId) {
+//        this.cardId = cardId;
+//    }
+
+    public String getPaperConfirmAttachmentIds() {
+        return paperConfirmAttachmentIds;
+    }
+
+    public void setPaperConfirmAttachmentIds(String paperConfirmAttachmentIds) {
+        this.paperConfirmAttachmentIds = paperConfirmAttachmentIds;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getExposedPaperType() {
+        return exposedPaperType;
+    }
+
+    public void setExposedPaperType(String exposedPaperType) {
+        this.exposedPaperType = exposedPaperType;
+    }
+
+    public String getRelatePaperType() {
+        return relatePaperType;
+    }
+
+    public void setRelatePaperType(String relatePaperType) {
+        this.relatePaperType = relatePaperType;
+    }
+
+    public String getUnexposedPaperType() {
+        return unexposedPaperType;
+    }
+
+    public void setUnexposedPaperType(String unexposedPaperType) {
+        this.unexposedPaperType = unexposedPaperType;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public String getMakeMethod() {
+        return makeMethod;
+    }
+
+    public void setMakeMethod(String makeMethod) {
+        this.makeMethod = makeMethod;
+    }
+
+    public Integer getDrawCount() {
+        return drawCount;
+    }
+
+    public void setDrawCount(Integer drawCount) {
+        this.drawCount = drawCount;
+    }
+
+//    public String getStatus() {
+//        return status;
+//    }
+//
+//    public void setStatus(String status) {
+//        this.status = status;
+//    }
+    public String getFlowId() {
+        return flowId;
+    }
+
+    public void setFlowId(String flowId) {
+        this.flowId = flowId;
+    }
+
+    public Integer getSetup() {
+        return setup;
+    }
+
+    public void setSetup(Integer setup) {
+        this.setup = setup;
+    }
+
+    public String getFlowTaskId() {
+        return flowTaskId;
+    }
+
+    public void setFlowTaskId(String flowTaskId) {
+        this.flowTaskId = flowTaskId;
+    }
+
+    public String getExamId() {
+        return examId;
+    }
+
+    public void setExamId(String examId) {
+        this.examId = examId;
+    }
+
+    public String getExamName() {
+        return examName;
+    }
+
+    public void setExamName(String examName) {
+        this.examName = examName;
+    }
+
+    public String getExamModel() {
+        return examModel;
+    }
+
+    public void setExamModel(String examModel) {
+        this.examModel = examModel;
+    }
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+}

+ 301 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskDetailDto.java

@@ -0,0 +1,301 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.distributed.print.business.enums.MakeMethodEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Date: 2021/3/31.
+ */
+public class ExamTaskDetailDto {
+
+    private String id;
+    private String examDetailId;
+    private String printPlanId;
+    private String printPlanName;
+    private String paperNumber;
+    private String courseCode;
+    private String courseName;
+    private String specialty;
+    private String cardRuleId;
+
+    @ApiModelProperty(value = "题卡规则名称")
+    private String cardRuleName;
+    private String userId;
+    private String userName;
+    private String status;
+    private Boolean enable;
+    private String createId;
+    private Long createTime;
+    private String paperType;
+    private String relatePaperType;
+    private String exposedPaperType;
+    private String unexposedPaperType;
+    private Integer totalSubjects;
+    private String examDetailCourseIds;
+
+    private Long examId;
+    private String examName;
+    private Long semesterId;
+    private String semesterName;
+
+    @ApiModelProperty(value = "题卡制作方式:SELECT-选择已有题卡,SELF-自助创建,CUST-客户制卡")
+    private MakeMethodEnum makeMethod;
+
+    private Integer setup;
+    @ApiModelProperty(value = "机构id")
+    private String orgName;
+
+    @ApiModelProperty(value = "题卡id")
+    private Long examCardId;
+
+    @ApiModelProperty(value = "命题任务试卷附件")
+    private String paperAttachmentIds;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getExamDetailId() {
+        return examDetailId;
+    }
+
+    public void setExamDetailId(String examDetailId) {
+        this.examDetailId = examDetailId;
+    }
+
+    public String getPrintPlanId() {
+        return printPlanId;
+    }
+
+    public void setPrintPlanId(String printPlanId) {
+        this.printPlanId = printPlanId;
+    }
+
+    public String getPrintPlanName() {
+        return printPlanName;
+    }
+
+    public void setPrintPlanName(String printPlanName) {
+        this.printPlanName = printPlanName;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    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 getSpecialty() {
+        return specialty;
+    }
+
+    public void setSpecialty(String specialty) {
+        this.specialty = specialty;
+    }
+
+    public String getCardRuleId() {
+        return cardRuleId;
+    }
+
+    public void setCardRuleId(String cardRuleId) {
+        this.cardRuleId = cardRuleId;
+    }
+
+    public String getCardRuleName() {
+        return cardRuleName;
+    }
+
+    public void setCardRuleName(String cardRuleName) {
+        this.cardRuleName = cardRuleName;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public String getCreateId() {
+        return createId;
+    }
+
+    public void setCreateId(String createId) {
+        this.createId = createId;
+    }
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getRelatePaperType() {
+        return relatePaperType;
+    }
+
+    public void setRelatePaperType(String relatePaperType) {
+        this.relatePaperType = relatePaperType;
+    }
+
+    public String getExposedPaperType() {
+        return exposedPaperType;
+    }
+
+    public void setExposedPaperType(String exposedPaperType) {
+        this.exposedPaperType = exposedPaperType;
+    }
+
+    public String getUnexposedPaperType() {
+        return unexposedPaperType;
+    }
+
+    public void setUnexposedPaperType(String unexposedPaperType) {
+        this.unexposedPaperType = unexposedPaperType;
+    }
+
+    public Integer getTotalSubjects() {
+        return totalSubjects;
+    }
+
+    public void setTotalSubjects(Integer totalSubjects) {
+        this.totalSubjects = totalSubjects;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getExamDetailCourseIds() {
+        return examDetailCourseIds;
+    }
+
+    public void setExamDetailCourseIds(String examDetailCourseIds) {
+        this.examDetailCourseIds = examDetailCourseIds;
+    }
+
+    public MakeMethodEnum getMakeMethod() {
+        return makeMethod;
+    }
+
+    public void setMakeMethod(MakeMethodEnum makeMethod) {
+        this.makeMethod = makeMethod;
+    }
+
+    public Integer getSetup() {
+        return setup;
+    }
+
+    public void setSetup(Integer setup) {
+        this.setup = setup;
+    }
+
+    public String getExamName() {
+        return examName;
+    }
+
+    public void setExamName(String examName) {
+        this.examName = examName;
+    }
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
+    public String getOrgName() {
+        return orgName;
+    }
+
+    public void setOrgName(String orgName) {
+        this.orgName = orgName;
+    }
+
+    public Long getExamCardId() {
+        return examCardId;
+    }
+
+    public void setExamCardId(Long examCardId) {
+        this.examCardId = examCardId;
+    }
+
+    public String getPaperAttachmentIds() {
+        return paperAttachmentIds;
+    }
+
+    public void setPaperAttachmentIds(String paperAttachmentIds) {
+        this.paperAttachmentIds = paperAttachmentIds;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public Long getSemesterId() {
+        return semesterId;
+    }
+
+    public void setSemesterId(Long semesterId) {
+        this.semesterId = semesterId;
+    }
+}

+ 382 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskDto.java

@@ -0,0 +1,382 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.distributed.print.business.enums.FlowJoinTypeEnum;
+import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
+import com.qmth.teachcloud.common.enums.ExamModelEnum;
+import com.qmth.teachcloud.common.enums.FlowStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @Date: 2021/3/31.
+ */
+public class ExamTaskDto {
+
+    private String id;
+    private String paperNumber;
+    private String courseCode;
+    private String courseName;
+    private String sequence;
+    private String specialty;
+    private String cardRuleId;
+    private String cardRuleName;
+    private String userId;
+    private String userName;
+    private Long startTime;
+    private Long endTime;
+    private String status;
+    private Boolean review;
+    private Boolean enable;
+    private String createId;
+    private String createName;
+    private Long createTime;
+    private String auditStatus;
+    private String reviewStatus;
+    private String teacherName;
+    private String lecturerName;
+    private String teachingRoomName;
+    private String flowId;
+    private Integer setup;
+    private FlowStatusEnum flowStatus;
+    private String flowStatusStr;
+    private String statusStr;
+    private List<BlurryUserDto> users;
+    private boolean myself;
+    @ApiModelProperty(value = "审批表展示状态")
+    private Boolean approveFormStatus;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "考试id")
+    private Long examId;
+
+    @ApiModelProperty(value = "考试名称")
+    private String examName;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "学期id")
+    private Long semesterId;
+
+    @ApiModelProperty(value = "学期名称")
+    private String semesterName;
+
+    @ApiModelProperty(value = "考试模式")
+    private ExamModelEnum examModel;
+
+    @ApiModelProperty(value = "审批次数")
+    private Integer approveCount;
+
+    @ApiModelProperty(value = "流程类型")
+    private FlowJoinTypeEnum flowType;
+
+    public Integer getApproveCount() {
+        return approveCount;
+    }
+
+    public void setApproveCount(Integer approveCount) {
+        this.approveCount = approveCount;
+    }
+
+    public FlowJoinTypeEnum getFlowType() {
+        return flowType;
+    }
+
+    public void setFlowType(FlowJoinTypeEnum flowType) {
+        this.flowType = flowType;
+    }
+
+    public Boolean getApproveFormStatus() {
+        return approveFormStatus;
+    }
+
+    public void setApproveFormStatus(Boolean approveFormStatus) {
+        this.approveFormStatus = approveFormStatus;
+    }
+
+    public boolean isMyself() {
+        return myself;
+    }
+
+    public void setMyself(boolean myself) {
+        this.myself = myself;
+    }
+
+    public FlowStatusEnum getFlowStatus() {
+        return flowStatus;
+    }
+
+    public void setFlowStatus(FlowStatusEnum flowStatus) {
+        this.flowStatus = flowStatus;
+    }
+
+    public String getFlowStatusStr() {
+        if (Objects.nonNull(flowStatus)) {
+            return flowStatus.getTitle();
+        } else {
+            return flowStatusStr;
+        }
+    }
+
+    public void setFlowStatusStr(String flowStatusStr) {
+        this.flowStatusStr = flowStatusStr;
+    }
+
+    public String getStatusStr() {
+        return statusStr;
+    }
+
+    public void setStatusStr(String statusStr) {
+        this.statusStr = statusStr;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    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 getSequence() {
+        return sequence;
+    }
+
+    public void setSequence(String sequence) {
+        this.sequence = sequence;
+    }
+
+    public String getSpecialty() {
+        return specialty;
+    }
+
+    public void setSpecialty(String specialty) {
+        this.specialty = specialty;
+    }
+
+    public Boolean getReview() {
+        return review;
+    }
+
+    public void setReview(Boolean review) {
+        this.review = review;
+    }
+
+    public String getCardRuleId() {
+        return cardRuleId;
+    }
+
+    public void setCardRuleId(String cardRuleId) {
+        this.cardRuleId = cardRuleId;
+    }
+
+    public String getCardRuleName() {
+        return cardRuleName;
+    }
+
+    public void setCardRuleName(String cardRuleName) {
+        this.cardRuleName = cardRuleName;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public Long getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Long startTime) {
+        this.startTime = startTime;
+    }
+
+    public Long getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Long endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public String getCreateId() {
+        return createId;
+    }
+
+    public void setCreateId(String createId) {
+        this.createId = createId;
+    }
+
+    public String getCreateName() {
+        return createName;
+    }
+
+    public void setCreateName(String createName) {
+        this.createName = createName;
+    }
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+
+    public List<BlurryUserDto> getUsers() {
+        return users;
+    }
+
+    public void setUsers(List<BlurryUserDto> users) {
+        this.users = users;
+    }
+
+    public String getAuditStatus() {
+        return auditStatus;
+    }
+
+    public void setAuditStatus(String auditStatus) {
+        this.auditStatus = auditStatus;
+    }
+
+    public String getReviewStatus() {
+        return reviewStatus;
+    }
+
+    public void setReviewStatus(String reviewStatus) {
+        this.reviewStatus = reviewStatus;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getLecturerName() {
+        return lecturerName;
+    }
+
+    public void setLecturerName(String lecturerName) {
+        this.lecturerName = lecturerName;
+    }
+
+    public String getTeachingRoomName() {
+        return teachingRoomName;
+    }
+
+    public void setTeachingRoomName(String teachingRoomName) {
+        this.teachingRoomName = teachingRoomName;
+    }
+
+    public String getFlowId() {
+        return flowId;
+    }
+
+    public void setFlowId(String flowId) {
+        this.flowId = flowId;
+    }
+
+    public Integer getSetup() {
+        return setup;
+    }
+
+    public void setSetup(Integer setup) {
+        this.setup = setup;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getExamName() {
+        return examName;
+    }
+
+    public void setExamName(String examName) {
+        this.examName = examName;
+    }
+
+    public Long getSemesterId() {
+        return semesterId;
+    }
+
+    public void setSemesterId(Long semesterId) {
+        this.semesterId = semesterId;
+    }
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
+    public ExamModelEnum getExamModel() {
+        return examModel;
+    }
+
+    public void setExamModel(ExamModelEnum examModel) {
+        this.examModel = examModel;
+    }
+}

+ 39 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskImportDto.java

@@ -0,0 +1,39 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import java.util.List;
+
+/**
+ * @Date: 2021/4/1.
+ */
+public class ExamTaskImportDto {
+
+    private String batchNo;
+
+    private String errorMsg;
+
+    private List<ExamTaskDto> tasks;
+
+    public String getBatchNo() {
+        return batchNo;
+    }
+
+    public void setBatchNo(String batchNo) {
+        this.batchNo = batchNo;
+    }
+
+    public String getErrorMsg() {
+        return errorMsg;
+    }
+
+    public void setErrorMsg(String errorMsg) {
+        this.errorMsg = errorMsg;
+    }
+
+    public List<ExamTaskDto> getTasks() {
+        return tasks;
+    }
+
+    public void setTasks(List<ExamTaskDto> tasks) {
+        this.tasks = tasks;
+    }
+}

+ 34 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPaperDto.java

@@ -0,0 +1,34 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Description: 命题任务试卷文件
+ * @Author: CaoZixuan
+ * @Date: 2022-04-11
+ */
+public class ExamTaskPaperDto {
+    @ApiModelProperty(value = "命题任务试卷文件Dto")
+    private List<ExamTaskPaperFileDto> examTaskPaperFileDtoList;
+
+    @ApiModelProperty(value = "试卷批量下载导出excelDto")
+    private List<ExamTaskPaperExportDto> examTaskPaperExportDtoList;
+
+    public List<ExamTaskPaperFileDto> getExamTaskPaperFileDtoList() {
+        return examTaskPaperFileDtoList;
+    }
+
+    public void setExamTaskPaperFileDtoList(List<ExamTaskPaperFileDto> examTaskPaperFileDtoList) {
+        this.examTaskPaperFileDtoList = examTaskPaperFileDtoList;
+    }
+
+    public List<ExamTaskPaperExportDto> getExamTaskPaperExportDtoList() {
+        return examTaskPaperExportDtoList;
+    }
+
+    public void setExamTaskPaperExportDtoList(List<ExamTaskPaperExportDto> examTaskPaperExportDtoList) {
+        this.examTaskPaperExportDtoList = examTaskPaperExportDtoList;
+    }
+}

+ 73 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPaperExportDto.java

@@ -0,0 +1,73 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.teachcloud.common.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 试卷批量下载导出excelDto
+ * @Author: CaoZixuan
+ * @Date: 2022-04-11
+ */
+public class ExamTaskPaperExportDto implements Serializable {
+    @ApiModelProperty(value = "课程名称")
+    @ExcelProperty(name = "课程名称", width = 30, index = 1)
+    private String courseName;
+
+    @ApiModelProperty(value = "课程代码")
+    @ExcelProperty(name = "课程代码", width = 30, index = 2)
+    private String courseCode;
+
+    @ApiModelProperty(value = "试卷编号")
+    @ExcelProperty(name = "试卷编号", width = 30, index = 3)
+    private String paperNumber;
+
+    @ApiModelProperty(value = "全部卷型")
+    @ExcelProperty(name = "全部卷型", width = 30, index = 4)
+    private String paperType;
+
+    @ApiModelProperty(value = "未曝光卷型")
+    @ExcelProperty(name = "未曝光卷型", width = 30, index = 5)
+    private String unexposedPaperType;
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getUnexposedPaperType() {
+        return unexposedPaperType;
+    }
+
+    public void setUnexposedPaperType(String unexposedPaperType) {
+        this.unexposedPaperType = unexposedPaperType;
+    }
+}

+ 189 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPaperFileDto.java

@@ -0,0 +1,189 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.distributed.print.business.entity.ExamPrintPlan;
+import com.qmth.teachcloud.common.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Description: 命题任务试卷文件Dto
+ * @Author: CaoZixuan
+ * @Date: 2022-04-07
+ */
+public class ExamTaskPaperFileDto {
+    // 命题任务基本信息
+    @ApiModelProperty(value = "命题任务id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examTaskId;
+
+    @ApiModelProperty(value = "学期名称")
+    private String semesterName;
+
+    @ApiModelProperty(value = "考试名称")
+    private String examName;
+
+    @ApiModelProperty(value = "机构名称")
+    private String orgName;
+
+    // 命题任务基础信息
+    @ApiModelProperty(value = "印刷计划集合")
+    private List<ExamPrintPlan> examPrintPlanList;
+
+    @ApiModelProperty(value = "课程名称")
+    @ExcelProperty(name = "课程名称", width = 30, index = 1)
+    private String courseName;
+
+    @ApiModelProperty(value = "课程代码")
+    @ExcelProperty(name = "课程代码", width = 30, index = 2)
+    private String courseCode;
+
+    @ApiModelProperty(value = "试卷编号")
+    @ExcelProperty(name = "试卷编号", width = 30, index = 3)
+    private String paperNumber;
+
+    // 试卷信息
+    @ApiModelProperty(value = "试卷类型")
+    private String paperType;
+
+    @ApiModelProperty(value = "曝光状态 true-已曝光、false-未曝光")
+    private Boolean exposureStatus;
+
+    @ApiModelProperty(value = "试卷文件名称")
+    private String paperName;
+
+    @ApiModelProperty(value = "试卷文件后缀")
+    private String paperSuffix;
+
+    @ApiModelProperty(value = "试卷文件路径")
+    private String paperPath;
+
+    // 题卡信息
+    @ApiModelProperty(value = "该命题任务id")
+    private Long examCardId;
+
+    @ApiModelProperty(value = "题卡规则id")
+    private Long cardRuleId;
+
+    public Long getExamTaskId() {
+        return examTaskId;
+    }
+
+    public void setExamTaskId(Long examTaskId) {
+        this.examTaskId = examTaskId;
+    }
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
+    public String getExamName() {
+        return examName;
+    }
+
+    public void setExamName(String examName) {
+        this.examName = examName;
+    }
+
+    public String getOrgName() {
+        return orgName;
+    }
+
+    public void setOrgName(String orgName) {
+        this.orgName = orgName;
+    }
+
+    public List<ExamPrintPlan> getExamPrintPlanList() {
+        return examPrintPlanList;
+    }
+
+    public void setExamPrintPlanList(List<ExamPrintPlan> examPrintPlanList) {
+        this.examPrintPlanList = examPrintPlanList;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public Boolean getExposureStatus() {
+        return exposureStatus;
+    }
+
+    public void setExposureStatus(Boolean exposureStatus) {
+        this.exposureStatus = exposureStatus;
+    }
+
+    public String getPaperName() {
+        return paperName;
+    }
+
+    public void setPaperName(String paperName) {
+        this.paperName = paperName;
+    }
+
+    public String getPaperSuffix() {
+        return paperSuffix;
+    }
+
+    public void setPaperSuffix(String paperSuffix) {
+        this.paperSuffix = paperSuffix;
+    }
+
+    public String getPaperPath() {
+        return paperPath;
+    }
+
+    public void setPaperPath(String paperPath) {
+        this.paperPath = paperPath;
+    }
+
+    public Long getExamCardId() {
+        return examCardId;
+    }
+
+    public void setExamCardId(Long examCardId) {
+        this.examCardId = examCardId;
+    }
+
+    public Long getCardRuleId() {
+        return cardRuleId;
+    }
+
+    public void setCardRuleId(Long cardRuleId) {
+        this.cardRuleId = cardRuleId;
+    }
+}

+ 164 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPlanStatisticDto.java

@@ -0,0 +1,164 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.distributed.print.business.enums.BackupMethodEnum;
+import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 命题计划统计Dto
+ * @Author: CaoZixuan
+ * @Date: 2022-04-25
+ */
+public class ExamTaskPlanStatisticDto implements Serializable {
+
+    @ApiModelProperty(value = "考试id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examId;
+
+    @ApiModelProperty(value = "印刷计划id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examPrintPlanId;
+
+    @ApiModelProperty(value = "备份方式")
+    private BackupMethodEnum backupMethod;
+
+    @ApiModelProperty(value = "备份数量")
+    private Integer backupCount;
+
+    @ApiModelProperty(value = "印刷计划名称")
+    private String examPrintPlanName;
+
+    @ApiModelProperty(value = "考场表id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examDetailId;
+
+    @ApiModelProperty(value = "考场表印刷状态")
+    private ExamDetailStatusEnum examDetailStatus;
+
+    @ApiModelProperty(value = "考试科目表id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examDetailCourseId;
+
+    @ApiModelProperty(value = "试卷编号")
+    private String paperNumber;
+
+    @ApiModelProperty(value = "课程编号")
+    private String courseCode;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "班级名称逗号隔开")
+    private String clazzIds;
+
+    @ApiModelProperty(value = "学生数量")
+    private Integer studentCount;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public BackupMethodEnum getBackupMethod() {
+        return backupMethod;
+    }
+
+    public void setBackupMethod(BackupMethodEnum backupMethod) {
+        this.backupMethod = backupMethod;
+    }
+
+    public Integer getBackupCount() {
+        return backupCount;
+    }
+
+    public void setBackupCount(Integer backupCount) {
+        this.backupCount = backupCount;
+    }
+
+    public Long getExamPrintPlanId() {
+        return examPrintPlanId;
+    }
+
+    public void setExamPrintPlanId(Long examPrintPlanId) {
+        this.examPrintPlanId = examPrintPlanId;
+    }
+
+    public String getExamPrintPlanName() {
+        return examPrintPlanName;
+    }
+
+    public void setExamPrintPlanName(String examPrintPlanName) {
+        this.examPrintPlanName = examPrintPlanName;
+    }
+
+    public Long getExamDetailId() {
+        return examDetailId;
+    }
+
+    public void setExamDetailId(Long examDetailId) {
+        this.examDetailId = examDetailId;
+    }
+
+    public ExamDetailStatusEnum getExamDetailStatus() {
+        return examDetailStatus;
+    }
+
+    public void setExamDetailStatus(ExamDetailStatusEnum examDetailStatus) {
+        this.examDetailStatus = examDetailStatus;
+    }
+
+    public Long getExamDetailCourseId() {
+        return examDetailCourseId;
+    }
+
+    public void setExamDetailCourseId(Long examDetailCourseId) {
+        this.examDetailCourseId = examDetailCourseId;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    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 getClazzIds() {
+        return clazzIds;
+    }
+
+    public void setClazzIds(String clazzIds) {
+        this.clazzIds = clazzIds;
+    }
+
+    public Integer getStudentCount() {
+        return studentCount;
+    }
+
+    public void setStudentCount(Integer studentCount) {
+        this.studentCount = studentCount;
+    }
+}

+ 19 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPrintDetailDto.java

@@ -0,0 +1,19 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.distributed.print.business.entity.ExamTaskPrint;
+
+/**
+ * @Date: 2021/8/27.
+ */
+public class ExamTaskPrintDetailDto extends ExamTaskPrint {
+
+    private String status;
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+}

+ 55 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPrintDto.java

@@ -0,0 +1,55 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import java.util.List;
+
+/**
+ * @Date: 2021/3/31.
+ */
+public class ExamTaskPrintDto {
+
+    private Long printPlanId;
+    private Boolean isSubmit;
+    private Long examStartTime;
+    private Long examEndTime;
+    private List<ExamTaskPrintDetailDto> list;
+
+    public Long getPrintPlanId() {
+        return printPlanId;
+    }
+
+    public void setPrintPlanId(Long printPlanId) {
+        this.printPlanId = printPlanId;
+    }
+
+    public Long getExamStartTime() {
+        return examStartTime;
+    }
+
+    public void setExamStartTime(Long examStartTime) {
+        this.examStartTime = examStartTime;
+    }
+
+    public Long getExamEndTime() {
+        return examEndTime;
+    }
+
+    public void setExamEndTime(Long examEndTime) {
+        this.examEndTime = examEndTime;
+    }
+
+    public Boolean getSubmit() {
+        return isSubmit;
+    }
+
+    public void setSubmit(Boolean submit) {
+        isSubmit = submit;
+    }
+
+    public List<ExamTaskPrintDetailDto> getList() {
+        return list;
+    }
+
+    public void setList(List<ExamTaskPrintDetailDto> list) {
+        this.list = list;
+    }
+}

+ 59 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskTempDto.java

@@ -0,0 +1,59 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+public class ExamTaskTempDto {
+
+    private String courseCode;
+    private String courseName;
+    private String paperNumber;
+    private String specialty;
+    private String userAccount;
+    private String userName;
+
+    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 getSpecialty() {
+        return specialty;
+    }
+
+    public void setSpecialty(String specialty) {
+        this.specialty = specialty;
+    }
+
+    public String getUserAccount() {
+        return userAccount;
+    }
+
+    public void setUserAccount(String userAccount) {
+        this.userAccount = userAccount;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+}

+ 158 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExaminationExportDto.java

@@ -0,0 +1,158 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 考务数据导出Dto
+ * @Author: CaoZixuan
+ * @Date: 2021-04-15
+ */
+public class ExaminationExportDto {
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "序号")
+    @ExcelProperty(name = "序号", width = 30, index = 1)
+    private Long index;
+
+    @ApiModelProperty(value = "学期名称")
+    @ExcelProperty(name = "学期名称", width = 30, index = 2)
+    private String semesterName;
+
+    @ApiModelProperty(value = "考试名称")
+    @ExcelProperty(name = "考试名称", width = 30, index = 3)
+    private String examName;
+
+    @ApiModelProperty(value = "印刷计划名称")
+    @ExcelProperty(name = "印刷计划名称", width = 30, index = 4)
+    private String printPlanName;
+
+    @ApiModelProperty(value = "考试日期")
+    @ExcelProperty(name = "考试日期", width = 30, index = 5)
+    private String examDate;
+
+    @ApiModelProperty(value = "考试时间")
+    @ExcelProperty(name = "考试时间", width = 30, index = 6)
+    private String examTime;
+
+    @ApiModelProperty(value = "考点")
+    @ExcelProperty(name = "考点", width = 30, index = 7)
+    private String examPlace;
+
+    @ApiModelProperty(value = "考场")
+    @ExcelProperty(name = "考场", width = 30, index = 8)
+    private String examRoom;
+
+    @ApiModelProperty(value = "卷袋号")
+    @ExcelProperty(name = "卷袋号", width = 30, index = 9)
+    private String packageCode;
+
+    @ApiModelProperty(value = "课程(代码)")
+    @ExcelProperty(name = "课程(代码)", width = 30, index = 10)
+    private String courseNameCode;
+
+    @ApiModelProperty(value = "试卷编号")
+    @ExcelProperty(name = "试卷编号", width = 30, index = 11)
+    private String paperNumber;
+
+    @ApiModelProperty(value = "科次")
+    @ExcelProperty(name = "科次", width = 30, index = 12)
+    private int totalSubjects;
+
+    public Long getIndex() {
+        return index;
+    }
+
+    public void setIndex(Long index) {
+        this.index = index;
+    }
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
+    public String getExamName() {
+        return examName;
+    }
+
+    public void setExamName(String examName) {
+        this.examName = examName;
+    }
+
+    public String getPrintPlanName() {
+        return printPlanName;
+    }
+
+    public void setPrintPlanName(String printPlanName) {
+        this.printPlanName = printPlanName;
+    }
+
+    public String getExamDate() {
+        return examDate;
+    }
+
+    public void setExamDate(String examDate) {
+        this.examDate = examDate;
+    }
+
+    public String getExamTime() {
+        return examTime;
+    }
+
+    public void setExamTime(String examTime) {
+        this.examTime = examTime;
+    }
+
+    public String getExamPlace() {
+        return examPlace;
+    }
+
+    public void setExamPlace(String examPlace) {
+        this.examPlace = examPlace;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+
+    public String getPackageCode() {
+        return packageCode;
+    }
+
+    public void setPackageCode(String packageCode) {
+        this.packageCode = packageCode;
+    }
+
+    public String getCourseNameCode() {
+        return courseNameCode;
+    }
+
+    public void setCourseNameCode(String courseNameCode) {
+        this.courseNameCode = courseNameCode;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public int getTotalSubjects() {
+        return totalSubjects;
+    }
+
+    public void setTotalSubjects(int totalSubjects) {
+        this.totalSubjects = totalSubjects;
+    }
+}

+ 262 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExaminationImportDto.java

@@ -0,0 +1,262 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.teachcloud.common.annotation.ExcelDBFieldDesc;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Description: 考务数据导入Dto(对应 ExaminationDBFieldsEnum 同时作为考务数据表所需要的的字段,来接收excel导入的考务数据)
+ * @Author: CaoZixuan
+ * @Date: 2021-04-25
+ */
+public class ExaminationImportDto {
+
+    @ApiModelProperty(value = "学号")
+    @ExcelDBFieldDesc(name = "学号", length = 30)
+    private String studentCode;
+
+    @ApiModelProperty(value = "考号")
+    @ExcelDBFieldDesc(name = "考号", length = 30)
+    private String ticketNumber;
+
+    @ApiModelProperty(value = "座位号")
+    @ExcelDBFieldDesc(name = "座位号", length = 30)
+    private String siteNumber;
+
+    @ApiModelProperty(value = "姓名")
+    @ExcelDBFieldDesc(name = "姓名", length = 30)
+    private String studentName;
+
+    @ApiModelProperty(value = "课程代码")
+    @ExcelDBFieldDesc(name = "课程代码", length = 30)
+    private String courseCode;
+
+    @ApiModelProperty(value = "课程名称")
+    @ExcelDBFieldDesc(name = "课程名称", length = 50)
+    private String courseName;
+
+    @ApiModelProperty(value = "考点")
+    @ExcelDBFieldDesc(name = "考点", length = 30)
+    private String examPlace;
+
+    @ApiModelProperty(value = "考场")
+    @ExcelDBFieldDesc(name = "考场", length = 30)
+    private String examRoom;
+
+    @ApiModelProperty(value = "考试日期")
+    @ExcelDBFieldDesc(name = "考试日期")
+    private String examDate;
+
+    @ApiModelProperty(value = "考试时间")
+    @ExcelDBFieldDesc(name = "考试时间")
+    private String examTime;
+
+    @ApiModelProperty(value = "试卷编号")
+    @ExcelDBFieldDesc(name = "试卷编号", length = 30)
+    private String paperNumber;
+
+    @ApiModelProperty(value = "学院")
+    @ExcelDBFieldDesc(name = "学院", length = 30)
+    private String collegeName;
+
+    @ApiModelProperty(value = "专业")
+    @ExcelDBFieldDesc(name = "专业", length = 30)
+    private String majorName;
+
+    @ApiModelProperty(value = "班级")
+    @ExcelDBFieldDesc(name = "班级", length = 30)
+    private String clazzName;
+
+    @ApiModelProperty(value = "课程创建的任务序号")
+    private String sequence;
+
+    @ApiModelProperty(value = "备选字段集合")
+    private List<FieldsDto> secondaryFieldList;
+
+    @ApiModelProperty(value = "考试开始时间")
+    private String examStartTime;
+
+    @ApiModelProperty(value = "考试结束时间")
+    private String examEndTime;
+
+    @ApiModelProperty(value = "学校id")
+    private Long schoolId;
+
+    @ApiModelProperty(value = "印刷计划id")
+    private Long printPlanId;
+
+    @ApiModelProperty(value = "印刷计划名称")
+    private String printPlanName;
+
+    public ExaminationImportDto() {
+    }
+
+    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 getSiteNumber() {
+        return siteNumber;
+    }
+
+    public void setSiteNumber(String siteNumber) {
+        this.siteNumber = siteNumber;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    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 getExamPlace() {
+        return examPlace;
+    }
+
+    public void setExamPlace(String examPlace) {
+        this.examPlace = examPlace;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+
+    public String getExamDate() {
+        return examDate;
+    }
+
+    public void setExamDate(String examDate) {
+        this.examDate = examDate;
+    }
+
+    public String getExamTime() {
+        return examTime;
+    }
+
+    public void setExamTime(String examTime) {
+        this.examTime = examTime;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getSequence() {
+        return sequence;
+    }
+
+    public void setSequence(String sequence) {
+        this.sequence = sequence;
+    }
+
+    public List<FieldsDto> getSecondaryFieldList() {
+        return secondaryFieldList;
+    }
+
+    public void setSecondaryFieldList(List<FieldsDto> secondaryFieldList) {
+        this.secondaryFieldList = secondaryFieldList;
+    }
+
+    public String getExamStartTime() {
+        return examStartTime;
+    }
+
+    public void setExamStartTime(String examStartTime) {
+        this.examStartTime = examStartTime;
+    }
+
+    public String getExamEndTime() {
+        return examEndTime;
+    }
+
+    public void setExamEndTime(String examEndTime) {
+        this.examEndTime = examEndTime;
+    }
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    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 getCollegeName() {
+        return collegeName;
+    }
+
+    public void setCollegeName(String collegeName) {
+        this.collegeName = collegeName;
+    }
+
+    public String getMajorName() {
+        return majorName;
+    }
+
+    public void setMajorName(String majorName) {
+        this.majorName = majorName;
+    }
+
+    public String getClazzName() {
+        return clazzName;
+    }
+
+    public void setClazzName(String clazzName) {
+        this.clazzName = clazzName;
+    }
+}

+ 61 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExtendFieldsDto.java

@@ -0,0 +1,61 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+/**
+ * @Description: 考务学生-扩展字段
+ * @Author: CaoZixuan
+ * @Date: 2021-04-21
+ */
+public class ExtendFieldsDto {
+
+    /**
+     * 考务字段代码
+     */
+    private String code;
+
+    /**
+     * 考务字段名称
+     */
+    private String name;
+
+    /**
+     * 考务字段是否可用(仅考务规则有)
+     */
+    private Boolean enable;
+
+    /**
+     * 考务字段值(仅考生有)
+     */
+    private String value;
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+}

+ 99 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/FieldsDto.java

@@ -0,0 +1,99 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 考务字段Dto
+ * @Author: CaoZixuan
+ * @Date: 2021-04-07
+ */
+public class FieldsDto {
+
+    /**
+     * 考务字段代码
+     */
+    private String code;
+
+    /**
+     * 考务字段名称
+     */
+    private String name;
+
+    /**
+     * 考务字段是否可用(仅考务规则有)
+     */
+    private Boolean enable;
+
+    /**
+     * 考务字段值(仅考生有)
+     */
+    private String value;
+
+    /**
+     * 索引
+     */
+    private int index;
+
+    @ApiModelProperty(value = "字段级别(必选字段 - 'primary'、扩展字段 - 'secondary')")
+    private String level;
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public int getIndex() {
+        return index;
+    }
+
+    public void setIndex(int index) {
+        this.index = index;
+    }
+
+    public String getLevel() {
+        return level;
+    }
+
+    public void setLevel(String level) {
+        this.level = level;
+    }
+
+    @Override
+    public String toString() {
+        return "FieldsDto{" +
+                "code='" + code + '\'' +
+                ", name='" + name + '\'' +
+                ", enable=" + enable +
+                ", value='" + value + '\'' +
+                ", index=" + index +
+                ", level='" + level + '\'' +
+                '}';
+    }
+}

+ 87 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/GradeBatchStudentClazzDto.java

@@ -0,0 +1,87 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.teachcloud.common.annotation.ExcelImportTempleteVaild;
+
+/**
+ * <p>
+ * 考务数据班级(包含任课老师)
+ * </p>
+ *
+ * @since 2022-07-14
+ */
+@ExcelImportTempleteVaild(value = true)
+public class GradeBatchStudentClazzDto {
+
+    private String courseCode;
+    private String courseName;
+    private String paperNumber;
+    private String paperType;
+    private String clazzId;
+    private String clazzName;
+    private String teacherName;
+    private String teacherNumber;
+
+    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 getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getClazzId() {
+        return clazzId;
+    }
+
+    public void setClazzId(String clazzId) {
+        this.clazzId = clazzId;
+    }
+
+    public String getClazzName() {
+        return clazzName;
+    }
+
+    public void setClazzName(String clazzName) {
+        this.clazzName = clazzName;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherNumber() {
+        return teacherNumber;
+    }
+
+    public void setTeacherNumber(String teacherNumber) {
+        this.teacherNumber = teacherNumber;
+    }
+}

+ 97 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/GradeBatchStudentDto.java

@@ -0,0 +1,97 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.teachcloud.common.annotation.ExcelImportTempleteVaild;
+
+/**
+ * <p>
+ * 考务数据(包含任课老师)
+ * </p>
+ *
+ * @author wangliang
+ * @since 2022-05-20
+ */
+@ExcelImportTempleteVaild(value = true)
+public class GradeBatchStudentDto {
+
+    private String courseCode;
+    private String courseName;
+    private String paperNumber;
+    private String paperType;
+    private String studentCode;
+    private String studentName;
+    private String ticketNumber;
+    private String teacherName;
+    private String teacherNumber;
+
+    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 getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getTicketNumber() {
+        return ticketNumber;
+    }
+
+    public void setTicketNumber(String ticketNumber) {
+        this.ticketNumber = ticketNumber;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherNumber() {
+        return teacherNumber;
+    }
+
+    public void setTeacherNumber(String teacherNumber) {
+        this.teacherNumber = teacherNumber;
+    }
+}

+ 60 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/Original.java

@@ -0,0 +1,60 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.enums.PageSizeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 试卷转换前记录
+ * @Author: CaoZixuan
+ * @Date: 2022-09-01
+ */
+public class Original {
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty("原始卷附件id")
+    private Long id;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
+
+    @ApiModelProperty("页数")
+    private Integer pages;
+
+    @ApiModelProperty("试卷纸张类型")
+    private PageSizeEnum pageSize;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Long updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Integer getPages() {
+        return pages;
+    }
+
+    public void setPages(Integer pages) {
+        this.pages = pages;
+    }
+
+    public PageSizeEnum getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(PageSizeEnum pageSize) {
+        this.pageSize = pageSize;
+    }
+}

+ 77 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/PaperPdfDto.java

@@ -0,0 +1,77 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.teachcloud.common.enums.PageSizeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.File;
+import java.io.Serializable;
+
+/**
+ * @Description: 试卷pdf dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/4/26
+ */
+public class PaperPdfDto implements Serializable {
+
+    @ApiModelProperty(name = "文件")
+    File file;
+
+    @ApiModelProperty(name = "页面大小")
+    int pages;
+
+    @ApiModelProperty(name = "卷型")
+    String type;
+
+    @ApiModelProperty(value = "pdf格式")
+    PageSizeEnum pageSize;
+
+    public PaperPdfDto() {
+
+    }
+
+    public PaperPdfDto(File file, int pages) {
+        this.file = file;
+        this.pages = pages;
+    }
+
+    public PaperPdfDto(String type, File file, int pages, PageSizeEnum pageSize) {
+        this.type = type;
+        this.file = file;
+        this.pages = pages;
+        this.pageSize = pageSize;
+    }
+
+    public PageSizeEnum getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(PageSizeEnum pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    public File getFile() {
+        return file;
+    }
+
+    public void setFile(File file) {
+        this.file = file;
+    }
+
+    public int getPages() {
+        return pages;
+    }
+
+    public void setPages(int pages) {
+        this.pages = pages;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+}

+ 119 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/PdfDto.java

@@ -0,0 +1,119 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.teachcloud.common.enums.PageSizeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: pdf dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/4/13
+ */
+public class PdfDto {
+
+    @ApiModelProperty(name = "路径")
+    String path;
+
+    @ApiModelProperty(name = "页数")
+    int pageCount = 0;
+
+    @ApiModelProperty(name = "实际页数")
+    int actualPageCount = 0;
+
+    @ApiModelProperty(name = "页面大小")
+    PageSizeEnum pageSize;
+
+    @ApiModelProperty(name = "序号")
+    int sequence = 0;
+
+    @ApiModelProperty(name = "tag")
+    boolean tag = true;
+
+    public PdfDto() {
+
+    }
+
+    public PdfDto(String path, PageSizeEnum pageSize) {
+        this.path = path;
+        this.pageSize = pageSize;
+    }
+
+    public PdfDto(String path, PageSizeEnum pageSize, int pageCount) {
+        this.path = path;
+        this.pageSize = pageSize;
+        this.pageCount = pageCount;
+    }
+
+    public PdfDto(String path, PageSizeEnum pageSize, int pageCount, int sequence) {
+        this.path = path;
+        this.pageSize = pageSize;
+        this.pageCount = pageCount;
+        this.sequence = sequence;
+    }
+
+    public PdfDto(PageSizeEnum pageSize, int pageCount, boolean tag) {
+        this.pageSize = pageSize;
+        this.pageCount = pageCount;
+        this.tag = tag;
+    }
+
+    public PdfDto(PageSizeEnum pageSize, int pageCount) {
+        this.pageSize = pageSize;
+        this.pageCount = pageCount;
+    }
+
+    public PdfDto(PageSizeEnum pageSize, int pageCount, int actualPageCount) {
+        this.pageSize = pageSize;
+        this.pageCount = pageCount;
+        this.actualPageCount = actualPageCount;
+    }
+
+    public boolean isTag() {
+        return tag;
+    }
+
+    public void setTag(boolean tag) {
+        this.tag = tag;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    public int getPageCount() {
+        return pageCount;
+    }
+
+    public void setPageCount(int pageCount) {
+        this.pageCount = pageCount;
+    }
+
+    public int getActualPageCount() {
+        return actualPageCount;
+    }
+
+    public void setActualPageCount(int actualPageCount) {
+        this.actualPageCount = actualPageCount;
+    }
+
+    public int getSequence() {
+        return sequence;
+    }
+
+    public void setSequence(int sequence) {
+        this.sequence = sequence;
+    }
+
+    public PageSizeEnum getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(PageSizeEnum pageSize) {
+        this.pageSize = pageSize;
+    }
+}

+ 50 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/PdfPackageDto.java

@@ -0,0 +1,50 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ */
+public class PdfPackageDto {
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 卷袋号
+     */
+    private String packageNumber;
+
+    /**
+     * 基础板块信息
+     */
+    private List<Map<String, String>> basicPlate;
+
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getPackageNumber() {
+        return packageNumber;
+    }
+
+    public void setPackageNumber(String packageNumber) {
+        this.packageNumber = packageNumber;
+    }
+
+    public List<Map<String, String>> getBasicPlate() {
+        return basicPlate;
+    }
+
+    public void setBasicPlate(List<Map<String, String>> basicPlate) {
+        this.basicPlate = basicPlate;
+    }
+}

+ 78 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/PdfSignDto.java

@@ -0,0 +1,78 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ */
+public class PdfSignDto {
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 卷袋号
+     */
+    private String packageNumber;
+
+    /**
+     * 基础板块信息
+     */
+    private List<Map<String, String>> basicPlate;
+
+    /**
+     * 考生表头信息
+     */
+    private Map<String, String> studentHeadPlate;
+
+    /**
+     * 考生信息
+     */
+    private List<Map<String, String>> studentPlate;
+
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getPackageNumber() {
+        return packageNumber;
+    }
+
+    public void setPackageNumber(String packageNumber) {
+        this.packageNumber = packageNumber;
+    }
+
+    public List<Map<String, String>> getBasicPlate() {
+        return basicPlate;
+    }
+
+    public void setBasicPlate(List<Map<String, String>> basicPlate) {
+        this.basicPlate = basicPlate;
+    }
+
+    public Map<String, String> getStudentHeadPlate() {
+        return studentHeadPlate;
+    }
+
+    public void setStudentHeadPlate(Map<String, String> studentHeadPlate) {
+        this.studentHeadPlate = studentHeadPlate;
+    }
+
+    public List<Map<String, String>> getStudentPlate() {
+        return studentPlate;
+    }
+
+    public void setStudentPlate(List<Map<String, String>> studentPlate) {
+        this.studentPlate = studentPlate;
+    }
+
+
+}

+ 272 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/PrintTaskDto.java

@@ -0,0 +1,272 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Date: 2021/3/29.
+ */
+public class PrintTaskDto {
+
+    private String examDetailId;
+    private String printPlanId;
+    private String printPlanName;
+    private Long examStartTime;
+    private Long examEndTime;
+    private String courseNameCode;
+    private String paperNumber;
+    private String examPlace;
+    private String examRoom;
+    private String singlePagesA3;
+    private Integer paperPages;
+    private Integer cardPages;
+    private Integer pagesA4;
+    private Integer totalSubjects;
+    private String status;
+    private Boolean validate;
+    private Long printStartTime;
+    private Long printEndTime;
+    private String packageCode;
+    private Boolean normal;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "印刷室id")
+    private Long printHouseId;
+
+    @ApiModelProperty(value = "印刷室编号")
+    private String printHouseCode;
+
+    @ApiModelProperty(value = "印刷室名称")
+    private String printHouseName;
+
+    @ApiModelProperty(value = "学期id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long semesterId;
+
+    @ApiModelProperty(value = "学期名称")
+    private String semesterName;
+
+    @ApiModelProperty(value = "考试id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examId;
+
+    @ApiModelProperty(value = "考试名称")
+    private String examName;
+
+    public String getExamDetailId() {
+        return examDetailId;
+    }
+
+    public void setExamDetailId(String examDetailId) {
+        this.examDetailId = examDetailId;
+    }
+
+    public String getPrintPlanId() {
+        return printPlanId;
+    }
+
+    public void setPrintPlanId(String printPlanId) {
+        this.printPlanId = printPlanId;
+    }
+
+    public String getPrintPlanName() {
+        return printPlanName;
+    }
+
+    public void setPrintPlanName(String printPlanName) {
+        this.printPlanName = printPlanName;
+    }
+
+    public Long getExamStartTime() {
+        return examStartTime;
+    }
+
+    public void setExamStartTime(Long examStartTime) {
+        this.examStartTime = examStartTime;
+    }
+
+    public Long getExamEndTime() {
+        return examEndTime;
+    }
+
+    public void setExamEndTime(Long examEndTime) {
+        this.examEndTime = examEndTime;
+    }
+
+    public String getCourseNameCode() {
+        return courseNameCode;
+    }
+
+    public void setCourseNameCode(String courseNameCode) {
+        this.courseNameCode = courseNameCode;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getExamPlace() {
+        return examPlace;
+    }
+
+    public void setExamPlace(String examPlace) {
+        this.examPlace = examPlace;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+
+    public String getSinglePagesA3() {
+        return singlePagesA3;
+    }
+
+    public void setSinglePagesA3(String singlePagesA3) {
+        this.singlePagesA3 = singlePagesA3;
+    }
+
+    public Integer getPaperPages() {
+        return paperPages;
+    }
+
+    public void setPaperPages(Integer paperPages) {
+        this.paperPages = paperPages;
+    }
+
+    public Integer getCardPages() {
+        return cardPages;
+    }
+
+    public void setCardPages(Integer cardPages) {
+        this.cardPages = cardPages;
+    }
+
+    public Integer getPagesA4() {
+        return pagesA4;
+    }
+
+    public void setPagesA4(Integer pagesA4) {
+        this.pagesA4 = pagesA4;
+    }
+
+    public Integer getTotalSubjects() {
+        return totalSubjects;
+    }
+
+    public void setTotalSubjects(Integer totalSubjects) {
+        this.totalSubjects = totalSubjects;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public Boolean getValidate() {
+        return validate;
+    }
+
+    public void setValidate(Boolean validate) {
+        this.validate = validate;
+    }
+
+    public Long getPrintStartTime() {
+        return printStartTime;
+    }
+
+    public void setPrintStartTime(Long printStartTime) {
+        this.printStartTime = printStartTime;
+    }
+
+    public Long getPrintEndTime() {
+        return printEndTime;
+    }
+
+    public void setPrintEndTime(Long printEndTime) {
+        this.printEndTime = printEndTime;
+    }
+
+    public String getPackageCode() {
+        return packageCode;
+    }
+
+    public void setPackageCode(String packageCode) {
+        this.packageCode = packageCode;
+    }
+
+    public Boolean getNormal() {
+        return normal;
+    }
+
+    public void setNormal(Boolean normal) {
+        this.normal = normal;
+    }
+
+    public Long getPrintHouseId() {
+        return printHouseId;
+    }
+
+    public void setPrintHouseId(Long printHouseId) {
+        this.printHouseId = printHouseId;
+    }
+
+    public String getPrintHouseCode() {
+        return printHouseCode;
+    }
+
+    public void setPrintHouseCode(String printHouseCode) {
+        this.printHouseCode = printHouseCode;
+    }
+
+    public String getPrintHouseName() {
+        return printHouseName;
+    }
+
+    public void setPrintHouseName(String printHouseName) {
+        this.printHouseName = printHouseName;
+    }
+
+    public Long getSemesterId() {
+        return semesterId;
+    }
+
+    public void setSemesterId(Long semesterId) {
+        this.semesterId = semesterId;
+    }
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getExamName() {
+        return examName;
+    }
+
+    public void setExamName(String examName) {
+        this.examName = examName;
+    }
+}

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

@@ -0,0 +1,89 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+/**
+ * @Date: 2021/3/29.
+ */
+public class PrintTaskTotalDto {
+
+    private Integer totalSubjects;
+    private Integer packageCount;
+    private Integer paperCount;
+    private Integer paperPages;
+    private Integer cardPages;
+    private Integer pagesA4;
+    private Integer paperPagesLeft;
+    private Integer cardPagesLeft;
+    private Integer pagesA4Left;
+
+    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 getPaperPages() {
+        return paperPages;
+    }
+
+    public void setPaperPages(Integer paperPages) {
+        this.paperPages = paperPages;
+    }
+
+    public Integer getCardPages() {
+        return cardPages;
+    }
+
+    public void setCardPages(Integer cardPages) {
+        this.cardPages = cardPages;
+    }
+
+    public Integer getPagesA4() {
+        return pagesA4;
+    }
+
+    public void setPagesA4(Integer pagesA4) {
+        this.pagesA4 = pagesA4;
+    }
+
+    public Integer getPaperPagesLeft() {
+        return paperPagesLeft;
+    }
+
+    public void setPaperPagesLeft(Integer paperPagesLeft) {
+        this.paperPagesLeft = paperPagesLeft;
+    }
+
+    public Integer getCardPagesLeft() {
+        return cardPagesLeft;
+    }
+
+    public void setCardPagesLeft(Integer cardPagesLeft) {
+        this.cardPagesLeft = cardPagesLeft;
+    }
+
+    public Integer getPagesA4Left() {
+        return pagesA4Left;
+    }
+
+    public void setPagesA4Left(Integer pagesA4Left) {
+        this.pagesA4Left = pagesA4Left;
+    }
+}

+ 64 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/RelatePaperDto.java

@@ -0,0 +1,64 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import java.util.List;
+
+/**
+ * @Date: 2021/3/29.
+ */
+public class RelatePaperDto {
+
+    private String id;
+    private String schoolId;
+    private String courseCode;
+    private String courseName;
+    private String paperNumber;
+    private List<String> paperTypes;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(String schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    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 List<String> getPaperTypes() {
+        return paperTypes;
+    }
+
+    public void setPaperTypes(List<String> paperTypes) {
+        this.paperTypes = paperTypes;
+    }
+}

+ 92 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ReviewLogDto.java

@@ -0,0 +1,92 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.enums.FlowApproveOperationEnum;
+import com.qmth.teachcloud.common.enums.FlowApprovePassEnum;
+
+import java.util.Objects;
+
+/**
+ * @Date: 2021/4/1.
+ */
+public class ReviewLogDto {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+    private FlowApproveOperationEnum approvePass;
+    private String reviewStatus;
+    private String reason;
+    private String setUp;
+    private String operateId;
+    private String operateName;
+    private Long operateTime;
+
+    public FlowApproveOperationEnum getApprovePass() {
+        return approvePass;
+    }
+
+    public void setApprovePass(FlowApproveOperationEnum approvePass) {
+        this.approvePass = approvePass;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getReviewStatus() {
+        if (Objects.nonNull(approvePass)) {
+            return approvePass.getTitle();
+        } else {
+            return reviewStatus;
+        }
+    }
+
+    public void setReviewStatus(String reviewStatus) {
+        this.reviewStatus = reviewStatus;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public String getOperateId() {
+        return operateId;
+    }
+
+    public void setOperateId(String operateId) {
+        this.operateId = operateId;
+    }
+
+    public String getOperateName() {
+        return operateName;
+    }
+
+    public void setOperateName(String operateName) {
+        this.operateName = operateName;
+    }
+
+    public Long getOperateTime() {
+        return operateTime;
+    }
+
+    public void setOperateTime(Long operateTime) {
+        this.operateTime = operateTime;
+    }
+
+    public String getSetUp() {
+        return setUp;
+    }
+
+    public void setSetUp(String setUp) {
+        this.setUp = setUp;
+    }
+}

+ 32 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ReviewSampleDto.java

@@ -0,0 +1,32 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 审核样品Dto(来自 exam_task_detail 和 exam_task_paper_log)
+ * @Author: CaoZixuan
+ * @Date: 2021-04-27
+ */
+public class ReviewSampleDto {
+    @ApiModelProperty(value = "试卷副本信息")
+    private String paperAttachmentIds;
+
+    @ApiModelProperty(value = "审核副本信息")
+    private String paperConfirmAttachmentIds;
+
+    public String getPaperAttachmentIds() {
+        return paperAttachmentIds;
+    }
+
+    public void setPaperAttachmentIds(String paperAttachmentIds) {
+        this.paperAttachmentIds = paperAttachmentIds;
+    }
+
+    public String getPaperConfirmAttachmentIds() {
+        return paperConfirmAttachmentIds;
+    }
+
+    public void setPaperConfirmAttachmentIds(String paperConfirmAttachmentIds) {
+        this.paperConfirmAttachmentIds = paperConfirmAttachmentIds;
+    }
+}

+ 24 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/StudentExtendDto.java

@@ -0,0 +1,24 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+public class StudentExtendDto {
+
+    private String fieldName;
+
+    private Object value;
+
+    public String getFieldName() {
+        return fieldName;
+    }
+
+    public void setFieldName(String fieldName) {
+        this.fieldName = fieldName;
+    }
+
+    public Object getValue() {
+        return value;
+    }
+
+    public void setValue(Object value) {
+        this.value = value;
+    }
+}

+ 75 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/SyncExamCardDto.java

@@ -0,0 +1,75 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.distributed.print.business.entity.ExamCard;
+
+/**
+ * @Description: 题卡同步 DTO
+ */
+public class SyncExamCardDto extends ExamCard {
+
+    private String courseCode;
+
+    private String courseName;
+
+    private String paperNumber;
+
+    private String sequence;
+
+    private String title;
+
+    private String content;
+
+    @Override
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    @Override
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    @Override
+    public String getCourseName() {
+        return courseName;
+    }
+
+    @Override
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getSequence() {
+        return sequence;
+    }
+
+    public void setSequence(String sequence) {
+        this.sequence = sequence;
+    }
+
+    @Override
+    public String getTitle() {
+        return title;
+    }
+
+    @Override
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+}

+ 61 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/SyncExamStudentDto.java

@@ -0,0 +1,61 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.distributed.print.business.entity.ExamStudent;
+
+/**
+ * @Description: 考生同步 DTO
+ */
+public class SyncExamStudentDto extends ExamStudent {
+
+    private String courseCode;
+
+    private String courseName;
+
+    private String paperNumber;
+
+    private String sequence;
+
+    private String packageCode;
+
+    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;
+    }
+
+    @Override
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    @Override
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getSequence() {
+        return sequence;
+    }
+
+    public void setSequence(String sequence) {
+        this.sequence = sequence;
+    }
+
+    public String getPackageCode() {
+        return packageCode;
+    }
+
+    public void setPackageCode(String packageCode) {
+        this.packageCode = packageCode;
+    }
+}

+ 78 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/TCStatisticsDto.java

@@ -0,0 +1,78 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.qmth.distributed.print.business.entity.TCStatistics;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+/**
+ * @Description: 命题统计导入 dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/9/10
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class TCStatisticsDto extends TCStatistics implements Serializable {
+
+    @ApiModelProperty(value = "完成状态,FINISH:已完成,UN_FINISH:未完成")
+    private String statusStr;
+
+    @ApiModelProperty(value = "印刷计划名称")
+    private String printPlanName;
+
+    @ApiModelProperty(value = "学生数量")
+    int examStudentCount;
+
+    @ApiModelProperty(value = "抽卷数")
+    int drawCount;
+
+    @ApiModelProperty(value = "备份数")
+    int backupCount;
+
+    public int getExamStudentCount() {
+        return examStudentCount;
+    }
+
+    public void setExamStudentCount(int examStudentCount) {
+        this.examStudentCount = examStudentCount;
+    }
+
+    public int getDrawCount() {
+        return drawCount;
+    }
+
+    public void setDrawCount(int drawCount) {
+        this.drawCount = drawCount;
+    }
+
+    public int getBackupCount() {
+        return backupCount;
+    }
+
+    public void setBackupCount(int backupCount) {
+        this.backupCount = backupCount;
+    }
+
+    public String getPrintPlanName() {
+        return printPlanName;
+    }
+
+    public void setPrintPlanName(String printPlanName) {
+        this.printPlanName = printPlanName;
+    }
+
+    public String getStatusStr() {
+        if (Objects.nonNull(this.getStatus())) {
+            return this.getStatus().getTitle();
+        } else {
+            return statusStr;
+        }
+    }
+
+    public void setStatusStr(String statusStr) {
+        this.statusStr = statusStr;
+    }
+}

+ 35 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/TaskPrintExtendFieldsDto.java

@@ -0,0 +1,35 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+/**
+ * @Date: 2021/3/29.
+ */
+public class TaskPrintExtendFieldsDto {
+
+    private String name;
+    private String code;
+    private Boolean enable;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+}

+ 44 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/TaskPrintHouseDto.java

@@ -0,0 +1,44 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+/**
+ * @Date: 2021/3/29.
+ */
+public class TaskPrintHouseDto {
+
+    private String printHouseId;
+    private String printHouseName;
+    private String campusId;
+    private String campusName;
+
+    public String getPrintHouseId() {
+        return printHouseId;
+    }
+
+    public void setPrintHouseId(String printHouseId) {
+        this.printHouseId = printHouseId;
+    }
+
+    public String getPrintHouseName() {
+        return printHouseName;
+    }
+
+    public void setPrintHouseName(String printHouseName) {
+        this.printHouseName = printHouseName;
+    }
+
+    public String getCampusId() {
+        return campusId;
+    }
+
+    public void setCampusId(String campusId) {
+        this.campusId = campusId;
+    }
+
+    public String getCampusName() {
+        return campusName;
+    }
+
+    public void setCampusName(String campusName) {
+        this.campusName = campusName;
+    }
+}

+ 44 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/TaskTotalLeftDto.java

@@ -0,0 +1,44 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+/**
+ * @Date: 2021/4/12.
+ */
+public class TaskTotalLeftDto {
+
+    private Integer paperPagesA3;
+    private Integer cardPagesA3;
+    private Integer printPaperCount;
+    private Integer printCardCount;
+
+    public Integer getPaperPagesA3() {
+        return paperPagesA3;
+    }
+
+    public void setPaperPagesA3(Integer paperPagesA3) {
+        this.paperPagesA3 = paperPagesA3;
+    }
+
+    public Integer getCardPagesA3() {
+        return cardPagesA3;
+    }
+
+    public void setCardPagesA3(Integer cardPagesA3) {
+        this.cardPagesA3 = cardPagesA3;
+    }
+
+    public Integer getPrintPaperCount() {
+        return printPaperCount;
+    }
+
+    public void setPrintPaperCount(Integer printPaperCount) {
+        this.printPaperCount = printPaperCount;
+    }
+
+    public Integer getPrintCardCount() {
+        return printCardCount;
+    }
+
+    public void setPrintCardCount(Integer printCardCount) {
+        this.printCardCount = printCardCount;
+    }
+}

+ 117 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/TemplateDto.java

@@ -0,0 +1,117 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.distributed.print.business.enums.TemplateTypeEnum;
+import com.qmth.teachcloud.common.entity.SysOrg;
+import com.qmth.teachcloud.common.enums.ClassifyEnum;
+
+import java.util.List;
+
+/**
+ * @Date: 2021/3/29.
+ */
+public class TemplateDto {
+
+    private String id;
+    private String schoolId;
+    private String name;
+    private ClassifyEnum classify;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long attachmentId;
+    private Boolean enable;
+    private String remark;
+    private String createId;
+    private Long createTime;
+    private String cardId;
+    private List<SysOrg> orgs;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(String schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public ClassifyEnum getClassify() {
+        return classify;
+    }
+
+    public void setClassify(ClassifyEnum classify) {
+        this.classify = classify;
+    }
+
+    public Long getAttachmentId() {
+        return attachmentId;
+    }
+
+    public void setAttachmentId(Long attachmentId) {
+        this.attachmentId = attachmentId;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getCreateId() {
+        return createId;
+    }
+
+    public void setCreateId(String createId) {
+        this.createId = createId;
+    }
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getCardId() {
+        return cardId;
+    }
+
+    public void setCardId(String cardId) {
+        this.cardId = cardId;
+    }
+
+    public List<SysOrg> getOrgs() {
+        return orgs;
+    }
+
+    public void setOrgs(List<SysOrg> orgs) {
+        this.orgs = orgs;
+    }
+}

+ 30 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ThirdObjectDto.java

@@ -0,0 +1,30 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+
+/**
+ * @Date: 2021/3/29.
+ */
+public class ThirdObjectDto {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long thirdRelateId;
+    private String thirdRelateName;
+
+    public Long getThirdRelateId() {
+        return thirdRelateId;
+    }
+
+    public void setThirdRelateId(Long thirdRelateId) {
+        this.thirdRelateId = thirdRelateId;
+    }
+
+    public String getThirdRelateName() {
+        return thirdRelateName;
+    }
+
+    public void setThirdRelateName(String thirdRelateName) {
+        this.thirdRelateName = thirdRelateName;
+    }
+}

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

@@ -0,0 +1,89 @@
+package com.qmth.distributed.print.business.bean.dto.approvalForm;
+
+import com.qmth.teachcloud.common.enums.FlowApproveOperationEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 命题任务审批表 - 审批信息
+ * @Author: CaoZixuan
+ * @Date: 2021-09-06
+ */
+public class ApprovalInfo {
+
+    @ApiModelProperty(value = "审批人id")
+    private Long approveId;
+
+    @ApiModelProperty(value = "审批人名称")
+    private String approveName;
+
+    @ApiModelProperty(value = "审批时间")
+    private Long time;
+
+    @ApiModelProperty(value = "审批意见(通过 + 备注信息)")
+    private String remark;
+
+    @ApiModelProperty(value = "审核级别(2:主任审核、3:院长审核)")
+    private int level;
+
+    @ApiModelProperty(value = "审核机构名称")
+    private String approveOrgName;
+
+    @ApiModelProperty(value = "审核类型")
+    private FlowApproveOperationEnum approveType;
+
+    public Long getApproveId() {
+        return approveId;
+    }
+
+    public void setApproveId(Long approveId) {
+        this.approveId = approveId;
+    }
+
+    public String getApproveName() {
+        return approveName;
+    }
+
+    public void setApproveName(String approveName) {
+        this.approveName = approveName;
+    }
+
+    public Long getTime() {
+        return time;
+    }
+
+    public void setTime(Long time) {
+        this.time = time;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public int getLevel() {
+        return level;
+    }
+
+    public void setLevel(int level) {
+        this.level = level;
+    }
+
+    public String getApproveOrgName() {
+        return approveOrgName;
+    }
+
+    public void setApproveOrgName(String approveOrgName) {
+        this.approveOrgName = approveOrgName;
+    }
+
+    public FlowApproveOperationEnum getApproveType() {
+        return approveType;
+    }
+
+    public void setApproveType(FlowApproveOperationEnum approveType) {
+        this.approveType = approveType;
+    }
+}

+ 124 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/approvalForm/BasicInfo.java

@@ -0,0 +1,124 @@
+package com.qmth.distributed.print.business.bean.dto.approvalForm;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 命题任务审批表 - 基础信息
+ * @Author: CaoZixuan
+ * @Date: 2021-09-06
+ */
+public class BasicInfo {
+    @ApiModelProperty(value = "学院id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long collegeId;
+
+    @ApiModelProperty(value = "学院名称")
+    private String collegeName;
+
+    @ApiModelProperty(value = "教研室id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long teachingRoomId;
+
+    @ApiModelProperty(value = "教研室名称")
+    private String teachingRoomName;
+
+    @ApiModelProperty(value = "试卷编号")
+    private String paperNumber;
+
+    @ApiModelProperty(value = "试卷名称")
+    private String paperName;
+
+    @ApiModelProperty(value = "考试开始时间")
+    private Long examStartTime;
+
+    @ApiModelProperty(value = "考试结束时间")
+    private Long examEndTime;
+
+    @ApiModelProperty(value = "拟卷老师")
+    private String teacherName;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    public Long getCollegeId() {
+        return collegeId;
+    }
+
+    public void setCollegeId(Long collegeId) {
+        this.collegeId = collegeId;
+    }
+
+    public String getCollegeName() {
+        return collegeName;
+    }
+
+    public void setCollegeName(String collegeName) {
+        this.collegeName = collegeName;
+    }
+
+    public Long getTeachingRoomId() {
+        return teachingRoomId;
+    }
+
+    public void setTeachingRoomId(Long teachingRoomId) {
+        this.teachingRoomId = teachingRoomId;
+    }
+
+    public String getTeachingRoomName() {
+        return teachingRoomName;
+    }
+
+    public void setTeachingRoomName(String teachingRoomName) {
+        this.teachingRoomName = teachingRoomName;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getPaperName() {
+        return paperName;
+    }
+
+    public void setPaperName(String paperName) {
+        this.paperName = paperName;
+    }
+
+    public Long getExamStartTime() {
+        return examStartTime;
+    }
+
+    public void setExamStartTime(Long examStartTime) {
+        this.examStartTime = examStartTime;
+    }
+
+    public Long getExamEndTime() {
+        return examEndTime;
+    }
+
+    public void setExamEndTime(Long examEndTime) {
+        this.examEndTime = examEndTime;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+}

+ 228 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/approvalForm/ExamPackageDetail.java

@@ -0,0 +1,228 @@
+package com.qmth.distributed.print.business.bean.dto.approvalForm;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.distributed.print.business.enums.BackupMethodEnum;
+import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
+import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 试卷包详情
+ * @Author: CaoZixuan
+ * @Date: 2021-09-07
+ */
+public class ExamPackageDetail {
+
+    @ApiModelProperty(value = "考场表id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examDetailId;
+
+    @ApiModelProperty(value = "考试开始时间")
+    private Long examStartTime;
+
+    @ApiModelProperty(value = "考试结束时间")
+    private Long examEndTime;
+
+    @ApiModelProperty(value = "考点")
+    private String examPlace;
+
+    @ApiModelProperty(value = "考场")
+    private String examRoom;
+
+    @ApiModelProperty(value = "卷袋编号")
+    private String packageCode;
+
+    @ApiModelProperty(value = "考场表状态")
+    private ExamDetailStatusEnum examDetailStatus;
+
+    @ApiModelProperty(value = "考场课程表id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examDetailCourseId;
+
+    @ApiModelProperty(value = "课程编号")
+    private String courseCode;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "试卷编号")
+    private String paperNumber;
+
+    @ApiModelProperty(value = "考场课程表人数统计")
+    private Integer examDetailCourseTotalSubjects;
+
+    @ApiModelProperty(value = "考察课程表班级合计")
+    private String clazzIds;
+
+    @ApiModelProperty(value = "印刷计划id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examPrintPlanId;
+
+    @ApiModelProperty(value = "印刷计划名称")
+    private String examPrintPlanName;
+
+    @ApiModelProperty(value = "印刷计划印品")
+    private String printContent;
+
+    @ApiModelProperty(value = "备份方式")
+    private BackupMethodEnum backupMethod;
+
+    @ApiModelProperty(value = "备份数量")
+    private Integer backupCount;
+
+    @ApiModelProperty(value = "印刷计划状态")
+    private PrintPlanStatusEnum examPrintPlanStatus;
+
+    public Long getExamDetailId() {
+        return examDetailId;
+    }
+
+    public void setExamDetailId(Long examDetailId) {
+        this.examDetailId = examDetailId;
+    }
+
+    public Long getExamStartTime() {
+        return examStartTime;
+    }
+
+    public void setExamStartTime(Long examStartTime) {
+        this.examStartTime = examStartTime;
+    }
+
+    public Long getExamEndTime() {
+        return examEndTime;
+    }
+
+    public void setExamEndTime(Long examEndTime) {
+        this.examEndTime = examEndTime;
+    }
+
+    public String getExamPlace() {
+        return examPlace;
+    }
+
+    public void setExamPlace(String examPlace) {
+        this.examPlace = examPlace;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+
+    public String getPackageCode() {
+        return packageCode;
+    }
+
+    public void setPackageCode(String packageCode) {
+        this.packageCode = packageCode;
+    }
+
+    public ExamDetailStatusEnum getExamDetailStatus() {
+        return examDetailStatus;
+    }
+
+    public void setExamDetailStatus(ExamDetailStatusEnum examDetailStatus) {
+        this.examDetailStatus = examDetailStatus;
+    }
+
+    public Long getExamDetailCourseId() {
+        return examDetailCourseId;
+    }
+
+    public void setExamDetailCourseId(Long examDetailCourseId) {
+        this.examDetailCourseId = examDetailCourseId;
+    }
+
+    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 Integer getExamDetailCourseTotalSubjects() {
+        return examDetailCourseTotalSubjects;
+    }
+
+    public void setExamDetailCourseTotalSubjects(Integer examDetailCourseTotalSubjects) {
+        this.examDetailCourseTotalSubjects = examDetailCourseTotalSubjects;
+    }
+
+    public String getClazzIds() {
+        return clazzIds;
+    }
+
+    public void setClazzIds(String clazzIds) {
+        this.clazzIds = clazzIds;
+    }
+
+    public Long getExamPrintPlanId() {
+        return examPrintPlanId;
+    }
+
+    public void setExamPrintPlanId(Long examPrintPlanId) {
+        this.examPrintPlanId = examPrintPlanId;
+    }
+
+    public String getExamPrintPlanName() {
+        return examPrintPlanName;
+    }
+
+    public void setExamPrintPlanName(String examPrintPlanName) {
+        this.examPrintPlanName = examPrintPlanName;
+    }
+
+    public String getPrintContent() {
+        return printContent;
+    }
+
+    public void setPrintContent(String printContent) {
+        this.printContent = printContent;
+    }
+
+    public BackupMethodEnum getBackupMethod() {
+        return backupMethod;
+    }
+
+    public void setBackupMethod(BackupMethodEnum backupMethod) {
+        this.backupMethod = backupMethod;
+    }
+
+    public Integer getBackupCount() {
+        return backupCount;
+    }
+
+    public void setBackupCount(Integer backupCount) {
+        this.backupCount = backupCount;
+    }
+
+    public PrintPlanStatusEnum getExamPrintPlanStatus() {
+        return examPrintPlanStatus;
+    }
+
+    public void setExamPrintPlanStatus(PrintPlanStatusEnum examPrintPlanStatus) {
+        this.examPrintPlanStatus = examPrintPlanStatus;
+    }
+}

+ 65 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/approvalForm/ExamRoomInfo.java

@@ -0,0 +1,65 @@
+package com.qmth.distributed.print.business.bean.dto.approvalForm;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 命题任务审批表 - 考场信息
+ * @Author: CaoZixuan
+ * @Date: 2021-09-06
+ */
+public class ExamRoomInfo {
+    @ApiModelProperty(value = "卷袋编号")
+    private String packageCode;
+
+//    @ApiModelProperty(value = "校区名称")
+//    private String campusNames;
+
+    @ApiModelProperty(value = "使用班级(考场)")
+    private String clazzNames;
+
+    @ApiModelProperty(value = "人数")
+    private Integer studentCount;
+
+    @ApiModelProperty(value = "总印份数(人数 + 备用)")
+    private String printCount;
+
+    public String getPackageCode() {
+        return packageCode;
+    }
+
+    public void setPackageCode(String packageCode) {
+        this.packageCode = packageCode;
+    }
+
+//    public String getCampusNames() {
+//        return campusNames;
+//    }
+//
+//    public void setCampusNames(String campusNames) {
+//        this.campusNames = campusNames;
+//    }
+
+    public String getClazzNames() {
+        return clazzNames;
+    }
+
+    public void setClazzNames(String clazzNames) {
+        this.clazzNames = clazzNames;
+    }
+
+    public Integer getStudentCount() {
+        return studentCount;
+    }
+
+    public void setStudentCount(Integer studentCount) {
+        this.studentCount = studentCount;
+    }
+
+    public String getPrintCount() {
+        return printCount;
+    }
+
+    public void setPrintCount(String printCount) {
+        this.printCount = printCount;
+    }
+}

+ 46 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/approvalForm/ExamTaskApprovalFormDto.java

@@ -0,0 +1,46 @@
+package com.qmth.distributed.print.business.bean.dto.approvalForm;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Description: 命题任务审批表Dto
+ * @Author: CaoZixuan
+ * @Date: 2021-09-06
+ */
+public class ExamTaskApprovalFormDto {
+
+    @ApiModelProperty(value = "基础信息")
+    private BasicInfo basicInfo;
+
+    @ApiModelProperty(value = "考场信息集合")
+    private List<ExamRoomInfo> examRoomInfoList;
+
+    @ApiModelProperty(value = "审批信息集合")
+    private List<ApprovalInfo> approvalInfoList;
+
+    public BasicInfo getBasicInfo() {
+        return basicInfo;
+    }
+
+    public void setBasicInfo(BasicInfo basicInfo) {
+        this.basicInfo = basicInfo;
+    }
+
+    public List<ExamRoomInfo> getExamRoomInfoList() {
+        return examRoomInfoList;
+    }
+
+    public void setExamRoomInfoList(List<ExamRoomInfo> examRoomInfoList) {
+        this.examRoomInfoList = examRoomInfoList;
+    }
+
+    public List<ApprovalInfo> getApprovalInfoList() {
+        return approvalInfoList;
+    }
+
+    public void setApprovalInfoList(List<ApprovalInfo> approvalInfoList) {
+        this.approvalInfoList = approvalInfoList;
+    }
+}

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

@@ -0,0 +1,80 @@
+package com.qmth.distributed.print.business.bean.dto.examObject;
+
+import com.qmth.distributed.print.business.bean.dto.approvalForm.ExamRoomInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author: CaoZixuan
+ * @Date:
+ */
+public class ExamObjectDto {
+
+    @ApiModelProperty(value = "考试开始时间")
+    private Long examStartTime;
+
+    @ApiModelProperty(value = "考试结束时间")
+    private Long examEndTime;
+
+    @ApiModelProperty(value = "总印量")
+    private Integer printTotalCount;
+
+    @ApiModelProperty(value = "试卷编号")
+    private String paperNumber;
+
+    @ApiModelProperty(value = "试卷名称")
+    private String paperName;
+
+    @ApiModelProperty(value = "考场信息集合")
+    private List<ExamRoomInfo> examRoomInfoList;
+
+    public Long getExamStartTime() {
+        return examStartTime;
+    }
+
+    public void setExamStartTime(Long examStartTime) {
+        this.examStartTime = examStartTime;
+    }
+
+    public Long getExamEndTime() {
+        return examEndTime;
+    }
+
+    public void setExamEndTime(Long examEndTime) {
+        this.examEndTime = examEndTime;
+    }
+
+    public Integer getPrintTotalCount() {
+        return printTotalCount;
+    }
+
+    public void setPrintTotalCount(Integer printTotalCount) {
+        this.printTotalCount = printTotalCount;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getPaperName() {
+        return paperName;
+    }
+
+    public void setPaperName(String paperName) {
+        this.paperName = paperName;
+    }
+
+    public List<ExamRoomInfo> getExamRoomInfoList() {
+        return examRoomInfoList;
+    }
+
+    public void setExamRoomInfoList(List<ExamRoomInfo> examRoomInfoList) {
+        this.examRoomInfoList = examRoomInfoList;
+    }
+}

+ 111 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/excel/ExamStudentImportDto.java

@@ -0,0 +1,111 @@
+package com.qmth.distributed.print.business.bean.dto.excel;
+
+import com.qmth.teachcloud.common.annotation.ExcelImportTempleteVaild;
+import com.qmth.teachcloud.common.annotation.ExcelNote;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @Description: 考生导入dto
+ * @Author: CaoZixuan
+ * @Date: 2022-09-02
+ */
+@ExcelImportTempleteVaild(value = true)
+public class ExamStudentImportDto implements Serializable {
+    @ExcelNote(value = "姓名")
+    @NotNull
+    private String studentName;
+
+    @ExcelNote(value = "学号")
+    @NotNull
+    private String studentCode;
+
+    @ExcelNote(value = "手机号")
+    private String phoneNumber;
+
+    @ExcelNote(value = "学院")
+    @NotNull
+    private String collegeName;
+
+    @ExcelNote(value = "专业")
+    @NotNull
+    private String majorName;
+
+    @ExcelNote(value = "班级")
+    @NotNull
+    private String clazzName;
+
+    @ExcelNote(value = "考点")
+    @NotNull
+    private String examPlace;
+
+    @ExcelNote(value = "考场")
+    @NotNull
+    private String examRoom;
+
+
+    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 getPhoneNumber() {
+        return phoneNumber;
+    }
+
+    public void setPhoneNumber(String phoneNumber) {
+        this.phoneNumber = phoneNumber;
+    }
+
+    public String getCollegeName() {
+        return collegeName;
+    }
+
+    public void setCollegeName(String collegeName) {
+        this.collegeName = collegeName;
+    }
+
+    public String getMajorName() {
+        return majorName;
+    }
+
+    public void setMajorName(String majorName) {
+        this.majorName = majorName;
+    }
+
+    public String getClazzName() {
+        return clazzName;
+    }
+
+    public void setClazzName(String clazzName) {
+        this.clazzName = clazzName;
+    }
+
+    public String getExamPlace() {
+        return examPlace;
+    }
+
+    public void setExamPlace(String examPlace) {
+        this.examPlace = examPlace;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+}

+ 81 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/excel/GradePaperDimensionAbilityDto.java

@@ -0,0 +1,81 @@
+package com.qmth.distributed.print.business.bean.dto.excel;
+
+import com.qmth.teachcloud.common.annotation.ExcelImportTempleteVaild;
+import com.qmth.teachcloud.common.annotation.ExcelNote;
+import com.qmth.teachcloud.common.annotation.ExcelProperty;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description: 分析试卷能力维度数据导入类
+ * @Author: CaoZixuan
+ * @Date: 2022-05-27
+ */
+@ExcelImportTempleteVaild(value = true)
+public class GradePaperDimensionAbilityDto {
+
+    @ExcelNote(value = "课程代码")
+    @ExcelProperty(name = "课程代码", width = 30, index = 1)
+    @NotNull
+    private String courseCode;
+
+    @ExcelNote(value = "课程名称")
+    @ExcelProperty(name = "课程名称", width = 30, index = 2)
+    @NotNull
+    private String courseName;
+
+    @ExcelNote(value = "一级能力维度")
+    @ExcelProperty(name = "一级能力维度", width = 30, index = 3)
+    @NotNull
+    private String namePrimary;
+
+    @ExcelNote(value = "一级维度编号")
+    @ExcelProperty(name = "一级维度编号", width = 30, index = 4)
+    @NotNull
+    private String codePrimary;
+
+    @ExcelNote(value = "一级维度术语解释")
+    @ExcelProperty(name = "一级维度术语解释", width = 30, index = 5)
+    @NotNull
+    private String interpret;
+
+    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 getNamePrimary() {
+        return namePrimary;
+    }
+
+    public void setNamePrimary(String namePrimary) {
+        this.namePrimary = namePrimary;
+    }
+
+    public String getCodePrimary() {
+        return codePrimary;
+    }
+
+    public void setCodePrimary(String codePrimary) {
+        this.codePrimary = codePrimary;
+    }
+
+    public String getInterpret() {
+        return interpret;
+    }
+
+    public void setInterpret(String interpret) {
+        this.interpret = interpret;
+    }
+}

+ 94 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/excel/GradePaperDimensionKnowledgeDto.java

@@ -0,0 +1,94 @@
+package com.qmth.distributed.print.business.bean.dto.excel;
+
+import com.qmth.teachcloud.common.annotation.ExcelImportTempleteVaild;
+import com.qmth.teachcloud.common.annotation.ExcelNote;
+import com.qmth.teachcloud.common.annotation.ExcelProperty;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description: 分析试卷知识维度数据导入类
+ * @Author: CaoZixuan
+ * @Date: 2022-05-27
+ */
+@ExcelImportTempleteVaild(value = true)
+public class GradePaperDimensionKnowledgeDto {
+
+    @ExcelNote(value = "课程代码")
+    @ExcelProperty(name = "课程代码", width = 30, index = 1)
+    @NotNull
+    private String courseCode;
+
+    @ExcelNote(value = "课程名称")
+    @ExcelProperty(name = "课程名称", width = 30, index = 2)
+    @NotNull
+    private String courseName;
+
+    @ExcelNote(value = "一级知识维度")
+    @ExcelProperty(name = "一级知识维度", width = 30, index = 3)
+    @NotNull
+    private String namePrimary;
+
+    @ExcelNote(value = "一级维度编号")
+    @ExcelProperty(name = "一级维度编号", width = 30, index = 4)
+    @NotNull
+    private String codePrimary;
+
+    @ExcelNote(value = "二级知识维度")
+    @ExcelProperty(name = "二级知识维度", width = 30, index = 5)
+    @NotNull
+    private String nameSecond;
+
+    @ExcelNote(value = "二级维度编号")
+    @ExcelProperty(name = "二级维度编号", width = 30, index = 6)
+    @NotNull
+    private String codeSecond;
+
+    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 getNamePrimary() {
+        return namePrimary;
+    }
+
+    public void setNamePrimary(String namePrimary) {
+        this.namePrimary = namePrimary;
+    }
+
+    public String getCodePrimary() {
+        return codePrimary;
+    }
+
+    public void setCodePrimary(String codePrimary) {
+        this.codePrimary = codePrimary;
+    }
+
+    public String getNameSecond() {
+        return nameSecond;
+    }
+
+    public void setNameSecond(String nameSecond) {
+        this.nameSecond = nameSecond;
+    }
+
+    public String getCodeSecond() {
+        return codeSecond;
+    }
+
+    public void setCodeSecond(String codeSecond) {
+        this.codeSecond = codeSecond;
+    }
+}

+ 172 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/excel/GradePaperStructDto.java

@@ -0,0 +1,172 @@
+package com.qmth.distributed.print.business.bean.dto.excel;
+
+import com.qmth.teachcloud.common.annotation.ExcelImportTempleteVaild;
+import com.qmth.teachcloud.common.annotation.ExcelNote;
+import com.qmth.teachcloud.common.annotation.ExcelProperty;
+import com.qmth.teachcloud.common.annotation.excelStyle.ExcelDataStyle;
+import com.qmth.teachcloud.common.annotation.excelStyle.ExcelHeaderStyle;
+import org.apache.poi.ss.usermodel.IndexedColors;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description: 分析试卷结构excel操作类
+ * @Author: CaoZixuan
+ * @Date: 2022-05-30
+ */
+@ExcelHeaderStyle
+@ExcelImportTempleteVaild(value = true)
+public class GradePaperStructDto {
+    @ExcelNote(value = "课程代码")
+    @ExcelProperty(name = "课程代码", width = 30, index = 1)
+    @ExcelDataStyle(lock = true)
+    @NotNull
+    private String courseCode;
+
+    @ExcelNote(value = "课程名称")
+    @ExcelProperty(name = "课程名称", width = 30, index = 2)
+    @ExcelDataStyle(lock = true)
+    @NotNull
+    private String courseName;
+
+    @ExcelNote(value = "试卷编号")
+    @ExcelProperty(name = "试卷编号", width = 30, index = 3)
+    @ExcelDataStyle(lock = true)
+    @NotNull
+    private String paperNumber;
+
+    @ExcelNote(value = "试卷类型")
+    @ExcelProperty(name = "试卷类型", width = 30, index = 4)
+    @ExcelDataStyle(lock = true)
+    @NotNull
+    private String paperType;
+
+    @ExcelNote(value = "题目类型")
+    @ExcelProperty(name = "题目类型", width = 30, index = 5)
+    @ExcelDataStyle(lock = true)
+    @NotNull
+    private String numberType;
+
+    @ExcelNote(value = "大题名称")
+    @ExcelProperty(name = "大题名称", width = 30, index = 6)
+    @ExcelDataStyle(lock = true)
+    @NotNull
+    private String bigTopicName;
+
+    @ExcelNote(value = "大题号")
+    @ExcelProperty(name = "大题号", width = 30, index = 7)
+    @ExcelDataStyle(lock = true)
+    @NotNull
+    private String bigQuestionNumber;
+
+    @ExcelNote(value = "小题号")
+    @ExcelProperty(name = "小题号", width = 30, index = 8)
+    @ExcelDataStyle(lock = true)
+    @NotNull
+    private String smallQuestionNumber;
+
+    @ExcelNote(value = "题目满分")
+    @ExcelProperty(name = "题目满分", width = 30, index = 9)
+    @ExcelDataStyle(lock = true)
+    @NotNull
+    private String fullScore;
+
+    @ExcelNote(value = "知识维度")
+    @ExcelProperty(name = "知识维度", width = 30, index = 10)
+    @ExcelDataStyle
+    @NotNull
+    private String knowledgeDimension;
+
+    @ExcelNote(value = "能力维度")
+    @ExcelProperty(name = "能力维度", width = 30, index = 11)
+    @ExcelDataStyle
+    private String abilityDimension;
+
+    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 getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getNumberType() {
+        return numberType;
+    }
+
+    public void setNumberType(String numberType) {
+        this.numberType = numberType;
+    }
+
+    public String getBigTopicName() {
+        return bigTopicName;
+    }
+
+    public void setBigTopicName(String bigTopicName) {
+        this.bigTopicName = bigTopicName;
+    }
+
+    public String getBigQuestionNumber() {
+        return bigQuestionNumber;
+    }
+
+    public void setBigQuestionNumber(String bigQuestionNumber) {
+        this.bigQuestionNumber = bigQuestionNumber;
+    }
+
+    public String getSmallQuestionNumber() {
+        return smallQuestionNumber;
+    }
+
+    public void setSmallQuestionNumber(String smallQuestionNumber) {
+        this.smallQuestionNumber = smallQuestionNumber;
+    }
+
+    public String getFullScore() {
+        return fullScore;
+    }
+
+    public void setFullScore(String fullScore) {
+        this.fullScore = fullScore;
+    }
+
+    public String getKnowledgeDimension() {
+        return knowledgeDimension;
+    }
+
+    public void setKnowledgeDimension(String knowledgeDimension) {
+        this.knowledgeDimension = knowledgeDimension;
+    }
+
+    public String getAbilityDimension() {
+        return abilityDimension;
+    }
+
+    public void setAbilityDimension(String abilityDimension) {
+        this.abilityDimension = abilityDimension;
+    }
+}

+ 28 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/excel/TeachStudentImportDto.java

@@ -0,0 +1,28 @@
+package com.qmth.distributed.print.business.bean.dto.excel;
+
+import com.qmth.teachcloud.common.annotation.ExcelImportTempleteVaild;
+import com.qmth.teachcloud.common.annotation.ExcelNote;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @Description: 教学学生导入Dto
+ * @Author: CaoZixuan
+ * @Date: 2022-02-10
+ */
+@ExcelImportTempleteVaild(value = true)
+public class TeachStudentImportDto implements Serializable {
+
+    @ExcelNote(value = "学号")
+    @NotNull
+    private String studentCode;
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+}

+ 190 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/open/ExamStudentScore.java

@@ -0,0 +1,190 @@
+package com.qmth.distributed.print.business.bean.dto.open;
+
+import java.util.List;
+
+public class ExamStudentScore {
+
+    private String name;
+    private String studentCode;
+    private String paperNumber;
+    private String paperName;
+    private String paperType;
+    private String college;
+    private String major;
+    private String className;
+    private String teacherName;
+    private String teacherCode;
+    private Integer status;
+    private Double totalScore;
+    private Double objectiveScore;
+    private Double subjectiveScore;
+    private List<TopicInfo> objectiveScoreDetail;
+    private List<TopicInfo> subjectiveScoreDetail;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getPaperName() {
+        return paperName;
+    }
+
+    public void setPaperName(String paperName) {
+        this.paperName = paperName;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getCollege() {
+        return college;
+    }
+
+    public void setCollege(String college) {
+        this.college = college;
+    }
+
+    public String getMajor() {
+        return major;
+    }
+
+    public void setMajor(String major) {
+        this.major = major;
+    }
+
+    public String getClassName() {
+        return className;
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherCode() {
+        return teacherCode;
+    }
+
+    public void setTeacherCode(String teacherCode) {
+        this.teacherCode = teacherCode;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Double getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(Double totalScore) {
+        this.totalScore = totalScore;
+    }
+
+    public Double getObjectiveScore() {
+        return objectiveScore;
+    }
+
+    public void setObjectiveScore(Double objectiveScore) {
+        this.objectiveScore = objectiveScore;
+    }
+
+    public Double getSubjectiveScore() {
+        return subjectiveScore;
+    }
+
+    public void setSubjectiveScore(Double subjectiveScore) {
+        this.subjectiveScore = subjectiveScore;
+    }
+
+    public List<TopicInfo> getObjectiveScoreDetail() {
+        return objectiveScoreDetail;
+    }
+
+    public void setObjectiveScoreDetail(List<TopicInfo> objectiveScoreDetail) {
+        this.objectiveScoreDetail = objectiveScoreDetail;
+    }
+
+    public List<TopicInfo> getSubjectiveScoreDetail() {
+        return subjectiveScoreDetail;
+    }
+
+    public void setSubjectiveScoreDetail(List<TopicInfo> subjectiveScoreDetail) {
+        this.subjectiveScoreDetail = subjectiveScoreDetail;
+    }
+
+    public static class TopicInfo{
+        private String score;
+        private String answer;
+        private Integer mainNumber;
+        private String subNumber;
+
+        public String getScore() {
+            return score;
+        }
+
+        public void setScore(String score) {
+            this.score = score;
+        }
+
+        public String getAnswer() {
+            return answer;
+        }
+
+        public void setAnswer(String answer) {
+            this.answer = answer;
+        }
+
+        public Integer getMainNumber() {
+            return mainNumber;
+        }
+
+        public void setMainNumber(Integer mainNumber) {
+            this.mainNumber = mainNumber;
+        }
+
+        public String getSubNumber() {
+            return subNumber;
+        }
+
+        public void setSubNumber(String subNumber) {
+            this.subNumber = subNumber;
+        }
+    }
+}

+ 90 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/open/PaperConfig.java

@@ -0,0 +1,90 @@
+package com.qmth.distributed.print.business.bean.dto.open;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+
+import java.math.BigDecimal;
+
+public class PaperConfig {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    private String paperType;
+
+    private Long startTime;
+
+    private Long endTime;
+
+    private BigDecimal coefficient;
+
+    private BigDecimal totalScore;
+
+    private BigDecimal passScore;
+
+    private String scoreType;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public Long getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Long startTime) {
+        this.startTime = startTime;
+    }
+
+    public Long getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Long endTime) {
+        this.endTime = endTime;
+    }
+
+    public BigDecimal getCoefficient() {
+        return coefficient;
+    }
+
+    public void setCoefficient(BigDecimal coefficient) {
+        this.coefficient = coefficient;
+    }
+
+    public BigDecimal getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(BigDecimal totalScore) {
+        this.totalScore = totalScore;
+    }
+
+    public BigDecimal getPassScore() {
+        return passScore;
+    }
+
+    public void setPassScore(BigDecimal passScore) {
+        this.passScore = passScore;
+    }
+
+    public String getScoreType() {
+        return scoreType;
+    }
+
+    public void setScoreType(String scoreType) {
+        this.scoreType = scoreType;
+    }
+}

+ 98 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/open/PaperDimension.java

@@ -0,0 +1,98 @@
+package com.qmth.distributed.print.business.bean.dto.open;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+
+public class PaperDimension {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    private String paperNumber;
+
+    private String paperName;
+
+    private String dimensionType;
+
+    private String codePrimary;
+
+    private String namePrimary;
+
+    private String codeSecond;
+
+    private String nameSecond;
+
+    private String interpretation;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getPaperName() {
+        return paperName;
+    }
+
+    public void setPaperName(String paperName) {
+        this.paperName = paperName;
+    }
+
+    public String getDimensionType() {
+        return dimensionType;
+    }
+
+    public void setDimensionType(String dimensionType) {
+        this.dimensionType = dimensionType;
+    }
+
+    public String getCodePrimary() {
+        return codePrimary;
+    }
+
+    public void setCodePrimary(String codePrimary) {
+        this.codePrimary = codePrimary;
+    }
+
+    public String getNamePrimary() {
+        return namePrimary;
+    }
+
+    public void setNamePrimary(String namePrimary) {
+        this.namePrimary = namePrimary;
+    }
+
+    public String getCodeSecond() {
+        return codeSecond;
+    }
+
+    public void setCodeSecond(String codeSecond) {
+        this.codeSecond = codeSecond;
+    }
+
+    public String getNameSecond() {
+        return nameSecond;
+    }
+
+    public void setNameSecond(String nameSecond) {
+        this.nameSecond = nameSecond;
+    }
+
+    public String getInterpretation() {
+        return interpretation;
+    }
+
+    public void setInterpretation(String interpretation) {
+        this.interpretation = interpretation;
+    }
+}

+ 157 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/open/PaperEvaluation.java

@@ -0,0 +1,157 @@
+package com.qmth.distributed.print.business.bean.dto.open;
+
+import java.util.List;
+
+public class PaperEvaluation {
+
+    private String moduleType;
+    private String interpret;
+    private String remark;
+    private List<SecondaryDimensionLevelDefine> secondaryDimensionLevelDefineList;
+    private String formula;
+    private List<ModuleEvaluation> moduleEvaluationList;
+
+    public String getModuleType() {
+        return moduleType;
+    }
+
+    public void setModuleType(String moduleType) {
+        this.moduleType = moduleType;
+    }
+
+    public String getInterpret() {
+        return interpret;
+    }
+
+    public void setInterpret(String interpret) {
+        this.interpret = interpret;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public List<SecondaryDimensionLevelDefine> getSecondaryDimensionLevelDefineList() {
+        return secondaryDimensionLevelDefineList;
+    }
+
+    public void setSecondaryDimensionLevelDefineList(List<SecondaryDimensionLevelDefine> secondaryDimensionLevelDefineList) {
+        this.secondaryDimensionLevelDefineList = secondaryDimensionLevelDefineList;
+    }
+
+    public String getFormula() {
+        return formula;
+    }
+
+    public void setFormula(String formula) {
+        this.formula = formula;
+    }
+
+    public List<ModuleEvaluation> getModuleEvaluationList() {
+        return moduleEvaluationList;
+    }
+
+    public void setModuleEvaluationList(List<ModuleEvaluation> moduleEvaluationList) {
+        this.moduleEvaluationList = moduleEvaluationList;
+    }
+
+    public static class SecondaryDimensionLevelDefine{
+        private String define;
+        private String level;
+        private String max;
+        private String min;
+        private String scope;
+
+        public String getDefine() {
+            return define;
+        }
+
+        public void setDefine(String define) {
+            this.define = define;
+        }
+
+        public String getLevel() {
+            return level;
+        }
+
+        public void setLevel(String level) {
+            this.level = level;
+        }
+
+        public String getMax() {
+            return max;
+        }
+
+        public void setMax(String max) {
+            this.max = max;
+        }
+
+        public String getMin() {
+            return min;
+        }
+
+        public void setMin(String min) {
+            this.min = min;
+        }
+
+        public String getScope() {
+            return scope;
+        }
+
+        public void setScope(String scope) {
+            this.scope = scope;
+        }
+    }
+
+    public static class ModuleEvaluation{
+        private String advice;
+        private String levelCode;
+        private String levelName;
+        private String result;
+        private String scope;
+
+        public String getAdvice() {
+            return advice;
+        }
+
+        public void setAdvice(String advice) {
+            this.advice = advice;
+        }
+
+        public String getLevelCode() {
+            return levelCode;
+        }
+
+        public void setLevelCode(String levelCode) {
+            this.levelCode = levelCode;
+        }
+
+        public String getLevelName() {
+            return levelName;
+        }
+
+        public void setLevelName(String levelName) {
+            this.levelName = levelName;
+        }
+
+        public String getResult() {
+            return result;
+        }
+
+        public void setResult(String result) {
+            this.result = result;
+        }
+
+        public String getScope() {
+            return scope;
+        }
+
+        public void setScope(String scope) {
+            this.scope = scope;
+        }
+    }
+}

+ 111 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/open/PaperStructure.java

@@ -0,0 +1,111 @@
+package com.qmth.distributed.print.business.bean.dto.open;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+public class PaperStructure {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    private String questionName;
+
+    private String numberType;
+
+    private String bigQuestionNumber;
+
+    private String smallQuestionNumber;
+
+    private String bigTopicName;
+
+    private BigDecimal fullScore;
+
+    private String scoreRules;
+
+    private String knowledgeDimension;
+
+    private String abilityDimension;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getQuestionName() {
+        return questionName;
+    }
+
+    public void setQuestionName(String questionName) {
+        this.questionName = questionName;
+    }
+
+    public String getNumberType() {
+        return numberType;
+    }
+
+    public void setNumberType(String numberType) {
+        this.numberType = numberType;
+    }
+
+    public String getBigQuestionNumber() {
+        return bigQuestionNumber;
+    }
+
+    public void setBigQuestionNumber(String bigQuestionNumber) {
+        this.bigQuestionNumber = bigQuestionNumber;
+    }
+
+    public String getSmallQuestionNumber() {
+        return smallQuestionNumber;
+    }
+
+    public void setSmallQuestionNumber(String smallQuestionNumber) {
+        this.smallQuestionNumber = smallQuestionNumber;
+    }
+
+    public String getBigTopicName() {
+        return bigTopicName;
+    }
+
+    public void setBigTopicName(String bigTopicName) {
+        this.bigTopicName = bigTopicName;
+    }
+
+    public BigDecimal getFullScore() {
+        return fullScore;
+    }
+
+    public void setFullScore(BigDecimal fullScore) {
+        this.fullScore = fullScore;
+    }
+
+    public String getScoreRules() {
+        return scoreRules;
+    }
+
+    public void setScoreRules(String scoreRules) {
+        this.scoreRules = scoreRules;
+    }
+
+    public String getKnowledgeDimension() {
+        return knowledgeDimension;
+    }
+
+    public void setKnowledgeDimension(String knowledgeDimension) {
+        this.knowledgeDimension = knowledgeDimension;
+    }
+
+    public String getAbilityDimension() {
+        return abilityDimension;
+    }
+
+    public void setAbilityDimension(String abilityDimension) {
+        this.abilityDimension = abilityDimension;
+    }
+}

+ 40 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/flow/CustomFlowApproveRoleDto.java

@@ -0,0 +1,40 @@
+package com.qmth.distributed.print.business.bean.flow;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 自定义流程审核角色 dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/1/21
+ */
+public class CustomFlowApproveRoleDto implements Serializable {
+
+    @ApiModelProperty(value = "id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    Long id;
+
+    @ApiModelProperty(value = "角色名称")
+    String name;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}

+ 40 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/flow/CustomFlowApproveUserDto.java

@@ -0,0 +1,40 @@
+package com.qmth.distributed.print.business.bean.flow;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 自定义流程审核用户 dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/1/21
+ */
+public class CustomFlowApproveUserDto implements Serializable {
+
+    @ApiModelProperty(value = "id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    Long id;
+
+    @ApiModelProperty(value = "用户名称")
+    String name;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}

+ 108 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/flow/CustomFlowCommonDto.java

@@ -0,0 +1,108 @@
+package com.qmth.distributed.print.business.bean.flow;
+
+import com.qmth.distributed.print.business.enums.CustomFlowTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @Description: 自定义流程common dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/1/21
+ */
+public class CustomFlowCommonDto implements Serializable {
+
+    @ApiModelProperty(value = "id")
+    @NotBlank(message = "id不能为空")
+    String id;
+
+    @ApiModelProperty(value = "节点类型")
+    @NotNull(message = "节点类型不能为空")
+    CustomFlowTypeEnum type;
+
+    @ApiModelProperty(value = "节点内容")
+    String content;
+
+    @ApiModelProperty(value = "width")
+    Double w;
+
+    @ApiModelProperty(value = "height")
+    Double h;
+
+    @ApiModelProperty(value = "x坐标轴")
+    Double x;
+
+    @ApiModelProperty(value = "y坐标轴")
+    Double y;
+
+    @ApiModelProperty(value = "属性")
+    CustomFlowPropertyDto property;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public CustomFlowTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(CustomFlowTypeEnum type) {
+        this.type = type;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Double getW() {
+        return w;
+    }
+
+    public void setW(Double w) {
+        this.w = w;
+    }
+
+    public Double getH() {
+        return h;
+    }
+
+    public void setH(Double h) {
+        this.h = h;
+    }
+
+    public Double getX() {
+        return x;
+    }
+
+    public void setX(Double x) {
+        this.x = x;
+    }
+
+    public Double getY() {
+        return y;
+    }
+
+    public void setY(Double y) {
+        this.y = y;
+    }
+
+    public CustomFlowPropertyDto getProperty() {
+        return property;
+    }
+
+    public void setProperty(CustomFlowPropertyDto property) {
+        this.property = property;
+    }
+}

+ 40 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/flow/CustomFlowCopyUserDto.java

@@ -0,0 +1,40 @@
+package com.qmth.distributed.print.business.bean.flow;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 自定义流程抄送用户 dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/1/21
+ */
+public class CustomFlowCopyUserDto implements Serializable {
+
+    @ApiModelProperty(value = "id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    Long id;
+
+    @ApiModelProperty(value = "用户名称")
+    String name;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}

+ 72 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/flow/CustomFlowDto.java

@@ -0,0 +1,72 @@
+package com.qmth.distributed.print.business.bean.flow;
+
+import com.qmth.distributed.print.business.enums.CustomFlowTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description: 自定义流程dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/1/21
+ */
+public class CustomFlowDto extends CustomFlowCommonDto implements Serializable {
+
+    @ApiModelProperty(value = "流程属性id")
+    String flowTaskId;
+
+    @ApiModelProperty(value = "前置流程节点id集合")
+    List<CustomFlowSequenceDto> beforeFlowTaskIds;
+
+    @ApiModelProperty(value = "后置流程节点id集合")
+    List<CustomFlowSequenceDto> afterFlowTaskIds;
+
+    @ApiModelProperty(value = "流程步骤")
+    Integer setup;
+
+    public CustomFlowDto() {
+
+    }
+
+    public CustomFlowDto(String id, CustomFlowTypeEnum type, String content, String flowTaskId) {
+        this.id = id;
+        this.type = type;
+        this.content = content;
+        this.flowTaskId = flowTaskId;
+    }
+
+    public Integer getSetup() {
+        return setup;
+    }
+
+    public void setSetup(Integer setup) {
+        this.setup = setup;
+    }
+
+    public List<CustomFlowSequenceDto> getBeforeFlowTaskIds() {
+        return beforeFlowTaskIds;
+    }
+
+    public void setBeforeFlowTaskIds(List<CustomFlowSequenceDto> beforeFlowTaskIds) {
+        this.beforeFlowTaskIds = beforeFlowTaskIds;
+    }
+
+    public List<CustomFlowSequenceDto> getAfterFlowTaskIds() {
+        return afterFlowTaskIds;
+    }
+
+    public void setAfterFlowTaskIds(List<CustomFlowSequenceDto> afterFlowTaskIds) {
+        this.afterFlowTaskIds = afterFlowTaskIds;
+    }
+
+    public String getFlowTaskId() {
+        return flowTaskId;
+    }
+
+    public void setFlowTaskId(String flowTaskId) {
+        this.flowTaskId = flowTaskId;
+    }
+}

Некоторые файлы не были показаны из-за большого количества измененных файлов