LearnStatService.java 6.7 KB

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