Pārlūkot izejas kodu

学员考勤导出修改,后台教师列表查询优化,以及bug修改

zouxuan 4 gadi atpakaļ
vecāks
revīzija
324ea219e0

+ 7 - 9
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -75,13 +75,6 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      */
     String queryNameById(@Param("userId") Integer userId);
 
-    /**
-     * 查询分部所有老师
-     *
-     * @param userIds
-     * @return
-     */
-    List<TeacherBasicDto> findTeachers(@Param("userIds") List<Integer> userIds);
 
     /**
      * @param userIds:
@@ -267,8 +260,6 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      */
     Map<String, Integer> queryOrganTeacherNum(@Param("organId") String organId);
 
-    List<Teacher> findByFlowOrganRange(Map<String, Object> params);
-
     /**
      * @param teacherIds: 教师编号里列表
      * @return java.util.List<com.ym.mec.biz.dal.entity.Teacher>
@@ -478,4 +469,11 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
     List<TeacherDefaultSalaryDto> queryTeacherDefaultSalary(@Param("organIdList") String organIdList);
 
     BasicUserDto findUserByPhone(String phone);
+
+    /**
+     * 获取流动分部老师
+     * @param organId
+     * @return
+     */
+    List<TeacherBasicDto> findByFlowOrganRangeTeachers(String organId);
 }

+ 0 - 11
mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherQueryInfo.java

@@ -13,9 +13,6 @@ public class TeacherQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "机构编号")
     private String organId;
 
-    @ApiModelProperty(value = "教师编号")
-    private List<Integer> teacherId;
-
     @ApiModelProperty(value = "教师工作性质")
     private String jobNature;
 
@@ -39,14 +36,6 @@ public class TeacherQueryInfo extends QueryInfo {
         this.tenantId = tenantId;
     }
 
-    public List<Integer> getTeacherId() {
-        return teacherId;
-    }
-
-    public void setTeacherId(List<Integer> teacherId) {
-        this.teacherId = teacherId;
-    }
-
     public Integer getSubjectId() {
         return subjectId;
     }

+ 1 - 26
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -236,17 +236,7 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 
     @Override
     public List<TeacherBasicDto> findTeachers(String organId) {
-		List<Teacher> teacherList = teacherDao.findByFlowOrganRange(null);
-		if(StringUtils.isNotEmpty(organId)){
-			Set<String> list = new HashSet<>(Arrays.asList(organId.split(",")));
-			teacherList = teacherList.stream().
-					filter(teacher -> !Collections.disjoint(new ArrayList<>(Arrays.asList(teacher.getFlowOrganRange().split(","))),list)).collect(Collectors.toList());
-		}
-		List<Integer> userIds = teacherList.stream().map(e -> e.getId()).collect(Collectors.toList());
-		if(userIds != null && userIds.size() > 0){
-			return teacherDao.findTeachers(userIds);
-		}
-		return new ArrayList<>();
+		return teacherDao.findByFlowOrganRangeTeachers(organId);
     }
 
 	@Override
