Browse Source

add 学习记V2

he2802 3 năm trước cách đây
mục cha
commit
f97998078d

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeUserService.java

@@ -84,6 +84,8 @@ public interface IClassGradeUserService extends IService<ClassGradeUser> {
 
 	List<UserPeriodExportVo> listUserStudyRecord(ClassGradeUserQueryBo bo);
 
+	List<UserPeriodExportVo> listUserStudyRecordV2(ClassGradeUserQueryBo bo);
+
     List<ClassPeriodUserVo> listPeriod(ClassGradeUserQueryBo bo);
 
 	List<ClassPeriodVo> listPeriodAudit(ClassGradeUserQueryBo bo);

+ 216 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -1265,6 +1265,222 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         return studyList;
     }
 
+    /**
+     * 学习记录第二版
+     * @param bo
+     * @return
+     */
+    @Override
+    public List<UserPeriodExportVo> listUserStudyRecordV2(ClassGradeUserQueryBo bo) {
+        //学习记录
+        ClassGradeUserQueryBo cGQB = new ClassGradeUserQueryBo();
+        cGQB.setGoodsId(bo.getGoodsId());
+        cGQB.setUserId(bo.getUserId());
+        cGQB.setGradeId(bo.getGradeId());
+        List<ClassPeriodVo> list = listPeriodAudit(cGQB);
+        String moduleName = "";
+        String chapterName = "";
+        String sectionName = "";
+        List<UserPeriodExportVo> studyList = new ArrayList<>();
+        long i = 0;
+        Long gradeId = bo.getGradeId();
+        Long userId = bo.getUserId();
+        Long goodsId = bo.getGoodsId();
+        for (ClassPeriodVo classPeriodVo : list) {
+            //为模块搜索下面的章 和节 并搜索学时记录
+            if (classPeriodVo.getType() == 1) {
+                moduleName = classPeriodVo.getTypeName();
+                List<ClassPeriodChapterVo> classPeriodChapterVos = baseMapper.listperiodChapter(classPeriodVo.getId(), goodsId, classPeriodVo.getCourseId(), userId, gradeId);
+                for (ClassPeriodChapterVo classPeriodChapterVo : classPeriodChapterVos) {
+                    if (classPeriodChapterVo.getType() == 2) {
+                        chapterName = classPeriodChapterVo.getTypeName();
+                        List<ClassPeriodSectionVo> classPeriodSectionVos = baseMapper.listPeriodSection(classPeriodChapterVo.getId(), goodsId, classPeriodVo.getCourseId(), userId);
+                        classPeriodSectionVos.addAll(baseMapper.listperiodExam(classPeriodChapterVo.getId(), goodsId, classPeriodVo.getCourseId(), userId, classPeriodVo.getId()));
+                        for (ClassPeriodSectionVo classPeriodSectionVo : classPeriodSectionVos) {
+                            i++;
+                            if (classPeriodSectionVo.getType() == 3) {
+                                sectionName = classPeriodSectionVo.getTypeName();
+                                UserPeriodQueryBo userPeriodQueryBo = new UserPeriodQueryBo();
+                                userPeriodQueryBo.setSectionId(classPeriodSectionVo.getId());
+                                userPeriodQueryBo.setCourseId(classPeriodSectionVo.getCourseId());
+                                userPeriodQueryBo.setGoodsId(goodsId);
+                                userPeriodQueryBo.setUserId(classPeriodSectionVo.getUserId());
+                                userPeriodQueryBo.setChapterId(classPeriodChapterVo.getId());
+                                userPeriodQueryBo.setModuleId(classPeriodVo.getId());
+                                userPeriodQueryBo.setGradeId(gradeId);
+                                List<UserPeriodStatusVo> userPeriodStatusVos = userPeriodStatusService.selectPeriodStatus(userPeriodQueryBo);
+                                if (!CollectionUtils.isEmpty(userPeriodStatusVos)) {
+                                    int numIndex = userPeriodStatusVos.size() - 1;
+                                    UserPeriodStatusVo userPeriodStatusVo = userPeriodStatusVos.get(numIndex);
+                                    classPeriodSectionVo.setNumIndex(Convert.toLong(userPeriodStatusVos.size()));
+                                    classPeriodSectionVo.setStatus(userPeriodStatusVo.getStatus());
+                                    classPeriodSectionVo.setNumList(Convert.toLong(userPeriodStatusVos.size()));
+                                    classPeriodSectionVo.setStudyEndTime(userPeriodStatusVo.getRecordEndTime());
+                                    classPeriodSectionVo.setStudyStartTime(userPeriodStatusVo.getRecordStartTime());
+                                    classPeriodSectionVo.setPeriodStatus(userPeriodStatusVo.getPeriodStatus());
+                                    classPeriodSectionVo.setPeriodId(userPeriodStatusVo.getPeriodId());
+                                    classPeriodSectionVo.setPeriodStatusId(userPeriodStatusVo.getId());
+                                    classPeriodSectionVo.setAuditTime(userPeriodStatusVo.getAuditTime());
+                                    classPeriodSectionVo.setAuditUserName(userPeriodStatusVo.getAuditUserName());
+                                    classPeriodSectionVo.setDurationTime(userPeriodStatusVo.getDurationTime());
+                                }
+                                classPeriodSectionVo.setModuleId(classPeriodVo.getId());
+                                classPeriodSectionVo.setChapterId(classPeriodChapterVo.getId());
+                                classPeriodSectionVo.setGoodsId(goodsId);
+                                classPeriodSectionVo.setGradeId(gradeId);
+                                studyList.add(mergeData(i, moduleName, chapterName, sectionName, classPeriodSectionVo, (new BigDecimal(0)), false));
+                            } else {
+                                //章卷
+                                sectionName = classPeriodSectionVo.getTypeName();
+                                UserPeriodQueryBo userPeriodQueryBo = new UserPeriodQueryBo();
+                                userPeriodQueryBo.setExamId(classPeriodSectionVo.getId());
+                                userPeriodQueryBo.setCourseId(classPeriodSectionVo.getCourseId());
+                                userPeriodQueryBo.setGoodsId(goodsId);
+                                userPeriodQueryBo.setUserId(classPeriodSectionVo.getUserId());
+                                userPeriodQueryBo.setChapterId(classPeriodChapterVo.getId());
+                                userPeriodQueryBo.setModuleId(classPeriodVo.getId());
+                                userPeriodQueryBo.setGradeId(gradeId);
+                                List<UserPeriodStatusVo> userPeriodStatusVos = userPeriodStatusService.selectPeriodStatus(userPeriodQueryBo);
+                                if (!CollectionUtils.isEmpty(userPeriodStatusVos)) {
+                                    int numIndex = userPeriodStatusVos.size() - 1;
+                                    UserPeriodStatusVo userPeriodStatusVo = userPeriodStatusVos.get(numIndex);
+                                    classPeriodSectionVo.setNumIndex(Convert.toLong(userPeriodStatusVos.size()));
+                                    classPeriodSectionVo.setStatus(userPeriodStatusVo.getStatus());
+                                    classPeriodSectionVo.setNumList(Convert.toLong(userPeriodStatusVos.size()));
+                                    classPeriodSectionVo.setStudyEndTime(userPeriodStatusVo.getRecordEndTime());
+                                    classPeriodSectionVo.setStudyStartTime(userPeriodStatusVo.getRecordStartTime());
+                                    classPeriodSectionVo.setPeriodStatus(userPeriodStatusVo.getPeriodStatus());
+                                    classPeriodSectionVo.setPeriodId(userPeriodStatusVo.getPeriodId());
+                                    classPeriodSectionVo.setAuditTime(userPeriodStatusVo.getAuditTime());
+                                    classPeriodSectionVo.setAuditUserName(userPeriodStatusVo.getAuditUserName());
+                                    classPeriodSectionVo.setPeriodStatusId(userPeriodStatusVo.getId());
+                                    classPeriodChapterVo.setPerformance(Convert.toBigDecimal(userPeriodStatusVo.getPerformance()));
+                                }
+                                classPeriodSectionVo.setModuleId(classPeriodVo.getId());
+                                classPeriodSectionVo.setChapterId(classPeriodChapterVo.getId());
+                                classPeriodSectionVo.setGoodsId(goodsId);
+                                classPeriodSectionVo.setGradeId(gradeId);
+                                studyList.add(mergeData(i, moduleName, chapterName, sectionName, classPeriodSectionVo, classPeriodChapterVo.getPerformance(), true));
+                            }
+                        }
+                    }
+                }
+            }
+            //为章搜索节记录和学时记录
+            if (classPeriodVo.getType() == 2) {
+                moduleName = "";
+                chapterName = classPeriodVo.getTypeName();
+                List<ClassPeriodSectionVo> classPeriodSectionVos = baseMapper.listPeriodSection(classPeriodVo.getId(), goodsId, classPeriodVo.getCourseId(), userId);
+                for (ClassPeriodSectionVo classPeriodSectionVo : classPeriodSectionVos) {
+                    i++;
+                    sectionName = classPeriodSectionVo.getTypeName();
+                    UserPeriodQueryBo userPeriodQueryBo = new UserPeriodQueryBo();
+                    userPeriodQueryBo.setSectionId(classPeriodSectionVo.getId());
+                    userPeriodQueryBo.setCourseId(classPeriodSectionVo.getCourseId());
+                    userPeriodQueryBo.setGoodsId(goodsId);
+                    userPeriodQueryBo.setUserId(classPeriodSectionVo.getUserId());
+                    userPeriodQueryBo.setChapterId(classPeriodVo.getId());
+                    userPeriodQueryBo.setModuleId(0L);
+                    userPeriodQueryBo.setGradeId(gradeId);
+                    List<UserPeriodStatusVo> userPeriodStatusVos = userPeriodStatusService.selectPeriodStatus(userPeriodQueryBo);
+                    if (!CollectionUtils.isEmpty(userPeriodStatusVos)) {
+                        int numIndex = userPeriodStatusVos.size() - 1;
+                        UserPeriodStatusVo userPeriodStatusVo = userPeriodStatusVos.get(numIndex);
+                        classPeriodSectionVo.setNumIndex(Convert.toLong(userPeriodStatusVos.size()));
+                        classPeriodSectionVo.setStatus(userPeriodStatusVo.getStatus());
+                        classPeriodSectionVo.setNumList(Convert.toLong(userPeriodStatusVos.size()));
+                        classPeriodSectionVo.setStudyEndTime(userPeriodStatusVo.getRecordEndTime());
+                        classPeriodSectionVo.setStudyStartTime(userPeriodStatusVo.getRecordStartTime());
+                        classPeriodSectionVo.setPeriodStatus(userPeriodStatusVo.getPeriodStatus());
+                        classPeriodSectionVo.setPeriodId(userPeriodStatusVo.getPeriodId());
+                        classPeriodSectionVo.setPeriodStatusId(userPeriodStatusVo.getId());
+                        classPeriodSectionVo.setAuditTime(userPeriodStatusVo.getAuditTime());
+                        classPeriodSectionVo.setAuditUserName(userPeriodStatusVo.getAuditUserName());
+                        classPeriodSectionVo.setDurationTime(userPeriodStatusVo.getDurationTime());
+                    }
+                    classPeriodSectionVo.setModuleId(0L);
+                    classPeriodSectionVo.setChapterId(classPeriodVo.getId());
+                    classPeriodSectionVo.setGoodsId(goodsId);
+                    classPeriodSectionVo.setGradeId(gradeId);
+                    studyList.add(mergeData(i, moduleName, chapterName, sectionName, classPeriodSectionVo, (new BigDecimal(0)), false));
+                }
+                List<ClassPeriodSectionVo> classPeriodSectionVos1 = baseMapper.listPeriodSectionExam(classPeriodVo.getId(), goodsId, classPeriodVo.getCourseId(), userId);
+                for (ClassPeriodSectionVo classPeriodSectionVo : classPeriodSectionVos1) {
+                    //章卷
+                    i++;
+                    sectionName = classPeriodSectionVo.getTypeName();
+                    UserPeriodQueryBo userPeriodQueryBo = new UserPeriodQueryBo();
+                    userPeriodQueryBo.setExamId(classPeriodSectionVo.getId());
+                    userPeriodQueryBo.setCourseId(classPeriodSectionVo.getCourseId());
+                    userPeriodQueryBo.setGoodsId(bo.getGoodsId());
+                    userPeriodQueryBo.setUserId(classPeriodSectionVo.getUserId());
+                    userPeriodQueryBo.setChapterId(classPeriodVo.getId());
+                    userPeriodQueryBo.setModuleId(0L);
+                    userPeriodQueryBo.setGradeId(bo.getGradeId());
+                    List<UserPeriodStatusVo> userPeriodStatusVos = userPeriodStatusService.selectPeriodStatus(userPeriodQueryBo);
+                    if (!CollectionUtils.isEmpty(userPeriodStatusVos)) {
+                        int numIndex = userPeriodStatusVos.size() - 1;
+                        UserPeriodStatusVo userPeriodStatusVo = userPeriodStatusVos.get(numIndex);
+                        classPeriodSectionVo.setNumIndex(Convert.toLong(userPeriodStatusVos.size()));
+                        classPeriodSectionVo.setStatus(userPeriodStatusVo.getStatus());
+                        classPeriodSectionVo.setNumList(Convert.toLong(userPeriodStatusVos.size()));
+                        classPeriodSectionVo.setStudyEndTime(userPeriodStatusVo.getRecordEndTime());
+                        classPeriodSectionVo.setStudyStartTime(userPeriodStatusVo.getRecordStartTime());
+                        classPeriodSectionVo.setPeriodStatus(userPeriodStatusVo.getPeriodStatus());
+                        classPeriodSectionVo.setPeriodId(userPeriodStatusVo.getPeriodId());
+                        classPeriodSectionVo.setPeriodStatusId(userPeriodStatusVo.getId());
+                        classPeriodSectionVo.setAuditTime(userPeriodStatusVo.getAuditTime());
+                        classPeriodSectionVo.setAuditUserName(userPeriodStatusVo.getAuditUserName());
+                        classPeriodVo.setPerformance(Convert.toBigDecimal(userPeriodStatusVo.getPerformance()));
+                    }
+                    classPeriodSectionVo.setModuleId(0L);
+                    classPeriodSectionVo.setChapterId(classPeriodVo.getId());
+                    classPeriodSectionVo.setGoodsId(goodsId);
+                    classPeriodSectionVo.setGradeId(gradeId);
+                    studyList.add(mergeData(i, moduleName, chapterName, sectionName, classPeriodSectionVo, classPeriodVo.getPerformance(), true));
+                }
+                classPeriodSectionVos.addAll(classPeriodSectionVos1);
+                classPeriodVo.setClassPeriodSectionList(classPeriodSectionVos);
+            }
+            //为节搜索学时记录
+            if (classPeriodVo.getType() == 3) {
+                i++;
+                sectionName = classPeriodVo.getTypeName();
+                UserPeriodQueryBo userPeriodQueryBo = new UserPeriodQueryBo();
+                userPeriodQueryBo.setSectionId(classPeriodVo.getId());
+                userPeriodQueryBo.setCourseId(classPeriodVo.getCourseId());
+                userPeriodQueryBo.setGoodsId(bo.getGoodsId());
+                userPeriodQueryBo.setUserId(classPeriodVo.getUserId());
+                userPeriodQueryBo.setChapterId(0L);
+                userPeriodQueryBo.setModuleId(0L);
+                userPeriodQueryBo.setGradeId(bo.getGradeId());
+                List<UserPeriodStatusVo> userPeriodStatusVos = userPeriodStatusService.selectPeriodStatus(userPeriodQueryBo);
+                if (!CollectionUtils.isEmpty(userPeriodStatusVos)) {
+                    int numIndex = userPeriodStatusVos.size() - 1;
+                    UserPeriodStatusVo userPeriodStatusVo = userPeriodStatusVos.get(numIndex);
+                    classPeriodVo.setNumIndex(Convert.toLong(userPeriodStatusVos.size()));
+                    classPeriodVo.setStatus(userPeriodStatusVo.getStatus());
+                    classPeriodVo.setNumList(Convert.toLong(userPeriodStatusVos.size()));
+                    classPeriodVo.setStudyEndTime(userPeriodStatusVo.getRecordEndTime());
+                    classPeriodVo.setStudyStartTime(userPeriodStatusVo.getRecordStartTime());
+                    classPeriodVo.setPeriodStatus(userPeriodStatusVo.getPeriodStatus());
+                    classPeriodVo.setPeriodId(userPeriodStatusVo.getPeriodId());
+                    classPeriodVo.setPeriodStatusId(userPeriodStatusVo.getId());
+                    classPeriodVo.setAuditTime(userPeriodStatusVo.getAuditTime());
+                    classPeriodVo.setAuditUserName(userPeriodStatusVo.getAuditUserName());
+                    classPeriodVo.setDurationTime(userPeriodStatusVo.getDurationTime());
+                }
+                classPeriodVo.setModuleId(0L);
+                classPeriodVo.setChapterId(0L);
+                classPeriodVo.setGoodsId(bo.getGoodsId());
+                classPeriodVo.setGradeId(bo.getGradeId());
+                ClassPeriodSectionVo classPeriodSectionVo = BeanUtil.toBean(classPeriodVo, ClassPeriodSectionVo.class);
+                studyList.add(mergeData(i, moduleName, chapterName, sectionName, classPeriodSectionVo, (new BigDecimal(0)), false));
+            }
+        }
+        return studyList;
+    }
+
     @Override
     public List<ClassPeriodUserVo> listPeriod(ClassGradeUserQueryBo bo) {
         //班级学员信息

+ 44 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/UserPeriodItemExportVo.java

@@ -0,0 +1,44 @@
+package com.zhongzheng.modules.grade.vo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+
+/**
+ * 【请填写功能名称】视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2021-11-22
+ */
+@Data
+@ApiModel("【请填写功能名称】视图对象")
+@ExcelTarget("userPeriodVo")
+public class UserPeriodItemExportVo {
+	private static final long serialVersionUID = 1L;
+
+	@Excel(name = "学习/做题时间")
+	@ApiModelProperty("学习/做题时间")
+	private String studyTimeTxt;
+	@Excel(name = "学习/做题时长")
+	@ApiModelProperty("学习/做题时长")
+	private String studyTimeLongTxt;
+	@Excel(name = "学习/做题状态")
+	@ApiModelProperty("学习/做题状态")
+	private String studyStatusTxt;
+	@Excel(name = "测试成绩")
+	@ApiModelProperty("测试成绩")
+	private BigDecimal score;
+
+	@ApiModelProperty("学习开始时间")
+	private Long studyStartTime;
+
+	/** 学习结束时间 */
+	@ApiModelProperty("学习结束时间")
+	private Long studyEndTime;
+
+}