From 5fe230dd294a038a867f8b3f53035a317895c346 Mon Sep 17 00:00:00 2001 From: Administrator <2863138610@qq.com> Date: 星期二, 13 十二月 2022 16:33:22 +0800 Subject: [PATCH] 解决问卷管理只能看到访问对象课程的问卷的问题 --- src/main/java/com/qxueyou/scc/evaluate/service/impl/EvaluateService.java | 514 ++++++++++++++++++++++++++++++++------------------------ 1 files changed, 294 insertions(+), 220 deletions(-) diff --git a/src/main/java/com/qxueyou/scc/evaluate/service/impl/EvaluateService.java b/src/main/java/com/qxueyou/scc/evaluate/service/impl/EvaluateService.java index 844a2f4..1517c87 100644 --- a/src/main/java/com/qxueyou/scc/evaluate/service/impl/EvaluateService.java +++ b/src/main/java/com/qxueyou/scc/evaluate/service/impl/EvaluateService.java @@ -13,6 +13,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.apache.tools.ant.taskdefs.Concat; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -66,21 +67,21 @@ @Service public class EvaluateService extends CommonAppService implements IEvaluateService { - + private final Logger log = LogManager.getLogger(EvaluateService.class); - + @Autowired EvaluateRepository evaRepository; - + @Autowired IEvaluateTemplateService templateService; - + @Autowired ITeacherService teacherService; - + @Autowired IExerciseService exerciseService; - + @Autowired IMsgInfoService msgInfoService; @@ -92,82 +93,155 @@ */ @Override public ResultJson queryList(Integer pageNum, Integer pageSize, String keyword, String sort) { - + QSchEvaluate qEva = QSchEvaluate.schEvaluate; QSchEvaluateTemplate template = QSchEvaluateTemplate.schEvaluateTemplate; QExerciseGroup group = QExerciseGroup.exerciseGroup; QSubject subject = QSubject.subject; - + QClsClass clsClass = QClsClass.clsClass; + QStuStudent stuStudent = QStuStudent.stuStudent; // 鎼滅储鍚� keyword = StringUtils.isBlank(keyword) ? null : "%"+keyword+"%"; - - // 鑾峰彇鏌ヨ缁撴灉闆嗗悎 - QueryResults<Tuple> results = this.getQueryFactory() - .select(qEva, group,subject) - .from(qEva, template, group,subject) - .where(new QueryDslOptionBuilder() - .and(qEva.evalTemplateId::eq, template.evaluateTemplateId) - .and(template.groupId::eq,group.groupId) - .and(qEva.evalRangeId::eq,subject.subjectId) - .and(qEva.createId::eq,ClientUtils.getUserId()) - .and(qEva.evaluateName::like, keyword) - .and(qEva.deleteFlag::eq,false) - .build() + + // 鑾峰彇鏌ヨ缁撴灉闆嗗悎 + QueryResults<Tuple> results = this.getQueryFactory() + .select(qEva, group, subject) + .from(qEva, template, group, subject) + .where(new QueryDslOptionBuilder() + .and(qEva.evalTemplateId::eq, template.evaluateTemplateId) + .and(template.groupId::eq, group.groupId) + .and(qEva.evalRangeId::like, subject.subjectId) + .and(qEva.createId::eq, ClientUtils.getUserId()) + .and(qEva.evaluateName::like, keyword) + .and(qEva.deleteFlag::eq, false) + .build() ) - .orderBy(qEva.createTime.desc()) - .fetchResults(); - - // 灏佽鍙傛暟 - List<Map<String,Object>> resultLst = - results.getResults() - .stream() - .map(tuple -> { - Map<String,Object> map = new HashMap<String,Object>(2); - map.put("evaluateId", tuple.get(qEva).getEvaluateId()); - map.put("evaluateName", tuple.get(qEva).getEvaluateName()); - map.put("evalRangeId", tuple.get(qEva).getEvalRangeId()); - map.put("evalRangeType", tuple.get(qEva).getEvalRangeType()); - map.put("evalRangeName", tuple.get(subject).getName()); - map.put("evalRangeCount", tuple.get(qEva).getEvalRangeCount()); - map.put("evalObjectName", tuple.get(qEva).getEvalObjectName()); - map.put("status", tuple.get(qEva).getStatus()); - map.put("endTime", tuple.get(qEva).getEndTime()); - map.put("createTime", tuple.get(qEva).getCreateTime()); - map.put("groupId", tuple.get(group).getGroupId()); - map.put("exerCount", tuple.get(group).getAllCount()); - map.put("evaluateCount", this.getEvaluateCount(tuple.get(qEva).getEvaluateId()));//宸茶瘎浼颁汉鏁� - map.put("evaluateAllCount", this - .queryEvaluateAllCount(tuple.get(qEva).getEvalRangeType(), tuple.get(qEva).getEvalRangeId().split(",")));//搴旇瘎浼颁汉鏁� - return map; - }).collect(Collectors.toList()); - - - return new ResultJson(true, "success", - CollectionUtils.newObjectMap("allCount",results.getTotal(),"datas",resultLst)); + .orderBy(qEva.createTime.desc()) + .fetchResults(); + QueryResults<Tuple> results2 = this.getQueryFactory() + .select(qEva, group, clsClass) + .from(qEva, template, group, clsClass) + .where(new QueryDslOptionBuilder() + .and(qEva.evalTemplateId::eq, template.evaluateTemplateId) + .and(template.groupId::eq, group.groupId) + .and(qEva.evalRangeId::like, clsClass.classId) + .and(qEva.createId::eq, ClientUtils.getUserId()) + .and(qEva.evaluateName::like, keyword) + .and(qEva.deleteFlag::eq, false) + .build() + ) + .orderBy(qEva.createTime.desc()) + .fetchResults(); + + QueryResults<Tuple> results3 = this.getQueryFactory() + .select(qEva, group, stuStudent) + .from(qEva, template, group, stuStudent) + .where(new QueryDslOptionBuilder() + .and(qEva.evalTemplateId::eq, template.evaluateTemplateId) + .and(template.groupId::eq, group.groupId) + .and(qEva.evalRangeId::like,stuStudent.studentId) + .and(qEva.createId::eq, ClientUtils.getUserId()) + .and(qEva.evaluateName::like, keyword) + .and(qEva.deleteFlag::eq, false) + .build() + ) + .orderBy(qEva.createTime.desc()) + .fetchResults(); + // 灏佽鍙傛暟 + List<Map<String, Object>> resultLst = + results.getResults() + .stream() + .map(tuple -> { + Map<String, Object> map = new HashMap<String, Object>(2); + map.put("evaluateId", tuple.get(qEva).getEvaluateId()); + map.put("evaluateName", tuple.get(qEva).getEvaluateName()); + map.put("evalRangeId", tuple.get(qEva).getEvalRangeId()); + map.put("evalRangeType", tuple.get(qEva).getEvalRangeType()); + map.put("evalRangeName", tuple.get(subject).getName()); + map.put("evalRangeCount", tuple.get(qEva).getEvalRangeCount()); + map.put("evalObjectName", tuple.get(qEva).getEvalObjectName()); + map.put("status", tuple.get(qEva).getStatus()); + map.put("endTime", tuple.get(qEva).getEndTime()); + map.put("createTime", tuple.get(qEva).getCreateTime()); + map.put("groupId", tuple.get(group).getGroupId()); + map.put("exerCount", tuple.get(group).getAllCount()); + map.put("evaluateCount", this.getEvaluateCount(tuple.get(qEva).getEvaluateId()));//宸茶瘎浼颁汉鏁� + map.put("evaluateAllCount", this + .queryEvaluateAllCount(tuple.get(qEva).getEvalRangeType(), tuple.get(qEva).getEvalRangeId().split(",")));//搴旇瘎浼颁汉鏁� + return map; + }).collect(Collectors.toList()); + + resultLst.addAll( + results2.getResults() + .stream() + .map(tuple -> { + Map<String, Object> map = new HashMap<String, Object>(2); + map.put("evaluateId", tuple.get(qEva).getEvaluateId()); + map.put("evaluateName", tuple.get(qEva).getEvaluateName()); + map.put("evalRangeId", tuple.get(qEva).getEvalRangeId()); + map.put("evalRangeType", tuple.get(qEva).getEvalRangeType()); + map.put("evalRangeName", tuple.get(clsClass).getName()); + map.put("evalRangeCount", tuple.get(qEva).getEvalRangeCount()); + map.put("evalObjectName", tuple.get(qEva).getEvalObjectName()); + map.put("status", tuple.get(qEva).getStatus()); + map.put("endTime", tuple.get(qEva).getEndTime()); + map.put("createTime", tuple.get(qEva).getCreateTime()); + map.put("groupId", tuple.get(group).getGroupId()); + map.put("exerCount", tuple.get(group).getAllCount()); + map.put("evaluateCount", this.getEvaluateCount(tuple.get(qEva).getEvaluateId()));//宸茶瘎浼颁汉鏁� + map.put("evaluateAllCount", this + .queryEvaluateAllCount(tuple.get(qEva).getEvalRangeType(), tuple.get(qEva).getEvalRangeId().split(",")));//搴旇瘎浼颁汉鏁� + return map; + }).collect(Collectors.toList())); + resultLst.addAll( + results3.getResults() + .stream() + .map(tuple -> { + Map<String, Object> map = new HashMap<String, Object>(2); + map.put("evaluateId", tuple.get(qEva).getEvaluateId()); + map.put("evaluateName", tuple.get(qEva).getEvaluateName()); + map.put("evalRangeId", tuple.get(qEva).getEvalRangeId()); + map.put("evalRangeType", tuple.get(qEva).getEvalRangeType()); + map.put("evalRangeName", tuple.get(stuStudent).getName()); + map.put("evalRangeCount", tuple.get(qEva).getEvalRangeCount()); + map.put("evalObjectName", tuple.get(qEva).getEvalObjectName()); + map.put("status", tuple.get(qEva).getStatus()); + map.put("endTime", tuple.get(qEva).getEndTime()); + map.put("createTime", tuple.get(qEva).getCreateTime()); + map.put("groupId", tuple.get(group).getGroupId()); + map.put("exerCount", tuple.get(group).getAllCount()); + map.put("evaluateCount", this.getEvaluateCount(tuple.get(qEva).getEvaluateId()));//宸茶瘎浼颁汉鏁� + map.put("evaluateAllCount", this + .queryEvaluateAllCount(tuple.get(qEva).getEvalRangeType(), tuple.get(qEva).getEvalRangeId().split(",")));//搴旇瘎浼颁汉鏁� + return map; + }).collect(Collectors.toList())); + + return new ResultJson(true, "success", + CollectionUtils.newObjectMap("allCount",results.getTotal()+results2.getTotal()+results3.getTotal(),"datas",resultLst)); } /** * 鑾峰彇鑼冨洿閫夋嫨 - * + * * type: lesson:璇剧▼ class:鐝骇 person:浜哄憳 - * + * * @return */ @Override public ResultJson queryRangeList(String type,String searchName) { - + List<Tuple> tupleLst = null; // 鎼滅储鍚� searchName = StringUtils.isBlank(searchName) ? null : "%"+searchName+"%"; - + if(ClientUtils.isAdmin()){// 绠$悊鍛� - + tupleLst = getAdminRangeList(type,searchName); }else{// 鑰佸笀 - + tupleLst = getTeacherRangeList(type,searchName); } - + // 缁熶竴澶勭悊杩斿洖鏁版嵁 List<Map<String,Object>> resultLst = tupleLst.stream() .map(tuple -> { @@ -176,7 +250,7 @@ map.put("id", tuple.get(1, String.class)); return map; }).collect(Collectors.toList()); - + return new ResultJson(true, "success", resultLst); } @@ -190,9 +264,9 @@ QClsClass cls = QClsClass.clsClass; QUser user = QUser.user; List<Tuple> tupleLst = null; - + if(SchEvaluate.EVALUATE_RANGE_LESSON.equals(type)){//璇剧▼ - + tupleLst = this.getQueryFactory().select(subject.name.as("name"),subject.subjectId.as("id")).distinct() .from(subject) .where(subject.type.eq(Subject.TYPE_ORG_SUBJECT) @@ -201,9 +275,9 @@ .and(subject.deleteFlag.isFalse())) .orderBy(subject.createTime.desc()) .fetch(); - + }else if(SchEvaluate.EVALUATE_RANGE_CLASS.equals(type)){//鐝骇 - + tupleLst = this.getQueryFactory().select(cls.name.as("name"),cls.classId.as("id")).distinct() .from(cls) .where( new QueryDslOptionBuilder() @@ -225,10 +299,10 @@ .orderBy(stu.createTime.desc()) .fetch(); } - + return tupleLst; } - + /** * 鑾峰彇鑰佸笀鑼冨洿閫夋嫨 * @param type @@ -238,12 +312,12 @@ QSubject subject = QSubject.subject; QClsClassReSubject re = QClsClassReSubject.clsClassReSubject; QClsClass cls = QClsClass.clsClass; - + List<Tuple> tupleLst = null; String teacherId = teacherService.getTeacherIdByUserId(ClientUtils.getUserId()); - + if(SchEvaluate.EVALUATE_RANGE_LESSON.equals(type)){//璇剧▼ - + tupleLst = this.getQueryFactory().select(subject.name.as("name"),subject.subjectId.as("id")).distinct() .from(subject) .where(subject.createId.eq(ClientUtils.getUserId()) @@ -253,9 +327,9 @@ .and(subject.deleteFlag.isFalse())) .orderBy(subject.createTime.desc()) .fetch(); - + }else if(SchEvaluate.EVALUATE_RANGE_CLASS.equals(type)){//鐝骇 - + tupleLst = this.getQueryFactory().select(cls.name.as("name"),cls.classId.as("id")).distinct() .from(subject, re, cls) .where(new QueryDslOptionBuilder() @@ -269,10 +343,10 @@ .build()).groupBy(cls.classId) .orderBy(subject.createTime.desc()) .fetch(); - + }else if(SchEvaluate.EVALUATE_RANGE_PERSON.equals(type)){//浜哄憳 QStuStudent stu = QStuStudent.stuStudent; - + tupleLst = this.getQueryFactory().select(stu.name.as("name"),stu.userId.as("id")).distinct() .from(stu,cls,subject, re) .where(new QueryDslOptionBuilder() @@ -292,7 +366,7 @@ .orderBy(stu.createTime.desc()) .fetch(); } - + return tupleLst; } @@ -309,7 +383,7 @@ //1銆佹彃鍏ョ粍 ExerciseGroup obj = this.insertExerciseGroup(eva.getEvaluateName(), ExerciseGroup.TYPE_EXERCISE_TEACH_EVALUATE); - + //2銆佹彃鍏ヨ瘎浼版ā鏉� SchEvaluateTemplate objTemplate = new SchEvaluateTemplate(); TraceUtils.setCreateTrace(objTemplate); @@ -319,7 +393,7 @@ objTemplate.setOrgId(ClientUtils.getOrgId()); objTemplate.setOrgName(ClientUtils.getOrgName()); this.save(objTemplate); - + // 3銆佹彃鍏ヨ瘎浼拌〃 eva.setEvalTemplateId(objTemplate.getEvaluateTemplateId()); eva.setEvalTemplateName(objTemplate.getEvaluateTemplateName()); @@ -329,12 +403,12 @@ eva.setDeleteFlag(false); TraceUtils.setCreateTrace(eva); evaRepository.save(eva); - + evaluateId = eva.getEvaluateId(); groupId = obj.getGroupId(); }else{// 缂栬緫 SchEvaluate newEva = this.read(SchEvaluate.class, eva.getEvaluateId()); - + newEva.setEvaluateName(eva.getEvaluateName()); newEva.setEvalObjectName(eva.getEvalObjectName()); newEva.setEndTime(eva.getEndTime()); @@ -344,13 +418,13 @@ TraceUtils.setUpdateTrace(newEva); evaRepository.save(newEva); } - + return new ResultJson(true, "success", CollectionUtils.newObjectMap("evaluateId", evaluateId, "groupId", groupId)); } - + /** * 锛氬悗鍙� 鎻掑叆璇勪及妯℃澘鏃惰皟鐢� - * + * * @param name * @param type * @return @@ -375,12 +449,12 @@ */ @Override public ResultJson queryBaseInfo(String evaluateId) { - + SchEvaluate eva = evaRepository.getOne(evaluateId); QSchEvaluate qEva = QSchEvaluate.schEvaluate; QSchEvaluateTemplate template = QSchEvaluateTemplate.schEvaluateTemplate; QExerciseGroup group = QExerciseGroup.exerciseGroup; - + // 鑾峰彇鏌ヨ缁撴灉闆嗗悎 ExerciseGroup g = this.getQueryFactory() .select(group) @@ -393,8 +467,8 @@ .build() ) .fetchOne(); - - return new ResultJson(true, "success", + + return new ResultJson(true, "success", CollectionUtils.newObjectMap("evaluateName",eva.getEvaluateName(), "evaluateId",eva.getEvaluateId(), "evalObjectName",eva.getEvalObjectName(), @@ -405,83 +479,83 @@ "evalRangeId",eva.getEvalRangeId(), "evalRangeName",eva.getEvalRangeName())); } - + /** * 鍒犻櫎 */ @Override public ResultJson delete(String evaluateIds){ QSchEvaluate qEva = QSchEvaluate.schEvaluate; - + this.getQueryFactory() .update(qEva) .set(qEva.deleteFlag, true) .where(qEva.evaluateId.in(evaluateIds.split(","))) .execute(); - + return new ResultJson(true, "success"); } - + /** * 婵�娲� */ @Override public ResultJson doActive(String evaluateIds){ - + QSchEvaluate qEva = QSchEvaluate.schEvaluate; - + this.getQueryFactory() .update(qEva) .set(qEva.status, SchEvaluate.STATUS_EVA) .where(qEva.evaluateId.in(evaluateIds.split(","))) .execute(); - + if(StringUtils.isNotEmpty(evaluateIds)){ String [] arrIds = evaluateIds.split(","); for(String evaluateId:arrIds){ this.doSendhMsg(evaluateId); } } - + return new ResultJson(true, "success"); } - + //鍙戝竷娑堟伅 private void doSendhMsg(String evaluateId){ SchEvaluate evaluate = this.read(SchEvaluate.class,evaluateId); - + List<Map<String,Object>> lst= this.queryNotAnswerEvaLst(evaluateId, new ArrayList<String>(1)); - + List<String> lstUserIds = null; if(lst!=null && lst.size()>0){ lstUserIds = new ArrayList<String>(lst.size()); for(Map<String,Object> map:lst){ lstUserIds.add((String)map.get("userId")); } - + Map<String,String> attrs = CollectionUtils.newStringMap("evaluateId",evaluate.getEvaluateId(),"evaluateName",evaluate.getEvaluateName(), "templateId",evaluate.getEvalTemplateId(),"evalRangeName",evaluate.getEvalRangeName(),"creator",evaluate.getCreator()); - + msgInfoService.doSendTextMsgToUsersLoop(lstUserIds, MsgInfo.TYPE_EVALUATE, "鍙戝竷浜嗛棶鍗疯皟鏌�", attrs); } } - + /** *鍥為�� */ @Override public ResultJson doWithdraw(String evaluateIds){ QSchEvaluate qEva = QSchEvaluate.schEvaluate; - + this.getQueryFactory() .update(qEva) .set(qEva.status, SchEvaluate.STATUS_NOT_EVA) .where(qEva.evaluateId.in(evaluateIds.split(","))) .execute(); - + return new ResultJson(true, "success"); } - + /** * 澶嶅埗 */ @@ -490,19 +564,19 @@ try { SchEvaluate schEva = evaRepository.getOne(eva.getEvaluateId()); SchEvaluateTemplate oldTemplate = this.read(SchEvaluateTemplate.class, schEva.getEvalTemplateId()); - + // 1銆佺敓鎴愪範棰樼粍 String newGroupId = exerciseService.doCopyExerciseByEvaluate(oldTemplate.getGroupId()); - + // 2銆佺敓鎴愭ā鏉� SchEvaluateTemplate newTemplate = new SchEvaluateTemplate(); - + BeanUtils.copyProperties(newTemplate, oldTemplate); newTemplate.setEvaluateTemplateId(null); newTemplate.setGroupId(newGroupId); TraceUtils.setCreateTrace(newTemplate); this.save(newTemplate); - + // 3銆佺敓鎴愯瘎浼拌〃 SchEvaluate newEva = new SchEvaluate(); BeanUtils.copyProperties(newEva, eva); @@ -515,16 +589,16 @@ newEva.setDeleteFlag(false); TraceUtils.setCreateTrace(newEva); this.save(newEva); - + return new ResultJson(true, "success", CollectionUtils.newObjectMap("evaluateId", newEva.getEvaluateId(), "groupId", newGroupId)); - + } catch (Exception e) { log.error("doCopy璇勪及澶嶅埗锛氬鍒剁粌涔燘eanUtils.copyProperties()鏂规硶copy澶辫触", e); } - + return new ResultJson(false); } - + /** * 鏌ョ湅缁撴灉 闂嵎鏁翠綋鎯呭喌 * @param evaluateId @@ -534,21 +608,21 @@ */ @Override public ResultJson queryEvaluateDetail(String evaluateId,String groupId){ - + // 1銆佹煡璇㈠凡鎻愪氦闂嵎list List<Map<String, Object>> answerUserLst = queryAnswerEvaLst(evaluateId); - + // 宸茬粡绛旈杩囩殑瀛﹀憳id List<String> userAnswerList = new ArrayList<String>(answerUserLst.size()); for(Map<String,Object> map:answerUserLst){ userAnswerList.add(String.valueOf(map.get("userId"))); } - + // 2銆佹煡璇㈡湭鎻愪氦绛旀list List<Map<String,Object>> notAnswerUserLst = this.queryNotAnswerEvaLst(evaluateId, userAnswerList); - - - return new ResultJson(true, "success", + + + return new ResultJson(true, "success", CollectionUtils.newObjectMap("answerUserLst",answerUserLst, "notAnswerUserLst",notAnswerUserLst)); } @@ -559,10 +633,10 @@ * @return */ private List<Map<String, Object>> queryAnswerEvaLst(String evaluateId) { - + QExerciseRecord record = QExerciseRecord.exerciseRecord; QSchEvaRecordRe reEva = QSchEvaRecordRe.schEvaRecordRe; - + List<Map<String,Object>> answerUserLst = this.getQueryFactory() .select(record).from(record, reEva) .where(record.recordId.eq(reEva.exerciseRecordId) @@ -579,10 +653,10 @@ map.put("submitTime", tuple.getSubmitTime()); return map; }).collect(Collectors.toList()); - + return answerUserLst; } - + /** * 鏌ヨ鏈瓟棰樼殑瀛﹀憳list * @param rangeType @@ -591,29 +665,29 @@ * @return */ private List<Map<String,Object>> queryNotAnswerEvaLst(String evaluateId,List<String> userAnswerList ){ - + SchEvaluate eva = this.read(SchEvaluate.class, evaluateId); String[] evalRangeIds = eva.getEvalRangeId().split(","); String rangeType = eva.getEvalRangeType(); - + QClsClassReSubject re = QClsClassReSubject.clsClassReSubject; QStuStudent stu = QStuStudent.stuStudent; QSubject qSubject = QSubject.subject; - + Predicate predicate = null; if(SchEvaluate.EVALUATE_RANGE_LESSON.equals(rangeType)){//璇剧▼ - + predicate = stu.classId.in(getQueryFactory().select(re.classId).from(re,qSubject) .where(qSubject.origSubjectId.in(evalRangeIds).and(re.subjectId.eq(qSubject.subjectId)) .and(qSubject.deleteFlag.isFalse()).and(re.deleteFlag.eq(false)))); }else if(SchEvaluate.EVALUATE_RANGE_CLASS.equals(rangeType)){//鐝骇 - + predicate = stu.classId.in(evalRangeIds); }else if(SchEvaluate.EVALUATE_RANGE_PERSON.equals(rangeType)){//浜哄憳 - + predicate = stu.userId.in(evalRangeIds); } - + List<Map<String,Object>> notAnswerUserLst = this.getQueryFactory().select(stu.userId, stu.name).distinct() .from(stu) .where(stu.userId.notIn(userAnswerList)// 杩囨护鎺夊凡缁忕瓟棰樿繃鐨勫鍛� @@ -630,13 +704,13 @@ map.put("submitTime", null); return map; }).collect(Collectors.toList()); - + return notAnswerUserLst; } - - + + /** ------鍓嶇 ---------------------------start------------------------------------------------------------------ */ - + /** * 鎻愪氦绛旀 * @param score @@ -644,66 +718,66 @@ */ @Override public ResultJson doSubmitTeachEvalScoreData(TeachEvaScoreResult scoreResult, String userId) { - + List<TeachEvaScoreData> lstScore = scoreResult.getItems(); String evaluateId = scoreResult.getEvaluateId(); - + // 1.鎿嶄綔ExerciseRecord鍋氶璁板綍 ExerciseRecord record = this.doOperExerciseRecord(scoreResult); - + if(null == record){ return new ResultJson(false,"鎮ㄥ凡缁忔彁浜わ紝涓嶈兘閲嶅鎻愪氦"); } String exerciseRecordId = record.getRecordId(); - + if(!scoreResult.getItems().isEmpty()){ // 2.璁板綍缁冧範绛旀 ExerciseItemAnswerU this.doOperExerciseItemAnswerUBatch(lstScore, exerciseRecordId); } - + // 3.鎻掑叆璇勪及璁板綍鍏宠仈琛� this.doOperSchEvaRecordRe(exerciseRecordId, evaluateId); - + // 4.鏇存柊璇勪及琛ㄧ殑瀹屾垚浜烘暟 SchEvaluate eval = this.updateEvaluateCount(evaluateId); - + if(!scoreResult.getItems().isEmpty()){ // 5.鎻掑叆璇勪及鏄庣粏琛� this.insertEvaluateDetailBatch(lstScore,evaluateId); } - - return new ResultJson(true, "鎿嶄綔鎴愬姛", + + return new ResultJson(true, "鎿嶄綔鎴愬姛", CollectionUtils.newObjectMap("doNumber", eval.getEvaluateCount(), "recordId", exerciseRecordId)); } - - + + /** * 鎿嶄綔鏈鍋氶璁板綍 * @return */ public ExerciseRecord doOperExerciseRecord(TeachEvaScoreResult scoreResult) { - + String hql = "select count(r.recordId) from SchEvaRecordRe re, ExerciseRecord r " + " where re.exerciseRecordId=r.recordId and re.evaluateId=? and r.userId=? and r.deleteFlag is false"; - + int count = this.findCount(hql, CollectionUtils.newList(scoreResult.getEvaluateId(), ClientUtils.getUserId())); - + if(count > 0){ return null; } - + String doCount = String.valueOf(scoreResult.getItems().size()); - + // 2.鏌ヨ鎬婚鐩暟 ExerciseGroup group = this.findUnique("select g from ExerciseGroup g,SchEvaluate e,SchEvaluateTemplate t " + "where g.groupId=t.groupId and e.evalTemplateId=t.evaluateTemplateId and e.evaluateId=?" - + " and g.deleteFlag is false and e.deleteFlag is false ", + + " and g.deleteFlag is false and e.deleteFlag is false ", CollectionUtils.newList(scoreResult.getEvaluateId()), ExerciseGroup.class); BigInteger allCount = group.getAllCount(); - + // 3.鏌ヨ鍋氶璁板綍obj BigDecimal completionRate = ExerciseUtils.parseStrToBigDecimal(doCount, String.valueOf(allCount)); - + ExerciseRecord record = new ExerciseRecord(); record.setExerciseGroupId(group.getGroupId()); record.setUserId(ClientUtils.getUserId()); @@ -716,17 +790,17 @@ record.setDoCount(new BigInteger(doCount)); TraceUtils.setCreateTrace(record); this.save(record); - + return record; } - + /** * 鎵归噺澧炲姞鎴栦慨鏀圭粌涔犺褰曠瓟妗� * @return */ public Result doOperExerciseItemAnswerUBatch(List<TeachEvaScoreData> lstScore, String exerciseRecordId) { String userId = ClientUtils.getUserId(); - + List<ExerciseItemAnswerU> lstNewAnswerU = new ArrayList<ExerciseItemAnswerU>(lstScore.size()); // 缁勮绛旀璁板綍 ExerciseItemAnswerU answerU = null; @@ -735,7 +809,7 @@ continue; } answerU = new ExerciseItemAnswerU(); - + answerU.setExerciseItemId(score.getExerciseId()); answerU.setExerciseRecordId(exerciseRecordId); answerU.setAnswer(score.getAnswer()); @@ -744,37 +818,37 @@ TraceUtils.setCreateTrace(answerU); lstNewAnswerU.add(answerU); } - + // 鎵归噺淇濆瓨 this.saveOrUpdateAll(lstNewAnswerU); - + return new Result(true); } - + /** * 鎵归噺澧炲姞鎴栦慨鏀硅瘎浼版槑缁嗚褰� * @return */ public Result insertEvaluateDetailBatch(List<TeachEvaScoreData> lstScore,String evaluateId) { - + Map<String, Object> argsMap = new HashMap<String, Object>(lstScore.size()); - + Object[] args = new Object[lstScore.size()]; for(int i=0; i<lstScore.size(); i++){ args[i] = lstScore.get(i).getExerciseId(); } argsMap.put("exerciseIds", args); - + String hql_score = "from ExerciseItemScore where exerciseItemId in (:exerciseIds) and deleteFlag is false "; List<ExerciseItemScore> lstscores = this.findByComplexHql(hql_score, argsMap, ExerciseItemScore.class); Map<String, String> scoreMap = new HashMap<String,String>(lstscores.size()); for(ExerciseItemScore score:lstscores){ scoreMap.put(score.getExerciseItemId()+score.getExerciseItemAnswer(), score.getScore()); } - + String userId = ClientUtils.getUserId(); String userName = ClientUtils.getUserName(); - + List<SchEvaluateDetail> lstDetail = new ArrayList<SchEvaluateDetail>(lstScore.size()); SchEvaluateDetail record = null; for(TeachEvaScoreData score:lstScore){ @@ -789,32 +863,32 @@ record.setEvaluater(userName); record.setDeleteFlag(false); TraceUtils.setCreateTrace(record); - + lstDetail.add(record); } - + // 鎵归噺淇濆瓨 this.saveOrUpdateAll(lstDetail); - + return new Result(true); } - + /** * 鏂板璇勪及涓庤褰曞叧鑱旇〃 * @param groupId - * @return + * @return */ public Result doOperSchEvaRecordRe(String recordId, String evaluateId) { String hql = "from SchEvaRecordRe where evaluateId=? and exerciseRecordId=?"; - - List<SchEvaRecordRe> recordLst = this.find(hql, + + List<SchEvaRecordRe> recordLst = this.find(hql, CollectionUtils.newList(evaluateId, recordId), SchEvaRecordRe.class); - + if(!recordLst.isEmpty()){ return new Result(true); } - + SchEvaRecordRe record = new SchEvaRecordRe(); record.setEvaluateId(evaluateId); record.setExerciseRecordId(recordId); @@ -823,33 +897,33 @@ record.setClassId(ClientUtils.getClassId()); record.setOrgId(ClientUtils.getOrgId()); } - + this.save(record); - + return new Result(true); } - + /** * 鏇存柊璇勪及琛ㄨ褰� * @return */ public SchEvaluate updateEvaluateCount(String evaluateId) { - + SchEvaluate record = this.read(SchEvaluate.class, evaluateId); - + if(record == null){ - return null; + return null; } - + record.setEvaluateCount(BigInteger.valueOf(this.getEvaluateCount(evaluateId))); TraceUtils.setUpdateTrace(record); - + // 淇濆瓨 this.save(record); - + return record; } - + /** * 鏌ヨ闂嵎缁熻 * @param groupId @@ -860,16 +934,16 @@ public ResultJson queryEvaluateStatis(String groupId, String evaluateId) { List<ExerciseItem> items = exerciseService.readExerciseItems4Evaluate(groupId); - + SchEvaluate objSchEvaluate = this.read(SchEvaluate.class, evaluateId); - + QExerciseRecord record = QExerciseRecord.exerciseRecord; QExerciseItemAnswerU answerU = QExerciseItemAnswerU.exerciseItemAnswerU; QSchEvaRecordRe re = QSchEvaRecordRe.schEvaRecordRe; QUser qUser = QUser.user; - + for (ExerciseItem objExerciseItem : items) { - + List<Tuple> lstTuple = this.getQueryFactory().select(answerU, qUser) .from(record,answerU,re,qUser) .where(record.recordId.eq(answerU.exerciseRecordId) @@ -879,7 +953,7 @@ .and(answerU.deleteFlag.eq(false)) .and(record.deleteFlag.eq(false)) ).orderBy(answerU.createTime.desc()).fetch(); - + if(lstTuple != null && !lstTuple.isEmpty()) { List<ExerciseItemAnswerU> lstExerciseItemAnswerU = new ArrayList<>(); for(Tuple tuple : lstTuple) { @@ -887,7 +961,7 @@ objExerciseItemAnswerU.setImgPath(tuple.get(qUser).getImgPath()); lstExerciseItemAnswerU.add(objExerciseItemAnswerU); } - + // 鏌ヨ绛旀 objExerciseItem.setExerciseItemAnswerU(lstExerciseItemAnswerU); } @@ -896,14 +970,14 @@ // 鏌ヨ搴旇瘎浼版�讳汉鏁� objSchEvaluate.setEvaluateAllCount(BigInteger.valueOf(this .queryEvaluateAllCount(objSchEvaluate.getEvalRangeType(),objSchEvaluate.getEvalRangeId().split(",")))); - + //鎷艰鍓嶇鎵�闇�瑕佺殑鏁版嵁 - Map<String, Object> resultMap = + Map<String, Object> resultMap = ExerciseUtils.packageExerciseDetail(items, objSchEvaluate); - + return new ResultJson(true, "success", resultMap); } - + /** * 鏌ヨ搴旇瘎浼颁汉鏁� * @param rangeType @@ -911,36 +985,36 @@ * @return */ private long queryEvaluateAllCount(String rangeType, String[] evalRangeIds){ - + QClsClassReSubject re = QClsClassReSubject.clsClassReSubject; QStuStudent stu = QStuStudent.stuStudent; QSubject qSubject = QSubject.subject; - + Predicate predicate = null; if(SchEvaluate.EVALUATE_RANGE_LESSON.equals(rangeType)){//璇剧▼ - + predicate = stu.classId.in(getQueryFactory().select(re.classId).from(re,qSubject) .where(qSubject.origSubjectId.in(evalRangeIds).and(re.subjectId.eq(qSubject.subjectId)) .and(qSubject.deleteFlag.isFalse()).and(re.deleteFlag.eq(false)))); }else if(SchEvaluate.EVALUATE_RANGE_CLASS.equals(rangeType)){//鐝骇 - + predicate = stu.classId.in(evalRangeIds); }else if(SchEvaluate.EVALUATE_RANGE_PERSON.equals(rangeType)){//浜哄憳 - + return evalRangeIds.length; } - + long allCount = this.getQueryFactory() .from(stu) .where(stu.deleteFlag.eq(false).and(predicate).and(stu.status.eq(StuStudent.STATUS_ACTIVE))).groupBy(stu.userId) .fetchCount(); - + return allCount; } - + /** * 鑾峰彇闂嵎绛斿嵎浜烘暟 - * + * * @param schEvaluateId * @param classId * @return @@ -948,14 +1022,14 @@ private long getEvaluateCount(String evaluateId){ QSchEvaRecordRe re = QSchEvaRecordRe.schEvaRecordRe; QExerciseRecord record = QExerciseRecord.exerciseRecord; - + long count = this.getQueryFactory().from(re,record) .where(re.exerciseRecordId.eq(record.recordId) .and(record.deleteFlag.eq(false)) .and(re.evaluateId.eq(evaluateId)) ).groupBy(record.userId) .fetchCount(); - + return count; } @@ -965,20 +1039,20 @@ */ @Override public ResultJson queryStuEvaluateList(Pager pager) { - + QEvaluateStuStudentV view = QEvaluateStuStudentV.evaluateStuStudentV; List<EvaluateStuStudentV> lstView = this.getQueryFactory() .selectFrom(view) .where(view.id.userId.eq(ClientUtils.getUserId())).limit(pager.getPageSize()).offset(pager.getOffset()) .orderBy(view.createTime.desc()) .fetch(); - + QSchEvaRecordRe re = QSchEvaRecordRe.schEvaRecordRe; QExerciseRecord r= QExerciseRecord.exerciseRecord; - + ExerciseRecord record = null; for(EvaluateStuStudentV evaV:lstView){ - + record = this.getQueryFactory().select(r) .from(re,r) .where(re.exerciseRecordId.eq(r.recordId) @@ -990,30 +1064,30 @@ evaV.setExerciseRecordId(record.getRecordId()); evaV.setGroupId(record.getExerciseGroupId()); } - + evaV.setEvaluateId(evaV.getId().getEvaluateId()); evaV.setUserId(evaV.getId().getUserId()); } - + return new ResultJson(true,"success",lstView); } - + /** * 鏌ヨ瀛︾敓璇勪及count * @return */ @Override public Map<String, Object> queryStuEvaluateCount() { - + QEvaluateStuStudentV view = QEvaluateStuStudentV.evaluateStuStudentV; - + long allCount = this.getQueryFactory() .selectFrom(view) .where(view.id.userId.eq(ClientUtils.getUserId())) .fetchCount(); QSchEvaRecordRe re = QSchEvaRecordRe.schEvaRecordRe; QExerciseRecord r= QExerciseRecord.exerciseRecord; - + long doCount = this.getQueryFactory().select(view).distinct() .from(re,r, view) .where(re.exerciseRecordId.eq(r.recordId) @@ -1021,7 +1095,7 @@ .and(r.userId.eq(ClientUtils.getUserId())).and(view.id.userId.eq(ClientUtils.getUserId())) .and(r.deleteFlag.eq(false)) ).fetchCount(); - + return CollectionUtils.newObjectMap("allCount", allCount, "doCount", doCount); } @@ -1035,9 +1109,9 @@ @Override public ResultJson doGetEvalExerItemResponseDataNew(String evaluateId) { String groupId = this.findUnique("select t.groupId from SchEvaluateTemplate t,SchEvaluate e " - + "where t.evaluateTemplateId=e.evalTemplateId and e.evaluateId=?", + + "where t.evaluateTemplateId=e.evalTemplateId and e.evaluateId=?", CollectionUtils.newList(evaluateId),String.class); - + // 2.鏌ユ壘璇勪及缁勪笅鎵�鏈夊搴旂殑缁冧範 String hql_item = "select item" + " from ExerciseItem item, ExerciseGroupItemRe re, ExerciseGroup g" @@ -1048,7 +1122,7 @@ + " and re.deleteFlag is false" + " and item.deleteFlag is false" + " order by re.itemOrder"; - + List<ExerciseItem> lstItems = this.find(hql_item, CollectionUtils.newList(groupId), ExerciseItem.class); if(lstItems.isEmpty()){ return new ResultJson(false,"褰撳墠璇勪及鏈坊鍔犻鐩�"); @@ -1091,18 +1165,18 @@ // 閲嶆柊缁勮缁冧範閫夐」 ExerciseUtils.packageExerciseItem(lstItems, lstUserAnswer, lstOptionImgs); - + Map<String, List<ExerciseObjectImg>> imgItemMap = ExerciseUtils.packageExerciseItemImg(lstItemImgs); - + for(ExerciseItem item:lstItems){ // 4.5棰樼洰涓槸鍚︽湁鍥剧墖 if(imgItemMap.get(item.getExerciseId()) != null){ item.setImgs(imgItemMap.get(item.getExerciseId())); } } - - + + return new ResultJson(true,"success",lstItems); } - + } -- Gitblit v1.8.0