package com.qxueyou.scc.exercise.action;
|
|
import java.io.IOException;
|
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.Controller;
|
import org.springframework.web.bind.annotation.*;
|
|
import com.fasterxml.jackson.core.JsonParseException;
|
import com.fasterxml.jackson.databind.JsonMappingException;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.qxueyou.scc.admin.classes.service.IClassService;
|
import com.qxueyou.scc.base.dao.CommonDAO;
|
import com.qxueyou.scc.base.model.Pager;
|
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.base.util.QBeanUtils;
|
import com.qxueyou.scc.exercise.model.ExerItemResponseData;
|
import com.qxueyou.scc.exercise.model.ExerciseCompleteInfo;
|
import com.qxueyou.scc.exercise.model.ExerciseExamReClass;
|
import com.qxueyou.scc.exercise.model.ExerciseInfo;
|
import com.qxueyou.scc.exercise.model.ExerciseItem;
|
import com.qxueyou.scc.exercise.model.ExerciseItemStatistics;
|
import com.qxueyou.scc.exercise.model.ExerciseResultV;
|
import com.qxueyou.scc.exercise.model.ExerciseSubmitAnswerData;
|
import com.qxueyou.scc.exercise.service.IExerciseCompleteService;
|
import com.qxueyou.scc.exercise.service.IExerciseGroupService;
|
import com.qxueyou.scc.exercise.service.IExerciseInfoService;
|
import com.qxueyou.scc.exercise.service.IExerciseVerService;
|
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
/**
|
* 作业管理
|
*
|
* @author kevin
|
*
|
*/
|
@Api(tags = "作业管理接口")
|
@Controller
|
@CrossOrigin(origins="*",maxAge=3600)
|
@RequestMapping(value = "/exercise/info")
|
public class ExerciseInfoController {
|
|
private static final int DEFAULT_PAGE_SIZE = 10;
|
private static final int DEFAULT_PAGE_NUM = 1;
|
|
/** commonDAO */
|
@Autowired
|
private CommonDAO commonDAO;
|
|
@Autowired
|
private IExerciseInfoService exerciseInfoService;
|
|
@Autowired
|
private IExerciseGroupService exerciseGroupService;
|
|
@Autowired
|
IClassService classService;
|
|
@Autowired
|
private IExerciseCompleteService exerciseCompleteService;
|
|
/** 练习V2.0版本接口service */
|
@Autowired
|
private IExerciseVerService exerciseVerService;
|
|
//------------------------------------------------app接口-------------------------------------------
|
/**
|
* 获取作业详情
|
*
|
* @param examId
|
* @return
|
*/
|
@ApiOperation(value = "获取作业详情", notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "exerciseInfoId", value = "作业id", required = true, paramType="query", dataType = "String"),
|
})
|
@RequestMapping(value = "/app/detail", method = RequestMethod.GET)
|
public @ResponseBody Result queryDetail(String exerciseInfoId) {
|
if (StringUtils.isEmpty(exerciseInfoId)) {
|
return new Result(false, "参数错误");
|
}
|
|
ExerciseInfo exerciseInfo = this.commonDAO.read(ExerciseInfo.class, exerciseInfoId);
|
|
Map<String,Object> data = QBeanUtils.copyPropertiesToMap(exerciseInfo, CollectionUtils.newStringMap(
|
"exerciseInfoId","exerciseInfoId","name","name","type","type","remind","remind","score","score",
|
"startTime","startTime","endTime","endTime","passingScore","passingScore"));
|
|
data.put("subjectName", exerciseInfo.getSubject().getName());
|
|
if(exerciseInfo.getReClasses()!=null && exerciseInfo.getReClasses().size()>0){
|
List<String> lstClassIds = QBeanUtils.listPropertyVal(exerciseInfo.getReClasses(), "classId");
|
String [] classIds = lstClassIds.toArray(new String[lstClassIds.size()]);
|
String [] classNames = classService.queryClassNamesByIds(classIds);
|
data.put("classIds", classIds);
|
data.put("classNames",classNames);
|
}
|
|
if(exerciseInfo.getReGroups()!=null && exerciseInfo.getReGroups().size()>0){
|
List<String> lstGroupIds = QBeanUtils.listPropertyVal(exerciseInfo.getReGroups(), "groupId");
|
String [] groupIds = lstGroupIds.toArray(new String[lstGroupIds.size()]);
|
String [] groupNames = exerciseGroupService.queryGroupNamesByIds(groupIds);
|
data.put("groupIds", groupIds);
|
data.put("groupNames", groupNames);
|
}
|
|
return new Result(true,"",data);
|
}
|
|
|
//-------------------------------------------------后台端接口-----------------------------------------
|
|
/**
|
* 作业列表
|
*
|
* @return
|
*/
|
@RequestMapping(value = "/list", method = RequestMethod.GET)
|
public @ResponseBody Result list(String keyword, String classId, Short status, Integer pageSize,Integer pageNum) {
|
pageSize = pageSize != null && pageSize > 0 ? pageSize : DEFAULT_PAGE_SIZE;
|
pageNum = pageNum != null && pageNum > 0 ? pageNum : DEFAULT_PAGE_NUM;
|
|
//作业数量
|
int totalCount = exerciseInfoService.listCount(keyword == null ? "" : keyword.trim(),classId,status);
|
Pager pager = new Pager(pageSize,pageNum);
|
pager.setTotalCount(totalCount);
|
|
List<ExerciseInfo> list = exerciseInfoService.list(keyword == null ? "" : keyword.trim(),classId,status,pageSize, pageNum);
|
List<Map<String, Object>> listResult =QBeanUtils.listBean2ListMap(list,
|
CollectionUtils.newStringMap("exerciseInfoId","exerciseInfoId","name","name","passingScore","passingScore","type","type",
|
"status","status","updateTime","updateTime","startTime","startTime","endTime","endTime","creator","creator","subject.name","subjectName"));
|
|
if(listResult!=null && listResult.size()>0){
|
Map<String,Integer> countMap = exerciseInfoService.queryResultStatusCount(QBeanUtils.listPropertyVal(list, "exerciseInfoId"));
|
countMap = countMap==null?new HashMap<String,Integer>(1):countMap;
|
Integer tempCount = null;
|
|
for (Map<String, Object> item : listResult) {
|
tempCount = countMap.get(item.get("exerciseInfoId") + "-" + ExerciseCompleteInfo.STATUS_CHECKED);
|
item.put("checkedCount", tempCount==null?0:tempCount);
|
|
tempCount = countMap.get(item.get("exerciseInfoId") + "-" + ExerciseCompleteInfo.STATUS_COMMIT);
|
item.put("toCheckCount",tempCount==null?0:tempCount);
|
|
tempCount = countMap.get(item.get("exerciseInfoId") + "-" + ExerciseCompleteInfo.STATUS_DRAFT);
|
item.put("unCommitCount",tempCount==null?0:tempCount);
|
|
tempCount = countMap.get(item.get("exerciseInfoId") + "-" + ExerciseCompleteInfo.STATUS_REDO);
|
item.put("reDoCount",tempCount==null?0:tempCount);
|
}
|
}
|
|
return new Result(true,"",CollectionUtils.newObjectMap("list",listResult,"pager",pager));
|
}
|
|
/**
|
* 保存作业基础信息
|
*
|
* @return
|
*/
|
@RequestMapping(value = "/save", method = RequestMethod.POST)
|
public @ResponseBody Result save(@RequestBody ExerciseInfo exerciseInfo) {
|
return StringUtils.isEmpty(exerciseInfo.getExerciseInfoId())?
|
this.exerciseInfoService.insertExerciseInfo(exerciseInfo):this.exerciseInfoService.updateExerciseInfo(exerciseInfo);
|
}
|
|
/**
|
* 删除作业
|
*
|
* @param examId
|
* @return
|
*/
|
@RequestMapping(value = "/delete", method = RequestMethod.GET)
|
public @ResponseBody Result deleteExercise(String exerciseInfoId) {
|
if (StringUtils.isEmpty(exerciseInfoId)) {
|
return new Result(false, "参数错误");
|
}
|
return this.exerciseInfoService.deleteExerciseInfo(exerciseInfoId);
|
}
|
|
/**
|
* 发布作业
|
*
|
* @param exerciseIds
|
* @return
|
*/
|
@RequestMapping(value = "/publish", method = RequestMethod.GET)
|
public @ResponseBody Result publishExerciseInfo(String exerciseIds) {
|
if (StringUtils.isEmpty(exerciseIds)) {
|
return new Result(false, "参数错误");
|
}
|
return this.exerciseInfoService.doPublishExercise(exerciseIds.split(","));
|
}
|
|
/**
|
* 撤回作业
|
*
|
* @param exerciseIds
|
* @return
|
*/
|
@RequestMapping(value = "/revoke", method = RequestMethod.GET)
|
public @ResponseBody Result revokeExerciseInfo(String exerciseIds) {
|
if (StringUtils.isEmpty(exerciseIds)) {
|
return new Result(false, "参数错误");
|
}
|
|
return this.exerciseInfoService.doRevokeExercise(exerciseIds.split(","));
|
}
|
|
/**
|
* 撤回作业校验
|
*
|
* @param exerciseIds
|
* @return
|
*/
|
@RequestMapping(value = "/checkRevoke", method = RequestMethod.GET)
|
public @ResponseBody Result checkRevokeExerciseInfo(String exerciseIds) {
|
int count= this.commonDAO.findCountByComplexHql("from ExerciseInfo f where f.startTime<=:startTime and f.exerciseInfoId in (:exerciseIds)",
|
CollectionUtils.newObjectMap("startTime",new Date(),"exerciseIds",exerciseIds));
|
|
return count>0?new Result(false,"已开始的作业不能撤回"):new Result(true);
|
}
|
|
/**
|
* 获取作业详情
|
*
|
* @param examId
|
* @return
|
*/
|
@ApiOperation(value = "获取作业详情", notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "exerciseInfoId", value = "作业id", required = true, paramType="query", dataType = "String"),
|
})
|
@RequestMapping(value = "/detail", method = RequestMethod.GET)
|
public @ResponseBody Result initExerciseInfo(String exerciseInfoId) {
|
Result result = new Result(true);
|
if (StringUtils.isEmpty(exerciseInfoId)) {
|
new Result(false, "参数错误");
|
}
|
ExerciseInfo exerciseInfo = this.commonDAO.read(ExerciseInfo.class, exerciseInfoId);
|
exerciseInfo.setSubjectName(exerciseInfo.getSubject().getName());
|
|
// 获取关联班机信息
|
if (exerciseInfo.getReClasses() != null) {
|
List<ExerciseExamReClass> reClasses = new ArrayList<ExerciseExamReClass>(
|
exerciseInfo.getReClasses().size());
|
List<Object[]> lstObj = this.commonDAO.find(
|
"select r,c.name from ExerciseExamReClass r,ClsClass c where r.examId=? and r.classId=c.classId and r.deleteFlag is false",
|
CollectionUtils.newList(exerciseInfoId), Object[].class);
|
|
for (int i = 0; i < exerciseInfo.getReClasses().size(); i++) {
|
((ExerciseExamReClass) lstObj.get(i)[0]).setClassName((String) lstObj.get(i)[1]);
|
reClasses.add((ExerciseExamReClass) lstObj.get(i)[0]);
|
}
|
|
exerciseInfo.setReClasses(reClasses);
|
}
|
|
//答题作业取题目信息
|
if(exerciseInfo.getType()== ExerciseInfo.EXERCISE_TYPE_ANSWER){
|
String groupId = exerciseInfoService.queryExerciseInfoRelatedGroupId(exerciseInfoId);
|
@SuppressWarnings("deprecation")
|
List<ExerciseItem> lstItem = exerciseVerService.queryExerciseItemList(groupId);
|
|
// 3.组装返回参数
|
ExerItemResponseData responseData = new ExerItemResponseData();
|
responseData.setExerciseGroupId(groupId);
|
responseData.setItems(lstItem);
|
result.addData("exerItem", responseData);
|
}
|
|
result.addData("exerciseInfo", exerciseInfo);
|
return result;
|
}
|
|
|
/**
|
* 作业题型配置
|
*
|
* @param examId
|
* @return
|
*/
|
@ApiOperation(value = "作业题型配置查询")
|
@RequestMapping(value = "/itemset/list", method = RequestMethod.GET)
|
public @ResponseBody List<Map<String, Object>> examItemTypeList(String exerciseInfoId) {
|
return this.commonDAO.findListWithMapByHql("select blankScore as blankScore,halfRightScore as halfRightScore,"
|
+ " itemType as itemType,rightScore as rightScore,wrongScore as wrongScore, itemCount as itemCount, itemCount*rightScore as totalScore"
|
+ " from ExerciseItemSet where exerciseInfoId = :exerciseInfoId and deleteFlag is false",
|
CollectionUtils.newObjectMap("exerciseInfoId", exerciseInfoId));
|
}
|
|
/**
|
* 作业布置班级列表
|
*
|
* @param examId
|
* @return
|
*/
|
@RequestMapping(value = "/relatedclass/list", method = RequestMethod.GET)
|
public @ResponseBody List<Map<String, Object>> classList(String exerciseInfoId) {
|
// TODO 作业布置查询班级需要修改
|
return this.commonDAO.findListWithMapByHql(
|
"select s.classId as classId,s.name as className from ExerciseExamReClass c,ClsClass s where c.deleteFlag is false and s.deleteFlag is false"
|
+ " and s.classId = c.classId and c.examId = :exerciseInfoId",
|
CollectionUtils.newObjectMap("exerciseInfoId", exerciseInfoId));
|
}
|
|
/**
|
* 作业题库来源列表
|
*
|
* @param examId
|
* @return
|
*/
|
@RequestMapping(value = "/relatedgroup/list", method = RequestMethod.GET)
|
public @ResponseBody List<Map<String, Object>> itemSourceList(String exerciseInfoId) {
|
return this.commonDAO.findListWithMapByHql(
|
"select s.name as groupName from ExerciseExamReGroup c,ExerciseGroup s where c.deleteFlag is false and s.deleteFlag is false"
|
+ " and s.groupId = c.groupId and c.examId = :exerciseInfoId",
|
CollectionUtils.newObjectMap("exerciseInfoId", exerciseInfoId));
|
}
|
|
|
/**
|
* 学员得分详情列表
|
*
|
* @param groupId
|
* @return
|
*/
|
@ApiOperation(value = "学员得分详情列表", notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "exerciseInfoId", value = "作业id", required = false, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "subjectId", value = "课程id", required = false, paramType="query", dataType = "String"),
|
})
|
@RequestMapping(value = "/teacher/answerresultlist", method = RequestMethod.GET)
|
public @ResponseBody Result resultList(String keyword,String exerciseInfoId,String subjectId, Short status,Integer pageSize,
|
Integer pageNum) {
|
pageSize = pageSize != null && pageSize > 0 ? pageSize : DEFAULT_PAGE_SIZE;
|
pageNum = pageNum != null && pageNum > 0 ? pageNum : DEFAULT_PAGE_NUM;
|
|
//作业数量
|
int totalCount = exerciseInfoService.queryStuExerciseListCount(keyword,exerciseInfoId,null,subjectId,status);
|
Pager pager = new Pager(pageSize,pageNum);
|
pager.setTotalCount(totalCount);
|
|
List<ExerciseResultV> list = exerciseInfoService.queryStuExerciselist(keyword,exerciseInfoId,null,subjectId,status,pageSize, pageNum);
|
List<Map<String, Object>> listResult =QBeanUtils.listBean2ListMap(list,
|
CollectionUtils.newStringMap("id.exerciseInfoId","exerciseInfoId","exerciseName","exerciseName","startTime","startTime","score","score",
|
"endTime","endTime","id.studentId","studentId","id.classId","classId","submitTime","submitTime","userId","studentUserId",
|
"studentName","studentUserName","exerciseCompleteId","exerciseCompleteId","studentScore","studentScore","subjectName","subjectName",
|
"studentNo","studentNo","completeStatus","completeStatus","className","className","sex","sex","mobilePhone","mobilePhone"));
|
|
return new Result(true,"",CollectionUtils.newObjectMap("list", listResult,"pager", pager));
|
}
|
|
//查询个人需要做的作业
|
@ApiOperation(value = "查询个人需要做的作业列表", notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "subjectId", value = "课程id", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "status", value = "作业状态查询(默认全部,0待完成,1已提交 ,2:已批阅,3需重写,4:逾期未交)", required = true, paramType="query", dataType = "Short"),
|
})
|
@RequestMapping(value = "/student/list", method = RequestMethod.GET)
|
public @ResponseBody Result queryStudentExerciseList(String keyword, String subjectId, Short status, Integer pageSize, Integer pageNum, HttpServletRequest request) {
|
pageSize = pageSize != null && pageSize > 0 ? pageSize : DEFAULT_PAGE_SIZE;
|
pageNum = pageNum != null && pageNum > 0 ? pageNum : DEFAULT_PAGE_NUM;
|
//作业数量
|
int totalCount = exerciseInfoService.queryStuExerciseListCount(keyword,null,ClientUtils.getUserId(),subjectId,status);
|
List<ExerciseResultV> list = exerciseInfoService.queryStuExerciselist(keyword,null,ClientUtils.getUserId(),subjectId,status,pageSize, pageNum);
|
List<Map<String, Object>> listResult =QBeanUtils.listBean2ListMap(list,
|
CollectionUtils.newStringMap("id.exerciseInfoId","exerciseInfoId","exerciseName","name","startTime","startTime",
|
"endTime","endTime","type","type","subjectName","subjectName","score","score","studentScore","studentScore",
|
"completeStatus","completeStatus","id.classId","classId","className","className"));
|
|
return new Result(true,"",CollectionUtils.newObjectMap("stuExercises", listResult,"exerciseCount", totalCount));
|
}
|
|
/**
|
* 开始做作业
|
*
|
* @param examId
|
* @return
|
*/
|
@ApiOperation(value = "开始做作业", notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "exerciseInfoId", value = "作业id", required = false, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "studentUserId", value = "userId", required = true, paramType="query", dataType = "String"),
|
})
|
@RequestMapping(value = "/student/startexercise", method = RequestMethod.GET)
|
public @ResponseBody Result doStartExercise(String exerciseInfoId, String classId,String studentUserId) {
|
System.out.println(ClientUtils.getUserId()+"做作业"+ClientUtils.getClassName()+"aaa"+ClientUtils.getClassId());
|
if (StringUtils.isEmpty(exerciseInfoId)) {
|
return new Result(false, "参数错误");
|
}
|
|
if(StringUtils.isEmpty(studentUserId)){
|
studentUserId = ClientUtils.getUserId();
|
}
|
|
return this.exerciseInfoService.doStartExerciseInfo(exerciseInfoId, StringUtils.isEmpty(classId)?ClientUtils.getClassId():classId,studentUserId);
|
}
|
|
/**
|
* 提交文件和写作作业
|
*
|
* @param examId
|
* @return
|
*/
|
@ApiOperation(value = "提交文件和写作作业", notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "exerciseCompleteInfoId", value = "提交记录id", required = false, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "content", value = "内容", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "fileId", value = "文件id", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "filePath", value = "文件路径", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "submitType", value = "提交方式(1:已提交作业,待批阅 2:已批阅 3:需重写 重写完后重新提交状态变为 1)", required = true, paramType="query", dataType = "short"),
|
})
|
@RequestMapping(value = "/student/submitexercise", method = RequestMethod.POST)
|
public @ResponseBody Result doSubmitFileExercise(
|
@RequestParam(value = "exerciseCompleteInfoId") String completeInfoId,
|
@RequestParam(value = "content") String content, @RequestParam(value = "fileId") String fileId,
|
@RequestParam(value = "filePath") String filePath, @RequestParam(value = "submitType") short submitType) {
|
|
if (StringUtils.isEmpty(completeInfoId)) {
|
return new Result(false, "参数错误");
|
}
|
|
return this.exerciseInfoService.doSubmitOtherExerciseInfo(completeInfoId, content, fileId, filePath,submitType);
|
}
|
|
/**
|
* 提交答题作业
|
*
|
* @param examId
|
* @return
|
* @throws IOException
|
* @throws JsonMappingException
|
* @throws JsonParseException
|
*/
|
@ApiOperation(value = "提交答题作业", notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "exerciseCompleteInfoId", value = "提交记录id", required = false, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "exerciseInfoId", value = "作业id", required = false, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "answers", value = "答题内容", required = true, paramType="query", dataType = "String"),
|
})
|
@RequestMapping(value = "/student/submitanswer", method = RequestMethod.POST)
|
public @ResponseBody Result doSubmitAnswerExercise(@RequestParam(value = "answers") String answers,
|
@RequestParam(value = "exerciseInfoId") String exerciseInfoId,
|
@RequestParam(value = "exerciseCompleteId") String exerciseCompleteId) throws Exception {
|
|
if (StringUtils.isEmpty(answers)) {
|
return new Result(false, "参数错误");
|
}
|
|
ExerciseSubmitAnswerData answerData = new ObjectMapper().readValue(answers, ExerciseSubmitAnswerData.class);
|
|
return this.exerciseInfoService.doSubmitAnswerExerciseInfo(answerData, exerciseInfoId, exerciseCompleteId);
|
}
|
|
@ApiOperation(value = "老师阅卷")
|
@ApiImplicitParams({@ApiImplicitParam(name="answerData", dataType="String", paramType="query", value="提交答案", required=true)})
|
@RequestMapping(value = "/teacher/check", method = RequestMethod.POST)
|
public @ResponseBody Object doCheck(@RequestBody ExerciseSubmitAnswerData answerData) {
|
return this.exerciseInfoService.doSubmitAnswerExerciseInfo(answerData, answerData.getExerciseInfoId(), answerData.getExerciseCompleteId());
|
}
|
|
/**
|
* 前端查看作业详情
|
*
|
* @param examId
|
* @return
|
*/
|
@ApiOperation(value = "查看学生作业详情", notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "exerciseCompleteInfoId", value = "提交记录id", required = false, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "studentUserId", value = "userId", required = true, paramType="query", dataType = "String"),
|
})
|
@RequestMapping(value = "/student/detail", method = RequestMethod.GET)
|
public @ResponseBody Result queryStudentExerciseDetail(String exerciseInfoId, String classId,String studentUserId) {
|
if (StringUtils.isEmpty(exerciseInfoId)) {
|
return new Result(false, "参数错误");
|
}
|
Map<String, Object> detailMap = new HashMap<String,Object>(30);
|
ExerciseInfo exerciseInfo = this.commonDAO.read(ExerciseInfo.class, exerciseInfoId);
|
detailMap.putAll(QBeanUtils.bean2Map(exerciseInfo, CollectionUtils.newStringMap(
|
"exerciseInfoId","exerciseInfoId",
|
"score","totalScore","passingScore","passingScore","remind","remind","type","exerciseType",
|
"creator","teacherName","name","exerciseName","startTime","startTime","endTime","endTime","subject.name","subjectName"
|
)));
|
|
ExerciseCompleteInfo completeInfo = exerciseCompleteService.doCheckAndCreateExerciseCompleteInfo(exerciseInfoId, classId, studentUserId);
|
if(completeInfo!=null){
|
detailMap.putAll(QBeanUtils.bean2Map(completeInfo,CollectionUtils.newStringMap(
|
"exerciseCompleteId","exerciseCompleteId","studentScore","studentScore","submitTime",
|
"submitTime","completeStatus","completeStatus","completeStatus","teacherComment","teacherComment"
|
)));
|
}
|
|
List<Map<String, Object>> lstItemSet = null;
|
if (((short) detailMap.get("exerciseType")) == ExerciseInfo.EXERCISE_TYPE_ANSWER) {
|
lstItemSet = QBeanUtils.listBean2ListMap(exerciseInfoService.queryExerciseItemSet(exerciseInfoId),
|
CollectionUtils.newStringMap("itemType","itemType","itemCount","itemCount"));
|
|
int itemCount = 0;
|
for (Map<String, Object> map : lstItemSet) {
|
itemCount += (int) map.get("itemCount");
|
}
|
|
detailMap.put("itemCount", itemCount);
|
}
|
return new Result(true,"",CollectionUtils.newObjectMap("detail", detailMap,"itemType", lstItemSet));
|
}
|
|
/**
|
* 初始化平均成绩和最高成绩
|
*
|
* @param groupId
|
* @return
|
*/
|
@RequestMapping(value = "initScore/{examId}", method = RequestMethod.GET)
|
public @ResponseBody Map<String, Object> initScore(@PathVariable String exerciseInfoId) {
|
Map<String, Object> map = this.exerciseInfoService.initScore(exerciseInfoId);
|
return map;
|
}
|
|
/**
|
* 每道题得分详情
|
*
|
* @param groupId
|
* @return
|
*/
|
@RequestMapping(value = "itemDetailList/{exerciseInfoId}", method = RequestMethod.GET)
|
public @ResponseBody List<ExerciseItemStatistics> scoreDetail(@PathVariable String exerciseInfoId) {
|
List<ExerciseItemStatistics> itemStatisLst = this.exerciseInfoService.itemDetailList(exerciseInfoId);
|
return itemStatisLst;
|
}
|
|
|
|
}
|