xiaofei 10 ماه پیش
والد
کامیت
8105947773

+ 28 - 0
paper-library-business/src/main/java/com/qmth/paper/library/business/bean/result/DocManageStatResult.java

@@ -0,0 +1,28 @@
+package com.qmth.paper.library.business.bean.result;
+
+import io.swagger.annotations.ApiModelProperty;
+
+public class DocManageStatResult {
+
+    @ApiModelProperty(value = "学生数量")
+    private int studentCount;
+    @ApiModelProperty(value = "已扫学生数量")
+    private int scanStudentCount;
+
+
+    public int getStudentCount() {
+        return studentCount;
+    }
+
+    public void setStudentCount(int studentCount) {
+        this.studentCount = studentCount;
+    }
+
+    public int getScanStudentCount() {
+        return scanStudentCount;
+    }
+
+    public void setScanStudentCount(int scanStudentCount) {
+        this.scanStudentCount = scanStudentCount;
+    }
+}

+ 5 - 3
paper-library-business/src/main/java/com/qmth/paper/library/business/mapper/DocManageMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.paper.library.business.bean.result.DocManageResult;
 import com.qmth.paper.library.business.bean.result.DocManageDetailResult;
+import com.qmth.paper.library.business.bean.result.DocManageStatResult;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -16,11 +17,12 @@ import java.util.Set;
  */
 public interface DocManageMapper {
 
-    IPage<DocManageResult> pageData(@Param("page") Page<DocManageResult> page, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("orgIds") Set<Long> orgIds);
+    IPage<DocManageResult> pageData(@Param("page") Page<DocManageResult> page, @Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("orgIds") Set<Long> orgIds);
+    DocManageStatResult statData(@Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("orgIds") Set<Long> orgIds);
 
-    IPage<DocManageDetailResult> pageDetail(@Param("page") Page<DocManageDetailResult> page, @Param("paperScanTaskId") Long paperScanTaskId, @Param("collegeName") String collegeName, @Param("majorName") String majorName, @Param("className") String className, @Param("examRoom") String examRoom, @Param("teacher") String teacher, @Param("teachClass") String teachClass, @Param("isBind") Boolean isBind, @Param("param") String param, @Param("minScore") Double minScore, @Param("maxScore") Double maxScore, @Param("minBindCount") Integer minBindCount, @Param("maxBindCount") Integer maxBindCount);
+    IPage<DocManageDetailResult> pageDetail(@Param("page") Page<DocManageDetailResult> page, @Param("paperScanTaskId") Long paperScanTaskId, @Param("collegeName") String collegeName, @Param("majorName") String majorName, @Param("className") String className, @Param("examRoom") String examRoom, @Param("teacher") String teacher, @Param("teachClass") String teachClass, @Param("isBind") Boolean isBind, @Param("param") String param, @Param("minScore") Double minScore, @Param("maxScore") Double maxScore, @Param("minBindCount") Integer minBindCount, @Param("maxBindCount") Integer maxBindCount, @Param("pictureSymbol") String pictureSymbol, @Param("pictureCount") Integer pictureCount);
 
-    List<DocManageDetailResult> pageDetail(@Param("paperScanTaskId") Long paperScanTaskId, @Param("collegeName") String collegeName, @Param("majorName") String majorName, @Param("className") String className, @Param("examRoom") String examRoom, @Param("teacher") String teacher, @Param("teachClass") String teachClass, @Param("isBind") Boolean isBind, @Param("param") String param, @Param("minScore") Double minScore, @Param("maxScore") Double maxScore, @Param("minBindCount") Integer minBindCount, @Param("maxBindCount") Integer maxBindCount);
+    List<DocManageDetailResult> pageDetail(@Param("paperScanTaskId") Long paperScanTaskId, @Param("collegeName") String collegeName, @Param("majorName") String majorName, @Param("className") String className, @Param("examRoom") String examRoom, @Param("teacher") String teacher, @Param("teachClass") String teachClass, @Param("isBind") Boolean isBind, @Param("param") String param, @Param("minScore") Double minScore, @Param("maxScore") Double maxScore, @Param("minBindCount") Integer minBindCount, @Param("maxBindCount") Integer maxBindCount, @Param("pictureSymbol") String pictureSymbol, @Param("pictureCount") Integer pictureCount);
 
     List<DocManageDetailResult> listDetail(@Param("paperScanTaskId") Long paperScanTaskId, @Param("ids") List<String> ids);
 }

