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<Map<String, String>> queryExerCorrectionOptions() {
|
//从字典中查出数据
|
List<SysDictionary> lstDict = commonDAO.queryDictConfigMap("EXERCISE_CORRECTION_INFO");
|
|
if(lstDict.isEmpty()){
|
return new ArrayList<Map<String, String>>();
|
}
|
//赋值给map集合
|
List<Map<String, String>> lstMap = new ArrayList<Map<String, String>>(lstDict.size());
|
Map<String, String> map = null;
|
for(SysDictionary dict:lstDict){
|
map = new HashMap<String, String>(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<ExerciseCorrection> data() {
|
//查找
|
String hql = "from ExerciseCorrection where deleteFlag is false and classId= ? order by createTime Desc";
|
//获取列表数据,显示在屏幕的后台纠错页面表的基本信息
|
List<ExerciseCorrection> 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<ExerciseCorrection> 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<ExerciseItemOption> lstOptions = new ArrayList<ExerciseItemOption>(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<ExerciseItemOption> 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<ExerciseObjectImg> imgs = new ArrayList<ExerciseObjectImg>(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);
|
}
|
|
}
|
|
}
|