Ver Fonte

1.0.4 优化

xiaofei há 1 ano atrás
pai
commit
3c4a81de7d
100 ficheiros alterados com 2493 adições e 4827 exclusões
  1. 4 0
      paper-library-business/pom.xml
  2. 0 9
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/dto/Temp.java
  3. 0 60
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/dto/excel/PaperArchivesCourseImportDto.java
  4. 0 73
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/dto/excel/PaperScanTaskImportDto.java
  5. 0 60
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/dto/excel/PaperScanTaskStudentImportDto.java
  6. 0 47
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/dto/excel/ScannerBindingDto.java
  7. 8 29
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/params/PaperScanTaskParam.java
  8. 136 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/DocManageDetailResult.java
  9. 25 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/DocManageOtherDetailResult.java
  10. 80 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/DocManageResult.java
  11. 0 133
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/PaperArchivesDetailResult.java
  12. 0 46
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/PaperArchivesResult.java
  13. 33 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/PaperLibraryImageResult.java
  14. 52 63
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/PaperLibraryResult.java
  15. 10 10
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/PaperScanTaskDetailResult.java
  16. 18 121
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/PaperScanTaskResult.java
  17. 6 99
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/TaskStudentResult.java
  18. 60 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/vo/FilePathVo.java
  19. 32 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/vo/PathSequenceVo.java
  20. 32 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/vo/RecognitionResultVo.java
  21. 92 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/entity/ExamCourse.java
  22. 0 134
      paper-library-business/src/main/java/com/qmth/paper/library/business/entity/PaperArchives.java
  23. 0 117
      paper-library-business/src/main/java/com/qmth/paper/library/business/entity/PaperArchivesCourse.java
  24. 21 65
      paper-library-business/src/main/java/com/qmth/paper/library/business/entity/PaperLibrary.java
  25. 73 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/entity/PaperLibraryOther.java
  26. 56 73
      paper-library-business/src/main/java/com/qmth/paper/library/business/entity/PaperScanTask.java
  27. 0 73
      paper-library-business/src/main/java/com/qmth/paper/library/business/entity/PaperScanTaskDetail.java
  28. 19 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/BasicExamMapper.java
  29. 26 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/DocManageMapper.java
  30. 16 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/ExamCourseMapper.java
  31. 27 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/ExamStudentMapper.java
  32. 0 13
      paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperArchivesCourseMapper.java
  33. 0 35
      paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperArchivesMapper.java
  34. 0 20
      paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperArchivesTypeMapper.java
  35. 6 17
      paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperLibraryMapper.java
  36. 16 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperLibraryOtherMapper.java
  37. 0 13
      paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperScanTaskDetailMapper.java
  38. 2 46
      paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperScanTaskMapper.java
  39. 24 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/BasicExamService.java
  40. 1 15
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/BusinessCacheService.java
  41. 4 6
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/ClientService.java
  42. 25 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/DocManageService.java
  43. 27 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/ExamCourseService.java
  44. 44 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/ExamStudentService.java
  45. 21 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/FileUploadService.java
  46. 0 13
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperArchivesCourseService.java
  47. 0 39
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperArchivesService.java
  48. 0 24
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperArchivesTypeService.java
  49. 11 34
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperLibraryCommonService.java
  50. 16 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperLibraryOtherService.java
  51. 13 24
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperLibraryService.java
  52. 0 16
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperScanTaskDetailService.java
  53. 11 92
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperScanTaskService.java
  54. 122 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/BasicExamServiceImpl.java
  55. 31 79
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/BusinessCacheServiceImpl.java
  56. 77 152
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/ClientServiceImpl.java
  57. 123 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/DocManageServiceImpl.java
  58. 68 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/ExamCourseServiceImpl.java
  59. 224 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/ExamStudentServiceImpl.java
  60. 148 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/FileUploadServiceImpl.java
  61. 0 18
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperArchivesCourseServiceImpl.java
  62. 0 297
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperArchivesServiceImpl.java
  63. 0 101
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperArchivesTypeServiceImpl.java
  64. 57 77
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperLibraryCommonServiceImpl.java
  65. 20 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperLibraryOtherServiceImpl.java
  66. 160 357
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperLibraryServiceImpl.java
  67. 0 35
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperScanTaskDetailServiceImpl.java
  68. 49 318
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperScanTaskServiceImpl.java
  69. 0 72
      paper-library-business/src/main/java/com/qmth/paper/library/business/templete/execute/AsyncPaperScanTaskImportService.java
  70. 0 71
      paper-library-business/src/main/java/com/qmth/paper/library/business/templete/execute/AsyncStudentDataImportService.java
  71. 0 17
      paper-library-business/src/main/java/com/qmth/paper/library/business/templete/service/TaskLogicService.java
  72. 32 214
      paper-library-business/src/main/java/com/qmth/paper/library/business/templete/service/impl/TaskLogicServiceImpl.java
  73. 130 0
      paper-library-business/src/main/resources/mapper/DocManageMapper.xml
  74. 13 0
      paper-library-business/src/main/resources/mapper/ExamCourseMapper.xml
  75. 62 0
      paper-library-business/src/main/resources/mapper/ExamStudentMapper.xml
  76. 0 4
      paper-library-business/src/main/resources/mapper/PaperArchivesCourseMapper.xml
  77. 0 214
      paper-library-business/src/main/resources/mapper/PaperArchivesMapper.xml
  78. 38 161
      paper-library-business/src/main/resources/mapper/PaperLibraryMapper.xml
  79. 17 0
      paper-library-business/src/main/resources/mapper/PaperLibraryOtherMapper.xml
  80. 0 4
      paper-library-business/src/main/resources/mapper/PaperScanTaskDetailMapper.xml
  81. 19 173
      paper-library-business/src/main/resources/mapper/PaperScanTaskMapper.xml
  82. 18 6
      paper-library-common/pom.xml
  83. 0 15
      paper-library-common/src/main/java/com/qmth/paper/library/common/annotation/ExcelDBFieldDesc.java
  84. 0 64
      paper-library-common/src/main/java/com/qmth/paper/library/common/base/BaseListPage.java
  85. 0 54
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/BlurryUserDto.java
  86. 0 27
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/CourseInfoDto.java
  87. 0 82
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/LoginDto.java
  88. 0 122
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/SysRolePrivilegeDto.java
  89. 0 48
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/TaskPrintClassDto.java
  90. 0 46
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/UserAuthenticationDto.java
  91. 0 10
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/UserDto.java
  92. 0 63
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/stmms/ExamCloudPaperStructDto.java
  93. 0 46
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/stmms/GroupDTO.java
  94. 0 86
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/stmms/GroupDetailDTO.java
  95. 0 60
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/stmms/PaperDTO.java
  96. 0 54
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/stmms/PicConfig.java
  97. 0 25
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/stmms/QuestionBaseDTO.java
  98. 0 35
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/stmms/QuestionDTO.java
  99. 14 1
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/syssetting/SimpleObject.java
  100. 24 0
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/syssetting/SimpleObjectOptions.java

+ 4 - 0
paper-library-business/pom.xml

@@ -26,6 +26,10 @@
     </parent>
 
     <dependencies>
+        <dependency>
+            <groupId>com.qmth.boot</groupId>
+            <artifactId>tools-poi</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.velocity</groupId>
             <artifactId>velocity-engine-core</artifactId>

+ 0 - 9
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/dto/Temp.java

@@ -1,9 +0,0 @@
-package com.qmth.paper.library.business.bean.dto;
-
-/**
- * @Description:
- * @Author: CaoZixuan
- * @Date:
- */
-public class Temp {
-}

+ 0 - 60
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/dto/excel/PaperArchivesCourseImportDto.java

@@ -1,60 +0,0 @@
-package com.qmth.paper.library.business.bean.dto.excel;
-
-import com.qmth.paper.library.common.annotation.ExcelImportTempleteVaild;
-import com.qmth.paper.library.common.annotation.ExcelNote;
-
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-
-/**
- * 档案导入课程excel
- */
-@ExcelImportTempleteVaild(value = true)
-public class PaperArchivesCourseImportDto implements Serializable {
-
-    @ExcelNote(value = "课程代码")
-    @NotNull
-    private String courseCode;
-
-    @ExcelNote(value = "课程代码")
-    @NotNull
-    private String courseName;
-
-    @ExcelNote(value = "教学班")
-    private String teachClazzName;
-
-    @ExcelNote(value = "任课老师")
-    private String teacherName;
-
-    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 getTeachClazzName() {
-        return teachClazzName;
-    }
-
-    public void setTeachClazzName(String teachClazzName) {
-        this.teachClazzName = teachClazzName;
-    }
-
-    public String getTeacherName() {
-        return teacherName;
-    }
-
-    public void setTeacherName(String teacherName) {
-        this.teacherName = teacherName;
-    }
-}

+ 0 - 73
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/dto/excel/PaperScanTaskImportDto.java

@@ -1,73 +0,0 @@
-package com.qmth.paper.library.business.bean.dto.excel;
-
-import com.qmth.paper.library.common.annotation.ExcelImportTempleteVaild;
-import com.qmth.paper.library.common.annotation.ExcelNote;
-
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-
-/**
- * @Description: 扫描任务导入excel
- * @Author: CaoZixuan
- * @Date: 2022-09-29
- */
-@ExcelImportTempleteVaild(value = true)
-public class PaperScanTaskImportDto implements Serializable {
-    @ExcelNote(value = "任务名称")
-    @NotNull
-    private String scanTaskName;
-
-    @ExcelNote(value = "课程代码")
-    @NotNull
-    private String courseCode;
-
-    @ExcelNote(value = "课程名称")
-    @NotNull
-    private String courseName;
-
-    @ExcelNote(value = "教学班")
-    private String teachClazzName;
-
-    @ExcelNote(value = "任课老师")
-    private String teacherName;
-
-    public String getScanTaskName() {
-        return scanTaskName;
-    }
-
-    public void setScanTaskName(String scanTaskName) {
-        this.scanTaskName = scanTaskName;
-    }
-
-    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 getTeachClazzName() {
-        return teachClazzName;
-    }
-
-    public void setTeachClazzName(String teachClazzName) {
-        this.teachClazzName = teachClazzName;
-    }
-}

+ 0 - 60
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/dto/excel/PaperScanTaskStudentImportDto.java

@@ -1,60 +0,0 @@
-package com.qmth.paper.library.business.bean.dto.excel;
-
-import com.qmth.paper.library.common.annotation.ExcelImportTempleteVaild;
-import com.qmth.paper.library.common.annotation.ExcelNote;
-
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-
-/**
- * @Description: 扫描任务考生导入excel
- */
-@ExcelImportTempleteVaild(value = true)
-public class PaperScanTaskStudentImportDto implements Serializable {
-
-    @ExcelNote(value = "学号")
-    @NotNull
-    private String studentCode;
-
-    @ExcelNote(value = "姓名")
-    @NotNull
-    private String studentName;
-
-    @ExcelNote(value = "教学班")
-    private String teachClazzName;
-
-    @ExcelNote(value = "任课老师")
-    private String teacherName;
-
-    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 getTeachClazzName() {
-        return teachClazzName;
-    }
-
-    public void setTeachClazzName(String teachClazzName) {
-        this.teachClazzName = teachClazzName;
-    }
-
-    public String getTeacherName() {
-        return teacherName;
-    }
-
-    public void setTeacherName(String teacherName) {
-        this.teacherName = teacherName;
-    }
-}

+ 0 - 47
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/dto/excel/ScannerBindingDto.java

@@ -1,47 +0,0 @@
-package com.qmth.paper.library.business.bean.dto.excel;
-
-import com.qmth.paper.library.common.annotation.ExcelImportTempleteVaild;
-import com.qmth.paper.library.common.annotation.ExcelNote;
-import com.qmth.paper.library.common.annotation.ExcelProperty;
-import com.qmth.paper.library.common.annotation.excelStyle.ExcelDataStyle;
-import com.qmth.paper.library.common.annotation.excelStyle.ExcelHeaderStyle;
-
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-
-/**
- * @Description: 扫描员绑定excel
- * @Author: CaoZixuan
- * @Date: 2022-09-30
- */
-@ExcelHeaderStyle
-@ExcelImportTempleteVaild(value = true)
-public class ScannerBindingDto implements Serializable {
-
-    @ExcelNote(value = "任务名称")
-    @ExcelProperty(name = "任务名称", width = 30, index = 1)
-    @ExcelDataStyle(lock = true)
-    @NotNull
-    private String scanTaskName;
-
-    @ExcelNote(value = "扫描员")
-    @ExcelProperty(name = "扫描员", width = 30, index = 2)
-    @NotNull
-    private String scannerName;
-
-    public String getScanTaskName() {
-        return scanTaskName;
-    }
-
-    public void setScanTaskName(String scanTaskName) {
-        this.scanTaskName = scanTaskName;
-    }
-
-    public String getScannerName() {
-        return scannerName;
-    }
-
-    public void setScannerName(String scannerName) {
-        this.scannerName = scannerName;
-    }
-}

+ 8 - 29
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/params/PaperScanTaskParam.java

