瀏覽代碼

管乐迷需求一大堆

zouxuan 2 年之前
父節點
當前提交
6e61011302

+ 4 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java

@@ -444,7 +444,10 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
     List<IndexBaseMonthData> getStudentPracticeOrderNum(@Param("dayStr") String dayStr,@Param("tenantId") Integer tenantId);
     List<IndexBaseMonthData> getStudentPracticeOrderNum(@Param("dayStr") String dayStr,@Param("tenantId") Integer tenantId);
 
 
     //当月排课异常
     //当月排课异常
-    int getCurrentCourseError(@Param("month") String month,@Param("organIdList") Set<Integer> organIdList);
+    int getCurrentCourseError(@Param("userIdList") List<Integer> userIdList);
+
+    //当月排课异常
+    List<Integer> getCurrentCourseErrorUserIdList(@Param("month") String month,@Param("organIdList") Set<Integer> organIdList);
 
 
     //待续费学员提醒
     //待续费学员提醒
     int getWaitRenewInfo(@Param("organIdList") Set<Integer> organIdList);
     int getWaitRenewInfo(@Param("organIdList") Set<Integer> organIdList);

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

@@ -855,13 +855,12 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			four.setErrorType(IndexErrorType.ATTENDANCE_SERVE);
 			four.setErrorType(IndexErrorType.ATTENDANCE_SERVE);
 			four.setDesc(IndexErrorType.ATTENDANCE_SERVE.getMsg());
 			four.setDesc(IndexErrorType.ATTENDANCE_SERVE.getMsg());
 			List<IndexErrInfoDto> fourChild = new ArrayList<>();
 			List<IndexErrInfoDto> fourChild = new ArrayList<>();
+			//获取有排课异常的学员列表
+			String month = DateUtil.format(date,DateUtil.ISO_YEAR_MONTH_FORMAT);
+			CompletableFuture<List<Integer>> future = CompletableFuture.supplyAsync(() -> {
+                return indexBaseMonthDataDao.getCurrentCourseErrorUserIdList(month, organIdList);
+            });
 
 
-			CompletableFuture future1 = this.async(() -> {
-				String month = DateUtil.format(date,DateUtil.ISO_YEAR_MONTH_FORMAT);
-				//当月排课异常: (1)剩余课时(未开始+排课资格)4的学员,本月排课节数少于4节
-				int currentCourseError = indexBaseMonthDataDao.getCurrentCourseError(month,organIdList);
-				fourChild.add(new IndexErrInfoDto(IndexErrorType.CURRENT_COURSE_ERROR, currentCourseError));
-			});
 			CompletableFuture future2 = null;
 			CompletableFuture future2 = null;
 			CompletableFuture future3 = null;
 			CompletableFuture future3 = null;
 			if(classGroupIds == null || classGroupIds.size() > 0) {
 			if(classGroupIds == null || classGroupIds.size() > 0) {
@@ -883,10 +882,17 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 				//课程异常
 				//课程异常
 				fourChild.add(new IndexErrInfoDto(IndexErrorType.TEACHER_NOT_A_CLASS, 0));
 				fourChild.add(new IndexErrInfoDto(IndexErrorType.TEACHER_NOT_A_CLASS, 0));
 			}
 			}
+			List<Integer> userIdList = future.join();
+			if(CollectionUtils.isEmpty(userIdList)){
+				fourChild.add(new IndexErrInfoDto(IndexErrorType.CURRENT_COURSE_ERROR, 0));
+			}else {
+				//当月排课异常: (1)剩余课时(未开始+排课资格)4的学员,本月排课节数少于4节
+				int currentCourseError = indexBaseMonthDataDao.getCurrentCourseError(userIdList);
+				fourChild.add(new IndexErrInfoDto(IndexErrorType.CURRENT_COURSE_ERROR, currentCourseError));
+			}
 			if(classGroupIds == null || classGroupIds.size() > 0) {
 			if(classGroupIds == null || classGroupIds.size() > 0) {
 				future2.join();future3.join();
 				future2.join();future3.join();
 			}
 			}
-			future1.join();
 			four.setNum(fourChild.stream().mapToInt(IndexErrInfoDto::getNum).sum());
 			four.setNum(fourChild.stream().mapToInt(IndexErrInfoDto::getNum).sum());
 			four.setResult(fourChild);
 			four.setResult(fourChild);
 			all.add(four);
 			all.add(four);

