xiaofei 2 éve
szülő
commit
3286a3c251
40 módosított fájl, 640 hozzáadás és 446 törlés
  1. 2 2
      paper-library-business/pom.xml
  2. 60 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/dto/excel/PaperArchivesCourseImportDto.java
  3. 0 22
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/dto/excel/PaperScanTaskImportDto.java
  4. 6 6
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/PaperScanTaskDetailResult.java
  5. 11 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/TaskStudentResult.java
  6. 117 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/entity/PaperArchivesCourse.java
  7. 0 24
      paper-library-business/src/main/java/com/qmth/paper/library/business/entity/PaperScanTaskDetail.java
  8. 13 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperArchivesCourseMapper.java
  9. 1 1
      paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperArchivesMapper.java
  10. 1 1
      paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperLibraryMapper.java
  11. 1 1
      paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/PaperScanTaskMapper.java
  12. 13 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperArchivesCourseService.java
  13. 5 1
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperArchivesService.java
  14. 2 3
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperLibraryService.java
  15. 2 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperScanTaskDetailService.java
  16. 1 3
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperScanTaskService.java
  17. 22 13
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/ClientServiceImpl.java
  18. 18 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperArchivesCourseServiceImpl.java
  19. 115 8
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperArchivesServiceImpl.java
  20. 36 24
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperLibraryServiceImpl.java
  21. 7 0
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperScanTaskDetailServiceImpl.java
  22. 10 105
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperScanTaskServiceImpl.java
  23. 42 120
      paper-library-business/src/main/java/com/qmth/paper/library/business/templete/service/impl/TaskLogicServiceImpl.java
  24. 4 0
      paper-library-business/src/main/resources/mapper/PaperArchivesCourseMapper.xml
  25. 23 12
      paper-library-business/src/main/resources/mapper/PaperArchivesMapper.xml
  26. 8 23
      paper-library-business/src/main/resources/mapper/PaperLibraryMapper.xml
  27. 19 19
      paper-library-business/src/main/resources/mapper/PaperScanTaskMapper.xml
  28. 2 2
      paper-library-common/pom.xml
  29. 0 11
      paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/excel/BasicStudentImportDto.java
  30. 0 5
      paper-library-common/src/main/java/com/qmth/paper/library/common/entity/SysSetting.java
  31. 2 3
      paper-library-common/src/main/java/com/qmth/paper/library/common/service/BasicStudentService.java
  32. 21 12
      paper-library-common/src/main/java/com/qmth/paper/library/common/service/impl/BasicStudentServiceImpl.java
  33. 2 2
      paper-library/pom.xml
  34. 2 2
      paper-library/src/main/java/com/qmth/paper/library/api/ConditionController.java
  35. 12 1
      paper-library/src/main/java/com/qmth/paper/library/api/PaperArchivesController.java
  36. 5 5
      paper-library/src/main/java/com/qmth/paper/library/api/PaperLibraryController.java
  37. 1 10
      paper-library/src/main/java/com/qmth/paper/library/api/PaperScanTaskController.java
  38. 1 1
      pom.xml
  39. 32 0
      sql/1.0.3修改内容.txt
  40. 21 4
      sql/paper_library_db.sql

+ 2 - 2
paper-library-business/pom.xml

@@ -4,7 +4,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.qmth.paper.library.business</groupId>
     <artifactId>paper-library-business</artifactId>
-    <version>1.0.2</version>
+    <version>1.0.3</version>
     <build>
         <plugins>
             <plugin>
@@ -22,7 +22,7 @@
     <parent>
         <groupId>com.qmth.paper.library.service</groupId>
         <artifactId>paper-library-service</artifactId>
-        <version>1.0.2</version>
+        <version>1.0.3</version>
     </parent>
 
     <dependencies>

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

@@ -0,0 +1,60 @@
+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 - 22
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/dto/excel/PaperScanTaskImportDto.java