@@ -422,21 +412,6 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	public PageInfo<Teacher> queryPageDetail(TeacherQueryInfo queryInfo) {
 		Map<String, Object> params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
-		List<Teacher> teacherList = teacherDao.findByFlowOrganRange(params);
-		if(teacherList == null || teacherList.size() < 1){
-			return new PageInfo<>();
-		}
-		if(StringUtils.isNotEmpty(queryInfo.getOrganId())){
-			Set<String> list = new HashSet<>(Arrays.asList(queryInfo.getOrganId().split(",")));
-			teacherList = teacherList.stream().
-					filter(teacher -> !Collections.disjoint(new ArrayList<>(Arrays.asList(teacher.getFlowOrganRange().split(","))),list)).collect(Collectors.toList());
-		}
-		List<Integer> collect = teacherList.stream().map(e -> e.getId()).collect(Collectors.toList());
-		if(collect == null || collect.size() < 1){
-			return new PageInfo<>();
-		}
-		queryInfo.setTeacherId(collect);
-
 		PageInfo<Teacher> pageInfo = queryPage(queryInfo);
 		List<Teacher> rows = pageInfo.getRows();
 		if(rows != null && rows.size() > 0){

+ 8 - 6
mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml

@@ -558,14 +558,15 @@
     </sql>
     <select id="exportStudentAttendancesQueryPage"
             resultMap="ExportStudentAttendanceDtoMap">
-        SELECT o.name_ organ_name_,o.id_ organ_id_,cs.music_group_id_,mg.name_ music_group_name_,su.username_,cssp.user_id_,
-        cs.name_ course_schedule_name_,cs.id_ course_schedule_id_,
-        cs.class_date_,cs.start_class_time_,cs.end_class_time_,su2.real_name_ guide_teacher_name_,st.teacher_id_ guide_teacher_id_
-        ,su1.real_name_ educational_teacher_name_,mg.educational_teacher_id_,cs.group_type_,
-        CASE WHEN sa.id_ IS NULL THEN 'TRUANT' ELSE sa.status_ END attendance_status_
+        SELECT MAX(o.name_) organ_name_,MAX(o.id_) organ_id_,MAX(cs.music_group_id_) music_group_id_,MAX(mg.name_) music_group_name_,MAX(su.username_) username_,MAX(cssp.user_id_) user_id_,
+        MAX(cs.name_) course_schedule_name_,MAX(cs.id_) course_schedule_id_,
+        MAX(cs.class_date_) class_date_,MAX(cs.start_class_time_) start_class_time_,MAX(cs.end_class_time_) end_class_time_,
+        MAX(su2.real_name_) guide_teacher_name_,MAX(st.teacher_id_) guide_teacher_id_
+        ,MAX(su1.real_name_) educational_teacher_name_,MAX(mg.educational_teacher_id_) educational_teacher_id_,MAX(cs.group_type_) group_type_,
+        CASE WHEN MAX(sa.id_) IS NULL THEN 'TRUANT' ELSE MAX(sa.status_) END attendance_status_
         FROM course_schedule_student_payment cssp
         LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
-        LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_
+        LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND sa.user_id_ = cssp.user_id_
         <if test="groupType == 'MUSIC'">
             LEFT JOIN music_group mg ON mg.id_ = cssp.music_group_id_
         </if>
@@ -581,6 +582,7 @@
         LEFT JOIN sys_user su ON su.id_ = cssp.user_id_
         LEFT JOIN sys_user su2 ON su2.id_ = st.teacher_id_
         <include refid="exportStudentAttendancesQueryPageSql"/>
+        GROUP BY cssp.id_
         ORDER BY cssp.music_group_id_ DESC,cssp.id_ DESC
         <include refid="global.limit"/>
     </select>

+ 37 - 47
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -279,9 +279,9 @@
     <select id="queryPage" resultMap="Teacher" parameterType="map">
         SELECT t.id_,su.real_name_,su.lock_flag_,t.subject_id_,su.phone_,t.organ_id_ teacher_organ_id_,t.organ_id_,t.is_support_extra_practice_lesson_,
         t.job_nature_,t.is_probation_period_,t.memo_,GROUP_CONCAT(s.name_) subject_name_,su.del_flag_
-        FROM teacher t LEFT JOIN sys_user su ON t.id_ = su.id_
+        FROM teacher t
+        LEFT JOIN sys_user su ON t.id_ = su.id_
         LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
-        WHERE su.del_flag_ = 0
         <include refid="queryPageMap"/>
         GROUP BY t.id_
         ORDER BY t.id_ DESC
@@ -291,26 +291,40 @@
     <select id="queryCount" resultType="int">
         SELECT COUNT(DISTINCT t.id_)
         FROM teacher t LEFT JOIN sys_user su ON t.id_ = su.id_
-        WHERE su.del_flag_ = 0
         <include refid="queryPageMap"/>
     </select>
 
     <sql id="queryPageMap">
-        <if test="lockFlag != null">
-            AND su.lock_flag_ = #{lockFlag}
-        </if>
-        <if test="teacherId != null">
-            AND t.id_ IN
-            <foreach collection="teacherId" separator="," open="(" close=")" item="item">
-                #{item}
-            </foreach>
-        </if>
-        <if test="search != null">
-            AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%') OR t.id_ = #{search})
-        </if>
-        <if test="isSupportExtraPracticeLesson != null">
-            AND is_support_extra_practice_lesson_ = #{isSupportExtraPracticeLesson}
-        </if>
+        <where>
+            su.del_flag_ = 0
+            <if test="organId != null and organId != ''">
+                AND (INTE_ARRAY(#{organId},t.flow_organ_range_) OR FIND_IN_SET(t.organ_id_,#{organId}))
+            </if>
+            <if test="subjectId != null">
+                AND FIND_IN_SET(#{subjectId},t.subject_id_)
+            </if>
+            <if test="jobNature != null">
+                AND t.job_nature_ = #{jobNature}
+            </if>
+            <if test="isProbationPeriod != null">
+                AND t.is_probation_period_ = #{isProbationPeriod}
+            </if>
+            <if test="isSupportExtraPracticeLesson != null">
+                AND t.is_support_extra_practice_lesson_ = #{isSupportExtraPracticeLesson}
+            </if>
+            <if test="lockFlag != null">
+                AND su.lock_flag_ = #{lockFlag}
+            </if>
+            <if test="teacherId != null">
+                AND t.id_ IN
+                <foreach collection="teacherId" separator="," open="(" close=")" item="item">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="search != null">
+                AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%') OR t.id_ = #{search})
+            </if>
+        </where>
     </sql>
 
     <!-- 根据证件号查询老师 -->
@@ -361,18 +375,6 @@
         <result property="subjectNames" column="subject_names_"/>
         <result property="introduction" column="introduction_"/>
     </resultMap>
-    <select id="findTeachers" resultMap="TeacherBasicDto">
-        SELECT su.id_,su.username_,su.real_name_,t.organ_id_ FROM sys_user su
-        LEFT JOIN teacher t ON su.id_=t.id_
-        <where>
-            <if test="userIds != null">
-                su.id_ IN
-                <foreach collection="userIds" separator="," open="(" close=")" item="item">
-                    #{item}
-                </foreach>
-            </if>
-        </where>
-    </select>
 
     <select id="findSimpleTeachers" resultType="com.ym.mec.biz.dal.dto.SimpleUserDto">
         SELECT su.id_ userId,su.real_name_ userName FROM sys_user su
@@ -759,23 +761,10 @@
                 and FIND_IN_SET(organ_id_,#{organId})
             </if>
     </select>
-    <select id="findByFlowOrganRange" resultMap="Teacher">
-        SELECT id_,CONCAT(IF(flow_organ_range_ IS NULL OR flow_organ_range_ = '',0,flow_organ_range_),",",
-        IF(organ_id_ IS NULL OR organ_id_ = '',0,organ_id_)) flow_organ_range_ FROM teacher t
-        <where>
-            <if test="subjectId != null">
-                AND FIND_IN_SET(#{subjectId},t.subject_id_)
-            </if>
-            <if test="jobNature != null">
-                AND t.job_nature_ = #{jobNature}
-            </if>
-            <if test="isProbationPeriod != null">
-                AND t.is_probation_period_ = #{isProbationPeriod}
-            </if>
-            <if test="isSupportExtraPracticeLesson != null">
-                AND t.is_support_extra_practice_lesson_ = #{isSupportExtraPracticeLesson}
-            </if>
-        </where>
+    <select id="findByFlowOrganRangeTeachers" resultMap="TeacherBasicDto">
+        SELECT su.id_,su.username_,su.real_name_,t.organ_id_ FROM teacher t
+        LEFT JOIN sys_user su ON t.id_ = su.id_
+        WHERE su.del_flag_ = 0 AND (INTE_ARRAY(#{organId},t.flow_organ_range_) OR FIND_IN_SET(t.organ_id_,#{organId}))
     </select>
 
     <select id="findByTeacherIds" resultMap="Teacher">
@@ -1212,4 +1201,5 @@
         gender_,user_type_
         FROM sys_user WHERE phone_ = #{phone}
     </select>
+
 </mapper>