xiatian 1 vuosi sitten
vanhempi
commit
8b3d39d0ee

+ 0 - 58
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/ScoreVerifyParam.java

@@ -1,58 +0,0 @@
-package cn.com.qmth.stmms.biz.exam.bean;
-
-import cn.com.qmth.stmms.biz.exam.enums.ScoreVerifyRule;
-import cn.com.qmth.stmms.biz.exam.enums.ScoreVerifyRuleCompare;
-
-public class ScoreVerifyParam {
-
-	private String studentCode;
-
-	private String studentName;
-
-	private ScoreVerifyRule rule;
-
-	private ScoreVerifyRuleCompare ruleCompare;
-
-	private Integer compareScore;
-
-	public String getStudentCode() {
-		return studentCode;
-	}
-
-	public void setStudentCode(String studentCode) {
-		this.studentCode = studentCode;
-	}
-
-	public String getStudentName() {
-		return studentName;
-	}
-
-	public void setStudentName(String studentName) {
-		this.studentName = studentName;
-	}
-
-	public ScoreVerifyRule getRule() {
-		return rule;
-	}
-
-	public void setRule(ScoreVerifyRule rule) {
-		this.rule = rule;
-	}
-
-	public ScoreVerifyRuleCompare getRuleCompare() {
-		return ruleCompare;
-	}
-
-	public void setRuleCompare(ScoreVerifyRuleCompare ruleCompare) {
-		this.ruleCompare = ruleCompare;
-	}
-
-	public Integer getCompareScore() {
-		return compareScore;
-	}
-
-	public void setCompareScore(Integer compareScore) {
-		this.compareScore = compareScore;
-	}
-
-}

+ 2 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ScoreVerifyDao.java

@@ -8,6 +8,7 @@ import cn.com.qmth.stmms.biz.exam.model.ScoreVerify;
 public interface ScoreVerifyDao
 		extends PagingAndSortingRepository<ScoreVerify, Integer>, JpaSpecificationExecutor<ScoreVerify> {
 
-	ScoreVerify findByExamIdAndUserId(Integer examId, Integer id);
+	void deleteByExamIdAndUserId(Integer examId, Integer userId);
 
+	ScoreVerify findByExamIdAndUserIdAndStudentId(Integer examId, Integer userId, Integer studentId);
 }

+ 0 - 15
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ScoreVerifyDetailDao.java

@@ -1,15 +0,0 @@
-package cn.com.qmth.stmms.biz.exam.dao;
-
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.repository.PagingAndSortingRepository;
-
-import cn.com.qmth.stmms.biz.exam.model.ScoreVerifyDetail;
-
-public interface ScoreVerifyDetailDao
-		extends PagingAndSortingRepository<ScoreVerifyDetail, Integer>, JpaSpecificationExecutor<ScoreVerifyDetail> {
-
-	void deleteByScoreVerifyId(Integer id);
-
-	ScoreVerifyDetail findByScoreVerifyIdAndStudentId(Integer scoreVerifyId, Integer studentId);
-
-}

+ 36 - 7
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ScoreVerify.java