@@ -25,12 +25,6 @@ public class PaperScanTaskImportDto implements Serializable {
     @NotNull
     private String courseName;
 
-    @ExcelNote(value = "学号")
-    private String studentCode;
-
-    @ExcelNote(value = "姓名")
-    private String studentName;
-
     @ExcelNote(value = "教学班")
     private String teachClazzName;
 
@@ -69,22 +63,6 @@ public class PaperScanTaskImportDto implements Serializable {
         this.teacherName = 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;
     }

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

@@ -27,8 +27,8 @@ public class PaperScanTaskDetailResult implements Serializable {
     @ApiModelProperty(value = "教学班")
     private String teachClazzName;
 
-    @ApiModelProperty(value = "扫描张数")
-    private int scanCount;
+    @ApiModelProperty(value = "绑定张数")
+    private int bindCount;
 
     public String getStudentName() {
         return studentName;
@@ -78,11 +78,11 @@ public class PaperScanTaskDetailResult implements Serializable {
         this.teachClazzName = teachClazzName;
     }
 
-    public int getScanCount() {
-        return scanCount;
+    public int getBindCount() {
+        return bindCount;
     }
 
-    public void setScanCount(int scanCount) {
-        this.scanCount = scanCount;
+    public void setBindCount(int bindCount) {
+        this.bindCount = bindCount;
     }
 }

+ 11 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/TaskStudentResult.java

@@ -33,6 +33,9 @@ public class TaskStudentResult implements Serializable {
     @ApiModelProperty(value = "教学班")
     private String teachClazzName;
 
+    @ApiModelProperty(value = "考生ID")
+    private String studentId;
+
     @ApiModelProperty(value = "姓名")
     private String studentName;
 
@@ -112,6 +115,14 @@ public class TaskStudentResult implements Serializable {
         this.teachClazzName = teachClazzName;
     }
 
+    public String getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(String studentId) {
+        this.studentId = studentId;
+    }
+
     public String getStudentName() {
         return studentName;
     }

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

@@ -0,0 +1,117 @@
+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;
+    }
+}

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

@@ -35,14 +35,6 @@ public class PaperScanTaskDetail extends BaseEntity implements Serializable {
     @TableField("student_id")
     private Long studentId;
 
-    @ApiModelProperty(value = "教学班")
-    @TableField("teach_clazz_name")
-    private String teachClazzName;
-
-    @ApiModelProperty(value = "任课老师")
-    @TableField("teacher_name")
-    private String teacherName;
-
     @ApiModelProperty(value = "绑定图片")
     @TableField("bind_count")
     private Integer bindCount;
@@ -71,22 +63,6 @@ public class PaperScanTaskDetail extends BaseEntity implements Serializable {
         this.studentId = studentId;
     }
 
-    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;
-    }
-
     public Integer getBindCount() {
         return bindCount;
     }

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

@@ -0,0 +1,13 @@
+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> {
+
+}

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

@@ -25,7 +25,7 @@ public interface PaperArchivesMapper extends BaseMapper<PaperArchives> {
 
     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);
+    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);
 

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

@@ -34,7 +34,7 @@ public interface PaperLibraryMapper extends BaseMapper<PaperLibrary> {
 
     List<PaperLibrary> selectBatchData(@Param("paperScanTaskId") Long paperScanTaskId, @Param("userId") Long userId);
 
-    IPage<TaskStudentResult> listByStudentCode(@Param("page") Page<TaskStudentResult> page, @Param("schoolId") Long schoolId, @Param("studentCode") String studentCode);
+    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);
 

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

@@ -71,7 +71,7 @@ public interface PaperScanTaskMapper extends BaseMapper<PaperScanTask> {
 
     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("courseName") String courseName);
+    List<SelectResult> queryDataTeachClazz(@Param("schoolId") Long schoolId, @Param("paperArchivesId") Long paperArchivesId, @Param("courseCode") String courseCode);
 
     PaperScanTaskResult getByPaperScanTaskId(@Param("paperScanTaskId") Long paperScanTaskId);
 

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

@@ -0,0 +1,13 @@
+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> {
+
+}

+ 5 - 1
paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperArchivesService.java

@@ -7,7 +7,9 @@ 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;
 
 /**
@@ -27,9 +29,11 @@ public interface PaperArchivesService extends IService<PaperArchives> {
 
     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 pageNumber, Integer pageSize);
+    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;
 }

+ 2 - 3
paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperLibraryService.java

@@ -6,7 +6,6 @@ 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.entity.PaperLibrary;
-import com.qmth.paper.library.business.entity.PaperScanTask;
 import com.qmth.paper.library.common.enums.RecognitionTypeEnum;
 
 import java.util.List;
@@ -30,7 +29,7 @@ public interface PaperLibraryService extends IService<PaperLibrary> {
 
     int countAbnormalData(Long paperScanTaskId);
 
-    boolean bind(Long paperLibraryId, Long paperScanTaskDetailId);
+    boolean bind(Long paperLibraryId, Long paperScanTaskId, Long studentId);
 
     List<PaperLibraryResult> listStudentPicture(Long paperScanTaskDetailId);
 
@@ -42,7 +41,7 @@ public interface PaperLibraryService extends IService<PaperLibrary> {
 
     int countScanCount(Long paperScanTaskId);
 
-    IPage<TaskStudentResult> pageStudent(Long paperScanTaskId, String param, Boolean globalMatch, Integer pageNumber, Integer pageSize);
+    IPage<TaskStudentResult> pageStudent(Long paperScanTaskId, String param, Integer pageNumber, Integer pageSize);
 
     List<String> recognition(Long paperLibraryId, Integer index, Integer x, Integer y, Integer width, Integer height, Integer rotate, RecognitionTypeEnum type);
 

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

@@ -11,4 +11,6 @@ import com.qmth.paper.library.business.entity.PaperScanTaskDetail;
 public interface PaperScanTaskDetailService extends IService<PaperScanTaskDetail> {
 
     PaperScanTaskDetail getByPaperScanTaskIdAndStudentId(Long paperScanTaskId, Long studentId);
+
+    int countStudent(Long paperScanTaskId);
 }

+ 1 - 3
paper-library-business/src/main/java/com/qmth/paper/library/business/service/PaperScanTaskService.java

@@ -106,7 +106,7 @@ public interface PaperScanTaskService extends IService<PaperScanTask> {
 
     List<SelectResult> queryCourse(Long paperArchivesId, Long semesterId);
 
-    List<SelectResult> queryDataTeachClazz(Long paperArchivesId, String courseName);
+    List<SelectResult> queryDataTeachClazz(Long paperArchivesId, String courseCode);
 
     List<SelectResult> queryScanTask(Long paperArchivesId);
 
@@ -114,8 +114,6 @@ public interface PaperScanTaskService extends IService<PaperScanTask> {
 
     boolean enable(Long paperScanTaskId, Boolean enable);
 
-    void importStudent(Long paperScanTaskId, MultipartFile file) throws IOException;
-
     List<PaperScanTask> getByPaperArchivesIdAndScanTaskName(Long schoolId, Long paperArchivesId, String scanTaskName);
 
     IPage<PaperScanTaskResult> pageUnbindData(Page<PaperScanTaskResult> iPage, Long semesterId, Long paperArchivesId, String courseCode, String scanTaskName);

+ 22 - 13
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/ClientServiceImpl.java

@@ -201,29 +201,38 @@ public class ClientServiceImpl implements ClientService {
                 if (basicStudent != null) {
                     // 根据paper_scan_task_id+student_id查询paper_scan_task_detail_id作绑定
                     PaperScanTaskDetail paperScanTaskDetail = paperScanTaskDetailService.getByPaperScanTaskIdAndStudentId(paperScanTaskId, basicStudent.getId());
-                    if (paperScanTaskDetail != null) {
-                        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);
+                    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);
                 }
                 // 绑定失败,不进异常数据,直接在未处理里,手工绑定
             }
             boolean save = paperLibraryService.save(paperLibrary);
             if (save) {
+                // 学生数量
+                int studentCount = paperScanTaskDetailService.countStudent(paperScanTaskId);
                 // 统计扫描数量
-                int count = paperLibraryService.countScanCount(paperScanTaskId);
+                int scanCount = paperLibraryService.countScanCount(paperScanTaskId);
                 int bindCount = paperLibraryService.countBindData(paperScanTaskId);
                 // 总扫描数
-                Double progress = count == 0 ? 0D :
-                        new BigDecimal(bindCount * 100).divide(new BigDecimal(count), BigDecimal.ROUND_DOWN, 2).doubleValue();
+                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::getScanCount, count)
+                updateWrapper.lambda().set(PaperScanTask::getStudentCount, studentCount)
+                        .set(PaperScanTask::getScanCount, scanCount)
                         .set(PaperScanTask::getBindCount, bindCount)
                         .set(PaperScanTask::getProgress, progress)
                         .eq(PaperScanTask::getId, paperScanTaskId);

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

@@ -0,0 +1,18 @@
+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 {
+
+
+}

+ 115 - 8
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperArchivesServiceImpl.java

@@ -4,31 +4,39 @@ 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.PaperArchives;
-import com.qmth.paper.library.business.entity.PaperLibrary;
-import com.qmth.paper.library.business.entity.PaperScanTask;
+import com.qmth.paper.library.business.entity.*;
 import com.qmth.paper.library.business.mapper.PaperArchivesMapper;
+import com.qmth.paper.library.business.service.PaperArchivesCourseService;
 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.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.util.Arrays;
-import java.util.List;
-import java.util.Set;
+import java.io.IOException;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -39,6 +47,9 @@ import java.util.stream.Collectors;
 @Service
 public class PaperArchivesServiceImpl extends ServiceImpl<PaperArchivesMapper, PaperArchives> implements PaperArchivesService {
 
+    @Resource
+    PaperArchivesCourseService paperArchivesCourseService;
+
     @Resource
     PaperScanTaskService paperScanTaskService;
 
@@ -139,8 +150,8 @@ public class PaperArchivesServiceImpl extends ServiceImpl<PaperArchivesMapper, P
     }
 
     @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 pageNumber, Integer pageSize) {
-        IPage<PaperArchivesDetailResult> detailResultIPage = this.baseMapper.pageDetail(new Page<>(pageNumber, pageSize), paperArchivesId, paperScanTaskId, belongOrgId, majorName, clazzName, courseName, teacherName, teachClazzName, isBind, param);
+    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());
@@ -187,4 +198,100 @@ public class PaperArchivesServiceImpl extends ServiceImpl<PaperArchivesMapper, P
         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("请选择导入文件");
+        }
+    }
+
 }

+ 36 - 24
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperLibraryServiceImpl.java

@@ -19,12 +19,15 @@ 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.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.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.SysUserService;
 import com.qmth.paper.library.common.util.*;
 import org.apache.commons.io.FileUtils;
@@ -66,6 +69,9 @@ public class PaperLibraryServiceImpl extends ServiceImpl<PaperLibraryMapper, Pap
     @Resource
     SysUserService sysUserService;
 
+    @Resource
+    BasicStudentService basicStudentService;
+
     @Resource
     OcrUtil ocrUtil;
 
@@ -77,7 +83,6 @@ public class PaperLibraryServiceImpl extends ServiceImpl<PaperLibraryMapper, Pap
 
     @Override
     public IPage<PaperScanTaskResult> pageUnbindData(Long semesterId, Long paperArchivesId, String courseCode, String scanTaskName, Integer pageNumber, Integer pageSize) {
-//        return this.baseMapper.pageUnbindData(new Page<>(pageNumber, pageSize), paperScanTaskId);
         return paperScanTaskService.pageUnbindData(new Page<>(pageNumber, pageSize), semesterId, paperArchivesId, courseCode, scanTaskName);
     }
 
@@ -111,18 +116,29 @@ public class PaperLibraryServiceImpl extends ServiceImpl<PaperLibraryMapper, Pap
 
     @Transactional
     @Override
-    public boolean bind(Long paperLibraryId, Long paperScanTaskDetailId) {
-        PaperScanTaskDetail paperScanTaskDetail = paperScanTaskDetailService.getById(paperScanTaskDetailId);
-        if (paperScanTaskDetail == null) {
-            throw ExceptionResultEnum.ERROR.exception("绑定对象有误,任务下无该考生,请刷新数据再试");
-        }
+    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.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, paperScanTaskDetailId)
+        updateWrapper.lambda().set(PaperLibrary::getPaperScanTaskDetailId, paperScanTaskDetail.getId())
                 .set(PaperLibrary::getAbnormal, false)
                 .eq(PaperLibrary::getId, paperLibraryId);
         this.update(updateWrapper);
@@ -135,19 +151,22 @@ public class PaperLibraryServiceImpl extends ServiceImpl<PaperLibraryMapper, Pap
             oldPaperScanTaskDetail.setBindCount(count);
             paperScanTaskDetailService.updateById(oldPaperScanTaskDetail);
         }
-        int count = this.baseMapper.countByPaperScanTaskDetailId(paperScanTaskDetailId);
+        int count = this.baseMapper.countByPaperScanTaskDetailId(paperScanTaskDetail.getId());
+        paperScanTaskDetail.setUpdateTime(System.currentTimeMillis());
         paperScanTaskDetail.setBindCount(count);
         paperScanTaskDetailService.updateById(paperScanTaskDetail);
 
         // 任务下所有任务绑定完,更新状态
-        PaperScanTask paperScanTask = paperScanTaskService.getById(paperLibrary.getPaperScanTaskId());
+        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::getBindCount, bindCount)
+        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());
@@ -282,22 +301,15 @@ public class PaperLibraryServiceImpl extends ServiceImpl<PaperLibraryMapper, Pap
     }
 
     @Override
-    public IPage<TaskStudentResult> pageStudent(Long paperScanTaskId, String param, Boolean globalMatch, Integer pageNumber, Integer pageSize) {
+    public IPage<TaskStudentResult> pageStudent(Long paperScanTaskId, String param, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-
-        // 全局匹配考生
-        if (globalMatch) {
-            return this.baseMapper.listByStudentCode(new Page<>(pageNumber, pageSize), schoolId, param);
-        } else {
-            IPage<TaskStudentResult> taskStudentResultIPage = this.baseMapper.pageStudent(new Page<>(pageNumber, pageSize), schoolId, paperScanTaskId, param);
-            for (TaskStudentResult record : taskStudentResultIPage.getRecords()) {
-                QueryWrapper<PaperLibrary> queryWrapper = new QueryWrapper<>();
-                queryWrapper.lambda().eq(PaperLibrary::getPaperScanTaskDetailId, record.getPaperScanTaskDetailId());
-                int count = paperLibraryService.count(queryWrapper);
-                record.setBindCount(count);
-            }
-            return taskStudentResultIPage;
+        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;
     }
 
     @Override

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

@@ -25,4 +25,11 @@ public class PaperScanTaskDetailServiceImpl extends ServiceImpl<PaperScanTaskDet
                 .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);
+    }
 }

+ 10 - 105
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperScanTaskServiceImpl.java

@@ -248,7 +248,7 @@ public class PaperScanTaskServiceImpl extends ServiceImpl<PaperScanTaskMapper, P
                     .collect(Collectors.toList());
 
             if (!cantDeleteList.isEmpty()) {
-                throw ExceptionResultEnum.ERROR.exception("所选的扫描任务已经进行了数据检验,不能删除");
+                throw ExceptionResultEnum.ERROR.exception("扫描任务已经进行了数据检验,不能执行此操作");
             }
 
             // 删除该任务扫描的的数据
@@ -256,6 +256,7 @@ public class PaperScanTaskServiceImpl extends ServiceImpl<PaperScanTaskMapper, P
 
             // 清除扫描量
             paperScanTask.setScanCount(0);
+            paperScanTask.setAbnormalCount(0);
             paperScanTask.updateInfo(requestUser.getId());
             this.updateById(paperScanTask);
         }
@@ -295,6 +296,12 @@ public class PaperScanTaskServiceImpl extends ServiceImpl<PaperScanTaskMapper, P
                 .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
@@ -311,9 +318,9 @@ public class PaperScanTaskServiceImpl extends ServiceImpl<PaperScanTaskMapper, P
     }
 
     @Override
-    public List<SelectResult> queryDataTeachClazz(Long paperArchivesId, String courseName) {
+    public List<SelectResult> queryDataTeachClazz(Long paperArchivesId, String courseCode) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        return this.baseMapper.queryDataTeachClazz(schoolId, paperArchivesId, courseName);
+        return this.baseMapper.queryDataTeachClazz(schoolId, paperArchivesId, courseCode);
     }
 
     @Override
@@ -348,108 +355,6 @@ public class PaperScanTaskServiceImpl extends ServiceImpl<PaperScanTaskMapper, P
         return this.updateById(paperScanTask);
     }
 
-    @Transactional
-    @Override
-    public void importStudent(Long paperScanTaskId, MultipartFile file) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        try {
-            List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(file.getInputStream(), Lists.newArrayList(PaperScanTaskStudentImportDto.class, DescribeImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> finalExcelList);
-            List<PaperScanTaskStudentImportDto> datasource = new ArrayList<>();
-            for (int i = 0; i < finalList.size(); i++) {
-                LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
-                List<Object> paperScanTaskStudentImportDtoList = excelMap.get(i);
-                if (CollectionUtils.isEmpty(paperScanTaskStudentImportDtoList) || paperScanTaskStudentImportDtoList.get(0) instanceof DescribeImportDto) {
-                    continue;
-                }
-                // 类型转换
-                if (paperScanTaskStudentImportDtoList.get(0) instanceof PaperScanTaskStudentImportDto) {
-                    datasource = paperScanTaskStudentImportDtoList.stream().map(e -> {
-                        PaperScanTaskStudentImportDto paperScanTaskImportDto = new PaperScanTaskStudentImportDto();
-                        BeanUtils.copyProperties(e, paperScanTaskImportDto);
-                        return paperScanTaskImportDto;
-                    }).collect(Collectors.toList());
-                }
-            }
-            if (!CollectionUtils.isEmpty(datasource)) {
-                Map<String, PaperScanTaskStudentImportDto> studentImportDtoMap = new HashMap<>();
-                for (PaperScanTaskStudentImportDto paperScanTaskStudentImportDto : datasource) {
-                    String studentName = paperScanTaskStudentImportDto.getStudentName();
-                    String studentCode = paperScanTaskStudentImportDto.getStudentCode();
-
-                    if (studentImportDtoMap.containsKey(studentCode)) {
-                        // 如果试卷任务map中包含考生 - 检验其他信息是否一致(姓名,班级)
-                        PaperScanTaskStudentImportDto v = studentImportDtoMap.get(studentCode);
-                        String vStudentName = v.getStudentName();
-
-                        if (!vStudentName.equals(studentName)) {
-                            throw ExceptionResultEnum.ERROR.exception("考号[" + studentCode + "]存在不同的姓名[" + vStudentName + "," + studentName + "]");
-                        }
-                        // 校验通过,删除掉重复数据
-                        datasource.remove(paperScanTaskStudentImportDto);
-                    } else {
-                        // 没包含直接put
-                        studentImportDtoMap.put(studentCode, paperScanTaskStudentImportDto);
-                    }
-                }
-
-                // 查询任务下是否有考生
-                List<PaperScanTaskDetail> paperScanTaskDetailDbList = paperScanTaskDetailService.list(new QueryWrapper<PaperScanTaskDetail>()
-                        .lambda().eq(PaperScanTaskDetail::getSchoolId, schoolId)
-                        .eq(PaperScanTaskDetail::getPaperScanTaskId, paperScanTaskId));
-
-                // 学生基础数据集合
-                List<BasicStudent> basicStudentDbList = basicStudentService.list(new QueryWrapper<BasicStudent>().lambda().eq(BasicStudent::getSchoolId, schoolId));
-                List<PaperScanTaskDetail> paperScanTaskDetailList = new ArrayList<>();
-                for (PaperScanTaskStudentImportDto e : datasource) {
-                    String studentName = e.getStudentName();
-                    String studentCode = e.getStudentCode();
-                    String teacherName = e.getTeacherName();
-                    String teachClazzName = e.getTeachClazzName();
-                    List<BasicStudent> studentList = basicStudentDbList.stream().filter(s -> s.getStudentCode().equals(studentCode)).collect(Collectors.toList());
-                    BasicStudent basicStudent;
-                    if (studentList.isEmpty()) {
-                        basicStudent = new BasicStudent(schoolId, studentName, studentCode, true);
-                    } else if (studentList.size() == 1) {
-                        basicStudent = studentList.get(0);
-                        basicStudent.setStudentName(studentName);
-                    } else {
-                        throw ExceptionResultEnum.ERROR.exception("学号[" + studentCode + "]查出多条数据,请在学生管理处理");
-                    }
-
-                    basicStudentService.saveOrUpdate(basicStudent);
-
-                    Long studentId = basicStudent.getId();
-
-                    PaperScanTaskDetail paperScanTaskDetail = paperScanTaskDetailDbList.stream().filter(p -> p.getStudentId().equals(studentId)).findFirst().orElse(null);
-                    if (paperScanTaskDetail == null) {
-                        paperScanTaskDetail = new PaperScanTaskDetail();
-                        paperScanTaskDetail.setId(SystemConstant.getDbUuid());
-                        paperScanTaskDetail.setSchoolId(schoolId);
-                        paperScanTaskDetail.setPaperScanTaskId(paperScanTaskId);
-                        paperScanTaskDetail.setStudentId(studentId);
-                        paperScanTaskDetail.setTeacherName(teacherName);
-                        paperScanTaskDetail.setTeachClazzName(teachClazzName);
-
-                    } else {
-                        paperScanTaskDetail.setTeacherName(teacherName);
-                        paperScanTaskDetail.setTeachClazzName(teachClazzName);
-                    }
-                    paperScanTaskDetailList.add(paperScanTaskDetail);
-                }
-                if (!CollectionUtils.isEmpty(paperScanTaskDetailList)) {
-                    paperScanTaskDetailService.saveOrUpdateBatch(paperScanTaskDetailList);
-                }
-
-                // 更新扫描任务冗余字段扫描份数(学生数量)
-                this.updateStudentCount(paperScanTaskId);
-            }
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        } catch (NoSuchFieldException e) {
-            throw ExceptionResultEnum.ERROR.exception("请选择导入文件");
-        }
-    }
-
     @Override
     public List<PaperScanTask> getByPaperArchivesIdAndScanTaskName(Long schoolId, Long paperArchivesId, String scanTaskName) {
         QueryWrapper<PaperScanTask> queryWrapper = new QueryWrapper<>();

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

@@ -9,6 +9,7 @@ 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.entity.PaperLibrary;
 import com.qmth.paper.library.business.entity.PaperScanTask;
 import com.qmth.paper.library.business.entity.PaperScanTaskDetail;
@@ -74,6 +75,9 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     private PaperScanTaskDetailService paperScanTaskDetailService;
     @Resource
     private BasicStudentService basicStudentService;
+
+    @Resource
+    private PaperArchivesCourseService paperArchivesCourseService;
     @Resource
     PaperLibraryCommonService paperLibraryCommonService;
     @Resource
@@ -215,83 +219,57 @@ public class TaskLogicServiceImpl implements TaskLogicService {
 
             // 归纳 - 扫描任务集合
             // 扫描任务唯一信息
-            Map<String, PaperScanTask> paperScanTaskMap = new HashMap<>();
-            Map<String, List<PaperScanTaskImportDto>> listMap = new HashMap<>();
-            Map<String, List<String>> studentCodeMap = new HashMap<>();
+            Map<String, PaperScanTaskImportDto> paperScanTaskMap = new HashMap<>();
             for (PaperScanTaskImportDto paperScanTaskImportDto : datasource) {
                 String scanTaskName = paperScanTaskImportDto.getScanTaskName();
                 String courseCode = paperScanTaskImportDto.getCourseCode();
                 String courseName = paperScanTaskImportDto.getCourseName();
-                String studentCode = paperScanTaskImportDto.getStudentCode();
-                String studentName = paperScanTaskImportDto.getStudentName();
-                String teachClazzName = paperScanTaskImportDto.getTeachClazzName();
-                String teacherName = paperScanTaskImportDto.getTeacherName();
+                String teachClazzName = StringUtils.isBlank(paperScanTaskImportDto.getTeachClazzName()) ? "" : paperScanTaskImportDto.getTeachClazzName();
+                String teacherName = StringUtils.isBlank(paperScanTaskImportDto.getTeacherName()) ? "" : paperScanTaskImportDto.getTeacherName();
 
                 if (paperScanTaskMap.containsKey(scanTaskName)) {
                     // 如果试卷任务map中包含该任务名称 - 检验其他信息是否一致(课程,任课教师,教学班 为空的不检验)
-                    PaperScanTask v = paperScanTaskMap.get(scanTaskName);
-                    String vCourseCode = v.getCourseCode();
-                    String vCourseName = v.getCourseName();
-
-                    // 同一任务中,学号唯一
-                    if (studentCodeMap.get(scanTaskName).contains(studentCode)) {
-                        throw ExceptionResultEnum.ERROR.exception("任务名称[" + scanTaskName + "]存在相同的学号[" + studentCode + "]");
-                    }
+                    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 + "]在系统中已存在");
                     }
-
-                    PaperScanTask v = new PaperScanTask();
-                    BeanUtils.copyProperties(paperScanTaskImportDto, v);
                     // 没包含直接put
-                    paperScanTaskMap.put(scanTaskName, v);
-                }
-
-                // 同一任务任课教师检验
-                if ((StringUtils.isNotBlank(teacherName) || StringUtils.isNotBlank(teachClazzName)) && (StringUtils.isBlank(studentCode) || StringUtils.isBlank(studentName))) {
-                    throw ExceptionResultEnum.ERROR.exception("任务名称[" + scanTaskName + "],[教学班][任课老师]有值时,[学号][姓名]必填");
-                }
-                // 校验姓名和学号
-                if ((StringUtils.isBlank(studentCode) && StringUtils.isNotBlank(studentName)) || (StringUtils.isBlank(studentName) && StringUtils.isNotBlank(studentCode))) {
-                    throw ExceptionResultEnum.ERROR.exception("任务名称[" + scanTaskName + "],[学号][姓名]其中一个有值时,另一个必填");
-                }
-
-                if (!studentCodeMap.containsKey(scanTaskName)) {
-                    List<String> initList = new ArrayList<>();
-                    studentCodeMap.put(scanTaskName, initList);
-
-                }
-
-                studentCodeMap.get(scanTaskName).add(courseCode);
-
-                if (!listMap.containsKey(scanTaskName)) {
-                    List<PaperScanTaskImportDto> initList = new ArrayList<>();
-                    listMap.put(scanTaskName, initList);
+                    paperScanTaskMap.put(scanTaskName, paperScanTaskImportDto);
                 }
-
-                listMap.get(scanTaskName).add(paperScanTaskImportDto);
             }
-            List<PaperScanTaskDetail> paperScanTaskDetailList = new ArrayList<>();
-            List<BasicStudent> basicStudentDbList = basicStudentService.list(new QueryWrapper<BasicStudent>().lambda().eq(BasicStudent::getSchoolId, schoolId));
-            for (Map.Entry<String, List<PaperScanTaskImportDto>> entry : listMap.entrySet()) {
+            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();
-                List<PaperScanTaskImportDto> importDtoList = entry.getValue();
-
-                // 取课程代码和课程名称
-                PaperScanTaskImportDto paperScanTaskImportDto = importDtoList.get(0);
+                PaperScanTaskImportDto paperScanTaskImportDto = entry.getValue();
 
                 // 保存扫描任务
                 PaperScanTaskParam paperScanTaskParam = new PaperScanTaskParam();
@@ -299,68 +277,24 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 paperScanTaskParam.setCourseCode(paperScanTaskImportDto.getCourseCode());
                 paperScanTaskParam.setCourseName(paperScanTaskImportDto.getCourseName());
                 paperScanTaskParam.setScanTaskName(scanTaskName);
-                Long paperScanTaskId = paperScanTaskService.editPaperScanTask(paperScanTaskParam, sysUser);
+                paperScanTaskService.editPaperScanTask(paperScanTaskParam, sysUser);
 
                 // 保存任务+考生
-                List<PaperScanTaskDetail> paperScanTaskDetailDbList = paperScanTaskDetailService.list(new QueryWrapper<PaperScanTaskDetail>()
-                        .lambda()
-                        .eq(PaperScanTaskDetail::getSchoolId, schoolId)
-                        .in(PaperScanTaskDetail::getPaperScanTaskId, paperScanTaskId));
-                AtomicInteger atomicInteger = new AtomicInteger(0);
-                for (PaperScanTaskImportDto scanTaskImportDto : importDtoList) {
-                    String studentCode = scanTaskImportDto.getStudentCode();
-                    String studentName = scanTaskImportDto.getStudentName();
-                    String teachClazzName = scanTaskImportDto.getTeachClazzName();
-                    String teacherName = scanTaskImportDto.getTeacherName();
-
-                    // 没有学号等信息的考生,不存
-                    if (StringUtils.isBlank(studentCode)) {
-                        continue;
-                    }
-
-                    List<BasicStudent> studentList = basicStudentDbList.stream().filter(s -> s.getStudentCode().equals(studentCode)).collect(Collectors.toList());
-                    BasicStudent basicStudent;
-                    if (CollectionUtils.isEmpty(studentList)) {
-                        // 新增学生
-                        basicStudent = new BasicStudent(schoolId, studentName, studentCode, true);
-                        basicStudentService.save(basicStudent);
-                    } else if (studentList.size() == 1) {
-                        // 更新
-                        basicStudent = studentList.get(0);
-                        if (!teacherName.equals(basicStudent.getStudentName())) {
-                            throw ExceptionResultEnum.ERROR.exception("学号[" + studentCode + "]的学生姓名与基础信息中姓名不一致");
-                        }
-                    } else {
-                        throw ExceptionResultEnum.ERROR.exception("学号[" + studentCode + "]的学生姓名存在多条数据,请在学生管理处理");
-                    }
-
-                    PaperScanTaskDetail paperScanTaskDetail = paperScanTaskDetailDbList.stream().filter(p -> basicStudent.getId() == p.getStudentId()).findFirst().orElse(null);
-                    if (paperScanTaskDetail == null) {
-                        // 新增
-                        paperScanTaskDetail = new PaperScanTaskDetail();
-                        paperScanTaskDetail.setSchoolId(schoolId);
-                        paperScanTaskDetail.setPaperScanTaskId(paperScanTaskId);
-                        paperScanTaskDetail.setStudentId(basicStudent.getId());
-                        paperScanTaskDetail.setTeacherName(teacherName);
-                        paperScanTaskDetail.setTeachClazzName(teachClazzName);
-                        paperScanTaskDetail.insertInfo(sysUser.getId());
-
+                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 {
-                        paperScanTaskDetail.setTeacherName(teacherName);
-                        paperScanTaskDetail.setTeachClazzName(teachClazzName);
-                        paperScanTaskDetail.updateInfo(sysUser.getId());
+                        paperArchivesCourse.setTeachClazzName(teachClazzName);
+                        paperArchivesCourse.setTeacherName(teacherName);
                     }
-                    atomicInteger.getAndIncrement();
-                    paperScanTaskDetailList.add(paperScanTaskDetail);
+                    paperArchivesCourseService.saveOrUpdate(paperArchivesCourse);
                 }
-
-                // 更新任务表的学生数量
-                paperScanTaskService.updateStudentCount(paperScanTaskId);
-            }
-
-            // 批量保存
-            if (!CollectionUtils.isEmpty(paperScanTaskDetailList)) {
-                paperScanTaskDetailService.saveOrUpdateBatch(paperScanTaskDetailList);
             }
         }
         return map;
@@ -387,7 +321,6 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     BasicStudentImportDto basicStudentImportDto = (BasicStudentImportDto) basicStudentImportDtoList.get(y);
                     String studentName = basicStudentImportDto.getStudentName();
                     String studentCode = basicStudentImportDto.getStudentCode();
-                    String phoneNumber = basicStudentImportDto.getPhoneNumber();
                     String clazzName = basicStudentImportDto.getClazzName();
                     studentCodeList.add(studentCode);
 
@@ -395,19 +328,11 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     // 检验学号
                     if (SystemConstant.strNotNull(studentCode)) {
                         if (checkCodeMap.containsKey(studentCode)) {
-                            throw ExceptionResultEnum.ERROR.exception("导入的excel中包含在重复的【学生编号】:" + studentCode);
+                            throw ExceptionResultEnum.ERROR.exception("文件中存在重复的[学生编号]:" + studentCode);
                         } else {
                             checkCodeMap.put(studentCode, studentName);
                         }
                     }
-                    // 如果电话有值则检验电话excel中唯一性
-                    if (SystemConstant.strNotNull(phoneNumber)) {
-                        if (checkPhoneMap.containsKey(phoneNumber)) {
-                            throw ExceptionResultEnum.ERROR.exception("导入的excel中包含在重复的【电话号码】:" + phoneNumber);
-                        } else {
-                            checkPhoneMap.put(phoneNumber, studentCode);
-                        }
-                    }
 
                     excelErrorTemp.addAll(ExcelUtil.checkExcelField(basicStudentImportDto, y, i));
                     if (Objects.isNull(studentCode) || studentCode.length() > 30 || !studentCode.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)) {
@@ -416,9 +341,6 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     if (Objects.isNull(studentName) || studentName.length() > 30) {
                         excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[学生名称]不符合输入规范"));
                     }
-                    if (Objects.nonNull(phoneNumber) && !phoneNumber.matches(SystemConstant.REGULAR_EXPRESSION_OF_PHONE)) {
-                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[电话号码]不符合输入规范"));
-                    }
                 }
             }
             if (excelErrorTemp.size() > 0) {

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

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

+ 23 - 12
paper-library-business/src/main/resources/mapper/PaperArchivesMapper.xml

@@ -100,6 +100,7 @@
     <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,
@@ -108,15 +109,18 @@
             pst.scan_task_name scanTaskName,
             pst.course_code courseCode,
             pst.course_name courseName,
-            pstd.teacher_name teacherName,
-            pstd.teach_clazz_name teachClazzName,
+            pac.teacher_name teacherName,
+            pac.teach_clazz_name teachClazzName,
             pst.create_time createTime
         FROM
-            paper_scan_task pst
+            basic_student bs
                 LEFT JOIN
-            paper_scan_task_detail pstd ON pst.id = pstd.paper_scan_task_id
+            paper_scan_task_detail pstd ON pstd.student_id = bs.id
                 LEFT JOIN
-            basic_student bs ON pstd.student_id = bs.id
+            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>
@@ -137,10 +141,10 @@
                 and pst.course_name = #{courseName}
             </if>
             <if test="teacherName != null and teacherName != ''">
-                and pstd.teacher_name like concat(#{teacherName},'%')
+                and pac.teacher_name like concat(#{teacherName},'%')
             </if>
             <if test="teachClazzName != null and teachClazzName != ''">
-                and pstd.teach_clazz_name = #{teachClazzName}
+                and pac.teach_clazz_name = #{teachClazzName}
             </if>
             <if test="isBind != null">
                 <if test="isBind == true">
@@ -153,6 +157,12 @@
             <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>
@@ -178,18 +188,19 @@
             bs.clazz_name clazzName,
             pst.course_code courseCode,
             pst.course_name courseName,
-            pstd.teacher_name teacherName,
-            pstd.teach_clazz_name teachClazzName,
+            pac.teacher_name teacherName,
+            pac.teach_clazz_name teachClazzName,
             pst.create_time createTime
         FROM
-            paper_archives pa
-                JOIN
-            paper_scan_task pst ON pa.id = pst.paper_archives_id
+            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">

+ 8 - 23
paper-library-business/src/main/resources/mapper/PaperLibraryMapper.xml

@@ -50,7 +50,7 @@
             pst.scan_task_name paperScanTaskName,
             pst.course_code courseCode,
             pst.course_name courseName,
-            pst.create_time createTime,
+            pstd.update_time createTime,
             pstd.id paperScanTaskDetailId,
             pstd.bind_count bindCount
         FROM
@@ -78,6 +78,7 @@
             </if>
             and pstd.bind_count > 0
         </where>
+        order by pstd.update_time desc
     </select>
     <select id="countBindData" resultType="java.lang.Integer">
         SELECT
@@ -163,35 +164,19 @@
     </select>
     <select id="listByStudentCode" resultType="com.qmth.paper.library.business.bean.result.TaskStudentResult">
         SELECT
-            pstd.id paperScanTaskDetailId,
-            pa.archives_name paperArchivesName,
-            b.name semesterName,
-            pst.scan_task_name paperScanTaskName,
-            pst.course_code courseCode,
-            pst.course_name courseName,
-            pstd.teacher_name teacherName,
-            pstd.teach_clazz_name teachClazzName,
+            bs.id studentId,
             bs.student_name studentName,
             bs.student_code studentCode,
             bs.major_name majorName,
-            bs.clazz_name clazzName,
-            pstd.bind_count bindCount
+            bs.clazz_name clazzName
         FROM
-            paper_archives pa
-                LEFT JOIN
-            basic_semester b ON pa.semester_id = b.id
-                LEFT JOIN
-            paper_scan_task pst ON pa.id = pst.paper_archives_id
-                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
+            basic_student bs
         <where>
             <if test="schoolId != null">
-                and pa.school_id = #{schoolId}
+                and bs.school_id = #{schoolId}
             </if>
-            <if test="studentCode != null and studentCode != ''">
-                and bs.student_code like  concat('%', #{studentCode}, '%')
+            <if test="param != null and param != ''">
+                and bs.student_code like  concat('%', #{param}, '%')
             </if>
         </where>
     </select>

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

@@ -15,6 +15,7 @@
             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
@@ -64,15 +65,18 @@
             bs.student_code AS studentCode,
             pst.course_code AS courseCode,
             pst.course_name AS courseName,
-            pstd.teacher_name AS teacherName,
-            pstd.teach_clazz_name AS teachClazzName,
-            pst.scan_count AS scanCount
+            pac.teacher_name AS teacherName,
+            pac.teach_clazz_name AS teachClazzName,
+            pstd.bind_count AS bindCount
         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
         <where>
             <if test="schoolId != null">
                 AND pst.school_id = #{schoolId}
@@ -117,31 +121,27 @@
             paper_archives pa ON pst.school_id = pa.school_id
                 AND pst.paper_archives_id = pa.id
         <where>
-            pa.school_id = #{schoolId}
-            <if test="paperArchivesId != null">
-                and pst.paper_archives_id = #{paperArchivesId}
-            </if>
             <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 pstd.teach_clazz_name code, pstd.teach_clazz_name name
+            distinct pac.teach_clazz_name code, pac.teach_clazz_name name
         FROM
-            paper_scan_task_detail pstd
+            paper_archives_course pac
         <where>
-            pstd.school_id = #{schoolId}
-            and exists (
-                select 1 from paper_scan_task pst where pstd.paper_scan_task_id = pst.id
-                <if test="paperArchivesId != null">
-                    and pst.paper_archives_id = #{paperArchivesId}
-                </if>
-                <if test="courseName != null and courseName != ''">
-                    and pst.course_name = #{courseName}
-                </if>
-            )
+            <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"

+ 2 - 2
paper-library-common/pom.xml

@@ -4,13 +4,13 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.qmth.paper.library.common</groupId>
     <artifactId>paper-library-common</artifactId>
-    <version>1.0.2</version>
+    <version>1.0.3</version>
     <packaging>jar</packaging>
 
     <parent>
         <groupId>com.qmth.paper.library.service</groupId>
         <artifactId>paper-library-service</artifactId>
-        <version>1.0.2</version>
+        <version>1.0.3</version>
     </parent>
 
     <dependencies>

+ 0 - 11
paper-library-common/src/main/java/com/qmth/paper/library/common/bean/dto/excel/BasicStudentImportDto.java

@@ -21,9 +21,6 @@ public class BasicStudentImportDto implements Serializable {
     @NotNull
     private String studentCode;
 
-    @ExcelNote(value = "手机号")
-    private String phoneNumber;
-
     @ExcelNote(value = "学院")
     private String collegeName;
 
@@ -49,14 +46,6 @@ public class BasicStudentImportDto implements Serializable {
         this.studentCode = studentCode;
     }
 
-    public String getPhoneNumber() {
-        return phoneNumber;
-    }
-
-    public void setPhoneNumber(String phoneNumber) {
-        this.phoneNumber = phoneNumber;
-    }
-
     public String getCollegeName() {
         return collegeName;
     }

+ 0 - 5
paper-library-common/src/main/java/com/qmth/paper/library/common/entity/SysSetting.java

@@ -74,11 +74,6 @@ public class SysSetting extends BaseEntity implements Serializable {
 
         settingObjects.add(new SettingObject("识别设置", 2, simpleObjects2));
 
-        List<SimpleObject> simpleObjects3 = new ArrayList<>();
-        simpleObjects3.add(new SimpleObject(SysSettingConstant.CHECK_OPEN_GLOBAL_MATCH, "全局匹配", "false", 1, true));
-
-        settingObjects.add(new SettingObject("图片检查设置", 3, simpleObjects3));
-
         SysSetting sysSetting = new SysSetting();
         sysSetting.setSchoolId(schoolId);
         sysSetting.setParameterObject(JSON.toJSONString(settingObjects));

+ 2 - 3
paper-library-common/src/main/java/com/qmth/paper/library/common/service/BasicStudentService.java

@@ -3,8 +3,6 @@ package com.qmth.paper.library.common.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.common.bean.dto.TaskPrintClassDto;
-import com.qmth.paper.library.common.bean.params.BasicStudentExtrasParam;
 import com.qmth.paper.library.common.bean.params.BasicStudentParams;
 import com.qmth.paper.library.common.bean.result.BasicStudentResult;
 import com.qmth.paper.library.common.entity.BasicStudent;
@@ -13,7 +11,6 @@ import org.springframework.util.LinkedMultiValueMap;
 
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 /**
  * <p>
@@ -100,4 +97,6 @@ public interface BasicStudentService extends IService<BasicStudent> {
      * @return
      */
     BasicStudent getBySchoolIdAndStudentCode(String studentCode);
+
+    IPage<BasicStudent> listByStudentCode(Page<BasicStudent> ipage, String studentCode);
 }

+ 21 - 12
paper-library-common/src/main/java/com/qmth/paper/library/common/service/impl/BasicStudentServiceImpl.java

@@ -20,6 +20,7 @@ import com.qmth.paper.library.common.mapper.BasicStudentMapper;
 import com.qmth.paper.library.common.service.BasicStudentService;
 import com.qmth.paper.library.common.service.SysOrgService;
 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;
@@ -147,25 +148,22 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
             List<SysOrg> secondaryOrgList = sysOrgService.list(new QueryWrapper<SysOrg>()
                             .lambda()
                             .eq(SysOrg::getSchoolId, schoolId)
-                            .eq(SysOrg::getParentId, schoolOrgId))
-                    .stream()
-                    .filter(e -> !OrgTypeEnum.PRINTING_HOUSE.equals(e.getType()))
-                    .collect(Collectors.toList());
+                            .eq(SysOrg::getParentId, schoolOrgId));
 
