Files
fad_oa/ruoyi-oa/src/main/resources/mapper/oa/SysOaAttendanceMapper.xml
2025-01-02 13:42:09 +08:00

161 lines
7.8 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.ruoyi.oa.mapper.SysOaAttendanceMapper">
<resultMap type="com.ruoyi.oa.domain.vo.SysOaAttendanceVo" id="SysOaAttendanceResult">
<result property="id" column="id"/>
<result property="userId" column="user_id"/>
<result property="attendanceDay" column="attendance_day"/>
<result property="projectId" column="project_id"/>
<result property="dayLength" column="day_length"/>
<result property="hour" column="hour"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
<result property="remark" column="remark"/>
<result property="delFlag" column="del_flag"/>
<result property="count" column="count"/>
<result property="workTimes" column="work_times"/>
<result property="hourWorkTimes" column="hour_work_times"/>
<result property="color" column="color"/>
</resultMap>
<resultMap type="com.ruoyi.oa.domain.vo.SysUserVo" id="SysUserResult">
<id property="userId" column="user_id"/>
<result property="deptId" column="dept_id"/>
<result property="userName" column="user_name"/>
<result property="nickName" column="nick_name"/>
<result property="userType" column="user_type"/>
<result property="email" column="email"/>
<result property="phonenumber" column="phonenumber"/>
<result property="sex" column="sex"/>
<result property="avatar" column="avatar"/>
<result property="password" column="password"/>
<result property="status" column="status"/>
<result property="delFlag" column="del_flag"/>
<result property="loginIp" column="login_ip"/>
<result property="loginDate" column="login_date"/>
<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="remark" column="remark"/>
<result property="idCard" column="id_card"/>
<result property="bankCard" column="bank_card"/>
<result property="laborCost" column="labor_cost"/>
<collection property="projects" javaType="java.util.List" resultMap="projectResult"/>
<collection property="attendances" javaType="java.util.List" resultMap="SysOaAttendanceResult"/>
</resultMap>
<resultMap id="projectResult" type="com.ruoyi.oa.domain.vo.SysOaProjectVo">
<result property="projectId" column="project_id"/>
<result property="projectName" column="project_name"/>
<result property="projectNum" column="project_num"/>
<result property="projectType" column="project_type"/>
<result property="address" column="address"/>
<result property="funds" column="funds"/>
<result property="functionary" column="functionary"/>
<result property="beginTime" column="begin_time"/>
<result property="finishTime" column="finish_time"/>
<result property="delivery" column="delivery"/>
<result property="guarantee" column="guarantee"/>
<result property="introduction" column="introduction"/>
<result property="projectGrade" column="project_grade"/>
<result property="projectStatus" column="project_status"/>
<result property="contractId" column="contract_id"/>
<result property="invoiceName" column="invoice_name"/>
<result property="invoiceNumber" column="invoice_number"/>
<result property="invoiceAddress" column="invoice_address"/>
<result property="invoiceBank" column="invoice_bank"/>
<result property="accessory" column="accessory"/>
<result property="bail" column="bail"/>
<result property="remark" column="remark"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
</resultMap>
<update id="updateDelAttendance" parameterType="com.ruoyi.oa.domain.SysOaAttendance">
update fad_oa.sys_oa_attendance
<trim prefix="SET" suffixOverrides=",">
<if test="projectId != null and projectId!=''">project_id=#{projectId},</if>
<if test="userId != null and userId!=''">user_id = #{userId},</if>
<if test="attendanceDay != null and attendanceDay!=''">attendance_day = #{attendanceDay},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="dayLength != null and dayLength!=''">day_length = #{dayLength},</if>
<if test="hour != null and hour!=''">hour = #{hour},</if>
</trim>
where id = #{id}
</update>
<select id="selectVoListAndTime" resultType="com.ruoyi.oa.domain.vo.SysOaAttendanceVo">
select ANY_VALUE(id),
user_id,
ANY_VALUE(attendance_day),
project_id,
ANY_VALUE(day_length),
ANY_VALUE(hour),
ANY_VALUE(create_time),
ANY_VALUE(create_by),
ANY_VALUE(update_time),
ANY_VALUE(update_by),
ANY_VALUE(remark),
ANY_VALUE(del_flag),
count(*) as count,
sum(day_length) as work_times,
sum(hour) as hour_work_times
from sys_oa_attendance soa
where user_id = #{userId}
and #{lastDay} > create_time
and create_time > #{firstDay}
and del_flag = '0'
group by soa.project_id
</select>
<select id="selectUserListAndAttendanceListAndProjectListByUserIds"
resultMap="SysUserResult">
SELECT su.user_id, su.dept_id, su.user_name, su.nick_name, su.user_type, su.email, su.phonenumber, su.sex,
su.avatar,
su.status,su.login_date, su.id_card,
su.bank_card, su.labor_cost,
soa.id,soa.attendance_day,soa.project_id,soa.day_length,soa.hour,
color,
sop.project_name, sop.project_num, sop.project_type, sop.address, sop.funds, sop.functionary, sop.begin_time,
sop.finish_time, sop.delivery, sop.guarantee, sop.introduction, sop.project_grade, sop.project_status, sop.contract_id, sop.invoice_name,
sop.invoice_number, sop.invoice_address, sop.invoice_bank, sop.accessory, sop.bail,sop.is_postpone, sop.postpone_reason,sop.postpone_time
FROM sys_user su
left join sys_oa_attendance soa on (su.user_id = soa.user_id and soa.del_flag='0' AND (soa.create_time BETWEEN #{firstDay} AND #{lastDay}))
left join sys_oa_project sop on soa.project_id = sop.project_id
WHERE su.user_id IN
<foreach item="userId" index="index" collection="userIds"
open="(" separator="," close=")">
#{userId}
</foreach>
and su.del_flag = '0'
</select>
<select id="queryListByTime" resultMap="SysOaAttendanceResult">
SELECT id, user_id, attendance_day, project_id, day_length, hour, create_time, create_by, update_time, update_by, remark, del_flag
FROM sys_oa_attendance
WHERE create_time BETWEEN #{startTime} AND #{endTime}
AND user_id = #{userId}
AND attendance_day = #{attendanceDay}
</select>
<delete id="delOaAttendanceAll">
delete from sys_oa_attendance where
attendance_day = #{day}
and #{lastDay} > create_time
and create_time > #{firstDay}
</delete>
</mapper>