@@ -43,11 +43,23 @@ public class ScoreVerify implements Serializable {
 	private Integer userId;
 
 	/**
-	 * 查询条件json
+	 * 考生id
 	 */
-	@Column(name = "params", nullable = false)
-	private String params;
+	@Column(name = "student_id", nullable = false)
+	private Integer studentId;
 
+	/**
+	 * 是否被标记
+	 */
+	@Column(name = "flagged")
+	private Boolean flagged;
+
+	/**
+	 * 校验时间
+	 */
+	@Temporal(TemporalType.TIMESTAMP)
+	@Column(name = "verify_time")
+	private Date verifyTime;
 	/**
 	 * 创建时间
 	 */
@@ -79,12 +91,29 @@ public class ScoreVerify implements Serializable {
 		this.userId = userId;
 	}
 
-	public String getParams() {
-		return params;
+
+	public Integer getStudentId() {
+		return studentId;
+	}
+
+	public void setStudentId(Integer studentId) {
+		this.studentId = studentId;
+	}
+
+	public Boolean getFlagged() {
+		return flagged;
+	}
+
+	public void setFlagged(Boolean flagged) {
+		this.flagged = flagged;
+	}
+
+	public Date getVerifyTime() {
+		return verifyTime;
 	}
 
-	public void setParams(String params) {
-		this.params = params;
+	public void setVerifyTime(Date verifyTime) {
+		this.verifyTime = verifyTime;
 	}
 
 	public Date getCreateTime() {

+ 0 - 97
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ScoreVerifyDetail.java

@@ -1,97 +0,0 @@
-package cn.com.qmth.stmms.biz.exam.model;
-
-import java.io.Serializable;
-import java.util.Date;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
-
-/**
- * 成绩校验明细
- * 
- * @author Administrator
- */
-@Entity
-@Table(name = "eb_score_verify_detail")
-public class ScoreVerifyDetail implements Serializable {
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 8782399485127136556L;
-
-	@Id
-	@GeneratedValue
-	private Integer id;
-
-	/**
-	 * 成绩校验查询条件id
-	 */
-	@Column(name = "score_verify_id", nullable = false)
-	private Integer scoreVerifyId;
-
-	/**
-	 * 考生id
-	 */
-	@Column(name = "student_id", nullable = false)
-	private Integer studentId;
-
-	/**
-	 * 是否被标记
-	 */
-	@Column(name = "flagged")
-	private Boolean flagged;
-
-	/**
-	 * 校验时间
-	 */
-	@Temporal(TemporalType.TIMESTAMP)
-	@Column(name = "verify_time")
-	private Date verifyTime;
-
-	public Integer getId() {
-		return id;
-	}
-
-	public void setId(Integer id) {
-		this.id = id;
-	}
-
-	public Integer getScoreVerifyId() {
-		return scoreVerifyId;
-	}
-
-	public void setScoreVerifyId(Integer scoreVerifyId) {
-		this.scoreVerifyId = scoreVerifyId;
-	}
-
-	public Integer getStudentId() {
-		return studentId;
-	}
-
-	public void setStudentId(Integer studentId) {
-		this.studentId = studentId;
-	}
-
-	public Boolean getFlagged() {
-		return flagged;
-	}
-
-	public void setFlagged(Boolean flagged) {
-		this.flagged = flagged;
-	}
-
-	public Date getVerifyTime() {
-		return verifyTime;
-	}
-
-	public void setVerifyTime(Date verifyTime) {
-		this.verifyTime = verifyTime;
-	}
-
-}

+ 47 - 14
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/query/ScoreVerifyQuery.java

@@ -1,24 +1,64 @@
 package cn.com.qmth.stmms.biz.exam.query;
 
 import cn.com.qmth.stmms.biz.common.BaseQuery;
-import cn.com.qmth.stmms.biz.exam.bean.ScoreVerifyParam;
 import cn.com.qmth.stmms.biz.exam.bean.ScoreVerifyVo;
+import cn.com.qmth.stmms.biz.exam.enums.ScoreVerifyRule;
+import cn.com.qmth.stmms.biz.exam.enums.ScoreVerifyRuleCompare;
 
 public class ScoreVerifyQuery extends BaseQuery<ScoreVerifyVo> {
-	private Integer scoreVerifyId;
 
-	private ScoreVerifyParam param;
+	private String studentCode;
+
+	private String studentName;
+
+	private ScoreVerifyRule rule;
+
+	private ScoreVerifyRuleCompare ruleCompare;
+
+	private Integer compareScore;
 
 	private Integer examId;
 
 	private Integer userId;
 
-	public ScoreVerifyParam getParam() {
-		return param;
+	public String getStudentCode() {
+		return studentCode;
+	}
+
+	public void setStudentCode(String studentCode) {
+		this.studentCode = studentCode;
+	}
+
+	public String getStudentName() {
+		return studentName;
+	}
+
+	public void setStudentName(String studentName) {
+		this.studentName = studentName;
+	}
+
+	public ScoreVerifyRule getRule() {
+		return rule;
 	}
 
-	public void setParam(ScoreVerifyParam param) {
-		this.param = param;
+	public void setRule(ScoreVerifyRule rule) {
+		this.rule = rule;
+	}
+
+	public ScoreVerifyRuleCompare getRuleCompare() {
+		return ruleCompare;
+	}
+
+	public void setRuleCompare(ScoreVerifyRuleCompare ruleCompare) {
+		this.ruleCompare = ruleCompare;
+	}
+
+	public Integer getCompareScore() {
+		return compareScore;
+	}
+
+	public void setCompareScore(Integer compareScore) {
+		this.compareScore = compareScore;
 	}
 
 	public Integer getExamId() {
@@ -37,12 +77,5 @@ public class ScoreVerifyQuery extends BaseQuery<ScoreVerifyVo> {
 		this.userId = userId;
 	}
 
-	public Integer getScoreVerifyId() {
-		return scoreVerifyId;
-	}
-
-	public void setScoreVerifyId(Integer scoreVerifyId) {
-		this.scoreVerifyId = scoreVerifyId;
-	}
 
 }

+ 0 - 11
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ScoreVerifyDetailService.java

@@ -1,11 +0,0 @@
-package cn.com.qmth.stmms.biz.exam.service;
-
-import cn.com.qmth.stmms.biz.exam.model.ScoreVerifyDetail;
-
-public interface ScoreVerifyDetailService {
-
-	void tag(Integer userId,Integer scoreVerifyId, Integer studentId, boolean isTag);
-
-	ScoreVerifyDetail findByScoreVerifyIdAndStudentId(Integer scoreVerifyId, Integer studentId);
-
-}

+ 11 - 7
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ScoreVerifyService.java

@@ -10,17 +10,21 @@ public interface ScoreVerifyService {
 
 	List<ScoreVerifyVo> findByQuery(ScoreVerifyQuery req);
 
-	Integer countByQuery(Integer scoreVerifyId);
+	Integer countByQuery(Integer examId, Integer userId);
 
-	ScoreVerify findByExamIdAndUserId(Integer examId, Integer userId);
+	void createQuery(ScoreVerifyQuery query);
 
-	Integer createQuery(ScoreVerifyQuery query);
+	Integer needVerifyCount(Integer examId, Integer userId);
 
-	Integer needVerifyCount(Integer scoreVerifyId);
+	List<ScoreVerifyVo> findFlagged(Integer examId, Integer userId);
 
-	void reset(Integer id);
+	List<ScoreVerifyVo> needVerify(Integer examId, Integer userId);
 
-	List<ScoreVerifyVo> findFlagged(Integer id);
+	void tag(Integer examId, Integer userId, Integer studentId, boolean isTag);
 
-	List<ScoreVerifyVo> needVerify(Integer id);
+	ScoreVerify findByExamIdAndUserIdAndStudentId(Integer examId, Integer userId, Integer studentId);
+
+	void reset(Integer examId, Integer userId);
+
+	Boolean existByExamIdAndUserId(Integer examId, Integer userId);
 }

+ 0 - 37
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ScoreVerifyDetailServiceImpl.java

@@ -1,37 +0,0 @@
-package cn.com.qmth.stmms.biz.exam.service.impl;
-
-import java.util.Date;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import cn.com.qmth.stmms.biz.common.BaseQueryService;
-import cn.com.qmth.stmms.biz.exam.dao.ScoreVerifyDetailDao;
-import cn.com.qmth.stmms.biz.exam.model.ScoreVerifyDetail;
-import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
-import cn.com.qmth.stmms.biz.exam.service.ScoreVerifyDetailService;
-
-@Service
-public class ScoreVerifyDetailServiceImpl extends BaseQueryService<ScoreVerifyDetail> implements ScoreVerifyDetailService {
-    @Autowired
-    private ExamStudentService studentService;
-	@Autowired
-	private ScoreVerifyDetailDao scoreVerifyDetailDao;
-
-	@Transactional
-	@Override
-	public void tag(Integer userId,Integer scoreVerifyId, Integer studentId, boolean isTag) {
-		ScoreVerifyDetail sd=scoreVerifyDetailDao.findByScoreVerifyIdAndStudentId(scoreVerifyId,studentId);
-		sd.setFlagged(isTag);
-		sd.setVerifyTime(new Date());
-		scoreVerifyDetailDao.save(sd);
-		studentService.scoreVerifyTag(userId, studentId, isTag);
-	}
-	
-	@Override
-	public ScoreVerifyDetail findByScoreVerifyIdAndStudentId(Integer scoreVerifyId, Integer studentId) {
-		return scoreVerifyDetailDao.findByScoreVerifyIdAndStudentId(scoreVerifyId,studentId);
-	}
-
-}

+ 104 - 88
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ScoreVerifyServiceImpl.java

@@ -17,17 +17,14 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import com.google.gson.Gson;
-
 import cn.com.qmth.stmms.biz.common.BaseQueryService;
 import cn.com.qmth.stmms.biz.exam.bean.ScoreVerifyVo;
 import cn.com.qmth.stmms.biz.exam.dao.ScoreVerifyDao;
-import cn.com.qmth.stmms.biz.exam.dao.ScoreVerifyDetailDao;
 import cn.com.qmth.stmms.biz.exam.enums.ScoreVerifyRule;
 import cn.com.qmth.stmms.biz.exam.enums.ScoreVerifyRuleCompare;
 import cn.com.qmth.stmms.biz.exam.model.ScoreVerify;
-import cn.com.qmth.stmms.biz.exam.model.ScoreVerifyDetail;
 import cn.com.qmth.stmms.biz.exam.query.ScoreVerifyQuery;
+import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
 import cn.com.qmth.stmms.biz.exam.service.ScoreVerifyService;
 import cn.com.qmth.stmms.biz.exception.StatusException;
 import cn.com.qmth.stmms.biz.file.service.FileService;
@@ -41,9 +38,9 @@ public class ScoreVerifyServiceImpl extends BaseQueryService<ScoreVerify> implem
 
 	@Autowired
 	private ScoreVerifyDao scoreVerifyDao;
-	
+
 	@Autowired
-	private ScoreVerifyDetailDao scoreVerifyDetailDao;
+	private ExamStudentService examStudentService;
 
 	@Autowired
 	private FileService fileService;
@@ -63,8 +60,8 @@ public class ScoreVerifyServiceImpl extends BaseQueryService<ScoreVerify> implem
 		sql.append(
 				" t.is_upload upload,t.is_breach breach,t.is_absent absent,t.subjective_score subjectiveScore,t.subjective_score_list subjectiveScoreList,t.objective_score objectiveScore, ");
 		sql.append(" u.name scoreVerifyUserName,t.score_verify_time scoreVerifyTime ");
-		sql.append(" from eb_score_verify_detail r left join eb_exam_student t on r.student_id=t.id ");
-		sql.append(" left join b_user u on t.score_verify_user=u.id where r.score_verify_id="+ req.getScoreVerifyId());
+		sql.append(" from eb_score_verify r left join eb_exam_student t on r.student_id=t.id ");
+		sql.append(" left join b_user u on t.score_verify_user=u.id where r.exam_id=" + req.getExamId()+" and r.user_id="+req.getUserId());
 		sql.append(" order by t.student_code,t.subject_code ");
 		sql.append(" limit " + offset + "," + req.getPageSize());
 		Query query = entityManager.createNativeQuery(sql.toString());
@@ -79,61 +76,63 @@ public class ScoreVerifyServiceImpl extends BaseQueryService<ScoreVerify> implem
 	}
 
 	@Override
-	public Integer needVerifyCount(Integer scoreVerifyId) {
+	public Integer needVerifyCount(Integer examId, Integer userId) {
 		StringBuilder sql = new StringBuilder();
 		sql.append("select count(1) ");
-		sql.append("from eb_score_verify_detail t where t.score_verify_id=" + scoreVerifyId+" and t.flagged is null ");
+		sql.append(
+				"from eb_score_verify t where t.exam_id=" + examId+" and t.user_id="+userId + " and t.flagged is null ");
 		Query query = entityManager.createNativeQuery(sql.toString());
 		return Integer.valueOf(query.getResultList().get(0).toString());
 	}
-	
+
 	@Override
-	public Integer countByQuery(Integer scoreVerifyId) {
+	public Integer countByQuery(Integer examId, Integer userId) {
 		StringBuilder sql = new StringBuilder();
 		sql.append("select count(1) ");
-		sql.append("from eb_score_verify_detail t where t.score_verify_id=" + scoreVerifyId);
+		sql.append("from eb_score_verify t where t.exam_id=" + examId+" and t.user_id="+userId);
 		Query query = entityManager.createNativeQuery(sql.toString());
 		return Integer.valueOf(query.getResultList().get(0).toString());
 	}
 
+	@SuppressWarnings("unchecked")
 	@Override
-	public ScoreVerify findByExamIdAndUserId(Integer examId, Integer id) {
-		return scoreVerifyDao.findByExamIdAndUserId(examId, id);
+	public Boolean existByExamIdAndUserId(Integer examId, Integer userId) {
+		StringBuilder sql = new StringBuilder();
+		sql.append(" select r.id from eb_score_verify r where r.exam_id=" + examId+" and r.user_id="+userId);
+		sql.append(" limit 1");
+		Query query = entityManager.createNativeQuery(sql.toString());
+		List<ScoreVerify> ret = query.getResultList();
+		if(ret!=null&&ret.size()>0) {
+			return true;
+		}
+		return false;
 	}
 
 	@Transactional
 	@Override
-	public Integer createQuery(ScoreVerifyQuery req) {
-		if (req.getParam() == null || (StringUtils.isBlank(req.getParam().getStudentCode())
-				&& StringUtils.isBlank(req.getParam().getStudentName()) && req.getParam().getRule() == null)) {
+	public void createQuery(ScoreVerifyQuery req) {
+		if (StringUtils.isBlank(req.getStudentCode())
+				&& StringUtils.isBlank(req.getStudentName()) && req.getRule() == null) {
 			throw new StatusException("请选择至少一个条件");
 		}
-		if (ScoreVerifyRule.RULE2.equals(req.getParam().getRule())
-				|| ScoreVerifyRule.RULE3.equals(req.getParam().getRule())) {
-			if (req.getParam().getRuleCompare() == null) {
+		if (ScoreVerifyRule.RULE2.equals(req.getRule())
+				|| ScoreVerifyRule.RULE3.equals(req.getRule())) {
+			if (req.getRuleCompare() == null) {
 				throw new StatusException("请选择分数匹配条件");
 			}
-			if (req.getParam().getCompareScore() == null) {
+			if (req.getCompareScore() == null) {
 				throw new StatusException("请填写匹配分值");
 			}
 		}
-		ScoreVerify sv = new ScoreVerify();
-		sv.setCreateTime(new Date());
-		sv.setExamId(req.getExamId());
-		sv.setUserId(req.getUserId());
-		Gson gson = new Gson();
-		sv.setParams(gson.toJson(req.getParam()));
-		scoreVerifyDao.save(sv);
-		List<ScoreVerifyVo> allStudents=getAllStudent(req);
-		if(allStudents==null||allStudents.size()==0) {
+		List<ScoreVerifyVo> allStudents = getAllStudent(req);
+		if (allStudents == null || allStudents.size() == 0) {
 			throw new StatusException("没有满足条件的数据");
 		}
-		List<ScoreVerifyDetail> details=createDetailByQuery(sv.getId(), allStudents, req);
-		if(details==null||details.size()==0) {
+		List<ScoreVerify> details = createByQuery(allStudents, req);
+		if (details == null || details.size() == 0) {
 			throw new StatusException("没有满足条件的数据");
 		}
-		scoreVerifyDetailDao.save(details);
-		return sv.getId();
+		scoreVerifyDao.save(details);
 	}
 
 	@SuppressWarnings("unchecked")
@@ -142,11 +141,11 @@ public class ScoreVerifyServiceImpl extends BaseQueryService<ScoreVerify> implem
 		sql.append(
 				"select t.id studentId,t.student_code studentCode,t.subjective_score subjectiveScore,t.objective_score objectiveScore from eb_exam_student t  ");
 		sql.append("where exam_id=" + req.getExamId());
-		if (StringUtils.isNotBlank(req.getParam().getStudentCode())) {
-			sql.append(" and t.student_code='" + req.getParam().getStudentCode() + "'");
+		if (StringUtils.isNotBlank(req.getStudentCode())) {
+			sql.append(" and t.student_code='" + req.getStudentCode() + "'");
 		}
-		if (StringUtils.isNotBlank(req.getParam().getStudentName())) {
-			sql.append(" and t.name='" + req.getParam().getStudentName() + "'");
+		if (StringUtils.isNotBlank(req.getStudentName())) {
+			sql.append(" and t.name='" + req.getStudentName() + "'");
 		}
 		Query query = entityManager.createNativeQuery(sql.toString());
 		query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(ScoreVerifyVo.class));
@@ -154,9 +153,8 @@ public class ScoreVerifyServiceImpl extends BaseQueryService<ScoreVerify> implem
 		return ret;
 	}
 
-	private List<ScoreVerifyDetail> createDetailByQuery(Integer scoreVerifyId, List<ScoreVerifyVo> vos,
-			ScoreVerifyQuery req) {
-		List<ScoreVerifyDetail> ret = new ArrayList<>();
+	private List<ScoreVerify> createByQuery(List<ScoreVerifyVo> vos, ScoreVerifyQuery req) {
+		List<ScoreVerify> ret = new ArrayList<>();
 		if (vos != null & vos.size() > 0) {
 			Map<String, List<ScoreVerifyVo>> voMap = new HashMap<>();
 			for (ScoreVerifyVo vo : vos) {
@@ -169,18 +167,20 @@ public class ScoreVerifyServiceImpl extends BaseQueryService<ScoreVerify> implem
 			}
 			for (List<ScoreVerifyVo> temVos : voMap.values()) {
 				if (checkInQuery(temVos, req)) {
-					ret.addAll(of(scoreVerifyId, temVos));
+					ret.addAll(of(req, temVos));
 				}
 			}
 		}
 		return ret;
 	}
 
-	private List<ScoreVerifyDetail> of(Integer scoreVerifyId, List<ScoreVerifyVo> vos) {
-		List<ScoreVerifyDetail> ret = new ArrayList<>();
+	private List<ScoreVerify> of(ScoreVerifyQuery req, List<ScoreVerifyVo> vos) {
+		List<ScoreVerify> ret = new ArrayList<>();
 		for (ScoreVerifyVo vo : vos) {
-			ScoreVerifyDetail sv = new ScoreVerifyDetail();
-			sv.setScoreVerifyId(scoreVerifyId);
+			ScoreVerify sv = new ScoreVerify();
+			sv.setExamId(req.getExamId());
+			sv.setUserId(req.getUserId());
+			sv.setCreateTime(new Date());
 			sv.setStudentId(vo.getStudentId());
 			ret.add(sv);
 		}
@@ -188,70 +188,70 @@ public class ScoreVerifyServiceImpl extends BaseQueryService<ScoreVerify> implem
 	}
 
 	private boolean checkInQuery(List<ScoreVerifyVo> vos, ScoreVerifyQuery req) {
-		ScoreVerifyRule rule = req.getParam().getRule();
+		ScoreVerifyRule rule = req.getRule();
 		if (rule == null) {
 			return true;
 		}
-		if (rule != null&&vos.size()==1) {
+		if (rule != null && vos.size() == 1) {
 			return false;
 		}
-		//两个条件,满足各自条件的list
-		List<ScoreVerifyVo> group1=new ArrayList<>();
-		List<ScoreVerifyVo> group2=new ArrayList<>();
+		// 两个条件,满足各自条件的list
+		List<ScoreVerifyVo> group1 = new ArrayList<>();
+		List<ScoreVerifyVo> group2 = new ArrayList<>();
 		if (ScoreVerifyRule.RULE1.equals(rule)) {
 			for (ScoreVerifyVo vo : vos) {
-				double totalScore=Calculator.add(vo.getObjectiveScore(),vo.getSubjectiveScore());
-				if(totalScore>0) {
+				double totalScore = Calculator.add(vo.getObjectiveScore(), vo.getSubjectiveScore());
+				if (totalScore > 0) {
 					group1.add(vo);
 				}
-				if(totalScore==0) {
+				if (totalScore == 0) {
 					group2.add(vo);
 				}
 			}
 		} else if (ScoreVerifyRule.RULE2.equals(rule)) {
 			for (ScoreVerifyVo vo : vos) {
-				double totalScore=Calculator.add(vo.getObjectiveScore(),vo.getSubjectiveScore());
-				if(totalScore<=5) {
+				double totalScore = Calculator.add(vo.getObjectiveScore(), vo.getSubjectiveScore());
+				if (totalScore <= 5) {
 					group1.add(vo);
 				}
-				if(ScoreVerifyRuleCompare.EQUALS.equals(req.getParam().getRuleCompare())
-						&&totalScore==req.getParam().getCompareScore()) {
+				if (ScoreVerifyRuleCompare.EQUALS.equals(req.getRuleCompare())
+						&& totalScore == req.getCompareScore()) {
 					group2.add(vo);
-				}else if(ScoreVerifyRuleCompare.GT.equals(req.getParam().getRuleCompare())
-						&&totalScore>req.getParam().getCompareScore()) {
+				} else if (ScoreVerifyRuleCompare.GT.equals(req.getRuleCompare())
+						&& totalScore > req.getCompareScore()) {
 					group2.add(vo);
-				}else if(ScoreVerifyRuleCompare.LT.equals(req.getParam().getRuleCompare())
-						&&totalScore<req.getParam().getCompareScore()) {
+				} else if (ScoreVerifyRuleCompare.LT.equals(req.getRuleCompare())
+						&& totalScore < req.getCompareScore()) {
 					group2.add(vo);
 				}
 			}
 		} else if (ScoreVerifyRule.RULE3.equals(rule)) {
 			for (ScoreVerifyVo vo : vos) {
-				double totalScore=Calculator.add(vo.getObjectiveScore(),vo.getSubjectiveScore());
-				if(totalScore<=10) {
+				double totalScore = Calculator.add(vo.getObjectiveScore(), vo.getSubjectiveScore());
+				if (totalScore <= 10) {
 					group1.add(vo);
 				}
-				if(ScoreVerifyRuleCompare.EQUALS.equals(req.getParam().getRuleCompare())
-						&&totalScore==req.getParam().getCompareScore()) {
+				if (ScoreVerifyRuleCompare.EQUALS.equals(req.getRuleCompare())
+						&& totalScore == req.getCompareScore()) {
 					group2.add(vo);
-				}else if(ScoreVerifyRuleCompare.GT.equals(req.getParam().getRuleCompare())
-						&&totalScore>req.getParam().getCompareScore()) {
+				} else if (ScoreVerifyRuleCompare.GT.equals(req.getRuleCompare())
+						&& totalScore > req.getCompareScore()) {
 					group2.add(vo);
-				}else if(ScoreVerifyRuleCompare.LT.equals(req.getParam().getRuleCompare())
-						&&totalScore<req.getParam().getCompareScore()) {
+				} else if (ScoreVerifyRuleCompare.LT.equals(req.getRuleCompare())
+						&& totalScore < req.getCompareScore()) {
 					group2.add(vo);
 				}
 			}
 		}
-		
-		if(group1.size()>0&&group2.size()>0) {
-			if(group1.size()>=2||group2.size()>=2) {
-				//两个list都有值,且至少有一个数量大于2的一定满足
+
+		if (group1.size() > 0 && group2.size() > 0) {
+			if (group1.size() >= 2 || group2.size() >= 2) {
+				// 两个list都有值,且至少有一个数量大于2的一定满足
 				return true;
 			}
-			if(group1.size()==1&&group2.size()==1
-					&&!group1.get(0).getStudentId().equals(group2.get(0).getStudentId())) {
-				//都只有一条的时候,id不同则通过
+			if (group1.size() == 1 && group2.size() == 1
+					&& !group1.get(0).getStudentId().equals(group2.get(0).getStudentId())) {
+				// 都只有一条的时候,id不同则通过
 				return true;
 			}
 		}
@@ -260,22 +260,22 @@ public class ScoreVerifyServiceImpl extends BaseQueryService<ScoreVerify> implem
 
 	@Transactional
 	@Override
-	public void reset(Integer scoreVerifyId) {
-		scoreVerifyDao.delete(scoreVerifyId);
-		scoreVerifyDetailDao.deleteByScoreVerifyId(scoreVerifyId);
+	public void reset(Integer examId, Integer userId) {
+		scoreVerifyDao.deleteByExamIdAndUserId(examId, userId);
 	}
 
 	@SuppressWarnings("unchecked")
 	@Override
-	public List<ScoreVerifyVo> findFlagged(Integer scoreVerifyId) {
+	public List<ScoreVerifyVo> findFlagged(Integer examId, Integer userId) {
 		StringBuilder sql = new StringBuilder();
 		sql.append(
 				" select t.sheet_count sheetCount,t.exam_number examNumber,t.exam_id examId,t.id studentId,t.student_code studentCode,t.name studentName,t.subject_code subjectCode,t.subject_name subjectName, ");
 		sql.append(
 				" t.is_upload upload,t.is_absent absent,t.subjective_score subjectiveScore,t.subjective_score_list subjectiveScoreList,t.objective_score objectiveScore, ");
 		sql.append(" u.name scoreVerifyUserName,t.score_verify_time scoreVerifyTime ");
-		sql.append(" from eb_score_verify_detail r left join eb_exam_student t on r.student_id=t.id ");
-		sql.append(" left join b_user u on t.score_verify_user=u.id where r.score_verify_id="+ scoreVerifyId+" and t.score_verify_flagged =1 ");
+		sql.append(" from eb_score_verify r left join eb_exam_student t on r.student_id=t.id ");
+		sql.append(" left join b_user u on t.score_verify_user=u.id where  r.exam_id=" + examId+" and r.user_id="+userId
+				+ " and t.score_verify_flagged =1 ");
 		sql.append(" order by t.student_code,t.subject_code ");
 		Query query = entityManager.createNativeQuery(sql.toString());
 		query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(ScoreVerifyVo.class));
@@ -287,18 +287,19 @@ public class ScoreVerifyServiceImpl extends BaseQueryService<ScoreVerify> implem
 		}
 		return ret;
 	}
-	
+
 	@SuppressWarnings("unchecked")
 	@Override
-	public List<ScoreVerifyVo> needVerify(Integer scoreVerifyId) {
+	public List<ScoreVerifyVo> needVerify(Integer examId, Integer userId) {
 		StringBuilder sql = new StringBuilder();
 		sql.append(
 				" select t.sheet_count sheetCount,t.exam_number examNumber,t.exam_id examId,t.id studentId,t.student_code studentCode,t.name studentName,t.subject_code subjectCode,t.subject_name subjectName, ");
 		sql.append(
 				" t.is_upload upload,t.is_absent absent,t.subjective_score subjectiveScore,t.subjective_score_list subjectiveScoreList,t.objective_score objectiveScore, ");
 		sql.append(" u.name scoreVerifyUserName,t.score_verify_time scoreVerifyTime ");
-		sql.append(" from eb_score_verify_detail r left join eb_exam_student t on r.student_id=t.id ");
-		sql.append(" left join b_user u on t.score_verify_user=u.id where r.score_verify_id="+ scoreVerifyId+" and r.flagged is null ");
+		sql.append(" from eb_score_verify r left join eb_exam_student t on r.student_id=t.id ");
+		sql.append(" left join b_user u on t.score_verify_user=u.id where  r.exam_id=" + examId+" and r.user_id="+userId
+				+ " and r.flagged is null ");
 		sql.append(" order by t.student_code,t.subject_code ");
 		Query query = entityManager.createNativeQuery(sql.toString());
 		query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(ScoreVerifyVo.class));
@@ -310,4 +311,19 @@ public class ScoreVerifyServiceImpl extends BaseQueryService<ScoreVerify> implem
 		}
 		return ret;
 	}
+
+	@Transactional
+	@Override
+	public void tag(Integer examId, Integer userId, Integer studentId, boolean isTag) {
+		ScoreVerify sd = scoreVerifyDao.findByExamIdAndUserIdAndStudentId(examId, userId, studentId);
+		sd.setFlagged(isTag);
+		sd.setVerifyTime(new Date());
+		scoreVerifyDao.save(sd);
+		examStudentService.scoreVerifyTag(userId, studentId, isTag);
+	}
+
+	@Override
+	public ScoreVerify findByExamIdAndUserIdAndStudentId(Integer examId, Integer userId, Integer studentId) {
+		return scoreVerifyDao.findByExamIdAndUserIdAndStudentId(examId, userId, studentId);
+	}
 }

+ 2 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/InspectedController.java

@@ -457,6 +457,8 @@ public class InspectedController extends BaseExamController {
             sQuery.setAbsent(false);
             sQuery.setBreach(false);
             sQuery.setSubjectCode(subject.getCode());
+            long totalPaperCount = studentService.countByQuery(sQuery);
+            vo.setTotalPaperCount(totalPaperCount);
             sQuery.addStatus(SubjectiveStatus.INSPECTED);
             long inspectedCount = studentService.countByQuery(sQuery);
             vo.setInspectedCount(inspectedCount);

+ 14 - 27
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ScoreVerifyController.java

@@ -22,11 +22,9 @@ import cn.com.qmth.stmms.biz.exam.bean.ScoreVerifyInfo;
 import cn.com.qmth.stmms.biz.exam.bean.ScoreVerifyVo;
 import cn.com.qmth.stmms.biz.exam.model.Exam;
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
-import cn.com.qmth.stmms.biz.exam.model.ScoreVerify;
 import cn.com.qmth.stmms.biz.exam.query.ScoreVerifyQuery;
 import cn.com.qmth.stmms.biz.exam.service.ExamService;
 import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
-import cn.com.qmth.stmms.biz.exam.service.ScoreVerifyDetailService;
 import cn.com.qmth.stmms.biz.exam.service.ScoreVerifyService;
 import cn.com.qmth.stmms.biz.exception.StatusException;
 import cn.com.qmth.stmms.biz.file.service.FileService;
@@ -49,8 +47,6 @@ public class ScoreVerifyController extends BaseExamController {
     private ExamStudentService studentService;
 	@Autowired
 	private ScoreVerifyService scoreVerifyService;
-	@Autowired
-	private ScoreVerifyDetailService scoreVerifyDetailService;
 	
     @Autowired
     private TaskService taskService;
@@ -67,13 +63,12 @@ public class ScoreVerifyController extends BaseExamController {
 			return "modules/exam/permission";
 		}
 		WebUser wu = RequestUtils.getWebUser(request);
-		ScoreVerify sv=scoreVerifyService.findByExamIdAndUserId(examId,wu.getId());
-		if(sv==null) {
+		if(!scoreVerifyService.existByExamIdAndUserId(examId,wu.getId())) {
 			model.addAttribute("errmsg", "没有数据需要重置");
 			model.addAttribute("showType", "query");
 			return "modules/exam/scoreVerify";
 		}else {
-	        scoreVerifyService.reset(sv.getId());
+	        scoreVerifyService.reset(examId,wu.getId());
 	        model.addAttribute("showType", "query");
 			return "modules/exam/scoreVerify";
 		}
@@ -89,12 +84,10 @@ public class ScoreVerifyController extends BaseExamController {
 		WebUser wu = RequestUtils.getWebUser(request);
 		query.setExamId(examId);
 		query.setUserId(wu.getId());
-		ScoreVerify sv=scoreVerifyService.findByExamIdAndUserId(examId,wu.getId());
-		if(sv==null) {
+		if(!scoreVerifyService.existByExamIdAndUserId(examId,wu.getId())) {
 			model.addAttribute("showType", "query");
 			return "modules/exam/scoreVerify";
 		}else {
-			query.setScoreVerifyId(sv.getId());
 			model.addAttribute("fileServer", fileService.getFileServer());
 	        model.addAttribute("examType", exam.getType());
 			return query(model, request, query);
@@ -111,13 +104,11 @@ public class ScoreVerifyController extends BaseExamController {
 		WebUser wu = RequestUtils.getWebUser(request);
 		query.setExamId(examId);
 		query.setUserId(wu.getId());
-		ScoreVerify sv=scoreVerifyService.findByExamIdAndUserId(examId,wu.getId());
         model.addAttribute("fileServer", fileService.getFileServer());
         model.addAttribute("examType", exam.getType());
-		if(sv==null) {
+        if(!scoreVerifyService.existByExamIdAndUserId(examId,wu.getId())) {
 			return createAndQuery(model, request, query);
 		}else {
-			query.setScoreVerifyId(sv.getId());
 			return query(model, request, query);
 		}
 		
@@ -125,12 +116,11 @@ public class ScoreVerifyController extends BaseExamController {
 	
 	private String createAndQuery(Model model, HttpServletRequest request, ScoreVerifyQuery query) {
 		try {
-			Integer scoreVerifyId=scoreVerifyService.createQuery(query);
-			query.setScoreVerifyId(scoreVerifyId);
-			Integer totalCount = scoreVerifyService.countByQuery(scoreVerifyId);
+			scoreVerifyService.createQuery(query);
+			Integer totalCount = scoreVerifyService.countByQuery(query.getExamId(),query.getUserId());
 			if(totalCount>0) {
 				List<ScoreVerifyVo> list = scoreVerifyService.findByQuery(query);
-				Integer needVerifyCount = scoreVerifyService.needVerifyCount(scoreVerifyId);
+				Integer needVerifyCount = scoreVerifyService.needVerifyCount(query.getExamId(),query.getUserId());
 				query.setResult(list);
 				query.setTotalCount(totalCount);
 				model.addAttribute("needVerifyCount", needVerifyCount);
@@ -150,10 +140,10 @@ public class ScoreVerifyController extends BaseExamController {
 	}
 	
 	private String query(Model model, HttpServletRequest request, ScoreVerifyQuery query) {
-		Integer totalCount = scoreVerifyService.countByQuery(query.getScoreVerifyId());
+		Integer totalCount = scoreVerifyService.countByQuery(query.getExamId(),query.getUserId());
 		if(totalCount>0) {
 			List<ScoreVerifyVo> list = scoreVerifyService.findByQuery(query);
-			Integer needVerifyCount = scoreVerifyService.needVerifyCount(query.getScoreVerifyId());
+			Integer needVerifyCount = scoreVerifyService.needVerifyCount(query.getExamId(),query.getUserId());
 			query.setResult(list);
 			query.setTotalCount(totalCount);
 			model.addAttribute("needVerifyCount", needVerifyCount);
@@ -176,13 +166,12 @@ public class ScoreVerifyController extends BaseExamController {
 			return "modules/exam/permission";
 		}
 		WebUser wu = RequestUtils.getWebUser(request);
-    	ScoreVerify sv=scoreVerifyService.findByExamIdAndUserId(examId,wu.getId());
-    	if(sv==null) {
+		if(!scoreVerifyService.existByExamIdAndUserId(examId,wu.getId())) {
     		addMessage(redirectAttributes, "没有数据需要导出");
     		return "redirect:/admin/exam/score/verify/init";
     	}
         try {
-        	List<ScoreVerifyVo> list = scoreVerifyService.findFlagged(sv.getId());
+        	List<ScoreVerifyVo> list = scoreVerifyService.findFlagged(examId,wu.getId());
             String fileName = "标记卷数据.xlsx";
             new ExportExcel("标记卷数据", ScoreVerifyVo.class).setDataList(list).write(response, fileName)
                     .dispose();
@@ -198,12 +187,11 @@ public class ScoreVerifyController extends BaseExamController {
     public List<Integer> needVerify(HttpServletRequest request) {
     	Integer examId = getSessionExamId(request);
 		WebUser wu = RequestUtils.getWebUser(request);
-		ScoreVerify sv=scoreVerifyService.findByExamIdAndUserId(examId,wu.getId());
 		List<Integer> ret=new ArrayList<>();
-		if(sv==null) {
+		if(!scoreVerifyService.existByExamIdAndUserId(examId,wu.getId())) {
     		return ret;
     	}
-		List<ScoreVerifyVo> list = scoreVerifyService.needVerify(sv.getId());
+		List<ScoreVerifyVo> list = scoreVerifyService.needVerify(examId,wu.getId());
 		if(list==null||list.size()==0) {
 			return ret;
 		}
@@ -232,8 +220,7 @@ public class ScoreVerifyController extends BaseExamController {
         if (student != null) {
             int examId = getSessionExamId(request);
             WebUser wu = RequestUtils.getWebUser(request);
-            ScoreVerify sv=scoreVerifyService.findByExamIdAndUserId(examId,wu.getId());
-            scoreVerifyDetailService.tag(wu.getId(),sv.getId(),studentId,isTag);
+            scoreVerifyService.tag(examId,wu.getId(),studentId,isTag);
             obj.accumulate("success", true);
         } else {
             obj.accumulate("success", false);

+ 13 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/vo/InspectedSubjectVO.java

@@ -6,6 +6,11 @@ public class InspectedSubjectVO {
 
     private ExamSubject subject;
 
+    /**
+     * 试卷总量
+     */
+    private long totalPaperCount;
+    
     private long totalCount;
 
     private long inspectedCount;
@@ -64,4 +69,12 @@ public class InspectedSubjectVO {
         this.finishCount = finishCount;
     }
 
+	public long getTotalPaperCount() {
+		return totalPaperCount;
+	}
+
+	public void setTotalPaperCount(long totalPaperCount) {
+		this.totalPaperCount = totalPaperCount;
+	}
+
 }

+ 9 - 7
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/scoreVerifyQuery.jsp

@@ -24,22 +24,24 @@
 			type="hidden" id="pageSize" name="pageSize" value="20" />
 		<div>
 
-			<label>考生编号</label> <input type="text" name="param.studentCode"
-				id="studentCode" class="input-medium" /> <label>姓名</label> <input
-				type="text" name="param.studentName" id="studentName"
-				class="input-mini" /> <label>校验规则</label> <select
-				class="input-large" name="param.rule" id="rule">
+			<label>考生编号</label> <input type="text" name="studentCode"
+				id="studentCode" class="input-medium" /> 
+			<label>姓名</label> <input
+				type="text" name="studentName" id="studentName"
+				class="input-mini" /> 
+			<label>校验规则</label> <select
+				class="input-large" name="rule" id="rule">
 				<option value="">请选择</option>
 				<option value="RULE1">单科目有分,其它科目0分或无分</option>
 				<option value="RULE2">单科目分值小于等于5分,其它科目</option>
 				<option value="RULE3">单科目分值小于等于10分,其它科目</option>
 			</select> <span id="span-ruleCompare" hidden="true"> <select
-				class="input-small" name="param.ruleCompare" id="ruleCompare">
+				class="input-small" name="ruleCompare" id="ruleCompare">
 					<option value="">请选择</option>
 					<option value="EQUALS">等于</option>
 					<option value="GT">大于</option>
 					<option value="LT">小于</option>
-			</select> <input type="text" name="param.compareScore" id="compareScore"
+			</select> <input type="text" name="compareScore" id="compareScore"
 				class="input-mini" />
 			</span> <input id="btnQuery" class="btn" type="button" value="查询"
 				onclick="query()" />

+ 3 - 14
stmms-web/src/main/webapp/sql/stmms_ft.sql

@@ -1133,25 +1133,14 @@ CREATE TABLE `eb_score_verify`
 	`id`           int(11)     NOT NULL AUTO_INCREMENT COMMENT '主键',
     `exam_id`			int(11)     NOT NULL COMMENT '考试ID',
   	`user_id`		int(11) 	NOT NULL COMMENT '操作人ID',
-	`params` 		text 		 NOT NULL COMMENT '查询条件',
-    `create_time`  		datetime     NOT NULL COMMENT '创建时间',
-  PRIMARY KEY (`id`),
-  UNIQUE KEY `index1` (`exam_id`,`user_id`)
-)  ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4 COMMENT ='成绩校验查询条件';
-  
-DROP TABLE IF EXISTS `eb_score_verify_detail`;  
-CREATE TABLE `eb_score_verify_detail` 
-(
-	`id`           int(11)     NOT NULL AUTO_INCREMENT COMMENT '主键',
-    `score_verify_id`			int(11)     NOT NULL COMMENT '成绩校验查询条件ID',
     `student_id`			int(11)     NOT NULL COMMENT '考生ID',
   	`flagged`		tinyint(1)  DEFAULT NULL COMMENT '是否被标记',
+  	`create_time`  		datetime     NOT NULL COMMENT '创建时间',
   	`verify_time`  		datetime     DEFAULT NULL COMMENT '校验时间',
   PRIMARY KEY (`id`),
-  UNIQUE KEY `index1` (`score_verify_id`,`student_id`)
+  UNIQUE KEY `index1` (`exam_id`,`user_id`,`student_id`)
 )  ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4 COMMENT ='成绩校验结果';
+  DEFAULT CHARSET = utf8mb4 COMMENT ='成绩校验';
 
   
 # Dump of table eb_answer_card_subject

+ 6 - 4
stmms-web/src/main/webapp/sql/upgrade/1.3.14.sql

@@ -27,17 +27,19 @@ CREATE TABLE `eb_score_verify`
 )  ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4 COMMENT ='成绩校验查询条件';
   
-CREATE TABLE `eb_score_verify_detail` 
+CREATE TABLE `eb_score_verify` 
 (
 	`id`           int(11)     NOT NULL AUTO_INCREMENT COMMENT '主键',
-    `score_verify_id`			int(11)     NOT NULL COMMENT '成绩校验查询条件ID',
+    `exam_id`			int(11)     NOT NULL COMMENT '考试ID',
+  	`user_id`		int(11) 	NOT NULL COMMENT '操作人ID',
     `student_id`			int(11)     NOT NULL COMMENT '考生ID',
   	`flagged`		tinyint(1)  DEFAULT NULL COMMENT '是否被标记',
+  	`create_time`  		datetime     NOT NULL COMMENT '创建时间',
   	`verify_time`  		datetime     DEFAULT NULL COMMENT '校验时间',
   PRIMARY KEY (`id`),
-  UNIQUE KEY `index1` (`score_verify_id`,`student_id`)
+  UNIQUE KEY `index1` (`exam_id`,`user_id`,`student_id`)
 )  ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4 COMMENT ='成绩校验结果';
+  DEFAULT CHARSET = utf8mb4 COMMENT ='成绩校验';
   
 
 ALTER TABLE eb_answer_card ADD COLUMN `dpi` 	int(11) NOT NULL COMMENT 'dpi';