package com.qxueyou.scc.exercise.service.impl; import java.util.List; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; 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.ClientUtils; import com.qxueyou.scc.base.util.CollectionUtils; import com.qxueyou.scc.base.util.TraceUtils; import com.qxueyou.scc.exercise.model.ExerciseCompleteInfo; import com.qxueyou.scc.exercise.model.ExerciseInfo; import com.qxueyou.scc.exercise.service.IExerciseCompleteService; import com.qxueyou.scc.media.model.MediaVideo; import com.qxueyou.scc.msg.model.MsgInfo; import com.qxueyou.scc.msg.service.IMsgInfoService; import com.qxueyou.scc.org.model.OrgText; import com.qxueyou.scc.org.service.IOrgTextService; import com.qxueyou.scc.school.model.SchHandout; /** * 考试管理服务层 * * @author kevin * @createTime 2017-11-1 */ @Service public class ExerciseCompleteService extends CommonAppService implements IExerciseCompleteService { @Autowired IOrgTextService orgTextService; @Autowired IMsgInfoService msgInfoService; @Override public List list(String keyword,String exerciseInfoId,Short status,Integer pageSize,Integer pageNum) { StringBuffer hql = new StringBuffer(500); hql.append("from ExerciseCompleteInfo e where e.exerciseInfoId=? and e.studentUserName like ? and e.deleteFlag is false"); List params = CollectionUtils.newList(exerciseInfoId,'%'+keyword.trim()+'%'); if(status!=null){ hql.append(" and e.completeStatus = ? "); params.add(status); } hql.append(" order by e.studentNo ASC"); return this.findList(hql.toString(), new Pager(pageSize, pageNum), params,ExerciseCompleteInfo.class); } @Override public int listCount(String keyword,String exerciseInfoId,Short status) { StringBuffer hql = new StringBuffer(500); hql.append("from ExerciseCompleteInfo where exerciseInfoId=? and studentUserName like ? and deleteFlag is false "); List params = CollectionUtils.newList(exerciseInfoId,'%'+keyword.trim()+'%'); if(status!=null){ hql.append(" and completeStatus = ?"); params.add(status); } return this.findCount(hql.toString(),params); } @Override public String addExerciseComplete(ExerciseCompleteInfo exerciseCompleteInfo) { exerciseCompleteInfo.setCompleteStatus(ExerciseCompleteInfo.STATUS_DRAFT); TraceUtils.setCreateTrace(exerciseCompleteInfo); this.insert(exerciseCompleteInfo); return exerciseCompleteInfo.getExerciseCompleteId(); } @Override public Result deleteExerciseComplete(String[] exerciseCompleteIds) { return bulkUpdateInLoop("update ExerciseCompleteInfo set deleteFlag = true where exerciseCompleteId=?", exerciseCompleteIds); } @Override public Result updateExerciseComplete(ExerciseCompleteInfo exerciseCompleteInfo) { exerciseCompleteInfo.setTeacherId(ClientUtils.getUserId()); exerciseCompleteInfo.setTeacherName(ClientUtils.getUserName()); TraceUtils.setUpdateTrace(exerciseCompleteInfo); save(exerciseCompleteInfo); if(exerciseCompleteInfo.getCompleteStatus()==ExerciseCompleteInfo.STATUS_CHECKED){ doCheckMsg(exerciseCompleteInfo); } return new Result(true); } private void doCheckMsg(ExerciseCompleteInfo completeInfo){ ExerciseInfo exerciseInfo = this.read(ExerciseInfo.class,completeInfo.getExerciseInfoId()); Map attrs = CollectionUtils.newStringMap("exerciseInfoId",exerciseInfo.getExerciseInfoId(),"exerciseName",exerciseInfo.getName(), "subjectId",exerciseInfo.getSubjectId(),"subjectName",exerciseInfo.getSubject().getName() ,"exerciseCompleteId",completeInfo.getExerciseCompleteId()); msgInfoService.doSendTextMsgToUsers(new String[]{completeInfo.getStudentUserId()},MsgInfo.TYPE_CHECK,"老师批改了作业 ", attrs); } @Override public ExerciseCompleteInfo queryExerciseCompleteDetail(String exerciseCompleteId) { ExerciseCompleteInfo completeInfo = this.read(ExerciseCompleteInfo.class, exerciseCompleteId); ExerciseInfo exerciseInfo = this.read(ExerciseInfo.class, completeInfo.getExerciseInfoId()); completeInfo.setCommitUploadType(exerciseInfo.getCommitUploadType()); completeInfo.setRemind(exerciseInfo.getRemind()); completeInfo.setExerciseType(exerciseInfo.getType()); completeInfo.setExerciseName(exerciseInfo.getName()); completeInfo.setContent(completeInfo.getUploadDesc()); completeInfo.setTotalScore(exerciseInfo.getScore()); // 如果文件作业是视频音频作业 if (exerciseInfo.getCommitUploadType() == ExerciseInfo.EXERCISE_FILE_COMMIT_VIDEO || exerciseInfo.getCommitUploadType() == ExerciseInfo.EXERCISE_FILE_COMMIT_AUDIO) { if (StringUtils.isNotEmpty(completeInfo.getTargetObjectId())) { MediaVideo video = this.read(MediaVideo.class, completeInfo.getTargetObjectId()); if (video.getStatus() == MediaVideo.STATUS_DRAFT) { completeInfo.setTransStatus(ExerciseCompleteInfo.PREVIEW_STATUS_OK); completeInfo .setPreviewPath(StringUtils.isNotEmpty(video.getAndroidHD()) ? video.getAndroidHD() : StringUtils.isNotEmpty(video.getAndroidSD()) ? video.getAndroidSD() : video.getAndroidLD()); } else { completeInfo.setTransStatus(ExerciseCompleteInfo.PREVIEW_STATUS_NO); } } } // 如果文件作业是讲义 if (exerciseInfo.getCommitUploadType() == ExerciseInfo.EXERCISE_FILE_COMMIT_DOC) { if (StringUtils.isNotEmpty(completeInfo.getTargetObjectId())) { SchHandout handout = this.read(SchHandout.class, completeInfo.getTargetObjectId()); if (handout.getStatus() == SchHandout.STATUS_DRAFT) { completeInfo.setTransStatus(ExerciseCompleteInfo.PREVIEW_STATUS_OK); completeInfo.setPreviewPath(handout.getFullPath()); } else { completeInfo.setTransStatus(ExerciseCompleteInfo.PREVIEW_STATUS_NO); } } } // 如果是写作作业 if (exerciseInfo.getType() == ExerciseInfo.EXERCISE_TYPE_WRITING && StringUtils.isNotEmpty(completeInfo.getTargetObjectId())) { completeInfo.setContent(this.orgTextService.getOrgText(completeInfo.getExerciseCompleteId(), OrgText.TABLE_WRITING_EXERCISE).getContent()); } return completeInfo; } @Override public ExerciseCompleteInfo queryCompleteInfo(String exerciseInfoId, String classId,String studentUserId){ return this.findUnique( "from ExerciseCompleteInfo where exerciseInfoId=? and classId=? and studentUserId=? and deleteFlag is false", CollectionUtils.newList(exerciseInfoId, classId, StringUtils.isNotEmpty(studentUserId)?studentUserId:ClientUtils.getUserId()), ExerciseCompleteInfo.class); } @Override public ExerciseCompleteInfo doCheckAndCreateExerciseCompleteInfo(String exerciseInfoId, String classId,String studentUserId) { ExerciseCompleteInfo completeInfo = queryCompleteInfo(exerciseInfoId,classId,studentUserId); if (completeInfo == null) { String hql = " select s.studentId,s.studentNo,s.userId,s.name,c.classId,c.name from StuStudent s ,ClsClass c where " + " s.classId= c.classId and s.classId=? and s.userId=? and c.deleteFlag is false and s.deleteFlag is false "; Object[] arrObj = this.findUnique(hql, CollectionUtils.newList(classId, StringUtils.isNotEmpty(studentUserId)?studentUserId:ClientUtils.getUserId()), Object[].class); if(arrObj!=null){ completeInfo = new ExerciseCompleteInfo(); completeInfo.setStudentId((String) arrObj[0]); completeInfo.setStudentNo((String) arrObj[1]); completeInfo.setStudentUserId((String) arrObj[2]); completeInfo.setStudentUserName((String) arrObj[3]); completeInfo.setClassId((String) arrObj[4]); completeInfo.setClassName((String) arrObj[5]); completeInfo.setExerciseInfoId(exerciseInfoId); completeInfo.setCompleteStatus(ExerciseCompleteInfo.STATUS_DRAFT); TraceUtils.setCreateTrace(completeInfo); this.save(completeInfo); } } return completeInfo; } }