package com.qxueyou.scc.exam.service.impl; import java.text.SimpleDateFormat; import java.util.*; import com.qxueyou.scc.exam.model.ExamResultV; import org.springframework.stereotype.Service; import com.qxueyou.scc.base.model.Pager; import com.qxueyou.scc.base.model.Result; import com.qxueyou.scc.base.service.impl.CommonAppService; import com.qxueyou.scc.base.util.CollectionUtils; import com.qxueyou.scc.base.util.TraceUtils; import com.qxueyou.scc.exam.model.ExamBatchClassRe; import com.qxueyou.scc.exam.model.ExamBatchInfo; import com.qxueyou.scc.exam.service.IExamBatchService; /** * 试卷批次管理服务层 * * @author kevin * @createTime 2017-11-1 */ @Service public class ExamBatchService extends CommonAppService implements IExamBatchService { @Override public int queryExamBatchCount(Map param) { // TODO Auto-generated method stub return 0; } @Override public List queryExamBatchList(Map param,Pager page) { // TODO Auto-generated method stub return null; } @Override public List> queryListForIdName() { // String hql="select v from ExamResultV v where v.startTime >? "; //根据考试获取所有批次信息 String hql="select r from ExamBatchInfo i , ExamBatchClassRe r where i.examId in (SELECT e.examId from ExamInfo e where e.deleteFlag is false )" + " and i.deleteFlag is false and i.startTime>? and r.examBatchId=i.examBatchId "; //获取列表,开始时间大于当前时间,也就是还未开始 List examResults = this.find(hql, CollectionUtils.newList(new Date()), ExamBatchClassRe.class); List> list=new ArrayList<>(); for (ExamBatchClassRe examResult : examResults) { //封装成前端要用的数据 Map map=new HashMap<>(); //获取考试名称加批次信息 String ql="SELECT e.examName from ExamInfo e where e.deleteFlag is false and e.examId=?"; //获取考试名称 String s = this.findUnique(ql, CollectionUtils.newList(examResult.getExamId()), String.class); String q="SELECT e from ExamBatchInfo e where e.deleteFlag is false and e.examBatchId=?"; //批次信息 ExamBatchInfo examBatchInfo = this.findUnique(q, CollectionUtils.newList(examResult.getExamBatchId()), ExamBatchInfo.class); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //测试考试(考场一_2020-06-16 9:00 ~ 06-16 12:00) s+="("+examBatchInfo.getExamRoomName()+"_"+format.format(examBatchInfo.getStartTime())+" ~ "+new SimpleDateFormat("MM-dd HH:mm:ss").format(examBatchInfo.getEndTime())+")"; map.put("batchName",s); map.put("batchId",examResult.getExamBatchId()); map.put("classId",examResult.getClassId()); list.add(map); } return list; } @Override public List queryComNameByBatchId(String classId) { //根据所在组id String hql="select f.subjectId from StuStudent f where f.subjectId is not null and f.classId =? and f.deleteFlag is false group by f.subjectId"; //获取公司名称列表 return this.find(hql, CollectionUtils.newList(classId), String.class); } @Override public List queryStudentNoByComNameAndBatch(String subjectId,String classId) { //根据所在组id // String hql="select f.studentNo from StuStudent f where f.subjectId=? and f.classId =? and f.deleteFlag is false "; String hql="select f.studentNo from StuStudent f where f.classId =? and f.deleteFlag is false "; //获取列表 // return this.find(hql, CollectionUtils.newList(subjectId,classId), String.class); return this.find(hql, CollectionUtils.newList(classId), String.class); } @Override public String addExamBatch(ExamBatchInfo examBatchInfo) { //查询最大批次号 Short maxBatchNo = this.findUnique("select max(f.examBatchNo) from ExamBatchInfo f where f.examId =? and f.deleteFlag is false", CollectionUtils.newList(examBatchInfo.getExamId()), Short.class); maxBatchNo = maxBatchNo==null?0:maxBatchNo; examBatchInfo.setExamBatchNo(++maxBatchNo); TraceUtils.setCreateTrace(examBatchInfo); this.insert(examBatchInfo); List lstExamBatchClassRe = examBatchInfo.getReClasses(); if(lstExamBatchClassRe!=null &&lstExamBatchClassRe.size()>0){ for(ExamBatchClassRe examBatchClassRe :lstExamBatchClassRe){ TraceUtils.setCreateTrace(examBatchClassRe); examBatchClassRe.setExamBatchId(examBatchInfo.getExamBatchId()); examBatchClassRe.setExamId(examBatchInfo.getExamId()); this.insert(examBatchClassRe); } } return examBatchInfo.getExamBatchId(); } @Override public Result deleteExamBatch(String[] elxamBatchIds) { Result result = new Result(true) ; if(elxamBatchIds!=null && elxamBatchIds.length>0 ){ String hql = "update ExamBatchInfo set deleteFlag = true where examBatchId=?"; result = bulkUpdateInLoop(hql, elxamBatchIds); } return result; } @Override public Result updateExamBatch(ExamBatchInfo param) { ExamBatchInfo examBatchInfo = read(ExamBatchInfo.class, param.getExamBatchId()); if(examBatchInfo!=null){ TraceUtils.setUpdateTrace(examBatchInfo); examBatchInfo.setStartTime(param.getStartTime()); examBatchInfo.setEndTime(param.getEndTime()); List lstExamBatchClassRe = param.getReClasses(); //删除原来的关联关系 String hql="update ExamBatchClassRe set deleteFlag = true where examBatchId=? "; this.bulkUpdate(hql, new Object[]{ param.getExamBatchId()}); if(lstExamBatchClassRe!=null &&lstExamBatchClassRe.size()>0){ for(ExamBatchClassRe examBatchClassRe :lstExamBatchClassRe){ TraceUtils.setCreateTrace(examBatchClassRe); examBatchClassRe.setExamBatchId(examBatchInfo.getExamBatchId()); examBatchClassRe.setExamId(examBatchInfo.getExamId()); this.insert(examBatchClassRe); } } } return save(examBatchInfo); } @Override public ExamBatchInfo queryExamBatchDetail(String examBatchId) { return this.read(ExamBatchInfo.class, examBatchId); } @Override public ExamBatchClassRe queryExamBatchByClassId(String examBatchId) { String hql="select f from ExamBatchClassRe f where f.examBatchId =? and f.deleteFlag is false"; return this.findUnique(hql, CollectionUtils.newList(examBatchId), ExamBatchClassRe.class); } }