package com.qxueyou.scc.evaluate.service.impl; import java.util.ArrayList; 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.evaluate.service.IEvaluateTemplateService; import com.qxueyou.scc.exercise.model.ExerciseGroup; import com.qxueyou.scc.exercise.model.ExerciseItem; import com.qxueyou.scc.exercise.model.ExerciseItemScore; import com.qxueyou.scc.exercise.service.IExerciseService; import com.qxueyou.scc.school.model.SchEvaluateTemplate; @Service public class EvaluateTemplateService extends CommonAppService implements IEvaluateTemplateService { @Autowired private IExerciseService exerciseService; /** * 新增评估模板 */ public String insertEvaluateTemplate(SchEvaluateTemplate schEvaluateTemplate){ String evaluateTemplateId = schEvaluateTemplate.getEvaluateTemplateId(); if(StringUtils.isBlank(evaluateTemplateId)){ //插入组 ExerciseGroup obj = exerciseService.insertExerciseGroup(schEvaluateTemplate.getEvaluateTemplateName(),ExerciseGroup.TYPE_EXERCISE_TEACH_EVALUATE); if(null != obj){ //插入评估模板 SchEvaluateTemplate objTemplate = new SchEvaluateTemplate(); TraceUtils.setCreateTrace(objTemplate); objTemplate.setEvaluateTemplateName(schEvaluateTemplate.getEvaluateTemplateName()); objTemplate.setGroup_name(obj.getName()); objTemplate.setTemplateType(schEvaluateTemplate.getTemplateType()); objTemplate.setEvaluateRangeType(schEvaluateTemplate.getEvaluateRangeType()); objTemplate.setGroupId(obj.getGroupId()); objTemplate.setOrgId(ClientUtils.getOrgId()); objTemplate.setOrgName(ClientUtils.getOrgName()); save(objTemplate); evaluateTemplateId = objTemplate.getEvaluateTemplateId(); } }else{ SchEvaluateTemplate objSchEvaluateTemplate = this.read(SchEvaluateTemplate.class, evaluateTemplateId); TraceUtils.setUpdateTrace(objSchEvaluateTemplate); objSchEvaluateTemplate.setEvaluateTemplateName(schEvaluateTemplate.getEvaluateTemplateName()); objSchEvaluateTemplate.setTemplateType(schEvaluateTemplate.getTemplateType()); objSchEvaluateTemplate.setEvaluateRangeType(schEvaluateTemplate.getEvaluateRangeType()); save(objSchEvaluateTemplate); } return evaluateTemplateId; } /** * 删除评估模板 * @param ids * @param templateId * @return */ public Result deleteEvaluateTemplate(String groupId,String templateId){ Result objResult = null ; if(StringUtils.isNotBlank(groupId)){ this.deleteExerciseGroup(groupId); Object[] arrtemplateId = templateId.split(","); String hql = "update SchEvaluateTemplate set deleteFlag = true where evaluateTemplateId=?"; objResult = bulkUpdateInLoop(hql, arrtemplateId); } return objResult; } /** * 批量删除ExerciseGroup,删除逻辑:修改评估模板的同时修改习题组和练习题 * @param groupId 主键,多个id时以","分隔 * @return */ @Override public Result deleteExerciseGroup(String groupId) { //逻辑删除,只需要修改exercise_group、exercise_item的删除标识即可 if(StringUtils.isNotBlank(groupId)){ //需要删除的练习组 Object[] arrGroupId = groupId.split(","); String exeGroupHql = " from ExerciseGroup where groupId in (:groupId) "; Map groupIdMap = new HashMap(1); groupIdMap.put("groupId", CollectionUtils.newList(arrGroupId)); List exeGroupList = this.findByComplexHql(exeGroupHql, groupIdMap, ExerciseGroup.class); //删除习题组 if(exeGroupList != null){ for(ExerciseGroup group : exeGroupList){ group.setDeleteFlag(true); } } //20150618:配合前台app,所有修改同时修改group表最后修改时间 updateGroupUpdateTimeByList(exeGroupList); String exeItemHql = "select i from ExerciseGroupItemRe g, ExerciseItem i where g.exerciseItemId = i.exerciseId and g.exerciseGroupId in (:groupId)"; List exeItemList = this.findByComplexHql(exeItemHql, groupIdMap, ExerciseItem.class); //删除习题 if(exeItemList != null){ for(ExerciseItem item : exeItemList){ item.setDeleteFlag(true); } saveOrUpdateAll(exeItemList); } } return new Result(true); } /** * 所有练习修改操作需要同时修改group的updateTime * @param lstGroup */ private void updateGroupUpdateTimeByList(List lstGroup){ if(null != lstGroup && !lstGroup.isEmpty()){ for( ExerciseGroup obj : lstGroup){ obj.setUpdateTime(new Date(System.currentTimeMillis())); } saveOrUpdateAll(lstGroup); } } /** * 增加评分标准 * @param exerciseId * @param type * @param lstScore * @return */ public Result insertExerciseScore(String exerciseId,short type,List lstScore,String scoreAnswer, String exerciseItemScoreId){ List lstItemScore = new ArrayList(); return saveOrUpdateAll(lstItemScore); } }