zouxuan 2 år sedan
förälder
incheckning
94e7a06045

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

@@ -1,10 +1,12 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.StudentTeacherMapperDto;
 import com.ym.mec.biz.dal.entity.StudentTeacherMapper;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Set;
 
 public interface StudentTeacherMapperDao extends BaseDAO<Integer, StudentTeacherMapper> {
 
@@ -30,4 +32,6 @@ public interface StudentTeacherMapperDao extends BaseDAO<Integer, StudentTeacher
     void delAll();
 
     void create();
+
+    List<StudentTeacherMapperDto> queryDtoByStudent(@Param("userIds") Set<Integer> userIds);
 }

+ 40 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageListDto.java

@@ -123,6 +123,46 @@ public class StudentManageListDto {
 
 	private Boolean repairFlag;
 
+    private String normalTeacherName;
+
+    private String mixTeacherName;
+
+    private String vipTeacherName;
+
+    private String practiceTeacherName;
+
+    public String getNormalTeacherName() {
+        return normalTeacherName;
+    }
+
+    public void setNormalTeacherName(String normalTeacherName) {
+        this.normalTeacherName = normalTeacherName;
+    }
+
+    public String getMixTeacherName() {
+        return mixTeacherName;
+    }
+
+    public void setMixTeacherName(String mixTeacherName) {
+        this.mixTeacherName = mixTeacherName;
+    }
+
+    public String getVipTeacherName() {
+        return vipTeacherName;
+    }
+
+    public void setVipTeacherName(String vipTeacherName) {
+        this.vipTeacherName = vipTeacherName;
+    }
+
+    public String getPracticeTeacherName() {
+        return practiceTeacherName;
+    }
+
+    public void setPracticeTeacherName(String practiceTeacherName) {
+        this.practiceTeacherName = practiceTeacherName;
+    }
+
     public Boolean getRepairFlag() {
         return repairFlag;
     }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentTeacherMapperDto.java

@@ -0,0 +1,20 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.StudentTeacherMapper;
+
+/**
+ * 对应数据库表(student_teacher_mapper):
+ */
+public class StudentTeacherMapperDto extends StudentTeacherMapper {
+
+	private String teacherName;
+
+	public String getTeacherName() {
+		return teacherName;
+	}
+
+	public void setTeacherName(String teacherName) {
+		this.teacherName = teacherName;
+	}
+
+}

+ 69 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -104,6 +104,10 @@ public class StudentManageServiceImpl implements StudentManageService {
     private SysEmployeePositionService employeePositionService;
     @Autowired
     private TenantInfoService tenantInfoService;
+    @Autowired
+    private OrganizationDao organizationDao;
+    @Autowired
+    private StudentTeacherMapperDao studentTeacherMapperDao;
 
     @Override
     public PageInfo<StudentManageListDto> findStudentsByOrganId(StudentManageQueryInfo queryInfo) {
@@ -127,6 +131,71 @@ public class StudentManageServiceImpl implements StudentManageService {
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
             dataList = studentManageDao.findStudentsByOrganId(params);
+            Set<Integer> userIds = dataList.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
+            List<Integer> organIds = dataList.stream().map(e -> e.getOrganId()).distinct().collect(Collectors.toList());
+            organIds.removeAll(Collections.singleton(null));
+            List<SysUserCashAccount> accounts = sysUserCashAccountDao.findByUserIds(userIds);
+            Map<Integer, Organization> organMap = null;
+            if(!CollectionUtils.isEmpty(organIds)){
+                List<Organization> organs = organizationDao.findOrgans(organIds);
+                organMap = organs.stream().collect(Collectors.groupingBy(Organization::getId, Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
+            }
+            Map<Integer, SysUserCashAccount> accountMap = null;
+            if(!CollectionUtils.isEmpty(accounts)){
+                accountMap = accounts.stream().collect(Collectors.groupingBy(SysUserCashAccount::getUserId, Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
+            }
+            List<String> subjectIds = dataList.stream().map(e -> e.getSubjectIdList()).distinct().collect(Collectors.toList());
+            subjectIds.removeAll(Collections.singleton(null));
+            Map<String, String> subjectMap = new HashMap<>();
+            if(!CollectionUtils.isEmpty(subjectIds)){
+                subjectMap = sysConfigService.getMap("subject", "id_", "name_", subjectIds, queryInfo.getTenantId(), String.class, String.class);
+            }
+            List<Integer> cooIds = dataList.stream().map(e -> e.getCooperationOrganId()).distinct().collect(Collectors.toList());
+            cooIds.removeAll(Collections.singleton(null));
+            Map<Integer, String> cooMap = new HashMap<>();
+            if(!CollectionUtils.isEmpty(cooIds)) {
+                cooMap = sysConfigService.getMap("cooperation_organ", "id_", "name_", cooIds, queryInfo.getTenantId(), Integer.class, String.class);
+            }
+            //获取学员关联的老师列表
+            List<StudentTeacherMapperDto> mappers = studentTeacherMapperDao.queryDtoByStudent(userIds);
+            Map<Integer, List<StudentTeacherMapperDto>> mappersMap = null;
+            if(!CollectionUtils.isEmpty(mappers)){
+                mappersMap = mappers.stream().collect(Collectors.groupingBy(StudentTeacherMapperDto::getStudentId));
+            }
+            for (StudentManageListDto dto : dataList) {
+                if(!CollectionUtils.isEmpty(organMap)){
+                    Organization organization = organMap.get(dto.getOrganId());
+                    if(Objects.nonNull(organization)){
+                        dto.setOrganName(organization.getName());
+                        dto.setGradeType(organization.getGradeType());
+                    }
+                }
+                if(!CollectionUtils.isEmpty(organMap)){
+                    SysUserCashAccount account = accountMap.get(dto.getUserId());
+                    if(Objects.nonNull(account)){
+                        dto.setCourseBalance(account.getCourseBalance());
+                        dto.setBalance(account.getBalance());
+                    }
+                }
+                dto.setSubjectName(subjectMap.get(dto.getSubjectIdList()));
+                dto.setCooperationOrganName(cooMap.get(dto.getCooperationOrganId()));
+                List<StudentTeacherMapperDto> mapperList = mappersMap.get(dto.getUserId());
+                if(!CollectionUtils.isEmpty(mapperList)){
+                    Map<String, List<StudentTeacherMapperDto>> collect = mapperList.stream().collect(Collectors.groupingBy(StudentTeacherMapperDto::getTeacherType));
+                    for (String s : collect.keySet()) {
+                        String teacherName = collect.get(s).stream().map(e -> e.getTeacherName()).collect(Collectors.joining(","));
+                        if("VIP".equals(s)){
+                            dto.setVipTeacherName(teacherName);
+                        }else if("PRACTICE".equals(s)){
+                            dto.setPracticeTeacherName(teacherName);
+                        }else if("NORMAL".equals(s)){
+                            dto.setNormalTeacherName(teacherName);
+                        }else {
+                            dto.setMixTeacherName(teacherName);
+                        }
+                    }
+                }
+            }
         }
         if (dataList == null) {
             dataList = new ArrayList<>();

+ 5 - 9
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -146,21 +146,16 @@
     </update>
 
     <select id="findStudentsByOrganId" resultMap="studentManageListDto">
-        SELECT o.`name_` organ_name_,o.grade_type_,s.`user_id_`,s.repair_flag_ ,su.`username_` ,su.`phone_` parents_phone_,s.ext_subject_ids_,
+        SELECT s.`user_id_`,s.repair_flag_ ,su.`username_` ,su.`phone_` parents_phone_,s.ext_subject_ids_,
         sut.name_ real_name_,su.`gender_` , su.organ_id_,su.avatar_,CASE s.service_tag_ WHEN 2 THEN 0 ELSE s.service_tag_ END service_tag_ ,s.`operating_tag_` ,
-        s.care_package_, s.come_on_package_, suca.`course_balance_` ,suca.balance_,
-		sub.`name_` music_group_subject_ ,su.birthdate_,s.subject_id_list_,s.current_grade_num_,s.current_class_,s.member_rank_setting_id_,
+        s.care_package_, s.come_on_package_,su.birthdate_,s.subject_id_list_,s.current_grade_num_,s.current_class_,s.member_rank_setting_id_,
         CASE WHEN su.password_ IS NULL THEN FALSE ELSE TRUE END isActive_,s.is_new_user_,
         s.membership_end_time_,CASE WHEN sut.user_id_ IS NULL THEN 0 ELSE 1 END is_signed_contract_,
-        s.cooperation_organ_id_,co.name_ cooperation_organ_name_,s.activity_course_detail_,s.experience_membership_end_time_,
+        s.cooperation_organ_id_,s.activity_course_detail_,s.experience_membership_end_time_,
         DATEDIFF(s.experience_membership_end_time_,NOW()) experience_membership_day_,DATEDIFF(s.membership_end_time_,NOW()) membership_day_,
         smcr.user_id_ record_user_id_
 		FROM `student` s LEFT JOIN `sys_user` su ON s.`user_id_` = su.`id_`
-		LEFT JOIN `organization` o ON o.`id_` = su.`organ_id_`
-		LEFT JOIN `sys_user_cash_account` suca ON suca.`user_id_` = s.`user_id_`
-		LEFT JOIN `subject` sub ON sub.id_ = s.`subject_id_list_`
 		LEFT JOIN sys_user_tsign sut ON sut.user_id_ = s.user_id_
-        LEFT JOIN cooperation_organ co ON s.cooperation_organ_id_=co.id_
         LEFT JOIN (SELECT DISTINCT user_id_ FROM sys_music_compare_record) smcr ON smcr.user_id_ = s.user_id_
         <if test="hasMember != null">
             <if test="hasMember == 2">
@@ -246,7 +241,8 @@
 
     <select id="countStudentByOrganId" resultType="java.lang.Integer">
         SELECT COUNT(DISTINCT su.id_)
-        FROM `student` s LEFT JOIN `sys_user` su on s.`user_id_` = su.`id_`
+        FROM `student` s
+        LEFT JOIN `sys_user` su on s.`user_id_` = su.`id_`
         <if test="hasMember != null">
             <if test="hasMember == 2">
                 LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = s.user_id_

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/StudentTeacherMapperMapper.xml

@@ -38,4 +38,15 @@
 			AND teacher_type_ = #{teacherType}
 		</if>
 	</select>
+	<resultMap type="com.ym.mec.biz.dal.dto.StudentTeacherMapperDto" id="StudentTeacherMapperDto" extends="StudentTeacherMapper">
+		<result column="teacher_name_" property="teacherName" />
+	</resultMap>
+	<select id="queryDtoByStudent" resultMap="StudentTeacherMapperDto">
+		select stm.*,su.real_name_ teacher_name_ from student_teacher_mapper stm
+		LEFT JOIN sys_user su ON su.id_ = stm.teacher_id_
+		where stm.student_id_ IN
+		<foreach collection="userIds" separator="," open="(" close=")" item="id">
+			#{id}
+		</foreach>
+	</select>
 </mapper>