From 33d82860d93624e1865242be6aa752668a0c3c8d Mon Sep 17 00:00:00 2001 From: yn147 <2270338776@qq.com> Date: 星期三, 10 五月 2023 16:47:24 +0800 Subject: [PATCH] 成绩管理bug --- src/main/java/com/qxueyou/scc/admin/score/action/ScoreController.java | 169 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 157 insertions(+), 12 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..3e02b20 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,30 +12,42 @@ 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; -@Api(tags = "成绩管理接口") +@Api(tags = "鎴愮哗绠$悊鎺ュ彛") @Controller @CrossOrigin(origins="*",maxAge=3600) @RequestMapping(value = "admin/score") public class ScoreController { - // 分页查询中,默认记录条数和页数 + // 鍒嗛〉鏌ヨ涓紝榛樿璁板綍鏉℃暟鍜岄〉鏁� 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 @@ -43,14 +56,146 @@ pageNum = pageNum != null && pageNum > 0 ? pageNum : DEFAULT_PAGE_NUM; Pager pager = new Pager(pageSize,pageNum); if(classId == null){ - classId = "%"; + classId = ""; }else { classId += "%"; } - //总成绩数量 - int totalCount = scoreService.findCount("from ExamResultV where class_Id Like ?",CollectionUtils.newList(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 ? 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 < 0 ? 0 : (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)); } } -- Gitblit v1.8.0