|
@@ -1,7 +1,10 @@
|
|
package cn.com.qmth.stmms.biz.exam.service.impl;
|
|
package cn.com.qmth.stmms.biz.exam.service.impl;
|
|
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
|
+import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
|
|
import javax.persistence.EntityManager;
|
|
import javax.persistence.EntityManager;
|
|
import javax.persistence.PersistenceContext;
|
|
import javax.persistence.PersistenceContext;
|
|
@@ -19,67 +22,78 @@ import com.google.gson.Gson;
|
|
import cn.com.qmth.stmms.biz.common.BaseQueryService;
|
|
import cn.com.qmth.stmms.biz.common.BaseQueryService;
|
|
import cn.com.qmth.stmms.biz.exam.bean.ScoreVerifyVo;
|
|
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.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.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.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.query.ScoreVerifyQuery;
|
|
import cn.com.qmth.stmms.biz.exam.service.ScoreVerifyService;
|
|
import cn.com.qmth.stmms.biz.exam.service.ScoreVerifyService;
|
|
import cn.com.qmth.stmms.biz.exception.StatusException;
|
|
import cn.com.qmth.stmms.biz.exception.StatusException;
|
|
|
|
+import cn.com.qmth.stmms.biz.file.service.FileService;
|
|
|
|
+import cn.com.qmth.stmms.biz.utils.Calculator;
|
|
|
|
|
|
@Service
|
|
@Service
|
|
public class ScoreVerifyServiceImpl extends BaseQueryService<ScoreVerify> implements ScoreVerifyService {
|
|
public class ScoreVerifyServiceImpl extends BaseQueryService<ScoreVerify> implements ScoreVerifyService {
|
|
-
|
|
|
|
|
|
+
|
|
@PersistenceContext
|
|
@PersistenceContext
|
|
- private EntityManager entityManager;
|
|
|
|
-
|
|
|
|
|
|
+ private EntityManager entityManager;
|
|
|
|
+
|
|
@Autowired
|
|
@Autowired
|
|
private ScoreVerifyDao scoreVerifyDao;
|
|
private ScoreVerifyDao scoreVerifyDao;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ScoreVerifyDetailDao scoreVerifyDetailDao;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private FileService fileService;
|
|
|
|
|
|
|
|
+ private void buildSheetUrl(ScoreVerifyVo student) {
|
|
|
|
+ student.setSheetUrls(
|
|
|
|
+ fileService.getSheetUris(student.getExamId(), student.getExamNumber(), 1, student.getSheetCount()));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @SuppressWarnings("unchecked")
|
|
@Override
|
|
@Override
|
|
public List<ScoreVerifyVo> findByQuery(ScoreVerifyQuery req) {
|
|
public List<ScoreVerifyVo> findByQuery(ScoreVerifyQuery req) {
|
|
- int offset=(req.getPageNumber() - 1) * req.getPageSize();
|
|
|
|
- StringBuilder sql = new StringBuilder();
|
|
|
|
- sql.append("select 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.subjective_score subjectiveScore,t.subjective_score_list subjectiveScoreList,t.objective_score objectiveScore, ");
|
|
|
|
- sql.append("u.name scoreVerifyUserName,t.score_check_time scoreVerifyTime ");
|
|
|
|
- sql.append("from eb_exam_student t left join b_user u on t.score_check_user=u.id where t.exam_id="+req.getExamId());
|
|
|
|
- sql.append(getWhereSql(req));
|
|
|
|
- sql.append("order by t.student_code,t.id ");
|
|
|
|
- sql.append("limit "+offset+","+req.getPageSize());
|
|
|
|
- Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
|
- query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(ScoreVerifyVo.class));
|
|
|
|
- return query.getResultList();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private String getWhereSql(ScoreVerifyQuery req) {
|
|
|
|
|
|
+ int offset = (req.getPageNumber() - 1) * req.getPageSize();
|
|
StringBuilder sql = new StringBuilder();
|
|
StringBuilder sql = new StringBuilder();
|
|
- if(StringUtils.isNotBlank(req.getParam().getStudentCode())) {
|
|
|
|
- sql.append(" and t.student_code='"+req.getParam().getStudentCode()+"'");
|
|
|
|
- }
|
|
|
|
- if(StringUtils.isNotBlank(req.getParam().getStudentName())) {
|
|
|
|
- sql.append(" and t.name='"+req.getParam().getStudentName()+"'");
|
|
|
|
- }
|
|
|
|
- ScoreVerifyRule rule=req.getParam().getRule();
|
|
|
|
- if(rule!=null) {
|
|
|
|
- if(ScoreVerifyRule.RULE1.equals(rule)) {
|
|
|
|
-
|
|
|
|
- }else if(ScoreVerifyRule.RULE2.equals(rule)) {
|
|
|
|
-
|
|
|
|
- }else if(ScoreVerifyRule.RULE3.equals(rule)) {
|
|
|
|
-
|
|
|
|
|
|
+ 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="+ req.getScoreVerifyId());
|
|
|
|
+ sql.append(" order by t.student_code,t.subject_code ");
|
|
|
|
+ sql.append(" limit " + offset + "," + req.getPageSize());
|
|
|
|
+ Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
|
+ query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(ScoreVerifyVo.class));
|
|
|
|
+ List<ScoreVerifyVo> ret = query.getResultList();
|
|
|
|
+ if (ret != null && !ret.isEmpty()) {
|
|
|
|
+ for (ScoreVerifyVo vo : ret) {
|
|
|
|
+ buildSheetUrl(vo);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return sql.toString();
|
|
|
|
|
|
+ return ret;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
- public Integer countByQuery(ScoreVerifyQuery req) {
|
|
|
|
|
|
+ public Integer needVerifyCount(Integer scoreVerifyId) {
|
|
StringBuilder sql = new StringBuilder();
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.append("select count(1) ");
|
|
sql.append("select count(1) ");
|
|
- sql.append("from eb_exam_student t where t.exam_id="+req.getExamId());
|
|
|
|
- sql.append(getWhereSql(req));
|
|
|
|
- Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
|
- return Integer.valueOf(query.getResultList().get(0).toString());
|
|
|
|
|
|
+ sql.append("from eb_score_verify_detail t where t.score_verify_id=" + scoreVerifyId+" 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) {
|
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
|
+ sql.append("select count(1) ");
|
|
|
|
+ sql.append("from eb_score_verify_detail t where t.score_verify_id=" + scoreVerifyId);
|
|
|
|
+ Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
|
+ return Integer.valueOf(query.getResultList().get(0).toString());
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -89,27 +103,211 @@ public class ScoreVerifyServiceImpl extends BaseQueryService<ScoreVerify> implem
|
|
|
|
|
|
@Transactional
|
|
@Transactional
|
|
@Override
|
|
@Override
|
|
- public void createQuery(ScoreVerifyQuery query) {
|
|
|
|
- if (query.getParam() == null || (StringUtils.isBlank(query.getParam().getStudentCode())
|
|
|
|
- && StringUtils.isBlank(query.getParam().getStudentName()) && query.getParam().getRule() == null)) {
|
|
|
|
|
|
+ public Integer createQuery(ScoreVerifyQuery req) {
|
|
|
|
+ if (req.getParam() == null || (StringUtils.isBlank(req.getParam().getStudentCode())
|
|
|
|
+ && StringUtils.isBlank(req.getParam().getStudentName()) && req.getParam().getRule() == null)) {
|
|
throw new StatusException("请选择至少一个条件");
|
|
throw new StatusException("请选择至少一个条件");
|
|
}
|
|
}
|
|
- if (ScoreVerifyRule.RULE2.equals(query.getParam().getRule())
|
|
|
|
- || ScoreVerifyRule.RULE3.equals(query.getParam().getRule())) {
|
|
|
|
- if(query.getParam().getRuleCompare()==null) {
|
|
|
|
|
|
+ if (ScoreVerifyRule.RULE2.equals(req.getParam().getRule())
|
|
|
|
+ || ScoreVerifyRule.RULE3.equals(req.getParam().getRule())) {
|
|
|
|
+ if (req.getParam().getRuleCompare() == null) {
|
|
throw new StatusException("请选择分数匹配条件");
|
|
throw new StatusException("请选择分数匹配条件");
|
|
}
|
|
}
|
|
- if(query.getParam().getCompareScore()==null) {
|
|
|
|
|
|
+ if (req.getParam().getCompareScore() == null) {
|
|
throw new StatusException("请填写匹配分值");
|
|
throw new StatusException("请填写匹配分值");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- ScoreVerify sv=new ScoreVerify();
|
|
|
|
|
|
+ ScoreVerify sv = new ScoreVerify();
|
|
sv.setCreateTime(new Date());
|
|
sv.setCreateTime(new Date());
|
|
- sv.setExamId(query.getExamId());
|
|
|
|
- sv.setUserId(query.getUserId());
|
|
|
|
|
|
+ sv.setExamId(req.getExamId());
|
|
|
|
+ sv.setUserId(req.getUserId());
|
|
Gson gson = new Gson();
|
|
Gson gson = new Gson();
|
|
- sv.setParams(gson.toJson(query.getParam()));
|
|
|
|
|
|
+ sv.setParams(gson.toJson(req.getParam()));
|
|
scoreVerifyDao.save(sv);
|
|
scoreVerifyDao.save(sv);
|
|
|
|
+ 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) {
|
|
|
|
+ throw new StatusException("没有满足条件的数据");
|
|
|
|
+ }
|
|
|
|
+ scoreVerifyDetailDao.save(details);
|
|
|
|
+ return sv.getId();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
|
+ private List<ScoreVerifyVo> getAllStudent(ScoreVerifyQuery req) {
|
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
|
+ 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.getParam().getStudentName())) {
|
|
|
|
+ sql.append(" and t.name='" + req.getParam().getStudentName() + "'");
|
|
|
|
+ }
|
|
|
|
+ Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
|
+ query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(ScoreVerifyVo.class));
|
|
|
|
+ List<ScoreVerifyVo> ret = query.getResultList();
|
|
|
|
+ return ret;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private List<ScoreVerifyDetail> createDetailByQuery(Integer scoreVerifyId, List<ScoreVerifyVo> vos,
|
|
|
|
+ ScoreVerifyQuery req) {
|
|
|
|
+ List<ScoreVerifyDetail> ret = new ArrayList<>();
|
|
|
|
+ if (vos != null & vos.size() > 0) {
|
|
|
|
+ Map<String, List<ScoreVerifyVo>> voMap = new HashMap<>();
|
|
|
|
+ for (ScoreVerifyVo vo : vos) {
|
|
|
|
+ List<ScoreVerifyVo> tem = voMap.get(vo.getStudentCode());
|
|
|
|
+ if (tem == null) {
|
|
|
|
+ tem = new ArrayList<>();
|
|
|
|
+ voMap.put(vo.getStudentCode(), tem);
|
|
|
|
+ }
|
|
|
|
+ tem.add(vo);
|
|
|
|
+ }
|
|
|
|
+ for (List<ScoreVerifyVo> temVos : voMap.values()) {
|
|
|
|
+ if (checkInQuery(temVos, req)) {
|
|
|
|
+ ret.addAll(of(scoreVerifyId, temVos));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return ret;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private List<ScoreVerifyDetail> of(Integer scoreVerifyId, List<ScoreVerifyVo> vos) {
|
|
|
|
+ List<ScoreVerifyDetail> ret = new ArrayList<>();
|
|
|
|
+ for (ScoreVerifyVo vo : vos) {
|
|
|
|
+ ScoreVerifyDetail sv = new ScoreVerifyDetail();
|
|
|
|
+ sv.setScoreVerifyId(scoreVerifyId);
|
|
|
|
+ sv.setStudentId(vo.getStudentId());
|
|
|
|
+ ret.add(sv);
|
|
|
|
+ }
|
|
|
|
+ return ret;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private boolean checkInQuery(List<ScoreVerifyVo> vos, ScoreVerifyQuery req) {
|
|
|
|
+ ScoreVerifyRule rule = req.getParam().getRule();
|
|
|
|
+ if (rule == null) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ if (rule != null&&vos.size()==1) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ //两个条件,满足各自条件的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) {
|
|
|
|
+ group1.add(vo);
|
|
|
|
+ }
|
|
|
|
+ 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) {
|
|
|
|
+ group1.add(vo);
|
|
|
|
+ }
|
|
|
|
+ if(ScoreVerifyRuleCompare.EQUALS.equals(req.getParam().getRuleCompare())
|
|
|
|
+ &&totalScore==req.getParam().getCompareScore()) {
|
|
|
|
+ group2.add(vo);
|
|
|
|
+ }else if(ScoreVerifyRuleCompare.GT.equals(req.getParam().getRuleCompare())
|
|
|
|
+ &&totalScore>req.getParam().getCompareScore()) {
|
|
|
|
+ group2.add(vo);
|
|
|
|
+ }else if(ScoreVerifyRuleCompare.LT.equals(req.getParam().getRuleCompare())
|
|
|
|
+ &&totalScore<req.getParam().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) {
|
|
|
|
+ group1.add(vo);
|
|
|
|
+ }
|
|
|
|
+ if(ScoreVerifyRuleCompare.EQUALS.equals(req.getParam().getRuleCompare())
|
|
|
|
+ &&totalScore==req.getParam().getCompareScore()) {
|
|
|
|
+ group2.add(vo);
|
|
|
|
+ }else if(ScoreVerifyRuleCompare.GT.equals(req.getParam().getRuleCompare())
|
|
|
|
+ &&totalScore>req.getParam().getCompareScore()) {
|
|
|
|
+ group2.add(vo);
|
|
|
|
+ }else if(ScoreVerifyRuleCompare.LT.equals(req.getParam().getRuleCompare())
|
|
|
|
+ &&totalScore<req.getParam().getCompareScore()) {
|
|
|
|
+ group2.add(vo);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ 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不同则通过
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Transactional
|
|
|
|
+ @Override
|
|
|
|
+ public void reset(Integer scoreVerifyId) {
|
|
|
|
+ scoreVerifyDao.delete(scoreVerifyId);
|
|
|
|
+ scoreVerifyDetailDao.deleteByScoreVerifyId(scoreVerifyId);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
|
+ @Override
|
|
|
|
+ public List<ScoreVerifyVo> findFlagged(Integer scoreVerifyId) {
|
|
|
|
+ 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 =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));
|
|
|
|
+ List<ScoreVerifyVo> ret = query.getResultList();
|
|
|
|
+ if (ret != null && !ret.isEmpty()) {
|
|
|
|
+ for (ScoreVerifyVo vo : ret) {
|
|
|
|
+ buildSheetUrl(vo);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return ret;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
|
+ @Override
|
|
|
|
+ public List<ScoreVerifyVo> needVerify(Integer scoreVerifyId) {
|
|
|
|
+ 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(" order by t.student_code,t.subject_code ");
|
|
|
|
+ Query query = entityManager.createNativeQuery(sql.toString());
|
|
|
|
+ query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(ScoreVerifyVo.class));
|
|
|
|
+ List<ScoreVerifyVo> ret = query.getResultList();
|
|
|
|
+ if (ret != null && !ret.isEmpty()) {
|
|
|
|
+ for (ScoreVerifyVo vo : ret) {
|
|
|
|
+ buildSheetUrl(vo);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return ret;
|
|
|
|
+ }
|
|
}
|
|
}
|