-            List<BasicStudentParams> basicStudentParamsList = datasource.stream().flatMap(e -> {
-                String collegeName = e.getCollegeName();
+            List<BasicStudentParams> basicStudentParamsList = datasource.stream().map(e -> {
+                String collegeName = e.getCollegeName().trim();
                 // 学院
                 Long collegeId = null;
-                if (SystemConstant.strNotNull(collegeName)) {
+                if (StringUtils.isNotBlank(collegeName)) {
                     if (collegeMap.containsKey(collegeName)) {
                         collegeId = collegeMap.get(collegeName);
                     } else {
-                        List<SysOrg> effectList = secondaryOrgList.stream().filter(n -> collegeName.equals(n.getName())).distinct().collect(Collectors.toList());
+                        List<SysOrg> effectList = secondaryOrgList.stream().filter(n -> collegeName.equals(n.getName())).collect(Collectors.toList());
                         if (effectList.size() > 1) {
-                            throw ExceptionResultEnum.ERROR.exception("机构数据异常");
+                            throw ExceptionResultEnum.ERROR.exception("存在相同的机构名称");
                         }
 
-                        if (effectList.size() == 0) {
+                        if (effectList.isEmpty()) {
                             // 新增一个机构
                             SysOrg addOrg = new SysOrg();
                             addOrg.insertInfo(sysUser.getId());
@@ -192,11 +190,10 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
                 }
                 basicStudentParams.setStudentName(e.getStudentName());
                 basicStudentParams.setStudentCode(e.getStudentCode());
-                basicStudentParams.setPhoneNumber(e.getPhoneNumber());
                 basicStudentParams.setCollegeId(collegeId);
                 basicStudentParams.setMajorName(e.getMajorName());
                 basicStudentParams.setClazzName(e.getClazzName());
-                return Stream.of(basicStudentParams);
+                return basicStudentParams;
             }).collect(Collectors.toList());
             this.saveOrUpdateBatch(this.editEntityHelp(basicStudentParamsList, sysUser));
             map.put("dataCount", datasource.size());
@@ -213,6 +210,18 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
         return this.getOne(queryWrapper);
     }
 
+    @Override
+    public IPage<BasicStudent> listByStudentCode(Page<BasicStudent> ipage, String studentCode) {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        QueryWrapper<BasicStudent> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(BasicStudent::getSchoolId, schoolId);
+        if(StringUtils.isNotBlank(studentCode)){
+            queryWrapper.lambda().eq(BasicStudent::getStudentCode, studentCode);
+        }
+        queryWrapper.lambda().orderByAsc(BasicStudent::getStudentCode);
+        return this.page(ipage, queryWrapper);
+    }
+
     /**
      * 学生保存助手方法(应对学生保存和导入批量保存)
      *

+ 2 - 2
paper-library/pom.xml

@@ -4,13 +4,13 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.qmth.paper.library</groupId>
     <artifactId>paper-library</artifactId>
-    <version>1.0.2</version>
+    <version>1.0.3</version>
     <packaging>jar</packaging>
 
     <parent>
         <groupId>com.qmth.paper.library.service</groupId>
         <artifactId>paper-library-service</artifactId>
-        <version>1.0.2</version>
+        <version>1.0.3</version>
     </parent>
 
     <dependencies>

+ 2 - 2
paper-library/src/main/java/com/qmth/paper/library/api/ConditionController.java

@@ -115,8 +115,8 @@ public class ConditionController {
     @PostMapping("/teach_clazz/query")
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = EditResult.class)})
     public Result queryTeachClazz(@ApiParam(value = "档案id") @RequestParam(value = "paperArchivesId", required = false) Long paperArchivesId,
-                                  @ApiParam(value = "课程") @RequestParam(value = "courseName", required = false) String courseName) {
-        List<SelectResult> teachClazzList = paperScanTaskService.queryDataTeachClazz(paperArchivesId, courseName);
+                                  @ApiParam(value = "课程") @RequestParam(value = "courseCode", required = false) String courseCode) {
+        List<SelectResult> teachClazzList = paperScanTaskService.queryDataTeachClazz(paperArchivesId, courseCode);
         return ResultUtil.ok(teachClazzList);
     }
 

+ 12 - 1
paper-library/src/main/java/com/qmth/paper/library/api/PaperArchivesController.java

@@ -21,6 +21,7 @@ import io.swagger.annotations.*;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
@@ -83,9 +84,11 @@ public class PaperArchivesController {
                              @ApiParam(value = "教学班") @RequestParam(required = false) String teachClazzName,
                              @ApiParam(value = "是否绑定") @RequestParam(required = false) Boolean isBind,
                              @ApiParam(value = "模糊查询(姓名/学号)") @RequestParam(required = false) String param,
+                             @ApiParam(value = "绑定数量(小)") @RequestParam(required = false) Integer minBindCount,
+                             @ApiParam(value = "绑定数量(大)") @RequestParam(required = false) Integer maxBindCount,
                              @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                              @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        return ResultUtil.ok(paperArchivesService.pageDetail(paperArchivesId, paperScanTaskId, belongOrgId, majorName, clazzName, courseName, teacherName, teachClazzName, isBind, param, pageNumber, pageSize));
+        return ResultUtil.ok(paperArchivesService.pageDetail(paperArchivesId, paperScanTaskId, belongOrgId, majorName, clazzName, courseName, teacherName, teachClazzName, isBind, param,minBindCount, maxBindCount, pageNumber, pageSize));
     }
 
 
@@ -107,5 +110,13 @@ public class PaperArchivesController {
         return Objects.nonNull(tbTask) ? ResultUtil.ok(new EditResult(tbTask.getId())) : ResultUtil.error("创建任务失败");
     }
 
+    @ApiOperation(value = "导入")
+    @RequestMapping(value = "/import", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
+    public Result importStudent(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file,
+                                @ApiParam(value = "档案ID", required = true) @RequestParam Long paperArchivesId) throws Exception {
+        paperArchivesService.importData(paperArchivesId, file);
+        return ResultUtil.ok(true);
+    }
 
 }

+ 5 - 5
paper-library/src/main/java/com/qmth/paper/library/api/PaperLibraryController.java

@@ -94,8 +94,9 @@ public class PaperLibraryController {
     @PostMapping("/bind")
     @ApiResponses({@ApiResponse(code = 200, message = "绑定成功", response = EditResult.class)})
     public Result save(@ApiParam(value = "扫描图片ID") @RequestParam Long paperLibraryId,
-                       @ApiParam(value = "扫描任务详情ID(任务+考生)") @RequestParam Long paperScanTaskDetailId) {
-        return ResultUtil.ok(paperLibraryService.bind(paperLibraryId, paperScanTaskDetailId));
+                       @ApiParam(value = "扫描任务ID") @RequestParam Long paperScanTaskId,
+                       @ApiParam(value = "考生ID") @RequestParam Long studentId) {
+        return ResultUtil.ok(paperLibraryService.bind(paperLibraryId, paperScanTaskId, studentId));
     }
 
     @ApiOperation(value = "标记异常")
@@ -123,11 +124,10 @@ public class PaperLibraryController {
     @PostMapping("/page_student")
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
     public Result pageStudent(@ApiParam(value = "扫描任务ID") @RequestParam Long paperScanTaskId,
-                              @ApiParam(value = "模糊查询(学号/姓名)") @RequestParam(required = false) String param,
-                              @ApiParam(value = "是否开启全局匹配") @RequestParam(required = false) Boolean globalMatch,
+                              @ApiParam(value = "学号模糊查询") @RequestParam(required = false) String param,
                               @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                               @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        return ResultUtil.ok(paperLibraryService.pageStudent(paperScanTaskId, param, globalMatch, pageNumber, pageSize));
+        return ResultUtil.ok(paperLibraryService.pageStudent(paperScanTaskId, param, pageNumber, pageSize));
     }
 
     @ApiOperation(value = "根据学号查询所有任务下考生信息")

+ 1 - 10
paper-library/src/main/java/com/qmth/paper/library/api/PaperScanTaskController.java

@@ -150,19 +150,10 @@ public class PaperScanTaskController {
     @RequestMapping(value = "/release_binding_task", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "删除成功", response = EditResult.class)})
     public Result releaseBindingTask(@ApiParam(value = "扫描任务ID", required = true) @RequestParam String paperScanTaskId,
-                                     @ApiParam(value = "数据检员ID", required = true) @RequestParam String bindUserId) {
+                                     @ApiParam(value = "数据检员ID", required = true) @RequestParam String bindUserId) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         paperScanTaskService.releaseBindingTask(SystemConstant.convertIdToLong(paperScanTaskId), SystemConstant.convertIdToLong(bindUserId), sysUser);
         return ResultUtil.ok();
     }
 
-    @ApiOperation(value = "扫描任务管理-批量导入考生")
-    @RequestMapping(value = "/import_student", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
-    public Result importStudent(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file,
-                                @ApiParam(value = "扫描任务ID", required = true) @RequestParam Long paperScanTaskId) throws Exception {
-        paperScanTaskService.importStudent(paperScanTaskId, file);
-        return ResultUtil.ok(true);
-    }
-
 }

+ 1 - 1
pom.xml

@@ -4,7 +4,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.qmth.paper.library.service</groupId>
     <artifactId>paper-library-service</artifactId>
-    <version>1.0.2</version>
+    <version>1.0.3</version>
     <packaging>pom</packaging>
 
     <modules>

+ 32 - 0
sql/1.0.2修改内容.txt → sql/1.0.3修改内容.txt

@@ -53,3 +53,35 @@ UPDATE `sys_privilege` SET `name` = '新增' WHERE (`id` = '245');
 
 ALTER TABLE `paper_scan_task_detail`
 CHANGE COLUMN `is_bind` `bind_count` INT NULL DEFAULT '0' COMMENT '绑定图片数量' ;
+
+
+
+-----------以上为1.0.2更新内容
+-----------以下为1.0.3更新内容
+
+CREATE TABLE `paper_archives_course` (
+  `id` BIGINT(20) NOT NULL,
+  `school_id` BIGINT(20) NULL COMMENT '学校ID',
+  `paper_archives_id` BIGINT(20) NULL COMMENT '档案ID',
+  `course_code` VARCHAR(45) NULL COMMENT '课程代码',
+  `course_name` VARCHAR(100) NULL COMMENT '课程名称',
+  `teacher_name` VARCHAR(100) NULL COMMENT '任课老师',
+  `teach_clazz_name` VARCHAR(45) NULL COMMENT '教学班',
+  `create_id` BIGINT(20) NULL,
+  `create_time` BIGINT(20) NULL,
+  `update_id` BIGINT(20) NULL,
+  `update_time` BIGINT(20) NULL,
+  PRIMARY KEY (`id`));
+
+
+UPDATE `sys_privilege` SET `id` = '44', `name` = '导入课程信息', `parent_id` = '9', `related` = '45' WHERE (`id` = '265');
+UPDATE `sys_privilege` SET `id` = '45', `name` = '导入课程信息', `parent_id` = '9' WHERE (`id` = '266');
+
+ALTER TABLE `paper_scan_task_detail`
+DROP COLUMN `teacher_name`,
+DROP COLUMN `teach_clazz_name`;
+
+
+DELETE from sys_privilege where id in (44,45);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (44, '导入课程信息', 'Import', 'LINK', 9, 12, 'AUTH', 45, 1, 0, 1);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (45, '导入课程信息', '/api/admin/paper/archives/import', 'URL', 9, 10, 'AUTH', NULL, 1, 1, 1);

+ 21 - 4
sql/paper_library_db.sql

@@ -176,6 +176,25 @@ CREATE TABLE `paper_archives`  (
   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '档案管理表' ROW_FORMAT = Dynamic;
 
+-- ----------------------------
+-- Table structure for paper_archives_course
+-- ----------------------------
+DROP TABLE IF EXISTS `paper_archives_course`;
+CREATE TABLE `paper_archives_course` (
+ `id` BIGINT(20) NOT NULL,
+ `school_id` BIGINT(20) NULL COMMENT '学校ID',
+ `paper_archives_id` BIGINT(20) NULL COMMENT '档案ID',
+ `course_code` VARCHAR(45) NULL COMMENT '课程代码',
+ `course_name` VARCHAR(100) NULL COMMENT '课程名称',
+ `teacher_name` VARCHAR(100) NULL COMMENT '任课老师',
+ `teach_clazz_name` VARCHAR(45) NULL COMMENT '教学班',
+ `create_id` BIGINT(20) NULL,
+ `create_time` BIGINT(20) NULL,
+ `update_id` BIGINT(20) NULL,
+ `update_time` BIGINT(20) NULL,
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '档案管理课程表' ROW_FORMAT = Dynamic;;
+
 -- ----------------------------
 -- Table structure for paper_archives_type
 -- ----------------------------
@@ -251,8 +270,6 @@ CREATE TABLE `paper_scan_task_detail`  (
   `school_id` bigint(20) NOT NULL COMMENT '学校id',
   `paper_scan_task_id` bigint(20) NOT NULL COMMENT '扫描任务id',
   `student_id` bigint(20) NOT NULL COMMENT '学生id',
-  `teach_clazz_name` VARCHAR(100) NULL COMMENT '教学班',
-  `teacher_name` VARCHAR(45) NULL COMMENT '任课老师',
   `bind_count` INT(11) DEFAULT 0 COMMENT '绑定图片数量',
   `create_id` bigint(20) DEFAULT NULL COMMENT '创建人',
   `create_time` bigint(20) DEFAULT NULL COMMENT '创建时间',
@@ -346,6 +363,8 @@ INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (41, '异常数量接口', '/api/admin/paper/library/count_abnormal', 'URL', 20, 11, 'AUTH', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (42, '标记异常接口', '/api/admin/paper/library/abnormal', 'URL', 20, 12, 'AUTH', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (43, '获取单条图片详情', '/api/admin/paper/library/get_paper_data', 'URL', 20, 13, 'AUTH', NULL, 1, 1, 1);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (44, '导入课程信息', 'Import', 'LINK', 9, 12, 'AUTH', 45, 1, 0, 1);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (45, '导入课程信息', '/api/admin/paper/archives/import', 'URL', 9, 10, 'AUTH', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (49, '查询条件-档案管理员', '/api/admin/common/manager_user/query', 'URL', 149, 10, 'SYS', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (50, '查询条件-学期', '/api/admin/common/semester/query', 'URL', 149, 8, 'SYS', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (51, '查询条件-档案', '/api/admin/common/archives/query', 'URL', 149, 8, 'SYS', NULL, 1, 1, 1);
@@ -452,8 +471,6 @@ INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (262, '批量删除', 'DeleteBatch', 'BUTTON', 244, 9, 'AUTH', '247', 1, 0, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (263, '导入扫描任务', 'Import', 'BUTTON', 244, 10, 'AUTH', '248', 1, 0, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (264, '查询条件', 'Condition', 'CONDITION', 244, 11, 'AUTH', '246', 1, 0, 1);
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (265, '导入考生', 'Import', 'LINK', 244, 12, 'AUTH', '266', 1, 0, 1);
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (266, '导入考生', '/api/admin/paper/scan_task/import_student', 'URL', 244, 10, 'AUTH', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (267, '新增', 'Add', 'BUTTON', 244, 13, 'AUTH', 245, 1, 0, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (358, '学生管理', 'StudentManage', 'MENU', 2, 6, NULL, NULL, 1, 0, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (362, '查询', '/api/admin/basic/student/query', 'URL', 358, 1, 'AUTH', NULL, 1, 1, 1);