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); }*/ }