+ 4 - 2
paper-library-business/src/main/java/com/qmth/paper/library/business/service/DocManageService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.paper.library.business.bean.result.DocManageOtherDetailResult;
 import com.qmth.paper.library.business.bean.result.DocManageResult;
 import com.qmth.paper.library.business.bean.result.DocManageDetailResult;
+import com.qmth.paper.library.business.bean.result.DocManageStatResult;
 import com.qmth.paper.library.common.bean.params.DownLoadPaperParams;
 
 import java.util.List;
@@ -15,9 +16,10 @@ import java.util.List;
  */
 public interface DocManageService {
 
-    IPage<DocManageResult> pageData(Long examId, String courseCode, Integer pageNumber, Integer pageSize);
+    IPage<DocManageResult> pageData(Long semesterId, Long examId, String courseCode, Integer pageNumber, Integer pageSize);
+    DocManageStatResult statData(Long semesterId, Long examId, String courseCode);
 
-    IPage<DocManageDetailResult> pageDetail(Long paperScanTaskId, String collegeName, String majorName, String className, String examRoom, String teacher, String teachClass, Boolean isBind, String param, Double minScore, Double maxScore, Integer minBindCount, Integer maxBindCount, Integer pageNumber, Integer pageSize);
+    IPage<DocManageDetailResult> pageDetail(Long paperScanTaskId, String collegeName, String majorName, String className, String examRoom, String teacher, String teachClass, Boolean isBind, String param, Double minScore, Double maxScore, Integer minBindCount, Integer maxBindCount, String pictureSymbol, Integer pictureCount, Integer pageNumber, Integer pageSize);
 
     List<DocManageDetailResult> listDetail(DownLoadPaperParams downLoadPaperParams);
 

+ 15 - 5
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/DocManageServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.paper.library.business.bean.result.DocManageDetailResult;
 import com.qmth.paper.library.business.bean.result.DocManageOtherDetailResult;
 import com.qmth.paper.library.business.bean.result.DocManageResult;
+import com.qmth.paper.library.business.bean.result.DocManageStatResult;
 import com.qmth.paper.library.business.bean.vo.FilePathVo;
 import com.qmth.paper.library.business.entity.PaperLibraryOther;
 import com.qmth.paper.library.business.mapper.DocManageMapper;
@@ -47,15 +48,22 @@ public class DocManageServiceImpl implements DocManageService {
     private FileUploadService fileUploadService;
 
     @Override
-    public IPage<DocManageResult> pageData(Long examId, String courseCode, Integer pageNumber, Integer pageSize) {
+    public IPage<DocManageResult> pageData(Long semesterId, Long examId, String courseCode, Integer pageNumber, Integer pageSize) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         Set<Long> orgIds = libraryCommonService.listSubOrgIds(sysUser.getOrgId());
-        return docManageMapper.pageData(new Page<>(pageNumber, pageSize), examId, courseCode, orgIds);
+        return docManageMapper.pageData(new Page<>(pageNumber, pageSize), semesterId, examId, courseCode, orgIds);
     }
 
     @Override
-    public IPage<DocManageDetailResult> pageDetail(Long paperScanTaskId, String collegeName, String majorName, String className, String examRoom, String teacher, String teachClass, Boolean isBind, String param, Double minScore, Double maxScore, Integer minBindCount, Integer maxBindCount, Integer pageNumber, Integer pageSize) {
-        IPage<DocManageDetailResult> detailResultIPage = docManageMapper.pageDetail(new Page<>(pageNumber, pageSize), paperScanTaskId, collegeName, majorName, className, examRoom, teacher, teachClass, isBind, param, minScore, maxScore, minBindCount, maxBindCount);
+    public DocManageStatResult statData(Long semesterId, Long examId, String courseCode) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        Set<Long> orgIds = libraryCommonService.listSubOrgIds(sysUser.getOrgId());
+        return docManageMapper.statData(semesterId, examId, courseCode, orgIds);
+    }
+
+    @Override
+    public IPage<DocManageDetailResult> pageDetail(Long paperScanTaskId, String collegeName, String majorName, String className, String examRoom, String teacher, String teachClass, Boolean isBind, String param, Double minScore, Double maxScore, Integer minBindCount, Integer maxBindCount, String pictureSymbol, Integer pictureCount, Integer pageNumber, Integer pageSize) {
+        IPage<DocManageDetailResult> detailResultIPage = docManageMapper.pageDetail(new Page<>(pageNumber, pageSize), paperScanTaskId, collegeName, majorName, className, examRoom, teacher, teachClass, isBind, param, minScore, maxScore, minBindCount, maxBindCount, pictureSymbol, pictureCount);
         return detailResultIPage;
     }
 
@@ -83,7 +91,9 @@ public class DocManageServiceImpl implements DocManageService {
             Double maxScore = downLoadPaperParams.getMaxScore();
             Integer minBindCount = downLoadPaperParams.getMinBindCount();
             Integer maxBindCount = downLoadPaperParams.getMaxBindCount();
-            docManageDetailResults = docManageMapper.pageDetail(paperScanTaskId, collegeName, majorName, className, courseName, teacher, teachClass, isBind, param, minScore, maxScore, minBindCount, maxBindCount);
+            String pictureSymbol = downLoadPaperParams.getPictureSymbol();
+            Integer pictureCount = downLoadPaperParams.getPictureCount();
+            docManageDetailResults = docManageMapper.pageDetail(paperScanTaskId, collegeName, majorName, className, courseName, teacher, teachClass, isBind, param, minScore, maxScore, minBindCount, maxBindCount, pictureSymbol, pictureCount);
         }
         return docManageDetailResults;
     }

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

@@ -17,6 +17,25 @@
                 LEFT JOIN
             basic_semester bs ON be.semester_id = bs.id
         <where>
+            be.semester_id = #{semesterId}
+            <if test="examId != null ">
+                and pst.exam_id = #{examId}
+            </if>
+            <if test="courseCode != null and courseCode != ''">
+                and pst.course_code = #{courseCode}
+            </if>
+        </where>
+    </select>
+    <select id="statData" resultType="com.qmth.paper.library.business.bean.result.DocManageStatResult">
+        SELECT
+            sum(pst.student_count) studentCount,
+            sum(pst.scan_student_count) scanStudentCount
+        FROM
+            paper_scan_task pst
+                LEFT JOIN
+            basic_exam be ON pst.exam_id = be.id
+        <where>
+            be.semester_id = #{semesterId}
             <if test="examId != null ">
                 and pst.exam_id = #{examId}
             </if>
@@ -89,6 +108,20 @@
             <if test="maxBindCount != null">
                 and es.bind_count &lt;= #{maxBindCount}
             </if>
+            <if test="pictureSymbol != null and pictureSymbol !='' and pictureCount != null and pictureCount !='' ">
+                <if test="pictureSymbol == 'GREAT_THEN'">
+                    and es.bind_count > #{pictureCount}
+                </if>
+                <if test="pictureSymbol == 'EQUAL'">
+                    and es.bind_count = #{pictureCount}
+                </if>
+                <if test="pictureSymbol == 'LESS_THEN'">
+                    and es.bind_count <![CDATA[< #{pictureCount} ]]>
+                </if>
+                <if test="pictureSymbol == 'NOT_EQUAL'">
+                    and es.bind_count != #{pictureCount}
+                </if>
+            </if>
         </where>
         order by pst.scan_task_name, es.student_code
     </select>

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

@@ -4,7 +4,6 @@ package com.qmth.paper.library.api;
 import com.alibaba.fastjson.JSON;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.paper.library.business.bean.result.EditResult;
-import com.qmth.paper.library.business.entity.PaperLibrary;
 import com.qmth.paper.library.business.service.DocManageService;
 import com.qmth.paper.library.business.service.PaperLibraryService;
 import com.qmth.paper.library.business.templete.execute.AsyncDownloadPaperService;
@@ -21,7 +20,6 @@ import com.qmth.paper.library.common.util.ServletUtil;
 import io.swagger.annotations.*;
 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.constraints.Max;
@@ -51,11 +49,21 @@ public class DocManageController {
     @ApiOperation(value = "分页查询")
     @PostMapping("/page")
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
-    public Result page(@ApiParam(value = "考试ID", required = true) @RequestParam() Long examId,
+    public Result page(@ApiParam(value = "学期ID", required = true) @RequestParam Long semesterId,
+                       @ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
                        @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
                        @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(docManageService.pageData(examId, courseCode, pageNumber, pageSize));
+        return ResultUtil.ok(docManageService.pageData(semesterId, examId, courseCode, pageNumber, pageSize));
+    }
+
+    @ApiOperation(value = "汇总统计")
+    @PostMapping("/stat")
+    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
+    public Result stat(@ApiParam(value = "学期ID", required = true) @RequestParam Long semesterId,
+                       @ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
+                       @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode) {
+        return ResultUtil.ok(docManageService.statData(semesterId, examId, courseCode));
     }
 
     @ApiOperation(value = "查看详情")
@@ -74,9 +82,11 @@ public class DocManageController {
                              @ApiParam(value = "成绩(大)") @RequestParam(required = false) Double maxScore,
                              @ApiParam(value = "绑定数量(小)") @RequestParam(required = false) Integer minBindCount,
                              @ApiParam(value = "绑定数量(大)") @RequestParam(required = false) Integer maxBindCount,
+                             @ApiParam(value = "大于、等于、小于、不等于") @RequestParam(value = "pictureSymbol", required = false) String pictureSymbol,
+                             @ApiParam(value = "图片张数") @RequestParam(value = "pictureCount", required = false) Integer pictureCount,
                              @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(docManageService.pageDetail(paperScanTaskId, collegeName, majorName, className, examRoom, teacher, teachClass, isBind, param, minScore, maxScore, minBindCount, maxBindCount, pageNumber, pageSize));
+        return ResultUtil.ok(docManageService.pageDetail(paperScanTaskId, collegeName, majorName, className, examRoom, teacher, teachClass, isBind, param, minScore, maxScore, minBindCount, maxBindCount, pictureSymbol, pictureCount, pageNumber, pageSize));
     }
 
     @ApiOperation(value = "批量下载")

+ 8 - 0
paper-library/src/main/resources/db-log/xf.sql

@@ -46,3 +46,11 @@ CREATE TABLE `basic_batch_number` (
         PRIMARY KEY (`exam_id`, `user_id`));
 
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('207', '获取批次号', '/api/admin/client/get_batch_number', 'URL', '200', '7', 'AUTH', '1', '1', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('276', '删除图片', '/api/admin/paper/document/picture/delete', 'URL', '260', '8', 'AUTH', '1', '1', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('277', '旋转保存图片', '/api/admin/paper/document/picture/save', 'URL', '260', '9', 'AUTH', '1', '1', '1');
+UPDATE `sys_privilege` SET `related` = '267,268,269,270,271,276,277' WHERE (`id` = '264');
+
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('278', '汇总统计', '/api/admin/paper/document/stat', 'URL', '260', '10', 'AUTH', '1', '1', '1');
+UPDATE `sys_privilege` SET `related` = '266,278' WHERE (`id` = '261');
+UPDATE `sys_privilege` SET `related` = '266,278' WHERE (`id` = '262');
+UPDATE `sys_privilege` SET `related` = '266,278' WHERE (`id` = '263');