소스 검색

数据检查

xiatian 9 달 전
부모
커밋
435eecbac7

+ 45 - 0
src/main/java/cn/com/qmth/scancentral/controller/admin/ScanAnswerController.java

@@ -56,6 +56,8 @@ import cn.com.qmth.scancentral.vo.UriVo;
 import cn.com.qmth.scancentral.vo.answerquery.AnswerQueryVo;
 import cn.com.qmth.scancentral.vo.batchdetail.BatchDetailVo;
 import cn.com.qmth.scancentral.vo.mismatchquery.MismatchQueryVo;
+import cn.com.qmth.scancentral.vo.student.StudentExamRoomVo;
+import cn.com.qmth.scancentral.vo.student.StudentVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -232,4 +234,47 @@ public class ScanAnswerController extends BaseController {
         return studentService.answerRefix(getAccessUser(), query);
     }
 
+    @ApiOperation(value = "按考生导出答题卡扫描详情")
+    @PostMapping(value = "student/export")
+    public void studentExport(@Validated AnswerQueryDomain query, HttpServletResponse response) throws IOException {
+        String fileName = URLEncoder.encode("按考生导出", "UTF-8");
+        response.setHeader("Content-Disposition", "inline; filename=" + fileName + ".xlsx");
+        response.setContentType("application/vnd.ms-excel");
+        ExcelWriter writer = ExcelWriter.create(ExcelType.XLSX);
+        PageListIterator<StudentVo> iterator = new PageListIterator<StudentVo>(5000) {
+
+            @Override
+            public Collection<StudentVo> getPageList(int pageNumber, int pageSize) {
+                query.setPageNumber(pageNumber);
+                query.setPageSize(pageSize);
+                return studentService.studentExportList(query);
+            }
+        };
+        writer.writeObjects("按考生导出", null, StudentVo.class, iterator);
+        writer.output(response.getOutputStream());
+
+    }
+
+    @ApiOperation(value = "按考场导出答题卡扫描详情")
+    @PostMapping(value = "exam-room/export")
+    public void studentExamRoomExport(@Validated AnswerQueryDomain query, HttpServletResponse response)
+            throws IOException {
+        String fileName = URLEncoder.encode("按考场导出", "UTF-8");
+        response.setHeader("Content-Disposition", "inline; filename=" + fileName + ".xlsx");
+        response.setContentType("application/vnd.ms-excel");
+        ExcelWriter writer = ExcelWriter.create(ExcelType.XLSX);
+        PageListIterator<StudentExamRoomVo> iterator = new PageListIterator<StudentExamRoomVo>(5000) {
+
+            @Override
+            public Collection<StudentExamRoomVo> getPageList(int pageNumber, int pageSize) {
+                query.setPageNumber(pageNumber);
+                query.setPageSize(pageSize);
+                return studentService.studentExamRoomExportList(query);
+            }
+        };
+        writer.writeObjects("按考场导出", null, StudentExamRoomVo.class, iterator);
+        writer.output(response.getOutputStream());
+
+    }
+
 }

+ 26 - 8
src/main/java/cn/com/qmth/scancentral/dao/StudentDao.java

@@ -1,25 +1,38 @@
 package cn.com.qmth.scancentral.dao;
 
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
 import cn.com.qmth.scancentral.bean.AbsentQueryDomain;
 import cn.com.qmth.scancentral.bean.AnswerQueryDomain;
 import cn.com.qmth.scancentral.bean.AssignedQueryDomain;
 import cn.com.qmth.scancentral.entity.StudentEntity;
