From 7e0776dbd8470e21c777de74db1f32c7303eae19 Mon Sep 17 00:00:00 2001
From: Administrator <2863138610@qq.com>
Date: 星期五, 02 十二月 2022 11:27:52 +0800
Subject: [PATCH] 成绩管理
---
src/main/java/com/qxueyou/scc/admin/score/action/ScoreController.java | 161 ++++++++++++++++++++++++++++++-
src/main/java/com/qxueyou/scc/admin/score/service/IScoreService.java | 11 +
src/main/java/com/qxueyou/scc/exercise/dao/ExerciseResultDAO.java | 18 +++
target/generated-sources/java/com/qxueyou/scc/teach/subject/model/view/QMyLectureV.java | 3
src/main/java/com/qxueyou/scc/exam/dao/ExamResultVDao.java | 6
src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java | 27 +++++
src/main/java/com/qxueyou/scc/stucontroller/StuSubjectController.java | 2
src/main/java/com/qxueyou/scc/admin/score/service/impl/ScoreService.java | 13 ++
8 files changed, 219 insertions(+), 22 deletions(-)
diff --git a/src/main/java/com/qxueyou/scc/admin/score/action/ScoreController.java b/src/main/java/com/qxueyou/scc/admin/score/action/ScoreController.java
index a587de3..c7821fd 100644
--- a/src/main/java/com/qxueyou/scc/admin/score/action/ScoreController.java
+++ b/src/main/java/com/qxueyou/scc/admin/score/action/ScoreController.java
@@ -1,5 +1,6 @@
package com.qxueyou.scc.admin.score.action;
+import com.qxueyou.scc.admin.classes.model.ClsClassReSubject;
import com.qxueyou.scc.admin.score.model.Score;
import com.qxueyou.scc.admin.score.service.impl.ScoreService;
import com.qxueyou.scc.base.model.Pager;
@@ -11,14 +12,20 @@
import com.qxueyou.scc.exam.model.ExamReExamPaper;
import com.qxueyou.scc.exam.model.ExamResultV;
import com.qxueyou.scc.exercise.model.ExerciseRecord;
+import com.qxueyou.scc.exercise.model.ExerciseResultV;
+import com.qxueyou.scc.teach.subject.model.Subject;
+import com.qxueyou.scc.teach.subject.model.SubjectUtils;
+import com.qxueyou.scc.teach.subject.model.view.MyLectureV;
+import com.qxueyou.scc.teach.subject.model.view.MySubjectV;
+import com.qxueyou.scc.teach.subject.service.ILectureService;
+import com.qxueyou.scc.teach.subject.service.impl.SubjectService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.*;
+import java.math.BigDecimal;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -31,10 +38,16 @@
// 分页查询中,默认记录条数和页数
private static final int DEFAULT_PAGE_SIZE = 10;
- private static final int DEFAULT_PAGE_NUM = 2;
+ private static final int DEFAULT_PAGE_NUM = 1;
@Autowired
ScoreService scoreService;
+
+ @Autowired
+ ILectureService lectureService;
+
+ @Autowired
+ SubjectService subjectService;
@RequestMapping(value = "lstScore", method = RequestMethod.GET)
public @ResponseBody
@@ -47,10 +60,142 @@
}else {
classId += "%";
}
+ List<Map<String,Object>> mapList = new ArrayList<>();
+ List<ExamResultV> examResultVS = scoreService.allExamResultV(classId);
+ List<ExerciseResultV> exerciseResultVS = scoreService.allExerciseResultV(classId);
//总成绩数量
- int totalCount = scoreService.findCount("from ExamResultV where class_Id Like ?",CollectionUtils.newList(classId));
+ int totalCount = scoreService.findCount("from ExamResultV where class_Id Like ? and score != null and score != 0",CollectionUtils.newList(classId));
+ if (examResultVS.size() < exerciseResultVS.size()){
+ totalCount = exerciseResultVS.size();
+ }
+ int totalPage = totalCount % pageSize > 0 ? totalCount/pageSize + 1 : totalCount/pageSize;
+ int currentPage = pageNum < totalPage? pageNum : totalPage;
+ int pageStart = (currentPage-1) * pageSize;
+ int pageEnd = pageSize * currentPage > totalCount ? totalCount : pageSize * currentPage;
pager.setTotalCount(totalCount);
- List<ExamResultV> list = scoreService.allExamResultV(classId,pager);
- return new Result(true,"success",CollectionUtils.newObjectMap("data", list, "scoreCount", totalCount));
+
+ if(examResultVS.size() > exerciseResultVS.size()) {
+ for (ExamResultV e : examResultVS) {
+
+ Map<String, Object> map = new HashMap<>();
+ boolean esisNull = true;
+ BigDecimal examScore;
+ if (e.getScore() == null) {
+ examScore = BigDecimal.ZERO;
+ System.out.println(examScore);
+ } else {
+ examScore = e.getScore();
+ }
+ for (ExerciseResultV es : exerciseResultVS) {
+ if (e.getId().getStudentNo().equals(es.getStudentNo())) {
+ esisNull = false;
+ Double exerciseInfoScore = es.getScore() == null ? 0.0 : es.getScore().doubleValue();
+ map.put("studentName", es.getStudentName());
+ map.put("studentNumber", es.getStudentNo());
+ map.put("sex", es.getSex());
+ map.put("status", e.getStatus());
+ map.put("studyTime", 0);
+ map.put("subjectScore", 0);
+ map.put("exerciseInfoScore", exerciseInfoScore);
+ map.put("examScore", examScore);
+ map.put("totalScore", exerciseInfoScore + examScore.doubleValue());
+ }
+ }
+ if (esisNull) {
+ map.put("studentName", e.getStudentName());
+ map.put("studentNumber", e.getId().getStudentNo());
+ map.put("sex", e.getSex());
+ map.put("status", e.getStatus());
+ map.put("studyTime", 0);
+ map.put("subjectScore", 0);
+ map.put("exerciseInfoScore", 0);
+ map.put("examScore", examScore);
+ map.put("totalScore", examScore);
+ }
+ mapList.add(map);
+ }
+ }else {
+ for (ExerciseResultV es : exerciseResultVS) {
+ Map<String, Object> map = new HashMap<>();
+ boolean esisNull = true;
+ BigDecimal exerciseInfoScore;
+ if (es.getScore() == null) {
+ exerciseInfoScore = BigDecimal.ZERO;
+ } else {
+ exerciseInfoScore = es.getScore();
+ }
+ for (ExamResultV e : examResultVS) {
+ if (e.getId().getStudentNo().equals(es.getStudentNo())) {
+ esisNull = false;
+ Double examScore = e.getScore() == null ? 0.0 : e.getScore().doubleValue();
+ map.put("studentName", es.getStudentName());
+ map.put("studentNumber", es.getStudentNo());
+ map.put("sex", es.getSex());
+ map.put("status", e.getStatus());
+ map.put("studyTime", 0);
+ map.put("subjectScore", 0);
+ map.put("exerciseInfoScore", exerciseInfoScore);
+ map.put("examScore", examScore);
+ map.put("totalScore", examScore + exerciseInfoScore.doubleValue());
+ }
+ }
+ if (esisNull) {
+ map.put("studentName", es.getStudentName());
+ map.put("studentNumber", es.getStudentNo());
+ map.put("sex", es.getSex());
+ map.put("status", 0);
+ map.put("studyTime", 0);
+ map.put("subjectScore", 0);
+ map.put("exerciseInfoScore", exerciseInfoScore);
+ map.put("examScore", 0);
+ map.put("totalScore", exerciseInfoScore);
+ }
+ mapList.add(map);
+ }
+ }
+ return new Result(true,"success",CollectionUtils.newObjectMap("data", mapList.subList(pageStart,pageEnd), "scoreCount", totalCount));
+ }
+
+ @RequestMapping(value = "getScoreDetail", method = RequestMethod.GET)
+ @ResponseBody
+ public Result getScoreDetail(String studentNo){
+ List<ExamResultV> examLst = scoreService.find("from ExamResultV where id.studentNo = ?",CollectionUtils.newList(studentNo),ExamResultV.class);
+ List<ExerciseResultV> exerciseInfoLst = scoreService.find("from ExerciseResultV where studentNo = ?",CollectionUtils.newList(studentNo),ExerciseResultV.class);
+// List<MyLectureV> myLectureVList = scoreService .find("from MyLectureV where id.userId = ?",CollectionUtils.newList(examLst.get(0).getUserId()),MyLectureV.class);
+ List<Map<String,Object>> mapList = new ArrayList<>();
+ List<ClsClassReSubject> clsClassReSubjects = scoreService.find("from ClsClassReSubject where classId = ? and deleteFlag is false",CollectionUtils.newList(examLst.get(0).getId().getClassId()),ClsClassReSubject.class);
+ for(ClsClassReSubject c : clsClassReSubjects) {
+ Double percent = 0.0;
+ Double progressValue = 0.0;
+ Double percentAvg = 0.0;
+ List<MyLectureV> myLectureVList = lectureService.listLectureVBySubjectId(examLst.get(0).getUserId(), c.getSubjectId(), "", 1000, 1, null);
+ if (!myLectureVList.isEmpty()) {
+ for (MyLectureV myLectureV : myLectureVList) {
+ if (myLectureV.getPercent() != null && myLectureV.getProgressValue() != null) {
+ percent += myLectureV.getPercent();
+ progressValue += myLectureV.getProgressValue().intValue();
+ }
+ }
+ if (percentAvg.isNaN()) {
+ percentAvg = 0.0;
+ }
+ percentAvg = percent / myLectureVList.size() * 100;;
+ Map<String, Object> map = new HashMap<>();
+ map.put("subjectName", myLectureVList.get(0).getSubjectName());
+ map.put("percent", percentAvg.intValue());
+ map.put("durationTime", progressValue);
+ map.put("endStudyTime", myLectureVList.get(0).getLectureUpdateTime());
+ mapList.add(map);
+ }else {
+ MySubjectV mySubjectV = scoreService.findUnique("from MySubjectV where subjectId = ?",CollectionUtils.newList(c.getSubjectId()),MySubjectV.class);
+ Map<String, Object> map = new HashMap<>();
+ map.put("subjectName", mySubjectV.getSubjectName());
+ map.put("percent", 0);
+ map.put("durationTime", 0);
+ map.put("endStudyTime", null);
+ mapList.add(map);
+ }
+ }
+ return new Result(true,"success",CollectionUtils.newObjectMap("subjectLst",mapList,"examLst",examLst,"exerciseInfoLst",exerciseInfoLst));
}
}
diff --git a/src/main/java/com/qxueyou/scc/admin/score/service/IScoreService.java b/src/main/java/com/qxueyou/scc/admin/score/service/IScoreService.java
index cab37de..f05f8b7 100644
--- a/src/main/java/com/qxueyou/scc/admin/score/service/IScoreService.java
+++ b/src/main/java/com/qxueyou/scc/admin/score/service/IScoreService.java
@@ -2,6 +2,7 @@
import com.qxueyou.scc.base.model.Pager;
import com.qxueyou.scc.exam.model.ExamResultV;
+import com.qxueyou.scc.exercise.model.ExerciseResultV;
import java.util.List;
import java.util.Map;
@@ -23,9 +24,15 @@
Map<String,Object> queryClassHomeworkScoreInfo(String classId);
/**
- * 获取成绩信息
+ * 获取考试成绩信息
* @return
*/
- List<ExamResultV> allExamResultV(String classId, Pager page);
+ List<ExamResultV> allExamResultV(String classId);
+
+ /**
+ *获取作业成绩信息
+ */
+ List<ExerciseResultV> allExerciseResultV(String classId);
+
}
diff --git a/src/main/java/com/qxueyou/scc/admin/score/service/impl/ScoreService.java b/src/main/java/com/qxueyou/scc/admin/score/service/impl/ScoreService.java
index 51a83bb..b2fefea 100644
--- a/src/main/java/com/qxueyou/scc/admin/score/service/impl/ScoreService.java
+++ b/src/main/java/com/qxueyou/scc/admin/score/service/impl/ScoreService.java
@@ -6,6 +6,8 @@
import com.qxueyou.scc.base.model.Pager;
import com.qxueyou.scc.exam.dao.ExamResultVDao;
import com.qxueyou.scc.exam.model.ExamResultV;
+import com.qxueyou.scc.exercise.dao.ExerciseResultDAO;
+import com.qxueyou.scc.exercise.model.ExerciseResultV;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -26,6 +28,9 @@
@Autowired
ExamResultVDao examResultVDao;
+
+ @Autowired
+ ExerciseResultDAO exerciseResultDAO;
@Override
public Map<String,Object> queryClassExamScoreInfo(String classId) {
@@ -51,8 +56,12 @@
}
@Override
- public List<ExamResultV> allExamResultV(String classId, Pager page) {
- return examResultVDao.getResultList(classId,page);
+ public List<ExamResultV> allExamResultV(String classId) {
+ return examResultVDao.getResultList(classId);
+ }
+ @Override
+ public List<ExerciseResultV> allExerciseResultV(String classId){
+ return exerciseResultDAO.getResultList(classId);
}
diff --git a/src/main/java/com/qxueyou/scc/exam/dao/ExamResultVDao.java b/src/main/java/com/qxueyou/scc/exam/dao/ExamResultVDao.java
index 35b8e91..cfc4134 100644
--- a/src/main/java/com/qxueyou/scc/exam/dao/ExamResultVDao.java
+++ b/src/main/java/com/qxueyou/scc/exam/dao/ExamResultVDao.java
@@ -11,9 +11,9 @@
@Repository
public class ExamResultVDao extends BaseDAO {
- public List<ExamResultV> getResultList(String classId, Pager pager) {
- String hql = "from ExamResultV where class_Id LIKE ?";
- return this.findList(hql,pager,CollectionUtils.newList(classId),ExamResultV.class);
+ public List<ExamResultV> getResultList(String classId) {
+ String hql = "from ExamResultV where class_Id LIKE ? and score != null and score != 0";
+ return this.find(hql,CollectionUtils.newList(classId),ExamResultV.class);
}
diff --git a/src/main/java/com/qxueyou/scc/exercise/dao/ExerciseResultDAO.java b/src/main/java/com/qxueyou/scc/exercise/dao/ExerciseResultDAO.java
new file mode 100644
index 0000000..5c34baa
--- /dev/null
+++ b/src/main/java/com/qxueyou/scc/exercise/dao/ExerciseResultDAO.java
@@ -0,0 +1,18 @@
+package com.qxueyou.scc.exercise.dao;
+
+import com.qxueyou.scc.base.dao.BaseDAO;
+import com.qxueyou.scc.base.model.Pager;
+import com.qxueyou.scc.base.util.CollectionUtils;
+import com.qxueyou.scc.exercise.model.ExerciseResultV;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public class ExerciseResultDAO extends BaseDAO {
+
+ public List<ExerciseResultV> getResultList(String classId) {
+ String hql = "from ExerciseResultV where class_Id LIKE ? and score != null and score != 0";
+ return this.find(hql, CollectionUtils.newList(classId),ExerciseResultV.class);
+ }
+}
diff --git a/src/main/java/com/qxueyou/scc/stucontroller/StuSubjectController.java b/src/main/java/com/qxueyou/scc/stucontroller/StuSubjectController.java
index 9610399..d14893a 100644
--- a/src/main/java/com/qxueyou/scc/stucontroller/StuSubjectController.java
+++ b/src/main/java/com/qxueyou/scc/stucontroller/StuSubjectController.java
@@ -487,8 +487,6 @@
progressLst.get(0).put("percent", subject.getPercent());
progressLst.get(0).put("studyTime", subject.getProgressValue());
coursewareName = myLectureVList.get(0).getLectureName();
- }else {
-
}
return new Result(true, "success",
CollectionUtils.newObjectMap("subject", QBeanUtils.bean2Map(subject,
diff --git a/src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java b/src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java
index 0b95484..ade7300 100644
--- a/src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java
+++ b/src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java
@@ -645,12 +645,35 @@
where(qSubjectProgressTreeV.id.userId.eq(qUser.userId).and(qSubjectProgressTreeV.nodeType.eq(nodeType))
.and(qSubjectProgressTreeV.id.nodeId.eq(nodeId))).orderBy(order).fetch().stream().map(tuple -> {
+ List<ClsClassReSubject> clsClassReSubjects = find("from ClsClassReSubject where classId = ?",CollectionUtils.newList(nodeId),ClsClassReSubject.class);
+ Double percent = 0.0;
+ Double progressValue = 0.0;
+ Double percentAvg = 0.0;
+ int size = 0;
+ for(ClsClassReSubject c : clsClassReSubjects) {
+ List<MyLectureV> myLectureVList = lectureService.listLectureVBySubjectId(tuple.get(qUser.userId), c.getSubjectId(), "", 1000, 1, null);
+ if (!myLectureVList.isEmpty()) {
+ for (MyLectureV myLectureV : myLectureVList) {
+ if (myLectureV.getPercent() != null && myLectureV.getProgressValue() != null) {
+ percent += myLectureV.getPercent();
+ progressValue += myLectureV.getProgressValue().intValue();
+ }
+ }
+ size += myLectureVList.size();
+ if (percentAvg.isNaN()) {
+ percentAvg += 0.0;
+ }
+ }
+ }
+ percentAvg += percent / size;
Map<String, Object> map = new HashMap<>();
map.put("userName", tuple.get(qUser.name));
map.put("userId", tuple.get(qUser.userId));
map.put("classId", tuple.get(qSubjectProgressTreeV.id.nodeId));
- map.put("percent", tuple.get(qSubjectProgressTreeV.percent));
- map.put("progressValue", tuple.get(qSubjectProgressTreeV.progressValue));
+ map.put("percent", percentAvg);
+ map.put("progressValue", progressValue);
+// map.put("percent", tuple.get(qSubjectProgressTreeV.percent));
+// map.put("progressValue", tuple.get(qSubjectProgressTreeV.progressValue));
return map;
}).collect(Collectors.toList());
return lstMap;
diff --git a/target/generated-sources/java/com/qxueyou/scc/teach/subject/model/view/QMyLectureV.java b/target/generated-sources/java/com/qxueyou/scc/teach/subject/model/view/QMyLectureV.java
index 77ad532..f52e8a2 100644
--- a/target/generated-sources/java/com/qxueyou/scc/teach/subject/model/view/QMyLectureV.java
+++ b/target/generated-sources/java/com/qxueyou/scc/teach/subject/model/view/QMyLectureV.java
@@ -46,9 +46,6 @@
public final StringPath userName = createString("userName");
- public final StringPath deleteFlag = createString("deleteFlag");
-
-
public QMyLectureV(String variable) {
this(MyLectureV.class, forVariable(variable), INITS);
}
--
Gitblit v1.8.0