派生自 projectDept/qhighschool

Administrator
2022-12-02 7e0776dbd8470e21c777de74db1f32c7303eae19
成绩管理
7个文件已修改
1个文件已添加
241 ■■■■■ 已修改文件
src/main/java/com/qxueyou/scc/admin/score/action/ScoreController.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/qxueyou/scc/admin/score/service/IScoreService.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/qxueyou/scc/admin/score/service/impl/ScoreService.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/qxueyou/scc/exam/dao/ExamResultVDao.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/qxueyou/scc/exercise/dao/ExerciseResultDAO.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/qxueyou/scc/stucontroller/StuSubjectController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
target/generated-sources/java/com/qxueyou/scc/teach/subject/model/view/QMyLectureV.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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));
    }
}
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);
}
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);
    }
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);
    }
src/main/java/com/qxueyou/scc/exercise/dao/ExerciseResultDAO.java
New file
@@ -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);
    }
}
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,
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;
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);
    }