-import cn.com.qmth.scancentral.vo.*;
+import cn.com.qmth.scancentral.vo.AbsentInfoVo;
+import cn.com.qmth.scancentral.vo.AbsentQueryVo;
+import cn.com.qmth.scancentral.vo.AnswerExportVo;
+import cn.com.qmth.scancentral.vo.CampusVo;
+import cn.com.qmth.scancentral.vo.ExamSiteVo;
+import cn.com.qmth.scancentral.vo.ExportCetMarkingQueryVo;
+import cn.com.qmth.scancentral.vo.ExportCetVo;
+import cn.com.qmth.scancentral.vo.ImportStudentQueryVo;
+import cn.com.qmth.scancentral.vo.ImportStudentVo;
+import cn.com.qmth.scancentral.vo.ScanAnswerInfoVo;
+import cn.com.qmth.scancentral.vo.StudentUploadVo;
 import cn.com.qmth.scancentral.vo.answerquery.AnswerQueryVo;
 import cn.com.qmth.scancentral.vo.assginedcheck.AssignedCheckExport;
 import cn.com.qmth.scancentral.vo.examroom.ExamRoomScannedQuery;
 import cn.com.qmth.scancentral.vo.examroom.ExamRoomScannedVo;
+import cn.com.qmth.scancentral.vo.student.StudentExamRoomVo;
 import cn.com.qmth.scancentral.vo.student.StudentPageQuery;
 import cn.com.qmth.scancentral.vo.student.StudentPageVo;
+import cn.com.qmth.scancentral.vo.student.StudentVo;
 import cn.com.qmth.scancentral.vo.subject.SubjectScanProgressVo;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
 public interface StudentDao extends BaseMapper<StudentEntity> {
 
     List<CampusVo> listCampusByExamId(@Param("examId") Long examId);
@@ -83,4 +96,9 @@ public interface StudentDao extends BaseMapper<StudentEntity> {
             @Param("req") ExamRoomScannedQuery query);
 
     IPage<StudentPageVo> studentPage(Page<StudentPageVo> page, @Param("req") StudentPageQuery query);
+
+    IPage<StudentVo> studentExport(Page<StudentVo> page, @Param("query") AnswerQueryDomain query);
+
+    IPage<StudentExamRoomVo> studentExamRoomExport(Page<StudentExamRoomVo> page,
+            @Param("query") AnswerQueryDomain query);
 }

+ 5 - 0
src/main/java/cn/com/qmth/scancentral/service/StudentService.java

@@ -14,6 +14,7 @@ import cn.com.qmth.scancentral.vo.assginedcheck.AssignedTaskSaveVo;
 import cn.com.qmth.scancentral.vo.examroom.ExamRoomScannedQuery;
 import cn.com.qmth.scancentral.vo.examroom.ExamRoomScannedVo;
 import cn.com.qmth.scancentral.vo.student.StudentAnswerVo;
+import cn.com.qmth.scancentral.vo.student.StudentExamRoomVo;
 import cn.com.qmth.scancentral.vo.student.StudentPageQuery;
 import cn.com.qmth.scancentral.vo.student.StudentPageVo;
 import cn.com.qmth.scancentral.vo.student.StudentQuery;
@@ -179,4 +180,8 @@ public interface StudentService extends IService<StudentEntity> {
 
     List<StudentPageVo> studentList(StudentPageQuery query);
 
+    List<StudentVo> studentExportList(AnswerQueryDomain query);
+
+    List<StudentExamRoomVo> studentExamRoomExportList(AnswerQueryDomain query);
+
 }

+ 12 - 0
src/main/java/cn/com/qmth/scancentral/service/impl/StudentServiceImpl.java

@@ -35,6 +35,7 @@ import cn.com.qmth.scancentral.vo.examroom.ExamRoomScannedVo;
 import cn.com.qmth.scancentral.vo.paper.PaperCetVo;
 import cn.com.qmth.scancentral.vo.paper.PaperPageCetVo;
 import cn.com.qmth.scancentral.vo.student.StudentAnswerVo;
+import cn.com.qmth.scancentral.vo.student.StudentExamRoomVo;
 import cn.com.qmth.scancentral.vo.student.StudentPageQuery;
 import cn.com.qmth.scancentral.vo.student.StudentPageVo;
 import cn.com.qmth.scancentral.vo.student.StudentQuery;
@@ -2236,4 +2237,15 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, StudentEntity> i
     public List<StudentPageVo> studentList(StudentPageQuery query) {
         return studentPage(query).getResult();
     }
