<?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.bonus.system.att.dao.AttSourceDataDao">

    <insert id="insertAttSourceData">
        <foreach collection="list" item="params" separator=";">
            replace into att_source_data(name, id_number, org_id, org_name, att_current_day,
            att_current_time, att_type, att_address, province,is_outside_att, att_lon, att_lat, data_source, remark)
            values (#{params.name}, #{params.idNumber}, #{params.orgId}, #{params.orgName},
            #{params.attCurrentDay}, #{params.attCurrentTime}, #{params.attType},
            #{params.attAddress}, #{params.province},#{params.isOutsideAtt}, #{params.attLon}, #{params.attLat}, #{params.dataSource},
            #{params.remark})
        </foreach>
    </insert>

    <insert id="insertAttData">
        insert into att_data(user_id, org_id, att_current_day, att_status, att_type)
        values (#{userId}, #{orgId}, #{attCurrentDay}, #{attStatus}, #{attType})
    </insert>

    <insert id="insertAttDayReport">
        <foreach collection="list" item="params" separator=";">
            replace into att_day_report(att_current_day, normal_num, late_num, early_num, skipping_num,
            leave_num, address_error_num, ein_error_num, rest_num, out_num)
            values (#{params.attCurrentDay}, #{params.normalNum}, #{params.lateNum},
            #{params.earlyNum}, #{params.skippingNum}, #{params.leaveNum},
            #{params.addressErrorNum}, #{params.einErrorNum}, #{params.restNum}, #{params.outNum})
        </foreach>
    </insert>

    <insert id="insertAttMonthReport">
        <foreach collection="list" item="params" separator=";">
            insert into att_month_report(user_id, name, org_id, org_name, att_current_month,
            required_days, normal_num, late_num, early_num, skipping_num,
            leave_num, address_error_num, ein_error_num, rest_num, out_num, business_trip_num)
            values (#{params.userId}, #{params.userName}, #{params.orgId}, #{params.orgName},
            #{params.attCurrentMonth}, #{params.requiredDays}, #{params.normalNum}, #{params.lateNum},
            #{params.earlyNum}, #{params.skippingNum}, #{params.leaveNum},
            #{params.addressErrorNum}, #{params.einErrorNum}, #{params.restNum}, #{params.outNum},
            #{params.businessTripNum})
        </foreach>
    </insert>

    <insert id="insertHoliday">
        insert into sys_holiday(date, name, type)
        values (#{date}, #{name}, #{type})
    </insert>

    <insert id="insertAttUpdateData">
        insert into att_data_update(user_id, org_id, att_current_day, att_status, att_type)
        values (#{userId}, #{orgId}, #{attCurrentDay}, #{attStatus}, #{attType})
    </insert>
    <insert id="insertWorkAbnormal">
        <foreach collection="list" item="item" separator=";">
            replace into att_work_abnormal(user_id, user_name,org_id, att_current_day,att_current_time, att_address)
            values (#{item.userId}, #{item.name},#{item.orgId}, #{item.attCurrentDay}, #{item.attCurrentTime},
            #{item.attAddress})
        </foreach>
    </insert>
    <insert id="insertAttSettingHistoryData">
        replace into att_setting_history(user_id, group_id, current_day) values
        <foreach collection="list" item="item" separator=",">
            (#{item.userId},#{item.groupId},#{item.currentDay})
        </foreach>
    </insert>

    <insert id="insertAttDataList">
        insert into att_data(user_id, org_id, att_current_day, att_status, att_type)
        values
        <foreach collection="list" item="item" separator=",">
            (#{item.userId}, #{item.orgId}, #{item.attCurrentDay}, #{item.attStatus}, #{item.attType})
        </foreach>
        ;
        insert into att_data_update(user_id, org_id, att_current_day, att_status, att_type)
        values
        <foreach collection="list" item="item" separator=",">
            (#{item.userId}, #{item.orgId}, #{item.attCurrentDay}, #{item.attStatus}, #{item.attType})
        </foreach>
        ;
    </insert>
    <insert id="insertAttMonthReportTemp">
        insert into att_month_report(user_id, name, org_id, org_name, att_current_month,
        required_days)
        values
        <foreach collection="list" item="params" separator=",">
             (#{params.userId}, #{params.userName}, #{params.orgId}, #{params.orgName},
            #{params.attCurrentMonth}, #{params.requiredDays})
        </foreach>
    </insert>

    <update id="updateAttStatusData">
        <foreach collection="list" item="params" separator=";">
            update att_data set att_current_time = #{params.attCurrentTime},
            att_address = #{params.attAddress}, province = #{params.province},
            is_outside_att = #{params.isOutsideAtt},
            att_lon = #{params.attLon},
            att_lat = #{params.attLat},
            data_source = #{params.dataSource},
            error_remake = #{params.remark},
            att_status = CASE
            WHEN att_status in (SELECT dict_value
            FROM sys_dict_data
            where dict_type = 'att_status' and (is_leave = '1' or is_leave = '2') ) THEN att_status
            ELSE #{params.attStatus}
            END
            where user_id = #{params.userId}
            AND att_current_day = #{params.attCurrentDay} and att_type = #{params.attType};

            update att_data_update set att_current_time = #{params.attCurrentTime},
            att_address = #{params.attAddress}, province = #{params.province},
            is_outside_att = #{params.isOutsideAtt},
            att_lon = #{params.attLon},
            att_lat = #{params.attLat},
            data_source = #{params.dataSource},
            error_remake = #{params.remark},
            att_status = CASE
            WHEN att_status in (SELECT dict_value
            FROM sys_dict_data
            where dict_type = 'att_status' and (is_leave = '1' or is_leave = '2')) THEN att_status
            ELSE #{params.attStatus}
            END
            where is_update = 0 and user_id = #{params.userId}
            and att_current_day = #{params.attCurrentDay} and att_type = #{params.attType}
        </foreach>
    </update>

    <update id="updateAttData">
        update att_data set att_status = #{v.attStatus},org_id = #{v.orgId}
        where user_id = #{v.userId} and att_current_day = #{v.attCurrentDay} and att_type = #{v.attType}
        <if test='type == "1"'>
            and att_status = 0
        </if>
    </update>

    <update id="updateAttUpdateData">
        update att_data_update set att_status = #{v.attStatus},org_id = #{v.orgId}
        where is_update = 0 and user_id = #{v.userId}
        and att_current_day = #{v.attCurrentDay} and att_type = #{v.attType}
        <if test='type == "1"'>
            and att_status = 0
        </if>
    </update>

    <update id="updateAttDataList">
        <foreach collection="list" item="v" separator=";">
            update att_data set att_status = #{v.attStatus}
            where user_id = #{v.userId} and att_current_day = #{v.attCurrentDay}
            <if test='v.attType != null and v.attType != ""'>
                and att_type = #{v.attType}
            </if>
        </foreach>
    </update>
    <update id="updateAttDataUpdateList">
        <foreach collection="list" item="v" separator=";">
            update att_data_update set att_status = #{v.attStatus}
            where is_update = 0 and user_id = #{v.userId}
            and att_current_day = #{v.attCurrentDay}
            <if test='v.attType != null and v.attType != ""'>
                and att_type = #{v.attType}
            </if>
        </foreach>
    </update>

    <update id="updateLeaveData">
        update att_data
        set att_status = CASE
                             WHEN att_status = '11' THEN att_status
                             ELSE #{v.attStatus}
            END
        where user_id = #{v.userId}
          and att_current_day = #{v.attCurrentDay}
          and att_type = #{v.attType};
        update att_data_update
        set att_status = CASE
                             WHEN att_status = '11' THEN att_status
                             ELSE #{v.attStatus}
            END
        where user_id = #{v.userId}
          and att_current_day = #{v.attCurrentDay}
          and att_type = #{v.attType}
          and is_update = 0;
    </update>
    <update id="updateAttMonthReport">
        <foreach collection="list" item="v" separator=";">
            update att_month_report
            set org_id            = #{v.orgId},
            org_name          = #{v.orgName},
            normal_num        = #{v.normalNum},
            late_num         = #{v.lateNum},
            early_num        = #{v.earlyNum},
            skipping_num     = #{v.skippingNum},
            leave_num        = #{v.leaveNum},
            address_error_num = #{v.addressErrorNum},
            ein_error_num    = #{v.einErrorNum},
            rest_num         = #{v.restNum},
            out_num          = #{v.outNum},
            business_trip_num = #{v.businessTripNum}
            where
            user_id = #{v.userId}
            and att_current_month = #{v.attCurrentMonth}
        </foreach>

    </update>
    <update id="updateMonthReportRequiredDay">
        update att_month_report
        set required_days = #{requiredDays}
        where user_id = #{userId}
          and att_current_month = DATE_FORMAT(#{nowDate}, '%Y-%m')
    </update>

    <delete id="updateHisData">
        delete
        from att_source_data
        where att_current_day = #{date}
          and data_source != 3;
        update att_data
        set att_current_time = null,
            att_status       = 0,
            att_address      = null,
            att_lon          = null,
            att_lat          = null
        where att_current_day = #{date};
        update att_data_update
        set att_current_time = null,
            att_status       = 0,
            att_address      = null,
            att_lon          = null,
            att_lat          = null
        where att_current_day = #{date};
    </delete>

    <delete id="delHisData">
        delete
        from att_source_data
        where att_current_day = #{date}
          and data_source != 3;
        delete
        from att_data
        where att_current_day = #{date};
        delete
        from att_data_update
        where att_current_day = #{date};
    </delete>
    <delete id="deleteAttMonthReport">
        delete
        from att_month_report
        where att_current_month = DATE_FORMAT(#{pushDate}, '%Y-%m')
    </delete>

    <select id="getQsyAttendances" resultType="com.bonus.system.att.entity.AttSourceDataBean">
        select name,
               id_number,
               '0'                                                as orgId,
               '0'                                                as orgName,
               attendance_date                                    as attCurrentDay,
               attendance_time                                    as attCurrentTime,
               CASE attendance_type WHEN '上班' THEN 1 ELSE 2 END as attType,
               '0'                                                as attAddress,
               lon                                                as attLon,
               lat                                                as attLat,
               '1'                                                as dataSource
        from gz_cloud.fc_sup_attendance sup
        where sup.attendance_date = #{pushDate}
          and is_wechat != 1
    </select>
    <!--    -->
    <select id="getAllPerson" resultType="com.bonus.system.att.entity.AttDataBean">
        select su.user_id, agpr.org_id, agpr.group_id, '1' as attType, '0' as attStatus
        from sys_user su
                 left join att_setting_history agpr on agpr.user_id = su.user_id and agpr.current_day = #{pushDate}
        where su.is_active = 1
          and agpr.org_id is not null
        union
        select su.user_id, agpr.org_id, agpr.group_id, '2' as attType, '0' as attStatus
        from sys_user su
                 left join att_setting_history agpr on agpr.user_id = su.user_id and agpr.current_day = #{pushDate}
        where su.is_active = 1
          and agpr.org_id is not null
    </select>

    <select id="selectAttDayReport" resultType="com.bonus.system.att.entity.AttDayReportBean">
        select att_current_day,
        IFNULL(sum(toWorkAttStatus = 1 and offWorkAttStatus = 1), 0) as normalNum,
        IFNULL(sum(toWorkAttStatus = 2 or offWorkAttStatus = 2), 0) as lateNum,
        IFNULL(sum(toWorkAttStatus = 3 or offWorkAttStatus = 3), 0) as skippingNum,
        IFNULL(sum(toWorkAttStatus = 4 or offWorkAttStatus = 4), 0) as earlyNum,
        IFNULL(sum(toWorkAttStatus = 5 or offWorkAttStatus = 5), 0) as restNum,
        IFNULL(sum(toWorkAttStatus in (SELECT dict_value
        FROM sys_dict_data
        where dict_type = 'att_status' and is_leave = '1') or
        offWorkAttStatus in (SELECT dict_value
        FROM sys_dict_data
        where dict_type = 'att_status' and is_leave = '1')), 0) as leaveNum,
        IFNULL(sum(toWorkAttStatus = 7 or offWorkAttStatus = 7), 0) as outNum,
        IFNULL(sum(toWorkAttStatus = 8 or offWorkAttStatus = 8), 0) as einErrorNum,
        IFNULL(sum(toWorkAttStatus = 9 or offWorkAttStatus = 9), 0) as addressErrorNum
        from v_att_update_data
        where att_current_day = #{pushDate}
        GROUP BY att_current_day

    </select>

    <!--att_setting_history 的处理是为了获取当月最后一天在哪个考勤规则，去计算他的当月考勤天数 -->
    <select id="selectAttMonthReport" resultType="com.bonus.system.att.entity.AttMonthReportBean">
        SELECT
            v.user_id,
            su.user_name,
            suo.org_id,
            so.org_name,
            DATE_FORMAT( att_current_day, '%Y-%m' ) AS attCurrentMonth,
            IFNULL( sum( IF ( toWorkAttStatus = 1, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 1, 0.5, 0 )), 0 ) AS normalNum,
            IFNULL( sum( IF ( toWorkAttStatus = 2, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 2, 0.5, 0 )), 0 ) AS lateNum,
            IFNULL( sum( IF ( toWorkAttStatus = 3, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 3, 0.5, 0 )), 0 ) AS skippingNum,
            IFNULL( sum( IF ( toWorkAttStatus = 4, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 4, 0.5, 0 )), 0 ) AS earlyNum,
            IFNULL( sum( IF ( toWorkAttStatus = 5, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 5, 0.5, 0 )), 0 ) AS restNum,
            sum(
                    IF
                    ( toWorkAttStatus IN ( SELECT dict_value FROM sys_dict_data WHERE dict_type = 'att_status' AND is_leave = '1' ), 0.5, 0 )) + sum(
                    IF
                    ( offWorkAttStatus IN ( SELECT dict_value FROM sys_dict_data WHERE dict_type = 'att_status' AND is_leave = '1' ), 0.5, 0 )) AS leaveNum,
            IFNULL( sum( IF ( toWorkAttStatus = 7, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 7, 0.5, 0 )), 0 ) AS outNum,
            IFNULL( sum( IF ( toWorkAttStatus = 8, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 8, 0.5, 0 )), 0 ) AS einErrorNum,
            IFNULL( sum( IF ( toWorkAttStatus = 9, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 9, 0.5, 0 )), 0 ) AS addressErrorNum,
            IFNULL( sum( IF ( toWorkAttStatus = 10, 0.5, 0 )), 0 ) + IFNULL( sum( IF ( offWorkAttStatus = 10, 0.5, 0 )), 0 ) AS businessTripNum
        FROM
            v_att_update_data v
                LEFT JOIN sys_user su ON su.user_id = v.user_id
                LEFT JOIN sys_user_org suo ON suo.user_id = v.user_id
                LEFT JOIN sys_organization so ON so.id = suo.org_id
        WHERE
            DATE_FORMAT( att_current_day, '%Y-%m' ) = DATE_FORMAT( #{pushDate}, '%Y-%m' )
        GROUP BY
            DATE_FORMAT( att_current_day, '%Y-%m' ),
            v.user_id
    </select>

    <select id="selectHolidayByMonth" resultType="com.bonus.system.att.entity.Holiday">
        select *
        from sys_holiday
        where DATE_FORMAT(`date`, '%Y-%m') = DATE_FORMAT(#{pushDate}, '%Y-%m')
    </select>

    <select id="getPersonLeaveApplyStatus" resultType="java.lang.Integer">
        select DISTINCT sdd.dict_value
        from leave_apply la
                 left join sys_dict_data sdd on sdd.dict_label = la.leave_type
        where user_id = #{userId}
          and org_id = #{orgId}
          and CONCAT(#{attCurrentDay}, '|', #{attType})
            BETWEEN CONCAT(leave_start_date, '|', leave_start_interval)
            AND CONCAT(leave_end_date, '|', leave_end_interval)
          AND examine_status = 1
        GROUP BY la.user_id
        ORDER BY la.create_time DESC
    </select>

    <select id="getSourceAttData" resultType="com.bonus.system.att.entity.AttSourceDataBean">
        SELECT asd.*,
               su.user_id,
               ag.group_id AS groupId,
               g.att_type  AS groupType
        FROM (SELECT * FROM att_source_data WHERE att_current_day = #{pushDate} AND data_source = 1) asd
                 LEFT JOIN sys_user su ON su.id_number = asd.id_number
                 LEFT JOIN att_setting_history ag ON ag.user_id = su.user_id
            AND ag.current_day = #{pushDate}
                 LEFT JOIN att_group g ON g.id = ag.group_id
        UNION
        SELECT asd.*,
               su.user_id,
               ag.group_id AS groupId,
               g.att_type  AS groupType
        FROM (SELECT *
              FROM att_source_data
              WHERE att_current_day = #{pushDate}
                AND data_source IN (2, 3)
                AND (att_type = 1 OR att_type = 2)) asd
                 LEFT JOIN sys_user su ON su.user_name = asd.
            NAME
                 LEFT JOIN att_setting_history ag ON ag.user_id = su.user_id
            AND ag.current_day = #{pushDate}
                 LEFT JOIN att_group g ON g.id = ag.group_id;
    </select>

    <select id="selectAttIsExist" resultType="java.lang.Boolean">
        SELECT count(0)
        FROM att_data
        WHERE user_id = #{userId}
          and att_type = #{attType}
          and att_current_day = #{attCurrentDay}
    </select>

    <select id="selectAttUpdateIsExist" resultType="java.lang.Boolean">
        SELECT count(0)
        FROM att_data_update
        WHERE user_id = #{userId}
          and att_type = #{attType}
          and att_current_day = #{attCurrentDay}
    </select>

    <select id="getMachineAttendances" resultType="com.bonus.system.att.entity.AttSourceDataBean">
        select *
        from (select u.name,
        '0' as idNumber,
        '0' as orgId,
        '0' as orgName,
        DATE_FORMAT(c.checktime, '%Y-%m-%d') as attCurrentDay,
        DATE_FORMAT(c.checktime, '%Y-%m-%d %H:%i:%s') as attCurrentTime,
        if(i.alias like '%进%', 1, (if(i.alias like '%出%', 2, 0))) as attType,
        i.alias as attAddress,
        '0' as attLon,
        '0' as attLat,
        '2' as dataSource
        from zkeco.checkinout c
        left join zkeco.iclock i on i.sn = c.sn
        left join zkeco.userinfo u on u.userid = c.userid
        where
        <if test='pushType == "1"'>
            DATE_FORMAT(c.checktime, '%Y-%m-%d') = #{pushDate}
        </if>
        <if test='pushType == "2"'>
            DATE_FORMAT(c.checktime, '%Y-%m-%d %H:%i:%s') BETWEEN concat(#{pushDate},' 00:00:00') AND
            DATE_ADD(DATE_ADD(concat(#{pushDate},' 00:00:00'), INTERVAL 1 DAY), INTERVAL 5 HOUR) - INTERVAL 1 SECOND
        </if>
        and u.name != '') a
    </select>

    <select id="getLeaveData" resultType="com.bonus.system.att.entity.LeaveBean">
        SELECT la.*,
               sdd.dict_value AS attStatus
        FROM leave_apply la
                 LEFT JOIN sys_dict_data sdd ON sdd.dict_label =
                                                IF
                                                (la.leave_type IS NOT NULL, la.leave_type, la.type)
            AND sdd.dict_type = 'att_status'
        WHERE la.is_active = 1
          AND la.examine_status = 1
          AND sdd.dict_value IS NOT NULL
          AND leave_start_date BETWEEN #{pushDate} - INTERVAL 15 DAY
          and #{pushDate}
        ORDER BY
            leave_start_date
    </select>

    <select id="getLeaveDataByUserId" resultType="java.lang.Integer">
        SELECT count(1)
        FROM leave_apply la
        WHERE la.is_active = 1
          AND la.examine_status = 1
          AND user_id = #{userId}
          AND #{attCurrentDay} BETWEEN leave_start_date and leave_end_date
    </select>
    <select id="getFirstAttendanceData" resultType="java.lang.Integer">
        select count(0)
        from att_data
        where att_current_day = #{date}
    </select>
    <select id="getAttSettingDate" resultType="java.lang.String">
        SELECT DISTINCT current_day
        FROM `att_setting_history`
        WHERE current_day > DATE_ADD(#{startDate}, INTERVAL -#{days} DAY)
        ORDER BY current_day DESC
    </select>

    <select id="getAttSettingHistoryDate" resultType="com.bonus.system.att.entity.AttGroupBean">
        SELECT *
        FROM (SELECT group_id,
                     user_id,
                     #{currentDay} as currentDay
              FROM att_group_person_relation
              WHERE #{currentDay} BETWEEN DATE_FORMAT(effective_time, '%Y-%m-%d')
                        AND DATE_FORMAT(IFNULL(NOW(), expiring_time), '%Y-%m-%d')
              ORDER BY user_id,
                       effective_time DESC LIMIT 10000000) aa
        GROUP BY user_id
    </select>
    <select id="getAttPerson" resultType="com.bonus.system.att.entity.AttDataBean">
        SELECT su.user_id,
               ash.group_id,
               suo.org_id,
               '1' AS attType,
               #{pushDate} AS attCurrentDay,
               '0' AS attStatus
        FROM att_setting_history ash
                 LEFT JOIN sys_user su ON ash.user_id = su.user_id
                 left join sys_user_org suo ON su.user_id = suo.user_id
        WHERE ash.current_day = #{pushDate}
        UNION
        SELECT su.user_id,
               ash.group_id,
               suo.org_id,
               '2' AS attType,
               #{pushDate} AS attCurrentDay,
               '0' AS attStatus
        FROM att_setting_history ash
                 LEFT JOIN sys_user su ON ash.user_id = su.user_id
                 left join sys_user_org suo ON su.user_id = suo.user_id
        WHERE ash.current_day = #{pushDate}
    </select>
    <select id="getAttDataPerson" resultType="java.lang.Long">
        SELECT distinct user_id
        FROM att_data
        WHERE att_current_day = #{pushDate}
    </select>
    <select id="getAttDataByStatus" resultType="com.bonus.system.att.entity.AttDataBean">
        SELECT
        *
        FROM
        att_data
        WHERE
        att_current_day = #{pushDate}
        AND att_status = 0
        <if test='attType != ""'>
            AND att_type = #{attType}
        </if>
    </select>
    <select id="getAttDataUpdateByStatus" resultType="com.bonus.system.att.entity.AttDataBean">
        SELECT
        *
        FROM
        att_data_update
        WHERE
        att_current_day = #{pushDate}
        AND att_status = 0
        And is_update = 0
        <if test='attType != ""'>
            AND att_type = #{attType}
        </if>
    </select>
    <select id="selectHolidayByDay" resultType="com.bonus.system.att.entity.Holiday">
        SELECT *
        FROM sys_holiday
        WHERE
            date = #{pushDate}
          AND type = '1'
    </select>

    <select id="selectAttMonthReportTemp" resultType="com.bonus.system.att.entity.AttMonthReportBean">
        SELECT
            su.user_id,
            su.user_name,
            suo.org_id,
            so.org_name,
            ash.group_id,
            DATE_FORMAT( #{pushDate}, '%Y-%m' ) as attCurrentMonth
        FROM
            att_setting_history ash
                LEFT JOIN sys_user su ON su.user_id = ash.user_id
                LEFT JOIN sys_user_org suo ON suo.user_id = su.user_id
                LEFT JOIN sys_organization so ON so.id = suo.org_id
        WHERE
            DATE_FORMAT( ash.current_day, '%Y-%m' ) = DATE_FORMAT( #{pushDate}, '%Y-%m' )
            and  suo.org_id is not null
        GROUP BY
            DATE_FORMAT( #{pushDate}, '%Y-%m' ),
            su.user_id
    </select>
    <select id="getAttMonthReportPerson" resultType="java.lang.Long">
        SELECT
            user_id
        FROM
            att_month_report
        WHERE
           att_current_month = DATE_FORMAT( #{pushDate}, '%Y-%m' )
    </select>
    <select id="getMonthReportTempDataIsExist" resultType="java.lang.Integer">
        SELECT
            count(1)
        FROM
            att_month_report
        WHERE
            att_current_month = DATE_FORMAT( #{pushDate}, '%Y-%m' ) and user_id = #{userId}
    </select>
    <select id="getAttSettingHistoryByUserAndDate" resultType="com.bonus.system.att.entity.AttGroupBean">
        SELECT
            ash.group_id,
            ash.user_id,
            ash.current_day
        from
            att_setting_history ash
        WHERE
            ash.user_id = #{userId}
            and locate(DATE_FORMAT( #{nowDate}, '%Y-%m' ),ash.current_day)
            order by current_day ASC
    </select>
    <select id="getOrgDataByUserId" resultType="com.bonus.system.att.entity.AttMonthReportBean">
        SELECT
            su.user_id,
            su.user_name,
            suo.org_id,
            so.org_name
        FROM
            sys_user su
                LEFT JOIN sys_user_org suo ON suo.user_id = su.user_id
                LEFT JOIN sys_organization so ON so.id = suo.org_id
        where su.user_id = #{userId}
    </select>

</mapper>