he2802 3 жил өмнө
parent
commit
242a343316

+ 230 - 12
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -425,8 +425,6 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
                     }
                     }
                 }
                 }
             }
             }
-
-
             ClassPeriodStudentExportVo addItem = BeanUtil.toBean(classPeriodStudentVo, ClassPeriodStudentExportVo.class);
             ClassPeriodStudentExportVo addItem = BeanUtil.toBean(classPeriodStudentVo, ClassPeriodStudentExportVo.class);
 
 
             addItem.setStudyTimeStr(DateUtils.timestampToDate(classPeriodStudentVo.getStudyStartTime())+"-"+DateUtils.timestampToDate(classPeriodStudentVo.getStudyEndTime()));
             addItem.setStudyTimeStr(DateUtils.timestampToDate(classPeriodStudentVo.getStudyStartTime())+"-"+DateUtils.timestampToDate(classPeriodStudentVo.getStudyEndTime()));
@@ -437,22 +435,242 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             cGQB.setUserId(classPeriodStudentVo.getUserId());
             cGQB.setUserId(classPeriodStudentVo.getUserId());
             cGQB.setGradeId(classPeriodStudentVo.getGradeId());
             cGQB.setGradeId(classPeriodStudentVo.getGradeId());
             List<ClassPeriodVo> list = listPeriodAudit(cGQB);
             List<ClassPeriodVo> list = listPeriodAudit(cGQB);
-            for(ClassPeriodVo vo : list){
-
+            String moduleName = "";
+            String chapterName = "";
+            String sectionName = "";
+            List<UserPeriodExportVo> studyList = new ArrayList<>();
+            long i = 0;
+            Long gradeId = classPeriodStudentVo.getGradeId();
+            Long userId = classPeriodStudentVo.getUserId();
+            Long goodsId = classPeriodStudentVo.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 = "";
+                                    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 = "";
+                        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));
+                }
             }
             }
-            List<UserPeriodVo> periodVoList = new ArrayList<>();
-            UserPeriodVo v1 = new UserPeriodVo();
-            v1.setSectionId(113L);
-            UserPeriodVo v2 = new UserPeriodVo();
-            v2.setSectionId(115L);
-            periodVoList.add(v1);
-            periodVoList.add(v2);
-            addItem.setPeriodVoList(periodVoList);
+            addItem.setPeriodVoList(studyList);
             exportList.add(addItem);
             exportList.add(addItem);
         }
         }
         return exportList;
         return exportList;
     }
     }
 
 
+    private UserPeriodExportVo mergeData(Long index,String moduleName,String chapterName,String sectionName,ClassPeriodSectionVo classPeriodSectionVo,BigDecimal performance,Boolean isExam){
+        //录入学时记录
+        UserPeriodExportVo userPeriodExportVo = new UserPeriodExportVo();
+        userPeriodExportVo.setId(index);
+        userPeriodExportVo.setModuleName(moduleName);
+        userPeriodExportVo.setChapterName(chapterName);
+        userPeriodExportVo.setSectionName(sectionName);
+        userPeriodExportVo.setDurationTime(classPeriodSectionVo.getDurationTime());
+        userPeriodExportVo.setStudyTimeTxt(DateUtils.timestampToDate(classPeriodSectionVo.getStudyStartTime())+"-"+DateUtils.timestampToDate(classPeriodSectionVo.getStudyEndTime()));
+        if(Validator.isEmpty(classPeriodSectionVo.getStudyEndTime())){
+            userPeriodExportVo.setStudyTimeLongTxt("无"); //没有学习结束时间
+            if(!isExam){
+                userPeriodExportVo.setStudyStatusTxt("未完成");
+            }else{
+                userPeriodExportVo.setStudyStatusTxt("未做题");
+            }
+        }else {
+            userPeriodExportVo.setStudyTimeLongTxt((classPeriodSectionVo.getStudyEndTime().longValue()-classPeriodSectionVo.getStudyStartTime().longValue())+"秒");
+            if(!isExam){
+                userPeriodExportVo.setStudyStatusTxt("完成");
+            }else{
+                userPeriodExportVo.setStudyStatusTxt("已做题");
+            }
+            userPeriodExportVo.setStudyStatusTxt("");
+        }
+        userPeriodExportVo.setScore(performance);
+
+        return userPeriodExportVo;
+    }
+
     @Override
     @Override
     public Boolean updateByEditBo(ClassGradeUserEditBo bo) {
     public Boolean updateByEditBo(ClassGradeUserEditBo bo) {
         for (Long aLong : bo.getId()) {
         for (Long aLong : bo.getId()) {

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassPeriodStudentExportVo.java

@@ -62,5 +62,5 @@ public class ClassPeriodStudentExportVo {
 	private String classTimeStr;
 	private String classTimeStr;
 
 
 	@ExcelCollection(name = "学习记录")
 	@ExcelCollection(name = "学习记录")
-	private List<UserPeriodVo> periodVoList;
+	private List<UserPeriodExportVo> periodVoList;
 }
 }

+ 9 - 0
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -596,6 +596,9 @@
         <if test="gradeId != null and gradeId !='' ">
         <if test="gradeId != null and gradeId !='' ">
             AND usr.grade_id=#{gradeId}
             AND usr.grade_id=#{gradeId}
         </if>
         </if>
+        <if test="userId != null and userId !='' ">
+            AND usr.user_id=#{userId}
+        </if>
         ORDER BY
         ORDER BY
         usr.create_time ASC
         usr.create_time ASC
         LIMIT 1
         LIMIT 1
@@ -614,6 +617,9 @@
         <if test="gradeId != null and gradeId !='' ">
         <if test="gradeId != null and gradeId !='' ">
             AND usr.grade_id=#{gradeId}
             AND usr.grade_id=#{gradeId}
         </if>
         </if>
+        <if test="userId != null and userId !='' ">
+            AND usr.user_id=#{userId}
+        </if>
         ORDER BY
         ORDER BY
         usr.create_time DESC
         usr.create_time DESC
         LIMIT 1
         LIMIT 1
@@ -634,6 +640,9 @@
         <if test="courseId != null and courseId !='' ">
         <if test="courseId != null and courseId !='' ">
             AND cme.course_id =#{courseId}
             AND cme.course_id =#{courseId}
         </if>
         </if>
+        <if test="userId != null and userId !='' ">
+            AND usr.user_id=#{userId}
+        </if>
         AND cme.chapter_id = cmc.chapter_id
         AND cme.chapter_id = cmc.chapter_id
         LIMIT 1 ) AS performance
         LIMIT 1 ) AS performance
         FROM
         FROM