package com.qxueyou.scc.exercise.action; import java.util.ArrayList; 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.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.qxueyou.scc.admin.classes.service.IClassService; import com.qxueyou.scc.admin.teacher.service.ITeacherService; 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.ExerciseGroup; import com.qxueyou.scc.exercise.service.IExerciseGroupService; import com.qxueyou.scc.teach.subject.model.Subject; import com.qxueyou.scc.teach.subject.service.ISubjectService; import io.swagger.annotations.Api; /** * 练习题目控制 * * @author kevin * @history 2018-03-11 create kevin */ @Api(tags = "题库管理接口") @Controller @RequestMapping(value = "/exercise/group") public class ExerciseGroupController { // 分页查询中,默认记录条数和页数 private static final int DEFAULT_PAGE_SIZE = Integer.MAX_VALUE; private static final int DEFAULT_PAGE_NUM = 1; @Autowired private CommonDAO commonDAO; @Autowired private IExerciseGroupService exerciseGroupService; @Autowired private ITeacherService teacherService; @Autowired IClassService classService; @Autowired ISubjectService subjectService; /** * 题库列表 */ @RequestMapping(value = "/list", method = RequestMethod.GET) public @ResponseBody Result pageList(String keyword,Short status, Integer pageSize, Integer pageNum) { Result result = new Result(Boolean.TRUE); Pager page = new Pager(); List listResult = null; List queryParam = null; // 查询记录数 String hqlCount = "from ExerciseGroup where createId=? and type=? and name like ? and deleteFlag is false "; if(status!=null){ hqlCount = hqlCount.concat(" and status = ?"); queryParam = CollectionUtils.newList(ClientUtils.getUserId(), ExerciseGroup.TYPE_EXERCISE_GROUP_LIB,'%'+(keyword==null?"":keyword.trim())+'%',status); }else{ queryParam = CollectionUtils.newList(ClientUtils.getUserId(), ExerciseGroup.TYPE_EXERCISE_GROUP_LIB,'%'+(keyword==null?"":keyword.trim())+'%'); } int totalCount = commonDAO.findCount(hqlCount,queryParam); // page赋值 page.setTotalCount(totalCount); page.setPageSize(pageSize != null && pageSize > 0 ? pageSize : DEFAULT_PAGE_SIZE); page.setPageNum(pageNum != null && pageNum > 0 ? pageNum : DEFAULT_PAGE_NUM); StringBuffer hqlBuffer = new StringBuffer(500); hqlBuffer.append("select g,s.name from ExerciseGroup g,Subject s where g.subjectId=s.subjectId and g.createId=? and g.type=? and g.name like ? and g.deleteFlag is false "); if(status!=null){ hqlBuffer.append(" and g.status = ? "); } hqlBuffer.append(" order by g.createTime DESC"); List list = commonDAO.findList(hqlBuffer.toString(), page,queryParam,Object[].class); if(list!=null&& list.size()>0){ listResult = new ArrayList(); for(Object[] temp:list){ ((ExerciseGroup)temp[0]).setSubjectName((String) temp[1]); ((ExerciseGroup)temp[0]).setItems(null); listResult.add((ExerciseGroup)temp[0]); } } result.addData("list", listResult); result.addData("page", page); return result; } /** * 详情页面数据 * * @param exerciseGroupId * @return */ @RequestMapping(value = "/detail", method = RequestMethod.GET) public @ResponseBody Result detail(String groupId) { Result result = new Result(true); result.addData("detail", exerciseGroupService.queryExerciseGroupDetail(groupId)); return result; } /** * 保存题库基本信息 * * @param exerciseGroup * @return */ @RequestMapping(value = "/save", method = RequestMethod.POST) public @ResponseBody Result save(@RequestBody ExerciseGroup exerciseGroup) { Result result = null; String exerciseGroupId = exerciseGroup.getGroupId(); // 暂时题库类型配置为题库类型 if(StringUtils.isEmpty(exerciseGroupId)){ result = new Result(true); exerciseGroup.setType(ExerciseGroup.TYPE_EXERCISE_GROUP_LIB); exerciseGroupId = exerciseGroupService.addExerciseGroup(exerciseGroup); result.addData("groupId", exerciseGroupId); }else{ return exerciseGroupService.updateExerciseGroup(exerciseGroup); } return result; } /** * 删除 * * @param exerciseGroupIds * @return */ @RequestMapping(value = "/delete", method = RequestMethod.GET) public @ResponseBody Result delete(String exerciseGroupIds) { Result result = new Result(true); if (StringUtils.isNotEmpty(exerciseGroupIds)) { result = exerciseGroupService.deleteExerciseGroup(exerciseGroupIds.split(",")); } return result; } /** * 作业布置班级列表 * * @param examId * @return */ @RequestMapping(value = "/subject/list", method = RequestMethod.GET) public @ResponseBody List> subjectList(Integer subjectType) { //判断是否是教师 String teacherId = ClientUtils.isAdmin() ? null : teacherService.getTeacherIdByUserId(ClientUtils.getUserId()); if(subjectType==null){ subjectType= Subject.TYPE_ORG_SUBJECT; } return this.subjectService.queryAvailableSubjectIdAndName(teacherId,subjectType); } /** * 作业布置班级列表 * * @param examId * @return */ @RequestMapping(value = "/class/list", method = RequestMethod.GET) public @ResponseBody List> classList(String subjectId) { //判断是否是教师 String teacherId = ClientUtils.isAdmin() ? null : teacherService.getTeacherIdByUserId(ClientUtils.getUserId()); return classService.queryAvailableClassIdAndName(teacherId,subjectId); } /** * 发布题库 * * @param exerciseIds * @return */ @RequestMapping(value = "/exerciselib/publish", method = RequestMethod.GET) public @ResponseBody Result publishExerciseLib(String groupIds) { if (StringUtils.isEmpty(groupIds)) { return new Result(false, "参数错误"); } return this.exerciseGroupService.doPublishExerciseLib(groupIds.split(",")); } /** * 撤回题库 * * @param exerciseIds * @return */ @RequestMapping(value = "/exerciselib/revoke", method = RequestMethod.GET) public @ResponseBody Result revokeExerciseLib(String groupIds) { if (StringUtils.isEmpty(groupIds)) { return new Result(false, "参数错误"); } return this.exerciseGroupService.doRevokeExerciseLib(groupIds.split(",")); } /** * 题目统计 * @param examPaperIds * @return */ @RequestMapping(value = "/item/statistics", method = RequestMethod.GET) public @ResponseBody Result statisticsItem (String groupIds) { if (StringUtils.isEmpty(groupIds)) { return new Result(false, "参数错误"); } List lstGroupStatistics = this.exerciseGroupService.queryExerciseGroupItemsStatistic(groupIds.split(",")); return new Result(true, "success", CollectionUtils.newObjectMap("itemStatistics", QBeanUtils.listBean2ListMap(lstGroupStatistics,CollectionUtils.newStringMap( "groupId", "groupId", "name", "groupName","singleSelectCount", "singleSelectCount","multiSelectCount", "multiSelectCount", "judgeCount", "judgeCount", "questionCount", "questionCount", "fillBlanksCount", "fillBlanksCount" )) )); } }