瀏覽代碼

1、作业消息推送

Joburgess 5 年之前
父節點
當前提交
9616393b45

+ 5 - 26
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/GroupDao.java

@@ -1,6 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
-import com.ym.mec.biz.dal.dto.BaseMapDto;
+import com.ym.mec.biz.dal.dto.GroupBaseCourseInfoDto;
 import com.ym.mec.biz.dal.entity.Group;
 import com.ym.mec.biz.dal.enums.GroupType;
 import org.apache.ibatis.annotations.Param;
@@ -44,8 +44,8 @@ public interface GroupDao {
      * @param groupType:
      * @return java.util.List<com.ym.mec.biz.dal.dto.BaseMapDto>
      */
-    List<BaseMapDto<String, Long>> countGroupStudentNum(@Param("groupIds") List<String> groupIds,
-                                          @Param("groupType") GroupType groupType);
+    List<GroupBaseCourseInfoDto> countGroupStudentNum(@Param("groupIds") List<String> groupIds,
+                                                      @Param("groupType") GroupType groupType);
 
     /**
      * @describe 统计团体的总课次
@@ -55,7 +55,7 @@ public interface GroupDao {
      * @param groupType:
      * @return java.util.List<com.ym.mec.biz.dal.dto.BaseMapDto>
      */
-    List<BaseMapDto<String, Long>> countGroupTotalClassesTimes(@Param("groupIds") List<String> groupIds,
+    List<GroupBaseCourseInfoDto> countGroupTotalClassesTimes(@Param("groupIds") List<String> groupIds,
                                                  @Param("groupType") GroupType groupType);
 
     /**
@@ -66,29 +66,8 @@ public interface GroupDao {
      * @param groupType:
      * @return java.util.List<com.ym.mec.biz.dal.dto.BaseMapDto>
      */
-    List<BaseMapDto<String, Long>> countGroupFinishedClassesTimes(@Param("groupIds") List<String> groupIds,
+    List<GroupBaseCourseInfoDto> countGroupFinishedClassesTimes(@Param("groupIds") List<String> groupIds,
                                                   @Param("groupType") GroupType groupType);
 
-    /**
-     * @describe 获取团体第一节课的时间
-     * @author Joburgess
-     * @date 2020/4/6
-     * @param groupIds:
-     * @param groupType:
-     * @return java.util.List<com.ym.mec.biz.dal.dto.BaseMapDto>
-     */
-    List<BaseMapDto<String, String>> findGroupsFirstClassesTime(@Param("groupIds") List<String> groupIds,
-                                                              @Param("groupType") GroupType groupType);
-
-    /**
-     * @describe 获取团体最后一节课的时间
-     * @author Joburgess
-     * @date 2020/4/6
-     * @param groupIds:
-     * @param groupType:
-     * @return java.util.List<com.ym.mec.biz.dal.dto.BaseMapDto>
-     */
-    List<BaseMapDto<String, String>> findGroupsLastClassesTime(@Param("groupIds") List<String> groupIds,
-                                                @Param("groupType") GroupType groupType);
 
 }

+ 62 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/GroupBaseCourseInfoDto.java

@@ -0,0 +1,62 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.Group;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/4/6
+ */
+public class GroupBaseCourseInfoDto extends Group {
+
+    private Integer studentNum;
+
+    private Integer totalClassTimes;
+
+    private Integer currentClassTimes;
+
+    private Date firstClassesStartTime;
+
+    private Date lastClassesEndTime;
+
+    public Integer getStudentNum() {
+        return studentNum;
+    }
+
+    public void setStudentNum(Integer studentNum) {
+        this.studentNum = studentNum;
+    }
+
+    public Integer getTotalClassTimes() {
+        return totalClassTimes;
+    }
+
+    public void setTotalClassTimes(Integer totalClassTimes) {
+        this.totalClassTimes = totalClassTimes;
+    }
+
+    public Integer getCurrentClassTimes() {
+        return currentClassTimes;
+    }
+
+    public void setCurrentClassTimes(Integer currentClassTimes) {
+        this.currentClassTimes = currentClassTimes;
+    }
+
+    public Date getFirstClassesStartTime() {
+        return firstClassesStartTime;
+    }
+
+    public void setFirstClassesStartTime(Date firstClassesStartTime) {
+        this.firstClassesStartTime = firstClassesStartTime;
+    }
+
+    public Date getLastClassesEndTime() {
+        return lastClassesEndTime;
+    }
+
+    public void setLastClassesEndTime(Date lastClassesEndTime) {
+        this.lastClassesEndTime = lastClassesEndTime;
+    }
+}

+ 27 - 36
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java

@@ -330,32 +330,28 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
             params.put("offset", pageInfo.getOffset());
             teacherCourseGroups = coursesGroupDao.findTeacherCourseGroupsWithWeb(params);
             List<String> groupIds = teacherCourseGroups.stream().map(e -> String.valueOf(e.getId())).collect(Collectors.toList());
-            List<BaseMapDto<String, Long>> groupStudentNums = groupDao.countGroupStudentNum(groupIds, GroupType.COMM);
-            Map<String, Long> groupStudentNumMap = groupStudentNums.stream().collect(Collectors.toMap(BaseMapDto::getKey, BaseMapDto::getValue));
-            List<BaseMapDto<String, Long>> groupTotalClassesTimes = groupDao.countGroupTotalClassesTimes(groupIds, GroupType.COMM);
-            Map<String, Long> groupTotalClassesTimesMap = groupTotalClassesTimes.stream().collect(Collectors.toMap(BaseMapDto::getKey, e->e.getValue()));
-            List<BaseMapDto<String, Long>> groupFinishedClassesTimes = groupDao.countGroupFinishedClassesTimes(groupIds, GroupType.COMM);
-            Map<String, Long> groupFinishedClassesTimesMap = groupFinishedClassesTimes.stream().collect(Collectors.toMap(BaseMapDto::getKey, e->e.getValue()));
-            List<BaseMapDto<String, String>> groupsFirstClassesTimes = groupDao.findGroupsFirstClassesTime(groupIds, GroupType.COMM);
-            Map<String, String> groupsFirstClassesTimeMap = groupsFirstClassesTimes.stream().collect(Collectors.toMap(BaseMapDto::getKey, BaseMapDto::getValue));
-            List<BaseMapDto<String, String>> groupsLastClassesTimes = groupDao.findGroupsLastClassesTime(groupIds, GroupType.COMM);
-            Map<String, String> groupsLastClassesTimeMap = groupsLastClassesTimes.stream().collect(Collectors.toMap(BaseMapDto::getKey, BaseMapDto::getValue));
+            List<GroupBaseCourseInfoDto> groupStudentNums = groupDao.countGroupStudentNum(groupIds, GroupType.COMM);
+            Map<String, Integer> groupStudentNumMap = groupStudentNums.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, GroupBaseCourseInfoDto::getStudentNum));
+
+            List<GroupBaseCourseInfoDto> groupTotalClassesTimes = groupDao.countGroupTotalClassesTimes(groupIds, GroupType.COMM);
+            Map<String, GroupBaseCourseInfoDto> groupBaseCourseInfoMap = groupTotalClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e->e));
+
+            List<GroupBaseCourseInfoDto> groupFinishedClassesTimes = groupDao.countGroupFinishedClassesTimes(groupIds, GroupType.COMM);
+            Map<String, Integer> groupFinishedClassesTimesMap = groupFinishedClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e->e.getCurrentClassTimes()));
+
             for (CourseGroupExtendDto teacherCourseGroup : teacherCourseGroups) {
                 if(Objects.nonNull(groupStudentNumMap.get(teacherCourseGroup.getId().toString()))) {
                     teacherCourseGroup.setStudentNum(groupStudentNumMap.get(teacherCourseGroup.getId().toString()).intValue());
                 }
-                if(Objects.nonNull(groupTotalClassesTimesMap.get(teacherCourseGroup.getId().toString()))) {
-                    teacherCourseGroup.setTotalClassTimes(groupTotalClassesTimesMap.get(teacherCourseGroup.getId().toString()).intValue());
+                GroupBaseCourseInfoDto groupBaseCourseInfo = groupBaseCourseInfoMap.get(teacherCourseGroup.getId().toString());
+                if(Objects.nonNull(groupBaseCourseInfo)){
+                    teacherCourseGroup.setTotalClassTimes(groupBaseCourseInfo.getTotalClassTimes());
+                    teacherCourseGroup.setFirstClassesStartTime(groupBaseCourseInfo.getFirstClassesStartTime());
+                    teacherCourseGroup.setLastClassesEndTime(groupBaseCourseInfo.getLastClassesEndTime());
                 }
                 if(Objects.nonNull(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()))) {
                     teacherCourseGroup.setCurrentClassTimes(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()).intValue());
                 }
