| | |
| | | |
| | | |
| | | /** |
| | | * 练习 实现service |
| | | * 练习 实现service |
| | | * @author zhiyong |
| | | * |
| | | */ |
| | | @Service(value = "exerciseExtendService") |
| | | public class ExerciseExtendService extends CommonAppService implements IExerciseExtendService { |
| | | /** 日志 */ |
| | | /** 日志 */ |
| | | private static final Logger log = LogManager.getLogger(ExerciseExtendService.class); |
| | | |
| | | /** 练习接口service */ |
| | | /** 练习接口service */ |
| | | @Autowired |
| | | private IExerciseVerService exerciseVerService; |
| | | |
| | | /** 做题记录id */ |
| | | /** 做题记录id */ |
| | | private static final String EXERCISE_RECORD_ID = "exerciseRecordId"; |
| | | |
| | | /** 更新时间 */ |
| | | /** 更新时间 */ |
| | | private static final String UPDATE_TIME = "updateTime"; |
| | | |
| | | /** |
| | | * 新增收藏book记录 |
| | | * 新增收藏book记录 |
| | | * @param groupId |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 新增错题book记录 |
| | | * 新增错题book记录 |
| | | * @param groupId |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 新增收藏记录 |
| | | * 新增收藏记录 |
| | | * @param groupId |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 新增错题记录 |
| | | * 新增错题记录 |
| | | * @param groupId |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** -------------------------APP--V2.0- start------------------------------------------- */ |
| | | /** |
| | | * 操作错题记录 |
| | | * 操作错题记录 |
| | | */ |
| | | public Map<String,Object> doOperExerciseFaultRecordData(String subjectId, ExciseExtendReqData recordResult) { |
| | | // 练习组id |
| | | // 练习组id |
| | | String exerciseGroupId = recordResult.getExerciseGroupId(); |
| | | String exerciseGroupType = recordResult.getExerciseGroupType(); |
| | | |
| | | // 1.操作练习总记录 |
| | | // 1.操作练习总记录 |
| | | ExerciseFaultBook resumeBook = doOperExerciseFaultBook(subjectId,recordResult); |
| | | String resumeBookId = resumeBook.getResumeBookId(); |
| | | |
| | | // 2.操作练习记录 |
| | | // 2.操作练习记录 |
| | | ExerciseFaultRecord record = doOperExerciseFaultRecord(resumeBookId, |
| | | exerciseGroupId, exerciseGroupType, recordResult); |
| | | |
| | | String faultRecordId = record.getFaultRecordId(); |
| | | |
| | | // 3.组装错题结果入库 |
| | | // 3.组装错题结果入库 |
| | | doOperFaultExerciseToDB(resumeBookId, faultRecordId, recordResult); |
| | | |
| | | // 4.重新计算做题记录正确个数 做题个数 正确率 错题本 |
| | | // 4.重新计算做题记录正确个数 做题个数 正确率 错题本 |
| | | record = this.doCalcFaultExericseStatisBySubmitData(record,resumeBook,subjectId); |
| | | |
| | | // 5.返回结果 |
| | | // 5.返回结果 |
| | | Map<String,Object> map = new HashMap<String, Object>(3); |
| | | map.put(EXERCISE_RECORD_ID, faultRecordId); |
| | | map.put("exerciseGroupId", exerciseGroupId); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 重新计算错题record数据结果 |
| | | * 重新计算错题record数据结果 |
| | | * @param record |
| | | * @return |
| | | */ |
| | |
| | | |
| | | Object[] objs = lstFault.get(0); |
| | | |
| | | // 拆分子数据 |
| | | // 拆分子数据 |
| | | packagingExerciseFaultRecordData(record, objs); |
| | | |
| | | if(record.getAllCount().compareTo(BigInteger.ZERO) == 0){// 全部删除后 数据清0 |
| | | if(record.getAllCount().compareTo(BigInteger.ZERO) == 0){// 全部删除后 数据清0 |
| | | record.setTitleMaxNumber("0"); |
| | | record.setStatus("0"); |
| | | }else if(StringUtils.isNotBlank(record.getTitleMaxNumber()) && |
| | | record.getAllCount().compareTo(new BigInteger(record.getTitleMaxNumber())) < 0){// 总个数小于最大题号数 |
| | | record.getAllCount().compareTo(new BigInteger(record.getTitleMaxNumber())) < 0){// 总个数小于最大题号数 |
| | | record.setTitleMaxNumber(String.valueOf(record.getAllCount())); |
| | | } |
| | | TraceUtils.setUpdateTrace(record); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 重新计算错题record数据结果 拆分子数据 |
| | | * 重新计算错题record数据结果 拆分子数据 |
| | | * @param record |
| | | * @param objs |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 重新计算做题记录总个数 错题本 正确个数 做题个数 正确率 错题本 |
| | | * 重新计算做题记录总个数 错题本 正确个数 做题个数 正确率 错题本 |
| | | * @return |
| | | */ |
| | | public ExerciseFaultRecord doCalcFaultExericseStatisBySubmitData(ExerciseFaultRecord record, |
| | | ExerciseFaultBook resumeBook, String subjectId){ |
| | | // 1.计算做题总个数 record |
| | | // 1.计算做题总个数 record |
| | | this.updateExerciseFaultRecordData(record); |
| | | |
| | | // 2.计算该班级的总个数 |
| | | // 2.计算该班级的总个数 |
| | | this.updateExerciseFaultBookInfo(resumeBook); |
| | | if(resumeBook.getAllCount().compareTo(BigInteger.ZERO) == 0){// 全部删除后 数据清0 |
| | | if(resumeBook.getAllCount().compareTo(BigInteger.ZERO) == 0){// 全部删除后 数据清0 |
| | | resumeBook.setTitleMaxNumber("0"); |
| | | resumeBook.setStatus("0"); |
| | | }else if(StringUtils.isNotBlank(resumeBook.getTitleMaxNumber()) && |
| | | resumeBook.getAllCount().compareTo(new BigInteger(resumeBook.getTitleMaxNumber())) < 0){// 总个数小于最大题号数 |
| | | resumeBook.getAllCount().compareTo(new BigInteger(resumeBook.getTitleMaxNumber())) < 0){// 总个数小于最大题号数 |
| | | resumeBook.setTitleMaxNumber(String.valueOf(resumeBook.getAllCount())); |
| | | } |
| | | TraceUtils.setUpdateTrace(resumeBook); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 组装错题结果入库 |
| | | * 组装错题结果入库 |
| | | * @param resumeBookId |
| | | * @param faultRecordId |
| | | * @param recordResult |
| | |
| | | argsMap.put("exerciseIds", args); |
| | | argsMap.put("resumeBookId", resumeBookId); |
| | | |
| | | // 查询此用户是否有错题记录 |
| | | // 查询此用户是否有错题记录 |
| | | String hql = "from ExerciseFault where exerciseItemId in (:exerciseIds) and resumeBookId=:resumeBookId and deleteFlag is false "; |
| | | List<ExerciseFault> lstExistfavor = this.findByComplexHql(hql, argsMap, ExerciseFault.class); |
| | | |
| | |
| | | List<ExerciseFault> lstFault = new ArrayList<ExerciseFault>(recordResult.getItems().size()); |
| | | ExerciseFault fault=null; |
| | | |
| | | // 循环每一条记录 |
| | | // 判断客户端提交的数据是否重复map |
| | | // 循环每一条记录 |
| | | // 判断客户端提交的数据是否重复map |
| | | Map<String,Object> repeatMap = new HashMap<String,Object>(lstItems.size()); |
| | | |
| | | for(ExerciseExtendRecordData record:lstItems){ |
| | | if(repeatMap.get(record.getExerciseId()) != null && |
| | | (boolean)repeatMap.get(record.getExerciseId()) == record.getFlag()){//重复数据 |
| | | (boolean)repeatMap.get(record.getExerciseId()) == record.getFlag()){//重复数据 |
| | | continue; |
| | | } |
| | | |
| | | fault=faultMap.get(record.getExerciseId()); |
| | | if(record.getFlag()){//添加错题 |
| | | if(record.getFlag()){//添加错题 |
| | | if(fault == null){ |
| | | fault = new ExerciseFault(); |
| | | fault.setFaultRecordId(faultRecordId); |
| | |
| | | fault.setExerciseItemId(record.getExerciseId()); |
| | | fault.setDeleteFlag(false); |
| | | TraceUtils.setCreateTrace(fault); |
| | | }else{// 原来已经删除 恢复 |
| | | }else{// 原来已经删除 恢复 |
| | | if(fault.getDeleteFlag()){ |
| | | fault.setDeleteFlag(false); |
| | | fault.setAnswer(null); |
| | |
| | | } |
| | | } |
| | | |
| | | }else{// 删除错题 |
| | | }else{// 删除错题 |
| | | if(fault == null){ |
| | | continue; |
| | | } |
| | |
| | | repeatMap.put(record.getExerciseId(), record.getFlag()); |
| | | } |
| | | |
| | | // 2.记录错题itemList |
| | | // 批量增加 |
| | | // 2.记录错题itemList |
| | | // 批量增加 |
| | | this.saveOrUpdateAll(lstFault); |
| | | this.flush(); |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 操作练习记录 |
| | | * 操作练习记录 |
| | | * @param subjectId |
| | | * @return |
| | | */ |
| | | public ExerciseFaultRecord doOperExerciseFaultRecord(String resumeBookId,String exerciseGroupId, |
| | | String exerciseGroupType, ExciseExtendReqData recordResult){ |
| | | // 错题记录 当前组 |
| | | // 错题记录 当前组 |
| | | String hql = "from ExerciseFaultRecord where resumeBookId=? and exerciseGroupId=? and deleteFlag is false "; |
| | | |
| | | ExerciseFaultRecord record = this.findUnique(hql, |
| | | CollectionUtils.newList(resumeBookId, exerciseGroupId), ExerciseFaultRecord.class); |
| | | |
| | | if(null == record){// 记录不存在 |
| | | if(null == record){// 记录不存在 |
| | | |
| | | record = new ExerciseFaultRecord(); |
| | | record.setResumeBookId(resumeBookId); |
| | |
| | | |
| | | |
| | | /** |
| | | * 操作练习记录 |
| | | * 操作练习记录 |
| | | * @param subjectId |
| | | * @return |
| | | */ |
| | |
| | | |
| | | List<Object> args = CollectionUtils.newList(ClientUtils.getClassId(), |
| | | ClientUtils.getUserId()); |
| | | if(StringUtils.isNotBlank(subjectId)){// 高校 |
| | | if(StringUtils.isNotBlank(subjectId)){// 高校 |
| | | hql.append(" and subjectId=? "); |
| | | args.add(subjectId); |
| | | } |
| | | |
| | | // 查询此用户是否有错题记录 |
| | | // 查询此用户是否有错题记录 |
| | | List<ExerciseFaultBook> lstFault = this.find(hql.toString(), args, ExerciseFaultBook.class); |
| | | |
| | | ExerciseFaultBook book = null; |
| | | String hql_book; |
| | | if(lstFault.isEmpty()){// 记录为空 |
| | | if(lstFault.isEmpty()){// 记录为空 |
| | | |
| | | if(StringUtils.isNotBlank(subjectId)){// 高校 |
| | | if(StringUtils.isNotBlank(subjectId)){// 高校 |
| | | |
| | | // 先查询上级记录是否存在 |
| | | // 先查询上级记录是否存在 |
| | | hql_book = "from ExerciseFaultBook where classId=? and userId=? and deleteFlag is false "; |
| | | |
| | | lstFault = this.find(hql_book, CollectionUtils.newList(ClientUtils.getClassId(), |
| | | ClientUtils.getUserId()), ExerciseFaultBook.class); |
| | | |
| | | if(lstFault.isEmpty()){//班级记录不存在 |
| | | if(lstFault.isEmpty()){//班级记录不存在 |
| | | book = this.insertExerciseFaultBookNew(ExerciseFaultBook.TYPE_ORGANIZATION, null); |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | /** |
| | | * 新增错题book记录 |
| | | * 新增错题book记录 |
| | | * @param groupId |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 更新错题book记录 |
| | | * 更新错题book记录 |
| | | * @param groupId |
| | | * @return |
| | | */ |
| | |
| | | |
| | | |
| | | /** |
| | | * 操作错题记录 |
| | | * 操作错题记录 |
| | | */ |
| | | public Map<String,Object> doOperExerciseFavorRecordData(String subjectId, ExciseExtendReqData recordResult) { |
| | | // 练习组id |
| | | // 练习组id |
| | | String exerciseGroupId = recordResult.getExerciseGroupId(); |
| | | String exerciseGroupType = recordResult.getExerciseGroupType(); |
| | | |
| | | // 1.操作练习总记录 |
| | | // 1.操作练习总记录 |
| | | ExerciseFavoriteBook favorBook = doOperExerciseFavoriteBook(subjectId, recordResult); |
| | | String favoriteBookId = favorBook.getFavoriteBookId(); |
| | | |
| | | // 2.操作练习记录 |
| | | // 2.操作练习记录 |
| | | ExerciseFavoriteRecord record = doOperExerciseFavorRecord(favoriteBookId, |
| | | exerciseGroupId, exerciseGroupType,recordResult); |
| | | String favoriteRecordId = record.getFavoriteRecordId(); |
| | | |
| | | // 3.组装错题结果入库 |
| | | // 3.组装错题结果入库 |
| | | doOperFavorExerciseToDB(favoriteBookId, favoriteRecordId, recordResult); |
| | | |
| | | |
| | | // 4. 重新计算做题记录总个数 收藏 |
| | | // 4. 重新计算做题记录总个数 收藏 |
| | | record = this.doCalcFavorExericseStatisBySubmitData(record, favorBook, subjectId); |
| | | |
| | | // 5.返回结果 |
| | | // 5.返回结果 |
| | | Map<String,Object> map = new HashMap<String, Object>(3); |
| | | map.put(EXERCISE_RECORD_ID, favoriteRecordId); |
| | | map.put("exerciseGroupId", exerciseGroupId); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 更新ExerciseFavoriteRecord数据 |
| | | * 更新ExerciseFavoriteRecord数据 |
| | | * @param record |
| | | * @return |
| | | */ |
| | |
| | | |
| | | Object[] objs = lstFault.get(0); |
| | | |
| | | // 拆分子数据 |
| | | // 拆分子数据 |
| | | packagingExerciseFavoriteRecordData(record, objs); |
| | | |
| | | if(record.getAllCount().compareTo(BigInteger.ZERO) == 0){// 全部删除后 数据清0 |
| | | if(record.getAllCount().compareTo(BigInteger.ZERO) == 0){// 全部删除后 数据清0 |
| | | record.setTitleMaxNumber("0"); |
| | | record.setStatus("0"); |
| | | }else if(StringUtils.isNotBlank(record.getTitleMaxNumber()) && |
| | | record.getAllCount().compareTo(new BigInteger(record.getTitleMaxNumber())) < 0){// 总个数小于最大题号数 |
| | | record.getAllCount().compareTo(new BigInteger(record.getTitleMaxNumber())) < 0){// 总个数小于最大题号数 |
| | | record.setTitleMaxNumber(String.valueOf(record.getAllCount())); |
| | | } |
| | | TraceUtils.setUpdateTrace(record); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 拆分子数据 |
| | | * 拆分子数据 |
| | | * @param record |
| | | * @param objs |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 重新计算做题记录总个数 收藏 |
| | | * 重新计算做题记录总个数 收藏 |
| | | * @param exerciseGroupId |
| | | * @param exerciseRecordId |
| | | * @return |
| | | */ |
| | | public ExerciseFavoriteRecord doCalcFavorExericseStatisBySubmitData(ExerciseFavoriteRecord record, |
| | | ExerciseFavoriteBook favorBook,String subjectId){ |
| | | // 1.计算做题总个数 record |
| | | // 1.计算做题总个数 record |
| | | this.updateExerciseFavoriteRecordData(record); |
| | | |
| | | // 2.计算该班级的总个数 |
| | | // 2.计算该班级的总个数 |
| | | this.updateExerciseFavorBookInfo(favorBook); |
| | | if(favorBook.getAllCount().compareTo(BigInteger.ZERO) == 0){// 全部删除后 数据清0 |
| | | if(favorBook.getAllCount().compareTo(BigInteger.ZERO) == 0){// 全部删除后 数据清0 |
| | | favorBook.setTitleMaxNumber("0"); |
| | | favorBook.setStatus("0"); |
| | | }else if(StringUtils.isNotBlank(favorBook.getTitleMaxNumber()) |
| | | && favorBook.getAllCount().compareTo(new BigInteger(favorBook.getTitleMaxNumber())) < 0){// 总个数小于最大题号数 |
| | | && favorBook.getAllCount().compareTo(new BigInteger(favorBook.getTitleMaxNumber())) < 0){// 总个数小于最大题号数 |
| | | favorBook.setTitleMaxNumber(String.valueOf(favorBook.getAllCount())); |
| | | } |
| | | TraceUtils.setUpdateTrace(favorBook); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 组装错题结果入库 |
| | | * 组装错题结果入库 |
| | | * @param resumeBookId |
| | | * @param faultRecordId |
| | | * @param recordResult |
| | |
| | | argsMap.put("exerciseIds", args); |
| | | argsMap.put("favoriteRecordId", favoriteRecordId); |
| | | |
| | | // 查询此用户是否有收藏记录 |
| | | // 查询此用户是否有收藏记录 |
| | | String hql = "from ExerciseFavorite where exerciseItemId in (:exerciseIds) and favoriteRecordId=:favoriteRecordId and deleteFlag is false"; |
| | | List<ExerciseFavorite> lstExistfavor = this.findByComplexHql(hql, argsMap, ExerciseFavorite.class); |
| | | Map<String, ExerciseFavorite> favorMap = new HashMap<String, ExerciseFavorite>(); |
| | |
| | | |
| | | List<ExerciseFavorite> lstFavor= new ArrayList<ExerciseFavorite>(); |
| | | ExerciseFavorite favor=null; |
| | | // 循环每一条记录 |
| | | // 判断客户端提交的数据是否重复map |
| | | // 循环每一条记录 |
| | | // 判断客户端提交的数据是否重复map |
| | | Map<String,Object> repeatMap = new HashMap<String,Object>(lstItems.size()); |
| | | |
| | | for(ExerciseExtendRecordData record:lstItems){ |
| | | if(repeatMap.get(record.getExerciseId()) != null && |
| | | (boolean)repeatMap.get(record.getExerciseId()) == record.getFlag()){//重复数据 |
| | | (boolean)repeatMap.get(record.getExerciseId()) == record.getFlag()){//重复数据 |
| | | continue; |
| | | } |
| | | |
| | | favor = favorMap.get(record.getExerciseId()); |
| | | if(record.getFlag()){//添加收藏记录 |
| | | if(record.getFlag()){//添加收藏记录 |
| | | if(favor == null){ |
| | | favor = new ExerciseFavorite(); |
| | | favor.setFavoriteBookId(favoriteBookId); |
| | |
| | | favor.setExerciseItemId(record.getExerciseId()); |
| | | TraceUtils.setCreateTrace(favor); |
| | | favor.setDeleteFlag(false); |
| | | }else{//原来已经删除 现在恢复 |
| | | }else{//原来已经删除 现在恢复 |
| | | if(favor.getDeleteFlag()){ |
| | | favor.setAnswer(null); |
| | | favor.setCorrect(Byte.valueOf("0")); |
| | |
| | | } |
| | | } |
| | | |
| | | }else{// 删除收藏 |
| | | }else{// 删除收藏 |
| | | if(favor == null){ |
| | | continue; |
| | | } |
| | |
| | | repeatMap.put(record.getExerciseId(), record.getFlag()); |
| | | } |
| | | |
| | | // 2.记录收藏itemList |
| | | // 批量增加或者更新 |
| | | // 2.记录收藏itemList |
| | | // 批量增加或者更新 |
| | | this.saveOrUpdateAll(lstFavor); |
| | | this.flush(); |
| | | |
| | | return new Result(true); |
| | | } |
| | | /** |
| | | * 操作练习记录 |
| | | * 操作练习记录 |
| | | * @param subjectId |
| | | * @return |
| | | */ |
| | | public ExerciseFavoriteRecord doOperExerciseFavorRecord(String favoriteBookId,String exerciseGroupId, |
| | | String exerciseGroupType,ExciseExtendReqData recordResult){ |
| | | // 错题记录 当前组 |
| | | // 错题记录 当前组 |
| | | String hql = "from ExerciseFavoriteRecord where favoriteBookId=? and exerciseGroupId=? and deleteFlag is false "; |
| | | |
| | | ExerciseFavoriteRecord record = this.findUnique(hql, |
| | | CollectionUtils.newList(favoriteBookId, exerciseGroupId), ExerciseFavoriteRecord.class); |
| | | |
| | | if(null == record){// 记录不存在 |
| | | if(null == record){// 记录不存在 |
| | | |
| | | record = new ExerciseFavoriteRecord(); |
| | | record.setFavoriteBookId(favoriteBookId); |
| | |
| | | |
| | | |
| | | /** |
| | | * 操作练习记录 |
| | | * 操作练习记录 |
| | | * @param subjectId |
| | | * @return |
| | | */ |
| | |
| | | |
| | | List<Object> args = CollectionUtils.newList(ClientUtils.getClassId(), |
| | | ClientUtils.getUserId()); |
| | | if(StringUtils.isNotBlank(subjectId)){// 高校 |
| | | if(StringUtils.isNotBlank(subjectId)){// 高校 |
| | | hql.append(" and subjectId=? "); |
| | | args.add(subjectId); |
| | | } |
| | | |
| | | // 查询此用户是否有错题记录 |
| | | // 查询此用户是否有错题记录 |
| | | List<ExerciseFavoriteBook> lstFavor = this.find(hql.toString(), args, ExerciseFavoriteBook.class); |
| | | |
| | | ExerciseFavoriteBook book = null; |
| | | String hql_book; |
| | | if(lstFavor.isEmpty()){// 记录为空 |
| | | if(lstFavor.isEmpty()){// 记录为空 |
| | | |
| | | if(StringUtils.isNotBlank(subjectId)){// 高校 |
| | | if(StringUtils.isNotBlank(subjectId)){// 高校 |
| | | |
| | | // 先查询上级记录是否存在 |
| | | // 先查询上级记录是否存在 |
| | | hql_book = "from ExerciseFavoriteBook where classId=? and userId=? and deleteFlag is false "; |
| | | |
| | | lstFavor = this.find(hql_book, CollectionUtils.newList(ClientUtils.getClassId(), |
| | | ClientUtils.getUserId()), ExerciseFavoriteBook.class); |
| | | |
| | | if(lstFavor.isEmpty()){//班级记录不存在 |
| | | if(lstFavor.isEmpty()){//班级记录不存在 |
| | | book = this.insertExerciseFavorBookNew(ExerciseFavoriteBook.TYPE_ORGANIZATION, null); |
| | | }else{ |
| | | book = lstFavor.get(0); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 新增错题book记录 |
| | | * 新增错题book记录 |
| | | * @param groupId |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 新增错题book记录 |
| | | * 新增错题book记录 |
| | | * @param groupId |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 错题本提交答案 |
| | | * 错题本提交答案 |
| | | */ |
| | | @Override |
| | | public Map<String,Object> doSubmitExerFaultAnswerDataNew(ExerciseSubmitAnswerData clientAnswerResult) { |
| | | |
| | | // 0.重新整理答题数据 |
| | | // 0.重新整理答题数据 |
| | | ExerciseSubmitAnswerData answerResult = exerciseVerService.getExerciseSubmitAnswerDataNew(clientAnswerResult); |
| | | |
| | | // 1.更新错题记录 |
| | | // 1.更新错题记录 |
| | | ExerciseFaultRecord record = this.doOperExerFaultRecord(answerResult); |
| | | |
| | | if(null == record){ |
| | |
| | | |
| | | String faultRecordId = record.getFaultRecordId(); |
| | | |
| | | // 返回结果 |
| | | // 返回结果 |
| | | Map<String,Object> map = new HashMap<String, Object>(3); |
| | | map.put(EXERCISE_RECORD_ID, faultRecordId); |
| | | map.put("exerciseGroupId", record.getExerciseGroupId()); |
| | |
| | | map.put("doCount", answerResult.getDoCount()); |
| | | |
| | | if(answerResult.getItems().isEmpty() |
| | | && answerResult.getSubmitType() != 1){// submitType:1表示本地无网情况下重新做题过 |
| | | && answerResult.getSubmitType() != 1){// submitType:1表示本地无网情况下重新做题过 |
| | | return map; |
| | | } |
| | | |
| | | // 2.判断是否本地重新做过 submitType:1表示本地无网情况下重新做题过 |
| | | // 2.判断是否本地重新做过 submitType:1表示本地无网情况下重新做题过 |
| | | if(1 == answerResult.getSubmitType()){ |
| | | doOperExerciseFaultRecordByRedo(faultRecordId); |
| | | } |
| | | |
| | | // 2.更新答案 |
| | | // 2.更新答案 |
| | | answerResult.setExerciseRecordId(faultRecordId); |
| | | Result result = this.doUpdateExerFaultAnswerData(answerResult); |
| | | |
| | |
| | | return null; |
| | | } |
| | | |
| | | // 3.重新计算做题记录正确个数 做题个数 正确率 |
| | | // 3.重新计算做题记录正确个数 做题个数 正确率 |
| | | this.updateExerciseFaultRecordData(record); |
| | | |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 更新错题记录 |
| | | * 更新错题记录 |
| | | * @param answerResult |
| | | * @return |
| | | */ |
| | |
| | | |
| | | ExerciseFaultRecord record = null; |
| | | String exerciseRecordId = answerResult.getExerciseRecordId(); |
| | | if(StringUtils.isNotBlank(exerciseRecordId)){// 正常做题 |
| | | if(StringUtils.isNotBlank(exerciseRecordId)){// 正常做题 |
| | | |
| | | record = this.read(ExerciseFaultRecord.class, answerResult.getExerciseRecordId()); |
| | | |
| | | }else{// 无网情况下 |
| | | }else{// 无网情况下 |
| | | String hql = "from ExerciseFaultRecord r where r.deleteFlag is false and " |
| | | + "r.faultBook.userId=? and r.faultBook.classId=? and r.exerciseGroupId=?"; |
| | | |
| | |
| | | } |
| | | |
| | | if(answerResult.getItems().isEmpty() |
| | | && ExerciseRecord.STATUS_SUBMIT.equals(answerResult.getStatus())){//仅仅交卷 |
| | | && ExerciseRecord.STATUS_SUBMIT.equals(answerResult.getStatus())){//仅仅交卷 |
| | | record.setStatus(answerResult.getStatus()); |
| | | // 更新答案时间 |
| | | // 更新答案时间 |
| | | record.setAnswerUpdateTime(new Date(System.currentTimeMillis())); |
| | | |
| | | this.save(record); |
| | |
| | | } |
| | | |
| | | |
| | | // 计算 |
| | | // if(!"1".equals(record.getStatus())){// 非提交的就更新 |
| | | // 计算 |
| | | // if(!"1".equals(record.getStatus())){// 非提交的就更新 |
| | | // } |
| | | record.setStatus(StringUtils.isBlank(answerResult.getStatus()) ? "0" : answerResult.getStatus()); |
| | | if(!"0".equals(answerResult.getCurrTitleNum())){ |
| | | record.setTitleMaxNumber(StringUtils.isBlank(answerResult.getCurrTitleNum()) ? "0" : answerResult.getCurrTitleNum()); |
| | | } |
| | | // 更新答案时间 |
| | | // 更新答案时间 |
| | | record.setAnswerUpdateTime(new Date(System.currentTimeMillis())); |
| | | |
| | | this.save(record); |
| | |
| | | } |
| | | |
| | | /** |
| | | *提交 错题结果到db |
| | | *提交 错题结果到db |
| | | * @return |
| | | */ |
| | | public Result doUpdateExerFaultAnswerData(ExerciseSubmitAnswerData answerResult) { |
| | |
| | | return new Result(true); |
| | | } |
| | | |
| | | // 批量更新答案 |
| | | // 批量更新答案 |
| | | List<ExerciseFault> lstResultFault =new ArrayList<ExerciseFault>(lstAnswers.size()); |
| | | |
| | | // 2.1.组装参数 用于查询练习选项图片 |
| | | // 2.1.组装参数 用于查询练习选项图片 |
| | | Map<String, Object> argsMap = new HashMap<String, Object>(2); |
| | | Object[] args = new Object[lstAnswers.size()]; |
| | | for(int i=0; i<lstAnswers.size(); i++){ |
| | |
| | | String hql = "from ExerciseFault where deleteFlag is false and exerciseItemId in (:exerciseIds) and faultRecordId =:exerciseRecordId "; |
| | | List<ExerciseFault> lstFault = this.findByComplexHql(hql, argsMap, ExerciseFault.class); |
| | | |
| | | // 按练习id 对应放到map中 |
| | | // 按练习id 对应放到map中 |
| | | Map<String, ExerciseFault> faultMap = new HashMap<String, ExerciseFault>(lstFault.size()); |
| | | for(ExerciseFault fault:lstFault){ |
| | | faultMap.put(fault.getExerciseItemId(), fault); |
| | |
| | | if(null == fault){ |
| | | continue; |
| | | } |
| | | if(StringUtils.isBlank(answer.getAnswer())){// 答案为空 |
| | | if(StringUtils.isBlank(answer.getAnswer())){// 答案为空 |
| | | continue; |
| | | } |
| | | |
| | |
| | | lstResultFault.add(fault); |
| | | } |
| | | |
| | | // 1.保存 错题 收集lst |
| | | // 1.保存 错题 收集lst |
| | | this.saveOrUpdateAll(lstResultFault); |
| | | this.flush(); |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 收藏本提交答案 |
| | | * 收藏本提交答案 |
| | | */ |
| | | @Override |
| | | public Map<String,Object> doSubmitExerFavorAnswerDataNew(ExerciseSubmitAnswerData clientAnswerResult) { |
| | | |
| | | // 0.重新整理答题数据 |
| | | // 0.重新整理答题数据 |
| | | ExerciseSubmitAnswerData answerResult = exerciseVerService.getExerciseSubmitAnswerDataNew(clientAnswerResult); |
| | | |
| | | // 1.更新错题记录 |
| | | // 1.更新错题记录 |
| | | ExerciseFavoriteRecord record = doOperExerFavorRecord(answerResult); |
| | | if(null == record){ |
| | | return null; |
| | | } |
| | | String favoriteRecordId = record.getFavoriteRecordId(); |
| | | |
| | | // 返回结果 |
| | | // 返回结果 |
| | | Map<String,Object> map = new HashMap<String, Object>(3); |
| | | map.put(EXERCISE_RECORD_ID, favoriteRecordId); |
| | | map.put("exerciseGroupId", record.getExerciseGroupId()); |
| | | map.put(UPDATE_TIME, DateTimeUtils.getCurrDateTime(record.getAnswerUpdateTime())); |
| | | map.put("exerciseBookId", record.getFavoriteBookId()); |
| | | |
| | | if(answerResult.getItems().isEmpty() && answerResult.getSubmitType() != 1){//仅仅交卷 |
| | | if(answerResult.getItems().isEmpty() && answerResult.getSubmitType() != 1){//仅仅交卷 |
| | | return map; |
| | | } |
| | | |
| | | // 2.判断是否本地重新做过 submitType:1表示本地无网情况下重新做题过 |
| | | // 2.判断是否本地重新做过 submitType:1表示本地无网情况下重新做题过 |
| | | if(1 == answerResult.getSubmitType()){ |
| | | doOperExerciseFavorRecordByRedo(favoriteRecordId); |
| | | } |
| | | |
| | | // 2.更新答案 |
| | | // 2.更新答案 |
| | | answerResult.setExerciseRecordId(favoriteRecordId); |
| | | Result result = doUpdateExerFavorAnswerData(answerResult); |
| | | |
| | |
| | | return null; |
| | | } |
| | | |
| | | // 3.重新计算做题记录正确个数 做题个数 正确率 收藏 |
| | | // 3.重新计算做题记录正确个数 做题个数 正确率 收藏 |
| | | this.updateExerciseFavoriteRecordData(record); |
| | | |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 更新错题记录 |
| | | * 更新错题记录 |
| | | * @param answerResult |
| | | * @return |
| | | */ |
| | |
| | | |
| | | ExerciseFavoriteRecord record = null; |
| | | String exerciseRecordId = answerResult.getExerciseRecordId(); |
| | | if(StringUtils.isNotBlank(exerciseRecordId)){// 正常做题 |
| | | if(StringUtils.isNotBlank(exerciseRecordId)){// 正常做题 |
| | | |
| | | record = this.read(ExerciseFavoriteRecord.class, exerciseRecordId); |
| | | |
| | | }else{// 无网情况下 |
| | | }else{// 无网情况下 |
| | | String hql = "from ExerciseFavoriteRecord r where r.deleteFlag is false " |
| | | + " and r.favorBook.userId=? and r.favorBook.classId=? and r.exerciseGroupId=?"; |
| | | |
| | |
| | | } |
| | | |
| | | if(answerResult.getItems().isEmpty() |
| | | && ExerciseRecord.STATUS_SUBMIT.equals(answerResult.getStatus())){//仅仅交卷 |
| | | && ExerciseRecord.STATUS_SUBMIT.equals(answerResult.getStatus())){//仅仅交卷 |
| | | record.setStatus(answerResult.getStatus()); |
| | | // 更新答案时间 |
| | | // 更新答案时间 |
| | | record.setAnswerUpdateTime(new Date(System.currentTimeMillis())); |
| | | |
| | | this.save(record); |
| | |
| | | return record; |
| | | } |
| | | |
| | | // // 计算 |
| | | // if(!"1".equals(record.getStatus())){// 非提交的就更新 |
| | | // // 计算 |
| | | // if(!"1".equals(record.getStatus())){// 非提交的就更新 |
| | | // } |
| | | record.setStatus(answerResult.getStatus()); |
| | | if(!"0".equals(answerResult.getCurrTitleNum())){ |
| | | record.setTitleMaxNumber(answerResult.getCurrTitleNum()); |
| | | } |
| | | |
| | | // 更新答案时间 |
| | | // 更新答案时间 |
| | | record.setAnswerUpdateTime(new Date(System.currentTimeMillis())); |
| | | |
| | | this.save(record); |
| | |
| | | |
| | | |
| | | /** |
| | | *提交 错题结果到db |
| | | *提交 错题结果到db |
| | | * @return |
| | | */ |
| | | public Result doUpdateExerFavorAnswerData(ExerciseSubmitAnswerData answerResult) { |
| | |
| | | if(lstAnswers.isEmpty()){ |
| | | return new Result(true); |
| | | } |
| | | // 批量更新答案 |
| | | // 批量更新答案 |
| | | List<ExerciseFavorite> lstResultFavor =new ArrayList<ExerciseFavorite>(lstAnswers.size()); |
| | | |
| | | // 2.1.组装参数 用于查询练习选项图片 |
| | | // 2.1.组装参数 用于查询练习选项图片 |
| | | Map<String, Object> argsMap = new HashMap<String, Object>(2); |
| | | Map<String, Object> exerItemIdMap = new HashMap<String, Object>(1); |
| | | Object[] args = new Object[lstAnswers.size()]; |
| | |
| | | String hql = "from ExerciseFavorite where deleteFlag is false and exerciseItemId in (:exerciseIds) and favoriteRecordId =:exerciseRecordId "; |
| | | List<ExerciseFavorite> lstFavor = this.findByComplexHql(hql, argsMap, ExerciseFavorite.class); |
| | | |
| | | // 按练习id 对应放到map中 |
| | | // 按练习id 对应放到map中 |
| | | Map<String, ExerciseFavorite> favorMap = new HashMap<String, ExerciseFavorite>(lstFavor.size()); |
| | | for(ExerciseFavorite favor:lstFavor){ |
| | | favorMap.put(favor.getExerciseItemId(), favor); |
| | |
| | | if(null == favor){ |
| | | continue; |
| | | } |
| | | if(StringUtils.isBlank(answer.getAnswer())){// 答案为空 |
| | | if(StringUtils.isBlank(answer.getAnswer())){// 答案为空 |
| | | continue; |
| | | } |
| | | favor.setAnswer(answer.getAnswer()); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 查询错题本列表数据 |
| | | * 查询错题本列表数据 |
| | | * @param exerType |
| | | * @param subjectId |
| | | * @param pager |
| | |
| | | public List<ExerGroupResponseData> queryExerciseFaultListData( |
| | | int exerType, String subjectId, Pager pager) { |
| | | StringBuffer hql = new StringBuffer(512); |
| | | // 1.查询分组列表 |
| | | // 1.查询分组列表 |
| | | hql.append("select r,g from ExerciseFaultRecord r, ExerciseFaultBook b, ExerciseGroup g " |
| | | + " where r.resumeBookId=b.resumeBookId " |
| | | + " and r.exerciseGroupId=g.groupId " |
| | |
| | | + " and b.userId=? and r.allCount>0 "); |
| | | |
| | | List<Object> args = CollectionUtils.newList(ClientUtils.getUserId()); |
| | | if(exerType != 0){ //表示查询全部错题 |
| | | if(exerType != 0){ //表示查询全部错题 |
| | | hql.append(" and r.exerciseGroupType=?"); |
| | | args.add((short)exerType); |
| | | } |
| | | |
| | | if(StringUtils.isNotBlank(subjectId)){// 高校 通过课程过滤 |
| | | if(StringUtils.isNotBlank(subjectId)){// 高校 通过课程过滤 |
| | | |
| | | hql.append(" and b.type=? and b.subjectId=? and g.subjectId=? "); |
| | | args.add(ExerciseFaultBook.TYPE_COLLEGE); |
| | | args.add(subjectId); |
| | | args.add(subjectId); |
| | | }else{// 非高校 |
| | | }else{// 非高校 |
| | | |
| | | hql.append(" and b.type=? and b.classId=? and g.classId=?"); |
| | | args.add(ExerciseFaultBook.TYPE_ORGANIZATION); |
| | |
| | | } |
| | | hql.append(" order by r.updateTime desc "); |
| | | |
| | | // 根据结构查询得到所需记录 |
| | | // 根据结构查询得到所需记录 |
| | | List<Object[]> lstRecord = this.findList(hql.toString(), pager, args, Object[].class); |
| | | |
| | | if(lstRecord.isEmpty()){// 查询结果记录为空 |
| | | if(lstRecord.isEmpty()){// 查询结果记录为空 |
| | | return null; |
| | | } |
| | | |
| | | // 3.组装参数 |
| | | // 3.组装参数 |
| | | Object[] argss = new Object[lstRecord.size()]; |
| | | ExerciseGroup groupp=null; |
| | | for(int i=0; i<lstRecord.size(); i++){ |
| | |
| | | argss[i] = groupp.getGroupId(); |
| | | } |
| | | |
| | | // 获取个人用户组对应的收藏记录 题目更新时间 |
| | | // 获取个人用户组对应的收藏记录 题目更新时间 |
| | | Map<String, Map<String, Object>> favorMap = this.queryFavorRecordByGroup(subjectId, argss); |
| | | |
| | | // 结果返回参数 |
| | | // 结果返回参数 |
| | | List<ExerGroupResponseData> lstResult = new ArrayList<ExerGroupResponseData>(lstRecord.size()); |
| | | |
| | | for(Object[] objs:lstRecord){ |
| | | |
| | | // 组装练习错题本列表数据 |
| | | // 组装练习错题本列表数据 |
| | | lstResult.add(packagingExerciseFaultListData( |
| | | favorMap, objs)); |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 组装练习错题本列表数据 |
| | | * 组装练习错题本列表数据 |
| | | * @param favorMap |
| | | * @param objs |
| | | * @return |
| | |
| | | |
| | | ExerGroupResponseData resultObj = new ExerGroupResponseData(); |
| | | |
| | | // 拆分方法 |
| | | // 拆分方法 |
| | | packagingExerciseFaultListChildData(record, resultObj); |
| | | |
| | | resultObj.setExtendAllCount(record.getAllCount()==null ? BigInteger.ZERO : record.getAllCount()); |
| | |
| | | resultObj.setFaultUpdateTime(record.getUpdateTime()); |
| | | resultObj.setFaultCount(resultObj.getAllCount()); |
| | | if(favorMap != null && favorMap.get(group.getGroupId()) != null){ |
| | | resultObj.setFavorUpdateTime((Timestamp)favorMap.get(group.getGroupId()).get(UPDATE_TIME));//设置收藏本题目更新时间 |
| | | resultObj.setFavorUpdateTime((Timestamp)favorMap.get(group.getGroupId()).get(UPDATE_TIME));//设置收藏本题目更新时间 |
| | | resultObj.setFavorCount((BigInteger)favorMap.get(group.getGroupId()).get("allCount")); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 组装练习错题本列表数据 拆分方法 |
| | | * 组装练习错题本列表数据 拆分方法 |
| | | * @param record |
| | | * @param resultObj |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取个人用户组对应的错题题目更新时间 |
| | | * 获取个人用户组对应的错题题目更新时间 |
| | | * @param subjectId |
| | | * @param args |
| | | * @return |
| | |
| | | @Override |
| | | public Map<String, Map<String, Object>> queryFaultRecordByGroup(String subjectId, Object[] args) { |
| | | StringBuffer hql = new StringBuffer(512); |
| | | // 1.查询分组列表 |
| | | // 1.查询分组列表 |
| | | hql.append("select r.exerciseGroupId,r.updateTime,r.allCount from ExerciseFaultRecord r, ExerciseFaultBook b " |
| | | + " where r.resumeBookId=b.resumeBookId " |
| | | + " and b.userId = :userId and r.exerciseGroupId in (:groupIds) "); |
| | |
| | | argsMap.put("userId", ClientUtils.getUserId()); |
| | | argsMap.put("groupIds", args); |
| | | |
| | | if(StringUtils.isNotBlank(subjectId)){// 高校 通过课程过滤 |
| | | if(StringUtils.isNotBlank(subjectId)){// 高校 通过课程过滤 |
| | | |
| | | hql.append(" and b.type=:type and b.subjectId=:subjectId "); |
| | | argsMap.put("type", ExerciseFaultBook.TYPE_COLLEGE); |
| | | argsMap.put("subjectId", subjectId); |
| | | }else{// 非高校 |
| | | }else{// 非高校 |
| | | |
| | | hql.append(" and b.type=:type and b.classId=:classId "); |
| | | argsMap.put("type", ExerciseFaultBook.TYPE_ORGANIZATION); |
| | | argsMap.put("classId", ClientUtils.getClassId()); |
| | | } |
| | | |
| | | // 根据结构查询得到所需记录 |
| | | // 根据结构查询得到所需记录 |
| | | List<Object[]> lstRecord = this.findByComplexHql(hql.toString(), argsMap, Object[].class); |
| | | |
| | | Map<String, Map<String, Object>> resultMap = new HashMap<String, Map<String, Object>>(lstRecord.size()); |
| | |
| | | } |
| | | |
| | | /** |
| | | *获取个人用户组对应的收藏题目更新时间 |
| | | *获取个人用户组对应的收藏题目更新时间 |
| | | * @param subjectId |
| | | * @param args |
| | | * @return |
| | |
| | | @Override |
| | | public Map<String, Map<String, Object>> queryFavorRecordByGroup(String subjectId, Object[] args) { |
| | | StringBuffer hql = new StringBuffer(512); |
| | | // 1.查询分组列表 |
| | | // 1.查询分组列表 |
| | | hql.append("select r.exerciseGroupId,r.updateTime,r.allCount from ExerciseFavoriteRecord r, ExerciseFavoriteBook b" |
| | | + " where r.favoriteBookId=b.favoriteBookId " |
| | | + " and b.userId = :userId and r.exerciseGroupId in (:groupIds) "); |
| | |
| | | argsMap.put("userId", ClientUtils.getUserId()); |
| | | argsMap.put("groupIds", args); |
| | | |
| | | if(StringUtils.isNotBlank(subjectId)){// 高校 通过课程过滤 |
| | | if(StringUtils.isNotBlank(subjectId)){// 高校 通过课程过滤 |
| | | |
| | | hql.append(" and b.type=:type and b.subjectId=:subjectId "); |
| | | argsMap.put("type", ExerciseFaultBook.TYPE_COLLEGE); |
| | | argsMap.put("subjectId", subjectId); |
| | | }else{// 非高校 |
| | | }else{// 非高校 |
| | | |
| | | hql.append(" and b.type=:type and b.classId=:classId "); |
| | | argsMap.put("type", ExerciseFaultBook.TYPE_ORGANIZATION); |
| | | argsMap.put("classId", ClientUtils.getClassId()); |
| | | } |
| | | |
| | | // 根据结构查询得到所需记录 |
| | | // 根据结构查询得到所需记录 |
| | | List<Object[]> lstRecord = this.findByComplexHql(hql.toString(), argsMap, Object[].class); |
| | | Map<String, Map<String, Object>> resultMap = new HashMap<String, Map<String, Object>>(lstRecord.size()); |
| | | Map<String, Object> paramMap = null; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 查询收藏本列表数据 |
| | | * @param exerType 0:表示全部错题 |
| | | * 查询收藏本列表数据 |
| | | * @param exerType 0:表示全部错题 |
| | | * @param subjectId |
| | | * @param pager |
| | | * @return |
| | |
| | | public List<ExerGroupResponseData> queryExerciseFavorListData(int exerType, |
| | | String subjectId, Pager pager) { |
| | | StringBuffer hql = new StringBuffer(512); |
| | | // 1.查询分组列表 |
| | | // 1.查询分组列表 |
| | | hql.append("select r, g from ExerciseFavoriteRecord r, ExerciseFavoriteBook b, ExerciseGroup g" |
| | | + " where r.favoriteBookId=b.favoriteBookId " |
| | | + " and r.exerciseGroupId=g.groupId " |
| | |
| | | + " and b.userId=? and r.allCount>0 "); |
| | | |
| | | List<Object> args = CollectionUtils.newList(ClientUtils.getUserId()); |
| | | if(exerType != 0){ //表示查询非全部收藏 exerType=0为查询全部收藏 |
| | | if(exerType != 0){ //表示查询非全部收藏 exerType=0为查询全部收藏 |
| | | hql.append(" and r.exerciseGroupType=?"); |
| | | args.add((short)exerType); |
| | | } |
| | | |
| | | if(StringUtils.isNotBlank(subjectId)){// 高校 通过课程过滤 |
| | | if(StringUtils.isNotBlank(subjectId)){// 高校 通过课程过滤 |
| | | |
| | | hql.append(" and b.type=? and b.subjectId=? and g.subjectId=? "); |
| | | args.add(ExerciseFaultBook.TYPE_COLLEGE); |
| | | args.add(subjectId); |
| | | args.add(subjectId); |
| | | }else{// 非高校 |
| | | }else{// 非高校 |
| | | |
| | | hql.append(" and b.type=? and b.classId=? and g.classId=?"); |
| | | args.add(ExerciseFaultBook.TYPE_ORGANIZATION); |
| | |
| | | } |
| | | hql.append(" order by r.updateTime desc "); |
| | | |
| | | // 根据结构查询得到所需记录 |
| | | // 根据结构查询得到所需记录 |
| | | List<Object[]> lstRecord = this.findList(hql.toString(), pager, args,Object[].class); |
| | | |
| | | if(lstRecord.isEmpty()){// 查询结果记录为空 |
| | | if(lstRecord.isEmpty()){// 查询结果记录为空 |
| | | return null; |
| | | } |
| | | |
| | |
| | | argss[i] = groupp.getGroupId(); |
| | | } |
| | | |
| | | // 获取个人用户组对应的错题记录 题目更新时间 |
| | | // 获取个人用户组对应的错题记录 题目更新时间 |
| | | Map<String, Map<String, Object>> faultMap = this.queryFaultRecordByGroup(subjectId, argss); |
| | | |
| | | // 结果返回参数 |
| | | // 结果返回参数 |
| | | List<ExerGroupResponseData> lstResult = new ArrayList<ExerGroupResponseData>(lstRecord.size()); |
| | | |
| | | for(Object[] objs:lstRecord){ |
| | | |
| | | // 组装练习收藏列表数据 |
| | | // 组装练习收藏列表数据 |
| | | lstResult.add(packagingExerciseFavorListData( |
| | | faultMap, objs)); |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 组装练习收藏列表数据 |
| | | * 组装练习收藏列表数据 |
| | | * @param faultMap |
| | | * @param objs |
| | | * @return |
| | |
| | | |
| | | ExerGroupResponseData resultObj = new ExerGroupResponseData(); |
| | | |
| | | // 拆分组装数据 |
| | | // 拆分组装数据 |
| | | packagingExerciseFavorListChildData(record, resultObj); |
| | | |
| | | resultObj.setExtendAllCount(record.getAllCount()==null ? BigInteger.ZERO : record.getAllCount()); |
| | |
| | | resultObj.setFavorUpdateTime(record.getUpdateTime()); |
| | | resultObj.setFavorCount(resultObj.getAllCount()); |
| | | if(faultMap !=null && faultMap.get(group.getGroupId()) !=null){ |
| | | resultObj.setFaultUpdateTime((Timestamp)faultMap.get(group.getGroupId()).get(UPDATE_TIME));//设置错题本题目更新时间 |
| | | resultObj.setFaultUpdateTime((Timestamp)faultMap.get(group.getGroupId()).get(UPDATE_TIME));//设置错题本题目更新时间 |
| | | resultObj.setFaultCount((BigInteger)faultMap.get(group.getGroupId()).get("allCount")); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 组装练习收藏列表数据 拆分组装数据 |
| | | * 组装练习收藏列表数据 拆分组装数据 |
| | | * @param record |
| | | * @param resultObj |
| | | */ |
| | |
| | | |
| | | |
| | | /** |
| | | * 获取全部收藏练习数据 |
| | | * 获取全部收藏练习数据 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public ExerItemResponseData queryAllExerciseFavorData(Pager pager) { |
| | | // 1.查询此用户是否有错题记录 |
| | | // 1.查询此用户是否有错题记录 |
| | | String hql = "select item, favor.favorRecord.exerciseGroupId,favor.favorRecord.favorBook.status " |
| | | + " from ExerciseItem item, ExerciseFavorite favor " |
| | | + " where item.exerciseId=favor.exerciseItemId" |
| | |
| | | status = String.valueOf(objs[2]); |
| | | } |
| | | item = new ExerciseItem(); |
| | | BeanUtils.copyProperties((ExerciseItem)objs[0], item);// 防止item同一个内存地址 |
| | | item.setExerciseGroupId(String.valueOf(objs[1]));//设置每个题目的组id |
| | | BeanUtils.copyProperties((ExerciseItem)objs[0], item);// 防止item同一个内存地址 |
| | | item.setExerciseGroupId(String.valueOf(objs[1]));//设置每个题目的组id |
| | | lstItems.add(item); |
| | | } |
| | | |
| | | // 2.重新组装练习题 加入分析结果 |
| | | // 2.重新组装练习题 加入分析结果 |
| | | lstItems = exerciseVerService.getCommonExerItemDetail(lstItems, null); |
| | | |
| | | // 3.组装答案 |
| | | // 3.组装答案 |
| | | ExerItemResponseData result = new ExerItemResponseData(); |
| | | |
| | | result.setItems(lstItems); |
| | | result.setStatus(status); |
| | | |
| | | result.setResult(new Result(true,"查询成功")); |
| | | result.setResult(new Result(true,"查询成功")); |
| | | |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 获取收藏练习数据 |
| | | * 获取收藏练习数据 |
| | | * @param groupId |
| | | * @param exerciseRecordId 废弃 |
| | | * @param exerciseRecordId 废弃 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public ExerItemResponseData queryExerciseFavorData(String groupId) { |
| | | // 1.查询此用户是否有错题记录 |
| | | // 1.查询此用户是否有错题记录 |
| | | String hql = "select item, favor " |
| | | + " from ExerciseItem item, ExerciseFavorite favor " |
| | | + " where item.exerciseId=favor.exerciseItemId" |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取多套收藏练习数据 |
| | | * 获取多套收藏练习数据 |
| | | * @param groupId |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Map<String,Object> queryExerciseMutiFavorData(String groupId) { |
| | | // 1.查询此用户是否有错题记录 |
| | | // 1.查询此用户是否有错题记录 |
| | | String hql = "select item.exerciseId " |
| | | + " from ExerciseItem item, ExerciseFavorite favor " |
| | | + " where item.exerciseId=favor.exerciseItemId" |
| | |
| | | } |
| | | |
| | | /** |
| | | * 查询收藏题目明细 |
| | | * 查询收藏题目明细 |
| | | * @param lstResult |
| | | * @param groupId |
| | | * @return |
| | |
| | | |
| | | } |
| | | |
| | | // 2.重新组装练习题 加入分析结果 |
| | | // 2.重新组装练习题 加入分析结果 |
| | | lstItems = exerciseVerService.getCommonExerItemDetail(lstItems, groupId); |
| | | |
| | | |
| | | // 3.组装答案 |
| | | // 3.组装答案 |
| | | ExerItemResponseData result = new ExerItemResponseData(); |
| | | |
| | | result.setExerciseGroupId(groupId); |
| | |
| | | |
| | | result.setAnswers(lstAnswers); |
| | | |
| | | result.setResult(new Result(true,"查询成功")); |
| | | result.setResult(new Result(true,"查询成功")); |
| | | |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 获取全部错题练习数据 |
| | | * 获取全部错题练习数据 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public ExerItemResponseData queryAllExerciseFaultData(Pager pager) { |
| | | // 1.查询此用户是否有错题记录 |
| | | // 1.查询此用户是否有错题记录 |
| | | String hql = "select item, fault.faultRecord.exerciseGroupId,fault.faultRecord.faultBook.status " |
| | | + " from ExerciseItem item, ExerciseFault fault " |
| | | + " where item.exerciseId=fault.exerciseItemId" |
| | |
| | | String status=null; |
| | | for(Object[] objs:lstResult){ |
| | | if(objs[2] !=null) { |
| | | status=String.valueOf(objs[2]);//获取全部题目的提交状态 |
| | | status=String.valueOf(objs[2]);//获取全部题目的提交状态 |
| | | } |
| | | item = new ExerciseItem(); |
| | | BeanUtils.copyProperties((ExerciseItem)objs[0], item);// 防止item同一个内存地址 |
| | | item.setExerciseGroupId(String.valueOf(objs[1]));//设置每个题目的组id |
| | | BeanUtils.copyProperties((ExerciseItem)objs[0], item);// 防止item同一个内存地址 |
| | | item.setExerciseGroupId(String.valueOf(objs[1]));//设置每个题目的组id |
| | | lstItems.add(item); |
| | | } |
| | | |
| | | // 2.重新组装练习题 加入分析结果 |
| | | // 2.重新组装练习题 加入分析结果 |
| | | lstItems = exerciseVerService.getCommonExerItemDetail(lstItems, null); |
| | | |
| | | |
| | | // 3.组装答案 |
| | | // 3.组装答案 |
| | | ExerItemResponseData result = new ExerItemResponseData(); |
| | | |
| | | result.setStatus(status); |
| | | result.setItems(lstItems); |
| | | |
| | | result.setResult(new Result(true,"查询成功")); |
| | | result.setResult(new Result(true,"查询成功")); |
| | | |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 获取单套题错题练习数据 |
| | | * 获取单套题错题练习数据 |
| | | * @param groupId |
| | | * @return |
| | | */ |
| | | @Override |
| | | public ExerItemResponseData queryExerciseFaultData(String groupId) { |
| | | // 1.查询此用户是否有错题记录 |
| | | // 1.查询此用户是否有错题记录 |
| | | String hql = "select item, fault " |
| | | + " from ExerciseItem item, ExerciseFault fault " |
| | | + " where item.exerciseId=fault.exerciseItemId" |
| | |
| | | + " and item.deleteFlag is false" |
| | | + " and fault.deleteFlag is false" |
| | | + " order by fault.createTime"; |
| | | // 2.查询答案 |
| | | // 2.查询答案 |
| | | |
| | | List<Object[]> lstResult = this.findwithRawResult(hql, CollectionUtils.newList(ClientUtils.getUserId(), groupId)); |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取多套题错题练习数据 |
| | | * 获取多套题错题练习数据 |
| | | * @param groupId |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Map<String,Object> queryExerciseMutiFaultData(String groupId) { |
| | | |
| | | // 1.查询题目 |
| | | // 1.查询题目 |
| | | String hql = "select item.exerciseId " |
| | | + " from ExerciseItem item, ExerciseFault fault " |
| | | + " where item.exerciseId=fault.exerciseItemId" |
| | |
| | | |
| | | |
| | | /** |
| | | * 查询错题明细数据 |
| | | * 查询错题明细数据 |
| | | * @param lstResult |
| | | * @param groupId |
| | | * @return |
| | |
| | | for(Object[] objs:lstResult){ |
| | | |
| | | item = (ExerciseItem)objs[0]; |
| | | if(StringUtils.isBlank(groupId)){// 表示查询所有错题 |
| | | item.setExerciseGroupId(String.valueOf(objs[2]));//设置每个题目的组id |
| | | if(StringUtils.isBlank(groupId)){// 表示查询所有错题 |
| | | item.setExerciseGroupId(String.valueOf(objs[2]));//设置每个题目的组id |
| | | } |
| | | lstItems.add(item); |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | // 2.重新组装练习题 加入分析结果 |
| | | // 2.重新组装练习题 加入分析结果 |
| | | lstItems = exerciseVerService.getCommonExerItemDetail(lstItems, groupId); |
| | | |
| | | |
| | | // 3.组装答案 |
| | | // 3.组装答案 |
| | | ExerItemResponseData result = new ExerItemResponseData(); |
| | | |
| | | result.setExerciseGroupId(groupId); |
| | |
| | | |
| | | result.setAnswers(lstAnswers); |
| | | |
| | | result.setResult(new Result(true,"查询成功")); |
| | | result.setResult(new Result(true,"查询成功")); |
| | | |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 获取收藏本答案数据 |
| | | * 获取收藏本答案数据 |
| | | */ |
| | | @Override |
| | | public ExerItemResponseData queryExerciseFavorAnswerData(String groupId) { |
| | |
| | | + " and f.favorRecord.favorBook.classId=?" |
| | | + " and f.answer is not null and f.deleteFlag is false"; |
| | | |
| | | // 1.查询错题 |
| | | // 1.查询错题 |
| | | List<ExerciseFavorite> lstFavors = this.find(hql, CollectionUtils.newList(groupId, |
| | | ClientUtils.getUserId(),ClientUtils.getClassId()), ExerciseFavorite.class); |
| | | |
| | |
| | | lstAnswers.add(answerU); |
| | | } |
| | | |
| | | // 3.组装答案 |
| | | // 3.组装答案 |
| | | ExerItemResponseData result = new ExerItemResponseData(); |
| | | |
| | | result.setAnswers(lstAnswers); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取错题本答案数据 |
| | | * 获取错题本答案数据 |
| | | */ |
| | | @Override |
| | | public ExerItemResponseData queryExerciseFaultAnswerData(String groupId) { |
| | |
| | | + " and f.faultRecord.faultBook.classId=?" |
| | | + " and f.answer is not null and f.deleteFlag is false"; |
| | | |
| | | // 1.查询错题 |
| | | // 1.查询错题 |
| | | List<ExerciseFault> lstFaults = this.find(hql, CollectionUtils.newList(groupId, |
| | | ClientUtils.getUserId(),ClientUtils.getClassId()), ExerciseFault.class); |
| | | |
| | |
| | | lstAnswers.add(answerU); |
| | | } |
| | | |
| | | // 3.组装答案 |
| | | // 3.组装答案 |
| | | ExerItemResponseData result = new ExerItemResponseData(); |
| | | |
| | | result.setAnswers(lstAnswers); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 操作本次做题记录 |
| | | * groupId 习题组ID 如果为All时,表示全部错题、全部收藏 |
| | | * 操作本次做题记录 |
| | | * groupId 习题组ID 如果为All时,表示全部错题、全部收藏 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Map<String, Object> doUpdateFaultExerRecordNew(String groupId) { |
| | | |
| | | if("All".equals(groupId)){//表示全部错题重做 |
| | | if("All".equals(groupId)){//表示全部错题重做 |
| | | return doCleanAllFaultRecordByRedo(); |
| | | } |
| | | |
| | |
| | | |
| | | String faultRecordId = record.getFaultRecordId(); |
| | | |
| | | // 重新做题 清理旧数据 |
| | | // 重新做题 清理旧数据 |
| | | doOperExerciseFaultRecordByRedo(faultRecordId); |
| | | |
| | | |
| | | // 更新全部收藏题目的信息 |
| | | // 更新全部收藏题目的信息 |
| | | this.doOperFaultBookBySubmitAllAnswer( |
| | | null, null, record.getResumeBookId(),null); |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 全部错题重做 |
| | | * 全部错题重做 |
| | | * @return |
| | | */ |
| | | private Map<String,Object> doCleanAllFaultRecordByRedo(){ |
| | | |
| | | /** 1.更新错题book记录为初始值 */ |
| | | /** 1.更新错题book记录为初始值 */ |
| | | String hql_book = "from ExerciseFaultBook b where b.userId=? and b.classId=? and b.type=? "; |
| | | |
| | | ExerciseFaultBook book = this.findUnique(hql_book, CollectionUtils.newList(ClientUtils.getUserId(), |
| | |
| | | BigDecimal decimalZero = BigDecimal.ZERO; |
| | | BigInteger integerZero = BigInteger.ZERO; |
| | | |
| | | /** 2.更新所有错题record记录为初始值 */ |
| | | /** 2.更新所有错题record记录为初始值 */ |
| | | String hql_record = "update ExerciseFaultRecord t set t.score="+decimalZero+", t.completionRate="+decimalZero+", t.doCount="+integerZero+"," |
| | | + " t.correctCount="+integerZero+", t.accuracy="+decimalZero+", t.titleMaxNumber='0', t.status='0'" |
| | | + " where t.resumeBookId=? and t.deleteFlag is false"; |
| | |
| | | this.bulkUpdateInLoop(hql_record, new String[]{resumeBookId}); |
| | | |
| | | |
| | | /** 3.重新做题 清理所有旧数据 */ |
| | | // 3.1复制错题数据到历史表 |
| | | /** 3.重新做题 清理所有旧数据 */ |
| | | // 3.1复制错题数据到历史表 |
| | | String hql_fault = "from ExerciseFault where resumeBookId=? and answer is not null and deleteFlag is false"; |
| | | doCopyExerciseFaultToHis(hql_fault,resumeBookId); |
| | | |
| | | // 3.2清空错题做题记录 |
| | | // 3.2清空错题做题记录 |
| | | String hql_delFault = "update ExerciseFault t set t.answer=null,t.correct=0" |
| | | + " where t.resumeBookId=? and t.answer is not null and t.deleteFlag is false"; |
| | | this.bulkUpdateInLoop(hql_delFault, new String[]{resumeBookId}); |
| | | |
| | | /** 4.返回结果 */ |
| | | /** 4.返回结果 */ |
| | | Map<String,Object> resultMap = new HashMap<String, Object>(3); |
| | | resultMap.put(EXERCISE_RECORD_ID, null); |
| | | resultMap.put("exerciseGroupId", "All"); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 重新做题 清理旧数据 |
| | | * 重新做题 清理旧数据 |
| | | * @param faultRecordId |
| | | * @return |
| | | */ |
| | | public Result doOperExerciseFaultRecordByRedo(String faultRecordId){ |
| | | |
| | | // 1.拷贝做题记录到错题答案历史表 |
| | | // 1.拷贝做题记录到错题答案历史表 |
| | | String hql = "from ExerciseFault where faultRecordId=? and answer is not null and deleteFlag is false"; |
| | | doCopyExerciseFaultToHis(hql, faultRecordId); |
| | | |
| | | // 2.删除做题记录 |
| | | // 2.删除做题记录 |
| | | deleteExerciseFaultRecord(faultRecordId); |
| | | |
| | | return new Result(true); |
| | | } |
| | | |
| | | /** |
| | | * 拷贝做题记录到错题答案历史表 |
| | | * 拷贝做题记录到错题答案历史表 |
| | | * @param faultRecordId/resumeBookId |
| | | * @return |
| | | */ |
| | | public Result doCopyExerciseFaultToHis(String hql,String recordId){ |
| | | List<ExerciseFault> lstFault = this.find(hql, CollectionUtils.newList(recordId), ExerciseFault.class); |
| | | |
| | | // 错题历史记录表 |
| | | // 错题历史记录表 |
| | | List<ExerciseFaultHis> lstFaultHis = new ArrayList<ExerciseFaultHis>(lstFault.size()); |
| | | ExerciseFaultHis his = null; |
| | | for(ExerciseFault fault:lstFault){ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 批量刪除错题做题记录 |
| | | * 批量刪除错题做题记录 |
| | | * @param faultRecordId |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 批量刪除错题做题记录 |
| | | * 批量刪除错题做题记录 |
| | | * @param faultRecordId |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 操作本次做题记录 收藏 |
| | | * 操作本次做题记录 收藏 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Map<String, Object> doUpdateFavortExerRecordNew(String groupId) { |
| | | |
| | | if("All".equals(groupId)){//表示全部收藏重做 |
| | | if("All".equals(groupId)){//表示全部收藏重做 |
| | | return doCleanAllFavorRecordByRedo(); |
| | | } |
| | | |
| | |
| | | |
| | | String favoriteRecordId = record.getFavoriteRecordId(); |
| | | |
| | | // 重新开始做题 清理旧数据 |
| | | // 重新开始做题 清理旧数据 |
| | | doOperExerciseFavorRecordByRedo(favoriteRecordId); |
| | | |
| | | // 更新全部收藏题目的统计信息 |
| | | // 更新全部收藏题目的统计信息 |
| | | this.doOperFavorBookBySubmitAllAnswer(null, null, record.getFavoriteBookId(),null); |
| | | |
| | | Map<String,Object> resultMap = new HashMap<String, Object>(3); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 全部收藏重做 |
| | | * 全部收藏重做 |
| | | * @return |
| | | */ |
| | | private Map<String,Object> doCleanAllFavorRecordByRedo(){ |
| | | |
| | | /** 1.更新收藏book记录为初始值 */ |
| | | /** 1.更新收藏book记录为初始值 */ |
| | | String hql_book = "from ExerciseFavoriteBook b where b.userId=? and b.classId=? and b.type=? "; |
| | | |
| | | ExerciseFavoriteBook book = this.findUnique(hql_book, CollectionUtils.newList(ClientUtils.getUserId(), |
| | |
| | | BigDecimal decimalZero = BigDecimal.ZERO; |
| | | BigInteger integerZero = BigInteger.ZERO; |
| | | |
| | | /** 2.更新所有收藏record记录为初始值 */ |
| | | /** 2.更新所有收藏record记录为初始值 */ |
| | | String hql_record = "update ExerciseFavoriteRecord t set t.score="+decimalZero+", t.completionRate="+decimalZero+", t.doCount="+integerZero+"," |
| | | + " t.correctCount="+integerZero+", t.accuracy="+decimalZero+", t.titleMaxNumber='0', t.status='0'" |
| | | + " where t.favoriteBookId=? and t.deleteFlag is false"; |
| | |
| | | this.bulkUpdateInLoop(hql_record, new String[]{favoriteBookId}); |
| | | |
| | | |
| | | /** 3.重新做题 清理所有旧数据 */ |
| | | // 3.1复制收藏数据到历史表 |
| | | /** 3.重新做题 清理所有旧数据 */ |
| | | // 3.1复制收藏数据到历史表 |
| | | String hql_favor = "from ExerciseFavorite where favoriteBookId=? and answer is not null and deleteFlag is false"; |
| | | doCopyExerciseFavorToHis(hql_favor,favoriteBookId); |
| | | |
| | | // 3.2清空收藏做题记录 |
| | | // 3.2清空收藏做题记录 |
| | | String hql_delFavor = "update ExerciseFavorite t set t.answer=null,t.correct=0" |
| | | + " where t.favoriteBookId=? and t.answer is not null and t.deleteFlag is false"; |
| | | this.bulkUpdateInLoop(hql_delFavor, new String[]{favoriteBookId}); |
| | | |
| | | /** 4.返回结果 */ |
| | | /** 4.返回结果 */ |
| | | Map<String,Object> resultMap = new HashMap<String, Object>(3); |
| | | resultMap.put(EXERCISE_RECORD_ID, null); |
| | | resultMap.put("exerciseGroupId", "All"); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 重新开始做题 清理旧数据 |
| | | * 重新开始做题 清理旧数据 |
| | | * @param favoriteRecordId |
| | | * @return |
| | | */ |
| | | public Result doOperExerciseFavorRecordByRedo(String favoriteRecordId){ |
| | | |
| | | // 1.拷贝做题记录到收藏答案历史表 |
| | | // 1.拷贝做题记录到收藏答案历史表 |
| | | String hql = "from ExerciseFavorite where favoriteRecordId=? and answer is not null and deleteFlag is false"; |
| | | doCopyExerciseFavorToHis(hql, favoriteRecordId); |
| | | |
| | | // 2.删除做题记录 |
| | | // 2.删除做题记录 |
| | | deleteExerciseFavorRecord(favoriteRecordId); |
| | | |
| | | return new Result(true); |
| | | } |
| | | |
| | | /** |
| | | * 拷贝做题记录到收藏答案历史表 |
| | | * 拷贝做题记录到收藏答案历史表 |
| | | * @param faultRecordId/favoriteBookId |
| | | * @return |
| | | */ |
| | | public Result doCopyExerciseFavorToHis(String hql, String recordId){ |
| | | List<ExerciseFavorite> lstFavor = this.find(hql, CollectionUtils.newList(recordId), ExerciseFavorite.class); |
| | | |
| | | // 错题历史记录表 |
| | | // 错题历史记录表 |
| | | List<ExerciseFavoriteHis> lstFavorHis = new ArrayList<ExerciseFavoriteHis>(lstFavor.size()); |
| | | ExerciseFavoriteHis his = null; |
| | | for(ExerciseFavorite favor:lstFavor){ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 查询题目统计分析结果 个人统计 全站统计 |
| | | * 查询题目统计分析结果 个人统计 全站统计 |
| | | * @param exerciseType |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<Map<String, Object>> queryExerciseItemStatisics(String exerciseType) { |
| | | // 题目个人统计 |
| | | // 题目个人统计 |
| | | String hql_analisisU = ""; |
| | | // 题目全站统计 |
| | | // 题目全站统计 |
| | | String hql_analisis = ""; |
| | | // 题目 |
| | | // 题目 |
| | | String hql_item = ""; |
| | | |
| | | if(Constants.EXERCISE_TYPE_FAULT.equals(exerciseType)){// 错题本 |
| | | if(Constants.EXERCISE_TYPE_FAULT.equals(exerciseType)){// 错题本 |
| | | |
| | | hql_analisisU = "select a from ExerciseItemAnalisiU a,ExerciseFault re" |
| | | + " where a.exerciseItemId=re.exerciseItemId " |
| | |
| | | + " where re.faultBook.userId=? and re.faultBook.classId=? " |
| | | + " and re.deleteFlag is false order by re.createTime"; |
| | | |
| | | }else if(Constants.EXERCISE_TYPE_FAVORT.equals(exerciseType)){// 收藏 |
| | | }else if(Constants.EXERCISE_TYPE_FAVORT.equals(exerciseType)){// 收藏 |
| | | |
| | | hql_analisisU = "select a from ExerciseItemAnalisiU a,ExerciseFavorite re" |
| | | + " where a.exerciseItemId=re.exerciseItemId " |
| | |
| | | } |
| | | |
| | | /** |
| | | * 查询错题题目统计 |
| | | * 查询错题题目统计 |
| | | * @return |
| | | */ |
| | | private List<Map<String, Object>> doQueryExerciseItemStatisicsData(String hql_analisisU, |
| | | String hql_analisis, String hql_item) { |
| | | // 1.查询个人统计 |
| | | // 1.查询个人统计 |
| | | List<ExerciseItemAnalisiU> lstAnalisiU = this.find(hql_analisisU, |
| | | CollectionUtils.newList(ClientUtils.getUserId(),ClientUtils.getUserId(),ClientUtils.getClassId()), ExerciseItemAnalisiU.class); |
| | | |
| | |
| | | anasisUMap.put(analisisU.getExerciseItemId(), analisisU); |
| | | } |
| | | |
| | | // 2.查询全站统计 |
| | | // 2.查询全站统计 |
| | | List<ExerciseItemAnalisi> lstAnalisi = this.find(hql_analisis, |
| | | CollectionUtils.newList(ClientUtils.getUserId(),ClientUtils.getClassId()), ExerciseItemAnalisi.class); |
| | | Map<String, ExerciseItemAnalisi> anasisMap = new HashMap<String, ExerciseItemAnalisi>(lstAnalisi.size()); |
| | |
| | | return null; |
| | | } |
| | | |
| | | // 3.查询此组所有题目 |
| | | // 3.查询此组所有题目 |
| | | List<String> lstItemIds = this.find(hql_item, |
| | | CollectionUtils.newList(ClientUtils.getUserId(),ClientUtils.getClassId()), String.class); |
| | | |
| | |
| | | ExerciseItemAnalisi analisis; |
| | | ExerciseItemAnalisiU analisisU; |
| | | |
| | | // 3.组装结果 |
| | | // 3.组装结果 |
| | | |
| | | // 循坏组所有题目 |
| | | // 循坏组所有题目 |
| | | for(String exerciseItemId:lstItemIds){ |
| | | // 结果map |
| | | // 结果map |
| | | resultMap = new HashMap<String, Object>(10); |
| | | |
| | | // 1.个人分析结果 |
| | | // 1.个人分析结果 |
| | | analisisU = anasisUMap.get(exerciseItemId); |
| | | // 2.全站分析结果 |
| | | // 2.全站分析结果 |
| | | analisis = anasisMap.get(exerciseItemId); |
| | | |
| | | resultMap.put("exerciseId", exerciseItemId); |
| | | |
| | | // 3.个人统计 |
| | | if(null == analisisU){// 为空 |
| | | // 3.个人统计 |
| | | if(null == analisisU){// 为空 |
| | | resultMap.put("doAll_u", 0); |
| | | resultMap.put("doError_u", 0); |
| | | resultMap.put("doAccuracy_u", 0); |
| | |
| | | resultMap.put("doAccuracy_u", analisisU.getAccuracy()); |
| | | } |
| | | |
| | | // 4.全站统计 |
| | | if(null == analisis){// 为空 |
| | | // 4.全站统计 |
| | | if(null == analisis){// 为空 |
| | | resultMap.put("doAll", 0); |
| | | resultMap.put("doAccuracy", 0); |
| | | }else{ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 更新错题book信息 |
| | | * 更新错题book信息 |
| | | * @param faultBookId |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 更新错题book信息 by提交全部错题答案 |
| | | * 更新错题book信息 by提交全部错题答案 |
| | | * @param currTitleNum |
| | | * @param status |
| | | * @return |
| | |
| | | public Result doOperFaultBookBySubmitAllAnswer(String currTitleNum, |
| | | String status,String faultBookId, String exerciseType) { |
| | | ExerciseFaultBook book = null; |
| | | if(StringUtils.isBlank(faultBookId)){// 是否全部错题 仅仅提交操作 |
| | | if(StringUtils.isBlank(faultBookId)){// 是否全部错题 仅仅提交操作 |
| | | if(Constants.EXERCISE_TYPE_FAULT.equals(exerciseType) |
| | | && ExerciseRecord.STATUS_SUBMIT.equals(status)){// 全部错题仅提交答案 |
| | | && ExerciseRecord.STATUS_SUBMIT.equals(status)){// 全部错题仅提交答案 |
| | | |
| | | book = this.findUnique("from ExerciseFaultBook where classId=? and userId=? and type=? and deleteFlag is false ", |
| | | CollectionUtils.newList(ClientUtils.getClassId(), |
| | |
| | | return new Result(false); |
| | | } |
| | | |
| | | }else{// 混合提交 |
| | | }else{// 混合提交 |
| | | book = this.read(ExerciseFaultBook.class, faultBookId); |
| | | if(book == null){ |
| | | return new Result(false); |
| | | } |
| | | } |
| | | |
| | | // 更新book信息 |
| | | // 更新book信息 |
| | | this.updateExerciseFaultBookInfo(book); |
| | | |
| | | if(StringUtils.isNotBlank(currTitleNum)){ |
| | | book.setTitleMaxNumber(currTitleNum); |
| | | } |
| | | if(StringUtils.isNotBlank(status)){ |
| | | book.setStatus("1".equals(status)?"1":"0");// 1:提交 0:未提交 |
| | | book.setStatus("1".equals(status)?"1":"0");// 1:提交 0:未提交 |
| | | |
| | | if("1".equals(status)){// 全部错题提交答案时 对应的record也改为提交状态 |
| | | if("1".equals(status)){// 全部错题提交答案时 对应的record也改为提交状态 |
| | | |
| | | /** 更新所有错题record记录为提交状态 */ |
| | | /** 更新所有错题record记录为提交状态 */ |
| | | String hql_record = "update ExerciseFaultRecord t set t.status='1'" |
| | | + " where t.resumeBookId=? and t.deleteFlag is false"; |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 更新收藏book信息 |
| | | * 更新收藏book信息 |
| | | * @param faultBookId |
| | | * @return |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 更新收藏book信息 by提交全部收藏答案 |
| | | * 更新收藏book信息 by提交全部收藏答案 |
| | | * @param currTitleNum |
| | | * @param status |
| | | * @return |
| | |
| | | String status,String favoriteBookId, String exerciseType) { |
| | | |
| | | ExerciseFavoriteBook book = null; |
| | | if(StringUtils.isBlank(favoriteBookId)){// 是否全部收藏 仅仅提交操作 |
| | | if(StringUtils.isBlank(favoriteBookId)){// 是否全部收藏 仅仅提交操作 |
| | | if(Constants.EXERCISE_TYPE_FAVORT.equals(exerciseType) |
| | | && ExerciseRecord.STATUS_SUBMIT.equals(status)){// 全部错题仅提交答案 |
| | | && ExerciseRecord.STATUS_SUBMIT.equals(status)){// 全部错题仅提交答案 |
| | | |
| | | book = this.findUnique("from ExerciseFavoriteBook where classId=? and userId=? and type=? and deleteFlag is false ", |
| | | CollectionUtils.newList(ClientUtils.getClassId(), |
| | |
| | | return new Result(false); |
| | | } |
| | | |
| | | }else{// 混合提交 |
| | | }else{// 混合提交 |
| | | book = this.read(ExerciseFavoriteBook.class, favoriteBookId); |
| | | if(book == null){ |
| | | return new Result(false); |
| | | } |
| | | } |
| | | |
| | | // 更新收藏book信息 |
| | | // 更新收藏book信息 |
| | | this.updateExerciseFavorBookInfo(book); |
| | | |
| | | if(StringUtils.isNotBlank(currTitleNum)){ |
| | |
| | | } |
| | | |
| | | if(StringUtils.isNotBlank(status)){ |
| | | book.setStatus("1".equals(status)?"1":"0");// 1:提交 0:未提交 |
| | | book.setStatus("1".equals(status)?"1":"0");// 1:提交 0:未提交 |
| | | |
| | | if("1".equals(status)){// 全部收藏提交答案时 对应的record也改为提交状态 |
| | | if("1".equals(status)){// 全部收藏提交答案时 对应的record也改为提交状态 |
| | | |
| | | /** 更新所有收藏record记录为提交状态 */ |
| | | /** 更新所有收藏record记录为提交状态 */ |
| | | String hql_record = "update ExerciseFavoriteRecord t set t.status='1'" |
| | | + " where t.favoriteBookId=? and t.deleteFlag is false"; |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 查询错题本book信息 |
| | | * 查询错题本book信息 |
| | | */ |
| | | @Override |
| | | public Map<String, Object> queryExerFaultInfo() { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 查询收藏本book信息 |
| | | * 查询收藏本book信息 |
| | | */ |
| | | @Override |
| | | public Map<String, Object> queryExerFavorInfo() { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 计算用户每天做错题的统计信息 |
| | | * 计算用户每天做错题的统计信息 |
| | | */ |
| | | @SuppressWarnings("unchecked") |
| | | @Override |
| | | public Result doCalcExerFaultStatisticsByDay(){ |
| | | log.info("---------------定时器 开始统计做题错题统计信息-----------start ------------------"); |
| | | // 1.计算前一天 对应做题人的做题信息 |
| | | log.info("---------------定时器 开始统计做题错题统计信息-----------start ------------------"); |
| | | // 1.计算前一天 对应做题人的做题信息 |
| | | String sql = "SELECT" |
| | | + " r.CLASS_ID," |
| | | + " t.USER_ID," |
| | |
| | | List<Object[]> resultlst = this.findBySql(sql, CollectionUtils.newList(yesterday, DateUtils.getToday())); |
| | | |
| | | |
| | | // 2.错题信息记录表 |
| | | // 2.错题信息记录表 |
| | | List<ExerciseFaultStatistics> statisLst = new ArrayList<ExerciseFaultStatistics>(resultlst.size()); |
| | | ExerciseFaultStatistics faultStatis = null; |
| | | for(Object[] objs:resultlst){ |
| | |
| | | |
| | | this.saveOrUpdateAll(statisLst); |
| | | |
| | | log.info("---------------定时器 开始统计做题错题统计信息-----------end ------------------"); |
| | | return new Result(true, "操作成功,统计记录总条数:"+statisLst.size()); |
| | | log.info("---------------定时器 开始统计做题错题统计信息-----------end ------------------"); |
| | | return new Result(true, "操作成功,统计记录总条数:"+statisLst.size()); |
| | | } |
| | | |
| | | /** |
| | | * 查询错题统计信息 |
| | | * @param type: week 最近一周 month:最近一月 year:最近一年 |
| | | * 查询错题统计信息 |
| | | * @param type: week 最近一周 month:最近一月 year:最近一年 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<Map<String,Object>> doGetFaultStatisInfo(String type) { |
| | | try { |
| | | // 开始时间 |
| | | // 开始时间 |
| | | String startDate = ""; |
| | | // 结束时间 今天 |
| | | // 结束时间 今天 |
| | | String endDate = DateUtils.getToday(); |
| | | |
| | | if("week".equals(type)){// 最近一周 7天前到今天 不包含今天 |
| | | if("week".equals(type)){// 最近一周 7天前到今天 不包含今天 |
| | | |
| | | startDate= DateUtils.getTheDay(-7); |
| | | }else if("month".equals(type)){// 最近一月 30天前到今天 不包含今天 |
| | | }else if("month".equals(type)){// 最近一月 30天前到今天 不包含今天 |
| | | |
| | | startDate= DateUtils.getTheDay(-30); |
| | | }else if("year".equals(type)){// 最近一年 365天前到今天 不包含今天 |
| | | }else if("year".equals(type)){// 最近一年 365天前到今天 不包含今天 |
| | | |
| | | startDate= DateUtils.getTheDay(-365); |
| | | } |
| | |
| | | + " and exerciseTime >=? and exerciseTime<=?" |
| | | + " order by exerciseTime"; |
| | | |
| | | // 查询结果 |
| | | // 查询结果 |
| | | List<Object[]> statisLst = this.findwithRawResult(hql, |
| | | CollectionUtils.newList(ClientUtils.getUserId(),ClientUtils.getClassId(), |
| | | DateUtils.convertStringToDate(startDate, "yyyy-MM-dd"), |
| | |
| | | return resultLst; |
| | | |
| | | } catch (ParseException e) { |
| | | log.error("查询错题容错率接口异常", e); |
| | | log.error("查询错题容错率接口异常", e); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 操作本次做题记录 错题 |
| | | * 操作本次做题记录 错题 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Result doUpdateExerciseFaultRecord(ExerciseFaultRecord record) { |
| | | //TraceUtils.setUpdateTrace(record);不更新updateTime |
| | | //TraceUtils.setUpdateTrace(record);不更新updateTime |
| | | this.save(record); |
| | | return new Result(true); |
| | | } |
| | | |
| | | /** |
| | | * 操作本次做题记录 收藏 |
| | | * 操作本次做题记录 收藏 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Result doUpdateExerciseFavorRecord(ExerciseFavoriteRecord record) { |
| | | //TraceUtils.setUpdateTrace(record); 不更新updateTime |
| | | //TraceUtils.setUpdateTrace(record); 不更新updateTime |
| | | this.save(record); |
| | | return new Result(true); |
| | | } |
| | | |
| | | /** |
| | | * |
| | | * 保存app端请求保存的数据 |
| | | * 保存app端请求保存的数据 |
| | | * @return |
| | | */ |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | public Result doUpdateExerciseFaultBook(String currTitleNum) { |
| | | // 查询此用户是否有收藏记录 |
| | | // 查询此用户是否有收藏记录 |
| | | String hql = "from ExerciseFaultBook where classId=? and userId=? and deleteFlag is false "; |
| | | |
| | | List<ExerciseFaultBook> lstFault = this.find(hql, |
| | |
| | | |
| | | @Override |
| | | public Result doUpdateExerciseFavorBook(String currTitleNum) { |
| | | // 查询此用户是否有收藏记录 |
| | | // 查询此用户是否有收藏记录 |
| | | String hql = "from ExerciseFavoriteBook where classId=? and userId=? and deleteFlag is false "; |
| | | |
| | | List<ExerciseFavoriteBook> lstFavor = this.find(hql, |
| | |
| | | } |
| | | |
| | | /** |
| | | *提交多套题答案结果到db |
| | | *提交多套题答案结果到db |
| | | */ |
| | | @Override |
| | | public Map<String, Object> doSubmitMutiExerciseAnswerData(ExerciseSubmitAnswerDataList answerDataList) { |
| | | // 用户本次做题提交的数据 |
| | | // 用户本次做题提交的数据 |
| | | List<ExerciseSubmitAnswerData> lstRecord = null; |
| | | ExerciseSubmitAnswerData answerResult= null; |
| | | List<ExerciseItemAnswerData> lstAnswers= null; |
| | |
| | | |
| | | List<Map<String,Object>> resultList = new ArrayList<Map<String,Object>>(lstRecord.size()); |
| | | |
| | | // 错题、收藏本bookid |
| | | // 错题、收藏本bookid |
| | | String faultBookId = null; |
| | | String favoriteBookId = null; |
| | | for(int i=0; i<lstRecord.size(); i++){ |
| | |
| | | |
| | | lstAnswers = answerResult.getItems(); |
| | | |
| | | // 记录id |
| | | // 记录id |
| | | String initExerciseRecordId = answerResult.getExerciseRecordId(); |
| | | |
| | | String recordData = JSONObject.toJSONString(answerResult); |
| | | |
| | | if(lstAnswers.isEmpty() |
| | | && !ExerciseRecord.STATUS_SUBMIT.equals(answerResult.getStatus()) |
| | | && answerResult.getSubmitType() != 1){// 提交状态 |
| | | && answerResult.getSubmitType() != 1){// 提交状态 |
| | | this.doSaveExerciseDataSubmitLog(recordData, |
| | | initExerciseRecordId, ExerciseDataSubmitLog.TYPE_SUBMIT_EXTEND_ANSWER, |
| | | ExerciseDataSubmitLog.STATUS_FAILED, "/exercise/Extend/exerExtendMutiAnswers"); |
| | | continue; |
| | | } |
| | | |
| | | /** 1.---------记录提交的数据日志 */ |
| | | // 记录提交的数据日志 |
| | | /** 1.---------记录提交的数据日志 */ |
| | | // 记录提交的数据日志 |
| | | String exerciseDataLogId = this.doSaveExerciseDataSubmitLog(recordData, |
| | | initExerciseRecordId, ExerciseDataSubmitLog.TYPE_SUBMIT_EXTEND_ANSWER, |
| | | ExerciseDataSubmitLog.STATUS_SUCCESS, "/exercise/Extend/exerExtendMutiAnswers"); |
| | | |
| | | /** 2.提交答案 */ |
| | | /** 2.提交答案 */ |
| | | String exerciseType = answerResult.getType(); |
| | | if(Constants.EXERCISE_TYPE_FAULT.equals(exerciseType)){// 错题本 |
| | | // 更新 提交练习答案 |
| | | if(Constants.EXERCISE_TYPE_FAULT.equals(exerciseType)){// 错题本 |
| | | // 更新 提交练习答案 |
| | | returnMap = this.doSubmitExerFaultAnswerDataNew(answerResult); |
| | | |
| | | if(null == returnMap){ |
| | |
| | | } |
| | | |
| | | faultBookId = (String) returnMap.get("exerciseBookId"); |
| | | }else if(Constants.EXERCISE_TYPE_FAVORT.equals(exerciseType)){// 收藏 |
| | | // 更新 提交练习答案 |
| | | }else if(Constants.EXERCISE_TYPE_FAVORT.equals(exerciseType)){// 收藏 |
| | | // 更新 提交练习答案 |
| | | returnMap = this.doSubmitExerFavorAnswerDataNew(answerResult); |
| | | |
| | | if(null == returnMap){ |
| | |
| | | continue; |
| | | } |
| | | |
| | | /** 3.发送 题目的全站统计 个人统计请求消息 */ |
| | | /** 3.发送 题目的全站统计 个人统计请求消息 */ |
| | | exerciseVerService.sendUpdateExerItemStatisticsMsg(answerResult.getExerciseGroupId(), answerResult); |
| | | |
| | | returnMap.put("type", exerciseType); |
| | | resultList.add(returnMap); |
| | | |
| | | // 4.---------更新本次提交的数据日志exerciseRecordId |
| | | // 4.---------更新本次提交的数据日志exerciseRecordId |
| | | if(StringUtils.isBlank(initExerciseRecordId) |
| | | && returnMap.get(EXERCISE_RECORD_ID) != null){// 为空 说明第一次提交 更新日志记录id |
| | | && returnMap.get(EXERCISE_RECORD_ID) != null){// 为空 说明第一次提交 更新日志记录id |
| | | exerciseVerService.doUpdateExerciseDataSubmitLog(exerciseDataLogId, |
| | | String.valueOf(returnMap.get(EXERCISE_RECORD_ID))); |
| | | |
| | |
| | | |
| | | } |
| | | |
| | | /** 4.判断是否全部做题时 统计全部做题信息 */ |
| | | /** 4.判断是否全部做题时 统计全部做题信息 */ |
| | | this.doOperFaultBookBySubmitAllAnswer( |
| | | answerDataList.getCurrTitleNum(), answerDataList.getStatus(),faultBookId, answerDataList.getExerciseType()); |
| | | |
| | | this.doOperFavorBookBySubmitAllAnswer( |
| | | answerDataList.getCurrTitleNum(), answerDataList.getStatus(),favoriteBookId, answerDataList.getExerciseType()); |
| | | |
| | | /** 5.返回结果 */ |
| | | /** 5.返回结果 */ |
| | | resultMap.put("success", true); |
| | | resultMap.put("attrs", resultList); |
| | | resultMap.put("msg", "提交成功"); |
| | | resultMap.put("msg", "提交成功"); |
| | | |
| | | return resultMap; |
| | | } |
| | | |
| | | /** |
| | | * 提交单套题答案结果到db |
| | | * 提交单套题答案结果到db |
| | | */ |
| | | @Override |
| | | public Result doSubmitExerciseAnswerData(ExerciseSubmitAnswerData answerResult) { |
| | | // 用户本次做题提交的数据 |
| | | // 用户本次做题提交的数据 |
| | | Result result = new Result(false); |
| | | |
| | | if(answerResult.getItems().isEmpty() |
| | | && !ExerciseRecord.STATUS_SUBMIT.equals(answerResult.getStatus()) |
| | | && answerResult.getSubmitType() != 1){// 提交状态 |
| | | && answerResult.getSubmitType() != 1){// 提交状态 |
| | | return result; |
| | | } |
| | | |
| | | String exerciseType = answerResult.getType(); |
| | | |
| | | Map<String,Object> resultMap = null; |
| | | if(Constants.EXERCISE_TYPE_FAULT.equals(exerciseType)){// 错题本 |
| | | // 更新 提交练习答案 |
| | | if(Constants.EXERCISE_TYPE_FAULT.equals(exerciseType)){// 错题本 |
| | | // 更新 提交练习答案 |
| | | resultMap = this.doSubmitExerFaultAnswerDataNew(answerResult); |
| | | |
| | | if(null == resultMap){ |
| | | return new Result(false,"提交失败"); |
| | | return new Result(false,"提交失败"); |
| | | } |
| | | |
| | | // 统计全部做题信息/ |
| | | // 统计全部做题信息/ |
| | | this.doOperFaultBookBySubmitAllAnswer(null,null,(String) resultMap.get("exerciseBookId"),null); |
| | | |
| | | }else if(Constants.EXERCISE_TYPE_FAVORT.equals(exerciseType)){// 收藏 |
| | | // 更新 提交练习答案 |
| | | }else if(Constants.EXERCISE_TYPE_FAVORT.equals(exerciseType)){// 收藏 |
| | | // 更新 提交练习答案 |
| | | resultMap = this.doSubmitExerFavorAnswerDataNew(answerResult); |
| | | |
| | | if(null == resultMap){ |
| | | return new Result(false,"提交失败"); |
| | | return new Result(false,"提交失败"); |
| | | } |
| | | |
| | | // 统计全部做题信息/ |
| | | // 统计全部做题信息/ |
| | | this.doOperFavorBookBySubmitAllAnswer(null,null, (String) resultMap.get("exerciseBookId"),null); |
| | | }else{ |
| | | |
| | | return new Result(false, "exerciseType传值错误:exerciseType="+exerciseType); |
| | | return new Result(false, "exerciseType传值错误:exerciseType="+exerciseType); |
| | | } |
| | | |
| | | |
| | | // 3.发送 题目的全站统计 个人统计请求消息 |
| | | // 3.发送 题目的全站统计 个人统计请求消息 |
| | | List<ExerciseItemAnswerData> lstAnswers= answerResult.getItems(); |
| | | if(!lstAnswers.isEmpty()){ |
| | | exerciseVerService.sendUpdateExerItemStatisticsMsg(answerResult.getExerciseGroupId(), answerResult); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 初始化错题统计数据 |
| | | * 初始化错题统计数据 |
| | | */ |
| | | @SuppressWarnings("unchecked") |
| | | @Override |
| | | public Result doInitFaultStatisData() { |
| | | log.info("---------------定时器 开始统计做题错题统计信息-----------start ------------------"); |
| | | // 1.计算前一天 对应做题人的做题信息 |
| | | log.info("---------------定时器 开始统计做题错题统计信息-----------start ------------------"); |
| | | // 1.计算前一天 对应做题人的做题信息 |
| | | String sql = "SELECT" |
| | | + " r.CLASS_ID," |
| | | + " t.USER_ID," |
| | |
| | | List<Object[]> resultlst = this.findBySql(sql, CollectionUtils.newList(yesterday)); |
| | | |
| | | |
| | | // 2.错题信息记录表 |
| | | // 2.错题信息记录表 |
| | | List<ExerciseFaultStatistics> statisLst = new ArrayList<ExerciseFaultStatistics>(resultlst.size()); |
| | | ExerciseFaultStatistics faultStatis = null; |
| | | for(Object[] objs:resultlst){ |
| | |
| | | |
| | | this.saveOrUpdateAll(statisLst); |
| | | |
| | | log.info("---------------定时器 开始统计做题错题统计信息-----------end ------------------"); |
| | | return new Result(true, "操作成功,统计记录总条数:"+statisLst.size()); |
| | | log.info("---------------定时器 开始统计做题错题统计信息-----------end ------------------"); |
| | | return new Result(true, "操作成功,统计记录总条数:"+statisLst.size()); |
| | | } |
| | | |
| | | @Override |
| | |
| | | List<Object[]> lstData =this.findBySql(sql, new ArrayList<Object>()); |
| | | |
| | | if(lstData.isEmpty()){ |
| | | return new Result(false,"最近做题记录数据为空"); |
| | | return new Result(false,"最近做题记录数据为空"); |
| | | } |
| | | |
| | | List<ExerciseRecentRecord> lstRecord = new ArrayList<ExerciseRecentRecord>(lstData.size()); |
| | |
| | | |
| | | this.saveOrUpdateAll(lstRecord); |
| | | |
| | | return new Result(true,"此次插入ExerciseRecentRecord条数:"+lstRecord.size()); |
| | | return new Result(true,"此次插入ExerciseRecentRecord条数:"+lstRecord.size()); |
| | | } |
| | | |
| | | @SuppressWarnings({ "unchecked" }) |
| | |
| | | List<Object[]> lstData =this.findBySql(sql, new ArrayList<Object>()); |
| | | |
| | | if(lstData.isEmpty()){ |
| | | return new Result(false,"错题数据为空,本次没有需要更新的错题数据"); |
| | | return new Result(false,"错题数据为空,本次没有需要更新的错题数据"); |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | this.saveOrUpdateAll(lstRecord); |
| | | |
| | | return new Result(true, "插入ExerciseFaultRecord条数:"+lstRecord.size()); |
| | | return new Result(true, "插入ExerciseFaultRecord条数:"+lstRecord.size()); |
| | | } |
| | | |
| | | @SuppressWarnings("unchecked") |
| | |
| | | List<Object[]> lstData =this.findBySql(sql, new ArrayList<Object>()); |
| | | |
| | | if(lstData.isEmpty()){ |
| | | return new Result(false,"收藏数据为空,本次没有需要更新的收藏数据"); |
| | | return new Result(false,"收藏数据为空,本次没有需要更新的收藏数据"); |
| | | } |
| | | |
| | | String hql_existRecord = "from ExerciseFavoriteRecord where favoriteBookId=? and exerciseGroupId=? "; |
| | |
| | | this.saveOrUpdateAll(lstRecord); |
| | | |
| | | |
| | | return new Result(true,"插入ExerciseFavoriteRecord条数:"+lstRecord.size()); |
| | | return new Result(true,"插入ExerciseFavoriteRecord条数:"+lstRecord.size()); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | List<Object[]> lstData2 =this.findwithRawResult(sql2, new ArrayList<Object>()); |
| | | |
| | | if(lstData2.isEmpty()){//抛异常回滚 |
| | | return new Result(false,"错题数据为空2222"); |
| | | if(lstData2.isEmpty()){//抛异常回滚 |
| | | return new Result(false,"错题数据为空2222"); |
| | | } |
| | | |
| | | String hql_existRecord = "from ExerciseFaultRecord where resumeBookId=? and exerciseGroupId=? "; |
| | |
| | | |
| | | this.saveOrUpdateAll(lstFaults); |
| | | |
| | | return new Result(true, "更新ExerciseFault条数:"+lstFaults.size()); |
| | | return new Result(true, "更新ExerciseFault条数:"+lstFaults.size()); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | List<Object[]> lstData2 =this.findwithRawResult(sql2, new ArrayList<Object>()); |
| | | |
| | | if(lstData2.isEmpty()){//抛异常回滚 |
| | | return new Result(false,"收藏数据为空2222"); |
| | | if(lstData2.isEmpty()){//抛异常回滚 |
| | | return new Result(false,"收藏数据为空2222"); |
| | | } |
| | | |
| | | String hql_existRecord = "from ExerciseFavoriteRecord where favoriteBookId=? and exerciseGroupId=? "; |
| | |
| | | |
| | | this.saveOrUpdateAll(lstFavors); |
| | | |
| | | return new Result(true,"|更新ExerciseFavorite条数:"+lstFavors.size()); |
| | | return new Result(true,"|更新ExerciseFavorite条数:"+lstFavors.size()); |
| | | } |
| | | |
| | | @Override |