zouxuan 4 年之前
父节点
当前提交
1f7feab585

+ 0 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -259,8 +259,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>

+ 92 - 103
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -55,7 +55,7 @@
         <result column="subject_name_" property="splitSubjectName"/>
         <result column="id_card_no_" property="idCardNo"/>
     </resultMap>
-    
+
     <resultMap type="com.ym.mec.biz.dal.dto.TeacherDefaultSalaryDto" id="TeacherDefaultSalaryDto">
         <result column="id_" property="userId"/>
         <result column="real_name_" property="realName"/>
@@ -111,7 +111,7 @@
         FROM teacher
         ORDER BY id_
     </select>
-    
+
     <select id="getLocked" resultMap="Teacher">
         SELECT * FROM teacher where id_ = #{id} for update
     </select>
@@ -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
@@ -389,10 +391,10 @@
 
     <select id="getUsersSimpleInfo" resultType="com.ym.mec.biz.dal.dto.SimpleUserDto">
         SELECT
-            su.id_ userId,
-            su.username_ nickName,
-            su.real_name_ userName,
-            su.phone_ phone
+        su.id_ userId,
+        su.username_ nickName,
+        su.real_name_ userName,
+        su.phone_ phone
         FROM sys_user su
         <where>
             <if test="userIds != null">
@@ -755,27 +757,14 @@
         select count(*) total,sum(case when job_nature_ = 'PART_TIME' then 1 else 0 end) part_time_num_,sum(case when
         job_nature_ = 'FULL_TIME' then 1 else 0 end) full_time_num_ from teacher
         where demission_date_ is null and organ_id_ not in (36,38)