-                if(Objects.nonNull(groupsFirstClassesTimeMap.get(teacherCourseGroup.getId().toString()))){
-                    teacherCourseGroup.setFirstClassesStartTime(DateUtil.stringToDate(groupsFirstClassesTimeMap.get(teacherCourseGroup.getId().toString()), "yyyy-MM-dd HH:mm:ss"));
-                }
-                if(Objects.nonNull(groupsLastClassesTimeMap.get(teacherCourseGroup.getId().toString()))){
-                    teacherCourseGroup.setLastClassesEndTime(DateUtil.stringToDate(groupsLastClassesTimeMap.get(teacherCourseGroup.getId().toString()), "yyyy-MM-dd HH:mm:ss"));
-                }
                 if(Objects.nonNull(teacherCourseGroup.getTotalClassTimes())){
                     teacherCourseGroup.setGroupClassesTotalDuration(teacherCourseGroup.getSingleClassMinutes()*teacherCourseGroup.getTotalClassTimes());
                 }
@@ -382,16 +378,14 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
             teacherCourseGroups = coursesGroupDao.findStudentCourseGroupsWithWeb(params);
             List<Integer> teacherIds = teacherCourseGroups.stream().map(CourseGroupExtendDto::getTeacherId).collect(Collectors.toList());
             List<String> groupIds = teacherCourseGroups.stream().map(e -> String.valueOf(e.getId())).collect(Collectors.toList());
