Files
klp-oa/klp-wms/src/main/resources/mapper/klp/WmsAttendanceScheduleMapper.xml
Joshi 6b36697e56 feat(wms/attendance): 为考勤排班查询新增员工姓名和部门名称模糊筛选
在WmsAttendanceScheduleBo中新增employeeName和employeeDept字段用于接收模糊查询条件。在WmsAttendanceScheduleServiceImpl中新增resolveEmployeeNameAndDept私有方法,根据姓名和部门条件查询员工ID集合,并自动设置到bo的userIds字段中,实现通过员工姓名和部门名称进行模糊筛选考勤排班数据。
2026-05-27 17:12:54 +08:00

119 lines
5.4 KiB
XML

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.klp.mapper.WmsAttendanceScheduleMapper">
<resultMap type="com.klp.domain.WmsAttendanceSchedule" id="WmsAttendanceScheduleResult">
<result property="scheduleId" column="schedule_id"/>
<result property="userId" column="user_id"/>
<result property="workDate" column="work_date"/>
<result property="shiftId" column="shift_id"/>
<result property="shiftName" column="shift_name"/>
<result property="shiftGroup" column="shift_group"/>
<result property="remark" column="remark"/>
<result property="delFlag" column="del_flag"/>
<result property="createBy" column="create_by"/>
<result property="updateBy" column="update_by"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<resultMap type="com.klp.domain.vo.WmsAttendanceScheduleVo" id="WmsAttendanceScheduleVoResult">
<result property="scheduleId" column="schedule_id"/>
<result property="userId" column="user_id"/>
<result property="workDate" column="work_date"/>
<result property="shiftId" column="shift_id"/>
<result property="shiftName" column="shift_name"/>
<result property="shiftGroup" column="shift_group"/>
<result property="remark" column="remark"/>
<result property="employeeName" column="employee_name"/>
<result property="employeeDept" column="employee_dept"/>
<result property="employeeJobType" column="employee_job_type"/>
<result property="shiftType" column="shift_type"/>
<result property="shiftStartTime" column="shift_start_time"/>
<result property="shiftEndTime" column="shift_end_time"/>
<result property="shiftStartTime2" column="shift_start_time2"/>
<result property="shiftEndTime2" column="shift_end_time2"/>
<result property="workHours" column="work_hours"/>
<result property="shiftIsCrossDay" column="shift_is_cross_day"/>
</resultMap>
<sql id="selectScheduleWithDetailsVo">
SELECT s.schedule_id, s.user_id, s.work_date, s.shift_id, s.shift_name, s.shift_group, s.remark,
e.name as employee_name, e.dept as employee_dept, e.job_type as employee_job_type,
sh.shift_type, sh.start_time as shift_start_time, sh.end_time as shift_end_time, sh.start_time2 as shift_start_time2, sh.end_time2 as shift_end_time2, sh.work_hours, sh.is_cross_day as shift_is_cross_day
FROM wms_attendance_schedule s
LEFT JOIN wms_employee_info e ON s.user_id = e.info_id AND e.del_flag = 0
LEFT JOIN wms_attendance_shift sh ON s.shift_id = sh.shift_id AND sh.del_flag = 0
WHERE s.del_flag = 0
</sql>
<select id="selectScheduleWithDetails" parameterType="java.util.Map" resultMap="WmsAttendanceScheduleVoResult">
<include refid="selectScheduleWithDetailsVo"/>
<if test="userId != null">
AND s.user_id = #{userId}
</if>
<if test="workDate != null">
AND s.work_date = #{workDate}
</if>
<if test="shiftId != null">
AND s.shift_id = #{shiftId}
</if>
<if test="startDate != null">
AND s.work_date >= #{startDate}
</if>
<if test="endDate != null">
AND s.work_date &lt;= #{endDate}
</if>
<if test="userIds != null and userIds.size > 0">
AND s.user_id IN
<foreach collection="userIds" item="userIdItem" open="(" separator="," close=")">
#{userIdItem}
</foreach>
</if>
ORDER BY s.work_date DESC, s.user_id
</select>
<select id="selectScheduleWithDetailsPage" resultMap="WmsAttendanceScheduleVoResult">
<include refid="selectScheduleWithDetailsVo"/>
<if test="bo.userId != null">
AND s.user_id = #{bo.userId}
</if>
<if test="bo.workDate != null">
AND s.work_date = #{bo.workDate}
</if>
<if test="bo.shiftId != null">
AND s.shift_id = #{bo.shiftId}
</if>
<if test="bo.shiftName != null and bo.shiftName != ''">
AND s.shift_name LIKE CONCAT('%', #{bo.shiftName}, '%')
</if>
<if test="bo.shiftGroup != null and bo.shiftGroup != ''">
AND s.shift_group = #{bo.shiftGroup}
</if>
<if test="bo.startDate != null">
AND s.work_date >= #{bo.startDate}
</if>
<if test="bo.endDate != null">
AND s.work_date &lt;= #{bo.endDate}
</if>
<if test="bo.userIds != null and bo.userIds.size > 0">
AND s.user_id IN
<foreach collection="bo.userIds" item="userIdItem" open="(" separator="," close=")">
#{userIdItem}
</foreach>
</if>
ORDER BY s.work_date DESC, s.user_id
</select>
<insert id="insertBatch" parameterType="java.util.List">
INSERT INTO wms_attendance_schedule (user_id, work_date, shift_id, shift_name, shift_group, remark)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.userId}, #{item.workDate}, #{item.shiftId}, #{item.shiftName}, #{item.shiftGroup}, #{item.remark})
</foreach>
</insert>
</mapper>