-            <if test="organId != null">
-                and FIND_IN_SET(organ_id_,#{organId})
-            </if>
+        <if test="organId != null">
+            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">
@@ -1075,17 +1064,17 @@
         WHERE csts.group_type_ = 'MUSIC' AND (mg.educational_teacher_id_ = #{teacherId} OR mg.director_user_id_ = #{teacherId} OR mg.team_teacher_id_ = #{teacherId})
         GROUP BY csts.user_id_
         UNION ALL
-        SELECT csts.user_id_ FROM vip_group vg 
+        SELECT csts.user_id_ FROM vip_group vg
         LEFT JOIN course_schedule_teacher_salary csts ON vg.id_ = csts.music_group_id_
         WHERE vg.educational_teacher_id_ = #{teacherId} AND csts.group_type_ = 'VIP' AND vg.group_status_ IN (2,3,4)
         GROUP BY csts.user_id_
         UNION ALL
-        SELECT csts.user_id_ FROM courses_group cg 
+        SELECT csts.user_id_ FROM courses_group cg
         LEFT JOIN course_schedule_teacher_salary csts ON cg.id_ = csts.music_group_id_
         WHERE cg.educational_teacher_id_ = #{teacherId} AND csts.group_type_ = 'COMM'
         GROUP BY csts.user_id_
         UNION ALL
-        SELECT csts.user_id_ FROM practice_group pg 
+        SELECT csts.user_id_ FROM practice_group pg
         LEFT JOIN course_schedule_teacher_salary csts ON pg.id_ = csts.music_group_id_
         WHERE pg.educational_teacher_id_ = #{teacherId} AND csts.group_type_ = 'PRACTICE'
         GROUP BY csts.user_id_
@@ -1096,17 +1085,17 @@
         AND (mg.educational_teacher_id_ = #{teacherId} OR mg.director_user_id_ = #{teacherId} OR mg.team_teacher_id_ = #{teacherId})
         GROUP BY cgtm.user_id_
         UNION ALL
-        SELECT cgtm.user_id_ FROM vip_group vg 
+        SELECT cgtm.user_id_ FROM vip_group vg
         LEFT JOIN class_group_teacher_mapper cgtm ON vg.id_ = cgtm.music_group_id_
         WHERE vg.educational_teacher_id_ = #{teacherId} AND cgtm.group_type_ = 'VIP' AND vg.group_status_ IN (2,3,4)
         GROUP BY cgtm.user_id_
         UNION ALL
-        SELECT cgtm.user_id_ FROM courses_group cg 
+        SELECT cgtm.user_id_ FROM courses_group cg
         LEFT JOIN class_group_teacher_mapper cgtm ON cg.id_ = cgtm.music_group_id_
         WHERE cg.educational_teacher_id_ = #{teacherId} AND cgtm.group_type_ = 'COMM'
         GROUP BY cgtm.user_id_
         UNION ALL
-        SELECT cgtm.user_id_ FROM practice_group pg 
+        SELECT cgtm.user_id_ FROM practice_group pg
         LEFT JOIN class_group_teacher_mapper cgtm ON pg.id_ = cgtm.music_group_id_
         WHERE pg.educational_teacher_id_ = #{teacherId} AND cgtm.group_type_ = 'PRACTICE'
         GROUP BY cgtm.user_id_
@@ -1162,50 +1151,50 @@
         SELECT COUNT(s.user_id_) FROM student s
         WHERE s.teacher_id_ = #{search}
     </select>
-    
+
     <select id="queryTeacherDefaultSalary" resultMap="TeacherDefaultSalaryDto">
-    	SELECT t.`id_` ,su.`real_name_` ,o.`name_` ,
-		case when t.`job_nature_` = 'PART_TIME' then '兼职' when  t.`job_nature_` = 'FULL_TIME' then '全职' else '临时工' end job_nature,
-		case when t.`demission_date_` IS NULL then '在职' else '离职' end demisson_status,
-		case when su.`lock_flag_` = 1 then '冻结' WHEN su.`lock_flag_` = 9 then '锁定' else '正常' end status_,
-		max(case when gc.`name_` = '1V1' then gs.`offline_classes_salary_` else 0 end) vip1,
-		max(case when gc.`name_` = '1V2' then gs.`offline_classes_salary_` else 0 end) vip2,
-		max(case when gc.`name_` = '1V3' then gs.`offline_classes_salary_` else 0 end) vip3,
-		max(case when gc.`name_` = '1V4' then gs.`offline_classes_salary_` else 0 end) vip4,
-		max(case when gc.`name_` = '1V5' then gs.`offline_classes_salary_` else 0 end) vip5,
-		max(case when gc.`name_` = '1V6' then gs.`offline_classes_salary_` else 0 end) vip6,
-		max(case when gc.`name_` = '1V7' then gs.`offline_classes_salary_` else 0 end) vip7,
-		max(pgs.main_teacher_salary_) practice,
-		MAX(case when mgs.course_schedule_type_ = 'SINGLE' then mgs.main_teacher_30min_salary_ ELSE 0 END) single2,
-		MAX(case when mgs.course_schedule_type_ = 'MIX' then mgs.main_teacher_30min_salary_ ELSE 0 END) mix2,
-		MAX(case when mgs.course_schedule_type_ = 'COMPREHENSIVE' then mgs.main_teacher_30min_salary_ ELSE 0 END) comprehensive2,
-		MAX(case when mgs.course_schedule_type_ = 'TRAINING_SINGLE' then mgs.main_teacher_30min_salary_ ELSE 0 END) training_single2,
-		MAX(case when mgs.course_schedule_type_ = 'TRAINING_MIX' then mgs.main_teacher_30min_salary_ ELSE 0 END) training_mix2,
-		MAX(case when mgs.course_schedule_type_ = 'HIGH' then mgs.main_teacher_30min_salary_ ELSE 0 END) high2,
-		MAX(case when mgs.course_schedule_type_ = 'CLASSROOM' then mgs.main_teacher_30min_salary_ ELSE 0 END) classroom2,
-		MAX(case when mgs.course_schedule_type_ = 'SINGLE' then mgs.main_teacher_90min_salary_ ELSE 0 END) single,
-		MAX(case when mgs.course_schedule_type_ = 'MIX' then mgs.main_teacher_90min_salary_ ELSE 0 END) mix,
-		MAX(case when mgs.course_schedule_type_ = 'COMPREHENSIVE' then mgs.main_teacher_90min_salary_ ELSE 0 END) comprehensive,
-		MAX(case when mgs.course_schedule_type_ = 'TRAINING_SINGLE' then mgs.main_teacher_90min_salary_ ELSE 0 END) training_single,
-		MAX(case when mgs.course_schedule_type_ = 'TRAINING_MIX' then mgs.main_teacher_90min_salary_ ELSE 0 END) training_mix,
-		MAX(case when mgs.course_schedule_type_ = 'HIGH' then mgs.main_teacher_90min_salary_ ELSE 0 END) high,
-		MAX(case when mgs.course_schedule_type_ = 'CLASSROOM' then mgs.main_teacher_90min_salary_ ELSE 0 END) classroom,
-		MAX(case when mgs.course_schedule_type_ = 'HIGH_ONLINE' then CONVERT(JSON_EXTRACT(mgs.salary_rule_json_,'$."3"'),DECIMAL) END) high_online3,
-		MAX(case when mgs.course_schedule_type_ = 'HIGH_ONLINE' then CONVERT(JSON_EXTRACT(mgs.salary_rule_json_,'$."4"'),DECIMAL) END) high_online4,
-		MAX(case when mgs.course_schedule_type_ = 'HIGH_ONLINE' then CONVERT(JSON_EXTRACT(mgs.salary_rule_json_,'$."5"'),DECIMAL) END) high_online5,
-		MAX(case when mgs.course_schedule_type_ = 'MUSIC_NETWORK' then CONVERT(JSON_EXTRACT(mgs.salary_rule_json_,'$."1"'),DECIMAL) END) music_network1
-		FROM `teacher` t LEFT JOIN `sys_user` su on t.`id_` = su.`id_` 
-		LEFT JOIN `organization` o on o.`id_` = t.`organ_id_` 
-		LEFT JOIN `teacher_default_vip_group_salary` gs on gs.`user_id_` = t.`id_`
-		LEFT JOIN `vip_group_category` gc on gc.`id_` = gs.`vip_group_category_id_`
-		LEFT JOIN teacher_default_practice_group_salary pgs ON pgs.user_id_ = t.id_
-		LEFT JOIN teacher_default_music_group_salary mgs ON mgs.user_id_ = t.id_
-		<where>
-			<if test="organIdList != null">
+        SELECT t.`id_` ,su.`real_name_` ,o.`name_` ,
+        case when t.`job_nature_` = 'PART_TIME' then '兼职' when  t.`job_nature_` = 'FULL_TIME' then '全职' else '临时工' end job_nature,
+        case when t.`demission_date_` IS NULL then '在职' else '离职' end demisson_status,
+        case when su.`lock_flag_` = 1 then '冻结' WHEN su.`lock_flag_` = 9 then '锁定' else '正常' end status_,
+        max(case when gc.`name_` = '1V1' then gs.`offline_classes_salary_` else 0 end) vip1,
+        max(case when gc.`name_` = '1V2' then gs.`offline_classes_salary_` else 0 end) vip2,
+        max(case when gc.`name_` = '1V3' then gs.`offline_classes_salary_` else 0 end) vip3,
+        max(case when gc.`name_` = '1V4' then gs.`offline_classes_salary_` else 0 end) vip4,
+        max(case when gc.`name_` = '1V5' then gs.`offline_classes_salary_` else 0 end) vip5,
+        max(case when gc.`name_` = '1V6' then gs.`offline_classes_salary_` else 0 end) vip6,
+        max(case when gc.`name_` = '1V7' then gs.`offline_classes_salary_` else 0 end) vip7,
+        max(pgs.main_teacher_salary_) practice,
+        MAX(case when mgs.course_schedule_type_ = 'SINGLE' then mgs.main_teacher_30min_salary_ ELSE 0 END) single2,
+        MAX(case when mgs.course_schedule_type_ = 'MIX' then mgs.main_teacher_30min_salary_ ELSE 0 END) mix2,
+        MAX(case when mgs.course_schedule_type_ = 'COMPREHENSIVE' then mgs.main_teacher_30min_salary_ ELSE 0 END) comprehensive2,
+        MAX(case when mgs.course_schedule_type_ = 'TRAINING_SINGLE' then mgs.main_teacher_30min_salary_ ELSE 0 END) training_single2,
+        MAX(case when mgs.course_schedule_type_ = 'TRAINING_MIX' then mgs.main_teacher_30min_salary_ ELSE 0 END) training_mix2,
+        MAX(case when mgs.course_schedule_type_ = 'HIGH' then mgs.main_teacher_30min_salary_ ELSE 0 END) high2,
+        MAX(case when mgs.course_schedule_type_ = 'CLASSROOM' then mgs.main_teacher_30min_salary_ ELSE 0 END) classroom2,
+        MAX(case when mgs.course_schedule_type_ = 'SINGLE' then mgs.main_teacher_90min_salary_ ELSE 0 END) single,
+        MAX(case when mgs.course_schedule_type_ = 'MIX' then mgs.main_teacher_90min_salary_ ELSE 0 END) mix,
+        MAX(case when mgs.course_schedule_type_ = 'COMPREHENSIVE' then mgs.main_teacher_90min_salary_ ELSE 0 END) comprehensive,
+        MAX(case when mgs.course_schedule_type_ = 'TRAINING_SINGLE' then mgs.main_teacher_90min_salary_ ELSE 0 END) training_single,
+        MAX(case when mgs.course_schedule_type_ = 'TRAINING_MIX' then mgs.main_teacher_90min_salary_ ELSE 0 END) training_mix,
+        MAX(case when mgs.course_schedule_type_ = 'HIGH' then mgs.main_teacher_90min_salary_ ELSE 0 END) high,
+        MAX(case when mgs.course_schedule_type_ = 'CLASSROOM' then mgs.main_teacher_90min_salary_ ELSE 0 END) classroom,
+        MAX(case when mgs.course_schedule_type_ = 'HIGH_ONLINE' then CONVERT(JSON_EXTRACT(mgs.salary_rule_json_,'$."3"'),DECIMAL) END) high_online3,
+        MAX(case when mgs.course_schedule_type_ = 'HIGH_ONLINE' then CONVERT(JSON_EXTRACT(mgs.salary_rule_json_,'$."4"'),DECIMAL) END) high_online4,
+        MAX(case when mgs.course_schedule_type_ = 'HIGH_ONLINE' then CONVERT(JSON_EXTRACT(mgs.salary_rule_json_,'$."5"'),DECIMAL) END) high_online5,
+        MAX(case when mgs.course_schedule_type_ = 'MUSIC_NETWORK' then CONVERT(JSON_EXTRACT(mgs.salary_rule_json_,'$."1"'),DECIMAL) END) music_network1
+        FROM `teacher` t LEFT JOIN `sys_user` su on t.`id_` = su.`id_`
+        LEFT JOIN `organization` o on o.`id_` = t.`organ_id_`
+        LEFT JOIN `teacher_default_vip_group_salary` gs on gs.`user_id_` = t.`id_`
+        LEFT JOIN `vip_group_category` gc on gc.`id_` = gs.`vip_group_category_id_`
+        LEFT JOIN teacher_default_practice_group_salary pgs ON pgs.user_id_ = t.id_
+        LEFT JOIN teacher_default_music_group_salary mgs ON mgs.user_id_ = t.id_
+        <where>
+            <if test="organIdList != null">
                 AND find_in_set(t.organ_id_,#{organIdList})
             </if>
-		</where>
-		GROUP BY t.`id_` 
+        </where>
+        GROUP BY t.`id_`
     </select>
     <select id="findUserByPhone" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
         SELECT username_,id_ user_id_,avatar_ head_url_,