-            List<BaseMapDto<String, Long>> groupStudentNums = groupDao.countGroupStudentNum(groupIds, GroupType.COMM);
-            Map<String, Long> groupStudentNumMap = groupStudentNums.stream().collect(Collectors.toMap(BaseMapDto::getKey, BaseMapDto::getValue));
-            List<BaseMapDto<String, Long>> groupTotalClassesTimes = groupDao.countGroupTotalClassesTimes(groupIds, GroupType.COMM);
-            Map<String, Long> groupTotalClassesTimesMap = groupTotalClassesTimes.stream().collect(Collectors.toMap(BaseMapDto::getKey, e->e.getValue()));
-            List<BaseMapDto<String, Long>> groupFinishedClassesTimes = groupDao.countGroupFinishedClassesTimes(groupIds, GroupType.COMM);
-            Map<String, Long> groupFinishedClassesTimesMap = groupFinishedClassesTimes.stream().collect(Collectors.toMap(BaseMapDto::getKey, e->e.getValue()));
-            List<BaseMapDto<String, String>> groupsFirstClassesTimes = groupDao.findGroupsFirstClassesTime(groupIds, GroupType.COMM);
-            Map<String, String> groupsFirstClassesTimeMap = groupsFirstClassesTimes.stream().collect(Collectors.toMap(BaseMapDto::getKey, BaseMapDto::getValue));
-            List<BaseMapDto<String, String>> groupsLastClassesTimes = groupDao.findGroupsLastClassesTime(groupIds, GroupType.COMM);
-            Map<String, String> groupsLastClassesTimeMap = groupsLastClassesTimes.stream().collect(Collectors.toMap(BaseMapDto::getKey, BaseMapDto::getValue));
+            List<GroupBaseCourseInfoDto> groupStudentNums = groupDao.countGroupStudentNum(groupIds, GroupType.COMM);
+            Map<String, Integer> groupStudentNumMap = groupStudentNums.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, GroupBaseCourseInfoDto::getStudentNum));
+
+            List<GroupBaseCourseInfoDto> groupTotalClassesTimes = groupDao.countGroupTotalClassesTimes(groupIds, GroupType.COMM);
+            Map<String, GroupBaseCourseInfoDto> groupBaseCourseInfoMap = groupTotalClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e->e));
+
+            List<GroupBaseCourseInfoDto> groupFinishedClassesTimes = groupDao.countGroupFinishedClassesTimes(groupIds, GroupType.COMM);
+            Map<String, Integer> groupFinishedClassesTimesMap = groupFinishedClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e->e.getCurrentClassTimes()));
 
             List<SimpleUserDto> teachers = teacherDao.findSimpleTeachers(teacherIds);
             Map<Integer, String> idNameMap = teachers.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, SimpleUserDto::getUserName));