@@ -25,11 +25,11 @@ public class PaperScanTaskParam implements Serializable {
     @Length(min = 1, message = "请输入扫描任务名称")
     private String scanTaskName;
 
-    @ApiModelProperty(value = "档案id")
+    @ApiModelProperty(value = "考试ID")
     @JsonSerialize(using = ToStringSerializer.class)
-    @NotNull(message = "请选择档案")
-    @Range(min = 1L, message = "请选择档案")
-    private Long paperArchivesId;
+    @NotNull(message = "请选择考试")
+    @Range(min = 1L, message = "请选择考试")
+    private Long examId;
 
     @ApiModelProperty(value = "课程代码")
     @NotNull(message = "请输入课程代码")
@@ -41,12 +41,6 @@ public class PaperScanTaskParam implements Serializable {
     @Length(min = 1, message = "请输入课程名称")
     private String courseName;
 
-    @ApiModelProperty(value = "扫描员")
-    @JsonSerialize(using = ToStringSerializer.class)
-    private Long scanUserId;
-
-    @ApiModelProperty(value = "扫描份数(学生数)")
-    private Integer studentCount;
 
     public Long getPaperScanTaskId() {
         return paperScanTaskId;
@@ -64,12 +58,12 @@ public class PaperScanTaskParam implements Serializable {
         this.scanTaskName = scanTaskName;
     }
 
-    public Long getPaperArchivesId() {
-        return paperArchivesId;
+    public Long getExamId() {
+        return examId;
     }
 
-    public void setPaperArchivesId(Long paperArchivesId) {
-        this.paperArchivesId = paperArchivesId;
+    public void setExamId(Long examId) {
+        this.examId = examId;
     }
 
     public String getCourseCode() {
@@ -88,19 +82,4 @@ public class PaperScanTaskParam implements Serializable {
         this.courseName = courseName;
     }
 
-    public Long getScanUserId() {
-        return scanUserId;
-    }
-
-    public void setScanUserId(Long scanUserId) {
-        this.scanUserId = scanUserId;
-    }
-
-    public Integer getStudentCount() {
-        return studentCount;
-    }
-
-    public void setStudentCount(Integer studentCount) {
-        this.studentCount = studentCount;
-    }
 }

+ 136 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/DocManageDetailResult.java

@@ -0,0 +1,136 @@
+package com.qmth.paper.library.business.bean.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+
+public class DocManageDetailResult {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examId;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long studentId;
+    private String studentName;
+    private String studentCode;
+    private String courseCode;
+    private String courseName;
+    private String teacher;
+    private String teachClass;
+    private String collegeName;
+    private String majorName;
+    private String className;
+    private Double score;
+    private String remark;
+    private Integer bindCount;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    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 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 getTeacher() {
+        return teacher;
+    }
+
+    public void setTeacher(String teacher) {
+        this.teacher = teacher;
+    }
+
+    public String getTeachClass() {
+        return teachClass;
+    }
+
+    public void setTeachClass(String teachClass) {
+        this.teachClass = teachClass;
+    }
+
+    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 getClassName() {
+        return className;
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+
+    public Double getScore() {
+        return score;
+    }
+
+    public void setScore(Double score) {
+        this.score = score;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public Integer getBindCount() {
+        return bindCount;
+    }
+
+    public void setBindCount(Integer bindCount) {
+        this.bindCount = bindCount;
+    }
+}

+ 25 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/DocManageOtherDetailResult.java

@@ -0,0 +1,25 @@
+package com.qmth.paper.library.business.bean.result;
+
+import java.util.List;
+
+public class DocManageOtherDetailResult {
+
+    private String fileName;
+    private List<String> fileUrls;
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
+
+    public List<String> getFileUrls() {
+        return fileUrls;
+    }
+
+    public void setFileUrls(List<String> fileUrls) {
+        this.fileUrls = fileUrls;
+    }
+}

+ 80 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/DocManageResult.java

@@ -0,0 +1,80 @@
+package com.qmth.paper.library.business.bean.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+public class DocManageResult {
+
+    @ApiModelProperty(value = "任务ID")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long paperScanTaskId;
+    @ApiModelProperty(value = "学期")
+    private String semesterName;
+    @ApiModelProperty(value = "考试")
+    private String examName;
+    @ApiModelProperty(value = "课程代码")
+    private String courseCode;
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+    @ApiModelProperty(value = "学生数量")
+    private int studentCount;
+    @ApiModelProperty(value = "已扫学生数量")
+    private int scanStudentCount;
+
+    public Long getPaperScanTaskId() {
+        return paperScanTaskId;
+    }
+
+    public void setPaperScanTaskId(Long paperScanTaskId) {
+        this.paperScanTaskId = paperScanTaskId;
+    }
+
+    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 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 int getStudentCount() {
+        return studentCount;
+    }
+
+    public void setStudentCount(int studentCount) {
+        this.studentCount = studentCount;
+    }
+
+    public int getScanStudentCount() {
+        return scanStudentCount;
+    }
+
+    public void setScanStudentCount(int scanStudentCount) {
+        this.scanStudentCount = scanStudentCount;
+    }
+}

+ 0 - 133
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/PaperArchivesDetailResult.java

@@ -1,133 +0,0 @@
-package com.qmth.paper.library.business.bean.result;
-
-public class PaperArchivesDetailResult {
-
-    private String paperScanTaskDetailId;
-
-    private String scanTaskName;
-
-    private String studentName;
-
-    private String studentCode;
-
-    private String belongOrgName;
-
-    private String majorName;
-
-    private String clazzName;
-
-    private String courseCode;
-    private String courseName;
-
-    private String teacherName;
-
-    private String teachClazzName;
-
-    private Long createTime;
-
-    private Integer bindCount;
-
-    public String getPaperScanTaskDetailId() {
-        return paperScanTaskDetailId;
-    }
-
-    public void setPaperScanTaskDetailId(String paperScanTaskDetailId) {
-        this.paperScanTaskDetailId = paperScanTaskDetailId;
-    }
-
-    public String getScanTaskName() {
-        return scanTaskName;
-    }
-
-    public void setScanTaskName(String scanTaskName) {
-        this.scanTaskName = scanTaskName;
-    }
-
-    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 getBelongOrgName() {
-        return belongOrgName;
-    }
-
-    public void setBelongOrgName(String belongOrgName) {
-        this.belongOrgName = belongOrgName;
-    }
-
-    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 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 getTeachClazzName() {
-        return teachClazzName;
-    }
-
-    public void setTeachClazzName(String teachClazzName) {
-        this.teachClazzName = teachClazzName;
-    }
-
-    public Long getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Long createTime) {
-        this.createTime = createTime;
-    }
-
-    public Integer getBindCount() {
-        return bindCount;
-    }
-
-    public void setBindCount(Integer bindCount) {
-        this.bindCount = bindCount;
-    }
-}

+ 0 - 46
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/PaperArchivesResult.java

@@ -1,46 +0,0 @@
-package com.qmth.paper.library.business.bean.result;
-
-import com.qmth.paper.library.business.entity.PaperArchives;
-
-public class PaperArchivesResult extends PaperArchives {
-
-    private String archivesTypeName;
-
-    private String semesterName;
-
-    private String managerName;
-
-    private String managerOrgName;
-
-    public String getArchivesTypeName() {
-        return archivesTypeName;
-    }
-
-    public void setArchivesTypeName(String archivesTypeName) {
-        this.archivesTypeName = archivesTypeName;
-    }
-
-    public String getSemesterName() {
-        return semesterName;
-    }
-
-    public void setSemesterName(String semesterName) {
-        this.semesterName = semesterName;
-    }
-
-    public String getManagerName() {
-        return managerName;
-    }
-
-    public void setManagerName(String managerName) {
-        this.managerName = managerName;
-    }
-
-    public String getManagerOrgName() {
-        return managerOrgName;
-    }
-
-    public void setManagerOrgName(String managerOrgName) {
-        this.managerOrgName = managerOrgName;
-    }
-}

+ 33 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/PaperLibraryImageResult.java

@@ -0,0 +1,33 @@
+package com.qmth.paper.library.business.bean.result;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 数据检查
+ */
+public class PaperLibraryImageResult implements Serializable {
+
+    @ApiModelProperty(value = "图片ID")
+    private Long paperLibraryId;
+    @ApiModelProperty(value = "图片访问地址(解析后地址)")
+    private List<String> fileUrls;
+
+    public Long getPaperLibraryId() {
+        return paperLibraryId;
+    }
+
+    public void setPaperLibraryId(Long paperLibraryId) {
+        this.paperLibraryId = paperLibraryId;
+    }
+
+    public List<String> getFileUrls() {
+        return fileUrls;
+    }
+
+    public void setFileUrls(List<String> fileUrls) {
+        this.fileUrls = fileUrls;
+    }
+}

+ 52 - 63
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/PaperLibraryResult.java

@@ -1,6 +1,5 @@
 package com.qmth.paper.library.business.bean.result;
 
-import com.qmth.paper.library.business.entity.PaperLibrary;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
@@ -9,58 +8,32 @@ import java.util.List;
 /**
  * 数据检查
  */
-public class PaperLibraryResult extends PaperLibrary implements Serializable {
-
-    @ApiModelProperty(value = "学期名称")
-    private String semesterName;
-
-    @ApiModelProperty(value = "档案名称")
-    private String paperArchivesName;
+public class PaperLibraryResult implements Serializable {
 
     @ApiModelProperty(value = "学生姓名")
     private String studentName;
-
     @ApiModelProperty(value = "学号")
     private String studentCode;
-
     @ApiModelProperty(value = "课程代码")
     private String courseCode;
     @ApiModelProperty(value = "课程名称")
     private String courseName;
-
+    @ApiModelProperty(value = "学院")
+    private String collegeName;
+    @ApiModelProperty(value = "专业")
+    private String majorName;
+    @ApiModelProperty(value = "班级")
+    private String className;
     @ApiModelProperty(value = "任课老师")
-    private String teacherName;
-
+    private String teacher;
     @ApiModelProperty(value = "教学班")
-    private String teachClazzName;
-
+    private String teachClass;
     @ApiModelProperty(value = "绑定图片数量")
     private int bindCount;
-
+    @ApiModelProperty(value = "分数")
+    private Double score;
     @ApiModelProperty(value = "图片访问地址(解析后地址)")
-    private List<String> fileUrls;
-
-    @ApiModelProperty(value = "扫描任务名称")
-    private String paperScanTaskName;
-
-    @ApiModelProperty(value = "数据检查员账号")
-    private String loginName;
-
-    public String getSemesterName() {
-        return semesterName;
-    }
-
-    public void setSemesterName(String semesterName) {
-        this.semesterName = semesterName;
-    }
-
-    public String getPaperArchivesName() {
-        return paperArchivesName;
-    }
-
-    public void setPaperArchivesName(String paperArchivesName) {
-        this.paperArchivesName = paperArchivesName;
-    }
+    private List<PaperLibraryImageResult> fileUrls;
 
     public String getStudentName() {
         return studentName;
@@ -94,51 +67,67 @@ public class PaperLibraryResult extends PaperLibrary implements Serializable {
         this.courseName = courseName;
     }
 
-    public String getTeacherName() {
-        return teacherName;
+    public String getCollegeName() {
+        return collegeName;
     }
 
-    public void setTeacherName(String teacherName) {
-        this.teacherName = teacherName;
+    public void setCollegeName(String collegeName) {
+        this.collegeName = collegeName;
     }
 
-    public String getTeachClazzName() {
-        return teachClazzName;
+    public String getMajorName() {
+        return majorName;
     }
 
-    public void setTeachClazzName(String teachClazzName) {
-        this.teachClazzName = teachClazzName;
+    public void setMajorName(String majorName) {
+        this.majorName = majorName;
     }
 
-    public int getBindCount() {
-        return bindCount;
+    public String getClassName() {
+        return className;
     }
 
-    public void setBindCount(int bindCount) {
-        this.bindCount = bindCount;
+    public void setClassName(String className) {
+        this.className = className;
     }
 
-    public List<String> getFileUrls() {
-        return fileUrls;
+    public String getTeacher() {
+        return teacher;
     }
 
-    public void setFileUrls(List<String> fileUrls) {
-        this.fileUrls = fileUrls;
+    public void setTeacher(String teacher) {
+        this.teacher = teacher;
     }
 
-    public String getPaperScanTaskName() {
-        return paperScanTaskName;
+    public String getTeachClass() {
+        return teachClass;
     }
 
-    public void setPaperScanTaskName(String paperScanTaskName) {
-        this.paperScanTaskName = paperScanTaskName;
+    public void setTeachClass(String teachClass) {
+        this.teachClass = teachClass;
     }
 
-    public String getLoginName() {
-        return loginName;
+    public int getBindCount() {
+        return bindCount;
     }
 
-    public void setLoginName(String loginName) {
-        this.loginName = loginName;
+    public void setBindCount(int bindCount) {
+        this.bindCount = bindCount;
+    }
+
+    public Double getScore() {
+        return score;
+    }
+
+    public void setScore(Double score) {
+        this.score = score;
+    }
+
+    public List<PaperLibraryImageResult> getFileUrls() {
+        return fileUrls;
+    }
+
+    public void setFileUrls(List<PaperLibraryImageResult> fileUrls) {
+        this.fileUrls = fileUrls;
     }
 }

+ 10 - 10
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/PaperScanTaskDetailResult.java

@@ -22,10 +22,10 @@ public class PaperScanTaskDetailResult implements Serializable {
     private String courseName;
 
     @ApiModelProperty(value = "任课老师")
-    private String teacherName;
+    private String teacher;
 
     @ApiModelProperty(value = "教学班")
-    private String teachClazzName;
+    private String teachClass;
 
     @ApiModelProperty(value = "绑定张数")
     private int bindCount;
@@ -62,20 +62,20 @@ public class PaperScanTaskDetailResult implements Serializable {
         this.courseName = courseName;
     }
 
-    public String getTeacherName() {
-        return teacherName;
+    public String getTeacher() {
+        return teacher;
     }
 
-    public void setTeacherName(String teacherName) {
-        this.teacherName = teacherName;
+    public void setTeacher(String teacher) {
+        this.teacher = teacher;
     }
 
-    public String getTeachClazzName() {
-        return teachClazzName;
+    public String getTeachClass() {
+        return teachClass;
     }
 
-    public void setTeachClazzName(String teachClazzName) {
-        this.teachClazzName = teachClazzName;
+    public void setTeachClass(String teachClass) {
+        this.teachClass = teachClass;
     }
 
     public int getBindCount() {

+ 18 - 121
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/PaperScanTaskResult.java

@@ -21,21 +21,11 @@ public class PaperScanTaskResult implements Serializable {
     @JsonSerialize(using = ToStringSerializer.class)
     private Long schoolId;
 
-    @ApiModelProperty(value = "扫描任务名称")
-    private String scanTaskName;
-
     @ApiModelProperty(value = "学期名称")
     private String semesterName;
 
-    @ApiModelProperty(value = "档案表id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    private Long paperArchivesId;
-
-    @ApiModelProperty(value = "档案名称")
-    private String archivesName;
-
-    @ApiModelProperty(value = "档案编号")
-    private String archivesCode;
+    @ApiModelProperty(value = "考试名称")
+    private String examName;
 
     @ApiModelProperty(value = "课程代码")
     private String courseCode;
@@ -43,34 +33,14 @@ public class PaperScanTaskResult implements Serializable {
     @ApiModelProperty(value = "课程名称")
     private String courseName;
 
-    @ApiModelProperty(value = "扫描")
+    @ApiModelProperty(value = "扫描张数")
     private int scanCount;
 
-    @ApiModelProperty(value = "已绑定数量")
-    private int bindCount;
-
-    @ApiModelProperty(value = "异常数量")
-    private int abnormalCount;
-
-    @ApiModelProperty(value = "学生数")
+    @ApiModelProperty(value = "考生数")
     private int studentCount;
 
-    @ApiModelProperty(value = "绑定进度")
-    private BigDecimal bindProgress;
-
-    @ApiModelProperty(value = "扫描员id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    private Long scanUserId;
-
-    @ApiModelProperty(value = "扫描员名称")
-    private String scanUserName;
-
-    @ApiModelProperty(value = "校验员id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    private Long checkUserId;
-
-    @ApiModelProperty(value = "校验员名称")
-    private String checkUserName;
+    @ApiModelProperty(value = "扫描考生数")
+    private int scanStudentCount;
 
     public Long getPaperScanTaskId() {
         return paperScanTaskId;
@@ -80,14 +50,6 @@ public class PaperScanTaskResult implements Serializable {
         this.paperScanTaskId = paperScanTaskId;
     }
 
-    public String getSemesterName() {
-        return semesterName;
-    }
-
-    public void setSemesterName(String semesterName) {
-        this.semesterName = semesterName;
-    }
-
     public Long getSchoolId() {
         return schoolId;
     }
@@ -96,36 +58,20 @@ public class PaperScanTaskResult implements Serializable {
         this.schoolId = schoolId;
     }
 
-    public String getScanTaskName() {
-        return scanTaskName;
-    }
-
-    public void setScanTaskName(String scanTaskName) {
-        this.scanTaskName = scanTaskName;
-    }
-
-    public Long getPaperArchivesId() {
-        return paperArchivesId;
-    }
-
-    public void setPaperArchivesId(Long paperArchivesId) {
-        this.paperArchivesId = paperArchivesId;
-    }
-
-    public String getArchivesName() {
-        return archivesName;
+    public String getSemesterName() {
+        return semesterName;
     }
 
-    public void setArchivesName(String archivesName) {
-        this.archivesName = archivesName;
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
     }
 
-    public String getArchivesCode() {
-        return archivesCode;
+    public String getExamName() {
+        return examName;
     }
 
-    public void setArchivesCode(String archivesCode) {
-        this.archivesCode = archivesCode;
+    public void setExamName(String examName) {
+        this.examName = examName;
     }
 
     public String getCourseCode() {
@@ -152,22 +98,6 @@ public class PaperScanTaskResult implements Serializable {
         this.scanCount = scanCount;
     }
 
-    public int getBindCount() {
-        return bindCount;
-    }
-
-    public void setBindCount(int bindCount) {
-        this.bindCount = bindCount;
-    }
-
-    public int getAbnormalCount() {
-        return abnormalCount;
-    }
-
-    public void setAbnormalCount(int abnormalCount) {
-        this.abnormalCount = abnormalCount;
-    }
-
     public int getStudentCount() {
         return studentCount;
     }
@@ -176,44 +106,11 @@ public class PaperScanTaskResult implements Serializable {
         this.studentCount = studentCount;
     }
 
-    public BigDecimal getBindProgress() {
-        return bindProgress;
-    }
-
-    public void setBindProgress(BigDecimal bindProgress) {
-        this.bindProgress = bindProgress;
-    }
-
-    public Long getScanUserId() {
-        return scanUserId;
-    }
-
-    public void setScanUserId(Long scanUserId) {
-        this.scanUserId = scanUserId;
-    }
-
-    public String getScanUserName() {
-        return scanUserName;
-    }
-
-    public void setScanUserName(String scanUserName) {
-        this.scanUserName = scanUserName;
+    public int getScanStudentCount() {
+        return scanStudentCount;
     }
 
-    public Long getCheckUserId() {
-        return checkUserId;
+    public void setScanStudentCount(int scanStudentCount) {
+        this.scanStudentCount = scanStudentCount;
     }
-
-    public void setCheckUserId(Long checkUserId) {
-        this.checkUserId = checkUserId;
-    }
-
-    public String getCheckUserName() {
-        return checkUserName;
-    }
-
-    public void setCheckUserName(String checkUserName) {
-        this.checkUserName = checkUserName;
-    }
-
 }

+ 6 - 99
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/TaskStudentResult.java

@@ -9,78 +9,25 @@ import java.io.Serializable;
  */
 public class TaskStudentResult implements Serializable {
 
-    @ApiModelProperty(value = "扫描任务详情ID(任务id+考生id)")
-    private String paperScanTaskDetailId;
-
-    @ApiModelProperty(value = "学期")
-    private String semesterName;
-
-    @ApiModelProperty(value = "档案名称")
-    private String paperArchivesName;
-
-    @ApiModelProperty(value = "扫描任务")
-    private String paperScanTaskName;
-
+    @ApiModelProperty(value = "考生ID")
+    private String studentId;
     @ApiModelProperty(value = "课程代码")
     private String courseCode;
-
     @ApiModelProperty(value = "课程名称")
     private String courseName;
-
-    @ApiModelProperty(value = "任课老师")
-    private String teacherName;
-
-    @ApiModelProperty(value = "教学班")
-    private String teachClazzName;
-
-    @ApiModelProperty(value = "考生ID")
-    private String studentId;
-
     @ApiModelProperty(value = "姓名")
     private String studentName;
-
     @ApiModelProperty(value = "学号")
     private String studentCode;
-
-    @ApiModelProperty(value = "专业")
-    private String majorName;
-
-    @ApiModelProperty(value = "班级")
-    private String clazzName;
-
     @ApiModelProperty(value = "绑定图片数量")
     private Integer bindCount;
 
-    public String getPaperScanTaskDetailId() {
-        return paperScanTaskDetailId;
-    }
-
-    public void setPaperScanTaskDetailId(String paperScanTaskDetailId) {
-        this.paperScanTaskDetailId = paperScanTaskDetailId;
-    }
-
-    public String getSemesterName() {
-        return semesterName;
-    }
-
-    public void setSemesterName(String semesterName) {
-        this.semesterName = semesterName;
-    }
-
-    public String getPaperArchivesName() {
-        return paperArchivesName;
-    }
-
-    public void setPaperArchivesName(String paperArchivesName) {
-        this.paperArchivesName = paperArchivesName;
-    }
-
-    public String getPaperScanTaskName() {
-        return paperScanTaskName;
+    public String getStudentId() {
+        return studentId;
     }
 
-    public void setPaperScanTaskName(String paperScanTaskName) {
-        this.paperScanTaskName = paperScanTaskName;
+    public void setStudentId(String studentId) {
+        this.studentId = studentId;
     }
 
     public String getCourseCode() {
@@ -99,30 +46,6 @@ public class TaskStudentResult implements Serializable {
         this.courseName = courseName;
     }
 
-    public String getTeacherName() {
-        return teacherName;
-    }
-
-    public void setTeacherName(String teacherName) {
-        this.teacherName = teacherName;
-    }
-
-    public String getTeachClazzName() {
-        return teachClazzName;
-    }
-
-    public void setTeachClazzName(String teachClazzName) {
-        this.teachClazzName = teachClazzName;
-    }
-
-    public String getStudentId() {
-        return studentId;
-    }
-
-    public void setStudentId(String studentId) {
-        this.studentId = studentId;
-    }
-
     public String getStudentName() {
         return studentName;
     }
@@ -139,22 +62,6 @@ public class TaskStudentResult implements Serializable {
         this.studentCode = studentCode;
     }
 
-    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 Integer getBindCount() {
         return bindCount;
     }

+ 60 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/vo/FilePathVo.java

@@ -0,0 +1,60 @@
+package com.qmth.paper.library.business.bean.vo;
+
+
+import com.qmth.paper.library.common.enums.UploadFileEnum;
+
+public class FilePathVo {
+
+    private String path;
+    private UploadFileEnum uploadType;
+    private String type;
+    private String md5;
+
+    public FilePathVo() {
+    }
+
+    public FilePathVo(String path, UploadFileEnum uploadType, String type) {
+        this.path = path;
+        this.uploadType = uploadType;
+        this.type = type;
+    }
+
+    public FilePathVo(String path, UploadFileEnum uploadType, String type, String md5) {
+        this.path = path;
+        this.uploadType = uploadType;
+        this.type = type;
+        this.md5 = md5;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    public UploadFileEnum getUploadType() {
+        return uploadType;
+    }
+
+    public void setUploadType(UploadFileEnum uploadType) {
+        this.uploadType = uploadType;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getMd5() {
+        return md5;
+    }
+
+    public void setMd5(String md5) {
+        this.md5 = md5;
+    }
+}

+ 32 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/vo/PathSequenceVo.java

@@ -0,0 +1,32 @@
+package com.qmth.paper.library.business.bean.vo;
+
+
+public class PathSequenceVo {
+
+    private String path;
+    private Integer sequence;
+
+    public PathSequenceVo() {
+    }
+
+    public PathSequenceVo(String path, Integer sequence) {
+        this.path = path;
+        this.sequence = sequence;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    public Integer getSequence() {
+        return sequence;
+    }
+
+    public void setSequence(Integer sequence) {
+        this.sequence = sequence;
+    }
+}

+ 32 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/vo/RecognitionResultVo.java

@@ -0,0 +1,32 @@
+package com.qmth.paper.library.business.bean.vo;
+
+
+public class RecognitionResultVo {
+
+    private String bindResult;
+    private String recognizeResult;
+
+    public RecognitionResultVo() {
+    }
+
+    public RecognitionResultVo(String bindResult, String recognizeResult) {
+        this.bindResult = bindResult;
+        this.recognizeResult = recognizeResult;
+    }
+
+    public String getBindResult() {
+        return bindResult;
+    }
+
+    public void setBindResult(String bindResult) {
+        this.bindResult = bindResult;
+    }
+
+    public String getRecognizeResult() {
+        return recognizeResult;
+    }
+
+    public void setRecognizeResult(String recognizeResult) {
+        this.recognizeResult = recognizeResult;
+    }
+}

+ 92 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/entity/ExamCourse.java

@@ -0,0 +1,92 @@
+package com.qmth.paper.library.business.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.paper.library.common.contant.SystemConstant;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 考生课程表
+ * </p>
+ *
+ * @author xf
+ * @since 2024-03-11
+ */
+@TableName("exam_course")
+@ApiModel(value = "ExamCourse对象", description = "考生课程表")
+public class ExamCourse implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty(value = "考试ID")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examId;
+
+    @ApiModelProperty(value = "课程代码")
+    private String courseCode;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    public ExamCourse() {
+    }
+
+    public ExamCourse(Long examId, String courseCode, String courseName) {
+        this.id = SystemConstant.getDbUuid();
+        this.examId = examId;
+        this.courseCode = courseCode;
+        this.courseName = courseName;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    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 toString() {
+        return "ExamCourse{" +
+                "id=" + id +
+                ", examId=" + examId +
+                ", courseCode=" + courseCode +
+                ", courseName=" + courseName +
+                "}";
+    }
+}

+ 0 - 134
paper-library-business/src/main/java/com/qmth/paper/library/business/entity/PaperArchives.java

@@ -1,134 +0,0 @@
-package com.qmth.paper.library.business.entity;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.paper.library.common.base.BaseEntity;
-import io.swagger.annotations.ApiModelProperty;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-
-/**
- * <p>
- * 档案管理表
- * </p>
- */
-@TableName("paper_archives")
-public class PaperArchives extends BaseEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "学校id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("school_id")
-    private Long schoolId;
-
-    @ApiModelProperty(value = "学期id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("semester_id")
-    @NotNull(message = "请选择档学期")
-    private Long semesterId;
-
-    @ApiModelProperty(value = "档案管理部门Id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("manager_org_id")
-    @NotNull(message = "请选择档案管理部门")
-    private Long managerOrgId;
-
-    /**
-     * 档案名称
-     */
-    @TableField("archives_name")
-    @NotBlank(message = "档案名称必填")
-    private String archivesName;
-
-    /**
-     * 档案编号
-     */
-    @TableField("archives_code")
-    private String archivesCode;
-
-    @ApiModelProperty(value = "档案类型id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("archives_type_id")
-    @NotNull(message = "请选择档案类型")
-    private Long archivesTypeId;
-
-    @ApiModelProperty(value = "档案管理员")
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("manager_id")
-    @NotNull(message = "请选择档案管理员")
-    private Long managerId;
-
-    @ApiModelProperty(value = "档案到期预警时间")
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("warning_time")
-    private Long warningTime;
-
-    public Long getSchoolId() {
-        return schoolId;
-    }
-
-    public void setSchoolId(Long schoolId) {
-        this.schoolId = schoolId;
-    }
-
-    public Long getSemesterId() {
-        return semesterId;
-    }
-
-    public void setSemesterId(Long semesterId) {
-        this.semesterId = semesterId;
-    }
-
-    public Long getManagerOrgId() {
-        return managerOrgId;
-    }
-
-    public void setManagerOrgId(Long managerOrgId) {
-        this.managerOrgId = managerOrgId;
-    }
-
-    public String getArchivesName() {
-        return archivesName;
-    }
-
-    public void setArchivesName(String archivesName) {
-        this.archivesName = archivesName;
-    }
-
-    public String getArchivesCode() {
-        return archivesCode;
-    }
-
-    public void setArchivesCode(String archivesCode) {
-        this.archivesCode = archivesCode;
-    }
-
-    public Long getArchivesTypeId() {
-        return archivesTypeId;
-    }
-
-    public void setArchivesTypeId(Long archivesTypeId) {
-        this.archivesTypeId = archivesTypeId;
-    }
-
-    public Long getManagerId() {
-        return managerId;
-    }
-
-    public void setManagerId(Long managerId) {
-        this.managerId = managerId;
-    }
-
-    public Long getWarningTime() {
-        return warningTime;
-    }
-
-    public void setWarningTime(Long warningTime) {
-        this.warningTime = warningTime;
-    }
-}

+ 0 - 117
paper-library-business/src/main/java/com/qmth/paper/library/business/entity/PaperArchivesCourse.java

@@ -1,117 +0,0 @@
-package com.qmth.paper.library.business.entity;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.paper.library.common.base.BaseEntity;
-import io.swagger.annotations.ApiModelProperty;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-
-/**
- * <p>
- * 档案管理表
- * </p>
- */
-@TableName("paper_archives_course")
-public class PaperArchivesCourse extends BaseEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "学校id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("school_id")
-    private Long schoolId;
-
-    @ApiModelProperty(value = "档案id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("paper_archives_id")
-    private Long paperArchivesId;
-
-    /**
-     * 课程代码
-     */
-    @TableField("course_code")
-    private String courseCode;
-
-    /**
-     * 课程名称
-     */
-    @TableField("course_name")
-    private String courseName;
-
-    /**
-     * 任课老师
-     */
-    @TableField("teacher_name")
-    private String teacherName;
-
-    /**
-     * 教学班
-     */
-    @TableField("teach_clazz_name")
-    private String teachClazzName;
-
-    public PaperArchivesCourse() {
-    }
-
-    public PaperArchivesCourse(Long schoolId, Long paperArchivesId, String courseCode, String courseName, String teacherName, String teachClazzName) {
-        this.schoolId = schoolId;
-        this.paperArchivesId = paperArchivesId;
-        this.courseCode = courseCode;
-        this.courseName = courseName;
-        this.teacherName = teacherName;
-        this.teachClazzName = teachClazzName;
-    }
-
-    public Long getSchoolId() {
-        return schoolId;
-    }
-
-    public void setSchoolId(Long schoolId) {
-        this.schoolId = schoolId;
-    }
-
-    public Long getPaperArchivesId() {
-        return paperArchivesId;
-    }
-
-    public void setPaperArchivesId(Long paperArchivesId) {
-        this.paperArchivesId = paperArchivesId;
-    }
-
-    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 getTeachClazzName() {
-        return teachClazzName;
-    }
-
-    public void setTeachClazzName(String teachClazzName) {
-        this.teachClazzName = teachClazzName;
-    }
-}

+ 21 - 65
paper-library-business/src/main/java/com/qmth/paper/library/business/entity/PaperLibrary.java

@@ -18,12 +18,6 @@ import java.io.Serializable;
 public class PaperLibrary extends BaseEntity implements Serializable {
 
     private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "学校id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("school_id")
-    private Long schoolId;
-
     @ApiModelProperty(value = "扫描任务表id")
     @JsonSerialize(using = ToStringSerializer.class)
     @TableField("paper_scan_task_id")
@@ -35,49 +29,27 @@ public class PaperLibrary extends BaseEntity implements Serializable {
     @TableField("path")
     private String path;
 
-
-    @ApiModelProperty(value = "扫描任务详情表id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("paper_scan_task_detail_id")
-    private Long paperScanTaskDetailId;
-
-    @ApiModelProperty(value = "数据检验员id")
+    @ApiModelProperty(value = "考生ID")
     @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("user_id")
-    private Long userId;
+    @TableField("student_id")
+    private Long studentId;
 
     /**
      * 图片序号
      */
     @TableField("sequence")
     private Integer sequence;
-
-    /**
-     * 异常
-     */
-    @TableField("abnormal")
-    private Boolean abnormal;
-
     /**
-     * OCR识别结果
+     * OCR或者条码识别结果使用值
      */
-    @TableField("words_result")
-    private String wordsResult;
+    @TableField("bind_result")
+    private String bindResult;
 
     /**
-     * OCR识别结果
+     * OCR或者条码识别结果(原始值)
      */
-    @TableField("ocr_result")
-    private String ocrResult;
-
-
-    public Long getSchoolId() {
-        return schoolId;
-    }
-
-    public void setSchoolId(Long schoolId) {
-        this.schoolId = schoolId;
-    }
+    @TableField("recognize_result")
+    private String recognizeResult;
 
     public Long getPaperScanTaskId() {
         return paperScanTaskId;
@@ -95,20 +67,12 @@ public class PaperLibrary extends BaseEntity implements Serializable {
         this.path = path;
     }
 
-    public Long getPaperScanTaskDetailId() {
-        return paperScanTaskDetailId;
+    public Long getStudentId() {
+        return studentId;
     }
 
-    public void setPaperScanTaskDetailId(Long paperScanTaskDetailId) {
-        this.paperScanTaskDetailId = paperScanTaskDetailId;
-    }
-
-    public Long getUserId() {
-        return userId;
-    }
-
-    public void setUserId(Long userId) {
-        this.userId = userId;
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
     }
 
     public Integer getSequence() {
@@ -119,27 +83,19 @@ public class PaperLibrary extends BaseEntity implements Serializable {
         this.sequence = sequence;
     }
 
-    public Boolean getAbnormal() {
-        return abnormal;
-    }
-
-    public void setAbnormal(Boolean abnormal) {
-        this.abnormal = abnormal;
-    }
-
-    public String getWordsResult() {
-        return wordsResult;
+    public String getBindResult() {
+        return bindResult;
     }
 
-    public void setWordsResult(String wordsResult) {
-        this.wordsResult = wordsResult;
+    public void setBindResult(String bindResult) {
+        this.bindResult = bindResult;
     }
 
-    public String getOcrResult() {
-        return ocrResult;
+    public String getRecognizeResult() {
+        return recognizeResult;
     }
 
-    public void setOcrResult(String ocrResult) {
-        this.ocrResult = ocrResult;
+    public void setRecognizeResult(String recognizeResult) {
+        this.recognizeResult = recognizeResult;
     }
 }

+ 73 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/entity/PaperLibraryOther.java

@@ -0,0 +1,73 @@
+package com.qmth.paper.library.business.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.io.Serializable;
+
+import com.qmth.paper.library.common.base.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * <p>
+ * 图片库
+ * </p>
+ *
+ * @author xf
+ * @since 2024-03-12
+ */
+@TableName("paper_library_other")
+@ApiModel(value = "PaperLibraryOther对象", description = "其它文件库")
+public class PaperLibraryOther extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id", type = IdType.INPUT)
+    private Long id;
+
+    @ApiModelProperty(value = "扫描任务Id")
+    private Long paperScanTaskId;
+
+    @ApiModelProperty(value = "存储路径")
+    private String path;
+
+    @ApiModelProperty(value = "图片序号")
+    private Integer sequence;
+
+    public Long getPaperScanTaskId() {
+        return paperScanTaskId;
+    }
+
+    public void setPaperScanTaskId(Long paperScanTaskId) {
+        this.paperScanTaskId = paperScanTaskId;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    public Integer getSequence() {
+        return sequence;
+    }
+
+    public void setSequence(Integer sequence) {
+        this.sequence = sequence;
+    }
+
+    @Override
+    public String toString() {
+        return "PaperLibraryOther{" +
+                "id=" + id +
+                ", paperScanTaskId=" + paperScanTaskId +
+                ", path=" + path +
+                ", sequence=" + sequence +
+                "}";
+    }
+}

+ 56 - 73
paper-library-business/src/main/java/com/qmth/paper/library/business/entity/PaperScanTask.java

@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.paper.library.common.base.BaseEntity;
+import com.qmth.paper.library.common.enums.RecognitionTypeEnum;
+import com.qmth.paper.library.common.enums.StoreTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
@@ -20,15 +22,15 @@ public class PaperScanTask extends BaseEntity implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
-    @ApiModelProperty(value = "学校id")
+    @ApiModelProperty(value = "学校ID")
     @JsonSerialize(using = ToStringSerializer.class)
     @TableField("school_id")
     private Long schoolId;
 
-    @ApiModelProperty(value = "档案表id")
+    @ApiModelProperty(value = "考试ID")
     @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("paper_archives_id")
-    private Long paperArchivesId;
+    @TableField("exam_id")
+    private Long examId;
 
     /**
      * 扫描任务编号
@@ -54,43 +56,35 @@ public class PaperScanTask extends BaseEntity implements Serializable {
     @TableField("course_name")
     private String courseName;
 
+    /**
+     * 识别方式
+     */
+    @TableField(value = "recognition_type")
+    private RecognitionTypeEnum recognitionType;
 
-    @ApiModelProperty(value = "扫描员id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField(value = "scan_user_id", updateStrategy = FieldStrategy.IGNORED)
-    private Long scanUserId;
-
-    @ApiModelProperty(value = "校验员id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField(value = "check_user_id", updateStrategy = FieldStrategy.IGNORED)
-    private Long checkUserId;
+    /**
+     * 存储方式
+     */
+    @TableField(value = "store_type")
+    private StoreTypeEnum storeType;
 
     /**
-     * 扫描
+     * 考生数量
      */
     @TableField(value = "student_count", updateStrategy = FieldStrategy.IGNORED)
     private Integer studentCount;
 
     /**
-     * 已扫描数量
+     * 已扫描学生数量
      */
     @TableField(value = "scan_count", updateStrategy = FieldStrategy.IGNORED)
-    private Integer scanCount;
-
-    /**
-     * 已扫描数量
-     */
-    @TableField(value = "bind_count", updateStrategy = FieldStrategy.IGNORED)
-    private Integer bindCount;
+    private Integer scanStudentCount;
 
     /**
-     * 异常数量
+     * 已扫描图片数量
      */
-    @TableField(value = "abnormal_count", updateStrategy = FieldStrategy.IGNORED)
-    private Integer abnormalCount;
-
-    @TableField(value = "progress")
-    private Double progress;
+    @TableField(value = "scan_count", updateStrategy = FieldStrategy.IGNORED)
+    private Integer scanCount;
 
     /**
      * 是否结束
@@ -98,8 +92,20 @@ public class PaperScanTask extends BaseEntity implements Serializable {
     @TableField("enable")
     private Boolean enable;
 
-    @TableField(exist = false)
-    private String archivesName;
+    public PaperScanTask() {
+    }
+
+    public PaperScanTask(Long schoolId, Long examId, String scanTaskCode, String scanTaskName, String courseCode, String courseName, RecognitionTypeEnum recognitionType, StoreTypeEnum storeType, Integer studentCount) {
+        this.schoolId = schoolId;
+        this.examId = examId;
+        this.scanTaskCode = scanTaskCode;
+        this.scanTaskName = scanTaskName;
+        this.courseCode = courseCode;
+        this.courseName = courseName;
+        this.recognitionType = recognitionType;
+        this.storeType = storeType;
+        this.studentCount = studentCount;
+    }
 
     public Long getSchoolId() {
         return schoolId;
@@ -109,12 +115,12 @@ public class PaperScanTask extends BaseEntity implements Serializable {
         this.schoolId = schoolId;
     }
 
-    public Long getPaperArchivesId() {
-        return paperArchivesId;
+    public Long getExamId() {
+        return examId;
     }
 
-    public void setPaperArchivesId(Long paperArchivesId) {
-        this.paperArchivesId = paperArchivesId;
+    public void setExamId(Long examId) {
+        this.examId = examId;
     }
 
     public String getScanTaskCode() {
@@ -149,20 +155,20 @@ public class PaperScanTask extends BaseEntity implements Serializable {
         this.courseName = courseName;
     }
 
-    public Long getScanUserId() {
-        return scanUserId;
+    public RecognitionTypeEnum getRecognitionType() {
+        return recognitionType;
     }
 
-    public void setScanUserId(Long scanUserId) {
-        this.scanUserId = scanUserId;
+    public void setRecognitionType(RecognitionTypeEnum recognitionType) {
+        this.recognitionType = recognitionType;
     }
 
-    public Long getCheckUserId() {
-        return checkUserId;
+    public StoreTypeEnum getStoreType() {
+        return storeType;
     }
 
-    public void setCheckUserId(Long checkUserId) {
-        this.checkUserId = checkUserId;
+    public void setStoreType(StoreTypeEnum storeType) {
+        this.storeType = storeType;
     }
 
     public Integer getStudentCount() {
@@ -173,28 +179,20 @@ public class PaperScanTask extends BaseEntity implements Serializable {
         this.studentCount = studentCount;
     }
 
-    public Integer getScanCount() {
-        return scanCount;
+    public Integer getScanStudentCount() {
+        return scanStudentCount;
     }
 
-    public void setScanCount(Integer scanCount) {
-        this.scanCount = scanCount;
+    public void setScanStudentCount(Integer scanStudentCount) {
+        this.scanStudentCount = scanStudentCount;
     }
 
-    public Integer getBindCount() {
-        return bindCount;
-    }
-
-    public void setBindCount(Integer bindCount) {
-        this.bindCount = bindCount;
-    }
-
-    public Integer getAbnormalCount() {
-        return abnormalCount;
+    public Integer getScanCount() {
+        return scanCount;
     }
 
-    public void setAbnormalCount(Integer abnormalCount) {
-        this.abnormalCount = abnormalCount;
+    public void setScanCount(Integer scanCount) {
+        this.scanCount = scanCount;
     }
 
     public Boolean getEnable() {
@@ -205,19 +203,4 @@ public class PaperScanTask extends BaseEntity implements Serializable {
         this.enable = enable;
     }
 
-    public Double getProgress() {
-        return progress;
-    }
-
-    public void setProgress(Double progress) {
-        this.progress = progress;
-    }
-
-    public String getArchivesName() {
-        return archivesName;
-    }
-
-    public void setArchivesName(String archivesName) {
-        this.archivesName = archivesName;
-    }
 }

+ 0 - 73
paper-library-business/src/main/java/com/qmth/paper/library/business/entity/PaperScanTaskDetail.java

@@ -1,73 +0,0 @@
-package com.qmth.paper.library.business.entity;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.paper.library.common.base.BaseEntity;
-import io.swagger.annotations.ApiModelProperty;
-
-import java.io.Serializable;
-
-/**
- * <p>
- * 扫描任务详情表
- * </p>
- */
-@TableName("paper_scan_task_detail")
-public class PaperScanTaskDetail extends BaseEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "学校id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("school_id")
-    private Long schoolId;
-
-    @ApiModelProperty(value = "扫描任务id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("paper_scan_task_id")
-    private Long paperScanTaskId;
-
-
-    @ApiModelProperty(value = "学生id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("student_id")
-    private Long studentId;
-
-    @ApiModelProperty(value = "绑定图片")
-    @TableField("bind_count")
-    private Integer bindCount;
-
-    public Long getSchoolId() {
-        return schoolId;
-    }
-
-    public void setSchoolId(Long schoolId) {
-        this.schoolId = schoolId;
-    }
-
-    public Long getPaperScanTaskId() {
-        return paperScanTaskId;
-    }
-
-    public void setPaperScanTaskId(Long paperScanTaskId) {
-        this.paperScanTaskId = paperScanTaskId;
-    }
-
-    public Long getStudentId() {
-        return studentId;
-    }
-
-    public void setStudentId(Long studentId) {
-        this.studentId = studentId;
-    }
-
-    public Integer getBindCount() {
-        return bindCount;
-    }
-
-    public void setBindCount(Integer bindCount) {
-        this.bindCount = bindCount;
-    }
-}

+ 19 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/BasicExamMapper.java

@@ -0,0 +1,19 @@
+package com.qmth.paper.library.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.paper.library.business.bean.result.SelectResult;
+import com.qmth.paper.library.common.entity.BasicExam;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 考试管理 Mapper 接口
+ * </p>
+ */
+public interface BasicExamMapper extends BaseMapper<BasicExam> {
+
+    BasicExam selectBySemesterIdAndName(@Param("semesterId") Long semesterId, @Param("name") String name);
+
+}

+ 26 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/DocManageMapper.java

@@ -0,0 +1,26 @@
+package com.qmth.paper.library.business.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.paper.library.business.bean.result.DocManageResult;
+import com.qmth.paper.library.business.bean.result.DocManageDetailResult;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>
+ * 文档管理 Mapper 接口
+ * </p>
+ */
+public interface DocManageMapper {
+
+    IPage<DocManageResult> pageData(@Param("page") Page<DocManageResult> page, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("orgIds") Set<Long> orgIds);
+
+    IPage<DocManageDetailResult> pageDetail(@Param("page") Page<DocManageDetailResult> page, @Param("paperScanTaskId") Long paperScanTaskId, @Param("collegeName") String collegeName, @Param("majorName") String majorName, @Param("className") String className, @Param("courseName") String courseName, @Param("teacher") String teacher, @Param("teachClass") String teachClass, @Param("isBind") Boolean isBind, @Param("param") String param, @Param("minScore") Double minScore, @Param("maxScore") Double maxScore, @Param("minBindCount") Integer minBindCount, @Param("maxBindCount") Integer maxBindCount);
+
+    List<DocManageDetailResult> pageDetail(@Param("paperScanTaskId") Long paperScanTaskId, @Param("collegeName") String collegeName, @Param("majorName") String majorName, @Param("className") String className, @Param("courseName") String courseName, @Param("teacher") String teacher, @Param("teachClass") String teachClass, @Param("isBind") Boolean isBind, @Param("param") String param, @Param("minScore") Double minScore, @Param("maxScore") Double maxScore, @Param("minBindCount") Integer minBindCount, @Param("maxBindCount") Integer maxBindCount);
+
+    List<DocManageDetailResult> listDetail(@Param("paperScanTaskId") Long paperScanTaskId, @Param("ids") List<String> ids);
+}

+ 16 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/ExamCourseMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.paper.library.business.mapper;
+
+import com.qmth.paper.library.business.entity.ExamCourse;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 考生课程表 Mapper 接口
+ * </p>
+ *
+ * @author xf
+ * @since 2024-03-11
+ */
+public interface ExamCourseMapper extends BaseMapper<ExamCourse> {
+
+}

+ 27 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/ExamStudentMapper.java

@@ -0,0 +1,27 @@
+package com.qmth.paper.library.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.paper.library.common.entity.ExamStudent;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 考生 Mapper 接口
+ * </p>
+ */
+public interface ExamStudentMapper extends BaseMapper<ExamStudent> {
+    /**
+     * 分页查询学生信息
+     */
+    IPage<ExamStudent> findStudentPage(@Param("iPage") Page<ExamStudent> iPage,
+                                            @Param("examId") Long examId,
+                                            @Param("courseCode") String courseCode,
+                                            @Param("collegeName") String collegeName,
+                                            @Param("majorName") String majorName,
+                                            @Param("className") String className,
+                                            @Param("queryParams") String queryParams);
+}

+ 0 - 13
paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperArchivesCourseMapper.java

@@ -1,13 +0,0 @@
-package com.qmth.paper.library.business.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.qmth.paper.library.business.entity.PaperArchivesCourse;
-
-/**
- * <p>
- * 档案管理课程表 Mapper 接口
- * </p>
- */
-public interface PaperArchivesCourseMapper extends BaseMapper<PaperArchivesCourse> {
-
-}

+ 0 - 35
paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperArchivesMapper.java

@@ -1,35 +0,0 @@
-package com.qmth.paper.library.business.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.qmth.paper.library.business.bean.result.PaperArchivesDetailResult;
-import com.qmth.paper.library.business.bean.result.PaperArchivesResult;
-import com.qmth.paper.library.business.bean.result.SelectResult;
-import com.qmth.paper.library.business.entity.PaperArchives;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * <p>
- * 档案管理表 Mapper 接口
- * </p>
- */
-public interface PaperArchivesMapper extends BaseMapper<PaperArchives> {
-
-    IPage<PaperArchivesResult> pageData(@Param("page") Page<PaperArchivesResult> page, @Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("managerOrgId") Long managerOrgId, @Param("archivesTypeId") Long archivesTypeId, @Param("archivesName") String archivesName, @Param("orgIds") Set<Long> orgIds);
-
-    PaperArchives selectByArchivesName(@Param("schoolId") Long schoolId, @Param("archivesName") String archivesName);
-
-    List<SelectResult> queryManagerOrg(@Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId);
-
-    IPage<PaperArchivesDetailResult> pageDetail(@Param("page") Page<PaperArchivesDetailResult> page, @Param("paperArchivesId") Long paperArchivesId, @Param("paperScanTaskId") Long paperScanTaskId, @Param("belongOrgId") Long belongOrgId, @Param("majorName") String majorName, @Param("clazzName") String clazzName, @Param("courseName") String courseName, @Param("teacherName") String teacherName, @Param("teachClazzName") String teachClazzName, @Param("isBind") Boolean isBind, @Param("param") String param, @Param("minBindCount") Integer minBindCount, @Param("maxBindCount") Integer maxBindCount);
-
-    List<PaperArchivesDetailResult> pageDetail(@Param("paperArchivesId") Long paperArchivesId, @Param("belongOrgId") Long belongOrgId, @Param("majorName") String majorName, @Param("clazzName") String clazzName, @Param("courseName") String courseName, @Param("teacherName") String teacherName, @Param("teachClazzName") String teachClazzName, @Param("isBind") Boolean isBind, @Param("param") String param);
-
-    List<SelectResult> queryManagerUser(@Param("schoolId") Long schoolId, @Param("roleType") String roleType);
-
-    List<PaperArchivesDetailResult> listDetail(@Param("ids") List<String> ids);
-}

+ 0 - 20
paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperArchivesTypeMapper.java

@@ -1,20 +0,0 @@
-package com.qmth.paper.library.business.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.qmth.paper.library.business.bean.result.SelectResult;
-import com.qmth.paper.library.business.entity.PaperArchivesType;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * <p>
- * 档案类型表 Mapper 接口
- * </p>
- */
-public interface PaperArchivesTypeMapper extends BaseMapper<PaperArchivesType> {
-
-    PaperArchivesType selectByArchivesType(@Param("schoolId") Long schoolId, @Param("name") String name);
-
-    List<SelectResult> queryArchivesType(@Param("schoolId") Long schoolId);
-}

+ 6 - 17
paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperLibraryMapper.java

@@ -3,13 +3,13 @@ package com.qmth.paper.library.business.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.qmth.paper.library.business.bean.result.PaperLibraryResult;
 import com.qmth.paper.library.business.bean.result.TaskStudentResult;
 import com.qmth.paper.library.business.entity.PaperLibrary;
+import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
-import java.util.Set;
+import java.util.Map;
 
 /**
  * <p>
@@ -18,21 +18,10 @@ import java.util.Set;
  */
 public interface PaperLibraryMapper extends BaseMapper<PaperLibrary> {
 
-    IPage<PaperLibraryResult> pageBindData(@Param("page") Page<PaperLibraryResult> page, @Param("semesterId") Long semesterId, @Param("paperArchivesId") Long paperArchivesId, @Param("courseCode") String courseCode, @Param("scanTaskName") String scanTaskName);
+    int countScanStudentCount(@Param("paperScanTaskId") Long paperScanTaskId);
 
-    int countBindData(@Param("paperScanTaskId") Long paperScanTaskId);
+    IPage<TaskStudentResult> listByStudentCode(@Param("page") Page<TaskStudentResult> page, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("studentCode") String studentCode);
 
-    IPage<PaperLibraryResult> pageAbnormalData(@Param("page") Page<PaperLibraryResult> page, @Param("semesterId") Long semesterId, @Param("paperArchivesId") Long paperArchivesId, @Param("courseCode") String courseCode, @Param("scanTaskName") String scanTaskName, @Param("listSubOrgIds") Set<Long> listSubOrgIds, @Param("isMatch") boolean isMatch, @Param("userId") Long userId);
-
-    List<PaperLibrary> listUnBindData(@Param("paperScanTaskId") Long paperScanTaskId);
-
-    List<PaperLibrary> selectBatchData(@Param("paperScanTaskId") Long paperScanTaskId, @Param("userId") Long userId);
-
-    IPage<TaskStudentResult> listByStudentCode(@Param("page") Page<TaskStudentResult> page, @Param("schoolId") Long schoolId, @Param("param") String param);
-
-    IPage<TaskStudentResult> pageStudent(@Param("objectPage") Page<Object> objectPage, @Param("schoolId") Long schoolId, @Param("paperScanTaskId") Long paperScanTaskId, @Param("param") String param);
-
-    int countByPaperScanTaskDetailId(Long paperScanTaskDetailId);
-
-    Integer maxSequence(Long paperScanTaskId);
+    @MapKey(value = "studentId")
+    List<Map> listMaxSequenceByPaperScanTaskId(@Param("paperScanTaskId") Long paperScanTaskId);
 }

+ 16 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperLibraryOtherMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.paper.library.business.mapper;
+
+import com.qmth.paper.library.business.entity.PaperLibraryOther;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 其它文件库 Mapper 接口
+ * </p>
+ *
+ * @author xf
+ * @since 2024-03-12
+ */
+public interface PaperLibraryOtherMapper extends BaseMapper<PaperLibraryOther> {
+
+}

+ 0 - 13
paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperScanTaskDetailMapper.java

@@ -1,13 +0,0 @@
-package com.qmth.paper.library.business.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.qmth.paper.library.business.entity.PaperScanTaskDetail;
-
-/**
- * <p>
- * 扫描任务详情表 Mapper 接口
- * </p>
- */
-public interface PaperScanTaskDetailMapper extends BaseMapper<PaperScanTaskDetail> {
-
-}

+ 2 - 46
paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperScanTaskMapper.java

@@ -11,7 +11,6 @@ import com.qmth.paper.library.business.entity.PaperScanTask;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
-import java.util.Set;
 
 /**
  * <p>
@@ -22,58 +21,15 @@ public interface PaperScanTaskMapper extends BaseMapper<PaperScanTask> {
 
     /**
      * 扫描任务分页查询
-     *
-     * @param iPage           分页参数
-     * @param schoolId        学校id
-     * @param courseCode      课程代码
-     * @param scanTaskName    任务名称
-     * @param scanUser        扫描员
-     * @param checkUser       校验员
-     * @param smallerProgress 进度阈值(小)
-     * @param largerProgress  进度阈值(大)
-     * @param orgIds          数据权限
-     * @return 分页查询结果
      */
     IPage<PaperScanTaskResult> findPaperScanTaskPage(@Param("iPage") Page<PaperScanTaskResult> iPage,
-                                                     @Param("schoolId") Long schoolId,
-                                                     @Param("semesterId") Long semesterId,
-                                                     @Param("paperArchivesId") Long paperArchivesId,
+                                                     @Param("examId") Long examId,
                                                      @Param("courseCode") String courseCode,
-                                                     @Param("scanTaskName") String scanTaskName,
-                                                     @Param("scanUser") String scanUser,
-                                                     @Param("checkUser") String checkUser,
-                                                     @Param("smallerProgress") Integer smallerProgress,
-                                                     @Param("largerProgress") Integer largerProgress,
-                                                     @Param("orgIds") Set<Long> orgIds);
+                                                     @Param("className") String className);
 
     /**
      * 根据扫描任务id分页查询扫描任务详情
-     *
-     * @param iPage           分页参数
-     * @param schoolId        学校id
-     * @param paperScanTaskId 扫描任务id
-     * @param orgIds          数据权限
-     * @return 分页查询结果
      */
     IPage<PaperScanTaskDetailResult> findPaperScanTaskDetailPageByScanTaskId(@Param("iPage") Page<PaperScanTaskDetailResult> iPage,
-                                                                             @Param("schoolId") Long schoolId,
                                                                              @Param("paperScanTaskId") Long paperScanTaskId);
-
-    /**
-     * 根据扫描任务id查询扫描任务的绑定详情
-     *
-     * @param schoolId        学校id
-     * @param paperScanTaskId 扫描任务id
-     * @return 查询结果
-     */
-    List<BindDetailResult> findBindDetailByScanTaskId(@Param("schoolId") Long schoolId,
-                                                      @Param("paperScanTaskId") Long paperScanTaskId);
-
-    List<SelectResult> queryCourse(@Param("schoolId") Long schoolId, @Param("paperArchivesId") Long paperArchivesId, @Param("semesterId") Long semesterId);
-
-    List<SelectResult> queryDataTeachClazz(@Param("schoolId") Long schoolId, @Param("paperArchivesId") Long paperArchivesId, @Param("courseCode") String courseCode);
-
-    PaperScanTaskResult getByPaperScanTaskId(@Param("paperScanTaskId") Long paperScanTaskId);
-
-    IPage<PaperScanTaskResult> pageUnbindData(@Param("iPage") Page<PaperScanTaskResult> iPage, @Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("paperArchivesId") Long paperArchivesId, @Param("courseCode") String courseCode, @Param("scanTaskName") String scanTaskName, @Param("userId") Long userId);
 }

+ 24 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/service/BasicExamService.java

@@ -0,0 +1,24 @@
+package com.qmth.paper.library.business.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.paper.library.business.bean.result.SelectResult;
+import com.qmth.paper.library.common.entity.BasicExam;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 考试管理 服务类
+ * </p>
+ */
+public interface BasicExamService extends IService<BasicExam> {
+
+    IPage<BasicExam> pageData(Long semesterId, Integer pageNumber, Integer pageSize);
+
+    boolean saveData(BasicExam basicExam);
+
+    boolean delete(String ids);
+
+    List<SelectResult> listBySemesterId(Long semesterId);
+}

+ 1 - 15
paper-library-business/src/main/java/com/qmth/paper/library/business/service/BusinessCacheService.java

@@ -13,28 +13,14 @@ import java.util.Map;
 
 public interface BusinessCacheService {
 
-    /**
-     * 删除任务
-     *
-     * @param scanTaskId
-     * @return
-     */
-    void removeSysSetting(Long scanTaskId);
-
     /**
      * 查询任务
-     *
-     * @return
      */
     PaperScanTask getPaperScanTask(Long scanTaskId);
 
-    SysUser getSysUser(Long userId);
-
-    int getSequence(Long paperScanTaskId);
+    int getSequence(Long paperScanTaskId, String studentCode);
 
     void initCacheData();
 
-    int getPaperArchivesCodeSequence(Long schoolId);
-
     int getScanTaskCodeSequence(Long schoolId);
 }

+ 4 - 6
paper-library-business/src/main/java/com/qmth/paper/library/business/service/ClientService.java

@@ -1,7 +1,7 @@
 package com.qmth.paper.library.business.service;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.paper.library.business.entity.PaperScanTask;
+import io.swagger.models.auth.In;
 import org.springframework.web.multipart.MultipartFile;
 
 /**
@@ -11,13 +11,11 @@ import org.springframework.web.multipart.MultipartFile;
  */
 public interface ClientService {
 
-    IPage<PaperScanTask> pageScanTask(Long paperArchivesId, String courseCode, Boolean isMine, Integer pageNumber, Integer pageSize);
+    PaperScanTask pageScanTask(Long examId, String courseCode);
 
     void checkPrivilege(Long userId);
 
-    boolean bindUser(Long paperScanTaskId, Long userId);
+    boolean pictureUpload(Long paperScanTaskId, String studentCode, Integer x, Integer y, Integer width, Integer height, Integer rotate, MultipartFile frontFile, String frontMd5, MultipartFile versoFile, String versoMd5);
 
-    boolean pictureUpload(Long paperScanTaskId, String studentCode, MultipartFile frontFile, String frontMd5, MultipartFile versoFile, String versoMd5);
-
-    boolean enable(Long paperScanTaskId, Boolean enable);
+    boolean otherUpload(Long paperScanTaskId, MultipartFile frontFile, String frontMd5, MultipartFile versoFile, String versoMd5);
 }

+ 25 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/service/DocManageService.java

@@ -0,0 +1,25 @@
+package com.qmth.paper.library.business.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.qmth.paper.library.business.bean.result.DocManageOtherDetailResult;
+import com.qmth.paper.library.business.bean.result.DocManageResult;
+import com.qmth.paper.library.business.bean.result.DocManageDetailResult;
+import com.qmth.paper.library.common.bean.params.DownLoadPaperParams;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 文档管理 服务类
+ * </p>
+ */
+public interface DocManageService {
+
+    IPage<DocManageResult> pageData(Long examId, String courseCode, Integer pageNumber, Integer pageSize);
+
+    IPage<DocManageDetailResult> pageDetail(Long paperScanTaskId, String collegeName, String majorName, String clazzName, String courseName, String teacher, String teachClass, Boolean isBind, String param, Double minScore, Double maxScore, Integer minBindCount, Integer maxBindCount, Integer pageNumber, Integer pageSize);
+
+    List<DocManageDetailResult> listDetail(DownLoadPaperParams downLoadPaperParams);
+
+    IPage<DocManageOtherDetailResult> pageOtherDetail(Long paperScanTaskId, Integer pageNumber, Integer pageSize);
+}

+ 27 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/service/ExamCourseService.java

@@ -0,0 +1,27 @@
+package com.qmth.paper.library.business.service;
+
+import com.qmth.paper.library.business.bean.result.SelectResult;
+import com.qmth.paper.library.business.entity.ExamCourse;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.paper.library.common.entity.ExamStudent;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 考生课程表 服务类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-03-11
+ */
+public interface ExamCourseService extends IService<ExamCourse> {
+
+    void saveStudentCourse(Long examId, List<ExamStudent> basicStudentList);
+
+    void removeByExamId(Long examId);
+
+    List<SelectResult> listConditionByExamId(Long examId);
+
+    List<ExamCourse> listByExamId(Long examId);
+}

+ 44 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/service/ExamStudentService.java

@@ -0,0 +1,44 @@
+package com.qmth.paper.library.business.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.paper.library.common.entity.ExamStudent;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 学校id 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2021-08-02
+ */
+public interface ExamStudentService extends IService<ExamStudent> {
+    /**
+     * 学生基础信息分页查询
+     */
+    IPage<ExamStudent> findStudentPage(Long examId, String courseCode, String collegeName, String clazzName, String majorName, String queryParams, int pageNumber, int pageSize);
+
+    /**
+     * 新增/编辑 考生信息
+     */
+    void saveBasicStudent(ExamStudent basicStudent);
+
+    /**
+     * 删除考生
+     */
+    Boolean removeBasicStudentBatch(List<Long> ids);
+
+    /**
+     * 根据学号查询考生
+     */
+    ExamStudent getByExamIdAndCourseCodeAndStudentCode(Long examId, String courseCode, String studentCode);
+
+    void dataImport(Long semesterId, Long examId, MultipartFile file);
+
+    void updateBindCount(Long studentId);
+
+    void removeByExamId(Long examId);
+}

+ 21 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/service/FileUploadService.java

@@ -0,0 +1,21 @@
+package com.qmth.paper.library.business.service;
+
+
+import com.qmth.paper.library.business.bean.vo.FilePathVo;
+import com.qmth.paper.library.common.enums.UploadFileEnum;
+
+import java.io.File;
+import java.io.InputStream;
+
+public interface FileUploadService {
+
+    FilePathVo uploadFile(File sourceFile, UploadFileEnum uploadFileEnum, String fileName);
+
+    FilePathVo uploadFile(InputStream in, UploadFileEnum uploadFileEnum, String filePathName);
+
+    File downloadFile(String path, String filePathName) throws Exception;
+
+    String filePreview(String path);
+    String filePreview(FilePathVo filePathVo);
+
+}

+ 0 - 13
paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperArchivesCourseService.java

@@ -1,13 +0,0 @@
-package com.qmth.paper.library.business.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.qmth.paper.library.business.entity.PaperArchivesCourse;
-
-/**
- * <p>
- * 档案管理课程表 服务类
- * </p>
- */
-public interface PaperArchivesCourseService extends IService<PaperArchivesCourse> {
-
-}

+ 0 - 39
paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperArchivesService.java

@@ -1,39 +0,0 @@
-package com.qmth.paper.library.business.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.qmth.paper.library.business.bean.result.PaperArchivesDetailResult;
-import com.qmth.paper.library.business.bean.result.PaperArchivesResult;
-import com.qmth.paper.library.business.bean.result.SelectResult;
-import com.qmth.paper.library.business.entity.PaperArchives;
-import com.qmth.paper.library.common.bean.params.DownLoadPaperParams;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.IOException;
-import java.util.List;
-
-/**
- * <p>
- * 档案管理表 服务类
- * </p>
- */
-public interface PaperArchivesService extends IService<PaperArchives> {
-
-    IPage<PaperArchivesResult> pageData(Long semesterId, Long managerOrgId, Long archivesTypeId, String archivesName, Integer pageNumber, Integer pageSize);
-
-    boolean saveData(PaperArchives paperArchives);
-
-    boolean delete(String ids);
-
-    List<SelectResult> queryManagerOrg(Long semesterId);
-
-    List<SelectResult> queryArchives(Long semesterId);
-
-    IPage<PaperArchivesDetailResult> pageDetail(Long paperArchivesId, Long paperScanTaskId, Long belongOrgId, String majorName, String clazzName, String courseName, String teacherName, String teachClazzName, Boolean isBind, String param, Integer minBindCount, Integer maxBindCount, Integer pageNumber, Integer pageSize);
-
-    List<PaperArchivesDetailResult> listDetail(DownLoadPaperParams downLoadPaperParams);
-
-    List<SelectResult> queryManagerUser();
-
-    void importData(Long paperArchivesId, MultipartFile file) throws IOException;
-}

+ 0 - 24
paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperArchivesTypeService.java

@@ -1,24 +0,0 @@
-package com.qmth.paper.library.business.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.qmth.paper.library.business.bean.result.SelectResult;
-import com.qmth.paper.library.business.entity.PaperArchivesType;
-
-import java.util.List;
-
-/**
- * <p>
- * 档案管理表 服务类
- * </p>
- */
-public interface PaperArchivesTypeService extends IService<PaperArchivesType> {
-
-    IPage<PaperArchivesType> pageData(Integer pageNumber, Integer pageSize);
-
-    boolean saveData(PaperArchivesType paperArchivesType);
-
-    boolean delete(String ids);
-
-    List<SelectResult> queryArchivesType();
-}

+ 11 - 34
paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperLibraryCommonService.java

@@ -1,6 +1,9 @@
 package com.qmth.paper.library.business.service;
 
+import com.qmth.paper.library.business.bean.vo.PathSequenceVo;
+import com.qmth.paper.library.business.entity.PaperScanTask;
 import com.qmth.paper.library.common.entity.BasicAttachment;
+import com.qmth.paper.library.common.entity.ExamStudent;
 import com.qmth.paper.library.common.entity.SysOrg;
 import com.qmth.paper.library.common.enums.TaskTypeEnum;
 import com.qmth.paper.library.common.enums.UploadFileEnum;
@@ -9,68 +12,42 @@ import org.springframework.web.multipart.MultipartFile;
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.util.Map;
-import java.util.Set;
 
 /**
- * @Description: 公共服务service
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2021/3/26
+ * 公共服务service
  */
 public interface PaperLibraryCommonService {
 
+    String getScanTaskCode(Long schoolId);
+
     /**
      * 保存附件公用
-     *
-     * @param file
-     * @param md5
-     * @param type
-     * @param objId
-     * @return
      */
-    public BasicAttachment saveAttachmentCommon(MultipartFile file, String md5, UploadFileEnum type, Long objId);
+    BasicAttachment saveAttachmentCommon(MultipartFile file, String md5, UploadFileEnum type, Long objId);
 
     /**
      * 保存附件
-     *
-     * @param file
-     * @param md5
-     * @param type
-     * @return
      */
-    public BasicAttachment saveAttachment(MultipartFile file, String md5, UploadFileEnum type);
+    BasicAttachment saveAttachment(MultipartFile file, String md5, UploadFileEnum type);
 
     /**
      * 机构禁用
-     *
-     * @param org
-     * @return
      */
     boolean enable(SysOrg org);
 
     /**
      * 机构删除
-     *
-     * @param ids
-     * @return
      */
     boolean sysOrgRemove(String ids);
 
     /**
      * 保存任务
-     *
-     * @param file
-     * @param taskTypeEnum
-     * @return
      */
-    public Map<String, Object> saveTask(MultipartFile file, TaskTypeEnum taskTypeEnum);
+    Map<String, Object> saveTask(MultipartFile file, TaskTypeEnum taskTypeEnum);
 
-    Map<String, String> saveLibraryFile(Long paperScanTaskId, UploadFileEnum uploadFileEnum, MultipartFile... files);
+    PathSequenceVo saveLibraryFile(PaperScanTask paperScanTask, ExamStudent examStudent, UploadFileEnum uploadFileEnum, MultipartFile... files);
 
-    String preViewPath(String path, String uploadType, String type, Boolean isExpire);
+    PathSequenceVo saveLibraryOtherFile(PaperScanTask paperScanTask, UploadFileEnum uploadFileEnum, MultipartFile... files);
 
     File downloadFile(String rootPath, String path, String uploadType, String type) throws FileNotFoundException;
-
-    Set<Long> listSubOrgIds(Long orgId);
 }

+ 16 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperLibraryOtherService.java

@@ -0,0 +1,16 @@
+package com.qmth.paper.library.business.service;
+
+import com.qmth.paper.library.business.entity.PaperLibraryOther;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 其它文件库 服务类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-03-12
+ */
+public interface PaperLibraryOtherService extends IService<PaperLibraryOther> {
+
+}

+ 13 - 24
paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperLibraryService.java

@@ -5,10 +5,13 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.paper.library.business.bean.result.PaperLibraryResult;
 import com.qmth.paper.library.business.bean.result.PaperScanTaskResult;
 import com.qmth.paper.library.business.bean.result.TaskStudentResult;
+import com.qmth.paper.library.business.bean.vo.RecognitionResultVo;
 import com.qmth.paper.library.business.entity.PaperLibrary;
-import com.qmth.paper.library.common.enums.RecognitionTypeEnum;
+import com.qmth.paper.library.business.entity.PaperScanTask;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -17,37 +20,23 @@ import java.util.List;
  */
 public interface PaperLibraryService extends IService<PaperLibrary> {
 
-    IPage<PaperScanTaskResult> pageUnbindData(Long semesterId, Long paperArchivesId, String courseCode, String scanTaskName, Integer pageNumber, Integer pageSize);
+    int countScanStudentCount(Long paperScanTaskId);
 
-    IPage<PaperLibraryResult> pageBindData(Long semesterId, Long paperArchivesId, String courseCode, String scanTaskName, Integer pageNumber, Integer pageSize);
-
-    int countBindData(Long paperScanTaskId);
-
-    IPage<PaperLibraryResult> pageAbnormalData(Long semesterId, Long paperArchivesId, String courseCode, String scanTaskName, Integer pageNumber, Integer pageSize);
-
-    boolean bind(Long paperLibraryId, Long paperScanTaskId, Long studentId);
-
-    List<PaperLibraryResult> listStudentPicture(Long paperScanTaskDetailId);
-
-    List<PaperLibraryResult> toAbnormalPaper(Long paperLibraryId);
-
-    List<PaperLibraryResult> toBindPaper(Long paperScanTaskId);
-
-    IPage<TaskStudentResult> listByStudentCode(String studentCode, Integer pageNumber, Integer pageSize);
+    PaperLibraryResult listStudentPicture(Long paperScanTaskId, Long studentId);
 
     int countScanCount(Long paperScanTaskId);
 
-    IPage<TaskStudentResult> pageStudent(Long paperScanTaskId, String param, Integer pageNumber, Integer pageSize);
+    IPage<TaskStudentResult> pageStudent(Long examId, String courseCode, String studentCode, Integer pageNumber, Integer pageSize);
 
-    List<String> recognition(Long paperLibraryId, Integer index, Integer x, Integer y, Integer width, Integer height, Integer rotate, RecognitionTypeEnum type);
+    RecognitionResultVo recognition(PaperScanTask paperScanTask, String studentCode, MultipartFile file, Integer x, Integer y, Integer width, Integer height, Integer rotate);
 
-    Boolean abnormal(Long paperLibraryId);
+    List<Map> listMaxSequenceByPaperScanTaskId(Long paperScanTaskId);
 
-    Integer maxSequence(Long paperScanTaskId);
+    void removeByPaperScanTaskId(Long paperScanTaskId);
 
-    String getPaperArchivesCode(Long schoolId);
+    boolean rebind(Long paperLibraryId, Long studentId);
 
-    String getScanTaskCode(Long schoolId);
+    int countByStudentId(Long studentId);
 
-    List<PaperLibrary> listHistory();
+    int countByExamId(Long examId);
 }

+ 0 - 16
paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperScanTaskDetailService.java

@@ -1,16 +0,0 @@
-package com.qmth.paper.library.business.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.qmth.paper.library.business.entity.PaperScanTaskDetail;
-
-/**
- * <p>
- * 扫描任务详情表 服务类
- * </p>
- */
-public interface PaperScanTaskDetailService extends IService<PaperScanTaskDetail> {
-
-    PaperScanTaskDetail getByPaperScanTaskIdAndStudentId(Long paperScanTaskId, Long studentId);
-
-    int countStudent(Long paperScanTaskId);
-}

+ 11 - 92
paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperScanTaskService.java

@@ -1,15 +1,14 @@
 package com.qmth.paper.library.business.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.qmth.paper.library.business.bean.params.PaperScanTaskParam;
-import com.qmth.paper.library.business.bean.result.*;
+import com.qmth.paper.library.business.bean.result.PaperScanTaskDetailResult;
+import com.qmth.paper.library.business.bean.result.PaperScanTaskResult;
 import com.qmth.paper.library.business.entity.PaperScanTask;
-import com.qmth.paper.library.common.entity.SysUser;
-import org.springframework.web.multipart.MultipartFile;
+import com.qmth.paper.library.common.entity.ExamStudent;
+import com.qmth.paper.library.common.enums.RecognitionTypeEnum;
+import com.qmth.paper.library.common.enums.StoreTypeEnum;
 
-import java.io.IOException;
 import java.util.List;
 
 /**
@@ -21,102 +20,22 @@ public interface PaperScanTaskService extends IService<PaperScanTask> {
 
     /**
      * 扫描任务分页查询
-     *
-     * @param paperArchivesId 档案ID
-     * @param courseCode      课程代码
-     * @param scanTaskName    任务名称
-     * @param smallerProgress 进度阈值(小)
-     * @param largerProgress  进度阈值(大)
-     * @param pageNumber      分页页数
-     * @param pageSize        分页容量
-     * @param requestUser     请求用户
-     * @return 分页结果
      */
-    IPage<PaperScanTaskResult> paperScanTaskPage(Long semesterId, Long paperArchivesId, String courseCode, String scanTaskName, String scanUser, String checkUser, Integer smallerProgress, Integer largerProgress, int pageNumber, int pageSize, SysUser requestUser);
-
-    /**
-     * 扫描任务编辑
-     *
-     * @param paperScanTaskParam 扫描任务参数
-     * @param requestUser        请求用户
-     * @return 扫描任务id
-     */
-    Long editPaperScanTask(PaperScanTaskParam paperScanTaskParam, SysUser requestUser);
-
-    /**
-     * 扫描任务批量删除
-     *
-     * @param idList      扫描任务id集合
-     * @param requestUser 请求的用户
-     */
-    void deletePaperScanTaskByIdList(List<Long> idList, SysUser requestUser);
-
-    /**
-     * 扫描员模板导出
-     *
-     * @param requestUser 请求的用户
-     */
-    void exportScanner(SysUser requestUser) throws Exception;
+    IPage<PaperScanTaskResult> paperScanTaskPage(Long examId, String courseCode, String className, int pageNumber, int pageSize);
 
     /**
      * 根据扫描任务id分页查询扫描任务详情
-     *
-     * @param paperScanTaskId 扫描任务id
-     * @param requestUser     请求的用户
-     * @return 扫描任务详情分页结果
      */
-    IPage<PaperScanTaskDetailResult> findPaperScanTaskDetailPageByScanTaskId(Long paperScanTaskId, int pageNumber, int pageSize, SysUser requestUser);
+    IPage<PaperScanTaskDetailResult> findPaperScanTaskDetailPageByScanTaskId(Long paperScanTaskId, int pageNumber, int pageSize);
 
     /**
      * 清除扫描任务数据
-     *
-     * @param paperScanTaskId 扫描任务id
-     * @param requestUser     请求用户
-     */
-    void clearScanData(Long paperScanTaskId, SysUser requestUser);
-
-    /**
-     * 解绑扫描员
-     *
-     * @param paperScanTaskId 扫描任务id
-     * @param requestUser     请求用户
      */
-    void unbindScanner(Long paperScanTaskId, SysUser requestUser);
-
-    /**
-     * 根据扫描任务id查询扫描任务的绑定详情
-     *
-     * @param paperScanTaskId 扫描任务id
-     * @param requestUser     请求的用户
-     * @return 绑定详情集合
-     */
-    List<BindDetailResult> findBindDetailByScanTaskId(Long paperScanTaskId, SysUser requestUser);
-
-    /**
-     * 释放数据检察员正在绑定的任务
-     *
-     * @param paperScanTaskId 扫描任务id
-     * @param bindUserId      数据检察员id
-     * @param requestUser     请求的用户
-     */
-    void releaseBindingTask(Long paperScanTaskId, Long bindUserId, SysUser requestUser);
-
-
-    List<PaperScanTask> listByPaperArchivesId(Long id);
-
-    List<SelectResult> queryCourse(Long paperArchivesId, Long semesterId);
-
-    List<SelectResult> queryDataTeachClazz(Long paperArchivesId, String courseCode);
-
-    List<SelectResult> queryScanTask(Long paperArchivesId);
-
-    PaperScanTaskResult getByPaperScanTaskId(Long paperScanTaskId);
-
-    boolean enable(Long paperScanTaskId, Boolean enable);
+    void clearScanData(Long paperScanTaskId);
 
-    List<PaperScanTask> getByPaperArchivesIdAndScanTaskName(Long schoolId, Long paperArchivesId, String scanTaskName);
+    void addScanTask(Long examId, RecognitionTypeEnum recognitionType, StoreTypeEnum storeType, List<ExamStudent> basicStudentList);
 
-    IPage<PaperScanTaskResult> pageUnbindData(Page<PaperScanTaskResult> iPage, Long semesterId, Long paperArchivesId, String courseCode, String scanTaskName);
+    void removeBySchoolId(Long schoolId);
 
-    void updateStudentCount(Long paperScanTaskId);
+    List<PaperScanTask> listByExamId(Long examId);
 }

+ 122 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/BasicExamServiceImpl.java

@@ -0,0 +1,122 @@
+package com.qmth.paper.library.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.paper.library.business.bean.result.SelectResult;
+import com.qmth.paper.library.business.mapper.BasicExamMapper;
+import com.qmth.paper.library.business.service.BasicExamService;
+import com.qmth.paper.library.business.service.ExamStudentService;
+import com.qmth.paper.library.common.contant.SystemConstant;
+import com.qmth.paper.library.common.entity.BasicExam;
+import com.qmth.paper.library.common.entity.ExamStudent;
+import com.qmth.paper.library.common.enums.ExceptionResultEnum;
+import com.qmth.paper.library.common.service.BasicSemesterService;
+import com.qmth.paper.library.common.util.ServletUtil;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 考试管理 服务实现类
+ * </p>
+ */
+@Service
+public class BasicExamServiceImpl extends ServiceImpl<BasicExamMapper, BasicExam> implements BasicExamService {
+
+    @Resource
+    private ExamStudentService examStudentService;
+    @Resource
+    private BasicSemesterService basicSemesterService;
+
+    @Override
+    public IPage<BasicExam> pageData(Long semesterId, Integer pageNumber, Integer pageSize) {
+        QueryWrapper<BasicExam> queryWrapper = new QueryWrapper<>();
+        LambdaQueryWrapper<BasicExam> lambda = queryWrapper.lambda();
+        if (semesterId != null) {
+            lambda.eq(BasicExam::getSemesterId, semesterId);
+        }
+        lambda.orderByAsc(BasicExam::getCreateTime);
+        Page<BasicExam> basicExamPage = this.baseMapper.selectPage(new Page<>(pageNumber, pageSize), queryWrapper);
+        for (BasicExam record : basicExamPage.getRecords()) {
+            record.setSemesterName(basicSemesterService.getById(record.getSemesterId()).getName());
+        }
+        return basicExamPage;
+    }
+
+    @Override
+    public boolean saveData(BasicExam basicExam) {
+        Long userId = Long.valueOf(ServletUtil.getRequestHeaderUserId().toString());
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+
+        BasicExam basicExamExist = this.baseMapper.selectBySemesterIdAndName(basicExam.getSemesterId(), basicExam.getName());
+
+        // 新增
+        if (basicExam.getId() == null) {
+            if (basicExamExist != null) {
+                throw ExceptionResultEnum.ERROR.exception("考试名称已存在");
+            }
+            basicExam.setId(SystemConstant.getDbUuid());
+            basicExam.setSchoolId(schoolId);
+            basicExam.setCreateId(userId);
+            basicExam.setCreateTime(System.currentTimeMillis());
+            return this.save(basicExam);
+        }
+        // 修改
+        else {
+            if (basicExamExist != null && !basicExam.getId().equals(basicExamExist.getId())) {
+                throw ExceptionResultEnum.ERROR.exception("考试名称已存在");
+            }
+            BasicExam exam = this.getById(basicExam.getId());
+
+            exam.setName(basicExam.getName());
+            exam.setUpdateId(userId);
+            exam.setUpdateTime(System.currentTimeMillis());
+            return this.updateById(exam);
+        }
+    }
+
+    @Transactional
+    @Override
+    public boolean delete(String ids) {
+        String[] idsArray = ids.split(",");
+        for (String id : idsArray) {
+            Long idLong = Long.valueOf(id);
+            BasicExam basicExam = this.getById(idLong);
+            if (basicExam == null) {
+                throw ExceptionResultEnum.ERROR.exception("数据有误");
+            }
+            // 已使用不能删除
+            QueryWrapper<ExamStudent> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().eq(ExamStudent::getExamId, id);
+            int count = examStudentService.count(queryWrapper);
+            if (count != 0) {
+                throw ExceptionResultEnum.ERROR.exception("考试下已上传考生,不能删除");
+            }
+            this.removeById(idLong);
+        }
+        return true;
+    }
+
+    @Override
+    public List<SelectResult> listBySemesterId(Long semesterId) {
+        QueryWrapper<BasicExam> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(BasicExam::getSemesterId, semesterId)
+                .orderByDesc(BasicExam::getCreateTime);
+        List<BasicExam> examList = this.list(queryWrapper);
+        List<SelectResult> selectResults = new ArrayList<>();
+        for (BasicExam basicExam : examList) {
+            SelectResult selectResult = new SelectResult();
+            selectResult.setId(String.valueOf(basicExam.getId()));
+            selectResult.setName(basicExam.getName());
+            selectResults.add(selectResult);
+        }
+        return selectResults;
+    }
+}

+ 31 - 79
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/BusinessCacheServiceImpl.java

@@ -1,24 +1,17 @@
 package com.qmth.paper.library.business.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.qmth.paper.library.business.entity.PaperArchives;
 import com.qmth.paper.library.business.entity.PaperScanTask;
 import com.qmth.paper.library.business.service.BusinessCacheService;
-import com.qmth.paper.library.business.service.PaperArchivesService;
 import com.qmth.paper.library.business.service.PaperLibraryService;
 import com.qmth.paper.library.business.service.PaperScanTaskService;
 import com.qmth.paper.library.common.bean.dto.SchoolDto;
-import com.qmth.paper.library.common.bean.dto.syssetting.SettingObject;
-import com.qmth.paper.library.common.bean.dto.syssetting.SimpleObject;
 import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.common.entity.*;
 import com.qmth.paper.library.common.enums.ExceptionResultEnum;
 import com.qmth.paper.library.common.lock.LockService;
 import com.qmth.paper.library.common.lock.LockType;
-import com.qmth.paper.library.common.service.*;
-import org.springframework.cache.annotation.CacheEvict;
-import org.springframework.cache.annotation.CachePut;
+import com.qmth.paper.library.common.service.BasicSchoolService;
+import com.qmth.paper.library.common.service.SysUserService;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -27,31 +20,21 @@ import javax.annotation.Resource;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.StringJoiner;
 
 @Service
 public class BusinessCacheServiceImpl implements BusinessCacheService {
 
-    Map<Long, Integer> scanTaskSequenceMap = new HashMap<>();
-    Map<Long, Integer> paperArchivesCodeMap = new HashMap<>();
+    Map<String, Integer> scanTaskSequenceMap = new HashMap<>();
     Map<Long, Integer> scanTaskCodeMap = new HashMap<>();
-
     @Resource
-    PaperScanTaskService paperScanTaskService;
-
+    private PaperScanTaskService paperScanTaskService;
     @Resource
-    PaperArchivesService paperArchivesService;
-
+    private PaperLibraryService paperLibraryService;
     @Resource
-    PaperLibraryService paperLibraryService;
-
+    private BasicSchoolService basicSchoolService;
     @Resource
-    SysUserService sysUserService;
-
-    @Resource
-    BasicSchoolService basicSchoolService;
-
-    @Resource
-    LockService lockService;
+    private LockService lockService;
 
     @Override
     @Cacheable(value = SystemConstant.CACHE_NAME, key = "'paperScanTask' + #scanTaskId")
@@ -60,62 +43,50 @@ public class BusinessCacheServiceImpl implements BusinessCacheService {
     }
 
     @Override
-    @CacheEvict(value = SystemConstant.CACHE_NAME, key = "'paperScanTask' + #scanTaskId")
-    public void removeSysSetting(Long schoolId) {
-
-    }
-
-    @Override
-    @Cacheable(value = SystemConstant.CACHE_NAME, key = "'sysUser' + #userId")
-    public SysUser getSysUser(Long userId) {
-        return sysUserService.getById(userId);
-    }
-
-    @Override
-    public int getSequence(Long paperScanTaskId) {
+    public int getSequence(Long paperScanTaskId, String studentCode) {
+        String key = getKey(String.valueOf(paperScanTaskId), studentCode);
         try {
-            lockService.waitlock(LockType.GET_SEQUENCE, paperScanTaskId);
-            if (!scanTaskSequenceMap.containsKey(paperScanTaskId)) {
-                scanTaskSequenceMap.put(paperScanTaskId, 1);
+            lockService.waitlock(LockType.GET_SEQUENCE, key);
+            if (!scanTaskSequenceMap.containsKey(key)) {
+                scanTaskSequenceMap.put(key, 1);
                 return 1;
             }
-            Integer integer = scanTaskSequenceMap.get(paperScanTaskId);
+            Integer integer = scanTaskSequenceMap.get(key);
             int value = integer + 1;
-            scanTaskSequenceMap.put(paperScanTaskId, value);
+            scanTaskSequenceMap.put(key, value);
             return value;
         } catch (Exception e) {
             throw ExceptionResultEnum.ERROR.exception("获取自增数失败:" + e.getMessage());
         } finally {
-            lockService.unlock(LockType.GET_SEQUENCE, paperScanTaskId);
+            lockService.unlock(LockType.GET_SEQUENCE, key);
         }
     }
 
+    private String getKey(String... strings) {
+        StringJoiner sj = new StringJoiner("-");
+        for (String string : strings) {
+            sj.add(string);
+        }
+        return sj.toString();
+    }
+
     @Override
     public void initCacheData() {
         QueryWrapper<PaperScanTask> queryWrapper = new QueryWrapper<>();
         List<PaperScanTask> paperScanTaskList = paperScanTaskService.list(queryWrapper);
         for (PaperScanTask paperScanTask : paperScanTaskList) {
-            Integer sequence = paperLibraryService.maxSequence(paperScanTask.getId());
-            int value = sequence == null ? 0 : sequence.intValue();
-            scanTaskSequenceMap.put(paperScanTask.getId(), value);
+            String paperScanTaskIdStr = String.valueOf(paperScanTask.getId());
+            List<Map> mapList = paperLibraryService.listMaxSequenceByPaperScanTaskId(paperScanTask.getId());
+            for (Map map : mapList) {
+                String studentCode = String.valueOf(map.get("studentCode"));
+                int value = map.get("maxSequence") == null ? 0 : Integer.valueOf(String.valueOf(map.get("maxSequence")));
+                scanTaskSequenceMap.put(getKey(paperScanTaskIdStr, studentCode), value);
+            }
         }
 
         List<SchoolDto> basicSchoolList = basicSchoolService.listSchool();
         for (SchoolDto schoolDto : basicSchoolList) {
             Long schoolId = Long.valueOf(schoolDto.getId());
-            // 档案编号序号
-            QueryWrapper<PaperArchives> archivesQueryWrapper = new QueryWrapper<>();
-            archivesQueryWrapper.lambda().eq(PaperArchives::getSchoolId, schoolId)
-                    .likeRight(PaperArchives::getArchivesCode, SystemConstant.PAPER_ARCHIVES_CODE_PREFIX)
-                    .orderByDesc(PaperArchives::getArchivesCode);
-            List<PaperArchives> paperArchivesList = paperArchivesService.list(archivesQueryWrapper);
-            if (!CollectionUtils.isEmpty(paperArchivesList)) {
-                String paperArchivesCode = paperArchivesList.get(0).getArchivesCode();
-                String codeTemp = paperArchivesCode.substring(SystemConstant.PAPER_ARCHIVES_CODE_PREFIX.length());
-                int codeInt = Integer.parseInt(codeTemp);
-                paperArchivesCodeMap.put(schoolId, codeInt);
-            }
-
             // 扫描任务编号序号
             QueryWrapper<PaperScanTask> scanTaskQueryWrapper = new QueryWrapper<>();
             scanTaskQueryWrapper.lambda().eq(PaperScanTask::getSchoolId, schoolId)
@@ -131,25 +102,6 @@ public class BusinessCacheServiceImpl implements BusinessCacheService {
         }
     }
 
-    @Override
-    public int getPaperArchivesCodeSequence(Long schoolId) {
-        try {
-            lockService.waitlock(LockType.PAPER_ARCHIVES_SEQUENCE, schoolId);
-            if (!paperArchivesCodeMap.containsKey(schoolId)) {
-                paperArchivesCodeMap.put(schoolId, 1);
-                return 1;
-            }
-            Integer integer = paperArchivesCodeMap.get(schoolId);
-            int value = integer + 1;
-            paperArchivesCodeMap.put(schoolId, value);
-            return value;
-        } catch (Exception e) {
-            throw ExceptionResultEnum.ERROR.exception("获取档案编号自增数失败:" + e.getMessage());
-        } finally {
-            lockService.unlock(LockType.PAPER_ARCHIVES_SEQUENCE, schoolId);
-        }
-    }
-
     @Override
     public int getScanTaskCodeSequence(Long schoolId) {
         try {

+ 77 - 152
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/ClientServiceImpl.java

@@ -2,28 +2,19 @@ package com.qmth.paper.library.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.qmth.paper.library.business.entity.PaperArchives;
+import com.qmth.paper.library.business.bean.vo.PathSequenceVo;
+import com.qmth.paper.library.business.bean.vo.RecognitionResultVo;
 import com.qmth.paper.library.business.entity.PaperLibrary;
+import com.qmth.paper.library.business.entity.PaperLibraryOther;
 import com.qmth.paper.library.business.entity.PaperScanTask;
-import com.qmth.paper.library.business.entity.PaperScanTaskDetail;
 import com.qmth.paper.library.business.service.*;
-import com.qmth.paper.library.common.bean.dto.syssetting.SimpleObject;
-import com.qmth.paper.library.common.contant.SysSettingConstant;
 import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.common.entity.BasicStudent;
+import com.qmth.paper.library.common.entity.BasicExam;
+import com.qmth.paper.library.common.entity.ExamStudent;
 import com.qmth.paper.library.common.entity.SysPrivilege;
-import com.qmth.paper.library.common.entity.SysSetting;
-import com.qmth.paper.library.common.entity.SysUser;
 import com.qmth.paper.library.common.enums.ExceptionResultEnum;
 import com.qmth.paper.library.common.enums.UploadFileEnum;
-import com.qmth.paper.library.common.lock.LockService;
-import com.qmth.paper.library.common.lock.LockType;
-import com.qmth.paper.library.common.service.BasicStudentService;
-import com.qmth.paper.library.common.service.CommonCacheService;
 import com.qmth.paper.library.common.service.SysPrivilegeService;
-import com.qmth.paper.library.common.service.SysSettingService;
 import com.qmth.paper.library.common.util.ServletUtil;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -32,12 +23,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
-import java.awt.print.Paper;
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -49,69 +35,29 @@ import java.util.Objects;
 public class ClientServiceImpl implements ClientService {
 
     @Resource
-    PaperScanTaskService paperScanTaskService;
-
-    @Resource
-    SysPrivilegeService sysPrivilegeService;
-
-    @Resource
-    PaperLibraryService paperLibraryService;
-
+    private PaperScanTaskService paperScanTaskService;
     @Resource
-    PaperLibraryCommonService paperLibraryCommonService;
-
+    private SysPrivilegeService sysPrivilegeService;
     @Resource
-    CommonCacheService commonCacheService;
-
+    private PaperLibraryService paperLibraryService;
     @Resource
-    SysSettingService sysSettingService;
-
+    private PaperLibraryOtherService paperLibraryOtherService;
     @Resource
-    BasicStudentService basicStudentService;
-
+    private PaperLibraryCommonService paperLibraryCommonService;
     @Resource
-    PaperScanTaskDetailService paperScanTaskDetailService;
-
+    private ExamStudentService examStudentService;
     @Resource
-    PaperArchivesService paperArchivesService;
-
+    private BusinessCacheService businessCacheService;
     @Resource
-    LockService lockService;
+    private BasicExamService basicExamService;
 
     @Override
-    public IPage<PaperScanTask> pageScanTask(Long paperArchivesId, String courseCode, Boolean isMine, Integer pageNumber, Integer pageSize) {
-        Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
+    public PaperScanTask pageScanTask(Long examId, String courseCode) {
         // 查询任务
         QueryWrapper<PaperScanTask> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(PaperScanTask::getSchoolId, schoolId);
-        if (paperArchivesId != null) {
-            queryWrapper.lambda().eq(PaperScanTask::getPaperArchivesId, paperArchivesId);
-        }
-        if (StringUtils.isNotBlank(courseCode)) {
-            queryWrapper.lambda().eq(PaperScanTask::getCourseCode, courseCode);
-        }
-        if (isMine != null) {
-            // 我的任务
-            if (isMine) {
-                Long userId = Long.valueOf(ServletUtil.getRequestHeaderUserId().toString());
-                queryWrapper.lambda().eq(PaperScanTask::getScanUserId, userId);
-            } else {
-                queryWrapper.lambda().isNull(PaperScanTask::getScanUserId);
-            }
-        }
-        Page<PaperScanTask> taskPage = paperScanTaskService.page(new Page<>(pageNumber, pageSize), queryWrapper);
-        Map<Long, String> map = new HashMap<>();
-        for (PaperScanTask record : taskPage.getRecords()) {
-            if (!map.containsKey(record.getPaperArchivesId())) {
-                PaperArchives paperArchives = paperArchivesService.getById(record.getPaperArchivesId());
-                record.setArchivesName(paperArchives.getArchivesName());
-                map.put(paperArchives.getId(), paperArchives.getArchivesName());
-            } else {
-                record.setArchivesName(map.get(record.getPaperArchivesId()));
-            }
-
-        }
-        return taskPage;
+        queryWrapper.lambda().eq(PaperScanTask::getExamId, examId)
+                .eq(PaperScanTask::getCourseCode, courseCode);
+        return paperScanTaskService.getOne(queryWrapper);
     }
 
     @Override
@@ -123,50 +69,17 @@ public class ClientServiceImpl implements ClientService {
         }
     }
 
-    @Override
-    public boolean bindUser(Long paperScanTaskId, Long userId) {
-        try {
-            lockService.waitlock(LockType.BIND_SCAN_USER, paperScanTaskId);
-            PaperScanTask paperScanTask = paperScanTaskService.getById(paperScanTaskId);
-            if (paperScanTask == null) {
-                throw ExceptionResultEnum.ERROR.exception("扫描任务不存在");
-            }
-
-            if (paperScanTask.getEnable()) {
-                throw ExceptionResultEnum.ERROR.exception("扫描任务已关闭");
-            }
-
-            // 扫描任务是否被其它人扫描
-            if (paperScanTask.getScanUserId() != null && !paperScanTask.getScanUserId().equals(userId)) {
-                throw ExceptionResultEnum.ERROR.exception("其它扫描员已开始扫描");
-            }
-
-            if (userId == null) {
-                SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-                userId = sysUser.getId();
-            }
-
-            UpdateWrapper<PaperScanTask> updateWrapper = new UpdateWrapper<>();
-            updateWrapper.lambda().set(PaperScanTask::getScanUserId, userId).eq(PaperScanTask::getId, paperScanTaskId);
-            return paperScanTaskService.update(updateWrapper);
-        } catch (Exception e) {
-            throw ExceptionResultEnum.ERROR.exception("扫描任务错误:" + e.getMessage());
-        } finally {
-            lockService.unlock(LockType.BIND_SCAN_USER, paperScanTaskId);
-        }
-    }
-
     @Transactional
     @Override
-    public boolean pictureUpload(Long paperScanTaskId, String studentCode, MultipartFile frontFile, String frontMd5, MultipartFile versoFile, String versoMd5) {
+    public boolean pictureUpload(Long paperScanTaskId, String studentCode, Integer x, Integer y, Integer width, Integer height, Integer rotate, MultipartFile frontFile, String frontMd5, MultipartFile versoFile, String versoMd5) {
         Long userId = Long.valueOf(ServletUtil.getRequestHeaderUserId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
 
         if (Objects.isNull(frontFile) || frontFile.getSize() == 0) {
-            throw ExceptionResultEnum.ERROR.exception("frontFile(正面文件)为空");
+            throw ExceptionResultEnum.ERROR.exception("frontFile(正面图片)为空");
         }
         if (Objects.isNull(versoFile) || versoFile.getSize() == 0) {
-            throw ExceptionResultEnum.ERROR.exception("versoFile(背面文件)为空");
+            throw ExceptionResultEnum.ERROR.exception("versoFile(背面图片)为空");
         }
 
         try {
@@ -179,62 +92,42 @@ public class ClientServiceImpl implements ClientService {
                 throw ExceptionResultEnum.MD5_EQUALS_FALSE.exception();
             }
 
-            // 保存图片,生成路径
-            Map<String, String> map = paperLibraryCommonService.saveLibraryFile(paperScanTaskId, UploadFileEnum.IMAGE, frontFile, versoFile);
+            PaperScanTask paperScanTask = businessCacheService.getPaperScanTask(paperScanTaskId);
+            if (paperScanTask == null) {
+                throw ExceptionResultEnum.ERROR.exception("扫描任务不存在");
+            }
 
+            // 识别条码区或者考生信息(前端studentCode有值时,不识别,只保存条码裁切图)
+            RecognitionResultVo recognitionVo = paperLibraryService.recognition(paperScanTask, studentCode, frontFile, x, y, width, height, rotate);
             PaperLibrary paperLibrary = new PaperLibrary();
             paperLibrary.setId(SystemConstant.getDbUuid());
-            paperLibrary.setSchoolId(schoolId);
             paperLibrary.setPaperScanTaskId(paperScanTaskId);
-            paperLibrary.setPath(map.get("path"));
-            paperLibrary.setSequence(Integer.valueOf(map.get("sequence")));
-            paperLibrary.setAbnormal(false);
             paperLibrary.setCreateId(userId);
             paperLibrary.setCreateTime(System.currentTimeMillis());
-
-            //开启条码识别,需要自动做一次绑定
-            Map<String, SimpleObject> sysSetting = commonCacheService.getSysSetting(schoolId);
-            String value = !sysSetting.containsKey(SysSettingConstant.BAR_CODE_OPEN) ? "false" : sysSetting.get(SysSettingConstant.BAR_CODE_OPEN).getValue();
-            if (Boolean.parseBoolean(value)) {
-                // 根据准考证号查询学生student_id
-                BasicStudent basicStudent = basicStudentService.getBySchoolIdAndStudentCode(studentCode);
-                if (basicStudent != null) {
-                    // 根据paper_scan_task_id+student_id查询paper_scan_task_detail_id作绑定
-                    PaperScanTaskDetail paperScanTaskDetail = paperScanTaskDetailService.getByPaperScanTaskIdAndStudentId(paperScanTaskId, basicStudent.getId());
-                    if (paperScanTaskDetail == null) {
-                        paperScanTaskDetail = new PaperScanTaskDetail();
-                        paperScanTaskDetail.insertInfo(userId);
-                        paperScanTaskDetail.setPaperScanTaskId(paperScanTaskId);
-                        paperScanTaskDetail.setStudentId(basicStudent.getId());
-                        paperScanTaskDetail.setBindCount(0);
-                        paperScanTaskDetailService.save(paperScanTaskDetail);
-                    }
-                    paperLibrary.setPaperScanTaskDetailId(paperScanTaskDetail.getId());
-                    paperLibrary.setWordsResult(studentCode);
-
-                    // 绑定数量加1
-                    UpdateWrapper<PaperScanTaskDetail> updateWrapper = new UpdateWrapper<>();
-                    updateWrapper.lambda().set(PaperScanTaskDetail::getBindCount, paperScanTaskDetail.getBindCount() + 1)
-                            .eq(PaperScanTaskDetail::getId, paperScanTaskDetail.getId());
-                    paperScanTaskDetailService.update(updateWrapper);
-                }
-                // 绑定失败,不进异常数据,直接在未处理里,手工绑定
+            // 校验是否存在,不存在创建考生并绑定上
+            ExamStudent examStudent = examStudentService.getByExamIdAndCourseCodeAndStudentCode(paperScanTask.getExamId(), paperScanTask.getCourseCode(), recognitionVo.getBindResult());
+            if (examStudent == null) {
+                BasicExam basicExam = basicExamService.getById(paperScanTask.getExamId());
+                examStudent = new ExamStudent(schoolId, basicExam.getSemesterId(), basicExam.getId(), paperScanTask.getCourseCode(), paperScanTask.getCourseName(), recognitionVo.getBindResult(), studentCode, true, true);
+                examStudentService.save(examStudent);
             }
+            paperLibrary.setStudentId(examStudent.getId());
+            // 保存图片,生成路径
+            PathSequenceVo pathSequenceVo = paperLibraryCommonService.saveLibraryFile(paperScanTask, examStudent, UploadFileEnum.IMAGE, frontFile, versoFile);
+            paperLibrary.setPath(pathSequenceVo.getPath());
+            paperLibrary.setSequence(pathSequenceVo.getSequence());
+            paperLibrary.setBindResult(recognitionVo.getBindResult());
+            paperLibrary.setRecognizeResult(recognitionVo.getRecognizeResult());
             boolean save = paperLibraryService.save(paperLibrary);
             if (save) {
-                // 学生数量
-                int studentCount = paperScanTaskDetailService.countStudent(paperScanTaskId);
-                // 统计扫描数量
+                // 统计扫描张数
                 int scanCount = paperLibraryService.countScanCount(paperScanTaskId);
-                int bindCount = paperLibraryService.countBindData(paperScanTaskId);
+                // 统计扫描学生数
+                int scanStudentCount = paperLibraryService.countScanStudentCount(paperScanTaskId);
                 // 总扫描数
-                Double progress = scanCount == 0 ? 0D :
-                        new BigDecimal(bindCount * 100).divide(new BigDecimal(scanCount), BigDecimal.ROUND_DOWN, 2).doubleValue();
                 UpdateWrapper<PaperScanTask> updateWrapper = new UpdateWrapper<>();
-                updateWrapper.lambda().set(PaperScanTask::getStudentCount, studentCount)
+                updateWrapper.lambda().set(PaperScanTask::getScanStudentCount, scanStudentCount)
                         .set(PaperScanTask::getScanCount, scanCount)
-                        .set(PaperScanTask::getBindCount, bindCount)
-                        .set(PaperScanTask::getProgress, progress)
                         .eq(PaperScanTask::getId, paperScanTaskId);
                 paperScanTaskService.update(updateWrapper);
             }
@@ -246,7 +139,39 @@ public class ClientServiceImpl implements ClientService {
     }
 
     @Override
-    public boolean enable(Long paperScanTaskId, Boolean enable) {
-        return paperScanTaskService.enable(paperScanTaskId, enable);
+    public boolean otherUpload(Long paperScanTaskId, MultipartFile frontFile, String frontMd5, MultipartFile versoFile, String versoMd5) {
+        Long userId = Long.valueOf(ServletUtil.getRequestHeaderUserId().toString());
+        if (Objects.isNull(frontFile) || frontFile.getSize() == 0) {
+            throw ExceptionResultEnum.ERROR.exception("frontFile(正面图片)为空");
+        }
+        if (Objects.isNull(versoFile) || versoFile.getSize() == 0) {
+            throw ExceptionResultEnum.ERROR.exception("versoFile(背面图片)为空");
+        }
+        try {
+            String frontFileMd5 = DigestUtils.md5Hex(frontFile.getBytes());
+            if (!Objects.equals(frontMd5, frontFileMd5)) {
+                throw ExceptionResultEnum.MD5_EQUALS_FALSE.exception();
+            }
+            String versoFileMd5 = DigestUtils.md5Hex(versoFile.getBytes());
+            if (!Objects.equals(versoMd5, versoFileMd5)) {
+                throw ExceptionResultEnum.MD5_EQUALS_FALSE.exception();
+            }
+
+            PaperScanTask paperScanTask = businessCacheService.getPaperScanTask(paperScanTaskId);
+            if (paperScanTask == null) {
+                throw ExceptionResultEnum.ERROR.exception("扫描任务不存在");
+            }
+            // 保存图片,生成路径
+            PathSequenceVo pathSequenceVo = paperLibraryCommonService.saveLibraryOtherFile(paperScanTask, UploadFileEnum.IMAGE, frontFile, versoFile);
+            PaperLibraryOther paperLibraryOther = new PaperLibraryOther();
+            paperLibraryOther.setId(SystemConstant.getDbUuid());
+            paperLibraryOther.setPaperScanTaskId(paperScanTaskId);
+            paperLibraryOther.setPath(pathSequenceVo.getPath());
+            paperLibraryOther.setCreateId(userId);
+            paperLibraryOther.setCreateTime(System.currentTimeMillis());
+            return paperLibraryOtherService.save(paperLibraryOther);
+        } catch (Exception e) {
+            throw ExceptionResultEnum.ERROR.exception("保存图片失败:" + e.getMessage());
+        }
     }
 }

+ 123 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/DocManageServiceImpl.java

@@ -0,0 +1,123 @@
+package com.qmth.paper.library.business.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.paper.library.business.bean.result.DocManageDetailResult;
+import com.qmth.paper.library.business.bean.result.DocManageOtherDetailResult;
+import com.qmth.paper.library.business.bean.result.DocManageResult;
+import com.qmth.paper.library.business.bean.vo.FilePathVo;
+import com.qmth.paper.library.business.entity.PaperLibraryOther;
+import com.qmth.paper.library.business.mapper.DocManageMapper;
+import com.qmth.paper.library.business.service.DocManageService;
+import com.qmth.paper.library.business.service.FileUploadService;
+import com.qmth.paper.library.business.service.PaperLibraryOtherService;
+import com.qmth.paper.library.business.service.PaperLibraryService;
+import com.qmth.paper.library.common.bean.params.DownLoadPaperParams;
+import com.qmth.paper.library.common.entity.SysUser;
+import com.qmth.paper.library.common.enums.ExceptionResultEnum;
+import com.qmth.paper.library.common.service.LibraryCommonService;
+import com.qmth.paper.library.common.util.ServletUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>
+ * 文档管理 服务实现类
+ * </p>
+ */
+@Service
+public class DocManageServiceImpl implements DocManageService {
+    @Resource
+    private DocManageMapper docManageMapper;
+    @Resource
+    private PaperLibraryService paperLibraryService;
+    @Resource
+    private LibraryCommonService libraryCommonService;
+    @Resource
+    private PaperLibraryOtherService paperLibraryOtherService;
+    @Resource
+    private FileUploadService fileUploadService;
+
+    @Override
+    public IPage<DocManageResult> pageData(Long examId, String courseCode, Integer pageNumber, Integer pageSize) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        Set<Long> orgIds = libraryCommonService.listSubOrgIds(sysUser.getOrgId());
+        return docManageMapper.pageData(new Page<>(pageNumber, pageSize), examId, courseCode, orgIds);
+    }
+
+    @Override
+    public IPage<DocManageDetailResult> pageDetail(Long paperScanTaskId, String collegeName, String majorName, String className, String courseName, String teacher, String teachClass, Boolean isBind, String param, Double minScore, Double maxScore, Integer minBindCount, Integer maxBindCount, Integer pageNumber, Integer pageSize) {
+        IPage<DocManageDetailResult> detailResultIPage = docManageMapper.pageDetail(new Page<>(pageNumber, pageSize), paperScanTaskId, collegeName, majorName, className, courseName, teacher, teachClass, isBind, param, minScore, maxScore, minBindCount, maxBindCount);
+        return detailResultIPage;
+    }
+
+    @Override
+    public List<DocManageDetailResult> listDetail(DownLoadPaperParams downLoadPaperParams) {
+        String ids = downLoadPaperParams.getIds();
+        List<DocManageDetailResult> docManageDetailResults;
+        if (StringUtils.isNotBlank(ids) && ids.split(",").length > 0) {
+            String[] idsArray = ids.split(",");
+            docManageDetailResults = docManageMapper.listDetail(downLoadPaperParams.getPaperScanTaskId(), Arrays.asList(idsArray));
+        } else {
+            Long paperScanTaskId = downLoadPaperParams.getPaperScanTaskId();
+            if (paperScanTaskId == null) {
+                throw ExceptionResultEnum.ERROR.exception("扫描任务ID必传");
+            }
+            String collegeName = downLoadPaperParams.getCollegeName();
+            String majorName = downLoadPaperParams.getMajorName();
+            String className = downLoadPaperParams.getClassName();
+            String courseName = downLoadPaperParams.getCourseName();
+            String teacher = downLoadPaperParams.getTeacher();
+            String teachClass = downLoadPaperParams.getTeachClass();
+            Boolean isBind = downLoadPaperParams.getIsBind() == null ? null : downLoadPaperParams.getIsBind() == 1;
+            String param = downLoadPaperParams.getParam();
+            Double minScore = downLoadPaperParams.getMinScore();
+            Double maxScore = downLoadPaperParams.getMaxScore();
+            Integer minBindCount = downLoadPaperParams.getMinBindCount();
+            Integer maxBindCount = downLoadPaperParams.getMaxBindCount();
+            docManageDetailResults = docManageMapper.pageDetail(paperScanTaskId, collegeName, majorName, className, courseName, teacher, teachClass, isBind, param, minScore, maxScore, minBindCount, maxBindCount);
+        }
+        return docManageDetailResults;
+    }
+
+    @Override
+    public IPage<DocManageOtherDetailResult> pageOtherDetail(Long paperScanTaskId, Integer pageNumber, Integer pageSize) {
+        QueryWrapper<PaperLibraryOther> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(PaperLibraryOther::getPaperScanTaskId, pageNumber)
+                .orderByAsc(PaperLibraryOther::getCreateTime);
+        Page<PaperLibraryOther> paperLibraryOtherPage = paperLibraryOtherService.page(new Page<>(pageNumber, pageSize), queryWrapper);
+        List<DocManageOtherDetailResult> list = new ArrayList<>();
+        for (PaperLibraryOther record : paperLibraryOtherPage.getRecords()) {
+            DocManageOtherDetailResult docManageOtherDetailResult = new DocManageOtherDetailResult();
+            List<FilePathVo> filePathVos = JSON.parseArray(record.getPath(), FilePathVo.class);
+            List<String> fileNames = new ArrayList<>();
+            List<String> fileUrls = new ArrayList<>();
+            for (FilePathVo filePathVo : filePathVos) {
+                // 截取文件名
+                String fileName = filePathVo.getPath();
+                fileNames.add(fileName.substring(fileName.replaceAll("\\\\", "/").lastIndexOf("/") + 1));
+                // 拼接可访问地址
+                fileUrls.add(fileUploadService.filePreview(filePathVo));
+            }
+            docManageOtherDetailResult.setFileName(JSON.toJSONString(fileNames));
+            docManageOtherDetailResult.setFileUrls(fileUrls);
+            list.add(docManageOtherDetailResult);
+        }
+
+        Page<DocManageOtherDetailResult> page = new Page(pageNumber, pageSize);
+        page.setRecords(list);
+        page.setTotal(paperLibraryOtherPage.getTotal());
+        page.setPages(paperLibraryOtherPage.getPages());
+        return page;
+    }
+
+
+}

+ 68 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/ExamCourseServiceImpl.java

@@ -0,0 +1,68 @@
+package com.qmth.paper.library.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.paper.library.business.bean.result.SelectResult;
+import com.qmth.paper.library.business.entity.ExamCourse;
+import com.qmth.paper.library.business.mapper.ExamCourseMapper;
+import com.qmth.paper.library.business.service.ExamCourseService;
+import com.qmth.paper.library.common.entity.ExamStudent;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 考生课程表 服务实现类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-03-11
+ */
+@Service
+public class ExamCourseServiceImpl extends ServiceImpl<ExamCourseMapper, ExamCourse> implements ExamCourseService {
+
+    @Transactional
+    @Override
+    public void saveStudentCourse(Long examId, List<ExamStudent> basicStudentList) {
+        this.removeByExamId(examId);
+        Map<String, String> stringMap = basicStudentList.stream().collect(Collectors.toMap(ExamStudent::getCourseCode, ExamStudent::getCourseName, (oldValue, newValue) -> oldValue));
+        List<ExamCourse> examCourses = new ArrayList<>();
+        for (Map.Entry<String, String> entry : stringMap.entrySet()) {
+            examCourses.add(new ExamCourse(examId, entry.getKey(), entry.getValue()));
+        }
+        this.saveBatch(examCourses);
+    }
+
+    @Override
+    public void removeByExamId(Long examId) {
+        QueryWrapper<ExamCourse> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ExamCourse::getExamId, examId);
+        this.remove(queryWrapper);
+    }
+
+    @Override
+    public List<SelectResult> listConditionByExamId(Long examId) {
+
+        List<SelectResult> selectResults = new ArrayList<>();
+        for (ExamCourse examCourse : this.listByExamId(examId)) {
+            SelectResult selectResult = new SelectResult();
+            selectResult.setCode(examCourse.getCourseCode());
+            selectResult.setName(examCourse.getCourseName());
+            selectResults.add(selectResult);
+        }
+        return selectResults;
+    }
+
+    @Override
+    public List<ExamCourse> listByExamId(Long examId) {
+        QueryWrapper<ExamCourse> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ExamCourse::getExamId, examId)
+                .orderByDesc(ExamCourse::getId);
+        return this.list(queryWrapper);
+    }
+}

+ 224 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/ExamStudentServiceImpl.java

@@ -0,0 +1,224 @@
+package com.qmth.paper.library.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.boot.tools.excel.ExcelReader;
+import com.qmth.boot.tools.excel.enums.ExcelType;
+import com.qmth.boot.tools.excel.model.DataMap;
+import com.qmth.paper.library.business.mapper.ExamStudentMapper;
+import com.qmth.paper.library.business.service.ExamCourseService;
+import com.qmth.paper.library.business.service.ExamStudentService;
+import com.qmth.paper.library.business.service.PaperLibraryService;
+import com.qmth.paper.library.business.service.PaperScanTaskService;
+import com.qmth.paper.library.common.bean.dto.syssetting.SimpleObject;
+import com.qmth.paper.library.common.contant.SysSettingConstant;
+import com.qmth.paper.library.common.contant.SystemConstant;
+import com.qmth.paper.library.common.entity.ExamStudent;
+import com.qmth.paper.library.common.entity.SysUser;
+import com.qmth.paper.library.common.enums.ExceptionResultEnum;
+import com.qmth.paper.library.common.enums.RecognitionTypeEnum;
+import com.qmth.paper.library.common.enums.StoreTypeEnum;
+import com.qmth.paper.library.common.service.CommonCacheService;
+import com.qmth.paper.library.common.util.ServletUtil;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 学校id 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2021-08-02
+ */
+@Service
+public class ExamStudentServiceImpl extends ServiceImpl<ExamStudentMapper, ExamStudent> implements ExamStudentService {
+    @Resource
+    private ExamCourseService examCourseService;
+    @Resource
+    private PaperLibraryService paperLibraryService;
+    @Resource
+    private PaperScanTaskService paperScanTaskService;
+    @Resource
+    private CommonCacheService commonCacheService;
+
+    @Override
+    public IPage<ExamStudent> findStudentPage(Long examId, String courseCode, String collegeName, String majorName, String clazzName, String queryParams, int pageNumber, int pageSize) {
+        queryParams = SystemConstant.translateSpecificSign(queryParams);
+        return this.baseMapper.findStudentPage(new Page<>(pageNumber, pageSize), examId, courseCode, collegeName, majorName, clazzName, queryParams);
+    }
+
+    @Override
+    public void saveBasicStudent(ExamStudent basicStudent) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        // 验证
+        ExamStudent byStudentCode = this.getByExamIdAndCourseCodeAndStudentCode(basicStudent.getExamId(), basicStudent.getCourseCode(), basicStudent.getStudentCode());
+        if (basicStudent.getId() == null) {
+            if (byStudentCode != null) {
+                throw ExceptionResultEnum.ERROR.exception(String.format("学号[%s]在课程%s(%s)下已存在", basicStudent.getStudentCode(), basicStudent.getCourseName(), basicStudent.getCourseCode()));
+            }
+            byStudentCode.setId(SystemConstant.getDbUuid());
+            byStudentCode.setSchoolId(sysUser.getSchoolId());
+            byStudentCode.setCreateId(sysUser.getId());
+            byStudentCode.setCreateTime(System.currentTimeMillis());
+        } else {
+            if (!basicStudent.getId().equals(byStudentCode.getId())) {
+                throw ExceptionResultEnum.ERROR.exception(String.format("学号[%s]在课程%s(%s)下已存在", basicStudent.getStudentCode(), basicStudent.getCourseName(), basicStudent.getCourseCode()));
+            }
+            byStudentCode.setId(basicStudent.getId());
+            byStudentCode.setEnable(true);
+            byStudentCode.setUpdateId(sysUser.getId());
+            byStudentCode.setUpdateTime(System.currentTimeMillis());
+        }
+        this.saveOrUpdate(byStudentCode);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Boolean removeBasicStudentBatch(List<Long> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            throw ExceptionResultEnum.ERROR.exception("请选择删除的数据");
+        }
+        List<ExamStudent> examStudentList = this.listByIds(ids);
+        if (CollectionUtils.isNotEmpty(examStudentList)) {
+            List<String> studentCodes = examStudentList.stream().filter(m -> m.getBindCount() > 0).map(ExamStudent::getStudentCode).collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(studentCodes)) {
+                throw ExceptionResultEnum.ERROR.exception("有考生已绑定图片,学号:" + String.join(",", studentCodes));
+            }
+        }
+        // 删除基础学生
+        return this.removeByIds(ids);
+    }
+
+    @Override
+    public ExamStudent getByExamIdAndCourseCodeAndStudentCode(Long examId, String courseCode, String studentCode) {
+        QueryWrapper<ExamStudent> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ExamStudent::getExamId, examId)
+                .eq(ExamStudent::getCourseCode, courseCode)
+                .eq(ExamStudent::getStudentCode, studentCode);
+        return this.getOne(queryWrapper);
+    }
+
+    @Transactional
+    @Override
+    public void dataImport(Long semesterId, Long examId, MultipartFile file) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        // 校验是否设置了存储方式
+        SimpleObject recognitionTypeSimpleObject = commonCacheService.getSysSetting(sysUser.getSchoolId()).get(SysSettingConstant.RECOGNITION_TYPE);
+        if (StringUtils.isBlank(recognitionTypeSimpleObject.getValue())) {
+            throw ExceptionResultEnum.ERROR.exception("识别方式未设置");
+        }
+        SimpleObject storeTypeSimpleObject = commonCacheService.getSysSetting(sysUser.getSchoolId()).get(SysSettingConstant.STORE_TYPE);
+        if (StringUtils.isBlank(storeTypeSimpleObject.getValue())) {
+            throw ExceptionResultEnum.ERROR.exception("文件存储方式未设置");
+        }
+        RecognitionTypeEnum recognitionType = RecognitionTypeEnum.valueOf(recognitionTypeSimpleObject.getValue());
+        StoreTypeEnum storeType = StoreTypeEnum.valueOf(storeTypeSimpleObject.getValue());
+
+        // 校验是否已扫描
+        if (paperLibraryService.countByExamId(examId) > 0) {
+            throw ExceptionResultEnum.ERROR.exception("已开始扫描,导入失败。请清除扫描数据后重试");
+        }
+        try {
+            System.out.println("大小:" + file.getSize());
+            ExcelReader excelReader = ExcelReader.create(ExcelType.XLSX, file.getInputStream(), 0);
+//            List<String[]> dataMapList = excelReader.getDataArrayList();
+            List<ExamStudent> basicStudentList = excelReader.getObjectList(ExamStudent.class);
+            // 校验excel内容
+            validStudentData(semesterId, examId, basicStudentList, storeType, sysUser);
+            // 删除
+            this.removeByExamId(examId);
+            // 保存学生
+            this.saveBatch(basicStudentList);
+            // 保存课程
+            examCourseService.saveStudentCourse(examId, basicStudentList);
+            // 新建任务
+            paperScanTaskService.addScanTask(examId, recognitionType, storeType, basicStudentList);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    public void updateBindCount(Long studentId) {
+        UpdateWrapper<ExamStudent> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(ExamStudent::getBindCount, paperLibraryService.countByStudentId(studentId))
+                .eq(ExamStudent::getId, studentId);
+        this.update(updateWrapper);
+    }
+
+    @Override
+    public void removeByExamId(Long examId) {
+        QueryWrapper<ExamStudent> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ExamStudent::getExamId, examId);
+        this.remove(queryWrapper);
+    }
+
+    /**
+     * 学生保存公共方法
+     */
+    private void validStudentData(Long semesterId, Long examId, List<ExamStudent> basicStudentList, StoreTypeEnum storeType, SysUser sysUser) {
+        Map<String, String> courseMap = new HashMap<>();
+        Map<String, List<String>> studentCodeMap = new HashMap<>();
+        for (ExamStudent basicStudent : basicStudentList) {
+            StringJoiner errorMsg = new StringJoiner(";");
+            if (StringUtils.isBlank(basicStudent.getStudentCode())) {
+                errorMsg.add("学号必填");
+            }
+            if (StringUtils.isBlank(basicStudent.getStudentName())) {
+                errorMsg.add("姓名必填");
+            }
+            if (StringUtils.isBlank(basicStudent.getCourseCode())) {
+                errorMsg.add("课程代码必填");
+            }
+            if (StringUtils.isBlank(basicStudent.getCourseName())) {
+                errorMsg.add("课程名称必填");
+            }
+            if (StoreTypeEnum.ROOM.equals(storeType) && StringUtils.isBlank(basicStudent.getExamRoom())) {
+                errorMsg.add("考场必填");
+            }
+            if (StoreTypeEnum.CLASS.equals(storeType) && StringUtils.isBlank(basicStudent.getClassName())) {
+                errorMsg.add("班级必填");
+            }
+            if (courseMap.containsKey(basicStudent.getCourseCode())) {
+                if (!basicStudent.getCourseName().equals(courseMap.get(basicStudent.getCourseCode()))) {
+                    errorMsg.add("课程代码已存在课程名称[" + courseMap.get(basicStudent.getCourseCode()) + "]");
+                }
+            }
+            // 考生在同课程下重复
+            if (studentCodeMap.containsKey(basicStudent.getCourseCode())) {
+                List<String> studentCodeList = studentCodeMap.get(basicStudent.getCourseCode());
+                if (CollectionUtils.isEmpty(studentCodeList)) {
+                    studentCodeMap.put(basicStudent.getCourseCode(), new ArrayList<>());
+                } else {
+                    if (studentCodeList.contains(basicStudent.getStudentCode())) {
+                        errorMsg.add("学号在同课程下已存在");
+                    } else {
+                        studentCodeList.add(basicStudent.getStudentCode());
+                        studentCodeMap.put(basicStudent.getCourseCode(), studentCodeList);
+                    }
+                }
+            }
+
+            basicStudent.setId(SystemConstant.getDbUuid());
+            basicStudent.setSchoolId(sysUser.getSchoolId());
+            basicStudent.setSemesterId(semesterId);
+            basicStudent.setExamId(examId);
+            basicStudent.setCreateId(sysUser.getId());
+            basicStudent.setCreateTime(System.currentTimeMillis());
+        }
+    }
+}

+ 148 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/FileUploadServiceImpl.java

@@ -0,0 +1,148 @@
+package com.qmth.paper.library.business.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.qmth.boot.api.exception.ApiException;
+import com.qmth.paper.library.business.bean.vo.FilePathVo;
+import com.qmth.paper.library.business.service.FileUploadService;
+import com.qmth.paper.library.common.contant.SysSettingConstant;
+import com.qmth.paper.library.common.contant.SystemConstant;
+import com.qmth.paper.library.common.enums.ExceptionResultEnum;
+import com.qmth.paper.library.common.enums.UploadFileEnum;
+import com.qmth.paper.library.common.service.CommonCacheService;
+import com.qmth.paper.library.common.util.FileStoreUtil;
+import com.qmth.paper.library.common.util.ResultUtil;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.io.*;
+import java.util.Objects;
+
+/**
+ * 文件上传服务类
+ */
+@Service
+public class FileUploadServiceImpl implements FileUploadService {
+    private static final Logger log = LoggerFactory.getLogger(FileUploadServiceImpl.class);
+
+    @Resource
+    FileStoreUtil fileStoreUtil;
+    @Resource
+    CommonCacheService commonCacheService;
+
+    /**
+     * 上传文件
+     *
+     * @param sourceFile     上传文件
+     * @param uploadFileEnum 文件类型
+     * @param filePathName   文件路径名称
+     */
+    @Override
+    public FilePathVo uploadFile(File sourceFile, UploadFileEnum uploadFileEnum, String filePathName) {
+        try {
+            InputStream inputStream = new FileInputStream(sourceFile);
+            return uploadFile(inputStream, uploadFileEnum, filePathName);
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * @param in
+     * @param filePathName
+     * @param uploadFileEnum
+     * @return
+     */
+    @Override
+    public FilePathVo uploadFile(InputStream in, UploadFileEnum uploadFileEnum, String filePathName) {
+        InputStream inputStreamMd5 = in;
+        try {
+            String md5 = DigestUtils.md5Hex(inputStreamMd5);
+            fileStoreUtil.fileUpload(filePathName, in, md5);
+            String type = fileStoreUtil.isOssStore() ? SystemConstant.OSS : SystemConstant.LOCAL;
+            return new FilePathVo(filePathName, uploadFileEnum, type, md5);
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 获取附件文件
+     *
+     * @param path         文件路径json
+     * @param filePathName 保存本地文件名
+     * @return string
+     */
+    @Override
+    public File downloadFile(String path, String filePathName) {
+        FilePathVo filePathVo = JSON.parseObject(path, FilePathVo.class);
+        File localFile = new File(filePathName);
+        if (filePathVo.getType().equals(SystemConstant.OSS)) {
+            try {
+                return fileStoreUtil.fileDownload(filePathVo.getPath(), localFile.getPath());
+            } catch (Exception e) {
+                throw ExceptionResultEnum.ERROR.exception("从OSS上下载文件失败");
+            }
+        } else {
+            File file = new File(filePathVo.getPath());
+            if (!file.exists()) {
+                throw ExceptionResultEnum.ERROR.exception("本地文件不存在");
+            }
+            try {
+                if (!localFile.exists()) {
+                    localFile.getParentFile().mkdirs(); //目标文件目录不存在的话需要创建目录
+                }
+                FileUtils.copyFile(file, localFile);
+                return localFile;
+            } catch (IOException e) {
+                throw ExceptionResultEnum.ERROR.exception("本地复制文件失败");
+            }
+        }
+    }
+
+    /**
+     * 预览文件
+     *
+     * @param path 文件路径
+     */
+    @Override
+    public String filePreview(String path) {
+        if (StringUtils.isBlank(path)) {
+            return null;
+        }
+        FilePathVo filePathVo = JSON.parseObject(path, FilePathVo.class);
+        return filePreview(filePathVo);
+    }
+
+    @Override
+    public String filePreview(FilePathVo filePathVo) {
+        String pathUrl;
+        String path = filePathVo.getPath();
+        // 本地文件
+        if (Objects.equals(filePathVo.getType(), SystemConstant.LOCAL)) {
+
+            String hostUrl = commonCacheService.getSysSettingGlobal().get(SysSettingConstant.SYS_FILE_HOST_URL);
+            path = SystemConstant.getLocalFilePath(hostUrl, path);
+            if (path.startsWith("/")) {
+                pathUrl = hostUrl + path;
+            } else {
+                pathUrl = hostUrl + File.separator + path;
+            }
+        } else {
+            pathUrl = fileStoreUtil.getFileUrl(path);
+
+        }
+        return pathUrl;
+    }
+
+}

+ 0 - 18
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperArchivesCourseServiceImpl.java

@@ -1,18 +0,0 @@
-package com.qmth.paper.library.business.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.paper.library.business.entity.PaperArchivesCourse;
-import com.qmth.paper.library.business.mapper.PaperArchivesCourseMapper;
-import com.qmth.paper.library.business.service.PaperArchivesCourseService;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 档案管理课程表 服务实现类
- * </p>
- */
-@Service
-public class PaperArchivesCourseServiceImpl extends ServiceImpl<PaperArchivesCourseMapper, PaperArchivesCourse> implements PaperArchivesCourseService {
-
-
-}

+ 0 - 297
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperArchivesServiceImpl.java

@@ -1,297 +0,0 @@
-package com.qmth.paper.library.business.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.google.common.collect.Lists;
-import com.qmth.paper.library.business.bean.dto.excel.PaperArchivesCourseImportDto;
-import com.qmth.paper.library.business.bean.dto.excel.PaperScanTaskStudentImportDto;
-import com.qmth.paper.library.business.bean.result.PaperArchivesDetailResult;
-import com.qmth.paper.library.business.bean.result.PaperArchivesResult;
-import com.qmth.paper.library.business.bean.result.SelectResult;
-import com.qmth.paper.library.business.entity.*;
-import com.qmth.paper.library.business.mapper.PaperArchivesMapper;
-import com.qmth.paper.library.business.service.*;
-import com.qmth.paper.library.common.bean.dto.excel.DescribeImportDto;
-import com.qmth.paper.library.common.bean.params.DownLoadPaperParams;
-import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.common.entity.BasicStudent;
-import com.qmth.paper.library.common.entity.SysUser;
-import com.qmth.paper.library.common.enums.ExceptionResultEnum;
-import com.qmth.paper.library.common.enums.RoleTypeEnum;
-import com.qmth.paper.library.common.service.LibraryCommonService;
-import com.qmth.paper.library.common.util.ExcelUtil;
-import com.qmth.paper.library.common.util.ServletUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.annotation.Resource;
-import java.io.IOException;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * <p>
- * 档案管理表 服务实现类
- * </p>
- */
-@Service
-public class PaperArchivesServiceImpl extends ServiceImpl<PaperArchivesMapper, PaperArchives> implements PaperArchivesService {
-
-    @Resource
-    PaperArchivesCourseService paperArchivesCourseService;
-
-    @Resource
-    PaperScanTaskService paperScanTaskService;
-
-    @Resource
-    PaperLibraryService paperLibraryService;
-
-    @Resource
-    LibraryCommonService libraryCommonService;
-
-    @Resource
-    BusinessCacheService businessCacheService;
-
-    @Override
-    public IPage<PaperArchivesResult> pageData(Long semesterId, Long managerOrgId, Long archivesTypeId, String archivesName, Integer pageNumber, Integer pageSize) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        Set<Long> orgIds = libraryCommonService.listSubOrgIds(sysUser.getOrgId());
-        return this.baseMapper.pageData(new Page<>(pageNumber, pageSize), schoolId, semesterId, managerOrgId, archivesTypeId, archivesName, orgIds);
-    }
-
-    @Override
-    public boolean saveData(PaperArchives paperArchives) {
-        Long userId = Long.valueOf(ServletUtil.getRequestHeaderUserId().toString());
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-
-        // 新增
-        if (paperArchives.getId() == null) {
-            PaperArchives archives = this.baseMapper.selectByArchivesName(schoolId, paperArchives.getArchivesName());
-            if (archives != null) {
-                throw ExceptionResultEnum.ERROR.exception("档案名称已存在");
-            }
-            paperArchives.setId(SystemConstant.getDbUuid());
-            paperArchives.setSchoolId(schoolId);
-            // 档案编号
-            paperArchives.setArchivesCode(paperLibraryService.getPaperArchivesCode(schoolId));
-            paperArchives.setCreateId(userId);
-            paperArchives.setCreateTime(System.currentTimeMillis());
-            return this.save(paperArchives);
-        } else {
-            PaperArchives archives = this.baseMapper.selectByArchivesName(schoolId, paperArchives.getArchivesName());
-            if (archives != null && !archives.getId().equals(paperArchives.getId())) {
-                throw ExceptionResultEnum.ERROR.exception("档案名称已存在");
-            }
-            PaperArchives oldPaperArchives = this.getById(paperArchives.getId());
-            // 档案编号(时间戳)
-            oldPaperArchives.setArchivesName(paperArchives.getArchivesName());
-            oldPaperArchives.setArchivesTypeId(paperArchives.getArchivesTypeId());
-            oldPaperArchives.setSemesterId(paperArchives.getSemesterId());
-            oldPaperArchives.setManagerId(paperArchives.getManagerId());
-            oldPaperArchives.setManagerOrgId(paperArchives.getManagerOrgId());
-            oldPaperArchives.setWarningTime(paperArchives.getWarningTime());
-            paperArchives.setUpdateId(userId);
-            paperArchives.setUpdateTime(System.currentTimeMillis());
-            return this.updateById(paperArchives);
-        }
-    }
-
-    @Transactional
-    @Override
-    public boolean delete(String ids) {
-        String[] idsArray = ids.split(",");
-        for (String id : idsArray) {
-            Long idLong = Long.valueOf(id);
-            PaperArchives paperArchives = this.getById(idLong);
-            if (paperArchives == null) {
-                throw ExceptionResultEnum.ERROR.exception("数据有误");
-            }
-
-            List<PaperScanTask> paperScanTaskList = paperScanTaskService.listByPaperArchivesId(idLong);
-            if (!paperScanTaskList.isEmpty()) {
-                throw ExceptionResultEnum.ERROR.exception("已有扫描任务,不能删除");
-            }
-            this.removeById(idLong);
-        }
-
-        return true;
-    }
-
-    @Override
-    public List<SelectResult> queryManagerOrg(Long semesterId) {
-        Long schoolId = SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()));
-        return this.baseMapper.queryManagerOrg(schoolId, semesterId);
-    }
-
-    @Override
-    public List<SelectResult> queryArchives(Long semesterId) {
-        Long schoolId = SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()));
-        QueryWrapper<PaperArchives> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(PaperArchives::getSchoolId, schoolId);
-        if (semesterId != null) {
-            queryWrapper.lambda().eq(PaperArchives::getSemesterId, semesterId);
-        }
-        List<PaperArchives> paperArchivesList = this.list(queryWrapper);
-        return paperArchivesList.stream().map(m -> {
-            SelectResult result = new SelectResult();
-            result.setId(String.valueOf(m.getId()));
-            result.setCode(m.getArchivesCode());
-            result.setName(m.getArchivesName());
-            return result;
-        }).collect(Collectors.toList());
-    }
-
-    @Override
-    public IPage<PaperArchivesDetailResult> pageDetail(Long paperArchivesId, Long paperScanTaskId, Long belongOrgId, String majorName, String clazzName, String courseName, String teacherName, String teachClazzName, Boolean isBind, String param, Integer minBindCount, Integer maxBindCount, Integer pageNumber, Integer pageSize) {
-        IPage<PaperArchivesDetailResult> detailResultIPage = this.baseMapper.pageDetail(new Page<>(pageNumber, pageSize), paperArchivesId, paperScanTaskId, belongOrgId, majorName, clazzName, courseName, teacherName, teachClazzName, isBind, param, minBindCount, maxBindCount);
-        for (PaperArchivesDetailResult record : detailResultIPage.getRecords()) {
-            QueryWrapper<PaperLibrary> queryWrapper = new QueryWrapper<>();
-            queryWrapper.lambda().eq(PaperLibrary::getPaperScanTaskDetailId, record.getPaperScanTaskDetailId());
-            int count = paperLibraryService.count(queryWrapper);
-            record.setBindCount(count);
-        }
-        return detailResultIPage;
-    }
-
-    @Override
-    public List<PaperArchivesDetailResult> listDetail(DownLoadPaperParams downLoadPaperParams) {
-        String ids = downLoadPaperParams.getIds();
-        List<PaperArchivesDetailResult> paperArchivesDetailResults;
-        if (StringUtils.isNotBlank(ids) && ids.split(",").length > 0) {
-            String[] idsArray = ids.split(",");
-            paperArchivesDetailResults = this.baseMapper.listDetail(Arrays.asList(idsArray));
-        } else {
-            Long paperArchivesId = downLoadPaperParams.getPaperArchivesId();
-            if (paperArchivesId == null) {
-                throw ExceptionResultEnum.ERROR.exception("档案ID必传");
-            }
-            Long belongOrgId = downLoadPaperParams.getBelongOrgId();
-            String majorName = downLoadPaperParams.getMajorName();
-            String clazzName = downLoadPaperParams.getClazzName();
-            String courseName = downLoadPaperParams.getCourseName();
-            String teacherName = downLoadPaperParams.getTeacherName();
-            String teachClazzName = downLoadPaperParams.getTeachClazzName();
-            Boolean isBind = downLoadPaperParams.getIsBind() == null ? null : downLoadPaperParams.getIsBind() == 1;
-            String param = downLoadPaperParams.getParam();
-            paperArchivesDetailResults = this.baseMapper.pageDetail(paperArchivesId, belongOrgId, majorName, clazzName, courseName, teacherName, teachClazzName, isBind, param);
-        }
-        for (PaperArchivesDetailResult record : paperArchivesDetailResults) {
-            QueryWrapper<PaperLibrary> queryWrapper = new QueryWrapper<>();
-            queryWrapper.lambda().eq(PaperLibrary::getPaperScanTaskDetailId, record.getPaperScanTaskDetailId());
-            int count = paperLibraryService.count(queryWrapper);
-            record.setBindCount(count);
-        }
-        return paperArchivesDetailResults;
-    }
-
-    @Override
-    public List<SelectResult> queryManagerUser() {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        return this.baseMapper.queryManagerUser(schoolId, RoleTypeEnum.ARCHIVIST.name());
-    }
-
-    @Transactional
-    @Override
-    public void importData(Long paperArchivesId, MultipartFile file) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        try {
-            List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(file.getInputStream(), Lists.newArrayList(PaperArchivesCourseImportDto.class, DescribeImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> finalExcelList);
-            List<PaperArchivesCourseImportDto> datasource = new ArrayList<>();
-            for (int i = 0; i < finalList.size(); i++) {
-                LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
-                List<Object> paperArchivesCourseImportDtoList = excelMap.get(i);
-                if (CollectionUtils.isEmpty(paperArchivesCourseImportDtoList) || paperArchivesCourseImportDtoList.get(0) instanceof DescribeImportDto) {
-                    continue;
-                }
-                // 类型转换
-                if (paperArchivesCourseImportDtoList.get(0) instanceof PaperArchivesCourseImportDto) {
-                    datasource = paperArchivesCourseImportDtoList.stream().map(e -> {
-                        PaperArchivesCourseImportDto paperArchivesCourseImportDto = new PaperArchivesCourseImportDto();
-                        BeanUtils.copyProperties(e, paperArchivesCourseImportDto);
-                        return paperArchivesCourseImportDto;
-                    }).collect(Collectors.toList());
-                }
-            }
-            if (!CollectionUtils.isEmpty(datasource)) {
-                Map<String, PaperArchivesCourseImportDto> courseImportDtoMap = new HashMap<>();
-                for (PaperArchivesCourseImportDto paperArchivesCourseImportDto : datasource) {
-                    String courseCode = paperArchivesCourseImportDto.getCourseCode();
-                    String courseName = paperArchivesCourseImportDto.getCourseName();
-                    String teacherName = paperArchivesCourseImportDto.getTeacherName();
-                    String teachClazzName = paperArchivesCourseImportDto.getTeachClazzName();
-
-                    if (courseImportDtoMap.containsKey(courseCode)) {
-                        // 如果试卷任务map中包含考生 - 检验其他信息是否一致(姓名,班级)
-                        PaperArchivesCourseImportDto v = courseImportDtoMap.get(courseCode);
-                        String vCourseName = v.getCourseName();
-
-                        if (!courseName.equals(vCourseName)) {
-                            throw ExceptionResultEnum.ERROR.exception("课程代码[" + courseCode + "]存在不同的课程名称[" + vCourseName + "," + courseName + "]");
-                        }
-
-                        String vTeacherName = v.getTeacherName();
-                        if (!teacherName.equals(vTeacherName)) {
-                            throw ExceptionResultEnum.ERROR.exception("课程代码[" + courseCode + "]存在不同的任课老师[" + vTeacherName + "," + teacherName + "]");
-                        }
-
-                        String vTeachClazzName = v.getTeachClazzName();
-                        if (!teachClazzName.equals(vTeachClazzName)) {
-                            throw ExceptionResultEnum.ERROR.exception("课程代码[" + courseCode + "]存在不同的教学班[" + vTeachClazzName + "," + teachClazzName + "]");
-                        }
-                        // 校验通过,删除掉重复数据
-                        datasource.remove(paperArchivesCourseImportDto);
-                    } else {
-                        // 没包含直接put
-                        courseImportDtoMap.put(courseCode, paperArchivesCourseImportDto);
-                    }
-                }
-
-                // 学生基础数据集合
-                List<PaperArchivesCourse> paperArchivesCourses = paperArchivesCourseService.list(new QueryWrapper<PaperArchivesCourse>().lambda().eq(PaperArchivesCourse::getPaperArchivesId, paperArchivesId));
-                List<PaperArchivesCourse> paperArchivesCourseList = new ArrayList<>();
-                for (PaperArchivesCourseImportDto e : datasource) {
-                    String courseCode = e.getCourseCode();
-                    String courseName = e.getCourseName();
-                    String teacherName = e.getTeacherName();
-                    String teachClazzName = e.getTeachClazzName();
-                    List<PaperArchivesCourse> archivesCourses = paperArchivesCourses.stream().filter(s -> courseCode.equals(s.getCourseCode())).collect(Collectors.toList());
-                    PaperArchivesCourse paperArchivesCourse;
-                    if (archivesCourses.isEmpty()) {
-                        paperArchivesCourse = new PaperArchivesCourse(schoolId, paperArchivesId, courseCode, courseName, teacherName, teachClazzName);
-                        paperArchivesCourse.insertInfo(sysUser.getId());
-                    } else if (archivesCourses.size() == 1) {
-                        paperArchivesCourse = archivesCourses.get(0);
-
-                        if (!courseName.equals(paperArchivesCourse.getCourseName())) {
-                            throw ExceptionResultEnum.ERROR.exception("课程代码[" + courseCode + "]已存在的课程名称为[" + paperArchivesCourse.getCourseName() + "]");
-                        }
-                        paperArchivesCourse.setTeacherName(teacherName);
-                        paperArchivesCourse.setTeachClazzName(teachClazzName);
-                        paperArchivesCourse.updateInfo(sysUser.getId());
-                    } else {
-                        throw ExceptionResultEnum.ERROR.exception("课程代码[" + courseCode + "]查出多条数据");
-                    }
-
-                    paperArchivesCourseList.add(paperArchivesCourse);
-                }
-                if (!CollectionUtils.isEmpty(paperArchivesCourseList)) {
-                    paperArchivesCourseService.saveOrUpdateBatch(paperArchivesCourseList);
-                }
-            }
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        } catch (NoSuchFieldException e) {
-            throw ExceptionResultEnum.ERROR.exception("请选择导入文件");
-        }
-    }
-
-}

+ 0 - 101
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperArchivesTypeServiceImpl.java

@@ -1,101 +0,0 @@
-package com.qmth.paper.library.business.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.paper.library.business.bean.result.SelectResult;
-import com.qmth.paper.library.business.entity.PaperArchives;
-import com.qmth.paper.library.business.entity.PaperArchivesType;
-import com.qmth.paper.library.business.mapper.PaperArchivesTypeMapper;
-import com.qmth.paper.library.business.service.PaperArchivesService;
-import com.qmth.paper.library.business.service.PaperArchivesTypeService;
-import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.common.enums.ExceptionResultEnum;
-import com.qmth.paper.library.common.util.ServletUtil;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-/**
- * <p>
- * 档案类型表 服务实现类
- * </p>
- */
-@Service
-public class PaperArchivesTypeServiceImpl extends ServiceImpl<PaperArchivesTypeMapper, PaperArchivesType> implements PaperArchivesTypeService {
-
-    @Resource
-    PaperArchivesService paperArchivesService;
-
-    @Override
-    public IPage<PaperArchivesType> pageData(Integer pageNumber, Integer pageSize) {
-        QueryWrapper<PaperArchivesType> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().orderByAsc(PaperArchivesType::getCreateTime);
-        return this.baseMapper.selectPage(new Page<>(pageNumber, pageSize), queryWrapper);
-    }
-
-    @Override
-    public boolean saveData(PaperArchivesType paperArchivesType) {
-        Long userId = Long.valueOf(ServletUtil.getRequestHeaderUserId().toString());
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-
-        PaperArchivesType archivesType = this.baseMapper.selectByArchivesType(schoolId, paperArchivesType.getName());
-
-        // 新增
-        if (paperArchivesType.getId() == null) {
-            if (archivesType != null) {
-                throw ExceptionResultEnum.ERROR.exception("类型名称已存在");
-            }
-            paperArchivesType.setId(SystemConstant.getDbUuid());
-            paperArchivesType.setSchoolId(schoolId);
-            paperArchivesType.setCreateId(userId);
-            paperArchivesType.setCreateTime(System.currentTimeMillis());
-            return this.save(paperArchivesType);
-        }
-        // 修改
-        else {
-            if (archivesType != null && !paperArchivesType.getId().equals(archivesType.getId())) {
-                throw ExceptionResultEnum.ERROR.exception("类型名称已存在");
-            }
-            PaperArchivesType oldPaperArchivesType = this.getById(paperArchivesType.getId());
-
-            oldPaperArchivesType.setName(paperArchivesType.getName());
-            oldPaperArchivesType.setUpdateId(userId);
-            oldPaperArchivesType.setUpdateTime(System.currentTimeMillis());
-            return this.updateById(oldPaperArchivesType);
-        }
-    }
-
-    @Transactional
-    @Override
-    public boolean delete(String ids) {
-        String[] idsArray = ids.split(",");
-        for (String id : idsArray) {
-            Long idLong = Long.valueOf(id);
-            PaperArchivesType paperArchivesType = this.getById(idLong);
-            if (paperArchivesType == null) {
-                throw ExceptionResultEnum.ERROR.exception("数据有误");
-            }
-            // 已使用不能删除
-            QueryWrapper<PaperArchives> queryWrapper = new QueryWrapper<>();
-            queryWrapper.lambda().eq(PaperArchives::getSchoolId, paperArchivesType.getSchoolId())
-                    .eq(PaperArchives::getArchivesTypeId, idLong);
-            int count = paperArchivesService.count(queryWrapper);
-            if (count != 0) {
-                throw ExceptionResultEnum.ERROR.exception("档案类型已使用,不能删除");
-            }
-
-            this.removeById(idLong);
-        }
-        return true;
-    }
-
-    @Override
-    public List<SelectResult> queryArchivesType() {
-        Long schoolId = SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()));
-        return this.baseMapper.queryArchivesType(schoolId);
-    }
-}

+ 57 - 77
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperLibraryCommonServiceImpl.java

@@ -1,25 +1,26 @@
 package com.qmth.paper.library.business.service.impl;
 
-import cn.hutool.core.util.IdUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.itextpdf.text.pdf.PdfReader;
 import com.qmth.boot.api.exception.ApiException;
+import com.qmth.paper.library.business.bean.vo.FilePathVo;
+import com.qmth.paper.library.business.bean.vo.PathSequenceVo;
+import com.qmth.paper.library.business.entity.PaperLibrary;
 import com.qmth.paper.library.business.entity.PaperScanTask;
 import com.qmth.paper.library.business.service.BusinessCacheService;
+import com.qmth.paper.library.business.service.FileUploadService;
 import com.qmth.paper.library.business.service.PaperLibraryCommonService;
 import com.qmth.paper.library.common.bean.dto.OrgDto;
 import com.qmth.paper.library.common.config.DictionaryConfig;
 import com.qmth.paper.library.common.contant.SpringContextHolder;
 import com.qmth.paper.library.common.contant.SysSettingConstant;
 import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.common.entity.BasicAttachment;
-import com.qmth.paper.library.common.entity.SysOrg;
-import com.qmth.paper.library.common.entity.SysUser;
-import com.qmth.paper.library.common.entity.TBTask;
+import com.qmth.paper.library.common.entity.*;
 import com.qmth.paper.library.common.enums.ExceptionResultEnum;
+import com.qmth.paper.library.common.enums.StoreTypeEnum;
 import com.qmth.paper.library.common.enums.TaskTypeEnum;
 import com.qmth.paper.library.common.enums.UploadFileEnum;
 import com.qmth.paper.library.common.service.*;
@@ -53,31 +54,30 @@ import java.util.*;
 public class PaperLibraryCommonServiceImpl implements PaperLibraryCommonService {
     private final static Logger log = LoggerFactory.getLogger(PaperLibraryCommonServiceImpl.class);
     @Resource
-    CommonCacheService commonCacheService;
-
+    private CommonCacheService commonCacheService;
     @Resource
-    BusinessCacheService businessCacheService;
+    private BusinessCacheService businessCacheService;
     @Resource
     private DictionaryConfig dictionaryConfig;
-
     @Resource
-    BasicAttachmentService basicAttachmentService;
-
+    private BasicAttachmentService basicAttachmentService;
+    @Resource
+    private SysOrgService sysOrgService;
     @Resource
-    SysOrgService sysOrgService;
-
-    @Autowired
     private SysUserService sysUserService;
-
     @Resource
-    TBTaskService tbTaskService;
-
-
+    private FileUploadService fileUploadService;
+    @Resource
+    private TBTaskService tbTaskService;
     @Resource
     private FileStoreUtil fileStoreUtil;
+    @Resource
+    private BasicSchoolService basicSchoolService;
 
-    @Autowired
-    BasicSchoolService basicSchoolService;
+    @Override
+    public String getScanTaskCode(Long schoolId) {
+        return SystemConstant.SCAN_TASK_CODE_PREFIX + String.format("%07d", businessCacheService.getScanTaskCodeSequence(schoolId));
+    }
 
 
     /**
@@ -264,31 +264,29 @@ public class PaperLibraryCommonServiceImpl implements PaperLibraryCommonService
     }
 
     @Override
-    public Map<String, String> saveLibraryFile(Long paperScanTaskId, UploadFileEnum uploadFileEnum, MultipartFile... files) {
-        PaperScanTask paperScanTask = businessCacheService.getPaperScanTask(paperScanTaskId);
-        if (paperScanTask == null) {
-            throw ExceptionResultEnum.ERROR.exception("任务不存在");
+    public PathSequenceVo saveLibraryFile(PaperScanTask paperScanTask, ExamStudent examStudent, UploadFileEnum uploadFileEnum, MultipartFile... files) {
+        BasicSchool basicSchool = basicSchoolService.getById(paperScanTask.getSchoolId());
+        String courseNameCode = String.format("%s(%s)", paperScanTask.getCourseName(), paperScanTask.getCourseCode());
+        String rootPath = fileStoreUtil.buildPath(UploadFileEnum.IMAGE, false, basicSchool.getCode(), courseNameCode);
+        if (StoreTypeEnum.ROOM.equals(paperScanTask.getStoreType())) {
+            rootPath = fileStoreUtil.buildPath(UploadFileEnum.IMAGE, false, basicSchool.getCode(), courseNameCode, examStudent.getExamRoom());
+        } else if (StoreTypeEnum.CLASS.equals(paperScanTask.getStoreType())) {
+            rootPath = fileStoreUtil.buildPath(UploadFileEnum.IMAGE, false, basicSchool.getCode(), courseNameCode, examStudent.getClassName());
         }
-        SysUser sysUser = businessCacheService.getSysUser(paperScanTask.getScanUserId());
-        String rootPath = fileStoreUtil.buildPath(paperScanTask.getSchoolId(), paperScanTask.getPaperArchivesId(), paperScanTaskId, UploadFileEnum.IMAGE, false);
         // 根目录
-        List<JSONObject> objects = new ArrayList<>();
-        int sequence = businessCacheService.getSequence(paperScanTaskId);
+        List<FilePathVo> objects = new ArrayList<>();
+        int sequence = businessCacheService.getSequence(paperScanTask.getId(), examStudent.getStudentCode());
         String sequenceStr = String.valueOf(sequence);
         try {
             int idx = 1;
-            String prefix = sysUser.getLoginName() + "-" + System.currentTimeMillis() + "-" + sequenceStr;
+            String prefix = examStudent.getStudentName() + "-" + sequenceStr;
             for (MultipartFile file : files) {
-                JSONObject jsonObject = new JSONObject();
                 String fileName = file.getOriginalFilename();
                 String suffix = fileName.substring(fileName.lastIndexOf("."));
                 // 目标文件名
                 String dirName = rootPath + File.separator + prefix + "-" + idx + suffix;
-                fileStoreUtil.fileUpload(dirName, file.getInputStream(), DigestUtils.md5Hex(file.getInputStream()));
-                jsonObject.put(SystemConstant.TYPE, fileStoreUtil.isOssStore() ? SystemConstant.OSS : SystemConstant.LOCAL);
-                jsonObject.put(SystemConstant.PATH, dirName);
-                jsonObject.put(SystemConstant.UPLOAD_TYPE, uploadFileEnum);
-                objects.add(jsonObject);
+                FilePathVo filePathVo = fileUploadService.uploadFile(file.getInputStream(), uploadFileEnum, dirName);
+                objects.add(filePathVo);
                 idx++;
             }
         } catch (Exception e) {
@@ -299,36 +297,37 @@ public class PaperLibraryCommonServiceImpl implements PaperLibraryCommonService
                 ResultUtil.error(e.getMessage());
             }
         }
-        Map<String, String> map = new HashMap<>();
-        map.put("path", JSON.toJSONString(objects));
-        map.put("sequence", sequenceStr);
-        return map;
+        return new PathSequenceVo(JSON.toJSONString(objects), sequence);
     }
 
     @Override
-    public String preViewPath(String path, String uploadType, String type, Boolean isExpire) {
-        if (StringUtils.isBlank(path)) {
-            return null;
-        }
-        String pathUrl;
-        // 本地文件
-        if (Objects.equals(type, SystemConstant.LOCAL)) {
-            String hostUrl = commonCacheService.getSysSettingGlobal().get(SysSettingConstant.SYS_FILE_HOST_URL);
-            path = SystemConstant.getLocalFilePath(hostUrl, path);
-            if (path.startsWith("/")) {
-                pathUrl = hostUrl + path;
-            } else {
-                pathUrl = hostUrl + File.separator + path;
+    public PathSequenceVo saveLibraryOtherFile(PaperScanTask paperScanTask, UploadFileEnum uploadFileEnum, MultipartFile... files) {
+        BasicSchool basicSchool = basicSchoolService.getById(paperScanTask.getSchoolId());
+        String courseNameCode = String.format("%s(%s)", paperScanTask.getCourseName(), paperScanTask.getCourseCode());
+        String rootPath = fileStoreUtil.buildPath(UploadFileEnum.IMAGE, false, basicSchool.getCode(), courseNameCode);
+        // 根目录
+        List<FilePathVo> objects = new ArrayList<>();
+        try {
+            int idx = 1;
+            String prefix = SystemConstant.getNanoId();
+            for (MultipartFile file : files) {
+                String fileName = file.getOriginalFilename();
+                String suffix = fileName.substring(fileName.lastIndexOf("."));
+                // 目标文件名
+                String dirName = rootPath + File.separator + prefix + "-" + idx + suffix;
+                FilePathVo filePathVo = fileUploadService.uploadFile(file.getInputStream(), uploadFileEnum, dirName);
+                objects.add(filePathVo);
+                idx++;
             }
-        } else {
-            if (isExpire) {
-                pathUrl = fileStoreUtil.getFileUrl(path);
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
             } else {
-                pathUrl = fileStoreUtil.getFileUrl(path);
+                ResultUtil.error(e.getMessage());
             }
-
         }
-        return pathUrl;
+        return new PathSequenceVo(JSON.toJSONString(objects), null);
     }
 
     @Override
@@ -357,25 +356,6 @@ public class PaperLibraryCommonServiceImpl implements PaperLibraryCommonService
         }
     }
 
-    @Override
-    public Set<Long> listSubOrgIds(Long id) {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        Long orgId;
-        if (id == null) {
-            orgId = sysUser.getOrgId();
-        } else {
-            orgId = id;
-        }
-        if (orgId == null) {
-            return null;
-        }
-        List<OrgDto> orgDtoList = sysOrgService.listOrgTree();
-        Set<Long> stringSet = new HashSet<>();
-        stringSet.add(orgId);
-        getOrgIds(stringSet, orgDtoList, orgId);
-        return stringSet;
-    }
-
     private void getOrgIds(Set<Long> stringSet, List<OrgDto> orgDtoList, Long parentId) {
         for (OrgDto orgDto : orgDtoList) {
             Long tempParentId = orgDto.getParentId();

+ 20 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperLibraryOtherServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qmth.paper.library.business.service.impl;
+
+import com.qmth.paper.library.business.entity.PaperLibraryOther;
+import com.qmth.paper.library.business.mapper.PaperLibraryOtherMapper;
+import com.qmth.paper.library.business.service.PaperLibraryOtherService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 其它文件库 服务实现类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-03-12
+ */
+@Service
+public class PaperLibraryOtherServiceImpl extends ServiceImpl<PaperLibraryOtherMapper, PaperLibraryOther> implements PaperLibraryOtherService {
+
+}

+ 160 - 357
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperLibraryServiceImpl.java

@@ -1,46 +1,44 @@
 package com.qmth.paper.library.business.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.paper.library.business.bean.result.PaperLibraryImageResult;
 import com.qmth.paper.library.business.bean.result.PaperLibraryResult;
-import com.qmth.paper.library.business.bean.result.PaperScanTaskResult;
 import com.qmth.paper.library.business.bean.result.TaskStudentResult;
+import com.qmth.paper.library.business.bean.vo.FilePathVo;
+import com.qmth.paper.library.business.bean.vo.RecognitionResultVo;
 import com.qmth.paper.library.business.entity.PaperLibrary;
 import com.qmth.paper.library.business.entity.PaperScanTask;
-import com.qmth.paper.library.business.entity.PaperScanTaskDetail;
 import com.qmth.paper.library.business.mapper.PaperLibraryMapper;
 import com.qmth.paper.library.business.service.*;
+import com.qmth.paper.library.common.bean.dto.syssetting.SimpleObject;
+import com.qmth.paper.library.common.contant.SysSettingConstant;
 import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.common.entity.SysUser;
+import com.qmth.paper.library.common.entity.BasicSchool;
+import com.qmth.paper.library.common.entity.ExamStudent;
 import com.qmth.paper.library.common.enums.ExceptionResultEnum;
 import com.qmth.paper.library.common.enums.RecognitionTypeEnum;
 import com.qmth.paper.library.common.enums.RoleTypeEnum;
 import com.qmth.paper.library.common.enums.UploadFileEnum;
-import com.qmth.paper.library.common.lock.LockService;
-import com.qmth.paper.library.common.lock.LockType;
-import com.qmth.paper.library.common.service.BasicStudentService;
+import com.qmth.paper.library.common.service.BasicSchoolService;
+import com.qmth.paper.library.common.service.CommonCacheService;
 import com.qmth.paper.library.common.service.SysUserService;
 import com.qmth.paper.library.common.util.*;
-import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.json.JSONArray;
-import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
-import java.awt.print.Paper;
 import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -52,426 +50,231 @@ import java.util.Set;
 public class PaperLibraryServiceImpl extends ServiceImpl<PaperLibraryMapper, PaperLibrary> implements PaperLibraryService {
 
     @Resource
-    PaperScanTaskService paperScanTaskService;
-
-    @Resource
-    PaperScanTaskDetailService paperScanTaskDetailService;
-
+    private PaperScanTaskService paperScanTaskService;
     @Resource
-    PaperLibraryCommonService paperLibraryCommonService;
-
+    private BasicSchoolService basicSchoolService;
     @Resource
-    BusinessCacheService businessCacheService;
-
+    private ExamStudentService examStudentService;
     @Resource
-    SysUserService sysUserService;
-
+    private FileUploadService fileUploadService;
     @Resource
-    OcrUtil ocrUtil;
-
+    private OcrUtil ocrUtil;
     @Resource
-    LockService lockService;
-
+    private FileStoreUtil fileStoreUtil;
     @Resource
-    FileStoreUtil fileStoreUtil;
+    private CommonCacheService commonCacheService;
 
     @Override
-    public IPage<PaperScanTaskResult> pageUnbindData(Long semesterId, Long paperArchivesId, String courseCode, String scanTaskName, Integer pageNumber, Integer pageSize) {
-        return paperScanTaskService.pageUnbindData(new Page<>(pageNumber, pageSize), semesterId, paperArchivesId, courseCode, scanTaskName);
+    public int countScanStudentCount(Long paperScanTaskId) {
+        return this.baseMapper.countScanStudentCount(paperScanTaskId);
     }
 
     @Override
-    public IPage<PaperLibraryResult> pageBindData(Long semesterId, Long paperArchivesId, String courseCode, String scanTaskName, Integer pageNumber, Integer pageSize) {
-        return this.baseMapper.pageBindData(new Page<>(pageNumber, pageSize), semesterId, paperArchivesId, courseCode, scanTaskName);
-    }
-
-    @Override
-    public int countBindData(Long paperScanTaskId) {
-        return this.baseMapper.countBindData(paperScanTaskId);
-    }
-
-    @Override
-    public IPage<PaperLibraryResult> pageAbnormalData(Long semesterId, Long paperArchivesId, String courseCode, String scanTaskName, Integer pageNumber, Integer pageSize) {
-        Set<Long> listSubOrgIds = paperLibraryCommonService.listSubOrgIds(null);
-        Long userId = Long.valueOf(ServletUtil.getRequestHeaderUserId().toString());
-        boolean isMatch = sysUserService.checkRoleIsAppoint(RoleTypeEnum.DATA_CHECKER, userId);
-        return this.baseMapper.pageAbnormalData(new Page<>(pageNumber, pageSize), semesterId, paperArchivesId, courseCode, scanTaskName, listSubOrgIds, isMatch, userId);
-    }
-
-    @Transactional
-    @Override
-    public boolean bind(Long paperLibraryId, Long paperScanTaskId, Long studentId) {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-
-        PaperLibrary paperLibrary = this.getById(paperLibraryId);
-        if (paperLibrary == null) {
-            throw ExceptionResultEnum.ERROR.exception("绑定对象有误,图片已删除,请刷新数据再试");
-        }
-
-        PaperScanTaskDetail paperScanTaskDetail = paperScanTaskDetailService.getByPaperScanTaskIdAndStudentId(paperScanTaskId, studentId);
-        if (paperScanTaskDetail == null) {
-            paperScanTaskDetail = new PaperScanTaskDetail();
-            paperScanTaskDetail.insertInfo(sysUser.getId());
-            paperScanTaskDetail.setUpdateTime(System.currentTimeMillis());
-            paperScanTaskDetail.setSchoolId(schoolId);
-            paperScanTaskDetail.setPaperScanTaskId(paperScanTaskId);
-            paperScanTaskDetail.setStudentId(studentId);
-            paperScanTaskDetail.setBindCount(1);
-            paperScanTaskDetailService.save(paperScanTaskDetail);
-        }
-
-        Boolean abnormal = paperLibrary.getAbnormal();
-        UpdateWrapper<PaperLibrary> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.lambda().set(PaperLibrary::getPaperScanTaskDetailId, paperScanTaskDetail.getId())
-                .set(PaperLibrary::getAbnormal, false)
-                .set(PaperLibrary::getUpdateTime, System.currentTimeMillis())
-                .eq(PaperLibrary::getId, paperLibraryId);
-        this.update(updateWrapper);
-
-        // 更新已绑定状态
-        if (paperLibrary.getPaperScanTaskDetailId() != null) {
-            PaperScanTaskDetail oldPaperScanTaskDetail = paperScanTaskDetailService.getById(paperLibrary.getPaperScanTaskDetailId());
-            // 查询是否有绑定试卷
-            int count = this.baseMapper.countByPaperScanTaskDetailId(paperLibrary.getPaperScanTaskDetailId());
-            oldPaperScanTaskDetail.setBindCount(count);
-            paperScanTaskDetailService.updateById(oldPaperScanTaskDetail);
+    public PaperLibraryResult listStudentPicture(Long paperScanTaskId, Long studentId) {
+        PaperLibraryResult paperLibraryResult = new PaperLibraryResult();
+        ExamStudent examStudent = examStudentService.getById(studentId);
+        if (examStudent == null) {
+            paperLibraryResult.setStudentName(examStudent.getStudentName());
+            paperLibraryResult.setStudentCode(examStudent.getStudentCode());
+            paperLibraryResult.setCourseCode(examStudent.getCourseCode());
+            paperLibraryResult.setCourseName(examStudent.getCourseName());
+            paperLibraryResult.setCollegeName(examStudent.getCollegeName());
+            paperLibraryResult.setMajorName(examStudent.getMajorName());
+            paperLibraryResult.setClassName(examStudent.getClassName());
+            paperLibraryResult.setTeacher(examStudent.getTeacher());
+            paperLibraryResult.setTeachClass(examStudent.getTeachClass());
+            paperLibraryResult.setBindCount(examStudent.getBindCount());
+            paperLibraryResult.setScore(examStudent.getScore());
         }
-        int count = this.baseMapper.countByPaperScanTaskDetailId(paperScanTaskDetail.getId());
-        paperScanTaskDetail.setUpdateTime(System.currentTimeMillis());
-        paperScanTaskDetail.setBindCount(count);
-        paperScanTaskDetailService.updateById(paperScanTaskDetail);
-
-        // 任务下所有任务绑定完,更新状态
-        PaperScanTask paperScanTask = paperScanTaskService.getById(paperScanTaskId);
-        int studentCount = paperScanTaskDetailService.countStudent(paperScanTaskId);
-        int bindCount = this.baseMapper.countBindData(paperLibrary.getPaperScanTaskId());
-        // 总扫描数
-        int scanCount = paperScanTask.getScanCount();
-        Double progress = scanCount == 0 ? 0D :
-                new BigDecimal(bindCount * 100).divide(new BigDecimal(scanCount), BigDecimal.ROUND_DOWN, 2).doubleValue();
-        UpdateWrapper<PaperScanTask> taskUpdateWrapper = new UpdateWrapper<>();
-        taskUpdateWrapper.lambda().set(PaperScanTask::getStudentCount, studentCount)
-                .set(PaperScanTask::getBindCount, bindCount)
-                .set(PaperScanTask::getProgress, progress)
-                .set(PaperScanTask::getAbnormalCount, abnormal ? paperScanTask.getAbnormalCount() - 1 : paperScanTask.getAbnormalCount())
-                .eq(PaperScanTask::getId, paperLibrary.getPaperScanTaskId());
-        paperScanTaskService.update(taskUpdateWrapper);
-
-        return true;
-    }
 
-    @Override
-    public List<PaperLibraryResult> listStudentPicture(Long paperScanTaskDetailId) {
-        Long schoolId = SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()));
         QueryWrapper<PaperLibrary> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(PaperLibrary::getSchoolId, schoolId)
-                .eq(PaperLibrary::getPaperScanTaskDetailId, paperScanTaskDetailId)
+        queryWrapper.lambda().eq(PaperLibrary::getPaperScanTaskId, paperScanTaskId)
+                .eq(PaperLibrary::getStudentId, studentId)
                 .orderByAsc(PaperLibrary::getSequence);
         List<PaperLibrary> paperLibraryList = this.list(queryWrapper);
-        List<PaperLibraryResult> paperLibraryResultList = new ArrayList<>();
+
+        List<PaperLibraryImageResult> fileUrlList = new ArrayList<>();
         for (PaperLibrary paperLibrary : paperLibraryList) {
-            PaperLibraryResult paperLibraryResult = new PaperLibraryResult();
-            BeanUtils.copyProperties(paperLibrary, paperLibraryResult);
-            String fileUrl = paperLibrary.getPath();
-            if (StringUtils.isBlank(fileUrl)) {
+            if (StringUtils.isBlank(paperLibrary.getPath())) {
                 throw ExceptionResultEnum.ERROR.exception("未找到图片路径");
             }
-            List<JSONObject> objectList = JSON.parseArray(fileUrl, JSONObject.class);
+            List<FilePathVo> objectList = JSON.parseArray(paperLibrary.getPath(), FilePathVo.class);
+            PaperLibraryImageResult paperLibraryImageResult = new PaperLibraryImageResult();
+            paperLibraryImageResult.setPaperLibraryId(paperLibrary.getId());
             List<String> fileUrls = new ArrayList<>();
-            for (JSONObject jsonObject : objectList) {
-                fileUrls.add(paperLibraryCommonService.preViewPath(jsonObject.getString(SystemConstant.PATH), jsonObject.getString(SystemConstant.UPLOAD_TYPE), jsonObject.getString(SystemConstant.TYPE), false));
-            }
-            PaperScanTaskResult paperScanTaskResult = paperScanTaskService.getByPaperScanTaskId(paperLibrary.getPaperScanTaskId());
-            if (paperScanTaskResult != null) {
-                paperLibraryResult.setSemesterName(paperScanTaskResult.getSemesterName());
-                paperLibraryResult.setPaperArchivesName(paperScanTaskResult.getArchivesName());
-                paperLibraryResult.setPaperScanTaskName(paperScanTaskResult.getScanTaskName());
-                paperLibraryResult.setCourseName(paperScanTaskResult.getCourseName());
-//                paperLibraryResult.setTeacherName(paperScanTaskResult.getTeacherName());
-//                paperLibraryResult.setTeachClazzName(paperScanTaskResult.getTeachClazzName());
+            for (FilePathVo filePathVo : objectList) {
+                fileUrls.add(fileUploadService.filePreview(filePathVo));
             }
-            paperLibraryResult.setFileUrls(fileUrls);
-            paperLibraryResultList.add(paperLibraryResult);
+            paperLibraryImageResult.setFileUrls(fileUrls);
+            fileUrlList.add(paperLibraryImageResult);
         }
-        return paperLibraryResultList;
-    }
-
-    @Override
-    public List<PaperLibraryResult> toAbnormalPaper(Long paperLibraryId) {
-        Long userId = Long.valueOf(ServletUtil.getRequestHeaderUserId().toString());
-        Long schoolId = SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()));
-
-        List<PaperLibraryResult> paperLibraryResultList = new ArrayList<>();
-        PaperLibrary paperLibrary = this.getById(paperLibraryId);
-        PaperLibraryResult paperLibraryResult = new PaperLibraryResult();
-        BeanUtils.copyProperties(paperLibrary, paperLibraryResult);
-        String fileUrl = paperLibrary.getPath();
-        if (StringUtils.isBlank(fileUrl)) {
-            throw ExceptionResultEnum.ERROR.exception("未找到图片路径");
-        }
-        List<JSONObject> objectList = JSON.parseArray(fileUrl, JSONObject.class);
-        List<String> fileUrls = new ArrayList<>();
-        for (JSONObject jsonObject : objectList) {
-            fileUrls.add(paperLibraryCommonService.preViewPath(jsonObject.getString(SystemConstant.PATH), jsonObject.getString(SystemConstant.UPLOAD_TYPE), jsonObject.getString(SystemConstant.TYPE), false));
-        }
-        PaperScanTaskResult paperScanTaskResult = paperScanTaskService.getByPaperScanTaskId(paperLibrary.getPaperScanTaskId());
-        if (paperScanTaskResult != null) {
-            paperLibraryResult.setSemesterName(paperScanTaskResult.getSemesterName());
-            paperLibraryResult.setPaperArchivesName(paperScanTaskResult.getArchivesName());
-            paperLibraryResult.setPaperScanTaskName(paperScanTaskResult.getScanTaskName());
-            paperLibraryResult.setCourseName(paperScanTaskResult.getCourseName());
-//            paperLibraryResult.setTeacherName(paperScanTaskResult.getTeacherName());
-//            paperLibraryResult.setTeachClazzName(paperScanTaskResult.getTeachClazzName());
-        }
-        paperLibraryResult.setFileUrls(fileUrls);
-        paperLibraryResultList.add(paperLibraryResult);
-        return paperLibraryResultList;
-    }
-
-    @Override
-    public List<PaperLibraryResult> toBindPaper(Long paperScanTaskId) {
-        Long userId = Long.valueOf(ServletUtil.getRequestHeaderUserId().toString());
-
-        // 查询下一个待绑定任务
-        List<PaperLibrary> waitPaperLibraryList = this.baseMapper.selectBatchData(paperScanTaskId, userId);
-        if (waitPaperLibraryList.isEmpty()) {
-            waitPaperLibraryList = createBindData(userId, paperScanTaskId);
-        }
-
-        List<PaperLibraryResult> paperLibraryResultList = new ArrayList<>();
-        if (!waitPaperLibraryList.isEmpty()) {
-            for (PaperLibrary paperLibrary : waitPaperLibraryList) {
-                PaperLibraryResult paperLibraryResult = new PaperLibraryResult();
-                BeanUtils.copyProperties(paperLibrary, paperLibraryResult);
-                String fileUrl = paperLibrary.getPath();
-                if (StringUtils.isBlank(fileUrl)) {
-                    throw ExceptionResultEnum.ERROR.exception("未找到图片路径");
-                }
-                List<JSONObject> objectList = JSON.parseArray(fileUrl, JSONObject.class);
-                List<String> fileUrls = new ArrayList<>();
-                for (JSONObject jsonObject : objectList) {
-                    fileUrls.add(paperLibraryCommonService.preViewPath(jsonObject.getString(SystemConstant.PATH), jsonObject.getString(SystemConstant.UPLOAD_TYPE), jsonObject.getString(SystemConstant.TYPE), false));
-                }
-                PaperScanTaskResult paperScanTaskResult = paperScanTaskService.getByPaperScanTaskId(paperLibrary.getPaperScanTaskId());
-                if (paperScanTaskResult != null) {
-                    paperLibraryResult.setSemesterName(paperScanTaskResult.getSemesterName());
-                    paperLibraryResult.setPaperArchivesName(paperScanTaskResult.getArchivesName());
-                    paperLibraryResult.setPaperScanTaskName(paperScanTaskResult.getScanTaskName());
-                    paperLibraryResult.setCourseName(paperScanTaskResult.getCourseName());
-                }
-                paperLibraryResult.setFileUrls(fileUrls);
-                paperLibraryResultList.add(paperLibraryResult);
-            }
-        }
-        return paperLibraryResultList;
-    }
-
-    @Override
-    public IPage<TaskStudentResult> listByStudentCode(String studentCode, Integer pageNumber, Integer pageSize) {
-        if (StringUtils.isBlank(studentCode)) {
-            throw ExceptionResultEnum.ERROR.exception("请输入考号");
-        }
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        return this.baseMapper.listByStudentCode(new Page<>(pageNumber, pageSize), schoolId, studentCode);
+        paperLibraryResult.setFileUrls(fileUrlList);
+        return paperLibraryResult;
     }
 
     @Override
     public int countScanCount(Long paperScanTaskId) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         QueryWrapper<PaperLibrary> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(PaperLibrary::getSchoolId, schoolId)
-                .eq(PaperLibrary::getPaperScanTaskId, paperScanTaskId);
+        queryWrapper.lambda().eq(PaperLibrary::getPaperScanTaskId, paperScanTaskId);
         return this.count(queryWrapper);
     }
 
     @Override
-    public IPage<TaskStudentResult> pageStudent(Long paperScanTaskId, String param, Integer pageNumber, Integer pageSize) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+    public IPage<TaskStudentResult> pageStudent(Long examId, String courseCode, String studentCode, Integer pageNumber, Integer pageSize) {
         Page<TaskStudentResult> ipage = new Page<>(pageNumber, pageSize);
-        IPage<TaskStudentResult> taskStudentResultIPage = this.baseMapper.listByStudentCode(ipage, schoolId, param);
-        for (TaskStudentResult studentResult : taskStudentResultIPage.getRecords()) {
-            PaperScanTaskDetail paperScanTaskDetail = paperScanTaskDetailService.getByPaperScanTaskIdAndStudentId(paperScanTaskId, Long.valueOf(studentResult.getStudentId()));
-            studentResult.setBindCount(paperScanTaskDetail == null ? 0 : paperScanTaskDetail.getBindCount());
-        }
-        return taskStudentResultIPage;
+        return this.baseMapper.listByStudentCode(ipage, examId, courseCode, studentCode);
     }
 
     @Override
-    public List<String> recognition(Long paperLibraryId, Integer index, Integer x, Integer y, Integer width, Integer height, Integer rotate, RecognitionTypeEnum type) {
-        QueryWrapper<PaperLibrary> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(PaperLibrary::getId, paperLibraryId);
-        PaperLibrary paperLibrary = this.getOne(queryWrapper);
-        List<JSONObject> objectList = JSON.parseArray(paperLibrary.getPath(), JSONObject.class);
-        JSONObject jsonObject = objectList.get(index);
-
-        String rootPath = fileStoreUtil.buildPath(UploadFileEnum.DOWNLOAD, true);
-        String cutRootPath = fileStoreUtil.buildPath(UploadFileEnum.CUT, true);
-        File file;
-        try {
-            file = paperLibraryCommonService.downloadFile(rootPath, jsonObject.getString(SystemConstant.PATH), jsonObject.getString(SystemConstant.UPLOAD_TYPE), jsonObject.getString(SystemConstant.TYPE));
-        } catch (FileNotFoundException e) {
-            throw ExceptionResultEnum.ERROR.exception("下载图片失败:" + e.getMessage());
-        }
-        // 裁剪
-        File outFile = new File(cutRootPath, "sub" + file.getName());
+    public RecognitionResultVo recognition(PaperScanTask paperScanTask, String studentCode, MultipartFile file, Integer x, Integer y, Integer width, Integer height, Integer rotate) {
+        RecognitionResultVo recognitionResultVo = new RecognitionResultVo();
+        BasicSchool basicSchool = basicSchoolService.getById(paperScanTask.getSchoolId());
+        String courseNameCode = String.format("%s(%s)", paperScanTask.getCourseName(), paperScanTask.getCourseCode());
+        String cutRootPath = fileStoreUtil.buildPath(UploadFileEnum.CUT, true, basicSchool.getCode(), courseNameCode);
+        // 裁剪识别区图片
+        File outFile = new File(cutRootPath, "bar-" + file.getName());
         if (!outFile.exists()) {
             outFile.getParentFile().mkdirs();
         }
-        File subFile = ImageUtil.subImg(file, x, y, width, height, outFile);
+        File subFile = ImageUtil.subImg((File) file, x, y, width, height, outFile);
         if (subFile == null) {
-            throw ExceptionResultEnum.ERROR.exception("识别区域图片生成失败");
+            return recognitionResultVo;
         }
-
         // 旋转
         File rotateOutFile = new File(cutRootPath, "rotate" + file.getName());
         File rotateFile = ImageUtil.rotate(subFile, rotate, rotateOutFile);
 
         List<String> stringList = new ArrayList<>();
+        String wordsResult = null;
+        String result = studentCode;
         try {
-            if (RecognitionTypeEnum.OCR.equals(type)) {
-                org.json.JSONObject callHandwriting;
-                if (rotateFile.exists()) {
-                    callHandwriting = ocrUtil.callHandwriting(rotateFile.getPath());
-                } else {
-                    callHandwriting = ocrUtil.callHandwriting(subFile.getPath());
-                }
-
-                // 未联网提示
-                if (!callHandwriting.has(SystemConstant.OCR_WORDS_RESULT)) {
-                    // ocr错误提示
-                    if (callHandwriting.has(SystemConstant.OCR_ERROR_MSG)) {
-                        throw ExceptionResultEnum.ERROR.exception(callHandwriting.getString(SystemConstant.OCR_ERROR_MSG));
+            if (StringUtils.isBlank(studentCode)) {
+                Map<String, SimpleObject> sysSetting = commonCacheService.getSysSetting(basicSchool.getId());
+                String type = sysSetting.get(SysSettingConstant.RECOGNITION_TYPE).getValue();
+                if (RecognitionTypeEnum.OCR.equals(type)) {
+                    org.json.JSONObject callHandwriting;
+                    if (rotateFile.exists()) {
+                        callHandwriting = ocrUtil.callHandwriting(rotateFile.getPath());
                     } else {
-                        throw ExceptionResultEnum.ERROR.exception("OCR识别异常,请检查网络是否连接或者关闭OCR识别");
+                        callHandwriting = ocrUtil.callHandwriting(subFile.getPath());
                     }
-                }
 
-                JSONArray jsonArray = callHandwriting.getJSONArray(SystemConstant.OCR_WORDS_RESULT);
-                if (jsonArray.length() == 0) {
-                    throw ExceptionResultEnum.ERROR.exception("未正确识别出内容");
-                } else {
-                    jsonArray.forEach(m -> {
-                        org.json.JSONObject object = (org.json.JSONObject) m;
-                        if (object.has(SystemConstant.OCR_WORDS)) {
-                            stringList.add(object.getString(SystemConstant.OCR_WORDS));
+                    // 未联网提示
+                    if (!callHandwriting.has(SystemConstant.OCR_WORDS_RESULT)) {
+                        // ocr错误提示
+                        if (callHandwriting.has(SystemConstant.OCR_ERROR_MSG)) {
+                            throw ExceptionResultEnum.ERROR.exception(callHandwriting.getString(SystemConstant.OCR_ERROR_MSG));
+                        } else {
+                            throw ExceptionResultEnum.ERROR.exception("OCR识别异常,请检查网络是否连接或者关闭OCR识别");
                         }
-                    });
+                    }
 
-                    // 保存识别数据
-                    UpdateWrapper<PaperLibrary> updateWrapper = new UpdateWrapper<>();
-                    updateWrapper.lambda().set(PaperLibrary::getWordsResult, jsonArray.toString())
-                            .set(PaperLibrary::getOcrResult, String.join(",", stringList))
-                            .eq(PaperLibrary::getId, paperLibraryId);
-                    this.update(updateWrapper);
-                }
-            } else if (RecognitionTypeEnum.BAR_CODE.equals(type)) {
-                String result;
-                if (rotateFile.exists()) {
-                    result = BarCodeUtils.decode(rotateFile);
+                    JSONArray jsonArray = callHandwriting.getJSONArray(SystemConstant.OCR_WORDS_RESULT);
+                    if (jsonArray.length() == 0) {
+                        throw ExceptionResultEnum.ERROR.exception("未正确识别出内容");
+                    } else {
+                        jsonArray.forEach(m -> {
+                            org.json.JSONObject object = (org.json.JSONObject) m;
+                            if (object.has(SystemConstant.OCR_WORDS)) {
+                                stringList.add(object.getString(SystemConstant.OCR_WORDS));
+                            }
+                        });
+                        wordsResult = String.join(",", stringList);
+
+                        //自动绑定,默认返回第一条
+                        result = stringList.get(0);
+                    }
+                } else if (RecognitionTypeEnum.BAR_CODE.equals(type)) {
+                    if (rotateFile.exists()) {
+                        result = BarCodeUtils.decode(rotateFile);
+                    } else {
+                        result = BarCodeUtils.decode(subFile);
+                    }
+                    wordsResult = result;
                 } else {
-                    result = BarCodeUtils.decode(subFile);
-                }
-                if (StringUtils.isNotBlank(result)) {
-                    stringList.add(result);
+                    throw ExceptionResultEnum.ERROR.exception("不支持的识别方式");
                 }
-                // 保存识别数据
-                UpdateWrapper<PaperLibrary> updateWrapper = new UpdateWrapper<>();
-                updateWrapper.lambda().set(PaperLibrary::getWordsResult, result)
-                        .eq(PaperLibrary::getId, paperLibraryId);
-                this.update(updateWrapper);
-            } else {
-                throw ExceptionResultEnum.ERROR.exception("不支持的识别方式");
             }
         } catch (Exception e) {
+            wordsResult = e.getMessage();
             throw ExceptionResultEnum.ERROR.exception("识别异常:" + e.getMessage());
         } finally {
-            try {
-                FileUtils.forceDelete(file);
-//                FileUtils.forceDelete(subFile);
-//                FileUtils.forceDelete(rotateFile);
-            } catch (IOException e) {
-                e.printStackTrace();
+            recognitionResultVo.setBindResult(result);
+            recognitionResultVo.setRecognizeResult(wordsResult);
+
+            if (outFile.exists()) {
+                outFile.delete();
+            }
+            if (subFile.exists()) {
+                subFile.delete();
+            }
+            if (rotateOutFile.exists()) {
+                rotateOutFile.delete();
+            }
+            if (rotateFile.exists()) {
+                rotateFile.delete();
             }
         }
-        return stringList;
+        return recognitionResultVo;
     }
 
-    @Transactional
     @Override
-    public Boolean abnormal(Long paperLibraryId) {
-        PaperLibrary paperLibrary = this.getById(paperLibraryId);
-        if (paperLibrary == null) {
-            throw ExceptionResultEnum.ERROR.exception("绑定对象有误,图片已删除,请刷新数据再试");
-        }
-
-        Long paperScanTaskId = paperLibrary.getPaperScanTaskId();
-        PaperScanTask paperScanTask = paperScanTaskService.getById(paperScanTaskId);
-        UpdateWrapper<PaperScanTask> taskUpdateWrapper = new UpdateWrapper<>();
-        taskUpdateWrapper.lambda().set(PaperScanTask::getAbnormalCount, paperScanTask.getAbnormalCount() + 1)
-                .eq(PaperScanTask::getId, paperScanTaskId);
-        paperScanTaskService.update(taskUpdateWrapper);
-
-        UpdateWrapper<PaperLibrary> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.lambda().set(PaperLibrary::getAbnormal, true).eq(PaperLibrary::getId, paperLibraryId);
-        return this.update(updateWrapper);
+    public List<Map> listMaxSequenceByPaperScanTaskId(Long paperScanTaskId) {
+        return this.baseMapper.listMaxSequenceByPaperScanTaskId(paperScanTaskId);
     }
 
     @Override
-    public Integer maxSequence(Long paperScanTaskId) {
-        return this.baseMapper.maxSequence(paperScanTaskId);
+    public void removeByPaperScanTaskId(Long paperScanTaskId) {
+        QueryWrapper<PaperLibrary> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(PaperLibrary::getPaperScanTaskId, paperScanTaskId);
+        this.remove(queryWrapper);
     }
 
-    private List<PaperLibrary> createBindData(Long userId, Long paperScanTaskId) {
-        try {
-            lockService.waitlock(LockType.BIND_PAPER_TASK, paperScanTaskId);
-            PaperScanTask paperScanTask = paperScanTaskService.getById(paperScanTaskId);
-            if (paperScanTask.getCheckUserId() != null && !userId.equals(paperScanTask.getCheckUserId())) {
-                throw ExceptionResultEnum.ERROR.exception("该任务已被其它人绑定,请刷新数据");
-            }
-
-            UpdateWrapper<PaperScanTask> updateWrapper = new UpdateWrapper<>();
-            updateWrapper.lambda().set(PaperScanTask::getCheckUserId, userId)
-                    .eq(PaperScanTask::getId, paperScanTaskId);
-            paperScanTaskService.update(updateWrapper);
+    @Transactional
+    @Override
+    public boolean rebind(Long paperLibraryId, Long studentId) {
+        PaperLibrary paperLibrary = this.getById(paperLibraryId);
+        if (paperLibrary == null) {
+            throw ExceptionResultEnum.ERROR.exception("该图片数据不存在");
+        }
+        // 自己绑定自己,直接返回
+        if (paperLibrary.getStudentId() != null && paperLibrary.getStudentId().equals(studentId)) {
+            return true;
+        }
 
-            List<PaperLibrary> paperLibraryList = this.baseMapper.listUnBindData(paperScanTaskId);
-            if (!paperLibraryList.isEmpty()) {
-                paperLibraryList.forEach(m -> {
-                    if (m.getPaperScanTaskDetailId() == null) {
-                        m.setUserId(userId);
-                    }
-                });
-                this.updateBatchById(paperLibraryList);
-            }
-            return paperLibraryList;
-        } catch (Exception e) {
-            e.printStackTrace();
-        } finally {
-            lockService.unlock(LockType.BIND_PAPER_TASK, paperScanTaskId);
+        // 更新绑定考生ID
+        UpdateWrapper<PaperLibrary> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(PaperLibrary::getStudentId, studentId)
+                .eq(PaperLibrary::getId, paperLibraryId);
+        this.update(updateWrapper);
+        // 更新考生绑定数量
+        if (paperLibrary.getStudentId() != null) {
+            examStudentService.updateBindCount(paperLibrary.getStudentId());
         }
-        return new ArrayList<>();
+        examStudentService.updateBindCount(studentId);
+        return true;
     }
 
     @Override
-    public String getPaperArchivesCode(Long schoolId) {
-        return SystemConstant.PAPER_ARCHIVES_CODE_PREFIX + String.format("%05d", businessCacheService.getPaperArchivesCodeSequence(schoolId));
+    public int countByStudentId(Long studentId) {
+        QueryWrapper<PaperLibrary> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(PaperLibrary::getStudentId, studentId);
+        return this.count(queryWrapper);
     }
 
     @Override
-    public String getScanTaskCode(Long schoolId) {
-        return SystemConstant.SCAN_TASK_CODE_PREFIX + String.format("%07d", businessCacheService.getScanTaskCodeSequence(schoolId));
-    }
+    public int countByExamId(Long examId) {
+        List<PaperScanTask> paperScanTaskList = paperScanTaskService.listByExamId(examId);
+        for (PaperScanTask paperScanTask : paperScanTaskList) {
+            QueryWrapper<PaperLibrary> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().eq(PaperLibrary::getPaperScanTaskId, paperScanTask.getId());
+            int count = this.count(queryWrapper);
+            if (count > 0) {
+                return count;
+            }
+        }
+        return 0;
 
-    @Override
-    public List<PaperLibrary> listHistory() {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        QueryWrapper<PaperLibrary> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(PaperLibrary::getSchoolId, sysUser.getSchoolId())
-                .eq(PaperLibrary::getUserId, sysUser.getId())
-                .orderByDesc(PaperLibrary::getUpdateTime)
-                .last("limit 5");
-        return this.list(queryWrapper);
     }
 
 }

+ 0 - 35
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperScanTaskDetailServiceImpl.java

@@ -1,35 +0,0 @@
-package com.qmth.paper.library.business.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.paper.library.business.entity.PaperScanTaskDetail;
-import com.qmth.paper.library.business.mapper.PaperScanTaskDetailMapper;
-import com.qmth.paper.library.business.service.PaperScanTaskDetailService;
-import com.qmth.paper.library.common.util.ServletUtil;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 扫描任务详情表 服务实现类
- * </p>
- */
-@Service
-public class PaperScanTaskDetailServiceImpl extends ServiceImpl<PaperScanTaskDetailMapper, PaperScanTaskDetail> implements PaperScanTaskDetailService {
-
-    @Override
-    public PaperScanTaskDetail getByPaperScanTaskIdAndStudentId(Long paperScanTaskId, Long studentId) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        QueryWrapper<PaperScanTaskDetail> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(PaperScanTaskDetail::getSchoolId, schoolId)
-                .eq(PaperScanTaskDetail::getPaperScanTaskId, paperScanTaskId)
-                .eq(PaperScanTaskDetail::getStudentId, studentId);
-        return this.getOne(queryWrapper);
-    }
-
-    @Override
-    public int countStudent(Long paperScanTaskId) {
-        QueryWrapper<PaperScanTaskDetail> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(PaperScanTaskDetail::getPaperScanTaskId, paperScanTaskId);
-        return this.count(queryWrapper);
-    }
-}

+ 49 - 318
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperScanTaskServiceImpl.java

@@ -5,44 +5,29 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.google.common.collect.Lists;
-import com.qmth.paper.library.business.bean.dto.excel.PaperScanTaskStudentImportDto;
-import com.qmth.paper.library.business.bean.dto.excel.ScannerBindingDto;
-import com.qmth.paper.library.business.bean.params.PaperScanTaskParam;
-import com.qmth.paper.library.business.bean.result.BindDetailResult;
 import com.qmth.paper.library.business.bean.result.PaperScanTaskDetailResult;
 import com.qmth.paper.library.business.bean.result.PaperScanTaskResult;
-import com.qmth.paper.library.business.bean.result.SelectResult;
+import com.qmth.paper.library.business.entity.ExamCourse;
 import com.qmth.paper.library.business.entity.PaperLibrary;
 import com.qmth.paper.library.business.entity.PaperScanTask;
-import com.qmth.paper.library.business.entity.PaperScanTaskDetail;
 import com.qmth.paper.library.business.mapper.PaperScanTaskMapper;
-import com.qmth.paper.library.business.service.PaperArchivesService;
-import com.qmth.paper.library.business.service.PaperLibraryService;
-import com.qmth.paper.library.business.service.PaperScanTaskDetailService;
-import com.qmth.paper.library.business.service.PaperScanTaskService;
-import com.qmth.paper.library.common.bean.dto.excel.DescribeImportDto;
-import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.common.entity.BasicStudent;
+import com.qmth.paper.library.business.service.*;
+import com.qmth.paper.library.common.entity.ExamStudent;
 import com.qmth.paper.library.common.entity.SysUser;
 import com.qmth.paper.library.common.enums.ExceptionResultEnum;
-import com.qmth.paper.library.common.service.BasicStudentService;
-import com.qmth.paper.library.common.service.SysUserService;
-import com.qmth.paper.library.common.util.ExcelUtil;
+import com.qmth.paper.library.common.enums.RecognitionTypeEnum;
+import com.qmth.paper.library.common.enums.StoreTypeEnum;
 import com.qmth.paper.library.common.util.ServletUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.BeanUtils;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
-import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * <p>
@@ -51,336 +36,82 @@ import java.util.stream.Stream;
  */
 @Service
 public class PaperScanTaskServiceImpl extends ServiceImpl<PaperScanTaskMapper, PaperScanTask> implements PaperScanTaskService {
+
     @Resource
-    private PaperArchivesService paperArchivesService;
-    @Resource
-    private SysUserService sysUserService;
+    private PaperLibraryCommonService paperLibraryCommonService;
     @Resource
     private PaperLibraryService paperLibraryService;
     @Resource
-    private PaperScanTaskDetailService paperScanTaskDetailService;
-
+    private ExamStudentService examStudentService;
     @Resource
-    private BasicStudentService basicStudentService;
+    private ExamCourseService examCourseService;
 
     @Override
-    public IPage<PaperScanTaskResult> paperScanTaskPage(Long semesterId, Long paperArchivesId, String courseCode, String scanTaskName, String scanUser, String checkUser, Integer smallerProgress, Integer largerProgress, int pageNumber, int pageSize, SysUser requestUser) {
-        Long schoolId = requestUser.getSchoolId();
-        courseCode = SystemConstant.strNotNull(courseCode) ? SystemConstant.translateSpecificSign(courseCode) : null;
-        scanTaskName = SystemConstant.strNotNull(scanTaskName) ? SystemConstant.translateSpecificSign(scanTaskName) : null;
-        return this.baseMapper.findPaperScanTaskPage(new Page<>(pageNumber, pageSize), schoolId, semesterId, paperArchivesId, courseCode, scanTaskName, scanUser, checkUser, smallerProgress, largerProgress, null);
+    public IPage<PaperScanTaskResult> paperScanTaskPage(Long examId, String courseCode, String className, int pageNumber, int pageSize) {
+        return this.baseMapper.findPaperScanTaskPage(new Page<>(pageNumber, pageSize), examId, courseCode, className);
     }
 
-    @Transactional(rollbackFor = Exception.class)
     @Override
-    public Long editPaperScanTask(PaperScanTaskParam paperScanTaskParam, SysUser requestUser) {
-        // 参数
-        Long requestUserId = requestUser.getId();
-        Long schoolId = requestUser.getSchoolId();
-        Long paperScanTaskId = paperScanTaskParam.getPaperScanTaskId();
-        Long paperArchivesId = paperScanTaskParam.getPaperArchivesId();
-        if (Objects.isNull(paperArchivesService.getById(paperArchivesId))) {
-            throw ExceptionResultEnum.ERROR.exception("未找到档案");
-        }
-
-        String scanTaskName = paperScanTaskParam.getScanTaskName();
-        // 任务名称在档案下唯一
-        PaperScanTask check = this.getOne(new QueryWrapper<PaperScanTask>()
-                .lambda()
-                .eq(PaperScanTask::getSchoolId, schoolId)
-                .eq(PaperScanTask::getPaperArchivesId, paperArchivesId)
-                .eq(PaperScanTask::getScanTaskName, scanTaskName));
-        if (Objects.nonNull(check) && !Objects.equals(check.getId(), paperScanTaskId)) {
-            throw ExceptionResultEnum.ERROR.exception("所选档案下已存在名称为[" + scanTaskName + "]的扫描任务");
-        }
-
-        String courseCode = paperScanTaskParam.getCourseCode();
-        String courseName = paperScanTaskParam.getCourseName();
-        Long scanUserId = paperScanTaskParam.getScanUserId();
-        Integer studentCount = paperScanTaskParam.getStudentCount();
-        if (SystemConstant.longNotNull(scanUserId)) {
-            SysUser sysUser = sysUserService.getById(scanUserId);
-            if (Objects.isNull(sysUser)) {
-                throw ExceptionResultEnum.ERROR.exception("未找到扫描员");
-            }
-        }
-
-        // 组装
-        PaperScanTask paperScanTask = new PaperScanTask();
-        paperScanTask.setSchoolId(schoolId);
-        paperScanTask.setPaperArchivesId(paperArchivesId);
-        paperScanTask.setScanTaskName(scanTaskName);
-        paperScanTask.setCourseCode(courseCode);
-        paperScanTask.setCourseName(courseName);
-        paperScanTask.setStudentCount(studentCount);
-        if (SystemConstant.longNotNull(scanUserId)) {
-            paperScanTask.setScanUserId(scanUserId);
-        }
-
-        // 操作
-        if (SystemConstant.longNotNull(paperScanTaskId)) {
-            // 有扫描任务id - 编辑
-            paperScanTask.updateInfo(requestUserId);
-            paperScanTask.setId(paperScanTaskId);
-        } else {
-            // 没扫描任务id - 新增
-            paperScanTask.setScanTaskCode(paperLibraryService.getScanTaskCode(schoolId));
-            paperScanTask.insertInfo(requestUserId);
-        }
-        this.saveOrUpdate(paperScanTask);
-        return paperScanTask.getId();
+    public IPage<PaperScanTaskDetailResult> findPaperScanTaskDetailPageByScanTaskId(Long paperScanTaskId, int pageNumber, int pageSize) {
+        return this.baseMapper.findPaperScanTaskDetailPageByScanTaskId(new Page<>(pageNumber, pageSize), paperScanTaskId);
     }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void deletePaperScanTaskByIdList(List<Long> idList, SysUser requestUser) {
-        Long schoolId = requestUser.getSchoolId();
-        if (idList != null && !idList.isEmpty()) {
-            List<PaperLibrary> paperLibraryList = paperLibraryService.list(new QueryWrapper<PaperLibrary>()
-                    .lambda()
-                    .eq(PaperLibrary::getSchoolId, schoolId)
-                    .in(PaperLibrary::getPaperScanTaskId, idList));
-
-            if (!paperLibraryList.isEmpty()) {
-                // 所选择要删除的扫描任务中出现了已经开始扫描的,不能被删除
-                List<Long> cantDeleteScanTaskIdList = paperLibraryList.stream()
-                        .map(PaperLibrary::getPaperScanTaskId)
-                        .distinct()
-                        .collect(Collectors.toList());
-
-                if (!cantDeleteScanTaskIdList.isEmpty()) {
-                    List<PaperScanTask> paperScanTaskList = this.list(new QueryWrapper<PaperScanTask>().lambda().in(PaperScanTask::getId, cantDeleteScanTaskIdList));
-                    String cantDeleteScanTaskNames = paperScanTaskList.stream().map(PaperScanTask::getScanTaskName).collect(Collectors.joining(","));
-                    throw ExceptionResultEnum.ERROR.exception("扫描任务【" + cantDeleteScanTaskNames + "】已扫描图片,不能删除");
-                }
-            } else {
-                // 是否有图片绑定到该任务下
-                QueryWrapper<PaperScanTaskDetail> queryWrapper = new QueryWrapper<>();
-                queryWrapper.lambda().in(PaperScanTaskDetail::getPaperScanTaskId, idList);
-                List<PaperScanTaskDetail> paperScanTaskDetail = paperScanTaskDetailService.list(queryWrapper);
-                List<Long> paperTaskIdList = new ArrayList<>();
-                if (!paperScanTaskDetail.isEmpty()) {
-                    for (PaperScanTaskDetail paperScanTaskDetailTemp : paperScanTaskDetail) {
-                        if (paperTaskIdList.contains(paperScanTaskDetailTemp.getId())) {
-                            continue;
-                        }
-                        QueryWrapper<PaperLibrary> libraryQueryWrapper = new QueryWrapper<>();
-                        libraryQueryWrapper.lambda().eq(PaperLibrary::getPaperScanTaskDetailId, paperScanTaskDetailTemp.getId());
-                        int count = paperLibraryService.count(libraryQueryWrapper);
-                        if (count > 0) {
-                            paperTaskIdList.add(paperScanTaskDetailTemp.getPaperScanTaskId());
-                        }
-                    }
-                }
-                if (!paperTaskIdList.isEmpty()) {
-                    List<PaperScanTask> paperScanTaskList = this.list(new QueryWrapper<PaperScanTask>().lambda().in(PaperScanTask::getId, paperTaskIdList));
-                    String cantDeleteScanTaskNames = paperScanTaskList.stream().map(PaperScanTask::getScanTaskName).collect(Collectors.joining(","));
-                    throw ExceptionResultEnum.ERROR.exception("扫描任务【" + cantDeleteScanTaskNames + "】已有图片绑定,不能删除");
-                }
-            }
-        }
-        this.removeByIds(idList);
-
-        // 删除扫描详情
-        paperScanTaskDetailService.remove(new QueryWrapper<PaperScanTaskDetail>().lambda().in(PaperScanTaskDetail::getPaperScanTaskId, idList));
-    }
-
-    @Override
-    public void exportScanner(SysUser requestUser) throws Exception {
-        Long schoolId = requestUser.getSchoolId();
-        // 已经开始扫描的任务id
-        List<Long> alreadyScannedTaskIdList = paperLibraryService.list(new QueryWrapper<PaperLibrary>().lambda()
-                        .eq(PaperLibrary::getSchoolId, schoolId))
-                .stream()
-                .map(PaperLibrary::getPaperScanTaskId)
-                .collect(Collectors.toList());
-
-        QueryWrapper<PaperScanTask> paperScanTaskQueryWrapper = new QueryWrapper<>();
-        paperScanTaskQueryWrapper.lambda().eq(PaperScanTask::getSchoolId, schoolId);
-        if (alreadyScannedTaskIdList.size() > 0) {
-            paperScanTaskQueryWrapper.lambda().notIn(PaperScanTask::getId, alreadyScannedTaskIdList);
-        }
-        List<PaperScanTask> paperScanTaskList = this.list(paperScanTaskQueryWrapper);
-        List<ScannerBindingDto> scannerBindingDtoList = paperScanTaskList.stream().flatMap(e -> {
-            String scanTaskName = e.getScanTaskName();
-            String scannerName = "";
-            Long scanUserId = e.getScanUserId();
-            if (SystemConstant.longNotNull(scanUserId)) {
-                SysUser scanner = sysUserService.getById(scanUserId);
-                if (Objects.isNull(scanner)) {
-                    throw ExceptionResultEnum.ERROR.exception("未找到扫描员");
-                }
-                scannerName = scanner.getRealName();
-            }
-            ScannerBindingDto scannerBindingDto = new ScannerBindingDto();
-            scannerBindingDto.setScannerName(scannerName);
-            scannerBindingDto.setScanTaskName(scanTaskName);
-            return Stream.of(scannerBindingDto);
-        }).collect(Collectors.toList());
-        ExcelUtil.excelExport("绑定扫描员导入模板", ScannerBindingDto.class, scannerBindingDtoList, ServletUtil.getResponse());
-    }
-
-    @Override
-    public IPage<PaperScanTaskDetailResult> findPaperScanTaskDetailPageByScanTaskId(Long paperScanTaskId, int pageNumber, int pageSize, SysUser requestUser) {
-        Long schoolId = requestUser.getSchoolId();
-        return this.baseMapper.findPaperScanTaskDetailPageByScanTaskId(new Page<>(pageNumber, pageSize), schoolId, paperScanTaskId);
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void clearScanData(Long paperScanTaskId, SysUser requestUser) {
-        Long schoolId = requestUser.getSchoolId();
-
+    public void clearScanData(Long paperScanTaskId) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         // 扫描任务校验
         PaperScanTask paperScanTask = this.getById(paperScanTaskId);
         if (Objects.isNull(paperScanTask)) {
             throw ExceptionResultEnum.ERROR.exception("扫描任务不存在");
         }
         // 要删除的图片数据集合
-        List<PaperLibrary> willDeletePaperLibraryList = paperLibraryService.list(new QueryWrapper<PaperLibrary>()
-                .lambda()
-                .eq(PaperLibrary::getPaperScanTaskId, paperScanTaskId));
-
-        if (!willDeletePaperLibraryList.isEmpty()) {
-            // 已绑定的扫描任务校验
-            List<PaperLibrary> cantDeleteList = willDeletePaperLibraryList
-                    .stream()
-                    .filter(e -> SystemConstant.longNotNull(e.getPaperScanTaskDetailId()))
-                    .collect(Collectors.toList());
-
-            if (!cantDeleteList.isEmpty()) {
-                throw ExceptionResultEnum.ERROR.exception("扫描任务已经进行了数据检验,不能执行此操作");
-            }
-
-            // 删除该任务扫描的的数据
-            paperLibraryService.removeByIds(willDeletePaperLibraryList.stream().map(PaperLibrary::getId).collect(Collectors.toList()));
-
-            // 清除扫描量
-            paperScanTask.setScanCount(0);
-            paperScanTask.setAbnormalCount(0);
-            paperScanTask.updateInfo(requestUser.getId());
-            this.updateById(paperScanTask);
+        List<PaperLibrary> paperLibraryList = paperLibraryService.list(new QueryWrapper<PaperLibrary>().lambda().eq(PaperLibrary::getPaperScanTaskId, paperScanTaskId));
+        Set<Long> studentIds = paperLibraryList.stream().filter(m -> m.getStudentId() != null).map(PaperLibrary::getStudentId).collect(Collectors.toSet());
+        // 重置考生绑定数量为0
+        if (CollectionUtils.isNotEmpty(studentIds)) {
+            UpdateWrapper<ExamStudent> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().set(ExamStudent::getBindCount, 0).in(ExamStudent::getId, studentIds);
+            examStudentService.update(updateWrapper);
         }
-    }
+        // 删除该任务扫描的的数据
+        paperLibraryService.removeByPaperScanTaskId(paperScanTaskId);
 
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void unbindScanner(Long paperScanTaskId, SysUser requestUser) {
-        PaperScanTask paperScanTask = this.getById(paperScanTaskId);
-        if (Objects.isNull(paperScanTask)) {
-            throw ExceptionResultEnum.ERROR.exception("扫描任务不存在");
-        }
-        paperScanTask.setScanUserId(null);
-        paperScanTask.setEnable(false);
-        paperScanTask.updateInfo(requestUser.getId());
+        // 重置扫描数量为0
+        paperScanTask.setScanCount(0);
+        paperScanTask.setScanStudentCount(0);
+        paperScanTask.updateInfo(sysUser.getId());
         this.updateById(paperScanTask);
     }
 
+    @Transactional
     @Override
-    public List<BindDetailResult> findBindDetailByScanTaskId(Long paperScanTaskId, SysUser requestUser) {
-        Long schoolId = requestUser.getSchoolId();
-        if (!SystemConstant.longNotNull(paperScanTaskId)) {
-            throw ExceptionResultEnum.ERROR.exception("缺少扫描任务id");
-        }
-        return this.baseMapper.findBindDetailByScanTaskId(schoolId, paperScanTaskId);
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void releaseBindingTask(Long paperScanTaskId, Long bindUserId, SysUser requestUser) {
-        UpdateWrapper<PaperLibrary> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.lambda()
-                .set(PaperLibrary::getUserId, null)
-                .set(PaperLibrary::getCreateId, requestUser.getId())
-                .set(PaperLibrary::getCreateTime, System.currentTimeMillis())
-                .eq(PaperLibrary::getPaperScanTaskId, paperScanTaskId)
-                .eq(PaperLibrary::getUserId, bindUserId)
-                .isNull(PaperLibrary::getPaperScanTaskDetailId);
-        paperLibraryService.update(updateWrapper);
-
-        // 更新任务对应的检验员
-        UpdateWrapper<PaperScanTask> taskUpdateWrapper = new UpdateWrapper<>();
-        taskUpdateWrapper.lambda().set(PaperScanTask::getCheckUserId, null)
-                .eq(PaperScanTask::getId, paperScanTaskId);
-        this.update(taskUpdateWrapper);
-    }
-
-    @Override
-    public List<PaperScanTask> listByPaperArchivesId(Long paperArchivesId) {
-        QueryWrapper<PaperScanTask> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(PaperScanTask::getPaperArchivesId, paperArchivesId);
-        return this.list(queryWrapper);
-    }
-
-    @Override
-    public List<SelectResult> queryCourse(Long paperArchivesId, Long semesterId) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        return this.baseMapper.queryCourse(schoolId, paperArchivesId, semesterId);
-    }
-
-    @Override
-    public List<SelectResult> queryDataTeachClazz(Long paperArchivesId, String courseCode) {
+    public void addScanTask(Long examId, RecognitionTypeEnum recognitionType, StoreTypeEnum storeType, List<ExamStudent> basicStudentList) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        return this.baseMapper.queryDataTeachClazz(schoolId, paperArchivesId, courseCode);
+        List<ExamCourse> examCourses = examCourseService.listByExamId(examId);
+        List<PaperScanTask> paperScanTaskList = new ArrayList<>();
+        for (ExamCourse examCourse : examCourses) {
+            int studentCount = Math.toIntExact(basicStudentList.stream().filter(m -> m.getCourseCode().equals(examCourse.getCourseCode())).count());
+            String scanTaskName = String.format("%s(%s)", examCourse.getCourseName(), examCourse.getCourseCode());
+            String scanTaskCode = paperLibraryCommonService.getScanTaskCode(schoolId);
+            paperScanTaskList.add(new PaperScanTask(schoolId, examId, scanTaskCode, scanTaskName, examCourse.getCourseCode(), examCourse.getCourseName(), recognitionType, storeType, studentCount));
+        }
+        this.removeBySchoolId(schoolId);
+        this.saveBatch(paperScanTaskList);
     }
 
     @Override
-    public List<SelectResult> queryScanTask(Long paperArchivesId) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+    public void removeBySchoolId(Long schoolId) {
         QueryWrapper<PaperScanTask> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(PaperScanTask::getSchoolId, schoolId);
-        if (paperArchivesId != null) {
-            queryWrapper.lambda().eq(PaperScanTask::getPaperArchivesId, paperArchivesId);
-        }
-        List<PaperScanTask> paperScanTaskList = this.list(queryWrapper);
-        return paperScanTaskList.stream().map(m -> {
-            SelectResult result = new SelectResult();
-            result.setId(String.valueOf(m.getId()));
-            result.setName(m.getScanTaskName());
-            return result;
-        }).collect(Collectors.toList());
-    }
-
-    @Override
-    public PaperScanTaskResult getByPaperScanTaskId(Long paperScanTaskId) {
-        return this.baseMapper.getByPaperScanTaskId(paperScanTaskId);
+        this.remove(queryWrapper);
     }
 
     @Override
-    public boolean enable(Long paperScanTaskId, Boolean enable) {
-        PaperScanTask paperScanTask = this.getById(paperScanTaskId);
-        if (paperScanTask == null) {
-            throw ExceptionResultEnum.ERROR.exception("任务数据异常");
-        }
-        paperScanTask.setEnable(enable);
-        return this.updateById(paperScanTask);
-    }
-
-    @Override
-    public List<PaperScanTask> getByPaperArchivesIdAndScanTaskName(Long schoolId, Long paperArchivesId, String scanTaskName) {
+    public List<PaperScanTask> listByExamId(Long examId) {
         QueryWrapper<PaperScanTask> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(PaperScanTask::getSchoolId, schoolId)
-                .eq(PaperScanTask::getPaperArchivesId, paperArchivesId)
-                .eq(PaperScanTask::getScanTaskName, scanTaskName);
+        queryWrapper.lambda().eq(PaperScanTask::getExamId, examId);
         return this.list(queryWrapper);
     }
 
-    @Override
-    public IPage<PaperScanTaskResult> pageUnbindData(Page<PaperScanTaskResult> iPage, Long semesterId, Long paperArchivesId, String courseCode, String scanTaskName) {
-        Long userId = Long.valueOf(ServletUtil.getRequestHeaderUserId().toString());
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        return this.baseMapper.pageUnbindData(iPage, schoolId, semesterId, paperArchivesId, courseCode, scanTaskName, userId);
-    }
-
-    @Override
-    public void updateStudentCount(Long paperScanTaskId) {
-        // 更新扫描任务冗余字段扫描份数(学生数量)
-        PaperScanTask paperScanTask = this.getById(paperScanTaskId);
-        int studentCount = paperScanTaskDetailService.count(new QueryWrapper<PaperScanTaskDetail>()
-                .lambda()
-                .eq(PaperScanTaskDetail::getPaperScanTaskId, paperScanTaskId));
-        paperScanTask.setStudentCount(studentCount);
-        paperScanTask.setEnable(false);
-        this.updateById(paperScanTask);
-    }
 }

+ 0 - 72
paper-library-business/src/main/java/com/qmth/paper/library/business/templete/execute/AsyncPaperScanTaskImportService.java

@@ -1,72 +0,0 @@
-package com.qmth.paper.library.business.templete.execute;
-
-import cn.hutool.core.date.DateUtil;
-import com.qmth.boot.api.exception.ApiException;
-import com.qmth.paper.library.business.templete.importData.AsyncImportTaskTemplate;
-import com.qmth.paper.library.business.templete.service.TaskLogicService;
-import com.qmth.paper.library.common.contant.SpringContextHolder;
-import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.common.entity.TBTask;
-import com.qmth.paper.library.common.enums.TaskResultEnum;
-import com.qmth.paper.library.common.enums.TaskStatusEnum;
-import com.qmth.paper.library.common.service.TBTaskService;
-import com.qmth.paper.library.common.util.Result;
-import com.qmth.paper.library.common.util.ResultUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Service;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.text.MessageFormat;
-import java.util.Date;
-import java.util.Map;
-import java.util.StringJoiner;
-
-/**
- * @Description: 扫描任务批量导入
- * @Author: CaoZixuan
- * @Date: 2022-09-29
- */
-@Service
-public class AsyncPaperScanTaskImportService extends AsyncImportTaskTemplate {
-
-    private final static Logger log = LoggerFactory.getLogger(AsyncPaperScanTaskImportService.class);
-
-    public static final String SCAN_TASK_TITLE = "扫描任务";
-
-    @Override
-    public Result importTask(Map<String, Object> map) throws Exception {
-        TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
-        InputStream inputStream = super.getUploadFileInputStream(tbTask);
-        map.put("inputStream", inputStream);
-
-        StringJoiner stringJoinerSummary = new StringJoiner("\n")
-                .add(MessageFormat.format("{0}{1}{2}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), BEGIN_TITLE, SCAN_TASK_TITLE));
-        tbTask.setStatus(TaskStatusEnum.RUNNING);
-        TBTaskService tbTaskService = SpringContextHolder.getBean(TBTaskService.class);
-        tbTaskService.updateById(tbTask);
-
-        try {
-            TaskLogicService taskLogicService = SpringContextHolder.getBean(TaskLogicService.class);
-
-            // 执行导入扫描任务数据
-            Map<String, Object> result = taskLogicService.executeImportPaperScanTaskDetailLogic(map);
-            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE, Long.valueOf(String.valueOf(result.get("dataCount"))), FINISH_SIZE));
-            tbTask.setResult(TaskResultEnum.SUCCESS);
-        } catch (Exception e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), EXCEPTION_TITLE, EXCEPTION_DATA, e.getMessage()));
-            tbTask.setResult(TaskResultEnum.ERROR);
-            if (e instanceof ApiException) {
-                ResultUtil.error((ApiException) e, e.getMessage());
-            } else {
-                ResultUtil.error(e.getMessage());
-            }
-        } finally {//生成txt文件
-            tbTask.setSummary(stringJoinerSummary.toString());
-            super.createTxt(tbTask);
-        }
-        return ResultUtil.ok(map);
-    }
-}

+ 0 - 71
paper-library-business/src/main/java/com/qmth/paper/library/business/templete/execute/AsyncStudentDataImportService.java

@@ -1,71 +0,0 @@
-package com.qmth.paper.library.business.templete.execute;
-
-import cn.hutool.core.date.DateUtil;
-import com.qmth.boot.api.exception.ApiException;
-import com.qmth.paper.library.business.templete.importData.AsyncImportTaskTemplate;
-import com.qmth.paper.library.business.templete.service.TaskLogicService;
-import com.qmth.paper.library.common.contant.SpringContextHolder;
-import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.common.entity.TBTask;
-import com.qmth.paper.library.common.enums.TaskResultEnum;
-import com.qmth.paper.library.common.enums.TaskStatusEnum;
-import com.qmth.paper.library.common.service.TBTaskService;
-import com.qmth.paper.library.common.util.Result;
-import com.qmth.paper.library.common.util.ResultUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Service;
-
-import java.io.InputStream;
-import java.text.MessageFormat;
-import java.util.Date;
-import java.util.Map;
-import java.util.StringJoiner;
-
-/**
- * @Description: 异步-学生基础信息导入
- * @Author: CaoZixuan
- * @Date: 2021-04-07
- */
-@Service
-public class AsyncStudentDataImportService extends AsyncImportTaskTemplate {
-
-    private final static Logger log = LoggerFactory.getLogger(AsyncStudentDataImportService.class);
-
-    public static final String OBJ_TITLE = "学生基础数据";
-    @Override
-    public Result importTask(Map<String, Object> map) throws Exception {
-        TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
-        InputStream inputStream = super.getUploadFileInputStream(tbTask);
-        map.put("inputStream",inputStream);
-
-        StringJoiner stringJoinerSummary = new StringJoiner("\n")
-                .add(MessageFormat.format("{0}{1}{2}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), BEGIN_TITLE, OBJ_TITLE));
-        tbTask.setStatus(TaskStatusEnum.RUNNING);
-        TBTaskService tbTaskService = SpringContextHolder.getBean(TBTaskService.class);
-        tbTaskService.updateById(tbTask);
-        try {
-            TaskLogicService taskLogicService = SpringContextHolder.getBean(TaskLogicService.class);
-
-            // 执行导入基础学生数据
-            Map<String, Object> result = taskLogicService.executeImportBasicStudentLogic(map);
-
-
-            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE, Long.valueOf(String.valueOf(result.get("dataCount"))), FINISH_SIZE));
-            tbTask.setResult(TaskResultEnum.SUCCESS);
-        }catch (Exception e){
-            log.error(SystemConstant.LOG_ERROR, e);
-            stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), EXCEPTION_TITLE, EXCEPTION_DATA, e.getMessage()));
-            tbTask.setResult(TaskResultEnum.ERROR);
-            if (e instanceof ApiException) {
-                ResultUtil.error((ApiException) e, e.getMessage());
-            } else {
-                ResultUtil.error(e.getMessage());
-            }
-        } finally {//生成txt文件
-            tbTask.setSummary(stringJoinerSummary.toString());
-            super.createTxt(tbTask);
-        }
-        return ResultUtil.ok(map);
-    }
-}

+ 0 - 17
paper-library-business/src/main/java/com/qmth/paper/library/business/templete/service/TaskLogicService.java

@@ -29,23 +29,6 @@ public interface TaskLogicService {
      */
     Map<String, Object> executeImportSysUserLogic(Map<String, Object> map) throws Exception;
 
-    /**
-     * 处理导入扫描任务详情
-     *
-     * @param map 数据源
-     * @return 结果
-     * @throws Exception 异常
-     */
-    Map<String, Object> executeImportPaperScanTaskDetailLogic(Map<String, Object> map) throws Exception;
-
-    /**
-     * 处理导入学生数据
-     *
-     * @param map 数据源
-     * @return 结果
-     * @throws Exception 异常
-     */
-    Map<String, Object> executeImportBasicStudentLogic(Map<String, Object> map) throws Exception;
 
     /**
      * 下载试卷

+ 32 - 214
paper-library-business/src/main/java/com/qmth/paper/library/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -3,31 +3,24 @@ package com.qmth.paper.library.business.templete.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.google.common.collect.Lists;
 import com.qmth.boot.api.exception.ApiException;
-import com.qmth.paper.library.business.bean.dto.excel.PaperScanTaskImportDto;
-import com.qmth.paper.library.business.bean.params.PaperScanTaskParam;
-import com.qmth.paper.library.business.bean.result.PaperArchivesDetailResult;
-import com.qmth.paper.library.business.entity.PaperArchivesCourse;
+import com.qmth.paper.library.business.bean.result.DocManageDetailResult;
 import com.qmth.paper.library.business.entity.PaperLibrary;
-import com.qmth.paper.library.business.entity.PaperScanTask;
-import com.qmth.paper.library.business.entity.PaperScanTaskDetail;
-import com.qmth.paper.library.business.service.*;
+import com.qmth.paper.library.business.service.DocManageService;
+import com.qmth.paper.library.business.service.PaperLibraryCommonService;
+import com.qmth.paper.library.business.service.PaperLibraryService;
 import com.qmth.paper.library.business.templete.service.TaskLogicService;
-import com.qmth.paper.library.common.bean.dto.excel.BasicStudentImportDto;
 import com.qmth.paper.library.common.bean.dto.excel.DescribeImportDto;
 import com.qmth.paper.library.common.bean.dto.excel.SysOrgImportDto;
 import com.qmth.paper.library.common.bean.dto.excel.SysUserImportDto;
 import com.qmth.paper.library.common.bean.params.DownLoadPaperParams;
 import com.qmth.paper.library.common.config.DictionaryConfig;
 import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.common.entity.BasicStudent;
 import com.qmth.paper.library.common.entity.SysUser;
 import com.qmth.paper.library.common.entity.TBTask;
 import com.qmth.paper.library.common.enums.ExceptionResultEnum;
 import com.qmth.paper.library.common.enums.UploadFileEnum;
-import com.qmth.paper.library.common.service.BasicStudentService;
 import com.qmth.paper.library.common.service.SysOrgService;
 import com.qmth.paper.library.common.service.SysUserService;
 import com.qmth.paper.library.common.util.*;
@@ -46,7 +39,6 @@ import org.springframework.util.LinkedMultiValueMap;
 import javax.annotation.Resource;
 import java.io.*;
 import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /**
@@ -64,26 +56,16 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     private DictionaryConfig dictionaryConfig;
     @Resource
     private SysOrgService sysOrgService;
-
-    @Resource
-    SysUserService sysUserService;
     @Resource
-    private PaperArchivesService paperArchivesService;
+    private SysUserService sysUserService;
     @Resource
-    private PaperScanTaskService paperScanTaskService;
+    private DocManageService docManageService;
     @Resource
-    private PaperScanTaskDetailService paperScanTaskDetailService;
-    @Resource
-    private BasicStudentService basicStudentService;
-
-    @Resource
-    private PaperArchivesCourseService paperArchivesCourseService;
-    @Resource
-    PaperLibraryCommonService paperLibraryCommonService;
+    private PaperLibraryCommonService paperLibraryCommonService;
     @Resource
     private FileStoreUtil fileStoreUtil;
     @Resource
-    PaperLibraryService paperLibraryService;
+    private PaperLibraryService paperLibraryService;
 
     @Transactional
     @Override
@@ -188,169 +170,6 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         return sysUserService.executeSysUserImportLogic(finalList, map);
     }
 
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public Map<String, Object> executeImportPaperScanTaskDetailLogic(Map<String, Object> map) throws Exception {
-        SysUser sysUser = (SysUser) map.get(SystemConstant.SYS_USER);
-        Long schoolId = sysUser.getSchoolId();
-        InputStream inputStream = (InputStream) map.get("inputStream");
-
-        List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(inputStream, Lists.newArrayList(PaperScanTaskImportDto.class, DescribeImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> finalExcelList);
-        List<PaperScanTaskImportDto> datasource = new ArrayList<>();
-        for (int i = 0; i < finalList.size(); i++) {
-            LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
-            List<Object> paperScanTaskImportDtoList = excelMap.get(i);
-            if (CollectionUtils.isEmpty(paperScanTaskImportDtoList) || paperScanTaskImportDtoList.get(0) instanceof DescribeImportDto) {
-                continue;
-            }
-            map.put("dataCount", paperScanTaskImportDtoList.size());
-            // 类型转换
-            if (paperScanTaskImportDtoList.get(0) instanceof PaperScanTaskImportDto) {
-                datasource = paperScanTaskImportDtoList.stream().map(e -> {
-                    PaperScanTaskImportDto paperScanTaskImportDto = new PaperScanTaskImportDto();
-                    BeanUtils.copyProperties(e, paperScanTaskImportDto);
-                    return paperScanTaskImportDto;
-                }).collect(Collectors.toList());
-            }
-        }
-        if (!CollectionUtils.isEmpty(datasource)) {
-            // 选择的扫描档案id
-            Long paperArchivesId = SystemConstant.convertIdToLong(String.valueOf(map.get("paperArchivesId")));
-
-            // 归纳 - 扫描任务集合
-            // 扫描任务唯一信息
-            Map<String, PaperScanTaskImportDto> paperScanTaskMap = new HashMap<>();
-            for (PaperScanTaskImportDto paperScanTaskImportDto : datasource) {
-                String scanTaskName = paperScanTaskImportDto.getScanTaskName();
-                String courseCode = paperScanTaskImportDto.getCourseCode();
-                String courseName = paperScanTaskImportDto.getCourseName();
-                String teachClazzName = StringUtils.isBlank(paperScanTaskImportDto.getTeachClazzName()) ? "" : paperScanTaskImportDto.getTeachClazzName();
-                String teacherName = StringUtils.isBlank(paperScanTaskImportDto.getTeacherName()) ? "" : paperScanTaskImportDto.getTeacherName();
-
-                if (paperScanTaskMap.containsKey(scanTaskName)) {
-                    // 如果试卷任务map中包含该任务名称 - 检验其他信息是否一致(课程,任课教师,教学班 为空的不检验)
-                    PaperScanTaskImportDto v = paperScanTaskMap.get(scanTaskName);
-
-                    //同一课程必须在同一任务中
-                    String vCourseCode = v.getCourseCode();
-                    if (!courseCode.equals(vCourseCode)) {
-                        throw ExceptionResultEnum.ERROR.exception("任务名称[" + scanTaskName + "]存在不同的课程代码[" + courseCode + "," + vCourseCode + "]");
-                    }
-
-                    // 同一任务课程名称检验
-                    String vCourseName = v.getCourseName();
-                    if (!courseName.equals(vCourseName)) {
-                        throw ExceptionResultEnum.ERROR.exception("任务名称[" + scanTaskName + "]存在不同的课程名称[" + courseName + "," + vCourseName + "]");
-                    }
-
-                    // 同一任务同一课程不同任课老师检验
-                    String vTeacherName = StringUtils.isBlank(v.getTeacherName()) ? "" : v.getTeacherName();
-                    if (!teacherName.equals(vTeacherName)) {
-                        throw ExceptionResultEnum.ERROR.exception("任务名称[" + scanTaskName + "],课程代码[" + courseCode + "]存在不同的任课老师[" + teacherName + "," + vTeacherName + "]");
-                    }
-
-                    // 同一任务同一课程不同教学班检验
-                    String vTeachClazzName = StringUtils.isBlank(v.getTeachClazzName()) ? "" : v.getTeachClazzName();
-                    if (!teachClazzName.equals(vTeachClazzName)) {
-                        throw ExceptionResultEnum.ERROR.exception("任务名称[" + scanTaskName + "],课程代码[" + courseCode + "]存在不同的教学班[" + teachClazzName + "," + vTeachClazzName + "]");
-                    }
-
-                } else {
-                    List<PaperScanTask> paperScanTaskList = paperScanTaskService.getByPaperArchivesIdAndScanTaskName(schoolId, paperArchivesId, scanTaskName);
-                    if (!CollectionUtils.isEmpty(paperScanTaskList)) {
-                        throw ExceptionResultEnum.ERROR.exception("任务名称[" + scanTaskName + "]在系统中已存在");
-                    }
-                    // 没包含直接put
-                    paperScanTaskMap.put(scanTaskName, paperScanTaskImportDto);
-                }
-            }
-            List<PaperArchivesCourse> paperArchivesCourses = paperArchivesCourseService.list(new QueryWrapper<PaperArchivesCourse>()
-                    .lambda()
-                    .eq(PaperArchivesCourse::getPaperArchivesId, paperArchivesId));
-            for (Map.Entry<String, PaperScanTaskImportDto> entry : paperScanTaskMap.entrySet()) {
-                String scanTaskName = entry.getKey();
-                PaperScanTaskImportDto paperScanTaskImportDto = entry.getValue();
-
-                // 保存扫描任务
-                PaperScanTaskParam paperScanTaskParam = new PaperScanTaskParam();
-                paperScanTaskParam.setPaperArchivesId(paperArchivesId);
-                paperScanTaskParam.setCourseCode(paperScanTaskImportDto.getCourseCode());
-                paperScanTaskParam.setCourseName(paperScanTaskImportDto.getCourseName());
-                paperScanTaskParam.setScanTaskName(scanTaskName);
-                paperScanTaskService.editPaperScanTask(paperScanTaskParam, sysUser);
-
-                // 保存任务+考生
-                String courseCode = paperScanTaskImportDto.getCourseCode();
-                String courseName = paperScanTaskImportDto.getCourseName();
-                String teachClazzName = paperScanTaskImportDto.getTeachClazzName();
-                String teacherName = paperScanTaskImportDto.getTeacherName();
-                if (StringUtils.isNotBlank(teachClazzName) || StringUtils.isNotBlank(teacherName)) {
-                    PaperArchivesCourse paperArchivesCourse = paperArchivesCourses.isEmpty() ? null : paperArchivesCourses.stream().filter(m -> courseCode.equals(m.getCourseCode())).findFirst().orElseGet(null);
-                    if (paperArchivesCourse == null) {
-                        paperArchivesCourse = new PaperArchivesCourse(schoolId, paperArchivesId, courseCode, courseName, teacherName, teachClazzName);
-                        paperArchivesCourse.insertInfo(sysUser.getId());
-                    } else {
-                        paperArchivesCourse.setTeachClazzName(teachClazzName);
-                        paperArchivesCourse.setTeacherName(teacherName);
-                    }
-                    paperArchivesCourseService.saveOrUpdate(paperArchivesCourse);
-                }
-            }
-        }
-        return map;
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public Map<String, Object> executeImportBasicStudentLogic(Map<String, Object> map) throws Exception {
-        InputStream inputStream = (InputStream) map.get("inputStream");
-        System.out.println(inputStream);
-        List<String> studentCodeList = new ArrayList<>();
-        List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(inputStream, Lists.newArrayList(BasicStudentImportDto.class, DescribeImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
-            List<ExcelError> excelErrorTemp = new ArrayList<>();
-            Map<String, String> checkCodeMap = new HashMap<>();
-            Map<String, String> checkPhoneMap = new HashMap<>();
-            for (int i = 0; i < finalExcelList.size(); i++) {
-                LinkedMultiValueMap<Integer, Object> excelMap = finalExcelList.get(i);
-                List<Object> basicStudentImportDtoList = excelMap.get(i);
-                assert basicStudentImportDtoList != null;
-                if (basicStudentImportDtoList.get(0) instanceof DescribeImportDto) {
-                    continue;
-                }
-                for (int y = 0; y < Objects.requireNonNull(basicStudentImportDtoList).size(); y++) {
-                    BasicStudentImportDto basicStudentImportDto = (BasicStudentImportDto) basicStudentImportDtoList.get(y);
-                    String studentName = basicStudentImportDto.getStudentName();
-                    String studentCode = basicStudentImportDto.getStudentCode();
-                    String clazzName = basicStudentImportDto.getClazzName();
-                    studentCodeList.add(studentCode);
-
-                    // 检验excel中
-                    // 检验学号
-                    if (SystemConstant.strNotNull(studentCode)) {
-                        if (checkCodeMap.containsKey(studentCode)) {
-                            throw ExceptionResultEnum.ERROR.exception("文件中存在重复的[学生编号]:" + studentCode);
-                        } else {
-                            checkCodeMap.put(studentCode, studentName);
-                        }
-                    }
-
-                    excelErrorTemp.addAll(ExcelUtil.checkExcelField(basicStudentImportDto, y, i));
-                    if (Objects.isNull(studentCode) || studentCode.length() > 30 || !studentCode.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)) {
-                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[学号]不符合输入规范"));
-                    }
-                    if (Objects.isNull(studentName) || studentName.length() > 30) {
-                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[学生名称]不符合输入规范"));
-                    }
-                }
-            }
-            if (excelErrorTemp.size() > 0) {
-                throw ExceptionResultEnum.ERROR.exception(JSONObject.toJSONString(excelErrorTemp));
-            }
-            map.put("studentCodeList", studentCodeList);
-            return finalExcelList;
-        });
-        return basicStudentService.executeBasicStudentImportLogic(finalList, map);
-    }
 
     @Override
     public Map<String, Object> executeDownloadPaperLogic(Map<String, Object> map) {
@@ -361,7 +180,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
             DownLoadPaperParams downLoadPaperParams = JSON.parseObject(tbTask.getRemark(), DownLoadPaperParams.class);
 
-            List<PaperArchivesDetailResult> archivesDetailResults = paperArchivesService.listDetail(downLoadPaperParams);
+            List<DocManageDetailResult> docManageDetailResults = docManageService.listDetail(downLoadPaperParams);
             String rootPath = fileStoreUtil.buildPath(UploadFileEnum.DOWNLOAD, true);
             String dirName = SystemConstant.getUuid() + SystemConstant.ZIP_SUFFIX;
             zipFile = new File(rootPath + dirName);
@@ -369,25 +188,24 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 zipFile.getParentFile().mkdirs();
             }
             zipLocalRootPath = dictionaryConfig.fssDomain().getConfig() + File.separator + UploadFileEnum.DOWNLOAD.getPrefix() + File.separator + SystemConstant.getUuid();
-            Map<String, Integer> successMap = new HashMap<>();
-            Map<String, Integer> errorMap = new HashMap<>();
-            for (PaperArchivesDetailResult archivesDetailResult : archivesDetailResults) {
-                String paperScanTaskDetailId = archivesDetailResult.getPaperScanTaskDetailId();
-                successMap.putIfAbsent(paperScanTaskDetailId, 0);
-                errorMap.putIfAbsent(paperScanTaskDetailId, 0);
+            Map<Long, Integer> successMap = new HashMap<>();
+            Map<Long, Integer> errorMap = new HashMap<>();
+            for (DocManageDetailResult docManageDetailResult : docManageDetailResults) {
                 QueryWrapper<PaperLibrary> queryWrapper = new QueryWrapper<>();
-                queryWrapper.lambda().eq(PaperLibrary::getPaperScanTaskDetailId, archivesDetailResult.getPaperScanTaskDetailId());
+                Long studentId = docManageDetailResult.getStudentId();
+                queryWrapper.lambda().eq(PaperLibrary::getPaperScanTaskId, downLoadPaperParams.getPaperScanTaskId())
+                        .eq(PaperLibrary::getStudentId, studentId);
                 List<PaperLibrary> paperLibraryList = paperLibraryService.list(queryWrapper);
                 for (PaperLibrary paperLibrary : paperLibraryList) {
                     List<JSONObject> objectList = JSON.parseArray(paperLibrary.getPath(), JSONObject.class);
                     for (JSONObject jsonObject : objectList) {
                         try {
-                            String imagePath = zipLocalRootPath + File.separator + archivesDetailResult.getCourseName() + File.separator + archivesDetailResult.getTeachClazzName() + File.separator + archivesDetailResult.getStudentCode();
+                            String imagePath = zipLocalRootPath + File.separator + docManageDetailResult.getCourseName() + File.separator + docManageDetailResult.getTeachClass() + File.separator + docManageDetailResult.getStudentCode();
                             File file = paperLibraryCommonService.downloadFile(imagePath, jsonObject.getString(SystemConstant.PATH), jsonObject.getString(SystemConstant.UPLOAD_TYPE), jsonObject.getString(SystemConstant.TYPE));
                             sourceFileList.add(file);
-                            successMap.put(paperScanTaskDetailId, successMap.get(paperScanTaskDetailId) + 1);
+                            successMap.put(studentId, successMap.get(studentId) + 1);
                         } catch (FileNotFoundException e) {
-                            errorMap.put(paperScanTaskDetailId, successMap.get(paperScanTaskDetailId) + 1);
+                            errorMap.put(studentId, successMap.get(studentId) + 1);
                         }
                     }
                 }
@@ -395,7 +213,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
 
             if (!CollectionUtils.isEmpty(sourceFileList)) {
                 // 生成清单
-                createPaperDownloadExcel(zipLocalRootPath, archivesDetailResults, successMap, errorMap);
+                createPaperDownloadExcel(zipLocalRootPath, docManageDetailResults, successMap, errorMap);
 
                 Zip4jUtil.zipEncryptFile(zipFile.getPath(), zipLocalRootPath, SystemConstant.ZIP_ENCRYPT_PWD);
                 String ossDirName = dirName.replaceAll("\\\\", "/");
@@ -411,7 +229,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 jsonObject.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);
                 tbTask.setExportFilePath(jsonObject.toJSONString());
             }
-            map.put(SystemConstant.SIZE, Objects.nonNull(archivesDetailResults) ? archivesDetailResults.size() : 0);
+            map.put(SystemConstant.SIZE, Objects.nonNull(docManageDetailResults) ? docManageDetailResults.size() : 0);
         } catch (
                 Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
@@ -439,7 +257,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
      * @param successMap
      * @param errorMap
      */
-    public void createPaperDownloadExcel(String zipLocalRootPath, List<PaperArchivesDetailResult> list, Map<String, Integer> successMap, Map<String, Integer> errorMap) throws IOException {
+    public void createPaperDownloadExcel(String zipLocalRootPath, List<DocManageDetailResult> list, Map<Long, Integer> successMap, Map<Long, Integer> errorMap) throws IOException {
         String fileName = "下载清单.xlsx";
         XSSFWorkbook wb = new XSSFWorkbook();
         XSSFSheet sheet = wb.createSheet("数据");
@@ -503,58 +321,58 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         }
 
         for (int i = 1; i <= list.size(); i++) {
-            PaperArchivesDetailResult paperArchivesDetailResult = list.get(i - 1);
+            DocManageDetailResult docManageDetailResult = list.get(i - 1);
             XSSFRow row = sheet.createRow(i);
 
             XSSFCell cell0 = row.createCell(0);
             cell0.setCellStyle(lockStyle);
             cell0.setCellStyle(dataStyle);
-            cell0.setCellValue(paperArchivesDetailResult.getStudentName());
+            cell0.setCellValue(docManageDetailResult.getStudentName());
 
             XSSFCell cell1 = row.createCell(1);
             cell1.setCellStyle(lockStyle);
             cell1.setCellStyle(dataStyle);
-            cell1.setCellValue(paperArchivesDetailResult.getStudentCode());
+            cell1.setCellValue(docManageDetailResult.getStudentCode());
 
             XSSFCell cell2 = row.createCell(2);
             cell2.setCellStyle(lockStyle);
             cell2.setCellStyle(dataStyle);
-            cell2.setCellValue(paperArchivesDetailResult.getMajorName());
+            cell2.setCellValue(docManageDetailResult.getMajorName());
 
             XSSFCell cell3 = row.createCell(3);
             cell3.setCellStyle(lockStyle);
             cell3.setCellStyle(dataStyle);
-            cell3.setCellValue(paperArchivesDetailResult.getClazzName());
+            cell3.setCellValue(docManageDetailResult.getClassName());
 
             XSSFCell cell4 = row.createCell(4);
             cell4.setCellStyle(lockStyle);
             cell4.setCellStyle(dataStyle);
-            cell4.setCellValue(paperArchivesDetailResult.getCourseName());
+            cell4.setCellValue(docManageDetailResult.getCourseName());
 
             XSSFCell cell5 = row.createCell(5);
             cell5.setCellStyle(lockStyle);
             cell5.setCellStyle(dataStyle);
-            cell5.setCellValue(paperArchivesDetailResult.getTeacherName());
+            cell5.setCellValue(docManageDetailResult.getTeacher());
 
             XSSFCell cell6 = row.createCell(6);
             cell6.setCellStyle(lockStyle);
             cell6.setCellStyle(dataStyle);
-            cell6.setCellValue(paperArchivesDetailResult.getTeachClazzName());
+            cell6.setCellValue(docManageDetailResult.getTeachClass());
 
             XSSFCell cell7 = row.createCell(7);
             cell7.setCellStyle(lockStyle);
             cell7.setCellStyle(dataStyle);
-            cell7.setCellValue(paperArchivesDetailResult.getBindCount());
+            cell7.setCellValue(docManageDetailResult.getBindCount());
 
             XSSFCell cell8 = row.createCell(8);
             cell8.setCellStyle(lockStyle);
             cell8.setCellStyle(dataStyle);
-            cell8.setCellValue(successMap.get(paperArchivesDetailResult.getPaperScanTaskDetailId()));
+            cell8.setCellValue(successMap.get(docManageDetailResult.getStudentId()));
 
             XSSFCell cell9 = row.createCell(9);
             cell9.setCellStyle(lockStyle);
             cell9.setCellStyle(dataStyle);
-            cell9.setCellValue(errorMap.get(paperArchivesDetailResult.getPaperScanTaskDetailId()));
+            cell9.setCellValue(errorMap.get(docManageDetailResult.getStudentId()));
         }
 
         for (int i = 0; i < fieldsNameList.length; i++) {

+ 130 - 0
paper-library-business/src/main/resources/mapper/DocManageMapper.xml

@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.qmth.paper.library.business.mapper.DocManageMapper">
+    <select id="pageData" resultType="com.qmth.paper.library.business.bean.result.DocManageResult">
+        SELECT
+            pst.id paperScanTaskId,
+            bs.name semesterName,
+            be.name examName,
+            pst.course_code courseCode,
+            pst.course_name courseName,
+            pst.student_count studentCount,
+            pst.scan_count scanStudentCount
+        FROM
+            paper_scan_task pst
+                LEFT JOIN
+            basic_exam be ON pst.exam_id = be.id
+                LEFT JOIN
+            basic_semester bs ON be.semester_id = bs.id
+        <where>
+            <if test="examId != null ">
+                and pst.exam_id = #{examId}
+            </if>
+            <if test="courseCode != null and courseCode != ''">
+                and pst.course_code = #{courseCode}
+            </if>
+<!--            <if test="managerOrgId == null and orgIds != null and orgIds.size > 0">-->
+<!--                AND pa.manager_org_id IN-->
+<!--                <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">-->
+<!--                    #{item}-->
+<!--                </foreach>-->
+<!--            </if>-->
+        </where>
+    </select>
+    <select id="pageDetail" resultType="com.qmth.paper.library.business.bean.result.DocManageDetailResult">
+        SELECT
+            es.id studentId,
+            es.exam_id examId,
+            es.student_name studentName,
+            es.student_code studentCode,
+            es.course_code courseCode,
+            es.course_name courseName,
+            es.teacher,
+            es.teach_class teachClass,
+            es.college_name collegeName,
+            es.major_name majorName,
+            es.class_name className,
+            es.score,
+            es.remark,
+            es.bind_count bindCount
+        FROM
+            exam_student es
+                LEFT JOIN
+            paper_scan_task pst ON es.exam_id = pst.exam_id and es.course_code = pst.course_code
+        <where>
+            pst.id = #{paperScanTaskId}
+            <if test="collegeName != null and collegeName != ''">
+                and es.college_name like concat(#{collegeName},'%')
+            </if>
+            <if test="majorName != null and majorName != ''">
+                and es.major_name like concat(#{majorName},'%')
+            </if>
+            <if test="className != null and className != ''">
+                and es.class_name like concat(#{className},'%')
+            </if>
+            <if test="courseCode != null and courseCode != ''">
+                and es.course_code = #{courseCode}
+            </if>
+            <if test="teacher != null and teacher != ''">
+                and es.teacher like concat(#{teacher},'%')
+            </if>
+            <if test="teachClass != null and teachClass != ''">
+                and es.teach_class like concat(#{teachClass},'%')
+            </if>
+            <if test="isBind != null">
+                <if test="isBind == true">
+                    and es.bind_count > 0
+                </if>
+                <if test="isBind == false">
+                    and es.bind_count = 0
+                </if>
+            </if>
+            <if test="param != null and param != ''">
+                and (es.student_name like concat(#{param},'%') or es.student_code like concat(#{param},'%'))
+            </if>
+            <if test="minScore != null">
+                and es.score &gt;= #{minScore}
+            </if>
+            <if test="maxScore != null">
+                and es.score &lt;= #{maxScore}
+            </if>
+            <if test="minBindCount != null">
+                and es.bind_count &gt;= #{minBindCount}
+            </if>
+            <if test="maxBindCount != null">
+                and es.bind_count &lt;= #{maxBindCount}
+            </if>
+        </where>
+        order by pst.scan_task_name, bs.student_code
+    </select>
+    <select id="listDetail" resultType="com.qmth.paper.library.business.bean.result.DocManageDetailResult">
+        SELECT
+            es.id studentId,
+            es.exam_id examId,
+            es.student_name studentName,
+            es.student_code studentCode,
+            es.course_code courseCode,
+            es.course_name courseName,
+            es.teacher,
+            es.teach_class teachClass,
+            es.college_name collegeName,
+            es.major_name majorName,
+            es.class_name className,
+            es.score,
+            es.remark,
+            es.bind_count bindCount
+        FROM
+            exam_student es
+                LEFT JOIN
+            paper_scan_task pst ON es.exam_id = pst.exam_id and es.course_code = pst.course_code
+        <where>
+            pst.id = #{paperScanTaskId}
+            <if test="ids != null and ids.size > 0">
+                AND es.id IN
+                <foreach collection="ids" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
+</mapper>

+ 13 - 0
paper-library-business/src/main/resources/mapper/ExamCourseMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.paper.library.business.mapper.ExamCourseMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qmth.paper.library.business.entity.ExamCourse">
+        <id column="id" property="id" />
+        <result column="exam_id" property="examId" />
+        <result column="course_code" property="courseCode" />
+        <result column="course_name" property="courseName" />
+    </resultMap>
+
+</mapper>

+ 62 - 0
paper-library-business/src/main/resources/mapper/ExamStudentMapper.xml

@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.paper.library.business.mapper.ExamStudentMapper">
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qmth.paper.library.common.entity.ExamStudent">
+        <result column="id" property="id"/>
+        <result column="school_id" property="schoolId"/>
+        <result column="semester_id" property="semesterId"/>
+        <result column="exam_id" property="examId"/>
+        <result column="course_code" property="courseCode"/>
+        <result column="course_name" property="courseName"/>
+        <result column="student_code" property="studentCode"/>
+        <result column="student_name" property="studentName"/>
+        <result column="college_name" property="collegeName"/>
+        <result column="major_name" property="majorName"/>
+        <result column="class_name" property="className"/>
+        <result column="teacher" property="teacher"/>
+        <result column="teach_class" property="teachClass"/>
+        <result column="exam_room" property="examRoom"/>
+        <result column="source" property="source"/>
+        <result column="score" property="score"/>
+        <result column="remark" property="remark"/>
+        <result column="enable" property="enable"/>
+        <result column="create_id" property="createId"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_id" property="updateId"/>
+        <result column="update_time" property="updateTime"/>
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        select id, school_id, semester_id, exam_id, course_code, course_name, student_code, student_name, college_name, major_name, class_name, teacher,teach_class,
+               exam_room, `source`, score,remark,enable, create_id, create_time, update_id, update_time from exam_student
+    </sql>
+
+    <select id="findStudentPage"
+            resultType="com.qmth.paper.library.common.entity.ExamStudent">
+        <include refid="Base_Column_List"></include>
+        <where>
+            <if test="examId != null">
+                and exam_id = #{examId}
+            </if>
+            <if test="courseCode != null and courseCode != ''">
+                and course_code = #{courseCode}
+            </if>
+            <if test="collegeName != null and collegeName != ''">
+                and college_name like concat(#{collegeName},'%')
+            </if>
+            <if test="majorName != null and majorName != ''">
+                and major_name like concat(#{majorName},'%')
+            </if>
+            <if test="className != null and className != ''">
+                and class_name like concat(#{className},'%')
+            </if>
+            <if test="queryParams != null and queryParams != ''">
+                and (student_name like concat(#{queryParams},'%') or student_code like concat(#{queryParams},'%'))
+            </if>
+            and enable = true
+        </where>
+        ORDER BY student_code DESC
+    </select>
+</mapper>

+ 0 - 4
paper-library-business/src/main/resources/mapper/PaperArchivesCourseMapper.xml

@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.qmth.paper.library.business.mapper.PaperArchivesCourseMapper">
-</mapper>

+ 0 - 214
paper-library-business/src/main/resources/mapper/PaperArchivesMapper.xml

@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.qmth.paper.library.business.mapper.PaperArchivesMapper">
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.qmth.paper.library.business.entity.PaperArchives">
-        <result column="id" property="id"/>
-        <result column="school_id" property="schoolId"/>
-        <result column="semester_id" property="semesterId"/>
-        <result column="manager_org_id" property="managerOrgId"/>
-        <result column="archives_name" property="archivesName"/>
-        <result column="archives_code" property="archivesCode"/>
-        <result column="archives_type_id" property="archivesTypeId"/>
-        <result column="manager_id" property="managerId"/>
-        <result column="warning_time" property="warningTime"/>
-        <result column="create_id" property="createId"/>
-        <result column="create_time" property="createTime"/>
-        <result column="update_id" property="updateId"/>
-        <result column="update_time" property="updateTime"/>
-    </resultMap>
-
-    <!-- 通用查询结果列 -->
-    <sql id="Base_Column_List">
-        select id, school_id, semester_id, manager_org_id,archives_name, archives_code, archives_type_id, manager_id, warning_time, create_id, create_time, update_id, update_time from paper_archives
-    </sql>
-
-    <select id="pageData" resultType="com.qmth.paper.library.business.bean.result.PaperArchivesResult">
-        SELECT
-            pa.id,
-            pa.archives_name archivesName,
-            pa.archives_code archivesCode,
-            pa.archives_type_id archivesTypeId,
-            pat.name archivesTypeName,
-            pa.semester_id semesterId,
-            bs.name semesterName,
-            pa.manager_org_id managerOrgId,
-            so.name managerOrgName,
-            pa.manager_id managerId,
-            su.real_name managerName,
-            pa.warning_time warningTime,
-            pa.create_time createTime
-        FROM
-            paper_archives pa
-                LEFT JOIN
-            basic_semester bs ON pa.school_id = bs.school_id
-                AND pa.semester_id = bs.id
-                LEFT JOIN
-            paper_archives_type pat ON pa.school_id = pat.school_id
-                AND pa.archives_type_id = pat.id
-                LEFT JOIN
-            sys_org so ON pa.school_id = so.school_id
-                AND pa.manager_org_id = so.id
-                LEFT JOIN
-            sys_user su ON pa.manager_id = su.id
-        <where>
-            <if test="schoolId != null">
-                and pa.school_id = #{schoolId}
-            </if>
-            <if test="semesterId != null ">
-                and pa.semester_id = #{semesterId}
-            </if>
-            <if test="managerOrgId != null ">
-                and pa.manager_org_id = #{managerOrgId}
-            </if>
-            <if test="archivesTypeId != null">
-                and pa.archives_type_id = #{archivesTypeId}
-            </if>
-            <if test="archivesName != null and archivesName != ''">
-                and (pa.archives_name like concat(#{archivesName},'%') or pa.archives_code like concat(#{archivesName},'%'))
-            </if>
-            <if test="managerOrgId == null and orgIds != null and orgIds.size > 0">
-                AND pa.manager_org_id IN
-                <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
-            </if>
-        </where>
-    </select>
-    <select id="selectByArchivesName" resultMap="BaseResultMap">
-        <include refid="Base_Column_List"></include>
-        <where>
-            and school_id = #{schoolId}
-            and archives_name = #{archivesName}
-        </where>
-    </select>
-    <select id="queryManagerOrg" resultType="com.qmth.paper.library.business.bean.result.SelectResult">
-        SELECT
-            distinct pa.manager_org_id id, so.name
-        FROM
-            paper_archives pa
-                LEFT JOIN
-            sys_org so ON pa.school_id = so.school_id
-                AND pa.manager_org_id = so.id
-        <where>
-            and pa.school_id = #{schoolId}
-            <if test="semesterId != null">
-                and pa.semester_id = #{semesterId}
-            </if>
-        </where>
-    </select>
-    <select id="pageDetail" resultType="com.qmth.paper.library.business.bean.result.PaperArchivesDetailResult">
-        SELECT
-            pstd.id paperScanTaskDetailId,
-            pstd.bind_count bindCount,
-            bs.student_name studentName,
-            bs.student_code studentCode,
-            so.name belongOrgName,
-            bs.major_name majorName,
-            bs.clazz_name clazzName,
-            pst.scan_task_name scanTaskName,
-            pst.course_code courseCode,
-            pst.course_name courseName,
-            pac.teacher_name teacherName,
-            pac.teach_clazz_name teachClazzName,
-            pst.create_time createTime
-        FROM
-            basic_student bs
-                LEFT JOIN
-            paper_scan_task_detail pstd ON pstd.student_id = bs.id
-                LEFT JOIN
-            paper_scan_task pst ON pst.id = pstd.paper_scan_task_id
-                LEFT JOIN
-            paper_archives_course pac ON pst.paper_archives_id = pac.paper_archives_id
-                    AND pst.course_code = pac.course_code
-                LEFT JOIN
-            sys_org so ON bs.belong_org_id = so.id
-        <where>
-            pst.paper_archives_id = #{paperArchivesId}
-            <if test="paperScanTaskId != null">
-                and pst.id = #{paperScanTaskId}
-            </if>
-            <if test="belongOrgId != null">
-                and bs.belong_org_id = #{belongOrgId}
-            </if>
-            <if test="majorName != null and majorName != ''">
-                and bs.major_name = #{majorName}
-            </if>
-            <if test="clazzName != null and clazzName != ''">
-                and bs.clazz_name = #{clazzName}
-            </if>
-            <if test="courseName != null and courseName != ''">
-                and pst.course_name = #{courseName}
-            </if>
-            <if test="teacherName != null and teacherName != ''">
-                and pac.teacher_name like concat(#{teacherName},'%')
-            </if>
-            <if test="teachClazzName != null and teachClazzName != ''">
-                and pac.teach_clazz_name = #{teachClazzName}
-            </if>
-            <if test="isBind != null">
-                <if test="isBind == true">
-                    and pstd.bind_count > 0
-                </if>
-                <if test="isBind == false">
-                    and pstd.bind_count = 0
-                </if>
-            </if>
-            <if test="param != null and param != ''">
-                and (bs.student_name like concat(#{param},'%') or bs.student_code like concat(#{param},'%'))
-            </if>
-            <if test="minBindCount != null">
-                and pstd.bind_count &gt;= #{minBindCount}
-            </if>
-            <if test="maxBindCount != null">
-                and pstd.bind_count &lt;= #{maxBindCount}
-            </if>
-        </where>
-        order by pst.scan_task_name, bs.student_code
-    </select>
-    <select id="queryManagerUser" resultType="com.qmth.paper.library.business.bean.result.SelectResult">
-        SELECT
-            su.id, su.code, su.real_name name
-        FROM
-            sys_user su
-                JOIN
-            sys_user_role sur ON su.id = sur.user_id
-                JOIN
-            sys_role sr ON sur.role_id = sr.id
-        WHERE
-            su.school_id = #{schoolId} AND sr.type = #{roleType}
-    </select>
-    <select id="listDetail" resultType="com.qmth.paper.library.business.bean.result.PaperArchivesDetailResult">
-        SELECT
-            pstd.id paperScanTaskDetailId,
-            bs.student_name studentName,
-            bs.student_code studentCode,
-            so.name belongOrgName,
-            bs.major_name majorName,
-            bs.clazz_name clazzName,
-            pst.course_code courseCode,
-            pst.course_name courseName,
-            pac.teacher_name teacherName,
-            pac.teach_clazz_name teachClazzName,
-            pst.create_time createTime
-        FROM
-            paper_scan_task pst
-                LEFT JOIN
-            paper_scan_task_detail pstd ON pst.id = pstd.paper_scan_task_id
-                LEFT JOIN
-            basic_student bs ON pstd.student_id = bs.id
-                LEFT JOIN
-            paper_archives_course pac ON pst.paper_archives_id = pac.paper_archives_id
-                    AND pst.course_code = pac.course_code
-                LEFT JOIN
-            sys_org so ON bs.belong_org_id = so.id
-        <where>
-            <if test="ids != null and ids.size > 0">
-                AND pstd.id IN
-                <foreach collection="ids" item="item" index="index" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
-            </if>
-        </where>
-    </select>
-</mapper>

+ 38 - 161
paper-library-business/src/main/resources/mapper/PaperLibraryMapper.xml

@@ -4,15 +4,12 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.qmth.paper.library.business.entity.PaperLibrary">
         <result column="id" property="id"/>
-        <result column="school_id" property="schoolId"/>
-        <result column="path" property="path"/>
         <result column="paper_scan_task_id" property="paperScanTaskId"/>
-        <result column="paper_scan_task_detail_id" property="paperScanTaskDetailId"/>
-        <result column="user_id" property="userId"/>
+        <result column="path" property="path"/>
+        <result column="student_id" property="studentId"/>
         <result column="sequence" property="sequence"/>
-        <result column="abnormal" property="abnormal"/>
-        <result column="abnormal" property="wordsResult"/>
-        <result column="words_result" property="wordsResult"/>
+        <result column="bind_result" property="bindResult"/>
+        <result column="recognize_result" property="recognizeResult"/>
         <result column="create_id" property="createId"/>
         <result column="create_time" property="createTime"/>
         <result column="update_id" property="updateId"/>
@@ -21,171 +18,51 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        select id, school_id, `path`, paper_scan_task_id, paper_scan_task_detail_id, user_id, `sequence`, abnormal,create_id, create_time, update_id, update_time from paper_library
+        select id,
+               `path`,
+               paper_scan_task_id,
+               student_id,
+               `sequence`,
+               bind_result,
+               recognize_result,
+               create_id,
+               create_time,
+               update_id,
+               update_time
+        from paper_library
     </sql>
-
-    <select id="pageBindData" resultType="com.qmth.paper.library.business.bean.result.PaperLibraryResult">
-        SELECT
-            pstd.paper_scan_task_id paperScanTaskId,
-            bs.student_name studentName,
-            bs.student_code studentCode,
-            pst.scan_task_name paperScanTaskName,
-            pst.course_code courseCode,
-            pst.course_name courseName,
-            pstd.update_time createTime,
-            pstd.id paperScanTaskDetailId,
-            pstd.bind_count bindCount
-        FROM
-            paper_scan_task_detail pstd
-                LEFT JOIN
-            paper_scan_task pst
-                ON pstd.paper_scan_task_id = pst.id
-                LEFT JOIN
-            paper_archives pa ON pst.paper_archives_id = pa.id
-                LEFT JOIN
-            basic_student bs ON pstd.school_id = bs.school_id
-                AND pstd.student_id = bs.id
-        <where>
-            <if test="semesterId != null">
-                and pa.semester_id = #{semesterId}
-            </if>
-            <if test="paperArchivesId != null">
-                and pa.id = #{paperArchivesId}
-            </if>
-            <if test="courseCode != null and courseCode != ''">
-                and pst.course_code = #{courseCode}
-            </if>
-            <if test="scanTaskName != null and scanTaskName != ''">
-                and pst.scan_task_name like concat(#{scanTaskName}, '%')
-            </if>
-            and pstd.bind_count > 0
-        </where>
-        order by pstd.update_time desc
-    </select>
-    <select id="countBindData" resultType="java.lang.Integer">
-        SELECT
-            COUNT(1)
-        FROM
-            paper_library pl
+    <select id="countScanStudentCount" resultType="java.lang.Integer">
+        SELECT COUNT(distinct pl.student_id)
+        FROM paper_library pl
         where pl.paper_scan_task_id = #{paperScanTaskId}
-            and pl.paper_scan_task_detail_id is not null
-            and pl.abnormal = false
-    </select>
-    <select id="pageAbnormalData" resultType="com.qmth.paper.library.business.bean.result.PaperLibraryResult">
-        select pl.id,
-            pl.school_id school_id,
-            pl.`path`,
-            pl.paper_scan_task_id paperScanTaskId,
-            pl.paper_scan_task_detail_id paperScanTaskDetailId,
-            pl.user_id userId,
-            pl.`sequence`,
-            pl.abnormal,
-            pl.create_id createId,
-            pl.create_time createTime,
-            pl.update_id updateId,
-            pl.update_time updateTime,
-            su.login_name loginName
-        from paper_library pl
-            left join sys_user su on pl.user_id = su.id
-        <where>
-            pl.paper_scan_task_detail_id is null and pl.abnormal = true
-            and exists (
-                select 1 from paper_scan_task pst
-                    left join paper_archives pa on pst.paper_archives_id = pa.id
-                    <where>
-                        <if test="semesterId != null">
-                            and pa.semester_id = #{semesterId}
-                        </if>
-                        <if test="paperArchivesId != null">
-                            and pa.id = #{paperArchivesId}
-                        </if>
-                        <if test="courseCode != null and courseCode != ''">
-                            and pst.course_code = #{courseCode}
-                        </if>
-                        <if test="scanTaskName != null and scanTaskName != ''">
-                            and pst.scan_task_name like concat(#{scanTaskName}, '%')
-                        </if>
-                    </where>
-            )
-            <if test="isMatch == true">
-                and (pl.user_id is null or pl.user_id = #{userId})
-            </if>
-            <if test="isMatch == false and listSubOrgIds != null">
-                and su.org_id in
-                <foreach collection="listSubOrgIds" open="(" close=")" separator="," item="item">
-                    #{item}
-                </foreach>
-            </if>
-        </where>
-    </select>
-    <select id="listUnBindData" resultMap="BaseResultMap">
-        <include refid="Base_Column_List"></include>
-        <where>
-             paper_scan_task_id = #{paperScanTaskId}
-             and user_id is null
-             and abnormal = false
-        </where>
-        ORDER BY sequence, create_time
-    </select>
-    <select id="selectBatchData" resultMap="BaseResultMap">
-        <include refid="Base_Column_List"></include>
-        <where>
-            paper_scan_task_id = #{paperScanTaskId}
-            AND user_id = #{userId}
-            AND paper_scan_task_detail_id is null
-            AND abnormal = false
-            order by sequence, create_time
-            limit 10
-        </where>
     </select>
     <select id="listByStudentCode" resultType="com.qmth.paper.library.business.bean.result.TaskStudentResult">
         SELECT
-            bs.id studentId,
-            bs.student_name studentName,
-            bs.student_code studentCode,
-            bs.major_name majorName,
-            bs.clazz_name clazzName
+            es.id studentId,
+            es.course_code courseCode,
+            es.course_name courseName,
+            es.student_name studentName,
+            es.student_code studentCode,
+            es.bind_count bindCount
         FROM
-            basic_student bs
+            exam_student es
         <where>
-            <if test="schoolId != null">
-                and bs.school_id = #{schoolId}
-            </if>
-            <if test="param != null and param != ''">
-                and (bs.student_code like concat('%', #{param}, '%') or bs.student_name like concat('%', #{param}, '%'))
+            <if test="examId != null">
+                and es.exam_id = #{examId}
             </if>
-        </where>
-    </select>
-    <select id="pageStudent" resultType="com.qmth.paper.library.business.bean.result.TaskStudentResult">
-        SELECT
-            pstd.id paperScanTaskDetailId,
-            pst.scan_task_name paperScanTaskName,
-            pst.course_code courseCode,
-            pst.course_name courseName,
-            bs.student_name studentName,
-            bs.student_code studentCode,
-            bs.major_name majorName,
-            bs.clazz_name clazzName,
-            pstd.bind_count bindCount
-        FROM
-            paper_scan_task_detail pstd
-        LEFT JOIN
-            paper_scan_task pst ON pstd.paper_scan_task_id = pst.id
-        LEFT JOIN
-            basic_student bs ON pstd.student_id = bs.id
-        <where>
-            <if test="paperScanTaskId != null">
-                and pstd.paper_scan_task_id = #{paperScanTaskId}
+            <if test="courseCode != null and courseCode != ''">
+                and es.course_code = #{courseCode}
             </if>
-            <if test="param != null and param != ''">
-                and (bs.student_name like  concat('%', #{param}, '%') or bs.student_code like  concat('%', #{param}, '%'))
+            <if test="studentCode != null and studentCode != ''">
+                and es.student_code like concat(#{param}, '%')
             </if>
         </where>
     </select>
-    <select id="countByPaperScanTaskDetailId" resultType="java.lang.Integer">
-        select count(1) from paper_library where paper_scan_task_detail_id = #{paperScanTaskDetailId}
-    </select>
-    <select id="maxSequence" resultType="java.lang.Integer">
-        select max(sequence) from paper_library where paper_scan_task_id = #{paperScanTaskId} and sequence is not null
+    <select id="listMaxSequenceByPaperScanTaskId" resultType="java.util.Map">
+        select es.id studentId, es.student_code studentCode, max(pl.sequence) maxSequence
+        from paper_library pl
+                 join exam_student es on pl.student_id = es.id
+        where pl.paper_scan_task_id = #{paperScanTaskId}
+        group by es.id, es.student_code
     </select>
 </mapper>

+ 17 - 0
paper-library-business/src/main/resources/mapper/PaperLibraryOtherMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.paper.library.business.mapper.PaperLibraryOtherMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qmth.paper.library.business.entity.PaperLibraryOther">
+        <id column="id" property="id" />
+        <result column="paper_scan_task_id" property="paperScanTaskId" />
+        <result column="path" property="path" />
+        <result column="sequence" property="sequence" />
+        <result column="create_id" property="createId" />
+        <result column="create_time" property="createTime" />
+        <result column="update_id" property="updateId" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>

+ 0 - 4
paper-library-business/src/main/resources/mapper/PaperScanTaskDetailMapper.xml

@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.qmth.paper.library.business.mapper.PaperScanTaskDetailMapper">
-</mapper>

+ 19 - 173
paper-library-business/src/main/resources/mapper/PaperScanTaskMapper.xml

@@ -6,202 +6,48 @@
         SELECT
             pst.id AS paperScanTaskId,
             pst.school_id AS schoolId,
-            pst.scan_task_name AS scanTaskName,
+            bs.name semesterName,
+            be.name examName,
             pst.course_code AS courseCode,
             pst.course_name AS courseName,
-            pst.scan_user_id AS scanUserId,
             pst.student_count AS studentCount,
-            pa.id AS paperArchivesId,
-            pa.archives_name AS archivesName,
-            pa.archives_code AS archivesCode,
             pst.scan_count AS scanCount,
-            pst.bind_count AS bindCount,
-            pst.progress AS bindProgress,
-            su.login_name AS scanUserName,
-            su1.login_name checkUserName
+            pst.scan_student_count AS scanStudentCount
         FROM
             paper_scan_task pst
-                LEFT JOIN
-            paper_archives pa ON pst.paper_archives_id = pa.id
-                LEFT JOIN
-            sys_user su ON pst.scan_user_id = su.id
-                LEFT JOIN
-            sys_user su1 ON pst.check_user_id = su1.id
+                left join
+            basic_exam be on pst.exam_id = be.id
+                left join
+            basic_semester bs on be.semester_id = bs.id
         <where>
-            <if test="schoolId != null">
-                AND pst.school_id = #{schoolId}
-            </if>
-            <if test="semesterId != null">
-                AND pa.semester_id = #{semesterId}
-            </if>
-            <if test="paperArchivesId != null">
-                AND pa.id = #{paperArchivesId}
+            <if test="examId != null">
+                AND pst.exam_id = #{examId}
             </if>
             <if test="courseCode != null and courseCode != ''">
                 AND pst.course_code = #{courseCode}
             </if>
-            <if test="scanTaskName != null and scanTaskName != ''">
-                AND (pst.scan_task_name like concat(#{scanTaskName},'%') or pst.scan_task_code like concat(#{scanTaskName},'%'))
-            </if>
-            <if test="scanUser != null and scanUser != ''">
-                AND su.login_name like concat(#{scanUser},'%')
-            </if>
-            <if test="checkUser != null and checkUser != ''">
-                AND su1.login_name like concat(#{checkUser},'%')
-            </if>
-            <if test="smallerProgress != null">
-                AND pst.progress >= #{smallerProgress}
-            </if>
-            <if test="largerProgress != null">
-                AND #{largerProgress} >= pst.progress
-            </if>
         </where>
     </select>
 
     <select id="findPaperScanTaskDetailPageByScanTaskId"
             resultType="com.qmth.paper.library.business.bean.result.PaperScanTaskDetailResult">
         SELECT
-            bs.student_name AS studentName,
-            bs.student_code AS studentCode,
-            pst.course_code AS courseCode,
-            pst.course_name AS courseName,
-            pac.teacher_name AS teacherName,
-            pac.teach_clazz_name AS teachClazzName,
-            pstd.bind_count AS bindCount
+            es.student_name,
+            es.student_code,
+            es.course_code,
+            es.course_name,
+            es.teacher,
+            es.teach_class,
+            es.bind_count
         FROM
             paper_scan_task pst
                 LEFT JOIN
-            paper_scan_task_detail pstd ON pst.id = pstd.paper_scan_task_id
-                LEFT JOIN
-            basic_student bs ON bs.id = pstd.student_id
-                LEFT JOIN
-            paper_archives_course pac ON pst.paper_archives_id = pac.paper_archives_id
-                    AND pst.course_code = pac.course_code
+            exam_student es ON pst.exam_id = es.exam_id and pst.course_code = es.course_code
         <where>
-            <if test="schoolId != null">
-                AND pst.school_id = #{schoolId}
-            </if>
             <if test="paperScanTaskId != null">
-                AND pstd.paper_scan_task_id = #{paperScanTaskId}
-            </if>
-        </where>
-        ORDER BY bs.student_code
-    </select>
-
-    <select id="findBindDetailByScanTaskId"
-            resultType="com.qmth.paper.library.business.bean.result.BindDetailResult">
-        SELECT
-            su.real_name AS bindUserName,
-            pl.user_id AS bindUserId,
-            pl.total_count AS totalCount,
-            pl.bound AS boundCount,
-            pl.binding AS bindingCount
-        FROM
-            (SELECT
-                 user_id,
-                 COUNT(*) AS total_count,
-                 SUM(IF(paper_scan_task_detail_id IS NULL, 0, 1)) AS bound,
-                 SUM(IF(paper_scan_task_detail_id IS NULL, 1, 0)) AS binding
-             FROM
-                 paper_library
-             <where>
-                 paper_scan_task_id = #{paperScanTaskId}
-                 and user_id is not null
-             </where>
-             GROUP BY user_id) pl
-                LEFT JOIN
-            sys_user su ON pl.user_id = su.id
-    </select>
-    <select id="queryCourse" resultType="com.qmth.paper.library.business.bean.result.SelectResult">
-        SELECT
-            distinct pst.course_code code, pst.course_name name
-        FROM
-            paper_scan_task pst
-                LEFT JOIN
-            paper_archives pa ON pst.school_id = pa.school_id
-                AND pst.paper_archives_id = pa.id
-        <where>
-            <if test="semesterId != null">
-                and pa.semester_id = #{semesterId}
-            </if>
-            <if test="paperArchivesId != null">
-                and pst.paper_archives_id = #{paperArchivesId}
-            </if>
-
-        </where>
-    </select>
-    <select id="queryDataTeachClazz" resultType="com.qmth.paper.library.business.bean.result.SelectResult">
-        SELECT
-            distinct pac.teach_clazz_name code, pac.teach_clazz_name name
-        FROM
-            paper_archives_course pac
-        <where>
-            <if test="paperArchivesId != null">
-                and pac.paper_archives_id = #{paperArchivesId}
-            </if>
-            <if test="courseCode != null and courseCode != ''">
-                and pac.course_code = #{courseCode}
-            </if>
-        </where>
-    </select>
-    <select id="getByPaperScanTaskId"
-            resultType="com.qmth.paper.library.business.bean.result.PaperScanTaskResult">
-        SELECT
-            pst.id paperScanTaskId,
-            pst.scan_task_name paperScanTaskName,
-            pst.course_code courseCode,
-            pst.course_name courseName,
-            pa.archives_name paperArchivesName,
-            bs.name semesterName
-        FROM
-            paper_scan_task pst
-                LEFT JOIN
-            paper_archives pa ON pst.paper_archives_id = pa.id
-                LEFT JOIN
-            basic_semester bs ON pa.semester_id = bs.id
-        where pst.id = #{paperScanTaskId}
-    </select>
-    <select id="pageUnbindData" resultType="com.qmth.paper.library.business.bean.result.PaperScanTaskResult">
-        SELECT
-        pst.id AS paperScanTaskId,
-        pst.school_id AS schoolId,
-        pst.scan_task_name AS scanTaskName,
-        pst.course_code AS courseCode,
-        pst.course_name AS courseName,
-        pst.check_user_id AS checkUserId,
-        pst.student_count AS studentCount,
-        pa.id AS paperArchivesId,
-        pa.archives_name AS archivesName,
-        pa.archives_code AS archivesCode,
-        IFNULL(pst.scan_count, 0) AS scanCount,
-        IFNULL(pst.bind_count, 0) AS bindCount,
-        IFNULL(pst.abnormal_count, 0) AS abnormalCount,
-        IFNULL(pst.progress, 0) AS bindProgress,
-        su.login_name checkUserName
-        FROM
-            paper_scan_task pst
-        LEFT JOIN
-            paper_archives pa ON pst.paper_archives_id = pa.id
-        LEFT JOIN
-            sys_user su ON pst.check_user_id = su.id
-        <where>
-            <if test="schoolId != null">
-                AND pst.school_id = #{schoolId}
-            </if>
-            <if test="semesterId != null">
-                AND pa.semester_id = #{semesterId}
-            </if>
-            <if test="paperArchivesId != null">
-                AND pa.id = #{paperArchivesId}
-            </if>
-            <if test="courseCode != null and courseCode != ''">
-                AND pst.course_code = #{courseCode}
-            </if>
-            <if test="scanTaskName != null and scanTaskName != ''">
-                AND pst.scan_task_name like concat(#{scanTaskName}, '%')
+                AND pst.id = #{paperScanTaskId}
             </if>
-            and (pst.check_user_id is null or (pst.check_user_id = #{userId} and (pst.scan_count - pst.bind_count - pst.abnormal_count) > 0))
         </where>
-        order by pst.create_time
+        ORDER BY es.student_code
     </select>
 </mapper>

+ 18 - 6
paper-library-common/pom.xml

@@ -30,6 +30,10 @@
             <groupId>com.qmth.boot</groupId>
             <artifactId>tools-device</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.qmth.boot</groupId>
+            <artifactId>tools-poi</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.qmth.boot</groupId>
             <artifactId>core-solar</artifactId>
@@ -102,13 +106,17 @@
             <groupId>com.qmth.boot</groupId>
             <artifactId>data-mybatis-plus</artifactId>
         </dependency>
+<!--        <dependency>-->
+<!--            <groupId>io.springfox</groupId>-->
+<!--            <artifactId>springfox-swagger2</artifactId>-->
+<!--        </dependency>-->
+<!--        <dependency>-->
+<!--            <groupId>io.springfox</groupId>-->
+<!--            <artifactId>springfox-swagger-ui</artifactId>-->
+<!--        </dependency>-->
         <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger2</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger-ui</artifactId>
+            <groupId>com.github.xiaoymin</groupId>
+            <artifactId>knife4j-spring-boot-starter</artifactId>
         </dependency>
         <dependency>
             <groupId>com.aliyun.oss</groupId>
@@ -180,5 +188,9 @@
             <groupId>com.google.zxing</groupId>
             <artifactId>core</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.aventrix.jnanoid</groupId>
+            <artifactId>jnanoid</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 0 - 15
paper-library-common/src/main/java/com/qmth/paper/library/common/annotation/ExcelDBFieldDesc.java

@@ -1,15 +0,0 @@
-package com.qmth.paper.library.common.annotation;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * @Description: excel导入考务数据数据库必填属性描述
- * @Author: CaoZixuan
- * @Date: 2021-04-26
- */
-@Retention(RetentionPolicy.RUNTIME) //定义注解运行策略
-public @interface ExcelDBFieldDesc {
-    String name(); //属性名称
-    int length() default 0; //属性接收长度限制默认0,为0的不校验长度
-}

+ 0 - 64
paper-library-common/src/main/java/com/qmth/paper/library/common/base/BaseListPage.java

@@ -1,64 +0,0 @@
-package com.qmth.paper.library.common.base;
-
-import io.swagger.annotations.ApiModelProperty;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * @Description: 分页封装
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2020/8/7
- */
-public class BaseListPage<T> implements Serializable {
-    @ApiModelProperty(value = "当前第几页(从1开始)")
-    private int current;
-
-    @ApiModelProperty(value = "每页条数")
-    private int size;
-
-    @ApiModelProperty(value = "总条数")
-    private int total;
-
-    @ApiModelProperty(value = "内容列表")
-    private List<T> records;
-
-    public BaseListPage(List<T> records, long current, long size, long total) {
-        this.current = (int) current;
-        this.size = (int) size;
-        this.total = (int) total;
-        this.records = records;
-    }
-
-    public int getCurrent() {
-        return current;
-    }
-
-    public int getSize() {
-        return size;
-    }
-
-    public int getTotal() {
-        return total;
-    }
-
-    public List<T> getRecords() {
-        return records;
-    }
-
-    /**
-     * 总页数
-     */
-    public int getPages() {
-        if (getSize() == 0) {
-            return 0;
-        }
-        int pages = getTotal() / getSize();
-        if (getTotal() % getSize() != 0) {
-            pages++;
-        }
-        return pages;
-    }
-}

+ 0 - 54
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/BlurryUserDto.java

@@ -1,54 +0,0 @@
-package com.qmth.paper.library.common.bean.dto;
-
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-
-/**
- * @Date: 2021/3/31.
- */
-public class BlurryUserDto {
-
-    @JsonSerialize(using = ToStringSerializer.class)
-    private Long id;
-    private String loginName;
-    private String name;
-
-    public BlurryUserDto() {
-
-    }
-
-    public BlurryUserDto(Long id, String name) {
-        this.id = id;
-        this.name = name;
-    }
-
-    public BlurryUserDto(Long id, String loginName, String name) {
-        this.id = id;
-        this.loginName = loginName;
-        this.name = name;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getLoginName() {
-        return loginName;
-    }
-
-    public void setLoginName(String loginName) {
-        this.loginName = loginName;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-}

+ 0 - 27
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/CourseInfoDto.java

@@ -1,27 +0,0 @@
-package com.qmth.paper.library.common.bean.dto;
-
-/**
- * @Description: 根据用户账号和用户名称查询他可命题的课程
- * @Author: CaoZixuan
- * @Date: 2021-04-22
- */
-public class CourseInfoDto {
-    private String courseCode;
-    private String courseName;
-
-    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;
-    }
-}

+ 0 - 82
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/LoginDto.java

@@ -1,82 +0,0 @@
-package com.qmth.paper.library.common.bean.dto;
-
-import java.util.List;
-
-/**
- * @Date: 2021/4/2.
- */
-public class LoginDto {
-
-    private String id;
-    private String schoolId;
-    private String loginName;
-    private String realName;
-    private String orgId;
-    private Boolean enable;
-    private List<String> roles;
-    private Long pwdUpdateTime;
-
-    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 getLoginName() {
-        return loginName;
-    }
-
-    public void setLoginName(String loginName) {
-        this.loginName = loginName;
-    }
-
-    public String getRealName() {
-        return realName;
-    }
-
-    public void setRealName(String realName) {
-        this.realName = realName;
-    }
-
-    public String getOrgId() {
-        return orgId;
-    }
-
-    public void setOrgId(String orgId) {
-        this.orgId = orgId;
-    }
-
-    public Boolean getEnable() {
-        return enable;
-    }
-
-    public void setEnable(Boolean enable) {
-        this.enable = enable;
-    }
-
-    public List<String> getRoles() {
-        return roles;
-    }
-
-    public void setRoles(List<String> roles) {
-        this.roles = roles;
-    }
-
-    public Long getPwdUpdateTime() {
-        return pwdUpdateTime;
-    }
-
-    public void setPwdUpdateTime(Long pwdUpdateTime) {
-        this.pwdUpdateTime = pwdUpdateTime;
-    }
-}

+ 0 - 122
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/SysRolePrivilegeDto.java

@@ -1,122 +0,0 @@
-package com.qmth.paper.library.common.bean.dto;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.paper.library.common.enums.PrivilegeEnum;
-import io.swagger.annotations.ApiModelProperty;
-
-import java.io.Serializable;
-
-/**
- * @Description: 修改角色privilege
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2021/10/29
- */
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class SysRolePrivilegeDto implements Serializable {
-
-    @ApiModelProperty(value = "角色权限id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    Long rolePrivilegeId;
-
-    @ApiModelProperty(value = "学校名称")
-    String schoolName;
-
-    @ApiModelProperty(value = "学校编码")
-    String schoolCode;
-
-    @ApiModelProperty(value = "角色id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    Long roleId;
-
-    @ApiModelProperty(value = "角色名称")
-    String roleName;
-
-    @ApiModelProperty(value = "权限id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    Long privilegeId;
-
-    @ApiModelProperty(value = "权限名称")
-    String privilegeName;
-
-    @ApiModelProperty(value = "权限url")
-    String privilegeUrl;
-
-    @ApiModelProperty(value = "权限类别")
-    PrivilegeEnum privilegeType;
-
-    public Long getRolePrivilegeId() {
-        return rolePrivilegeId;
-    }
-
-    public void setRolePrivilegeId(Long rolePrivilegeId) {
-        this.rolePrivilegeId = rolePrivilegeId;
-    }
-
-    public String getSchoolName() {
-        return schoolName;
-    }
-
-    public void setSchoolName(String schoolName) {
-        this.schoolName = schoolName;
-    }
-
-    public String getSchoolCode() {
-        return schoolCode;
-    }
-
-    public void setSchoolCode(String schoolCode) {
-        this.schoolCode = schoolCode;
-    }
-
-    public Long getRoleId() {
-        return roleId;
-    }
-
-    public void setRoleId(Long roleId) {
-        this.roleId = roleId;
-    }
-
-    public String getRoleName() {
-        return roleName;
-    }
-
-    public void setRoleName(String roleName) {
-        this.roleName = roleName;
-    }
-
-    public Long getPrivilegeId() {
-        return privilegeId;
-    }
-
-    public void setPrivilegeId(Long privilegeId) {
-        this.privilegeId = privilegeId;
-    }
-
-    public String getPrivilegeName() {
-        return privilegeName;
-    }
-
-    public void setPrivilegeName(String privilegeName) {
-        this.privilegeName = privilegeName;
-    }
-
-    public String getPrivilegeUrl() {
-        return privilegeUrl;
-    }
-
-    public void setPrivilegeUrl(String privilegeUrl) {
-        this.privilegeUrl = privilegeUrl;
-    }
-
-    public PrivilegeEnum getPrivilegeType() {
-        return privilegeType;
-    }
-
-    public void setPrivilegeType(PrivilegeEnum privilegeType) {
-        this.privilegeType = privilegeType;
-    }
-}

+ 0 - 48
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/TaskPrintClassDto.java

@@ -1,48 +0,0 @@
-package com.qmth.paper.library.common.bean.dto;
-
-import com.qmth.paper.library.common.enums.TeachBasicEnum;
-
-/**
- * @Date: 2021/3/29.
- */
-public class TaskPrintClassDto {
-
-    private String classId;
-    private String className;
-//    private String printHouseId;
-//    private String printHouseName;
-    private Integer studentCount;
-    private TeachBasicEnum teachBasicEnum;
-
-    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 Integer getStudentCount() {
-        return studentCount;
-    }
-
-    public void setStudentCount(Integer studentCount) {
-        this.studentCount = studentCount;
-    }
-
-    public TeachBasicEnum getTeachBasicEnum() {
-        return teachBasicEnum;
-    }
-
-    public void setTeachBasicEnum(TeachBasicEnum teachBasicEnum) {
-        this.teachBasicEnum = teachBasicEnum;
-    }
-}

+ 0 - 46
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/UserAuthenticationDto.java

@@ -1,46 +0,0 @@
-package com.qmth.paper.library.common.bean.dto;
-
-import io.swagger.annotations.ApiModelProperty;
-
-import java.io.Serializable;
-
-/**
- * @Description: 临时授权码
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2021/6/29
- */
-public class UserAuthenticationDto implements Serializable {
-
-    @ApiModelProperty("uid")
-    private String uid;
-
-    @ApiModelProperty("临时授权码")
-    private String code;
-
-    public UserAuthenticationDto() {
-
-    }
-
-    public UserAuthenticationDto(String uid, String code) {
-        this.uid = uid;
-        this.code = code;
-    }
-
-    public String getUid() {
-        return uid;
-    }
-
-    public void setUid(String uid) {
-        this.uid = uid;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-}

+ 0 - 10
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/UserDto.java

@@ -1,6 +1,5 @@
 package com.qmth.paper.library.common.bean.dto;
 
-import com.qmth.paper.library.common.entity.BasicCourse;
 import com.qmth.paper.library.common.entity.SysRole;
 
 import java.util.List;
@@ -21,7 +20,6 @@ public class UserDto {
     private String orgName;
     private String code;
     private List<SysRole> roles;
-    private List<BasicCourse> courses;
 
     public void setCode(String code) {
         this.code = code;
@@ -99,14 +97,6 @@ public class UserDto {
         this.roles = roles;
     }
 
-    public List<BasicCourse> getCourses() {
-        return courses;
-    }
-
-    public void setCourses(List<BasicCourse> courses) {
-        this.courses = courses;
-    }
-
     public String getOrgName() {
         return orgName;
     }

+ 0 - 63
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/stmms/ExamCloudPaperStructDto.java

@@ -1,63 +0,0 @@
-package com.qmth.paper.library.common.bean.dto.stmms;
-
-/**
- * @Description: 云阅卷试卷结构
- * @Author: CaoZixuan
- * @Date: 2022-07-08
- */
-public class ExamCloudPaperStructDto {
-    private Boolean objective;
-    private String mainTitle;
-    private Integer mainNumber;
-    private Integer subNumber;
-    private Double totalScore;
-    private String answer;
-
-    public Boolean getObjective() {
-        return objective;
-    }
-
-    public void setObjective(Boolean objective) {
-        this.objective = objective;
-    }
-
-    public String getMainTitle() {
-        return mainTitle;
-    }
-
-    public void setMainTitle(String mainTitle) {
-        this.mainTitle = mainTitle;
-    }
-
-    public Integer getMainNumber() {
-        return mainNumber;
-    }
-
-    public void setMainNumber(Integer mainNumber) {
-        this.mainNumber = mainNumber;
-    }
-
-    public Integer getSubNumber() {
-        return subNumber;
-    }
-
-    public void setSubNumber(Integer subNumber) {
-        this.subNumber = subNumber;
-    }
-
-    public Double getTotalScore() {
-        return totalScore;
-    }
-
-    public void setTotalScore(Double totalScore) {
-        this.totalScore = totalScore;
-    }
-
-    public String getAnswer() {
-        return answer;
-    }
-
-    public void setAnswer(String answer) {
-        this.answer = answer;
-    }
-}

+ 0 - 46
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/stmms/GroupDTO.java

@@ -1,46 +0,0 @@
-package com.qmth.paper.library.common.bean.dto.stmms;
-
-import java.util.List;
-
-public class GroupDTO {
-    //是 考试ID
-    private Integer examId;
-    //是 科目代码
-    private String subjectCode;
-    //是 试评数量
-    private Integer trialCount;
-
-    List<GroupDetailDTO> groups;
-
-    public Integer getExamId() {
-        return examId;
-    }
-
-    public void setExamId(Integer examId) {
-        this.examId = examId;
-    }
-
-    public String getSubjectCode() {
-        return subjectCode;
-    }
-
-    public void setSubjectCode(String subjectCode) {
-        this.subjectCode = subjectCode;
-    }
-
-    public Integer getTrialCount() {
-        return trialCount;
-    }
-
-    public void setTrialCount(Integer trialCount) {
-        this.trialCount = trialCount;
-    }
-
-    public List<GroupDetailDTO> getGroups() {
-        return groups;
-    }
-
-    public void setGroups(List<GroupDetailDTO> groups) {
-        this.groups = groups;
-    }
-}

+ 0 - 86
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/stmms/GroupDetailDTO.java

@@ -1,86 +0,0 @@
-package com.qmth.paper.library.common.bean.dto.stmms;
-
-import java.util.List;
-
-public class GroupDetailDTO {
-    //是 分组序号
-    private Integer number;
-    //否
-    private List<PicConfig> picConfig;
-    //是 双评比例 0关闭,1开启
-    private Double doubleRate;
-    //否 仲裁阈值 开启双评是必填
-    private Double arbitrateThreshold;
-    //否 合分策略 开启双评是必填 AVG("平均分", 1), MAX("最高分", 2), MIN("最低分", 3)
-    private Integer scorePolicy;
-    //否 允许全零分
-    private Boolean enableAllZero;
-    //否 评卷模式  COMMON("普通"), TRACK("轨迹")
-    private String markMode;
-    // 题目
-    private List<QuestionBaseDTO> questions;
-
-    public Integer getNumber() {
-        return number;
-    }
-
-    public void setNumber(Integer number) {
-        this.number = number;
-    }
-
-    public List<PicConfig> getPicConfig() {
-        return picConfig;
-    }
-
-    public void setPicConfig(List<PicConfig> picConfig) {
-        this.picConfig = picConfig;
-    }
-
-    public Double getDoubleRate() {
-        return doubleRate;
-    }
-
-    public void setDoubleRate(Double doubleRate) {
-        this.doubleRate = doubleRate;
-    }
-
-    public Double getArbitrateThreshold() {
-        return arbitrateThreshold;
-    }
-
-    public void setArbitrateThreshold(Double arbitrateThreshold) {
-        this.arbitrateThreshold = arbitrateThreshold;
-    }
-
-    public Integer getScorePolicy() {
-        return scorePolicy;
-    }
-
-    public void setScorePolicy(Integer scorePolicy) {
-        this.scorePolicy = scorePolicy;
-    }
-
-    public Boolean getEnableAllZero() {
-        return enableAllZero;
-    }
-
-    public void setEnableAllZero(Boolean enableAllZero) {
-        this.enableAllZero = enableAllZero;
-    }
-
-    public String getMarkMode() {
-        return markMode;
-    }
-
-    public void setMarkMode(String markMode) {
-        this.markMode = markMode;
-    }
-
-    public List<QuestionBaseDTO> getQuestions() {
-        return questions;
-    }
-
-    public void setQuestions(List<QuestionBaseDTO> questions) {
-        this.questions = questions;
-    }
-}

+ 0 - 60
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/stmms/PaperDTO.java

@@ -1,60 +0,0 @@
-package com.qmth.paper.library.common.bean.dto.stmms;
-
-import java.util.List;
-
-public class PaperDTO {
-
-    private Integer examId;
-
-    private String subjectCode;
-
-    private String paperType;
-
-    private Boolean objective;
-
-    private List<QuestionDTO> questions;
-
-    public PaperDTO() {
-    }
-
-    public Integer getExamId() {
-        return examId;
-    }
-
-    public void setExamId(Integer examId) {
-        this.examId = examId;
-    }
-
-    public String getSubjectCode() {
-        return subjectCode;
-    }
-
-    public void setSubjectCode(String subjectCode) {
-        this.subjectCode = subjectCode;
-    }
-
-    public String getPaperType() {
-        return paperType;
-    }
-
-    public void setPaperType(String paperType) {
-        this.paperType = paperType;
-    }
-
-    public Boolean getObjective() {
-        return objective;
-    }
-
-    public void setObjective(Boolean objective) {
-        this.objective = objective;
-    }
-
-    public List<QuestionDTO> getQuestions() {
-        return questions;
-    }
-
-    public void setQuestions(List<QuestionDTO> questions) {
-        this.questions = questions;
-    }
-
-}

+ 0 - 54
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/stmms/PicConfig.java

@@ -1,54 +0,0 @@
-package com.qmth.paper.library.common.bean.dto.stmms;
-
-public class PicConfig {
-    //i图片序号
-    private Integer i;
-    //x左上角X坐标
-    private Integer x;
-    //x左上角y坐标
-    private Integer y;
-    //w裁切区宽度
-    private Integer w;
-    //h裁切区高度
-    private Integer h;
-
-    public Integer getI() {
-        return i;
-    }
-
-    public void setI(Integer i) {
-        this.i = i;
-    }
-
-    public Integer getX() {
-        return x;
-    }
-
-    public void setX(Integer x) {
-        this.x = x;
-    }
-
-    public Integer getY() {
-        return y;
-    }
-
-    public void setY(Integer y) {
-        this.y = y;
-    }
-
-    public Integer getW() {
-        return w;
-    }
-
-    public void setW(Integer w) {
-        this.w = w;
-    }
-
-    public Integer getH() {
-        return h;
-    }
-
-    public void setH(Integer h) {
-        this.h = h;
-    }
-}

+ 0 - 25
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/stmms/QuestionBaseDTO.java

@@ -1,25 +0,0 @@
-package com.qmth.paper.library.common.bean.dto.stmms;
-
-public class QuestionBaseDTO {
-
-    private Integer mainNumber;
-
-    private String subNumber;
-
-    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;
-    }
-
-}

+ 0 - 35
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/stmms/QuestionDTO.java

@@ -1,35 +0,0 @@
-package com.qmth.paper.library.common.bean.dto.stmms;
-
-public class QuestionDTO extends QuestionBaseDTO {
-
-    private String mainTitle;
-
-    private String answer;
-
-    private Double totalScore;
-
-    public String getMainTitle() {
-        return mainTitle;
-    }
-
-    public void setMainTitle(String mainTitle) {
-        this.mainTitle = mainTitle;
-    }
-
-    public String getAnswer() {
-        return answer;
-    }
-
-    public void setAnswer(String answer) {
-        this.answer = answer;
-    }
-
-    public Double getTotalScore() {
-        return totalScore;
-    }
-
-    public void setTotalScore(Double totalScore) {
-        this.totalScore = totalScore;
-    }
-
-}

+ 14 - 1
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/syssetting/SimpleObject.java

@@ -1,5 +1,7 @@
 package com.qmth.paper.library.common.bean.dto.syssetting;
 
+import java.util.List;
+
 public class SimpleObject {
 
     private String code;
@@ -12,15 +14,18 @@ public class SimpleObject {
 
     private boolean enable;
 
+    private List<SimpleObjectOptions> options;
+
     public SimpleObject() {
     }
 
-    public SimpleObject(String code, String name, String value, int sort, boolean enable) {
+    public SimpleObject(String code, String name, String value, int sort, boolean enable, List<SimpleObjectOptions> options) {
         this.code = code;
         this.name = name;
         this.value = value;
         this.sort = sort;
         this.enable = enable;
+        this.options = options;
     }
 
     public String getCode() {
@@ -62,4 +67,12 @@ public class SimpleObject {
     public void setEnable(boolean enable) {
         this.enable = enable;
     }
+
+    public List<SimpleObjectOptions> getOptions() {
+        return options;
+    }
+
+    public void setOptions(List<SimpleObjectOptions> options) {
+        this.options = options;
+    }
 }

+ 24 - 0
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/syssetting/SimpleObjectOptions.java

@@ -0,0 +1,24 @@
+package com.qmth.paper.library.common.bean.dto.syssetting;
+
+public class SimpleObjectOptions {
+
+    private String name;
+
+    private Object value;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Object getValue() {
+        return value;
+    }
+
+    public void setValue(Object value) {
+        this.value = value;
+    }
+}

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff