Browse Source

sql优化

zouxuan 1 year ago
parent
commit
54214ef1cf

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java

@@ -146,9 +146,16 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
                                                 @Param("groupType")GroupType groupType,
                                                 @Param("courseStatus") CourseStatusEnum courseStatus,@Param("tenantId") Integer tenantId);
 
+    List<IndexBaseMonthData> getGroupCourseData1(@Param("dayStr") String dayStr,
+                                                @Param("groupType")GroupType groupType,
+                                                @Param("courseStatus") CourseStatusEnum courseStatus,@Param("tenantId") Integer tenantId);
+
     List<IndexBaseMonthData> getGroupSurplusCourseData(@Param("dayStr") String dayStr,
                                                 @Param("groupType")GroupType groupType,
                                                 @Param("courseStatus") CourseStatusEnum courseStatus,@Param("tenantId") Integer tenantId);
+    List<IndexBaseMonthData> getGroupSurplusCourseData1(@Param("dayStr") String dayStr,
+                                                @Param("groupType")GroupType groupType,
+                                                @Param("courseStatus") CourseStatusEnum courseStatus,@Param("tenantId") Integer tenantId);
 
     List<IndexBaseMonthData> getGroupCourseDataWithGroup(@Param("dayStr") String dayStr,
                                                         @Param("startDate") String startDate,

+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -573,16 +573,16 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 	//剩余课时
 	public void subCourseData(String dayStr,Integer tenantId){
 		saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, null, CourseStatusEnum.NOT_START,tenantId), dayStr, IndexDataType.SURPLUS_COURSE_NUM, tenantId);
-		saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, GroupType.MUSIC, CourseStatusEnum.NOT_START,tenantId), dayStr, IndexDataType.SURPLUS_MUSIC_COURSE_NUM, tenantId);
-		saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, GroupType.VIP, CourseStatusEnum.NOT_START,tenantId), dayStr, IndexDataType.SURPLUS_VIP_COURSE_NUM, tenantId);
+		saveData(indexBaseMonthDataDao.getGroupCourseData1(dayStr, GroupType.MUSIC, CourseStatusEnum.NOT_START,tenantId), dayStr, IndexDataType.SURPLUS_MUSIC_COURSE_NUM, tenantId);
+		saveData(indexBaseMonthDataDao.getGroupCourseData1(dayStr, GroupType.VIP, CourseStatusEnum.NOT_START,tenantId), dayStr, IndexDataType.SURPLUS_VIP_COURSE_NUM, tenantId);
 		saveData(indexBaseMonthDataDao.getGroupCourseData(dayStr, GroupType.PRACTICE, CourseStatusEnum.NOT_START,tenantId), dayStr, IndexDataType.SURPLUS_PRACTICE_COURSE_NUM, tenantId);
 	}
 
 	//已消耗课时
 	public void consumeCourseData(String dayStr,Integer tenantId){
 		saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, null, CourseStatusEnum.OVER,tenantId), dayStr, IndexDataType.OVER_COURSE_NUM, tenantId);
-		saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, GroupType.MUSIC, CourseStatusEnum.OVER,tenantId), dayStr, IndexDataType.OVER_MUSIC_COURSE_NUM, tenantId);
-		saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, GroupType.VIP, CourseStatusEnum.OVER,tenantId), dayStr, IndexDataType.OVER_VIP_COURSE_NUM, tenantId);
+		saveData(indexBaseMonthDataDao.getGroupSurplusCourseData1(dayStr, GroupType.MUSIC, CourseStatusEnum.OVER,tenantId), dayStr, IndexDataType.OVER_MUSIC_COURSE_NUM, tenantId);
+		saveData(indexBaseMonthDataDao.getGroupSurplusCourseData1(dayStr, GroupType.VIP, CourseStatusEnum.OVER,tenantId), dayStr, IndexDataType.OVER_VIP_COURSE_NUM, tenantId);
 		saveData(indexBaseMonthDataDao.getGroupSurplusCourseData(dayStr, GroupType.PRACTICE, CourseStatusEnum.OVER,tenantId), dayStr, IndexDataType.OVER_PRACTICE_COURSE_NUM, tenantId);
 	}
 

+ 55 - 3
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -458,7 +458,7 @@
 		  	AND m.status_ = #{courseStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			AND m.merge_flag_ IN (0,1)
 			AND NOT EXISTS (SELECT id_ FROM practice_group WHERE m.group_type_='PRACTICE' AND m.music_group_id_=id_ AND type_='TRIAL')
-			AND m.organ_id_ IS NOT NULL AND m.pre_course_flag_ != 1 and m.tenant_id_ = #{tenantId}
+			AND m.pre_course_flag_ != 1 and m.tenant_id_ = #{tenantId}
 			<if test="groupType!=null">
 				AND m.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			</if>
@@ -468,7 +468,34 @@
 		GROUP BY
 			m.organ_id_
 		ORDER BY
-			m.organ_id_;
+			m.organ_id_
+	</select>
+
+	<select id="getGroupCourseData1" resultMap="IndexBaseMonthData">
+		SELECT
+			m.organ_id_,m.tenant_id_,
+			#{dayStr} month_,
+			COUNT( m.id_ ) total_num_,
+			COUNT( m.id_ ) activate_num_,
+			COUNT( m.id_ ) percent_
+		FROM
+			course_schedule m
+		WHERE
+			m.del_flag_ = '0'
+			AND m.is_lock_ = 0
+		  	AND m.status_ = #{courseStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			AND m.merge_flag_ IN (0,1)
+			AND m.pre_course_flag_ != 1 and m.tenant_id_ = #{tenantId}
+			<if test="groupType!=null">
+				AND m.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			</if>
+			<if test="dayStr!=null and dayStr!=''">
+				AND m.class_date_ &gt;= #{dayStr}
+			</if>
+		GROUP BY
+			m.organ_id_
+		ORDER BY
+			m.organ_id_
 	</select>
 
 	<select id="getGroupSurplusCourseData" resultMap="IndexBaseMonthData">
@@ -494,7 +521,32 @@
 				AND m.class_date_ &lt;= #{dayStr}
 			</if>
 		GROUP BY m.organ_id_
-		ORDER BY m.organ_id_;
+		ORDER BY m.organ_id_
+	</select>
+
+	<select id="getGroupSurplusCourseData1" resultMap="IndexBaseMonthData">
+		SELECT
+			m.organ_id_,m.tenant_id_,
+			#{dayStr} month_,
+			COUNT( m.id_ ) total_num_,
+			COUNT( m.id_ ) activate_num_,
+			COUNT( m.id_ ) percent_
+		FROM
+			course_schedule m
+		WHERE
+			m.del_flag_ = '0' and m.tenant_id_ = #{tenantId}
+			AND m.is_lock_ = 0
+			AND m.status_ = #{courseStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			AND m.merge_flag_ IN (0,1)
+			AND m.pre_course_flag_ != 1
+			<if test="groupType!=null">
+				AND m.group_type_ = #{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			</if>
+			<if test="dayStr!=null and dayStr!=''">
+				AND m.class_date_ &lt;= #{dayStr}
+			</if>
+		GROUP BY m.organ_id_
+		ORDER BY m.organ_id_
 	</select>
 
 	<select id="getGroupCourseDataWithGroup" resultMap="IndexBaseMonthData">