@@ -400,18 +394,15 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
                 if(Objects.nonNull(groupStudentNumMap.get(teacherCourseGroup.getId().toString()))) {
                     teacherCourseGroup.setStudentNum(groupStudentNumMap.get(teacherCourseGroup.getId().toString()).intValue());
                 }
-                if(Objects.nonNull(groupTotalClassesTimesMap.get(teacherCourseGroup.getId().toString()))) {
-                    teacherCourseGroup.setTotalClassTimes(groupTotalClassesTimesMap.get(teacherCourseGroup.getId().toString()).intValue());
+                GroupBaseCourseInfoDto groupBaseCourseInfo = groupBaseCourseInfoMap.get(teacherCourseGroup.getId().toString());
+                if(Objects.nonNull(groupBaseCourseInfo)){
+                    teacherCourseGroup.setTotalClassTimes(groupBaseCourseInfo.getTotalClassTimes());
+                    teacherCourseGroup.setFirstClassesStartTime(groupBaseCourseInfo.getFirstClassesStartTime());
+                    teacherCourseGroup.setLastClassesEndTime(groupBaseCourseInfo.getLastClassesEndTime());
                 }
                 if(Objects.nonNull(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()))) {
                     teacherCourseGroup.setCurrentClassTimes(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()).intValue());
                 }
-                if(Objects.nonNull(groupsFirstClassesTimeMap.get(teacherCourseGroup.getId().toString()))){
-                    teacherCourseGroup.setFirstClassesStartTime(DateUtil.stringToDate(groupsFirstClassesTimeMap.get(teacherCourseGroup.getId().toString()), "yyyy-MM-dd HH:mm:ss"));
-                }
-                if(Objects.nonNull(groupsLastClassesTimeMap.get(teacherCourseGroup.getId().toString()))){
-                    teacherCourseGroup.setLastClassesEndTime(DateUtil.stringToDate(groupsLastClassesTimeMap.get(teacherCourseGroup.getId().toString()), "yyyy-MM-dd HH:mm:ss"));
-                }
                 if(Objects.nonNull(teacherCourseGroup.getTotalClassTimes())){
                     teacherCourseGroup.setGroupClassesTotalDuration(teacherCourseGroup.getSingleClassMinutes()*teacherCourseGroup.getTotalClassTimes());
                 }

+ 6 - 5
mec-biz/src/main/resources/config/mybatis/CoursesGroupMapper.xml

@@ -248,22 +248,23 @@
 		SELECT csg.* FROM class_group_student_mapper cgsm LEFT JOIN courses_group csg ON csg.id_=cgsm.music_group_id_
 		WHERE cgsm.user_id_=#{studentId} AND cgsm.group_type_='COMM'
 		<if test="search!=null">
