package com.qxueyou.scc.exercise.service.impl; import java.util.Date; import java.util.HashMap; 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.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.ExerciseCorrection; import com.qxueyou.scc.exercise.model.ExerciseGroupItemRe; import com.qxueyou.scc.exercise.model.ExerciseItem; import com.qxueyou.scc.exercise.model.ExerciseItemOption; import com.qxueyou.scc.exercise.service.IExerciseCorrectionService; import com.qxueyou.scc.exercise.service.IExerciseService; import com.qxueyou.scc.sys.model.SysDictionary; /** * Á·Ï° ʵÏÖservice * @author * */ @Service public class ExerciseCorrectionService extends CommonAppService implements IExerciseCorrectionService { @Autowired private IExerciseService exerciseService; // @Autowired // IScoreChangeService scoreChangeService; /** * app½Ó¿Úµ÷ÓòåÈëÊý¾Ý * @param groupId * @param groupName * @param exerciseNum * @param exerciseId * @param correctids * @param content * @return */ public Result insertExerciseCorrection(String groupId,String groupName,String exerciseNum,String exerciseId,String correctids,String content){ //¸³Öµ ExerciseCorrection exerCorrection=new ExerciseCorrection(); exerCorrection.setDeleteFlag(false); TraceUtils.setCreateTrace(exerCorrection); exerCorrection.setExerciseGroupId(groupId); exerCorrection.setExerciseGroupName(groupName); // ÐÞ¸ÄΪ´ÓÊý¾Ý¿âÈ¡£¬Èç¹ûÊý¾Ý¿âÖÐÓÐÖµ String hql = " from ExerciseGroupItemRe r where r.exerciseGroupId = ? and r.exerciseItemId = ? and r.deleteFlag is false "; ExerciseGroupItemRe re = this.findUnique(hql, CollectionUtils.newList(groupId,exerciseId), ExerciseGroupItemRe.class); if(null != re && re.getItemOrder() != null ){ exerCorrection.setExerciseItemOrder(String.valueOf(re.getItemOrder())); }else{ exerCorrection.setExerciseItemOrder(exerciseNum); } exerCorrection.setExerciseItemId(exerciseId); exerCorrection.setRemark(content); //×Öµä×ֶεĸ³Öµ initDicForExerciseCorrection(correctids,exerCorrection); //Ìá½»ÈË£¬Ìá½»ÈËid ÒÔ¼°ÆäËûÐÅÏ¢¸³ÖµÍ¨¹ý²éÕÒClientUtils String classId = ClientUtils.getClassId(); exerCorrection.setClassId(classId); exerCorrection.setSubmitUserId(ClientUtils.getUserId()); exerCorrection.setSubmitUserName(ClientUtils.getUserName()); exerCorrection.setSubmitTime(new Date(System.currentTimeMillis())); exerCorrection.setDealStatus(ExerciseCorrection.DEAL_STATUS_TODO); this.save(exerCorrection); //¾À´íÔö¼Ó»ý·Ö // scoreChangeService.doExerCor(ClientUtils.getUserId(), exerciseId); return new Result(true); } /** * ×Öµä×ֶθ³Öµ * @param correctids * @param exerCorrection */ private void initDicForExerciseCorrection(String correctids,ExerciseCorrection exerCorrection){ String[] arrCorrectId = correctids.split(","); SysDictionary sysDic ; String errorTypeId = ""; String errorTypeName = ""; for(String strId: arrCorrectId){ sysDic = this.read(SysDictionary.class, strId); errorTypeId = errorTypeId.concat(sysDic.getDictionaryId()).concat(","); errorTypeName = errorTypeName.concat(sysDic.getValue()).concat(","); } //È¥µô¶àÓà"," if(StringUtils.isNotBlank(errorTypeId) && errorTypeId.indexOf(',') != -1){ errorTypeId = errorTypeId.substring(0, errorTypeId.length()-1); errorTypeName = errorTypeName.substring(0, errorTypeName.length()-1); } exerCorrection.setErrorTypeId(errorTypeId); exerCorrection.setErrorTypeName(errorTypeName); } /** * ¸üÐÂÁ·Ï° * @param item * @param lstOptions * @param analysis * @param correctionType * @return */ public Result updateExerciseItemCorrection(ExerciseItem item, List lstOptions,String analysis,short correctionType) { if(correctionType==ExerciseCorrection.DEAL_STATUS_DONE){ //´ýÍÆËÍÓû§idÁбí List submitorIdsLst = querySubmitorIdsByExerItemId(item.getExerciseId()); String hql = "update ExerciseCorrection set dealStatus = " + ExerciseCorrection.DEAL_STATUS_DONE + " where exerciseItemId = ? " ; bulkUpdateInLoop(hql, new String[]{item.getExerciseId()}); //ÍÆËÍÏûÏ¢¸øÏ°Ìâ¾À´íѧԱ pushNotification(item,submitorIdsLst); //¾À´í±»´¦ÀíÔö¼Ó»ý·Ö // scoreChangeService.doExerCorDeal(null, item.getExerciseId()); } return exerciseService.updateExerciseItem(item, lstOptions,analysis); } /** * ÍÆËÍ֪ͨ¸øÓû§ * @param item */ private void pushNotification(ExerciseItem item,List submitorIdsLst) { Map extras = new HashMap(1); extras.put("senderId", "sys_msg"); extras.put("type", "SYS_MSG"); //jpushService.doJpushByUserIds(submitorIdsLst, extras, "ϰÌâ¾À´í", "¾À´íÒÑ´¦Àí:"+item.getTitle(), "¾À´íÒÑ´¦Àí:"+item.getTitle()); //pushService.pushToAccountList("exerciseCorrect", "ϰÌâ¾À´í", "¾À´íÒÑ´¦Àí:"+item.getTitle(), submitorIdsLst,"sys_msg","SYS_MSG"); } /* * (non-Javadoc) * @see com.iqtogether.qxueyou.exercise.service.IExerciseCorrectionService#getSubmitorLstByExerciseItemId(java.lang.String) */ @Override public List querySubmitorIdsByExerItemId(String exerciseItemId) { String hql = "select c.submitUserId from ExerciseCorrection c where c.exerciseItemId=? and c.dealStatus=? and c.deleteFlag is false "; return find(hql, CollectionUtils.newList(exerciseItemId,ExerciseCorrection.DEAL_STATUS_TODO), String.class); } }