فهرست منبع

签到表扫描结果列表

xiatian 1 سال پیش
والد
کامیت
5482540cda

+ 11 - 28
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/ScanPackageController.java

@@ -1,12 +1,7 @@
 package com.qmth.distributed.print.api.mark;
 
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -14,16 +9,14 @@ import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
 import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.boot.api.constant.ApiConstant;
-import com.qmth.boot.core.exception.ParameterException;
-import com.qmth.distributed.print.business.entity.ExamDetail;
-import com.qmth.distributed.print.business.entity.ExamDetailCourse;
-import com.qmth.distributed.print.business.service.ExamDetailCourseService;
-import com.qmth.distributed.print.business.service.ExamDetailService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysConfig;
 import com.qmth.teachcloud.common.service.CommonCacheService;
 import com.qmth.teachcloud.mark.bean.scananswer.SheetUploadVo;
+import com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageQuery;
+import com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageVo;
 import com.qmth.teachcloud.mark.service.ScanPackageService;
 
 import io.swagger.annotations.Api;
@@ -45,10 +38,6 @@ public class ScanPackageController {
 	private CommonCacheService commonCacheService;
 	@Autowired
 	private ScanPackageService scanPackageService;
-	@Autowired
-	private ExamDetailService examDetailService;
-	@Autowired
-	private ExamDetailCourseService examDetailCourseService;
 
 	@ApiOperation(value = "签到表条码识别坐标获取")
 	@RequestMapping(value = "position/get", method = RequestMethod.POST)
@@ -63,18 +52,12 @@ public class ScanPackageController {
 	@RequestMapping(value = "image/upload", method = RequestMethod.POST)
 	public SheetUploadVo imageUpload(@RequestParam Long examId, @RequestParam String packageCode,
 			@RequestParam Integer packageNo, @RequestParam MultipartFile file, @RequestParam String md5) {
-		List<ExamDetail> eds=examDetailService.listByExamAndPackage(examId, packageCode);
-		if(CollectionUtils.isEmpty(eds)) {
-			throw new ParameterException("未找到考试详情信息");
-		}
-		List<Long> edIds=eds.stream().map(e->e.getId()).collect(Collectors.toList());
-		List<ExamDetailCourse> edcs=examDetailCourseService.listByExamDetailIds(edIds);
-		if(CollectionUtils.isEmpty(edcs)) {
-			throw new ParameterException("未找到考场关联科目信息");
-		}
-		List<String> list=edcs.stream().map(e->e.getCoursePaperId()).collect(Collectors.toList());
-		Set<String> coursePaperIds=new HashSet<>();
-		coursePaperIds.addAll(list);
-		return scanPackageService.imageUpload(examId,coursePaperIds, packageCode, packageNo,file, md5);
+		return scanPackageService.imageUpload(examId, packageCode, packageNo,file, md5);
+	}
+	
+	@ApiOperation(value = "签到表扫描结果列表")
+	@RequestMapping(value = "image/list", method = RequestMethod.POST)
+	public IPage<ScanPackageVo> imagePage(@Validated ScanPackageQuery query) {
+		return scanPackageService.imagePage(query);
 	}
 }

+ 40 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/scanpackage/ScanPackageQuery.java

@@ -0,0 +1,40 @@
+package com.qmth.teachcloud.mark.bean.scanpackage;
+
+import javax.validation.constraints.NotNull;
+
+import com.qmth.teachcloud.common.enums.ScanStatus;
+import com.qmth.teachcloud.mark.utils.PagerQuery;
+
+public class ScanPackageQuery extends PagerQuery {
+	@NotNull(message = "考试Id不能为空")
+	private Long examId;
+	@NotNull(message = "coursePaperId不能为空")
+	private String coursePaperId;
+	
+	private ScanStatus status;
+
+	public Long getExamId() {
+		return examId;
+	}
+
+	public void setExamId(Long examId) {
+		this.examId = examId;
+	}
+
+	public String getCoursePaperId() {
+		return coursePaperId;
+	}
+
+	public void setCoursePaperId(String coursePaperId) {
+		this.coursePaperId = coursePaperId;
+	}
+
+	public ScanStatus getStatus() {
+		return status;
+	}
+
+	public void setStatus(ScanStatus status) {
+		this.status = status;
+	}
+
+}

+ 76 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/scanpackage/ScanPackageVo.java

@@ -0,0 +1,76 @@
+package com.qmth.teachcloud.mark.bean.scanpackage;
+
+import java.util.List;
+
+public class ScanPackageVo {
+
+	private String courseCode;
+
+	private String courseName;
+
+	private String coursePaperNumber;
+	private String coursePaperId;
+
+	private String packageCode;
+
+	private Integer pagesCount;
+
+	private List<String> pages;
+
+	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 getCoursePaperNumber() {
+		return coursePaperNumber;
+	}
+
+	public void setCoursePaperNumber(String coursePaperNumber) {
+		this.coursePaperNumber = coursePaperNumber;
+	}
+
+	public String getCoursePaperId() {
+		return coursePaperId;
+	}
+
+	public void setCoursePaperId(String coursePaperId) {
+		this.coursePaperId = coursePaperId;
+	}
+
+	public String getPackageCode() {
+		return packageCode;
+	}
+
+	public void setPackageCode(String packageCode) {
+		this.packageCode = packageCode;
+	}
+
+	public Integer getPagesCount() {
+		return pagesCount;
+	}
+
+	public void setPagesCount(Integer pagesCount) {
+		this.pagesCount = pagesCount;
+	}
+
+	public List<String> getPages() {
+		return pages;
+	}
+
+	public void setPages(List<String> pages) {
+		this.pages = pages;
+	}
+
+}

+ 9 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/ScanPackageMapper.java

@@ -1,7 +1,14 @@
 package com.qmth.teachcloud.mark.mapper;
 
+import com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageQuery;
+import com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageVo;
 import com.qmth.teachcloud.mark.entity.ScanPackage;
+
+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;
 
 /**
  * <p>
@@ -13,4 +20,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ScanPackageMapper extends BaseMapper<ScanPackage> {
 
+	IPage<ScanPackageVo> page(Page<ScanPackageVo> page, @Param("req")ScanPackageQuery query);
+
 }

+ 4 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkPaperService.java

@@ -1,5 +1,7 @@
 package com.qmth.teachcloud.mark.service;
 
+import java.util.List;
+
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.bean.dto.mark.MarkSettingDto;
@@ -8,8 +10,6 @@ import com.qmth.teachcloud.mark.dto.mark.score.CheckScoreListDto;
 import com.qmth.teachcloud.mark.dto.mark.score.MarkPaperPackageDto;
 import com.qmth.teachcloud.mark.entity.MarkPaper;
 
-import java.util.List;
-
 /**
  * <p>
  * 考试科目表 服务类
@@ -41,4 +41,6 @@ public interface MarkPaperService extends IService<MarkPaper> {
     IPage<MarkPaperPackageDto> listPackage(Long examId, String paperNumber, String packageCode, Integer pageNumber, Integer pageSize);
 
 	MarkPaper getByExamIdAndCoursePaperId(Long examId, String coursePaperId);
+
+	List<MarkPaper> listByExamAndPackage(Long examId, String packageCode);
 }

+ 11 - 6
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/ScanPackageService.java

@@ -1,14 +1,16 @@
 package com.qmth.teachcloud.mark.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.qmth.teachcloud.mark.bean.scananswer.SheetUploadVo;
-import com.qmth.teachcloud.mark.entity.ScanPackage;
-
 import java.util.List;
-import java.util.Set;
 
 import org.springframework.web.multipart.MultipartFile;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.teachcloud.mark.bean.scananswer.SheetUploadVo;
+import com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageQuery;
+import com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageVo;
+import com.qmth.teachcloud.mark.entity.ScanPackage;
+
 /**
  * <p>
  *  服务类
@@ -23,5 +25,8 @@ public interface ScanPackageService extends IService<ScanPackage> {
 
     List<ScanPackage> listByExamIdAndCoursePaperIdAndPackageCode(Long examId, String coursePaperId, String packageCode);
 
-	SheetUploadVo imageUpload(Long examId,Set<String> coursePaperIds, String packageCode, Integer packageNo, MultipartFile file, String md5);
+	SheetUploadVo imageUpload(Long examId, String packageCode, Integer packageNo, MultipartFile file, String md5);
+
+	IPage<ScanPackageVo> imagePage(ScanPackageQuery query);
+
 }

+ 10 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkPaperServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qmth.teachcloud.mark.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -149,4 +150,13 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
         wrapper.last("LIMIT 1");
         return this.getOne(wrapper);
     }
+    
+	@Override
+	public List<MarkPaper> listByExamAndPackage(Long examId, String packageCode) {
+		QueryWrapper<MarkPaper> wrapper = new QueryWrapper<>();
+        LambdaQueryWrapper<MarkPaper> lw = wrapper.lambda();
+        lw.eq(MarkPaper::getExamId, examId);
+        lw.eq(MarkPaper::getPackageCode, packageCode);
+		return this.list(wrapper);
+	}
 }

+ 58 - 7
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanPackageServiceImpl.java

@@ -1,8 +1,11 @@
 package com.qmth.teachcloud.mark.service.impl;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
-import java.util.Set;
+import java.util.Map;
 
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -11,12 +14,18 @@ import org.springframework.web.multipart.MultipartFile;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.boot.core.exception.ParameterException;
 import com.qmth.teachcloud.mark.bean.scananswer.SheetUploadVo;
+import com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageQuery;
+import com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageVo;
+import com.qmth.teachcloud.mark.entity.MarkPaper;
 import com.qmth.teachcloud.mark.entity.ScanPackage;
 import com.qmth.teachcloud.mark.mapper.ScanPackageMapper;
 import com.qmth.teachcloud.mark.service.FileService;
+import com.qmth.teachcloud.mark.service.MarkPaperService;
 import com.qmth.teachcloud.mark.service.ScanFilePropertyService;
 import com.qmth.teachcloud.mark.service.ScanPackageService;
 
@@ -34,7 +43,9 @@ public class ScanPackageServiceImpl extends ServiceImpl<ScanPackageMapper, ScanP
 	private FileService fileService;
 	@Autowired
 	private ScanFilePropertyService scanFilePropertyService;
-	
+	@Autowired
+	private MarkPaperService markPaperService;
+
 	@Override
 	public int getCount(Long examId) {
 		QueryWrapper<ScanPackage> wrapper = new QueryWrapper<>();
@@ -58,10 +69,15 @@ public class ScanPackageServiceImpl extends ServiceImpl<ScanPackageMapper, ScanP
 
 	@Transactional
 	@Override
-	public SheetUploadVo imageUpload(Long examId, Set<String> coursePaperIds, String packageCode, Integer packageNo,
-			MultipartFile file, String md5) {
+	public SheetUploadVo imageUpload(Long examId, String packageCode, Integer packageNo, MultipartFile file,
+			String md5) {
 		SheetUploadVo vo = null;
-		for (String coursePaperId : coursePaperIds) {
+		List<MarkPaper> mps = markPaperService.listByExamAndPackage(examId, packageCode);
+		if (CollectionUtils.isEmpty(mps)) {
+			throw new ParameterException("未找到科目信息");
+		}
+		for (MarkPaper mp : mps) {
+			String coursePaperId = mp.getCoursePaperId();
 			try {
 				String path = fileService.uploadPackage(file.getInputStream(), md5, examId, coursePaperId, packageCode,
 						packageNo);
@@ -70,8 +86,8 @@ public class ScanPackageServiceImpl extends ServiceImpl<ScanPackageMapper, ScanP
 				}
 				ScanPackage sp = getByExamIdAndCoursePaperIdAndPackageCodeAndPackageNo(examId, coursePaperId,
 						packageCode, packageNo);
-				if(sp==null) {
-					sp=new ScanPackage();
+				if (sp == null) {
+					sp = new ScanPackage();
 					sp.setExamId(examId);
 					sp.setCoursePaperId(coursePaperId);
 					sp.setPackageCode(packageCode);
@@ -102,4 +118,39 @@ public class ScanPackageServiceImpl extends ServiceImpl<ScanPackageMapper, ScanP
 		wrapper.last("LIMIT 1");
 		return this.getOne(wrapper);
 	}
+
+	private List<ScanPackage> getByExamIdAndCoursePaperId(Long examId, String coursePaperId) {
+		QueryWrapper<ScanPackage> wrapper = new QueryWrapper<>();
+		LambdaQueryWrapper<ScanPackage> lw = wrapper.lambda();
+		lw.eq(ScanPackage::getExamId, examId);
+		lw.eq(ScanPackage::getCoursePaperId, coursePaperId);
+		lw.orderByAsc(ScanPackage::getPackageNo);
+		return this.list(wrapper);
+	}
+
+	@Override
+	public IPage<ScanPackageVo> imagePage(ScanPackageQuery query) {
+		IPage<ScanPackageVo> iPage = this.baseMapper.page(new Page<>(query.getPageNumber(), query.getPageSize()),
+				query);
+		if(CollectionUtils.isNotEmpty(iPage.getRecords())) {
+			List<ScanPackage> sps=getByExamIdAndCoursePaperId(query.getExamId(), query.getCoursePaperId());
+			if(CollectionUtils.isNotEmpty(sps)) {
+				Map<String,List<String>> map=new HashMap<>();
+				for(ScanPackage sp:sps) {
+					List<String> tem=map.get(sp.getPackageCode());
+					if(tem==null) {
+						tem=new ArrayList<>();
+						map.put(sp.getPackageCode(), tem);
+					}
+					tem.add(sp.getPath());
+				}
+				for(ScanPackageVo vo:iPage.getRecords()) {
+					List<String> pages=map.get(vo.getPackageCode());
+					vo.setPages(pages);
+					vo.setPagesCount(pages.size());
+				}
+			}
+		}
+		return iPage;
+	}
 }

+ 39 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/utils/PagerQuery.java

@@ -0,0 +1,39 @@
+package com.qmth.teachcloud.mark.utils;
+
+import io.swagger.annotations.ApiModelProperty;
+
+public class PagerQuery {
+
+    @ApiModelProperty(value = "第几页(从1开始)")
+    protected Integer pageNumber;
+
+    @ApiModelProperty(value = "每页条数")
+    protected Integer pageSize;
+
+    public Integer getPageNumber() {
+        // 默认值
+        if (pageNumber == null || pageNumber < 1) {
+        	pageNumber = 1;
+        }
+
+        return pageNumber;
+    }
+
+    public Integer getPageSize() {
+        // 默认值
+        if (pageSize == null || pageSize < 1) {
+            pageSize = 10;
+        }
+
+        return pageSize;
+    }
+
+    public void setPageNumber(Integer pageNumber) {
+        this.pageNumber = pageNumber;
+    }
+
+    public void setPageSize(Integer pageSize) {
+        this.pageSize = pageSize;
+    }
+
+}

+ 2 - 0
teachcloud-mark/src/main/resources/mapper/ScanAnswerCardMapper.xml

@@ -28,6 +28,7 @@
 	<select id="cardList"
             resultType="com.qmth.teachcloud.mark.bean.answercard.AnswerCardVo">
         select t.*,t.paper_number coursePaperNumber,f.course_code,f.course_name
+        from scan_answer_card t
         left join mark_paper f on t.exam_id=f.exam_id and t.course_paper_id=f.course_paper_id
         where t.exam_id=#{examId}
         <if test="coursePaperId != null and coursePaperId !=''">
@@ -38,6 +39,7 @@
     <select id="cardGet"
             resultType="com.qmth.teachcloud.mark.bean.answercard.AnswerCardVo">
         select t.*,t.paper_number coursePaperNumber,f.course_code,f.course_name
+        from scan_answer_card t
         left join mark_paper f on t.exam_id=f.exam_id and t.course_paper_id=f.course_paper_id
         where t.exam_id=#{examId} and and t.number=#{number}
     </select>

+ 37 - 17
teachcloud-mark/src/main/resources/mapper/ScanPackageMapper.xml

@@ -1,21 +1,41 @@
 <?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.teachcloud.mark.mapper.ScanPackageMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.qmth.teachcloud.mark.entity.ScanPackage">
-        <id column="id" property="id" />
-        <result column="exam_id" property="examId" />
-        <result column="course_paper_id" property="coursePaperId" />
-        <result column="package_code" property="packageCode" />
-        <result column="package_no" property="packageNo" />
-        <result column="path" property="path" />
-        <result column="md5" property="md5" />
-        <result column="assigned" property="assigned" />
-        <result column="creator_id" property="creatorId" />
-        <result column="updater_id" property="updaterId" />
-        <result column="create_time" property="createTime" />
-        <result column="update_time" property="updateTime" />
-    </resultMap>
+<mapper
+	namespace="com.qmth.teachcloud.mark.mapper.ScanPackageMapper">
 
+	<!-- 通用查询映射结果 -->
+	<resultMap id="BaseResultMap"
+		type="com.qmth.teachcloud.mark.entity.ScanPackage">
+		<id column="id" property="id" />
+		<result column="exam_id" property="examId" />
+		<result column="course_paper_id" property="coursePaperId" />
+		<result column="package_code" property="packageCode" />
+		<result column="package_no" property="packageNo" />
+		<result column="path" property="path" />
+		<result column="md5" property="md5" />
+		<result column="assigned" property="assigned" />
+		<result column="creator_id" property="creatorId" />
+		<result column="updater_id" property="updaterId" />
+		<result column="create_time" property="createTime" />
+		<result column="update_time" property="updateTime" />
+	</resultMap>
+	<select id="page"
+		resultType="com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageVo">
+		select t.*,t.paper_number coursePaperNumber
+		FROM mark_paper t
+        where t.exam_id=#{req.examId} and t.course_paper_id=#{req.coursePaperId}
+        <if test="req.status != null">
+			<if test="req.status ==@com.qmth.teachcloud.common.enums@SCANNED">
+				and exists (
+				select 1 from scan_package f where t.exam_id=f.exam_id and t.course_paper_id=f.course_paper_id
+				)
+			</if>
+			<if test="req.status ==@com.qmth.teachcloud.common.enums@UNEXIST">
+				and not exists (
+				select 1 from scan_package f where t.exam_id=f.exam_id and t.course_paper_id=f.course_paper_id
+				)
+			</if>
+		</if>
+		ORDER BY t.id
+	</select>
 </mapper>