package com.qxueyou.scc.exercise.action; import java.util.ArrayList; 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.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.qxueyou.scc.base.dao.CommonDAO; import com.qxueyou.scc.base.model.Result; import com.qxueyou.scc.base.util.ClientUtils; import com.qxueyou.scc.base.util.CollectionUtils; import com.qxueyou.scc.exercise.model.ExerciseCorrection; import com.qxueyou.scc.exercise.model.ExerciseCorrectionResult; import com.qxueyou.scc.exercise.model.ExerciseItem; import com.qxueyou.scc.exercise.model.ExerciseItemOption; import com.qxueyou.scc.exercise.model.ExerciseObjectImg; import com.qxueyou.scc.exercise.service.IExerciseCorrectionService; import com.qxueyou.scc.sys.model.SysDictionary; /** * 练习纠错控制 * @author alger */ @Controller @RequestMapping(value="/exercise/correction") public class ExerciseCorrectionController { @Autowired private CommonDAO commonDAO; @Autowired private IExerciseCorrectionService exerciseCorrectionService; /** * APP2.0: 从客户端接收纠错信息 * URL: /exercise/correction/addCorrInfoNew * * @param groupId 组Id * @param groupName 组名 * @param exerciseNum 练习 * @param exerciseId 练习id * @param correctids 错误选项信息 * @param content 错误内容 * @return */ @RequestMapping(value="addCorrInfoNew",method=RequestMethod.GET) public @ResponseBody Result doAdd( @RequestParam(value = "groupId") String groupId, @RequestParam(value = "groupName") String groupName, @RequestParam(value = "exerciseNum") String exerciseNum, @RequestParam(value = "exerciseId") String exerciseId, @RequestParam(value = "correctids") String correctids, String content) { Result objResult = exerciseCorrectionService.insertExerciseCorrection(groupId,groupName,exerciseNum,exerciseId,correctids,content); // 返回给客户端结果信息 return objResult; } /** * APP2.0: 客户端通过此从字典中查找信息 * URL: /exercise/correction/corrOptionsNew * * @return lst的键值对 */ @RequestMapping(value="corrOptionsNew",method=RequestMethod.POST) public @ResponseBody List> queryExerCorrectionOptions() { //从字典中查出数据 List lstDict = commonDAO.queryDictConfigMap("EXERCISE_CORRECTION_INFO"); if(lstDict.isEmpty()){ return new ArrayList>(); } //赋值给map集合 List> lstMap = new ArrayList>(lstDict.size()); Map map = null; for(SysDictionary dict:lstDict){ map = new HashMap(2); map.put("correctionId", dict.getDictionaryId()); map.put("correctionName", dict.getValue()); lstMap.add(map); } return lstMap; } /******************************************************************* 上面为App接口,下面为后台接口 **************************/ /** * list页 * * @return */ @RequestMapping(method = RequestMethod.GET) public ModelAndView listPage() { ModelAndView modelAndView = new ModelAndView("/exercise/Correction"); return modelAndView; } /** * 获取列表数据 * * @return */ @RequestMapping(value = "data", method = RequestMethod.GET) public @ResponseBody List data() { //查找 String hql = "from ExerciseCorrection where deleteFlag is false and classId= ? order by createTime Desc"; //获取列表数据,显示在屏幕的后台纠错页面表的基本信息 List list = commonDAO.find(hql, CollectionUtils.newList(ClientUtils.getClassId()), ExerciseCorrection.class); return list; } /** * 点击查看,读取题目 * @param exerciseCorrectionId * @return */ @RequestMapping(value = "readData", method = RequestMethod.POST) public @ResponseBody ExerciseCorrectionResult read(String exerciseCorrectionId,String exerciseItemId) { ExerciseCorrectionResult obj = new ExerciseCorrectionResult(); String hql = "from ExerciseCorrection where deleteFlag is false and exerciseItemId = ? "; //通过集合查询所有相同题目,不同人,以及不同类型的错误 List list = commonDAO.find(hql, CollectionUtils.newList(exerciseItemId), ExerciseCorrection.class); if(null != list && !list.isEmpty()){ String itemId1 = list.get(0).getExerciseItemId(); ExerciseItem objEI = commonDAO.read(ExerciseItem.class, itemId1); obj.setExerciseItem(objEI); obj.setLstExerciseCorrection(list); } return obj; } /** * 用来保存前台修改的数据 * @param correctionType 保存和纠错保存区分的状态码 * @param exerciseId 练习Id * @param analysis 题目分析 * @param title 题目 * @param type 类型 * @param optionA 选项A * @param optionB 选项B * @param optionC 选项C * @param optionD 选项D * @param optionE 选项E * @param optionF 选项F * @param checkA 判断A * @param checkB 判断B * @param checkC 判断C * @param checkD 判断D * @param checkE 判断E * @param checkF 判断F * @return */ @RequestMapping(value = "item/addOrUpdate", method = RequestMethod.POST) @ResponseBody public Result addOrUpdateItem( @RequestParam(value="correctionType",required=true) short correctionType, @RequestParam(value="exerciseId",required=true) String exerciseId, @RequestParam(value="analysis",required=false) String analysis, @RequestParam(value="title",required=true) String title, @RequestParam(value="type",required=true) short type, @RequestParam(value="title_imgsIds",required=false) String title_imgsIds, @RequestParam(value="optionA",required=false) String optionA, @RequestParam(value="optionA_Id",required=false) String optionA_Id, @RequestParam(value="optionA_imgIds",required=false) String optionA_imgIds, @RequestParam(value="optionB",required=false) String optionB, @RequestParam(value="optionB_Id",required=false) String optionB_Id, @RequestParam(value="optionB_imgIds",required=false) String optionB_imgIds, @RequestParam(value="optionC",required=false) String optionC, @RequestParam(value="optionC_Id",required=false) String optionC_Id, @RequestParam(value="optionC_imgIds",required=false) String optionC_imgIds, @RequestParam(value="optionD",required=false) String optionD, @RequestParam(value="optionD_Id",required=false) String optionD_Id, @RequestParam(value="optionD_imgIds",required=false) String optionD_imgIds, @RequestParam(value="optionE",required=false) String optionE, @RequestParam(value="optionE_Id",required=false) String optionE_Id, @RequestParam(value="optionE_imgIds",required=false) String optionE_imgIds, @RequestParam(value="optionF",required=false) String optionF, @RequestParam(value="optionF_Id",required=false) String optionF_Id, @RequestParam(value="optionF_imgIds",required=false) String optionF_imgIds, @RequestParam(value="checkA",required=false) boolean checkA, @RequestParam(value="checkB",required=false) boolean checkB, @RequestParam(value="checkC",required=false) boolean checkC, @RequestParam(value="checkD",required=false) boolean checkD, @RequestParam(value="checkE",required=false) boolean checkE, @RequestParam(value="checkF",required=false) boolean checkF) { List lstOptions = new ArrayList(8); createItemOption(getOptionOrder(type,'A'),optionA, checkA, optionA_Id, optionA_imgIds, lstOptions); createItemOption(getOptionOrder(type,'B'),optionB, checkB, optionB_Id, optionB_imgIds, lstOptions); createItemOption(getOptionOrder(type,'C'),optionC, checkC, optionC_Id, optionC_imgIds, lstOptions); createItemOption(getOptionOrder(type,'D'),optionD, checkD, optionD_Id, optionD_imgIds, lstOptions); createItemOption(getOptionOrder(type,'E'),optionE, checkE, optionE_Id, optionE_imgIds, lstOptions); createItemOption(getOptionOrder(type,'F'),optionF, checkF, optionF_Id, optionF_imgIds, lstOptions); //读取练习,查找题目名和题目类型 ExerciseItem item = this.commonDAO.read(ExerciseItem.class, exerciseId); item.setTitle(title); item.setType(type); return exerciseCorrectionService.updateExerciseItemCorrection(item, lstOptions, analysis, correctionType); } /** * 创建习题选项 * @param option * @param check * @param lstOptions */ private void createItemOption(String optionOrder,String option, boolean check, String optionId, String imgsId, List lstOptions) { if("True".equals(optionOrder) || "False".equals(optionOrder)){ option = optionOrder; } if(StringUtils.isEmpty(option)){ return; } ExerciseItemOption a = new ExerciseItemOption(); if(StringUtils.isNotBlank(optionId)){// 更新 a.setOptionId(optionId); } if(StringUtils.isNotBlank(imgsId)){//新增图片 String[] strImgsId = imgsId.split(","); List imgs = new ArrayList(strImgsId.length); ExerciseObjectImg objImg = null; for(String imgId:strImgsId){ objImg = new ExerciseObjectImg(); objImg.setImgId(imgId); imgs.add(objImg); } a.setImgs(imgs); } a.setChecked(check); a.setContent(option); a.setOptionOrder(optionOrder); lstOptions.add(a); } /** * 获得题目选项的顺序编号 * @param type2 * @param order * @return */ private String getOptionOrder(short type,char order){ if(ExerciseItem.TYPE_TRUE_OR_FALSE==type){ return order=='A'?"True":order=='B'?"False":null; }else{ return String.valueOf(order); } } }