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<ExerciseCompleteInfo> 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<Object> 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<Object> 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<String,String> 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;
|
}
|
|
}
|