Browse Source

Merge remote-tracking branch 'origin/master'

zouxuan 4 years ago
parent
commit
bd376d22b3

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -426,6 +426,10 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
                                      @Param("classGroupIds") List<Integer> classGroupIds,
                                      @Param("type") String type);
 
+    List<Date> getCourseScheduleDateWithOrgan(@Param("organIds") List<Integer> organIds,
+                                              @Param("month") Date month,
+                                              @Param("type") String type);
+
     /**
      * @Author: Joburgess
      * @Date: 2019/9/23

+ 52 - 42
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -974,28 +974,33 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
     @Override
     public List<Date> getCourseScheduleDates(Date month, String organIdList, String type) {
-		Map<String, Object> params = new HashMap<>();
-		params.put("organIdList", organIdList);
-
-		List<Group> groups = groupDao.searchGroups(params);
-		List<Integer> classGroupIds=new ArrayList<>();
-		if(!CollectionUtils.isEmpty(groups)){
-			Map<GroupType, List<Group>> groupTypeGroupsMap = groups.stream().collect(Collectors.groupingBy(Group::getGroupType));
-			for (Map.Entry<GroupType, List<Group>> groupTypeListEntry : groupTypeGroupsMap.entrySet()) {
-				List<String> groupIds = groupTypeListEntry.getValue().stream().map(Group::getId).collect(Collectors.toList());
-				List<ClassGroup> classGroups = classGroupDao.findByMusicGroupsAndType(groupIds, groupTypeListEntry.getKey().getCode());
-				if(!CollectionUtils.isEmpty(classGroups)){
-					List<Integer> tempClassGroupIds=classGroups.stream().map(ClassGroup::getId).collect(Collectors.toList());
-					classGroupIds.addAll(tempClassGroupIds);
-				}
-			}
-			if(CollectionUtils.isEmpty(classGroupIds)){
-				return Collections.EMPTY_LIST;
-			}
-		}else{
-			return Collections.EMPTY_LIST;
+//		Map<String, Object> params = new HashMap<>();
+//		params.put("organIdList", organIdList);
+//
+//		List<Group> groups = groupDao.searchGroups(params);
+//		List<Integer> classGroupIds=new ArrayList<>();
+//		if(!CollectionUtils.isEmpty(groups)){
+//			Map<GroupType, List<Group>> groupTypeGroupsMap = groups.stream().collect(Collectors.groupingBy(Group::getGroupType));
+//			for (Map.Entry<GroupType, List<Group>> groupTypeListEntry : groupTypeGroupsMap.entrySet()) {
+//				List<String> groupIds = groupTypeListEntry.getValue().stream().map(Group::getId).collect(Collectors.toList());
+//				List<ClassGroup> classGroups = classGroupDao.findByMusicGroupsAndType(groupIds, groupTypeListEntry.getKey().getCode());
+//				if(!CollectionUtils.isEmpty(classGroups)){
+//					List<Integer> tempClassGroupIds=classGroups.stream().map(ClassGroup::getId).collect(Collectors.toList());
+//					classGroupIds.addAll(tempClassGroupIds);
+//				}
+//			}
+//			if(CollectionUtils.isEmpty(classGroupIds)){
+//				return Collections.EMPTY_LIST;
+//			}
+//		}else{
+//			return Collections.EMPTY_LIST;
+//		}
+//        return courseScheduleDao.getCourseScheduleDate(month, classGroupIds,type);
+		List<Integer> organIds = new ArrayList<>();
+		if(StringUtils.isNotBlank(organIdList)){
+			organIds = Arrays.stream(organIdList.split(",")).map(s->Integer.valueOf(s)).collect(Collectors.toList());
 		}
-        return courseScheduleDao.getCourseScheduleDate(month, classGroupIds,type);
+		return courseScheduleDao.getCourseScheduleDateWithOrgan(organIds, month, type);
     }
 
     @Override
@@ -1077,30 +1082,35 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             queryInfo.setDate(new Date());
         }
 
+		List<Integer> organIds = new ArrayList<>();
+		if(StringUtils.isNotBlank(queryInfo.getOrganIdList())){
+			organIds = Arrays.stream(queryInfo.getOrganIdList().split(",")).map(s->Integer.valueOf(s)).collect(Collectors.toList());
+		}
+
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
 
-        params.put("musicGroupStatus", null);
-        params.put("vipGroupStatus", null);
-        List<Group> groups = groupDao.searchGroups(params);
-        if(!CollectionUtils.isEmpty(groups)){
-            Map<GroupType, List<Group>> groupTypeGroupsMap = groups.stream().collect(Collectors.groupingBy(Group::getGroupType));
-            List<Integer> classGroupIds=new ArrayList<>();
-            for (Map.Entry<GroupType, List<Group>> groupTypeListEntry : groupTypeGroupsMap.entrySet()) {
-                List<String> groupIds = groupTypeListEntry.getValue().stream().map(Group::getId).collect(Collectors.toList());
-                List<ClassGroup> classGroups = classGroupDao.findByMusicGroupsAndType(groupIds, groupTypeListEntry.getKey().getCode());
-                if(!CollectionUtils.isEmpty(classGroups)){
-                    List<Integer> tempClassGroupIds=classGroups.stream().map(ClassGroup::getId).collect(Collectors.toList());
-                    classGroupIds.addAll(tempClassGroupIds);
-                }
-            }
-            if(CollectionUtils.isEmpty(classGroupIds)){
-                return pageInfo;
-            }
-            params.put("classGroupIds", classGroupIds);
-        }else{
-            return pageInfo;
-        }
+//        params.put("musicGroupStatus", null);
+//        params.put("vipGroupStatus", null);
+//        List<Group> groups = groupDao.searchGroups(params);
+//        if(!CollectionUtils.isEmpty(groups)){
+//            Map<GroupType, List<Group>> groupTypeGroupsMap = groups.stream().collect(Collectors.groupingBy(Group::getGroupType));
+//            List<Integer> classGroupIds=new ArrayList<>();
+//            for (Map.Entry<GroupType, List<Group>> groupTypeListEntry : groupTypeGroupsMap.entrySet()) {
+//                List<String> groupIds = groupTypeListEntry.getValue().stream().map(Group::getId).collect(Collectors.toList());
+//                List<ClassGroup> classGroups = classGroupDao.findByMusicGroupsAndType(groupIds, groupTypeListEntry.getKey().getCode());
+//                if(!CollectionUtils.isEmpty(classGroups)){
+//                    List<Integer> tempClassGroupIds=classGroups.stream().map(ClassGroup::getId).collect(Collectors.toList());
+//                    classGroupIds.addAll(tempClassGroupIds);
+//                }
+//            }
+//            if(CollectionUtils.isEmpty(classGroupIds)){
+//                return pageInfo;
+//            }
+//            params.put("classGroupIds", classGroupIds);
+//        }else{
+//            return pageInfo;
+//        }
 
         List<CourseScheduleDto> dataList = null;
         int count = courseScheduleDao.countCourseSchedulesWithDate(params);

+ 59 - 20
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -531,36 +531,50 @@
             LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=cs.actual_teacher_id_
             LEFT JOIN school s ON cs.schoole_id_=s.id_
         WHERE
-        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-        <if test="classGroupIds != null and organIdList!=null">
-            AND cs.class_group_id_ IN
-            <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
-                #{classGroupId}
-            </foreach>
-        </if>
-        AND cs.id_ IS NOT NULL
-        <if test="type!=null">
-            AND cg.group_type_ = #{type}
-        </if>
-        <if test="musicGroupId!=null">
-            AND cs.music_group_id_=#{musicGroupId} AND cs.group_type_='MUSIC'
-        </if>
-        AND cs.class_date_ = DATE_FORMAT(#{date},'%Y-%m-%d')
-        ORDER BY CONCAT(cs.class_date_,' ',cs.start_class_time_)
-        <include refid="global.limit"/>
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+            <if test="organIds!=null and organIds.size()>0">
+                AND cs.organ_id_ IN
+                <foreach collection="organIds" item="organId" separator="," open="(" close=")">
+                    #{organId}
+                </foreach>
+            </if>
+            <if test="classGroupIds != null and organIdList!=null">
+                AND cs.class_group_id_ IN
+                <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
+                    #{classGroupId}
+                </foreach>
+            </if>
+            AND cs.id_ IS NOT NULL
+            <if test="type!=null">
+                AND cs.group_type_ = #{type}
+            </if>
+            <if test="musicGroupId!=null">
+                AND cs.music_group_id_=#{musicGroupId} AND cs.group_type_='MUSIC'
+            </if>
+            AND cs.class_date_ = DATE_FORMAT(#{date},'%Y-%m-%d')
+            ORDER BY CONCAT(cs.class_date_,' ',cs.start_class_time_)
+            <include refid="global.limit"/>
     </select>
 
     <select id="countCourseSchedulesWithDate" resultType="int">
         SELECT
         count(*)
         FROM
-        course_schedule cs
-        LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
+            course_schedule cs
+            <if test="classGroupIds != null and organIdList!=null">
+                LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
+            </if>
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND cs.id_ IS NOT NULL
+        <if test="organIds!=null and organIds.size()>0">
+            AND cs.organ_id_ IN
+            <foreach collection="organIds" item="organId" separator="," open="(" close=")">
+                #{organId}
+            </foreach>
+        </if>
         <if test="type!=null">
-            AND cg.group_type_ = #{type}
+            AND cs.group_type_ = #{type}
         </if>
         <if test="classGroupIds != null and organIdList!=null">
             AND cs.class_group_id_ IN
@@ -974,6 +988,31 @@
         cs.class_date_
     </select>
 
+    <select id="getCourseScheduleDateWithOrgan" resultType="java.util.Date">
+        SELECT
+            cs.class_date_
+        FROM
+            course_schedule cs
+        WHERE
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+            <if test="organIds!=null and organIds.size()>0">
+                AND cs.organ_id_ IN
+                <foreach collection="organIds" item="organId" separator="," open="(" close=")">
+                    #{organId}
+                </foreach>
+            </if>
+            <if test="month==null">
+                AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
+            </if>
+            <if test="month!=null">
+                AND DATE_FORMAT( #{month}, '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
+            </if>
+            <if test="type!=null and type!=''">
+                AND cs.group_type_=#{type}
+            </if>
+        GROUP BY cs.class_date_
+    </select>
+
     <select id="findClassSubjects" resultType="string">
         SELECT
         CONCAT(cg.id_,'-',IF(GROUP_CONCAT(s.name_) IS NULL,'',GROUP_CONCAT(s.name_)))