zouyu
2026-05-07 2eaeb19b16af087d17c186c6220bf64f2fc07f4f
performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml
@@ -19,9 +19,11 @@
        s.shift,
        s.work_time,
        s.annotation_text,
        sd.dict_label AS shift_name,
        u2.name AS user_name,
        u2.id user_id
        FROM performance_shift s
        left join sys_dict_data sd on s.shift = sd.dict_value and sd.dict_type='sys_class_type'
        LEFT JOIN (SELECT distinct u.* from
        user u
        left join department_lims dl on FIND_IN_SET(dl.id,u.depart_lims_id)
@@ -40,32 +42,7 @@
                and u2.name like concat('%', #{userName}, '%')
            </if>
        </where>
        order by s.create_time
    </select>
    <select id="performanceShiftYearPage" resultType="map">
        SELECT
        s.user_id, s.shift
        FROM performance_shift s
        LEFT JOIN (SELECT u.* from
        user u
        left join department_lims dl on FIND_IN_SET(dl.id,u.depart_lims_id)
        where status = '0'
        and del_flag = '0'
        <if test="laboratory != null and laboratory != ''">
            and   dl.name=#{laboratory}
        </if>
        ) u2   on u2.id = s.user_id
        where s.shift is not NULL
        and s.shift != ''
        and name is not null
        <if test="time != null and time != ''">
            and DATE_FORMAT(s.work_time, '%Y') = DATE_FORMAT(#{time}, '%Y' )
        </if>
        <if test="userName != null and userName != ''">
            and u2.name like concat('%', #{userName}, '%')
        </if>
        order by s.create_time
        order by s.work_time
    </select>
    <select id="performanceShiftYear" resultMap="performanceShiftMap">
@@ -73,10 +50,12 @@
        u2.name AS user_name,
        s.user_id,
        u2.account,
        DATE_FORMAT(s.work_time, '%c') month_num,
        sd.dict_label AS shift_name,
        s.work_time,
        s.shift,
        s.id
        FROM performance_shift s
        left join sys_dict_data sd on s.shift = sd.dict_value and sd.dict_type='sys_class_type'
        LEFT JOIN (SELECT u.* from
        user u
        left join department_lims dl on FIND_IN_SET(dl.id,u.depart_lims_id)
@@ -89,13 +68,13 @@
        where s.shift is not NULL
        and s.shift != ''
        and name is not null
        <if test="time != null and time != ''">
            and DATE_FORMAT(s.work_time, '%Y') = DATE_FORMAT(#{time}, '%Y' )
        <if test="startDateTime != null and endDateTime != null">
            and s.work_time between #{startDateTime} and #{endDateTime}
        </if>
        <if test="userName != null and userName != ''">
            and u2.name like concat('%', #{userName}, '%')
        </if>
        order by s.create_time
        order by s.work_time
    </select>
    <select id="performanceShiftYearList" resultType="map">
@@ -154,10 +133,13 @@
            u.name AS user_name,
            u.account AS person_code,
            st.start_time,
            st.end_time
            st.end_time,
            sd.dict_label AS shift_name,
            ps.annotation_text
        FROM performance_shift ps
        LEFT JOIN user u ON ps.user_id = u.id
        inner JOIN user u ON ps.user_id = u.id
        LEFT JOIN shift_time st ON ps.shift = st.shift
        left join sys_dict_data sd on ps.shift = sd.dict_value AND sd.dict_type='sys_class_type'
        <where>
            <if test="startTime!=null and endTime!=null">
                AND ps.work_time BETWEEN #{startTime} AND #{endTime}
@@ -166,6 +148,6 @@
                AND (u.account like concat('%',#{keyword},'%') OR u.name like concat('%',#{keyword},'%'))
            </if>
        </where>
        ORDER BY ps.work_time
        ORDER BY ps.work_time,u.sort
    </select>
</mapper>