evo-Financial-pc/evo-admin/target/classes/mapper/attendance/RzAttendanceMapper.xml
2025-05-04 11:02:42 +08:00

123 lines
7.1 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.evo.attendance.mapper.RzAttendanceMapper">
<resultMap type="RzAttendance" id="RzAttendanceResult">
<result property="id" column="id" />
<result property="staffId" column="staff_id" />
<result property="name" column="name" />
<result property="deptId" column="dept_id" />
<result property="attendanceDate" column="attendance_date" />
<result property="rules" column="rules" />
<result property="workStartTime" column="work_start_time" />
<result property="workEndTime" column="work_end_time" />
<result property="workSum" column="work_sum" />
<result property="workHours" column="work_hours" />
<result property="nightNumber" column="night_number" />
<result property="middleShiftNumber" column="middle_shift_number" />
<result property="remarks" column="remarks" />
<result property="delFlag" column="del_flag" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="ycsFlag" column="ycs_flag" />
<result property="ycxFlag" column="ycx_flag" />
</resultMap>
<sql id="selectRzAttendanceVo">
select id, staff_id, name, dept_id, attendance_date, rules, work_start_time,ycs_flag,ycx_flag, work_end_time, work_sum,work_hours,night_number,middle_shift_number,remarks, del_flag, create_by, create_time, update_by, update_time from rz_attendance
</sql>
<select id="selectRzAttendanceList" parameterType="RzAttendance" resultMap="RzAttendanceResult">
select * from rz_attendance d
<where>
d.del_flag = '0'
<if test="staffId != null "> and d.staff_id = #{staffId}</if>
<if test="deptId != null "> and d.dept_id = #{deptId}</if>
<if test="ycsFlag != null "> and (d.ycs_flag = #{ycsFlag} or d.ycx_flag = #{ycxFlag})</if>
<if test="workSum == '1'.toString()"> and d.work_sum &gt; 0</if>
<if test="name != null and name != ''"> and d.name like concat('%', #{name}, '%')</if>
<if test="attendanceDate != null "> and DATE_FORMAT( d.attendance_date, '%Y%m%d' ) = DATE_FORMAT(#{attendanceDate} , '%Y%m%d' )</if>
${params.dataScope}
</where>
</select>
<select id="selectRzAttendanceById" parameterType="Long" resultMap="RzAttendanceResult">
<include refid="selectRzAttendanceVo"/>
where id = #{id}
</select>
<update id="updateRzAttendance" parameterType="RzAttendance">
update rz_attendance
<trim prefix="SET" suffixOverrides=",">
<if test="staffId != null">staff_id = #{staffId},</if>
<if test="name != null">name = #{name},</if>
<if test="deptId != null">dept_id = #{deptId},</if>
<if test="attendanceDate != null">attendance_date = #{attendanceDate},</if>
<if test="rules != null">rules = #{rules},</if>
<if test="workStartTime != null">work_start_time = #{workStartTime},</if>
<if test="workEndTime != null">work_end_time = #{workEndTime},</if>
<if test="workSum != null">work_sum = #{workSum},</if>
<if test="nightNumber != null">night_number = #{nightNumber},</if>
<if test="middleShiftNumber != null">middle_shift_number = #{middleShiftNumber},</if>
<if test="remarks != null">remarks = #{remarks},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="ycsFlag != null">ycs_flag = #{ycsFlag},</if>
<if test="ycxFlag != null">ycx_flag = #{ycxFlag},</if>
</trim>
where id = #{id}
</update>
<!-- 根据打卡时间和员工ID查询当天的打卡记录 -->
<select id="queryNowDayAttendanceByStatisticalIdAndDate" resultMap="RzAttendanceResult">
<include refid="selectRzAttendanceVo"/>
where del_flag = '0' and DATE_FORMAT( attendance_date, '%Y%m%d' ) = DATE_FORMAT(#{date} , '%Y%m%d' ) and staff_id = #{staffId}
</select>
<!-- 查询当天打卡的考勤的记录 -->
<select id="attendenceCount" resultMap="RzAttendanceResult">
<include refid="selectRzAttendanceVo"/>
where del_flag = '0' and DATE_FORMAT( attendance_date, '%Y%m%d' ) = DATE_FORMAT(NOW() , '%Y%m%d' ) and work_start_time is not null
</select>
<!-- 根据员工ID查询最后一次考勤记录 -->
<select id="selectLastRzAttendanceByStaffId" parameterType="Long" resultMap="RzAttendanceResult">
<include refid="selectRzAttendanceVo"/>
where work_start_time is not null and staff_id = #{staffId} and del_flag = '0' order by attendance_date desc limit 1
</select>
<!-- 根据月份查询员工的打卡考勤 -->
<select id="queryMonthAttendanceByStaffId" resultMap="RzAttendanceResult">
<include refid="selectRzAttendanceVo"/>
where del_flag = '0' and DATE_FORMAT( attendance_date, '%Y%m' ) = DATE_FORMAT(#{date} , '%Y%m' ) and staff_id = #{staffId}
</select>
<!-- 根据页面条件查询考勤记录信息 -->
<select id="listAttendanceByParams" parameterType="RzAttendance" resultMap="RzAttendanceResult">
select * from rz_attendance
<where>
del_flag = '0'
<if test="staffId != null "> and staff_id = #{staffId}</if>
<if test="attendanceDate != null "> and DATE_FORMAT(attendance_date, '%Y%m' ) = DATE_FORMAT(#{attendanceDate} , '%Y%m' )</if>
<if test="nightNumber != 0">and night_number &gt; 0</if>
<if test="middleShiftNumber != 0">and middle_shift_number &gt; 0</if>
</where>
</select>
<!-- 批量插入考勤记录 -->
<insert id="insertBatchRzAttendance" parameterType="java.util.List">
insert into rz_attendance(staff_id, name, dept_id, attendance_date,del_flag, create_by, create_time,ycs_flag,ycx_flag)
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(#{item.staffId}, #{item.name}, #{item.deptId}, #{item.attendanceDate}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.ycsFlag}, #{item.ycxFlag})
</foreach>
</insert>
<!-- 查询当天在职员工的打卡考勤 -->
<select id="currentDateAllAttendance" resultMap="RzAttendanceResult">
<include refid="selectRzAttendanceVo"/>
where del_flag = '0' and DATE_FORMAT( attendance_date, '%Y%m%d' ) = DATE_FORMAT(NOW() , '%Y%m%d' )
and staff_id in (select user_id from sys_staff where status != '-1')
</select>
</mapper>