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.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; 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 com.fasterxml.jackson.databind.ObjectMapper; import com.qxueyou.scc.base.dao.CommonDAO; import com.qxueyou.scc.base.model.Constants; import com.qxueyou.scc.base.model.Pager; import com.qxueyou.scc.base.model.Result; import com.qxueyou.scc.exercise.model.ExciseExtendReqData; import com.qxueyou.scc.exercise.model.ExciseExtendReqListData; import com.qxueyou.scc.exercise.model.ExerGroupResponseData; import com.qxueyou.scc.exercise.model.ExerItemResponseData; import com.qxueyou.scc.exercise.model.ExerciseDataSubmitLog; import com.qxueyou.scc.exercise.model.ExerciseExtendRecordData; import com.qxueyou.scc.exercise.model.ExerciseFaultRecord; import com.qxueyou.scc.exercise.model.ExerciseFavoriteRecord; import com.qxueyou.scc.exercise.model.ExerciseRecord; import com.qxueyou.scc.exercise.model.ExerciseSubmitAnswerData; import com.qxueyou.scc.exercise.model.ExerciseSubmitAnswerDataList; import com.qxueyou.scc.exercise.service.IExerciseExtendService; /** * 练习扩展控制 * 如收藏 错题 笔记 * @author zhiyong * */ @Controller @RequestMapping(value = "/exercise/Extend") public class ExerciseExtendController { /** 日志 */ private static final Logger log = LogManager.getLogger("ExerciseExtendController"); /** commonDAO */ @Autowired private CommonDAO commonDAO; /** 练习扩展service */ @Autowired private IExerciseExtendService exerciseExtendService; /**-----------------------------------------APP V2.0 接口 start----------------------------------------------------------- */ /** * APP2.0: 查询错题本ListItem * URL: /exercise/Extend/faultList * * 请求参数={ subjectId:课程id,//可选,用于高校版 exerType:练习类型,//必传 page:当前页,//必传,大于0 limit:每页限制条数,//必传,大于0 } 返回参数=[ { "groupId":"组id", "classId":班级id, "courseId":科目id, "orgId":机构id, "subjectId":课程id, "name":"组名", "type":组类型 , "updateTime":更新时间, "answerUpdateTime":本套题答题更新时间, "allCount":题目总数, "exerciseTime":"考试时间", "exerciseRecordId":"记录id", "doCount": 做题个数, "correctCount": 正确个数, "submitNumber":已提交人数(家庭作业), "currTitleNumber":当前做题序号, "status":做题状态(0:未提交 1:已提交), "completionRate": 完成率, "accuracy": 正确率, "score": 分数, "extendAllCount":错题本、收藏本总数 }, ...循环多个 ] * * @return */ @RequestMapping(value = "faultList", method = RequestMethod.GET) public @ResponseBody List queryFaultList( @RequestParam(value="exerType") int exerType,// 0 表示全部错题 @RequestParam(value="subjectId", required = false) String subjectId, @RequestParam(value="page", required = false) Integer page, @RequestParam(value="limit", required = false) Integer limit) { // 得到分页数据 Pager pager = getPager(page, limit); // 查询结果 List lstResult = exerciseExtendService. queryExerciseFaultListData(exerType, null, pager); if(null == lstResult){// 结果转换成 [] lstResult = new ArrayList(); } return lstResult; } /** * APP2.0: 查询收藏本ListItem * URL: /exercise/Extend/favorList * * @return */ @RequestMapping(value = "favorList", method = RequestMethod.GET) public @ResponseBody List queryFavorList( @RequestParam(value="exerType") int exerType,// 0全部收藏 @RequestParam(value="subjectId", required = false) String subjectId, @RequestParam(value="page", required = false) Integer page, @RequestParam(value="limit", required = false) Integer limit) { // 得到分页数据 Pager pager = getPager(page, limit); // 查询结果 List lstResult = exerciseExtendService. queryExerciseFavorListData(exerType, null, pager); if(null == lstResult){// 结果转换成 [] lstResult = new ArrayList(); } return lstResult; } /** * APP2.0: 获取错题练习题目数据 * URL: /exercise/Exercise/faultExercise * @param groupId 组id * @param exerciseRecordId 练习记录id * @return */ @RequestMapping(value = "faultExercise", method = RequestMethod.GET) public @ResponseBody ExerItemResponseData getFaultExerciseData( @RequestParam(value = "groupId") String groupId) { // 查询结果 ExerItemResponseData resultData = exerciseExtendService.queryExerciseFaultData(groupId); return resultData; } /** * 查询多套题收藏题目 * @param groupId 格式"111,222,333...." * @return */ @RequestMapping(value = "faultMutiExercise", method = RequestMethod.GET) public @ResponseBody List> getFaultrMutiExerciseData( @RequestParam(value = "groupId") String groupId) { String[] groupIds = groupId.split(","); if(groupIds.length<1){ return null; } List> resultDataLst = new ArrayList>(groupIds.length); for(String exerGroupId:groupIds){ try{ // 查询结果 resultDataLst.add(exerciseExtendService.queryExerciseMutiFaultData(exerGroupId)); }catch(Exception e){ log.error("查询多套题faultMutiExercise结果失败,groupId="+exerGroupId,e); } } return resultDataLst; } /** * * @param page * @param limit * @return */ private Pager getPager(Integer page, Integer limit){ Integer pageNum = page; Integer pageSize = limit; Pager pager = new Pager(); if(pageNum == null){ pageNum = 1; pageSize=Integer.MAX_VALUE; } pager.setPageNum(pageNum); pager.setPageSize(pageSize); return pager; } /** * APP2.0: 获取全部错题练习题目数据 * URL: /exercise/Extend/allFaultExercise * @return */ @RequestMapping(value = "allFaultExercise", method = RequestMethod.GET) public @ResponseBody ExerItemResponseData getAllFaultExerciseData( @RequestParam(value="limit", required = false) Integer limit, @RequestParam(value="page", required = false) Integer page) { // 得到分页数据 Pager pager = getPager(page, limit); // 查询结果 ExerItemResponseData resultData = exerciseExtendService.queryAllExerciseFaultData(pager); return resultData; } /** * APP2.0: 获取收藏练习题目数据 * URL: /exercise/Exercise/favorExercise * 返回数据={ "items":[// 题目集合 { "exerciseId":练习id, "chapterId":null, "lessonId":null, "title":标题, "type":题目类型, "answer":正确答案, "options":[ { "optionId":选项id, "checked":true, "content":内容, "optionOrder":题目序号, "exerciseItemId":"练习id", "imgs":[ { "imgId":"图片id", "exerciseObjectId":null, "imgPath":图片路径, "imgOrder":排序, "objectType":图片类型 1:题目 2:选项 }, ... 循环多个 ] }, ... 循环多个 ], "scores":null, "itemNo":null, "analisisResult":{ "allAccuracy":全站统计 正确率, "analysis":"解析", "submitAllNumber":全站 提交总数, "usualFaultAnswers":易错题, "exerciseAnalisisUId":null, "accuracy":个人统计 正确率, "submitNumber":个人统计 提交总数, "submitErrorNumber":个人统计 提交错误总数, }, "imgs":[ { "imgId":"图片id", "exerciseObjectId":null, "imgPath":图片路径, "imgOrder":排序, "objectType":图片类型 1:题目 2:选项 }, ... 循环多个 ], "commentFlag": null, } ], "answers":[// 个人答案集合 { "answerUId":"主键id", "answer":选择答案 如:多选为(A,B,C), "correct":0, "exerciseItemId":练习id, "exerciseRecordId":记录id, "userId":用户id }, ... 循环多个 ] } * * @param groupId 组id * @param exerciseRecordId 练习记录id * @return */ @RequestMapping(value = "favorExercise", method = RequestMethod.GET) public @ResponseBody ExerItemResponseData getFavorExerciseData( @RequestParam(value = "groupId") String groupId) { // 查询结果 ExerItemResponseData resultData = exerciseExtendService.queryExerciseFavorData(groupId); return resultData; } /** * 查询多套题收藏题目 * @param groupId 格式"111,222,333...." * @return */ @RequestMapping(value = "favorMutiExercise", method = RequestMethod.GET) public @ResponseBody List> getFavorMutiExerciseData( @RequestParam(value = "groupId") String groupId) { String[] groupIds = groupId.split(","); if(groupIds.length<1){ return null; } List> resultDataLst = new ArrayList>(groupIds.length); for(String exerGroupId:groupIds){ try{ // 查询结果 resultDataLst.add(exerciseExtendService.queryExerciseMutiFavorData(exerGroupId)); }catch(Exception e){ log.error("查询多套题favorMutiExercise结果失败,groupId="+exerGroupId,e); } } return resultDataLst; } /** * APP2.0: 获取全部收藏练习题目数据 * URL: /exercise/Exercise/allFavorExercise * @return */ @RequestMapping(value = "allFavorExercise", method = RequestMethod.GET) public @ResponseBody ExerItemResponseData getAllFavorExerciseData( @RequestParam(value="limit", required = false) Integer limit, @RequestParam(value="page", required = false) Integer page) { // 得到分页数据 Pager pager = getPager(page, limit); // 查询结果 ExerItemResponseData resultData = exerciseExtendService.queryAllExerciseFavorData(pager); return resultData; } /** * APP2.0: 提交错题本的记录到DB * URL: /exercise/Extend/submitFaultData * * 返回数据={ "exerciseGroupType": 练习类型, "exerciseGroupId": 练习组id, "items":[ { "exerciseId": 练习id, "flag": 状态, // (true:添加 false:移除) }, ..... ] } * @param records * @return */ @RequestMapping(value = "submitFaultData", method = RequestMethod.POST) public @ResponseBody Result doSubmitExerFaultRecord( @RequestParam(value = "records") String records, @RequestParam(value="subjectId", required = false) String subjectId) { Result result = new Result(false); try { ObjectMapper mapper = new ObjectMapper(); // 装换json到对象 ExciseExtendReqData recordResult = mapper.readValue(records, ExciseExtendReqData.class); List lstRecords = recordResult.getItems(); if(lstRecords.isEmpty()){ return result; } // 提交结果 Map resultMap = exerciseExtendService.doOperExerciseFaultRecordData(null, recordResult); result.setResult(true); result.setData(resultMap); } catch (Exception e) { result = new Result(false); log.error(e); } return result; } /** * APP2.0: 提交错题本的记录到DB * URL: /exercise/Extend/submitFaultData * * 返回数据={ "exerciseGroupType": 练习类型, "exerciseGroupId": 练习组id, "items":[ { "exerciseId": 练习id, "flag": 状态, // (true:添加 false:移除) }, ..... ] } * @param records * @return */ @RequestMapping(value = "submitFaultMutiData", method = RequestMethod.POST) public @ResponseBody Object doSubmitExerFaultMutiRecord( @RequestParam(value = "records") String records) { Map resultMap = new HashMap(2); Map returnMap = null; resultMap.put("success", false); resultMap.put("attrs", null); List> resultList = null; try { ObjectMapper mapper = new ObjectMapper(); // 装换json到对象 ExciseExtendReqListData recordData = mapper.readValue(records, ExciseExtendReqListData.class); //String subjectId = recordData.getSubjectId(); List recordResults = recordData.getDatas(); resultList = new ArrayList>(recordResults.size()); // 循环记录 List lstRecords = null; for(ExciseExtendReqData recordResult:recordResults){ lstRecords = recordResult.getItems(); if(lstRecords.isEmpty()){ continue; } // 提交结果 returnMap = exerciseExtendService.doOperExerciseFaultRecordData(null, recordResult); resultList.add(returnMap); } resultMap.put("success", true); resultMap.put("attrs", resultList); resultMap.put("msg", "提交成功"); } catch (Exception e) { resultMap.put("msg", "提交失败"); log.error(e); } return resultMap; } /** * APP2.0: 提交收藏本的记录到DB * URL: /exercise/Extend/submitFavorData * * @param records json字符串 * @return */ @RequestMapping(value = "submitFavorData", method = RequestMethod.POST) public @ResponseBody Result doSubmitExerFavorRecord( @RequestParam(value = "records") String records, @RequestParam(value="subjectId", required = false) String subjectId) { Result result = new Result(false); try { ObjectMapper mapper = new ObjectMapper(); // 装换json到对象 ExciseExtendReqData recordResult = mapper.readValue(records, ExciseExtendReqData.class); List lstRecords = recordResult.getItems(); if(lstRecords.isEmpty()){ return result; } // 提交结果 Map resultMap = exerciseExtendService.doOperExerciseFavorRecordData(null, recordResult); result.setResult(true); result.setData(resultMap); } catch (Exception e) { result = new Result(false); log.error(e); } return result; } /** * APP2.0: 提交收藏本的记录到DB * URL: /exercise/Extend/submitFavorData * * @param records json字符串 * @return */ @RequestMapping(value = "submitFavorMutiData", method = RequestMethod.POST) public @ResponseBody Object doSubmitExerFavorMutiRecord( @RequestParam(value = "records") String records) { Map resultMap = new HashMap(2); Map returnMap = null; resultMap.put("success", false); resultMap.put("attrs", null); List> resultList = null; try { ObjectMapper mapper = new ObjectMapper(); // 装换json到对象 ExciseExtendReqListData recordData = mapper.readValue(records, ExciseExtendReqListData.class); //String subjectId = recordData.getSubjectId(); List recordResults = recordData.getDatas(); resultList = new ArrayList>(recordResults.size()); // 循环记录 List lstRecords = null; for(ExciseExtendReqData recordResult:recordResults){ lstRecords = recordResult.getItems(); if(lstRecords.isEmpty()){ continue; } // 提交结果 returnMap = exerciseExtendService.doOperExerciseFavorRecordData(null, recordResult); resultList.add(returnMap); } resultMap.put("success", true); resultMap.put("attrs", resultList); resultMap.put("msg", "提交成功"); } catch (Exception e) { log.error(e); } return resultMap; } /** * 获得多套题答案 * @param groupId 格式"111,222,333...." * @return */ @RequestMapping(value = "getExtendAnswers", method = RequestMethod.GET) public @ResponseBody List getExtendAnswersData( @RequestParam(value = "groupId") String groupId, @RequestParam(value = "exerciseType") String exerciseType) { String[] groupIds = groupId.split(","); if(groupIds.length<1){ return null; } List resultDataLst = new ArrayList(groupIds.length); for(String exerGroupId:groupIds){ try{ if(Constants.EXERCISE_TYPE_FAULT.equals(exerciseType)){// 错题本 // 查询结果 resultDataLst.add(exerciseExtendService.queryExerciseFaultAnswerData(exerGroupId)); }else if(Constants.EXERCISE_TYPE_FAVORT.equals(exerciseType)){// 收藏 // 查询结果 resultDataLst.add(exerciseExtendService.queryExerciseFavorAnswerData(exerGroupId)); }else{ return null; } }catch(Exception e){ log.error("获得多套题答案getExtendAnswers结果失败,groupId="+exerGroupId,e); } } return resultDataLst; } /** * APP2.0: 提交练习答案 * URL: /exercise/Extend/exerExtendAnswers * * 请求数据= answers={ "exerciseGroupId": 组id, "exerciseRecordId": 记录id, "exerciseExtendId": null, "currTitleNum": "当前题号", "status": 状态, "type": 练习类型,// 整型 "doCount": 练习类型, "correctCount": 正确个数, "allCount":题目总数, "items": [ { "exerciseId": "练习id", "type": 练习类型,// 整数型 "answer": "选择答案", "correct": 是否正确(0:错误 1:正确 2:未知) }, { "exerciseId": "练习id", "type": 练习类型, "answer": "选择答案", "correct": 是否正确(0:错误 1:正确 2:未知) } ] } 返回数据= {"success":true,//true:成功 false:失败 "attrs":{"exerciseRecordId":练习记录id, "updateTime":修改时间 }, "msg":"提交成功",//结果信息 } * * @param answers * @return */ @RequestMapping(value = "exerExtendAnswers", method = RequestMethod.POST) public @ResponseBody Result doSubmitExerExtendAnswer( @RequestParam(value = "answers") String answers) { // 用户本次做题提交的数据 Result result = new Result(false); String initExerciseRecordId = ""; try { ObjectMapper mapper = new ObjectMapper(); // 装换json到对象 ExerciseSubmitAnswerData answerResult = mapper.readValue(answers, ExerciseSubmitAnswerData.class); // 1.---------记录提交的数据日志 // 记录id initExerciseRecordId = answerResult.getExerciseRecordId(); if(answerResult.getItems().isEmpty() && !ExerciseRecord.STATUS_SUBMIT.equals(answerResult.getStatus()) && answerResult.getSubmitType() != 1){// 提交状态 exerciseExtendService.doSaveExerciseDataSubmitLog(answers, initExerciseRecordId, ExerciseDataSubmitLog.TYPE_SUBMIT_EXTEND_ANSWER, ExerciseDataSubmitLog.STATUS_FAILED,"/exercise/Extend/exerExtendAnswers"); return result; } // 2.提交答案 result = exerciseExtendService.doSubmitExerciseAnswerData(answerResult); int status = 0; if(result.isSuccess()){ status = ExerciseDataSubmitLog.STATUS_SUCCESS; }else{ status = ExerciseDataSubmitLog.STATUS_FAILED; } // 记录提交的数据日志 String exerciseDataLogId = exerciseExtendService.doSaveExerciseDataSubmitLog(answers, initExerciseRecordId, ExerciseDataSubmitLog.TYPE_SUBMIT_EXTEND_ANSWER, status,"/exercise/Extend/exerExtendAnswers"); if(StringUtils.isBlank(initExerciseRecordId) && result.getData("exerciseRecordId") != null){// 为空 说明第一次提交 更新日志记录id exerciseExtendService.doUpdateExerciseDataSubmitLog(exerciseDataLogId, String.valueOf(result.getData("exerciseRecordId"))); } } catch (Exception e) { result = new Result(false); log.error(e); // 记录提交的数据日志 exerciseExtendService.doSaveExerciseDataSubmitLog(answers, initExerciseRecordId, ExerciseDataSubmitLog.TYPE_SUBMIT_EXTEND_ANSWER, ExerciseDataSubmitLog.STATUS_FAILED,"/exercise/Extend/exerExtendAnswers"); } return result; } /** * APP2.0: 提交练习答案 * URL: /exercise/Extend/exerExtendMutiAnswers * * 请求数据= answers=[{ "exerciseGroupId": 组id, "exerciseRecordId": 记录id, "exerciseExtendId": null, "currTitleNum": "当前题号", "status": 状态, "type": 练习类型,// 整型 "doCount": 练习类型, "correctCount": 正确个数, "allCount":题目总数, "items": [ { "exerciseId": "练习id", "type": 练习类型,// 整数型 "answer": "选择答案", "correct": 是否正确(0:错误 1:正确 2:未知) }, { "exerciseId": "练习id", "type": 练习类型, "answer": "选择答案", "correct": 是否正确(0:错误 1:正确 2:未知) } ] }] 返回数据= {"success":true,//true:成功 false:失败 "attrs":{"exerciseRecordId":练习记录id, "updateTime":修改时间 }, "msg":"提交成功",//结果信息 } * * @param answers * @return */ @RequestMapping(value = "exerExtendMutiAnswers", method = RequestMethod.POST) public @ResponseBody Object doSubmitExerExtendMutiAnswer( @RequestParam(value = "answers") String answers) { // 用户本次做题提交的数据 Map resultMap = new HashMap(2); resultMap.put("success", false); resultMap.put("attrs", null); try { ObjectMapper mapper = new ObjectMapper(); // 装换json到对象 ExerciseSubmitAnswerDataList answerDataList = mapper.readValue(answers, ExerciseSubmitAnswerDataList.class); // 提交答案 resultMap = exerciseExtendService.doSubmitMutiExerciseAnswerData(answerDataList); } catch (Exception e) { log.error(e); resultMap.put("msg", "提交练习答案请求异常"); exerciseExtendService.doSaveExerciseDataSubmitLog(answers, "exerExtendMutiAnswers", ExerciseDataSubmitLog.TYPE_SUBMIT_EXTEND_ANSWER, ExerciseDataSubmitLog.STATUS_FAILED, "/exercise/Extend/exerExtendMutiAnswers"); } return resultMap; } /** * APP2.0: app端重新开始做题 更新状态 * URL: /exercise/Extend/updateNewExerRecordNew * * @param groupId 习题组ID 如果为All时,表示全部错题 * @return */ @RequestMapping(value = "updateNewExerRecordNew", method = RequestMethod.GET) public @ResponseBody Result doUpdateExerItemNumber( @RequestParam(value = "groupId") String groupId,// 习题组ID 如果为All时,表示全部错题、全部收藏 @RequestParam(value = "exerciseType") String exerciseType) { Map map = null; Result result = new Result(true, "状态更新成功"); if(Constants.EXERCISE_TYPE_FAULT.equals(exerciseType)){// 错题本 map = exerciseExtendService.doUpdateFaultExerRecordNew(groupId); }else if(Constants.EXERCISE_TYPE_FAVORT.equals(exerciseType)){// 收藏 map = exerciseExtendService.doUpdateFavortExerRecordNew(groupId); }else{ result = new Result(false, "exerciseType传值错误:exerciseType="+exerciseType); } result.setData(map); return result; } /** * APP2.0: 更新练习作业题号 app端重新开始做题 * URL: /exercise/Extend/updateExerciseRecord * * @param groupId 习题组ID * @return */ @RequestMapping(value = "updateExerciseRecord", method = RequestMethod.GET) public @ResponseBody Result doUpdateExerciseRecord( @RequestParam(value = "groupId") String groupId,// all 表示全部错误或收藏 @RequestParam(value = "exerciseType") String exerciseType, @RequestParam(value = "exerciseRecordId") String exerciseRecordId, @RequestParam(value = "currTitleNum", required = false) String currTitleNum) { Result result = new Result(true, "状态更新成功"); if(StringUtils.isBlank(exerciseRecordId) && !"All".equals(groupId)){ return new Result(false, "更新失败,exerciseRecordId为空"); } if(Constants.EXERCISE_TYPE_FAULT.equals(exerciseType)){// 错题本 if("All".equals(groupId)){// 全部错题 return exerciseExtendService.doUpdateExerciseFaultBook(currTitleNum); } ExerciseFaultRecord record = commonDAO.read(ExerciseFaultRecord.class, exerciseRecordId); record.setTitleMaxNumber(currTitleNum); result = exerciseExtendService.doUpdateExerciseFaultRecord(record); }else if(Constants.EXERCISE_TYPE_FAVORT.equals(exerciseType)){// 收藏 if("All".equals(groupId)){// 全部收藏 return exerciseExtendService.doUpdateExerciseFavorBook(currTitleNum); } ExerciseFavoriteRecord record = commonDAO.read(ExerciseFavoriteRecord.class, exerciseRecordId); record.setTitleMaxNumber(currTitleNum); result = exerciseExtendService.doUpdateExerciseFavorRecord(record); }else{ result = new Result(false, "exerciseType传值错误:exerciseType="+exerciseType); } return result; } /** * APP2.0: 查询错题 收藏笔记个数 * URL: /exercise/Extend/queryExerCount * @return 键值对:iFavor 收藏个数 iFault 错误个数 */ @RequestMapping(value = "exerBookInfo", method = RequestMethod.GET) public @ResponseBody Result queryExtendListCount( @RequestParam(value = "exerciseType") String exerciseType) { Map map = null; Result result = new Result(false); if(Constants.EXERCISE_TYPE_FAULT.equals(exerciseType)){// 错题本 map = exerciseExtendService.queryExerFaultInfo(); }else if(Constants.EXERCISE_TYPE_FAVORT.equals(exerciseType)){// 收藏 map = exerciseExtendService.queryExerFavorInfo(); }else{ result = new Result(false, "exerciseType传值错误:exerciseType="+exerciseType); } result = new Result(true, "查询成功"); result.setData(map); return result; } /** * APP2.0: 题目答案分析 * URL: /exercise/Extend/itemstatisics * * * * @param groupId 习题组ID * @return */ @RequestMapping(value = "itemStatisics", method = RequestMethod.GET) public @ResponseBody List> doQueryExerciseItemStatisics( @RequestParam(value = "exerciseType") String exerciseType) { // 查询结果 List> resultLst = exerciseExtendService.queryExerciseItemStatisics(exerciseType); return resultLst; } /** * 错题统计接口 * URL: /exercise/Extend/faultStatis * * @return */ @RequestMapping(value = "faultStatis", method = RequestMethod.GET) public @ResponseBody Result doCalcFaultStatisInfo() { return exerciseExtendService.doCalcExerFaultStatisticsByDay(); } /** *得到 错题统计信息 * URL: /exercise/Extend/faultStatis * * type :week 最近一周 month:最近一月 year:最近一年 * @return */ @RequestMapping(value = "getfaultStatis", method = RequestMethod.GET) public @ResponseBody List> doGetFaultStatisInfo( @RequestParam(value = "type") String type ) { return exerciseExtendService.doGetFaultStatisInfo(type); } /**-----------------------------------------APP V2.0 接口 end----------------------------------------------------------- */ @RequestMapping(value = "initFaultStatisData", method = RequestMethod.GET) public @ResponseBody Result doInitExerRecentRecord() { return exerciseExtendService.doInitFaultStatisData(); } /*@RequestMapping(value = "initExerRecentRecord", method = RequestMethod.GET) public @ResponseBody Result doInitExerRecentRecord() { return exerciseExtendService.doInitExerRecentRecord(); } @RequestMapping(value = "initFaultRecord", method = RequestMethod.GET) public @ResponseBody Result doInitExerOldGroup() { return exerciseExtendService.doInitFaultRecord(); } @RequestMapping(value = "initFaultItem", method = RequestMethod.GET) public @ResponseBody Result doInitFaultItem() { // 2. String sql2="select f,re.exerciseGroupId" +" from ExerciseFault f,ExerciseGroupItemRe re" +" where f.exerciseItemId=re.exerciseItemId" +" and (f.faultRecordId is null or f.faultRecordId='') order by f.exerciseFaultId"; List lstData2 =commonDAO.findwithRawResult(sql2, new ArrayList()); if(lstData2.isEmpty()){//抛异常回滚 return new Result(false,"错题数据为空2222"); } String hql_existRecord = "from ExerciseFaultRecord where resumeBookId=? and exerciseGroupId=? "; ExerciseFault fault=null; ExerciseFault newFault=null; String exerciseFaultId=""; List lstRecord = null; int i=0; for(Object[] objs:lstData2){ fault = (ExerciseFault)objs[0]; if(fault.getExerciseFaultId().equals(exerciseFaultId)){ newFault = new ExerciseFault(); BeanUtils.copyProperties(fault, newFault); newFault.setExerciseFaultId(null); lstRecord = commonDAO.find(hql_existRecord, CollectionUtils.newList(newFault.getResumeBookId(),String.valueOf(objs[1])), ExerciseFaultRecord.class); if(lstRecord.isEmpty()){ continue; } newFault.setFaultRecordId(lstRecord.get(0).getFaultRecordId()); TraceUtils.setUpdateTrace(newFault); exerciseExtendService.doSavetoDB(newFault); }else{ lstRecord = commonDAO.find(hql_existRecord, CollectionUtils.newList(fault.getResumeBookId(),String.valueOf(objs[1])), ExerciseFaultRecord.class); if(lstRecord.isEmpty()){ continue; } fault.setFaultRecordId(lstRecord.get(0).getFaultRecordId()); TraceUtils.setUpdateTrace(fault); exerciseExtendService.doSavetoDB(fault); } exerciseFaultId=fault.getExerciseFaultId(); i++; } return new Result(true, "更新ExerciseFault条数:"+i); } @RequestMapping(value = "initFavorRecord", method = RequestMethod.GET) public @ResponseBody Result doInitFavorRecord() { return exerciseExtendService.doInitFavorRecord(); } @RequestMapping(value = "initFavorItem", method = RequestMethod.GET) public @ResponseBody Result doInitFavorItem() { String sql2="select f,re.exerciseGroupId" +" from ExerciseFavorite f,ExerciseGroupItemRe re" +" where f.exerciseItemId=re.exerciseItemId" +" and (f.favoriteRecordId is null or f.favoriteRecordId = '') order by f.exerciseFavoriteId"; List lstData2 =commonDAO.findwithRawResult(sql2, new ArrayList()); if(lstData2.isEmpty()){//抛异常回滚 return new Result(false,"收藏数据为空2222"); } String hql_existRecord = "from ExerciseFavoriteRecord where favoriteBookId=? and exerciseGroupId=? "; List lstRecord = null; ExerciseFavorite favor=null; ExerciseFavorite newFavor=null; String exerciseFavoriteId=""; int i=0; for(Object[] objs:lstData2){ favor = (ExerciseFavorite)objs[0]; if(favor.getExerciseFavoriteId().equals(exerciseFavoriteId)){ newFavor = new ExerciseFavorite(); BeanUtils.copyProperties(favor, newFavor); newFavor.setExerciseFavoriteId(null); lstRecord = commonDAO.find(hql_existRecord, CollectionUtils.newList(newFavor.getFavoriteBookId(),String.valueOf(objs[1])), ExerciseFavoriteRecord.class); if(lstRecord.isEmpty()){ continue; } newFavor.setFavoriteRecordId(lstRecord.get(0).getFavoriteRecordId()); TraceUtils.setUpdateTrace(newFavor); exerciseExtendService.doSavetoDB(newFavor); }else{ lstRecord = commonDAO.find(hql_existRecord, CollectionUtils.newList(favor.getFavoriteBookId(),String.valueOf(objs[1])), ExerciseFavoriteRecord.class); if(lstRecord.isEmpty()){ continue; } favor.setFavoriteRecordId(lstRecord.get(0).getFavoriteRecordId()); TraceUtils.setUpdateTrace(favor); exerciseExtendService.doSavetoDB(favor); } i++; } return new Result(true,"|更新ExerciseFavorite条数:"+i); } @SuppressWarnings("unchecked") @RequestMapping(value = "updateAnswerU", method = RequestMethod.GET) public @ResponseBody Result doUpdateAnswerU() { int count = commonDAO.findCount("select count(1) from ExerciseItemAnswerU where correct>1", Collections.EMPTY_LIST); Pager page = new Pager(); int pageSize = 50; int maxPage = count/pageSize + (count%pageSize>0?1:0); page.setPageSize(pageSize); page.setTotalCount(count); int j=0; String hql2; for(int i=1;i<=maxPage;i++){ page.setPageNum(i); List lstAnswerU = commonDAO.findList("from ExerciseItemAnswerU where correct>1", page, Collections.EMPTY_LIST, ExerciseItemAnswerU.class); for(ExerciseItemAnswerU answer:lstAnswerU){ hql2 = "select answer from ExerciseItem where (answer is not null and answer != '') and exerciseId=? and deleteFlag is false "; List lstData2 =commonDAO.findwithRawResult(hql2, CollectionUtils.newList(answer.getExerciseItemId())); if(lstData2.isEmpty()){ continue; } if(!answer.getAnswer().equals(String.valueOf(lstData2.get(0))) && answer.getCorrect() != 0){ answer.setCorrect((byte)0); TraceUtils.setUpdateTrace(answer); exerciseExtendService.doSavetoDB(answer); j++; } if(answer.getAnswer().equals(String.valueOf(lstData2.get(0))) && answer.getCorrect() != 1){ answer.setCorrect((byte)1); TraceUtils.setUpdateTrace(answer); exerciseExtendService.doSavetoDB(answer); j++; } } } return new Result(true,"|更新ExerciseItemAnswerU条数:"+j); }*/ }