浏览代码

add 需提交报告列表接口

周箭河 5 年之前
父节点
当前提交
351a49473d

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PracticeGroupDao.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.PracticeCourseDto;
 import com.ym.mec.biz.dal.dto.PracticeGroupDto;
+import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
 import com.ym.mec.biz.dal.entity.PracticeGroup;
 import com.ym.mec.biz.dal.enums.GroupStatusEnum;
@@ -183,5 +184,21 @@ public interface PracticeGroupDao extends com.ym.mec.common.dal.BaseDAO<Long, Pr
 
     Integer countPracticeGroupReviews(Map<String, Object> params);
 
+    /**
+     * 獲取要预生成报告的数据
+     *
+     * @param nowDate
+     * @param afterDate
+     * @return
+     */
     List<CourseScheduleEvaluate> getNeedPostReportPracticeGroups(@Param("nowDate") Date nowDate, @Param("afterDate") Date afterDate);
+
+    /**
+     * 获取报告的课次数
+     * @param classGroupIds
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    List<ClassGroup> getReportCourseTimes(@Param("classGroupIds") List<Integer> classGroupIds, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleEvaluateService.java

@@ -48,7 +48,7 @@ public interface CourseScheduleEvaluateService extends BaseService<Long, CourseS
      * @param afterDate
      * @return
      */
-    List<CourseScheduleEvaluate> createEvaluate(Date NowDate,Date afterDate);
+    List<CourseScheduleEvaluate> createEvaluate(Date nowDate);
 
     /**
      * 更新学习报告

+ 26 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleEvaluateServiceImpl.java

@@ -15,14 +15,14 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.redis.service.RedisCache;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.date.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 
 @Service
@@ -96,8 +96,8 @@ public class CourseScheduleEvaluateServiceImpl extends BaseServiceImpl<Long, Cou
     }
 
     @Override
-    public List<CourseScheduleEvaluate> findByGroupId(Integer groupId,Integer status) {
-        return courseScheduleEvaluateDao.findByGroupId(groupId,status);
+    public List<CourseScheduleEvaluate> findByGroupId(Integer groupId, Integer status) {
+        return courseScheduleEvaluateDao.findByGroupId(groupId, status);
     }
 
     @Override
@@ -124,10 +124,28 @@ public class CourseScheduleEvaluateServiceImpl extends BaseServiceImpl<Long, Cou
     }
 
     @Override
-    public List<CourseScheduleEvaluate> createEvaluate(Date NowDate, Date afterDate) {
-        List<CourseScheduleEvaluate> needPostReportPracticeGroups = practiceGroupDao.getNeedPostReportPracticeGroups(NowDate, afterDate);
+    public List<CourseScheduleEvaluate> createEvaluate(Date nowDate) {
+        Date startDate = DateUtil.trunc(nowDate);
+        Date afterDate = DateUtil.addDays(DateUtil.getLastSecondWithDay(nowDate), 5);
+        List<CourseScheduleEvaluate> needPostReportPracticeGroups = practiceGroupDao.getNeedPostReportPracticeGroups(startDate, afterDate);
+
+        Map<Integer, Integer> courseTimesMap = new HashMap<>();
+        if (needPostReportPracticeGroups.size() > 0) {
+            Date courseStartDate = DateUtil.addMonths(startDate, -1);
+            List<Integer> classGroupIds = needPostReportPracticeGroups.stream().map(CourseScheduleEvaluate::getClassGroupId).collect(Collectors.toList());
+            List<ClassGroup> reportCourseTimes = practiceGroupDao.getReportCourseTimes(classGroupIds, courseStartDate, startDate);
+            courseTimesMap = reportCourseTimes.stream().collect(Collectors.toMap(ClassGroup::getId, ClassGroup::getTotalClassTimes));
+        }
         for (CourseScheduleEvaluate needPostReportPracticeGroup : needPostReportPracticeGroups) {
-            needPostReportPracticeGroup.setCreateTime(NowDate);
+            int times = 0;
+            if (courseTimesMap.containsKey(needPostReportPracticeGroup.getClassGroupId()) &&
+                    courseTimesMap.get(needPostReportPracticeGroup.getClassGroupId()) != null
+            ) {
+                times = courseTimesMap.get(needPostReportPracticeGroup.getClassGroupId());
+            }
+            needPostReportPracticeGroup.setTimes(times);
+            needPostReportPracticeGroup.setTotalMinutes(times * needPostReportPracticeGroup.getTotalMinutes());
+            needPostReportPracticeGroup.setCreateTime(nowDate);
             needPostReportPracticeGroup.setStatus(0);
             needPostReportPracticeGroup.setVersion(2);
         }

+ 15 - 2
mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml

@@ -324,8 +324,12 @@
     <select id="getNeedPostReportPracticeGroups"
             resultMap="com.ym.mec.biz.dal.dao.CourseScheduleEvaluateDao.CourseScheduleEvaluate">
         <![CDATA[
-        SELECT pg.id_ music_group_id_, pg.user_id_ teacher_id_, cg.id_ class_group_id_
-        FROM practice_group pg LEFT JOIN class_group cg on pg.id_ = cg.music_group_id_ AND cg.group_type_ = 'PRACTICE'
+        SELECT pg.id_                   music_group_id_,
+               pg.user_id_              teacher_id_,
+               cg.id_                   class_group_id_,
+               pg.single_class_minutes_ total_minutes_
+        FROM practice_group pg
+                 LEFT JOIN class_group cg on pg.id_ = cg.music_group_id_ AND cg.group_type_ = 'PRACTICE'
         WHERE pg.courses_start_date_ <= #{nowDate}
           AND pg.courses_expire_date_ >= #{afterDate}
           AND DATE_FORMAT(pg.courses_expire_date_, '%m%d') = DATE_FORMAT(#{afterDate}, '%m%d')
@@ -334,4 +338,13 @@
           AND pg.group_status_ != 'LOCK'
         ]]>
     </select>
+
+    <select id="getReportCourseTimes" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.ClassGroup">
+        SELECT COUNT(*) total_class_times_,class_group_id_ from course_schedule WHERE class_group_id_ IN
+        <foreach collection="classGroupIds" item="classGroupId" open="(" separator="," close=")">
+            #{classGroupId}
+        </foreach>
+        <![CDATA[AND class_date_ >= #{startDate} AND class_date_ <=#{endTime} ]]>
+        GROUP BY class_group_id_
+    </select>
 </mapper>

+ 1 - 2
mec-teacher/src/main/java/com/ym/mec/teacher/controller/StudyReportController.java

@@ -80,8 +80,7 @@ public class StudyReportController extends BaseController {
         if (date != null) {
             nowDate = date;
         }
-        Date afterDate = DateUtil.addDays1(nowDate, 5);
-        return succeed(courseScheduleEvaluateService.createEvaluate(nowDate, afterDate));
+        return succeed(courseScheduleEvaluateService.createEvaluate(nowDate));
     }
 
     @ApiOperation(value = "提交陪练报告")