+ 10 - 5
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -2143,10 +2143,17 @@
 	</select>
 	</select>
     <select id="getCurrentCourseError" resultType="java.lang.Integer">
     <select id="getCurrentCourseError" resultType="java.lang.Integer">
 		select COUNT(DISTINCT ss.user_id_) from student_statistics ss
 		select COUNT(DISTINCT ss.user_id_) from student_statistics ss
-		left join (select su.id_ from sys_user su
+		where ss.no_schedule_num_ + ss.sub_course_num_ > 4 and (((ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0 AND ss.last_visit_status_ IS NULL) OR ss.last_visit_status_ = 'NORMAL')
+		AND ss.group_type_ = 'VIP' AND ss.user_id_ IN
+		<foreach collection="userIdList" open="(" close=")" item="item" separator=",">
+			#{item}
+		</foreach>
+	</select>
+    <select id="getCurrentCourseErrorUserIdList" resultType="java.lang.Integer">
+		select su.id_ from sys_user su
 		left join course_schedule_student_payment cssp ON cssp.user_id_ = su.id_
 		left join course_schedule_student_payment cssp ON cssp.user_id_ = su.id_
 		left join course_schedule cs ON cs.id_ = cssp.course_schedule_id_
 		left join course_schedule cs ON cs.id_ = cssp.course_schedule_id_
-		AND DATE_FORMAT(cs.class_date_,'%Y-%m') = #{month} AND cs.type_ = 'VIP' AND cssp.group_type_ = 'VIP' and cssp.user_id_ IS NOT NULL
+		AND DATE_FORMAT(cs.class_date_,'%Y-%m') = #{month} AND cs.type_ = 'VIP' AND cssp.group_type_ = 'VIP'
 		where
 		where
 		<if test="organIdList != null and organIdList.size > 0">
 		<if test="organIdList != null and organIdList.size > 0">
 			su.organ_id_ IN
 			su.organ_id_ IN
@@ -2154,9 +2161,7 @@
 				#{item}
 				#{item}
 			</foreach>
 			</foreach>
 		</if>
 		</if>
-		group by su.id_ having COUNT(distinct cs.id_) &lt; 4 OR COUNT(distinct cs.id_) IS NULL) cs ON cs.id_ = ss.user_id_
-		where ss.no_schedule_num_ + ss.sub_course_num_ > 4 and (((ss.no_schedule_num_ > 0 OR ss.sub_course_num_) AND ss.lately_year_course_consumer_ > 0 AND ss.last_visit_status_ IS NULL) OR ss.last_visit_status_ = 'NORMAL')
-		AND cs.id_ = ss.user_id_ and ss.group_type_ = 'VIP'
+		group by su.id_ having COUNT(distinct cs.id_) &lt; 4 OR COUNT(distinct cs.id_) IS NULL
 	</select>
 	</select>
 	<select id="getWaitRenewInfo" resultType="java.lang.Integer">
 	<select id="getWaitRenewInfo" resultType="java.lang.Integer">
 		select COUNT(ss.user_id_) from student_statistics ss
 		select COUNT(ss.user_id_) from student_statistics ss

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

@@ -335,7 +335,7 @@
 		ss.no_schedule_num_ + ss.sub_course_num_ subTotalCourse,
 		ss.no_schedule_num_ + ss.sub_course_num_ subTotalCourse,
 			CASE WHEN ss.last_visit_status_ IN ('NORMAL','PAUSE','SLEEPY','LOST') THEN ss.last_visit_status_
 			CASE WHEN ss.last_visit_status_ IN ('NORMAL','PAUSE','SLEEPY','LOST') THEN ss.last_visit_status_
 			WHEN (ss.no_schedule_num_ > 0 OR ss.sub_course_num_ > 0) AND ss.lately_year_course_consumer_ > 0 THEN 'NORMAL'
 			WHEN (ss.no_schedule_num_ > 0 OR ss.sub_course_num_ > 0) AND ss.lately_year_course_consumer_ > 0 THEN 'NORMAL'
-			WHEN ss.over_course_num_ > 0 AND (ss.sub_course_num_ > 0 OR ss.no_schedule_num_ > 0) AND ss.lately_year_course_consumer_ &lt;= 0 THEN 'SLEEPY'
+			WHEN (ss.no_schedule_num_ > 0 OR suca.course_balance_ > 0) AND (ss.over_course_num_ &lt;= 0 OR ss.lately_year_course_consumer_ &lt;= 0) THEN 'SLEEPY'
 			WHEN ss.over_course_num_ > 0 AND ss.sub_course_num_ &lt;= 0 AND ss.no_schedule_num_ &lt;= 0 AND suca.course_balance_ &lt;= 0 THEN 'LOST'
 			WHEN ss.over_course_num_ > 0 AND ss.sub_course_num_ &lt;= 0 AND ss.no_schedule_num_ &lt;= 0 AND suca.course_balance_ &lt;= 0 THEN 'LOST'
 			WHEN suca.course_balance_ > 0 AND ss.sub_course_num_ &lt;= 0 AND ss.no_schedule_num_ &lt;= 0 THEN 'PAUSE' ELSE 'OTHER' END student_status_
 			WHEN suca.course_balance_ > 0 AND ss.sub_course_num_ &lt;= 0 AND ss.no_schedule_num_ &lt;= 0 THEN 'PAUSE' ELSE 'OTHER' END student_status_
 			,suca.course_balance_,
 			,suca.course_balance_,
@@ -372,7 +372,7 @@
 	</resultMap>
 	</resultMap>
 	<select id="studentSmallClassStatisticsSum" resultMap="StudentStatisticsSumDto">
 	<select id="studentSmallClassStatisticsSum" resultMap="StudentStatisticsSumDto">
 		SELECT
 		SELECT
-		COUNT(CASE WHEN ss.last_visit_status_ = 'SLEEPY' OR ((ss.last_visit_status_ IS NULL AND ss.no_schedule_num_ > 0 OR suca.course_balance_ > 0) AND (ss.over_course_num_ &lt;= 0 OR ss.lately_year_course_consumer_ &lt;= 0)) THEN 1 ELSE NULL END) 'sleepStudentNum',
+		COUNT(CASE WHEN ss.last_visit_status_ = 'SLEEPY' OR (ss.last_visit_status_ IS NULL AND (ss.no_schedule_num_ > 0 OR suca.course_balance_ > 0) AND (ss.over_course_num_ &lt;= 0 OR ss.lately_year_course_consumer_ &lt;= 0)) THEN 1 ELSE NULL END) 'sleepStudentNum',
 		COUNT(CASE WHEN ss.over_course_num_ > 0 AND (ss.sub_course_num_ > 0 OR ss.no_schedule_num_ > 0) AND ss.lately_year_course_consumer_ &lt;= 0 AND ss.no_schedule_num_ > 0 THEN 1 ELSE NULL END) 'sleepStudentHasNotSchedule',
 		COUNT(CASE WHEN ss.over_course_num_ > 0 AND (ss.sub_course_num_ > 0 OR ss.no_schedule_num_ > 0) AND ss.lately_year_course_consumer_ &lt;= 0 AND ss.no_schedule_num_ > 0 THEN 1 ELSE NULL END) 'sleepStudentHasNotSchedule',
 		COUNT(CASE WHEN ss.over_course_num_ > 0 AND (ss.sub_course_num_ > 0 OR ss.no_schedule_num_ > 0) AND ss.lately_year_course_consumer_ &lt;= 0 AND ss.no_schedule_num_ &lt;= 0 THEN 1 ELSE NULL END) 'sleepStudentNoNotSchedule',
 		COUNT(CASE WHEN ss.over_course_num_ > 0 AND (ss.sub_course_num_ > 0 OR ss.no_schedule_num_ > 0) AND ss.lately_year_course_consumer_ &lt;= 0 AND ss.no_schedule_num_ &lt;= 0 THEN 1 ELSE NULL END) 'sleepStudentNoNotSchedule',
 		COUNT(CASE WHEN ss.last_visit_status_ = 'NORMAL' OR (ss.last_visit_status_ IS NULL AND (ss.no_schedule_num_ > 0 OR ss.sub_course_num_ > 0) AND ss.lately_year_course_consumer_ > 0) THEN 1 ELSE NULL END) 'normalStudentNum',
 		COUNT(CASE WHEN ss.last_visit_status_ = 'NORMAL' OR (ss.last_visit_status_ IS NULL AND (ss.no_schedule_num_ > 0 OR ss.sub_course_num_ > 0) AND ss.lately_year_course_consumer_ > 0) THEN 1 ELSE NULL END) 'normalStudentNum',