From 96286178ee1c257c130cb2ad964a781f36c4eee5 Mon Sep 17 00:00:00 2001 From: yn147 <2270338776@qq.com> Date: 星期三, 10 五月 2023 16:23:27 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/main/java/com/qxueyou/scc/exercise/service/impl/ExerciseInfoService.java | 356 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 178 insertions(+), 178 deletions(-) diff --git a/src/main/java/com/qxueyou/scc/exercise/service/impl/ExerciseInfoService.java b/src/main/java/com/qxueyou/scc/exercise/service/impl/ExerciseInfoService.java index 8efc799..f71fc0c 100644 --- a/src/main/java/com/qxueyou/scc/exercise/service/impl/ExerciseInfoService.java +++ b/src/main/java/com/qxueyou/scc/exercise/service/impl/ExerciseInfoService.java @@ -62,7 +62,7 @@ /** * 鑰冭瘯 - * + * * @author lihanqi * */ @@ -87,64 +87,64 @@ @Autowired IHandoutService handoutService; - + @Autowired IMsgInfoService msgInfoService; - + @Autowired IExerciseCompleteService exerciseCompleteService; - + @Autowired IExerciseGroupService exerciseGroupService; - + @Override public List<ExerciseInfo> list(String keyword,String classId,Short status,Integer pageSize,Integer pageNum) { StringBuffer hql = new StringBuffer(500); hql.append("from ExerciseInfo e where e.name like ? and e.createId =? "); List<Object> params = CollectionUtils.newList('%' + keyword.trim() + '%',ClientUtils.getUserId()); - + if(status!=null){ hql.append(" and e.status = ? "); params.add(status); } - + if(StringUtils.isNotEmpty(classId)){ hql.append(" and exists(select 1 from ExerciseExamReClass r where e.exerciseInfoId=r.examId and r.classId = ? and r.deleteFlag is false)"); params.add(classId); } - + hql.append(" and e.deleteFlag is false order by e.createTime desc"); return findList(hql.toString(),new Pager(pageSize, pageNum),params, ExerciseInfo.class); } - + @Override public int listCount(String keyword,String classId, Short status) { StringBuffer hql = new StringBuffer(500); hql.append("from ExerciseInfo e where e.name like ? and e.createId =? "); List<Object> params = CollectionUtils.newList('%' + keyword.trim() + '%',ClientUtils.getUserId()); - + if(status!=null){ hql.append(" and e.status = ? "); params.add(status); } - + if(StringUtils.isNotEmpty(classId)){ hql.append(" and exists(select 1 from ExerciseExamReClass r where e.exerciseInfoId=r.examId and r.classId = ? and r.deleteFlag is false)"); params.add(classId); } - + hql.append(" and e.deleteFlag is false "); return findCount(hql.toString(),params); } - + /** * 淇濆瓨浣滀笟 - * + * * @return */ public Result insertExerciseInfo(ExerciseInfo exerciseInfo) { String[] classIds = QBeanUtils.listPropertyVal(exerciseInfo.getReClasses(), "classId").toArray(new String[exerciseInfo.getReClasses().size()]); - + String exerciseInfoId = UUIDUtils.generateUUID().replace("-", ""); exerciseInfo.setExerciseInfoId(exerciseInfoId); exerciseInfo.setOrgId(ClientUtils.getOrgId()); @@ -157,39 +157,39 @@ // 淇濆瓨棰樼洰绫诲瀷 List<ExerciseItemSet> lstExerciseItemSet = exerciseInfo.getExerciseItemSets(); this.saveExerciseItemSet(exerciseInfoId,lstExerciseItemSet); - + //鐢熸垚浣滀笟棰樼洰淇℃伅 String[] sourceGroupIds = QBeanUtils.listPropertyVal(exerciseInfo.getReGroups(), "groupId").toArray(new String[exerciseInfo.getReGroups().size()]); - + String newGroupId = this.exerciseGroupService.doCreateRandomExerciseGroup( exerciseInfo.getName() + "-浣滀笟",ExerciseGroup.TYPE_EXERCISE_EXAM_ITEM,sourceGroupIds,lstExerciseItemSet); - + if(StringUtils.isEmpty(newGroupId)){ return new Result(false, "棰樼洰鏁版嵁涓嶅锛岃澧炲姞棰樺簱鐨勯鐩垨鑰呭噺灏戣瘯鍗风殑棰樻暟",exerciseInfoId); } - + this.saveExerciseExamReGroup(exerciseInfoId,new String[]{newGroupId},EXAM_TYPES[0],ExerciseExamReGroup.GROUP_TYPE_EXAM); - + // 淇濆瓨鍏宠仈棰樺簱淇℃伅 this.saveExerciseExamReGroup(exerciseInfoId,sourceGroupIds,null,ExerciseExamReGroup.GROUP_TYPE_SOURCE); } - + // 淇濆瓨鍏宠仈鐝骇 this.saveExerciseExamReClass(exerciseInfoId, classIds); - + return new Result(true, "", exerciseInfoId); } /** * 淇敼缁冧範 - * + * * @return */ public Result updateExerciseInfo(ExerciseInfo exerciseInfo) { String[] classIds = QBeanUtils.listPropertyVal(exerciseInfo.getReClasses(), "classId").toArray(new String[exerciseInfo.getReClasses().size()]); - + String exerciseInfoId = exerciseInfo.getExerciseInfoId(); - + ExerciseInfo newExerciseInfo = this.read(ExerciseInfo.class, exerciseInfoId); newExerciseInfo.setScore(exerciseInfo.getScore()); newExerciseInfo.setClassCount(classIds == null ? 0 : classIds.length); @@ -203,49 +203,49 @@ newExerciseInfo.setCommitUploadType(exerciseInfo.getCommitUploadType()); TraceUtils.setUpdateTrace(newExerciseInfo); this.save(newExerciseInfo); - + //娓呯悊鏃у叧绯绘暟鎹� this.doClearExerciseExamReData(exerciseInfoId); - + // 绛旈浣滀笟榛樿鎸夌収缁熶竴鍗风敓鎴愪綔涓氶鐩� - + if (newExerciseInfo.getType() == ExerciseInfo.EXERCISE_TYPE_ANSWER) { - + // 淇濆瓨棰樼洰绫诲瀷 List<ExerciseItemSet> lstExerciseItemSet = exerciseInfo.getExerciseItemSets(); - + saveExerciseItemSet(exerciseInfoId,lstExerciseItemSet); - + //鐢熸垚浣滀笟棰樼洰淇℃伅 String[] groupIds = QBeanUtils.listPropertyVal(exerciseInfo.getReGroups(), "groupId").toArray(new String[exerciseInfo.getReGroups().size()]); String newGroupId = this.exerciseGroupService.doCreateRandomExerciseGroup( - exerciseInfo.getName() + "-浣滀笟",ExerciseGroup.TYPE_EXERCISE_EXAM_ITEM,groupIds, lstExerciseItemSet); - + exerciseInfo.getName() + "-浣滀笟",ExerciseGroup.TYPE_EXERCISE_EXAM_ITEM,groupIds, lstExerciseItemSet); + if(StringUtils.isEmpty(newGroupId)){ return new Result(false, "棰樼洰鏁版嵁涓嶅锛岃澧炲姞棰樺簱鐨勯鐩垨鑰呭噺灏戣瘯鍗风殑棰樻暟"); } - + this.saveExerciseExamReGroup(exerciseInfoId,new String[]{newGroupId},EXAM_TYPES[0],ExerciseExamReGroup.GROUP_TYPE_EXAM); - + // 淇濆瓨鍏宠仈棰樺簱淇℃伅 this.saveExerciseExamReGroup(exerciseInfoId,groupIds,null,ExerciseExamReGroup.GROUP_TYPE_SOURCE); - - + + } // 淇濆瓨鍏宠仈鐝骇 this.saveExerciseExamReClass(exerciseInfoId, classIds); - + return new Result(true, "", exerciseInfoId); } - + //娓呴櫎涔嬪墠鐨勭粌涔犲叧鑱斿叧绯绘暟鎹� private void doClearExerciseExamReData(String exerciseInfoId){ this.bulkUpdate("update ExerciseExamReGroup set deleteFlag = 1 where examId = ?",new Object[]{exerciseInfoId}); this.bulkUpdate("update ExerciseExamReClass set deleteFlag = 1 where examId = ?",new Object[] {exerciseInfoId}); this.bulkUpdate("update ExerciseItemSet set deleteFlag = 1 where exerciseInfoId = ?",new Object[]{exerciseInfoId}); } - + private void saveExerciseExamReClass(String exerciseInfoId,String[] classIds){ ExerciseExamReClass reClass = null; for (String classId : classIds) { @@ -254,10 +254,10 @@ reClass.setDeleteFlag(false); reClass.setExamId(exerciseInfoId); TraceUtils.setCreateTrace(reClass); - this.save(reClass); + this.save(reClass); } } - + private void saveExerciseExamReGroup(String exerciseInfoId, String [] groupIds,String examType,short reType){ ExerciseExamReGroup reGroup = null; for (String groupId : groupIds) { @@ -269,9 +269,9 @@ reGroup.setExamId(exerciseInfoId); TraceUtils.setCreateTrace(reGroup); this.save(reGroup); - } + } } - + private void saveExerciseItemSet(String exerciseInfoId,List<ExerciseItemSet> lstExerciseItemSet){ for (ExerciseItemSet itemSet : lstExerciseItemSet) { itemSet.setExerciseInfoId(exerciseInfoId); @@ -282,7 +282,7 @@ /** * 鍒犻櫎浣滀笟 - * + * * @param examId * @return */ @@ -293,43 +293,43 @@ @Override public String queryExerciseInfoRelatedGroupId(String exerciseInfoId) { - return this.findUnique("select groupId from ExerciseExamReGroup where examId=? and type=? and deleteFlag is false ", - CollectionUtils.newList(exerciseInfoId, ExerciseExamReGroup.GROUP_TYPE_EXAM),String.class); + return this.findUnique("select groupId from ExerciseExamReGroup where examId=? and type=? and deleteFlag is false ", + CollectionUtils.newList(exerciseInfoId, ExerciseExamReGroup.GROUP_TYPE_EXAM),String.class); } - - + + @Override public List<ExerciseItemSet> queryExerciseItemSet(String exerciseInfoId){ - return this.find("from ExerciseItemSet where exerciseInfoId=? and deleteFlag is false order by itemType ASC", + return this.find("from ExerciseItemSet where exerciseInfoId=? and deleteFlag is false order by itemType ASC", CollectionUtils.newList(exerciseInfoId), ExerciseItemSet.class); } - + @Override public List<ExerciseResultV> queryStuExerciselist(String keyword,String exerciseInfoId,String userId,String subjectId,Short status,Integer pageSize,Integer pageNum) { StringBuffer hql = new StringBuffer(500); hql.append("from ExerciseResultV where exerciseStatus=?"); List<Object> params = CollectionUtils.newList(ExerciseInfo.EXERCISE_STATUS_PUBLISHED); - + if(!StringUtils.isEmpty(userId)){ hql.append(" and userId=? "); - params.add(userId); + params.add(userId); } - + if(!StringUtils.isEmpty(exerciseInfoId)){ hql.append(" and id.exerciseInfoId=?"); - params.add(exerciseInfoId); + params.add(exerciseInfoId); } - + if(!StringUtils.isEmpty(keyword)){ hql.append(" and studentName like ?"); - params.add("%" + keyword.trim() + "%"); + params.add("%" + keyword.trim() + "%"); } - + if(!StringUtils.isEmpty(subjectId)){ hql.append(" and subjectId=?"); params.add(subjectId); } - + //榛樿鍏ㄩ儴锛�0寰呭畬鎴愶紝1宸叉彁浜� ,2:宸叉壒闃�,3闇�閲嶅啓,4:閫炬湡鏈氦 if(status!=null){ Date nowTime = new Date(); @@ -353,38 +353,38 @@ params.add(ExerciseCompleteInfo.STATUS_DRAFT); } } - + hql.append(" order by startTime desc"); - + return this.findList(hql.toString(),new Pager(pageSize, pageNum),params, ExerciseResultV.class); } - + @Override public int queryStuExerciseListCount(String keyword,String exerciseInfoId,String userId,String subjectId,Short status) { StringBuffer hql = new StringBuffer(500); hql.append("from ExerciseResultV where exerciseStatus=?"); List<Object> params = CollectionUtils.newList(ExerciseInfo.EXERCISE_STATUS_PUBLISHED); - + if(!StringUtils.isEmpty(userId)){ hql.append(" and userId=? "); - params.add(userId); + params.add(userId); } - + if(!StringUtils.isEmpty(exerciseInfoId)){ hql.append(" and id.exerciseInfoId=?"); - params.add(exerciseInfoId); + params.add(exerciseInfoId); } - + if(!StringUtils.isEmpty(keyword)){ hql.append(" and studentName like ?"); params.add("%" + keyword.trim() + "%"); } - + if(!StringUtils.isEmpty(subjectId)){ hql.append(" and subjectId=?"); params.add(subjectId); } - + //榛樿鍏ㄩ儴锛�0寰呭畬鎴愶紝1宸叉彁浜� ,2:宸叉壒闃�,3闇�閲嶅啓,4:閫炬湡鏈氦 if(status!=null){ Date nowTime = new Date(); @@ -408,13 +408,13 @@ params.add(ExerciseCompleteInfo.STATUS_DRAFT); } } - - return this.findCount(hql.toString(), params); + + return this.findCount(hql.toString(), params); } - + /** * 鍒濆鍖栧钩鍧囨垚缁╁拰鏈�楂樻垚缁� - * + * * @param groupId * @return */ @@ -428,7 +428,7 @@ /** * 棰樼洰寰楀垎璇︽儏 - * + * * @param groupId * @return */ @@ -495,7 +495,7 @@ /** * 寮�濮嬮鐩綔涓� - * + * * @param examId * @return */ @@ -506,12 +506,12 @@ this.doStartAnswerExercise(exerciseInfo, clsClass, studentUserId) : this.doStartOtherExercise(exerciseInfo, clsClass, studentUserId); - + } /** * 寮�濮嬮鐩綔涓� - * + * * @param examId * @return */ @@ -559,51 +559,51 @@ // 鏌ヨ瀛︾敓鑰冭瘯鎬诲垎 result.addData("studentScore", record.getScore()); result.addData("objStudentScore", record.getObjScore()==null?BigDecimal.ZERO:record.getObjScore()); - + ExerciseCompleteInfo completeInfo = doGetOrCreateExerciseCompleteInfo(exerciseInfo.getExerciseInfoId(),clsClass.getClassId() , studentUserId); - + if(completeInfo!=null){ result.addData("exerciseCompleteId", completeInfo.getExerciseCompleteId()); } - + result.addData("itemSet", exerciseInfo.getExerciseItemSets()); return result; } - + private ExerciseCompleteInfo doGetOrCreateExerciseCompleteInfo(String exerciseInfoId,String classId,String studentUserId){ - // 鍒ゆ柇鏄惁宸茬粡鍒濆鍖� - ExerciseCompleteInfo completeInfo = exerciseCompleteService.queryCompleteInfo(exerciseInfoId,classId , studentUserId); - - if(completeInfo==null){ - String hql = " select s.studentId as studentId,s.studentNo as studentNo,s.userId as studentUserId,s.name as studentName," - + " c.classId as classId,c.name as className from StuStudent s ,ClsClass c,ExerciseExamReClass r " - + " where r.examId=:exerciseInfoId and r.classId =c.classId and c.classId= s.classId and s.userId=:userId" - + " and s.classId=:classId and r.examId=:exerciseInfoId and r.deleteFlag is false and s.deleteFlag is false and c.deleteFlag is false"; - - List<Map<String, Object>> resultMap = this.findListWithMapByHql(hql, + // 鍒ゆ柇鏄惁宸茬粡鍒濆鍖� + ExerciseCompleteInfo completeInfo = exerciseCompleteService.queryCompleteInfo(exerciseInfoId,classId , studentUserId); + + if(completeInfo==null){ + String hql = " select s.studentId as studentId,s.studentNo as studentNo,s.userId as studentUserId,s.name as studentName," + + " c.classId as classId,c.name as className from StuStudent s ,ClsClass c,ExerciseExamReClass r " + + " where r.examId=:exerciseInfoId and r.classId =c.classId and c.classId= s.classId and s.userId=:userId" + + " and s.classId=:classId and r.examId=:exerciseInfoId and r.deleteFlag is false and s.deleteFlag is false and c.deleteFlag is false"; + + List<Map<String, Object>> resultMap = this.findListWithMapByHql(hql, CollectionUtils.newObjectMap("userId",studentUserId,"classId",classId,"exerciseInfoId",exerciseInfoId)); - - if(resultMap!=null && resultMap.get(0)!=null){ - Map<String, Object> map = resultMap.get(0); - - completeInfo = new ExerciseCompleteInfo(); - TraceUtils.setCreateTrace(completeInfo); - completeInfo.setStudentId((String) map.get("studentId")); - completeInfo.setStudentNo((String) map.get("studentNo")); - completeInfo.setStudentUserId((String) map.get("studentUserId")); - completeInfo.setStudentUserName((String) map.get("studentName")); - completeInfo.setClassId((String) map.get("classId")); - completeInfo.setClassName((String) map.get("className")); - completeInfo.setExerciseInfoId(exerciseInfoId); - completeInfo.setCompleteStatus(ExerciseCompleteInfo.STATUS_DRAFT); - this.save(completeInfo); - } + + if(resultMap!=null && resultMap.get(0)!=null){ + Map<String, Object> map = resultMap.get(0); + + completeInfo = new ExerciseCompleteInfo(); + TraceUtils.setCreateTrace(completeInfo); + completeInfo.setStudentId((String) map.get("studentId")); + completeInfo.setStudentNo((String) map.get("studentNo")); + completeInfo.setStudentUserId((String) map.get("studentUserId")); + completeInfo.setStudentUserName((String) map.get("studentName")); + completeInfo.setClassId((String) map.get("classId")); + completeInfo.setClassName((String) map.get("className")); + completeInfo.setExerciseInfoId(exerciseInfoId); + completeInfo.setCompleteStatus(ExerciseCompleteInfo.STATUS_DRAFT); + this.save(completeInfo); } - - return completeInfo; + } + + return completeInfo; } - + private Map<String,Object> insertExerRecord(ExerciseInfo exerciseInfo,String groupId) { ExerciseRecord record = new ExerciseRecord(); record.setDeleteFlag(false); @@ -616,7 +616,7 @@ record.setUserId(ClientUtils.getUserId()); record.setOrgId(ClientUtils.getOrgId()); TraceUtils.setCreateTrace(record); - + //鑾峰彇鑰冭瘯棰樼洰缁熻淇℃伅锛屽苟淇濆瓨 Map<String,Object> result = this.queryItemStatics(exerciseInfo.getExerciseItemSets()); record.setTotalScore(new BigDecimal(exerciseInfo.getScore())); @@ -625,23 +625,23 @@ record.setObjTotalScore((BigDecimal)result.get("objTotalScore")); record.setSubItemCount((int)result.get("subItemCount")); record.setObjItemCount((int)result.get("objItemCount")); - + TraceUtils.setCreateTrace(record); this.save(record); - + Map<String,Object> resultMap = new HashMap<String, Object>(3); resultMap.put("exerciseRecordId", record.getRecordId()); resultMap.put("updateTime", DateTimeUtils.getCurrDateTime(record.getUpdateTime())); resultMap.put("exerciseGroupId", groupId); resultMap.put("record", record); - + return resultMap; } - + private Map<String,Object> queryItemStatics(List<ExerciseItemSet> itemSets){ float subTotalScore = 0,objTotalScore=0; int subItemCount=0,objItemCount=0; - + //濡傛灉鏄殢鏈虹粍鍗� if(itemSets!=null && itemSets.size()>0){ for(ExerciseItemSet s:itemSets){ @@ -654,19 +654,19 @@ } } } - + Map<String,Object> result = new HashMap<String,Object>(); result.put("subTotalScore", new BigDecimal(subTotalScore)); result.put("objTotalScore", new BigDecimal(objTotalScore)); result.put("subItemCount", subItemCount); result.put("objItemCount", objItemCount); - + return result; - } + } /** * 寮�濮嬫枃浠跺拰鍐欎綔浣滀笟 - * + * * @param examId * @return */ @@ -674,7 +674,7 @@ // 鏌ヨ鏄惁宸茬粡瀛樺湪鍋氶璁板綍锛屽鏋滀笉瀛樺湪闇�瑕佹柊寤� ExerciseCompleteInfo exerciseCompleteInfo = exerciseCompleteService.doCheckAndCreateExerciseCompleteInfo( exerciseInfo.getExerciseInfoId(), clsClass.getClassId(), studentUserId); - + exerciseCompleteInfo.setCommitUploadType(exerciseInfo.getCommitUploadType()); exerciseCompleteInfo.setRemind(exerciseInfo.getRemind()); exerciseCompleteInfo.setExerciseType(exerciseInfo.getType()); @@ -690,7 +690,7 @@ exerciseCompleteInfo .setPreviewPath(StringUtils.isNotEmpty(video.getAndroidHD()) ? video.getAndroidHD() : StringUtils.isNotEmpty(video.getAndroidSD()) ? video.getAndroidSD() - : video.getAndroidLD()); + : video.getAndroidLD()); } else { exerciseCompleteInfo.setTransStatus(ExerciseCompleteInfo.PREVIEW_STATUS_NO); } @@ -714,7 +714,7 @@ .getOrgText(exerciseCompleteInfo.getExerciseCompleteId(), OrgText.TABLE_WRITING_EXERCISE) .getContent()); } - + exerciseCompleteInfo.setTotalScore(exerciseInfo.getScore()); return new Result(true,"",CollectionUtils.newObjectMap("exerciseCompleteInfo", exerciseCompleteInfo)); @@ -722,11 +722,11 @@ @Override public Result doSubmitOtherExerciseInfo(String exerciseCompleteInfoId, String content, String fileId, - String filePath, short submitType) { + String filePath, short submitType) { Result result = new Result(true); ExerciseCompleteInfo exerciseCompleteInfo = this.read(ExerciseCompleteInfo.class, exerciseCompleteInfoId); ExerciseInfo exerciseInfo = this.read(ExerciseInfo.class, exerciseCompleteInfo.getExerciseInfoId()); - + if (exerciseInfo.getType() == ExerciseInfo.EXERCISE_TYPE_WRITING) { result = this.doSubmitWritingExerciseInfo(exerciseCompleteInfoId, content, submitType); } else if (exerciseInfo.getType() == ExerciseInfo.EXERCISE_TYPE_FILE) { @@ -738,7 +738,7 @@ /** * 鎻愪氦鍐欎綔浣滀笟 - * + * * @param exerciseInfoId * @param content * @param submitType @@ -762,14 +762,14 @@ exerciseCompleteInfo.setCompleteStatus(ExerciseCompleteInfo.STATUS_COMMIT); exerciseCompleteInfo.setCreator(ClientUtils.getUserName()); } - + this.save(exerciseCompleteInfo); return new Result(true); } /** * 鎻愪氦鏂囦欢浣滀笟 - * + * * @param exerciseCompleteInfoId * @param content * @param fileId @@ -778,7 +778,7 @@ * @return */ private Result doSubmitFileExerciseInfo(String exerciseCompleteInfoId, String content, String fileId, - String filePath, short submitType) { + String filePath, short submitType) { ExerciseCompleteInfo exerciseCompleteInfo = this.read(ExerciseCompleteInfo.class, exerciseCompleteInfoId); ExerciseInfo exerciseInfo = this.read(ExerciseInfo.class, exerciseCompleteInfo.getExerciseInfoId()); @@ -794,7 +794,7 @@ ResFile resFile = this.read(ResFile.class, fileId); exerciseCompleteInfo.setFileId(fileId); exerciseCompleteInfo.setFilePath(filePath); - exerciseCompleteInfo.setOrgiFileName(resFile.getFileName()); + exerciseCompleteInfo.setOrgiFileName(ClientUtils.getUserName()+"鐨勪綔涓�"); } exerciseCompleteInfo.setUploadDesc(content); @@ -885,12 +885,12 @@ return new Result(false, "鎻愪氦鏁版嵁寮傚父"); } - + ExerciseRecord record = this.read(ExerciseRecord.class, initRecordId); //璁$畻寰楀垎 double studentScore = this.doCalculateExerciseScores(answerData, exerciseInfo.getExerciseItemSets()); - + // 鎻愪氦璇曞嵎绛旀 answerData.setScore(new BigDecimal(studentScore)); Map<String, Object> resultMap = exerciseVerService.doOperExerciseAnswerData(answerData); @@ -898,19 +898,19 @@ // 鏇存柊寰楀垎璁板綍鍙婄姸鎬� exerciseCompleteInfo = this.read(ExerciseCompleteInfo.class, exerciseCompleteId); resultMap.put("studentScore", studentScore); - - + + // 鏇存柊瀹屾垚寰楀垎 if (ExerciseRecord.STATUS_SUBMIT.equals(answerData.getStatus())) { resultMap.put("objScore", studentScore); exerciseCompleteInfo.setSubmitTime(new Date()); - + if(record.getSubItemCount()==0){ exerciseCompleteInfo.setCompleteStatus(ExerciseCompleteInfo.STATUS_CHECKED); }else{ exerciseCompleteInfo.setCompleteStatus(ExerciseCompleteInfo.STATUS_COMMIT); } - + this.bulkUpdate( "update ExerciseRecord set status=1 , score=" + studentScore + ",objScore=" + studentScore + " where deleteFlag is false and recordId=?", @@ -928,10 +928,10 @@ + " where deleteFlag is false and recordId=? ", new Object[] { resultMap.get("recordId") }); } - exerciseCompleteInfo.setStudentScore(new BigDecimal(studentScore)); - + exerciseCompleteInfo.setStudentScore(new BigDecimal(studentScore)); + this.save(exerciseCompleteInfo); - + // 璁板綍鎻愪氦鐨勬暟鎹棩蹇� exerciseVerService.doSaveExerciseDataSubmitLog(JSON.toJSONString(answerData), initRecordId, ExerciseDataSubmitLog.TYPE_SUBMIT_ANSWER, ExerciseDataSubmitLog.STATUS_SUCCESS, @@ -956,15 +956,15 @@ private double doCalculateExerciseScores(ExerciseSubmitAnswerData answerData, List<ExerciseItemSet> lstItemSet) { //鑾峰彇濉┖棰樼瓟妗堜俊鎭� Map<String,String> exerciseFillItemMap= null; - List<Object[]> lstObj = this.find("select i.exerciseId,i.answer from ExerciseGroupItemRe r, ExerciseItem i where r.exerciseItemId=i.exerciseId and r.exerciseGroupId=? and r.deleteFlag is false and i.type=? and i.deleteFlag is false", + List<Object[]> lstObj = this.find("select i.exerciseId,i.answer from ExerciseGroupItemRe r, ExerciseItem i where r.exerciseItemId=i.exerciseId and r.exerciseGroupId=? and r.deleteFlag is false and i.type=? and i.deleteFlag is false", CollectionUtils.newList(answerData.getExerciseGroupId(),ExerciseItem.TYPE_FILL_BLANKS), Object[].class); if(lstObj!=null && lstObj.size()>0){ exerciseFillItemMap = new HashMap<String,String>(lstObj.size()); for(Object[] arrObj : lstObj){ exerciseFillItemMap.put((String)arrObj[0],(String)arrObj[1]); - } + } } - + Map<String, Double> scoreMap = new HashMap<String, Double>(); for (int i = 0; i < lstItemSet.size(); i++) { if (lstItemSet.get(i).getItemType() == ExerciseItem.TYPE_SINGLE_SELECT) { @@ -983,7 +983,7 @@ scoreMap.put("fill_right", lstItemSet.get(i).getRightScore()); scoreMap.put("fill_wrong", lstItemSet.get(i).getWrongScore()); scoreMap.put("fill_noanswer", lstItemSet.get(i).getBlankScore()); - } + } } double totalScore = 0.00; String tempRightAnswer =null; @@ -1040,7 +1040,7 @@ return totalScore; } - + @Override public Result doPublishExercise(String[] exerciseIds) { // 鏇存柊浣滀笟鐘舵�� @@ -1054,7 +1054,7 @@ for (String exerciseId : exerciseIds) { // 鍒ゆ柇鏄惁宸茬粡鍒濆鍖栵紝濡傛灉宸茬粡鍒濆鍖栧垯缁х画 -> TODO:闇�瑕佸鐞嗘柊鍔犲叆鐝骇瀛︾敓 int count = this.findCount("from ExerciseCompleteInfo f where f.deleteFlag is false and f.exerciseInfoId=?",CollectionUtils.newList(exerciseId)); - + if (count == 0) { hql = " select s.studentId as studentId,s.studentNo as studentNo,s.userId as studentUserId,s.name as studentName,c.classId as classId,c.name as className " + " from StuStudent s ,ClsClass c,ExerciseExamReClass r where r.examId=:exerciseInfoId " @@ -1079,26 +1079,26 @@ this.saveOrUpdateAll(lstCompleteInfos); } } - + //鍙戝竷浣滀笟娑堟伅 this.doExercisePublishMsg(exerciseId); } - + return new Result(true); } - + private void doExercisePublishMsg(String exerciseInfoId){ ExerciseInfo exerciseInfo= this.read(ExerciseInfo.class, exerciseInfoId); - - List<String> lstUserIds = this.find("select userId from ExerciseResultV where id.exerciseInfoId=?", - CollectionUtils.newList(exerciseInfoId), String.class); - + + List<String> lstUserIds = this.find("select userId from ExerciseResultV where id.exerciseInfoId=?", + CollectionUtils.newList(exerciseInfoId), String.class); + if(lstUserIds!=null && lstUserIds.size()>0){ Map<String,String> attrs = CollectionUtils.newStringMap("exerciseInfoId",exerciseInfoId,"exerciseName",exerciseInfo.getName(), - "subjectId",exerciseInfo.getSubjectId(),"subjectName",exerciseInfo.getSubject().getName()); - - msgInfoService.doSendTextMsgToUsers(lstUserIds.toArray(new String[lstUserIds.size()]), - MsgInfo.TYPE_EXERCISE," 鍙戝竷浜嗕綔涓� ", attrs); + "subjectId",exerciseInfo.getSubjectId(),"subjectName",exerciseInfo.getSubject().getName()); + + msgInfoService.doSendTextMsgToUsers(lstUserIds.toArray(new String[lstUserIds.size()]), + MsgInfo.TYPE_EXERCISE," 鍙戝竷浜嗕綔涓� ", attrs); } } @@ -1108,7 +1108,7 @@ this.bulkUpdateInLoop("update ExerciseInfo set status=" + ExerciseInfo.EXERCISE_STATUS_DRAFT + " WHERE exerciseInfoId=?",exerciseIds); // 娓呴櫎浣滀笟瀹屾垚鎯呭喌 this.bulkUpdateInLoop("update ExerciseCompleteInfo set deleteFlag= true WHERE exerciseInfoId=?", exerciseIds); - + return new Result(true); } @@ -1160,7 +1160,7 @@ /** * 鑾峰彇瀹屾垚鐨勪綔涓氫釜鏁� - * + * * @param classId * @param userId * @return @@ -1197,10 +1197,10 @@ CollectionUtils.newObjectMap("classId", classId, "status", ExerciseInfo.EXERCISE_STATUS_PUBLISHED)); return exerciseCount; } - + /** * 鏌ヨ浣滀笟鍒楄〃-鏁欏笀绔� - * + * * @param pageSize * @param keyword * @param classId @@ -1210,19 +1210,19 @@ public List<Map<String, Object>> teacherExerciseInfoList(Integer pageSize,String keyword,String classId,Integer pageNum) { QHomeworkScoreV qHomeworkScoreV = QHomeworkScoreV.homeworkScoreV; QExerciseInfo qExerciseInfo = QExerciseInfo.exerciseInfo; - + Expression<Integer> cases = new CaseBuilder() - .when(qHomeworkScoreV.completeStatus.isNull()).then(1) - .otherwise(0).sum().as("homeworkNoSubmitCount"); - + .when(qHomeworkScoreV.completeStatus.isNull()).then(1) + .otherwise(0).sum().as("homeworkNoSubmitCount"); + Expression<Integer> cases2 = new CaseBuilder() - .when(qHomeworkScoreV.completeStatus.eq(String.valueOf(ExerciseCompleteInfo.STATUS_CHECKED))).then(1) - .otherwise(0).sum().as("homeworkToAuditCount"); - + .when(qHomeworkScoreV.completeStatus.eq(String.valueOf(ExerciseCompleteInfo.STATUS_CHECKED))).then(1) + .otherwise(0).sum().as("homeworkToAuditCount"); + Expression<Integer> cases3 = new CaseBuilder() - .when(qHomeworkScoreV.completeStatus.eq(String.valueOf(ExerciseCompleteInfo.STATUS_COMMIT))).then(1) - .otherwise(0).sum().as("homeworkHasAuditCount"); - + .when(qHomeworkScoreV.completeStatus.eq(String.valueOf(ExerciseCompleteInfo.STATUS_COMMIT))).then(1) + .otherwise(0).sum().as("homeworkHasAuditCount"); + return this.getQueryFactory().select(cases,cases2,cases3, qExerciseInfo.name.max(), qExerciseInfo.startTime.max(), qExerciseInfo.endTime.max(), qExerciseInfo.type.max()).from(qHomeworkScoreV, qExerciseInfo) .where(qHomeworkScoreV.classId.eq(classId) @@ -1242,21 +1242,21 @@ return map; }).collect(Collectors.toList()); } - + @Override public Map<String,Integer> queryResultStatusCount(List<String> lstExerciseIds) { if(lstExerciseIds== null || lstExerciseIds.size()==0){ return null; } - + String hql = "select id.exerciseInfoId||'-'||completeStatus ,count(1) from ExerciseResultV " - + "where id.exerciseInfoId in(:exerciseIds) group by id.exerciseInfoId,completeStatus"; - - List<Object[]> lstResult = this.findByComplexHql(hql, + + "where id.exerciseInfoId in(:exerciseIds) group by id.exerciseInfoId,completeStatus"; + + List<Object[]> lstResult = this.findByComplexHql(hql, CollectionUtils.newObjectMap("exerciseIds",lstExerciseIds.toArray(new String[lstExerciseIds.size()])), Object[].class); - - Map<String,Integer> resultMap = new HashMap<String,Integer>(lstResult.size()); - + + Map<String,Integer> resultMap = new HashMap<String,Integer>(lstResult.size()); + for(Object[] o:lstResult){ resultMap.put((String)o[0],((Long)o[1]).intValue()); } -- Gitblit v1.8.0