소스 검색

学员小课统计

zouxuan 3 년 전
부모
커밋
d3b242828f

+ 15 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentStatisticsServiceImpl.java

@@ -21,6 +21,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 import java.util.stream.Collectors;
 
 @Service
@@ -39,7 +42,6 @@ public class StudentStatisticsServiceImpl extends BaseServiceImpl<Integer, Stude
 	}
 
 	@Override
-	@Transactional(rollbackFor = Exception.class)
 	public void updateStudentStatistics() {
 		//获取声部班老师
 		studentBasicInfoDao.updateSubjectTeacher();
@@ -61,11 +63,18 @@ public class StudentStatisticsServiceImpl extends BaseServiceImpl<Integer, Stude
 		statisticsList.addAll(studentStatisticsDao.queryStatisticsNormalGroupNum());
 		statisticsList.removeAll(Collections.singleton(null));
 		if(CollectionUtils.isNotEmpty(statisticsList)){
-			studentStatisticsDao.clean();
-			List<List<StudentStatistics>> partition = Lists.partition(statisticsList, 1000);
-			for (List<StudentStatistics> studentStatistics : partition) {
-				studentStatisticsDao.batchUpdate(studentStatistics);
-			}
+			ExecutorService executor = Executors.newCachedThreadPool();
+			CompletableFuture.runAsync(()->{
+				try {
+					studentStatisticsDao.clean();
+					List<List<StudentStatistics>> partition = Lists.partition(statisticsList, 1000);
+					for (List<StudentStatistics> studentStatistics : partition) {
+						studentStatisticsDao.batchUpdate(studentStatistics);
+					}
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+			},executor);
 		}
 	}
 

+ 11 - 1
mec-biz/src/main/resources/config/mybatis/StudentBasicInfoMapper.xml

@@ -101,6 +101,16 @@
 		SELECT MAX(id_) FROM student_basic_info
 	</select>
 	<select id="updateSubjectTeacher" resultType="int">
-		SELECT updateSubjectTeacher()
+		UPDATE (
+		SELECT cm.user_id_,cgtm.user_id_ teacher_id_ FROM class_group_teacher_mapper cgtm
+		LEFT JOIN (SELECT cgsm.user_id_,MAX(cgtm.id_) id_ FROM class_group cg
+		LEFT JOIN class_group_student_mapper cgsm ON cgsm.class_group_id_ = cg.id_
+		LEFT JOIN class_group_teacher_mapper cgtm ON cgtm.class_group_id_ = cg.id_
+		WHERE cg.type_ = 'NORMAL' AND cgsm.status_ = 'NORMAL' AND cg.del_flag_ = 0 AND cgtm.teacher_role_ = 'BISHOP'
+		GROUP BY cgsm.user_id_) cm ON cm.id_ = cgtm.id_
+		) st
+		LEFT JOIN student_basic_info sbi ON st.user_id_ = sbi.user_id_
+			LEFT JOIN sys_user su ON su.id_ = st.teacher_id_
+			SET sbi.subject_teacher_id_ = st.teacher_id_,sbi.subject_teacher_name_ = su.real_name_;
 	</select>
 </mapper>