+
+    @Override
+    public List<StudentVo> studentExportList(AnswerQueryDomain query) {
+        return baseMapper.studentExport(new Page<>(query.getPageNumber(), query.getPageSize()), query).getRecords();
+    }
+
+    @Override
+    public List<StudentExamRoomVo> studentExamRoomExportList(AnswerQueryDomain query) {
+        return baseMapper.studentExamRoomExport(new Page<>(query.getPageNumber(), query.getPageSize()), query)
+                .getRecords();
+    }
 }

+ 62 - 0
src/main/java/cn/com/qmth/scancentral/vo/student/StudentExamRoomVo.java

@@ -0,0 +1,62 @@
+package cn.com.qmth.scancentral.vo.student;
+
+import com.qmth.boot.tools.excel.annotation.ExcelColumn;
+
+public class StudentExamRoomVo {
+
+    @ExcelColumn(name = "科目代码", index = 0)
+    private String subjectCode;
+
+    @ExcelColumn(name = "科目名称", index = 1)
+    private String subjectName;
+
+    @ExcelColumn(name = "校区", index = 3)
+    private String campusCode;
+
+    @ExcelColumn(name = "考点", index = 2)
+    private String examSite;
+
+    @ExcelColumn(name = "考场号", index = 4)
+    private String examRoom;
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getCampusCode() {
+        return campusCode;
+    }
+
+    public void setCampusCode(String campusCode) {
+        this.campusCode = campusCode;
+    }
+
+    public String getExamSite() {
+        return examSite;
+    }
+
+    public void setExamSite(String examSite) {
+        this.examSite = examSite;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+
+}

+ 9 - 0
src/main/java/cn/com/qmth/scancentral/vo/student/StudentVo.java

@@ -1,5 +1,7 @@
 package cn.com.qmth.scancentral.vo.student;
 
+import com.qmth.boot.tools.excel.annotation.ExcelColumn;
+
 import cn.com.qmth.scancentral.entity.StudentEntity;
 import cn.com.qmth.scancentral.enums.ScanStatus;
 
@@ -7,24 +9,31 @@ public class StudentVo {
 
     private Long id;
 
+    @ExcelColumn(name = "准考证号", index = 2)
     private String examNumber;
 
+    @ExcelColumn(name = "姓名", index = 3)
     private String name;
 
+    @ExcelColumn(name = "科目代码", index = 0)
     private String subjectCode;
 
+    @ExcelColumn(name = "科目名称", index = 1)
     private String subjectName;
 
     private String packageCode;
 
     private String campusName;
 
+    @ExcelColumn(name = "校区", index = 5)
     private String campusCode;
 
+    @ExcelColumn(name = "考点", index = 4)
     private String examSite;
 
     private String examSiteName;
 
+    @ExcelColumn(name = "考场号", index = 6)
     private String examRoom;
 
     private String seatNumber;

+ 28 - 0
src/main/resources/mapper/StudentMapper.xml

@@ -581,4 +581,32 @@
         </if>
         order by t.create_time
     </select>
+    <select id="studentExport"
+            resultType="cn.com.qmth.scancentral.vo.student.StudentVo">
+        select
+        t.*,
+        c.paper_count cardPaperCount,
+        s.name subjectName
+        from sc_student t
+        left join sc_answer_card c on t.exam_id=c.exam_id and
+        t.card_number=c.number
+        left join sc_subject s on s.code=t.subject_code and s.exam_id=t.exam_id
+        <include refid="queryWhereAndOrder"/>
+        order by t.exam_number
+    </select>
+    <select id="studentExamRoomExport"
+            resultType="cn.com.qmth.scancentral.vo.student.StudentExamRoomVo">
+        select tm.* from (select t.campus_code,t.exam_site,t.exam_room
+        s.code subject_code
+        s.name subject_name
+        from sc_student t
+        left join sc_answer_card c on t.exam_id=c.exam_id and
+        t.card_number=c.number
+        left join sc_subject s on s.code=t.subject_code and s.exam_id=t.exam_id
+        <include refid="queryWhereAndOrder"/>
+        group by t.campus_code,t.exam_site,t.exam_room,s.code
+        ) tm
+        order by tm.exam_site,tm.exam_room
+    </select>
+    
 </mapper>