package com.qxueyou.scc.exam.service.impl; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; 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.base.util.UUIDUtils; import com.qxueyou.scc.exam.model.ExamPaperInfo; import com.qxueyou.scc.exam.service.IExamPaperSectionService; import com.qxueyou.scc.exam.service.IExamPaperService; import com.qxueyou.scc.exercise.model.ExerciseGroup; import com.qxueyou.scc.exercise.model.ExerciseItem; import com.qxueyou.scc.exercise.service.IExerciseGroupService; /** * ÊÔ¾í¹ÜÀí·þÎñ²ã * * @author kevin * @createTime 2017-11-1 */ @Service public class ExamPaperService extends CommonAppService implements IExamPaperService { @Autowired IExerciseGroupService exerciseGroupService; @Autowired IExamPaperSectionService examPaperSectionService; @Override public Result addExamPaper(ExamPaperInfo examPaperInfo) { Result result = new Result(true); String examPaperId = null, groupId = null; ExerciseGroup exerciseGroup = null; //´´½¨ÊÔ¾í¹ØÁªÌâ¿â exerciseGroup = new ExerciseGroup(); exerciseGroup.setName(examPaperInfo.getExamPaperName()+"-ÊÔ¾íÌâ¿â"); exerciseGroup.setType(ExerciseGroup.TYPE_EXERCISE_EXAM_ITEM); groupId = exerciseGroupService.addExerciseGroup(exerciseGroup); //±£´æÊÔ¾í examPaperId = UUIDUtils.generateUUID().replace("-", ""); examPaperInfo.setExamPaperId(examPaperId); examPaperInfo.setPaperStatus(ExamPaperInfo.STATUS_DRAFT); examPaperInfo.setGroupId(groupId); TraceUtils.setCreateTrace(examPaperInfo); this.insert(examPaperInfo); result.addData("examPaperId", examPaperId); return result; } @Override public Result deleteExamPaper(String[] examPaperIds) { Result result = new Result(true) ; if(examPaperIds!=null && examPaperIds.length>0 ){ String hql = "update ExamPaperInfo set deleteFlag = true where examPaperId=?"; result = bulkUpdateInLoop(hql, examPaperIds); } return result; } @Override public Result updateExamPaper(ExamPaperInfo param) { ExamPaperInfo examPaperInfo = read(ExamPaperInfo.class, param.getExamPaperId()); if(examPaperInfo!=null){ TraceUtils.setUpdateTrace(examPaperInfo); examPaperInfo.setDifficultLevel(param.getDifficultLevel()); examPaperInfo.setExamPaperName(param.getExamPaperName()); } return save(examPaperInfo); } @Override public Result doPublishExamPaper(String[] examPaperIds) { Map pramMap = null; if(examPaperIds!=null && examPaperIds.length>0){ pramMap = new HashMap(1); pramMap.put("examPaperIds", examPaperIds); String hql = "from ExamPaperInfo where examPaperId in (:examPaperIds)"; List lstExamPaperInfo = this.findByComplexHql(hql,pramMap, ExamPaperInfo.class); for (ExamPaperInfo examPaperInfo : lstExamPaperInfo) { if(ExamPaperInfo.STATUS_DRAFT!=examPaperInfo.getPaperStatus()){ return new Result(false, "Ö»Óвݸå״̬µÄÊÔ¾í,²ÅÄÜ·¢²¼¡£"); } if(examPaperInfo.getTotalScore()<=0){ return new Result(false, "ÊÔ¾í×Ü·Ö´óÓÚÁã,²ÅÄÜ·¢²¼¡£"); } examPaperInfo.setPaperStatus(ExamPaperInfo.STATUS_PUBLISH); TraceUtils.setUpdateTrace(examPaperInfo); save(examPaperInfo); } }else{ return new Result(false, "ûÓÐÑ¡ÔñÒª·¢²¼µÄÊÔ¾í¡£"); } return new Result(true); } @Override public Result doRevokeExamPaper(String[] examPaperIds) { Map pramMap = null; if(examPaperIds!=null && examPaperIds.length>0){ pramMap = new HashMap(1); pramMap.put("examPaperIds", examPaperIds); String hql = "from ExamPaperInfo where examPaperId in (:examPaperIds)"; List lstExamPaperInfo = this.findByComplexHql(hql,pramMap, ExamPaperInfo.class); for (ExamPaperInfo examPaperInfo : lstExamPaperInfo) { if(ExamPaperInfo.STATUS_PUBLISH!=examPaperInfo.getPaperStatus()){ return new Result(false, "Ö»Óз¢²¼×´Ì¬µÄÊÔ¾í,²ÅÄܳ·»Ø¡£"); } examPaperInfo.setPaperStatus(ExamPaperInfo.STATUS_DRAFT); TraceUtils.setUpdateTrace(examPaperInfo); save(examPaperInfo); } }else{ return new Result(false, "ûÓÐÑ¡ÔñÒª³·»ØµÄÊÔ¾í¡£"); } return new Result(true); } @Override public ExamPaperInfo queryExamPaperDetail(String examPaperId) { ExamPaperInfo examPaperInfo= this.read(ExamPaperInfo.class, examPaperId); ExerciseGroup exerciseGroup = exerciseGroupService.queryExerciseGroupDetail(examPaperInfo.getGroupId()); examPaperInfo.setExerciseGroup(exerciseGroup); return examPaperInfo; } @Override public Map queryExamPaperItemsStatistic(String[] examPaperIds){ Map resultMap =null; if(examPaperIds!=null &&examPaperIds.length>0){ resultMap = new LinkedHashMap(examPaperIds.length); String hql = " select p.examPaperId, i.type,count(i.type) from ExamPaperInfo p, ExerciseGroupItemRe r,ExerciseItem i where p.examPaperId in (:examPaperIds) " + "and p.groupId=r.exerciseGroupId and r.exerciseItemId = i.exerciseId and r.deleteFlag is false group by p.examPaperId,i.type"; Map param =new HashMap(); param.put("examPaperIds", examPaperIds); List lstItemStatics = this.findByComplexHql(hql, param, Object[].class); ExamPaperInfo tempPaperInfo = null; String tempPaperId = null; short tempType= 0; int tempCount=0; for(int i=0;i