-			AND (name_ LIKE CONCAT('%', #{search}, '%') OR id_ LIKE CONCAT('%', #{search}, '%'))
+			AND (csg.name_ LIKE CONCAT('%', #{search}, '%') OR csg.id_ LIKE CONCAT('%', #{search}, '%'))
 		</if>
 		<if test="groupStatus!=null">
-			AND status_ = #{groupStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			AND csg.status_ = #{groupStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 		</if>
 		ORDER BY id_ DESC
 		<include refid="global.limit"/>
 	</select>
 	<select id="countStudentGroupsWithWeb" resultType="int">
 		SELECT COUNT(csg.id_) FROM class_group_student_mapper cgsm LEFT JOIN courses_group csg ON csg.id_=cgsm.music_group_id_
-		WHERE cgsm.user_id_=#{studentId} AND cgsm.group_type_='COMM'
+		WHERE
+		cgsm.user_id_=#{studentId} AND cgsm.group_type_='COMM'
 		<if test="search!=null">
-			AND (name_ LIKE CONCAT('%', #{search}, '%') OR id_ LIKE CONCAT('%', #{search}, '%'))
+			AND (csg.name_ LIKE CONCAT('%', #{search}, '%') OR csg.id_ LIKE CONCAT('%', #{search}, '%'))
 		</if>
 		<if test="groupStatus!=null">
-			AND status_ = #{groupStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			AND csg.status_ = #{groupStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 		</if>
 	</select>
 </mapper>

+ 19 - 26
mec-biz/src/main/resources/config/mybatis/GroupMapper.xml

@@ -16,6 +16,14 @@
         <result column="class_group_name_" property="classGroupName"/>
     </resultMap>
 
+    <resultMap id="GroupBaseCourseInfoDto" type="com.ym.mec.biz.dal.dto.GroupBaseCourseInfoDto" extends="Group">
+        <result column="student_num_" property="studentNum" javaType="java.lang.Integer"/>
+        <result column="total_class_times_" property="totalClassTimes" javaType="java.lang.Integer"/>
+        <result column="current_class_times_" property="currentClassTimes" javaType="java.lang.Integer"/>
+        <result column="first_classes_start_time_" property="firstClassesStartTime"/>
+        <result column="last_classes_end_time_" property="lastClassesEndTime"/>
+    </resultMap>
+
     <sql id="searchMusicGroupsCondition">
         <where>
             <if test="search!=null">
@@ -160,8 +168,13 @@
         </foreach>
     </select>
 
-    <select id="countGroupTotalClassesTimes" resultType="com.ym.mec.biz.dal.dto.BaseMapDto">
-        SELECT music_group_id_ 'key',COUNT(id_) 'value' FROM course_schedule
+    <select id="countGroupTotalClassesTimes" resultMap="GroupBaseCourseInfoDto">
+        SELECT
+            music_group_id_ group_id_,
+            COUNT(id_) total_class_times_,
+            MIN( CONCAT( class_date_, ' ', start_class_time_ ) ) first_classes_start_time_,
+            MAX(CONCAT(class_date_, ' ', end_class_time_)) last_classes_end_time_
+        FROM course_schedule
         WHERE group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         AND music_group_id_ IN
         <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
@@ -170,8 +183,8 @@
         GROUP BY music_group_id_;
     </select>
 
-    <select id="countGroupFinishedClassesTimes" resultType="com.ym.mec.biz.dal.dto.BaseMapDto">
-        SELECT music_group_id_ 'key',COUNT(id_) 'value' FROM course_schedule
+    <select id="countGroupFinishedClassesTimes" resultMap="GroupBaseCourseInfoDto">
+        SELECT music_group_id_ group_id_,COUNT(id_) current_class_times_ FROM course_schedule
         WHERE group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         AND music_group_id_ IN
         <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
@@ -181,28 +194,8 @@
         GROUP BY music_group_id_;
     </select>
 
-    <select id="findGroupsFirstClassesTime" resultType="com.ym.mec.biz.dal.dto.BaseMapDto">
-        SELECT music_group_id_ 'key',MIN(CONCAT(class_date_, ' ', start_class_time_)) 'value' FROM course_schedule
-        WHERE group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-        AND music_group_id_ IN
-        <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
-            #{groupId}
-        </foreach>
-        GROUP BY music_group_id_;
-    </select>
-
-    <select id="findGroupsLastClassesTime" resultType="com.ym.mec.biz.dal.dto.BaseMapDto">
-        SELECT music_group_id_ 'key',MAX(CONCAT(class_date_, ' ', end_class_time_)) 'value' FROM course_schedule
-        WHERE group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-        AND music_group_id_ IN
-        <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
-            #{groupId}
-        </foreach>
-        GROUP BY music_group_id_;
-    </select>
-
-    <select id="countGroupStudentNum" resultType="com.ym.mec.biz.dal.dto.BaseMapDto">
-        SELECT  music_group_id_ 'key',COUNT(id_) 'value'
+    <select id="countGroupStudentNum" resultMap="GroupBaseCourseInfoDto">
+        SELECT  music_group_id_ group_id_,COUNT(id_) student_num_
         FROM class_group_student_mapper
         WHERE group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         AND status_='NORMAL'