LearnStatService.java 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package com.ruoyi.web.service;
  2. import cn.hutool.core.lang.Dict;
  3. import com.alibaba.fastjson2.JSONObject;
  4. import com.alibaba.fastjson2.util.DateUtils;
  5. import com.aliyun.teautil.Common;
  6. import com.google.common.collect.Lists;
  7. import com.google.common.collect.Sets;
  8. import com.ruoyi.common.utils.CommonUtils;
  9. import com.ruoyi.common.utils.NumberUtils;
  10. import com.ruoyi.enums.PaperType;
  11. import com.ruoyi.learn.domain.LearnStudent;
  12. import com.ruoyi.learn.mapper.LearnAnswerMapper;
  13. import com.ruoyi.learn.mapper.LearnExamineeMapper;
  14. import com.ruoyi.learn.service.ILearnStudentService;
  15. import com.ruoyi.mingxue.mapper.CustomerVideoWatchesMapper;
  16. import org.springframework.stereotype.Service;
  17. import java.util.*;
  18. import java.util.concurrent.atomic.AtomicInteger;
  19. @Service
  20. public class LearnStatService {
  21. private final CustomerVideoWatchesMapper customerVideoWatchesMapper;
  22. private final LearnAnswerMapper answerMapper;
  23. private final LearnExamineeMapper examineeMapper;
  24. private final ILearnStudentService learnStudentService;
  25. private final LearnTeacherService learnTeacherService;
  26. public LearnStatService(CustomerVideoWatchesMapper customerVideoWatchesMapper, LearnAnswerMapper answerMapper, LearnTeacherService learnTeacherService, LearnExamineeMapper examineeMapper, ILearnStudentService learnStudentService, LearnTeacherService learnTeacherService1) {
  27. this.customerVideoWatchesMapper = customerVideoWatchesMapper;
  28. this.answerMapper = answerMapper;
  29. this.examineeMapper = examineeMapper;
  30. this.learnStudentService = learnStudentService;
  31. this.learnTeacherService = learnTeacherService1;
  32. }
  33. public List<JSONObject> selectStudentPractices(Long studentId, PaperType paperType) {
  34. return examineeMapper.selectStudentPractices(studentId, paperType.getVal());
  35. }
  36. public List<JSONObject> getSimulatedClassRecord(Long teacherId) {
  37. return examineeMapper.selectSimulatedStats(teacherId);
  38. }
  39. public List<JSONObject> getSimulatedStudentRecord(Long classId) {
  40. return examineeMapper.selectSimulatedStudentStats(classId);
  41. }
  42. public List<JSONObject> getSimulatedSubjectRecord(Long studentId) {
  43. return examineeMapper.selectSimulatedStuSubjectStats(studentId);
  44. }
  45. public JSONObject getClassRecordKnowledge(Long classId) {
  46. JSONObject result = new JSONObject();
  47. Map cond = Dict.create().set("classId", classId);
  48. JSONObject header = answerMapper.selectClassKnowledgeHeader(cond);
  49. result.put("rate", header.getIntValue("rate"));
  50. List<JSONObject> list = answerMapper.selectClassKnowledgeDetail(cond);
  51. AtomicInteger index = new AtomicInteger(1);
  52. list.forEach(s -> {
  53. CommonUtils.normalRate(s);
  54. s.put("seq", index.getAndAdd(1));
  55. });
  56. result.put("list", list);
  57. return result;
  58. }
  59. public List<JSONObject> getRecordKnowledge(Long studentId) {
  60. LearnStudent learnStudent = learnStudentService.selectLearnStudentByStudentId(studentId);
  61. Set<Long> knowledgeIdSet = null != learnStudent ? learnTeacherService.getKnowledgeIdSet(learnStudent.getMajorPlanId()) : Sets.newHashSet();
  62. knowledgeIdSet.add(0L);
  63. List<JSONObject> list = answerMapper.selectKnowledgeStats(Dict.create().set("studentId", studentId).set("knowIds", knowledgeIdSet));
  64. list.forEach(o -> {
  65. CommonUtils.normalRate(o);
  66. o.put("directed", "1".equals(o.get("directed")));
  67. });
  68. return list;
  69. }
  70. public List<JSONObject> getClassRecordVideo(Long classId, Boolean asc) {
  71. Map cond = Dict.create().set("classId", classId).set("desc", null != asc && !asc);
  72. List<JSONObject> list = customerVideoWatchesMapper.selectClassStats(cond);
  73. AtomicInteger index = new AtomicInteger(1);
  74. list.forEach(t -> {
  75. t.put("seq", index.getAndAdd(1));
  76. });
  77. return list;
  78. }
  79. public JSONObject getRecordVideo(Long studentId) {
  80. Map cond = Dict.create().set("studentId", studentId);
  81. JSONObject header = customerVideoWatchesMapper.selectLearnStatsHeader(cond);
  82. JSONObject result = new JSONObject();
  83. result.put("total", header.getIntValue("total"));
  84. result.put("study", header.getIntValue("value"));
  85. List<JSONObject> list = Lists.newArrayList();
  86. customerVideoWatchesMapper.selectLearnStatsDetail(cond).stream().forEach(s -> {
  87. JSONObject data = JSONObject.of("name", s.getString("name"), "date", DateUtils.format(s.getDate("time"), "yyyy-MM-dd"), "study", s.getString("value"));
  88. list.add(data);
  89. });
  90. result.put("list", list);
  91. return result;
  92. }
  93. public List<JSONObject> getClassRecordPlanStudy(Long classId, String sortField, Boolean asc) {
  94. Map cond = Dict.create().set("classId", classId).set("sortField", sortField).set("desc", null != asc && !asc);
  95. List<JSONObject> list = answerMapper.selectClassQuestionStats(cond);
  96. AtomicInteger index = new AtomicInteger(1);
  97. list.forEach(t -> {
  98. CommonUtils.normalRate(t);
  99. t.put("seq", index.getAndAdd(1));
  100. });
  101. return list;
  102. }
  103. public JSONObject getRecordPlanStudy(Long studentId, Integer year, Long month) {
  104. Date beginDate, endDate;
  105. Calendar cal = Calendar.getInstance();
  106. if(NumberUtils.isPositive(month)) {
  107. cal.set(year, month.intValue() - 1, 1);
  108. beginDate = cal.getTime();
  109. cal.add(Calendar.MONTH, 1);
  110. endDate = cal.getTime();
  111. } else {
  112. cal.set(year, 0, 1);
  113. beginDate = cal.getTime();
  114. cal.add(Calendar.YEAR, 1);
  115. endDate = cal.getTime();
  116. }
  117. Map cond = Dict.create().set("studentId", studentId).set("beginDate", beginDate).set("endDate", endDate);
  118. JSONObject header = answerMapper.selectQuestionStatsHeader(cond);
  119. JSONObject result = new JSONObject();
  120. result.put("total", header.getIntValue("total"));
  121. result.put("rate", header.getIntValue("rate"));
  122. result.put("studyDays", header.getIntValue("time"));
  123. if(null == month || month.equals(0L)) {
  124. return result;
  125. }
  126. List<JSONObject> list = Lists.newArrayList();
  127. answerMapper.selectQuestionStatsDetail(cond).forEach(s -> {
  128. CommonUtils.normalRate(s);
  129. JSONObject data = JSONObject.of("date", DateUtils.format(s.getDate("time"), "yyyy-MM-dd"), "study", s.getString("value"), "rate", s.getString("rate"));
  130. list.add(data);
  131. });
  132. result.put("list", list);
  133. return result;
  134. }
  135. }