mybatis操作

<?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.thinkgem.jeesite.modules.oa.dao.SignStatisticDao">

    <!-- 查询是否公休假日及法定假日 -->
    <select id="checkofholiday" resultType="String">
    <![CDATA[
        SELECT   
            CASE 
                WHEN 
                    (WEEKDAY(#{date}) IN (5,6) 
                        AND 
                        (SELECT COUNT(ID)
                            FROM SYS_HOLIDAY
                        WHERE DATE = #{date} 
                            AND FLAG=2
                            AND IFNULL(DEL_FLAG,'0') <> '1'
                        )<1)
                    OR  
                    (SELECT COUNT(ID) 
                        FROM SYS_HOLIDAY 
                        WHERE DATE =  #{date} 
                            AND FLAG=1 
                            AND IFNULL(DEL_FLAG,'0') <> '1')>0  
                THEN 1
                ELSE 0 
            END
    ]]> 
    </select>

    <!-- 获取角色id -->
    <select id="getEnname" resultType="String">
    <![CDATA[
        SELECT
              ROLE.ENNAME
            FROM SYS_USER_ROLE USERROLE,
              SYS_ROLE ROLE
            WHERE USERROLE.USER_ID =  #{userIdOfHimself}
                AND ROLE.DEL_FLAG <> '1'
                AND USERROLE.ROLE_ID = ROLE.ID
    ]]>
    </select>

    <!-- 返回检察长用户集  -->
    <select id="getAllUsers" resultType="String">
    <![CDATA[
        SELECT
          ID
        FROM SYS_USER 
        WHERE
        IFNULL(DEL_FLAG,'0') <> '1'
    ]]>
    </select>

    <!-- 返回副检察长用户集  -->
    <select id="getPartOfUsers" resultType="String">
    <![CDATA[
        SELECT
          USER2.ID
        FROM SYS_USER USER1,
          SYS_AUDITOR_OFFICE OFFICE,
          SYS_USER USER2
        WHERE IFNULL(USER1.DEL_FLAG,'0') <> '1'
            AND IFNULL(USER2.DEL_FLAG,'0') <> '1'
            AND USER1.ID = OFFICE.USER_ID
            AND USER2.OFFICE_ID = OFFICE.OFFICE_ID
            AND USER1.ID = #{userIdOfHimself}
    ]]>
    </select>

    <!-- 返回部门负责人用户集合  -->
    <select id="getDeptOfUsers" resultType="String">
    <![CDATA[
        SELECT
          ID
        FROM SYS_USER
        WHERE IFNULL(DEL_FLAG,'0') <> '1'
            AND OFFICE_ID = (SELECT
                               OFFICE_ID
                             FROM SYS_USER
                             WHERE IFNULL(DEL_FLAG,'0') <> '1'
                                 AND ID = #{userIdOfHimself})
    ]]>
    </select>

    <!-- 返回查询的用户集  -->
    <select id="getUserById" resultType="String">
        SELECT
          ID
        FROM SYS_USER 
    <![CDATA[
        WHERE IFNULL(DEL_FLAG,'0') <> '1'
            AND IFNULL(NEEDSIGN,'0') = '1'
    ]]>
         <if test="userId != null and userId != ''">
            AND ID = #{userId}
         </if>
         <if test="officeId != null and officeId != ''">
            AND OFFICE_ID = #{officeId}
         </if>
    </select>

    <select id="selectAmHoliday" resultType="SignStatistic">
        <![CDATA[
        SELECT
          OS.USER_ID      USERID,
          SU.NAME         USERNAME,
          SO.NAME         OFFICENAME,
          OS.SIGN_DATE    SIGNDATE,
          OS.SIGN_TIME    SIGNTIME,
          OS.ISLATE       ISLATE,
          OS.ISWORKOVER   ISWORKOVER
        FROM OA_SIGN OS,
          SYS_USER SU,
          SYS_OFFICE SO
        WHERE OS.USER_ID = SU.ID
            AND SU.OFFICE_ID = SO.ID
            AND IFNULL(OS.DEL_FLAG,'0') <> '1'
            AND IFNULL(SU.DEL_FLAG,'0') <> '1'
            AND IFNULL(SO.DEL_FLAG,'0') <> '1'
            AND IFNULL(SU.NEEDSIGN,'0') = '1'
            AND OS.ISWORKOVER = '1'
            AND OS.AMORPM = '0'
            ]]>
            <if test="userId != null and userId != ''">
                AND OS.USER_ID = #{userId}
            </if>
            <if test="day != null and day != ''">
                AND OS.SIGN_DATE = #{day}
            </if>
    </select>

    <select id="selectPmHoliday" resultType="SignStatistic">
    <![CDATA[
        SELECT
          OS.USER_ID      USERID,
          SU.NAME         USERNAME,
          SO.NAME         OFFICENAME,
          OS.SIGN_DATE    SIGNDATE,
          OS.SIGN_TIME    SIGNTIME,
          OS.ISLATE       ISLATE,
          OS.ISWORKOVER   ISWORKOVER
        FROM OA_SIGN OS,
          SYS_USER SU,
          SYS_OFFICE SO
        WHERE OS.USER_ID = SU.ID
            AND SU.OFFICE_ID = SO.ID
            AND IFNULL(OS.DEL_FLAG,'0') <> '1'
            AND IFNULL(SU.DEL_FLAG,'0') <> '1'
            AND IFNULL(SO.DEL_FLAG,'0') <> '1'
            AND IFNULL(SU.NEEDSIGN,'0') = '1'
            AND OS.ISWORKOVER = '1'
            AND OS.AMORPM = '1'
            ]]>
            <if test="userId != null and userId != ''">
                AND OS.USER_ID = #{userId}
            </if>
            <if test="day != null and day != ''">
                AND OS.SIGN_DATE = #{day}
            </if>
    </select>

    <select id="selectAmSign" resultType="SignStatistic">
    <![CDATA[
        SELECT
          OS.USER_ID      USERID,
          SU.NAME         USERNAME,
          SO.NAME         OFFICENAME,
          OS.SIGN_DATE    SIGNDATE,
          OS.SIGN_TIME    SIGNTIME,
          OS.ISLATE       ISLATE,
          OS.ISWORKOVER   ISWORKOVER
        FROM OA_SIGN OS,
          SYS_USER SU,
          SYS_OFFICE SO
        WHERE OS.USER_ID = SU.ID
            AND SU.OFFICE_ID = SO.ID
            AND IFNULL(OS.DEL_FLAG,'0') <> '1'
            AND IFNULL(SU.DEL_FLAG,'0') <> '1'
            AND IFNULL(SO.DEL_FLAG,'0') <> '1'
            AND IFNULL(SU.NEEDSIGN,'0') = '1'
            AND OS.ISWORKOVER = '0'
            AND OS.AMORPM = '0'
        ]]>
            <if test="userId != null and userId != ''">
                AND OS.USER_ID = #{userId}
            </if>
            <if test="day != null and day != ''">
                AND OS.SIGN_DATE = #{day}
            </if>
    </select>

    <select id="selectPmSign" resultType="SignStatistic">
    <![CDATA[
        SELECT
          OS.USER_ID      USERID,
          SU.NAME         USERNAME,
          SO.NAME         OFFICENAME,
          OS.SIGN_DATE    SIGNDATE,
          OS.SIGN_TIME    SIGNTIME,
          OS.ISLATE       ISLATE,
          OS.ISWORKOVER   ISWORKOVER
        FROM OA_SIGN OS,
          SYS_USER SU,
          SYS_OFFICE SO
        WHERE OS.USER_ID = SU.ID
            AND SU.OFFICE_ID = SO.ID
            AND IFNULL(OS.DEL_FLAG,'0') <> '1'
            AND IFNULL(SU.DEL_FLAG,'0') <> '1'
            AND IFNULL(SO.DEL_FLAG,'0') <> '1'
            AND IFNULL(SU.NEEDSIGN,'0') = '1'
            AND OS.ISWORKOVER = '0'
            AND OS.AMORPM = '1'
        ]]>
            <if test="userId != null and userId != ''">
                AND OS.USER_ID = #{userId}
            </if>
            <if test="day != null and day != ''">
                AND OS.SIGN_DATE = #{day}
            </if>
    </select>

    <select id="selectAmOutWork" resultType="SignStatistic">
    <![CDATA[
        SELECT
          SU.ID           USERID,
          SU.NAME         USERNAME,
          SO.NAME         OFFICENAME,
          #{day}          SIGNDATE,
          '上午'            SIGNTIME,
          '2'              ISLATE,
          ''              ISWORKOVER
        FROM SYS_USER SU,
          SYS_OFFICE SO
        WHERE SU.OFFICE_ID = SO.ID
            AND IFNULL(SU.DEL_FLAG,'0') <> '1'
            AND IFNULL(SO.DEL_FLAG,'0') <> '1'
            AND IFNULL(SU.NEEDSIGN,'0') = '1'
        ]]>
            <if test="userId != null and userId != ''">
                AND SU.ID = #{userId}
            </if>
    </select>

    <select id="selectPmOutWork" resultType="SignStatistic">
    <![CDATA[
        SELECT
          SU.ID           USERID,
          SU.NAME         USERNAME,
          SO.NAME         OFFICENAME,
          #{day}          SIGNDATE,
          '下午'            SIGNTIME,
          '2'              ISLATE,
          ''              ISWORKOVER
        FROM SYS_USER SU,
          SYS_OFFICE SO
        WHERE SU.OFFICE_ID = SO.ID
            AND IFNULL(SU.DEL_FLAG,'0') <> '1'
            AND IFNULL(SO.DEL_FLAG,'0') <> '1'
            AND IFNULL(SU.NEEDSIGN,'0') = '1'
        ]]>
            <if test="userId != null and userId != ''">
                AND SU.ID = #{userId}
            </if>
    </select>

    <!-- 查询当前日期 -->
    <select id="Tody" resultType="String">
        <![CDATA[
            SELECT DATE_SUB(CURDATE(),INTERVAL 1 DAY)
        ]]>
    </select>

    <!-- 查询个人假期记录 -->
    <select id="selectHolidays" resultType="SignStatistic">
        <![CDATA[
        SELECT 
             USERID,
             USERNAME,
             OFFICENAME,
             DATE,
             TIME,
             HO.AMORPM AMORPM,
             SIGNSTARTS,
             b.sign_time SIGNOUTTIME,
             (CASE WHEN b.sign_time IS NULL THEN '未签退' WHEN b.issign='1' THEN '早退'  ELSE '正常' END)    signoutstate,
             (CASE WHEN b.sign_time IS NULL THEN '1' WHEN b.issign='1' THEN '2' ELSE '3' END)    signoutflag
        FROM
            (       
                    SELECT
                        u.name         USERNAME,
                        u.id           USERID,
                        o.name         OFFICENAME,
                        #{day}        DATE,
                        '0'           AMORPM,
                        s.sign_time     TIME,
                        (CASE WHEN s.sign_time IS NULL THEN '未签到' WHEN s.islate='1' THEN '迟到'  ELSE '正常' END)    SIGNSTARTS
                    FROM sys_user u
                        LEFT JOIN oa_sign s
                          ON u.id = s.user_id
                        AND u.del_flag <> '1'
                        AND s.del_flag <> '1'
                        AND s.sign_date = #{day}
                        AND s.amorpm = '0',
                        sys_office o
                    WHERE o.del_flag <> '1'
                        AND u.office_id = o.id 
                    ]]>
                        AND u.id IN
                        <foreach collection="userList" item="user" index="index" open="(" close=")" separator=",">
                            #{user}
                        </foreach>
                UNION ALL 
                    <![CDATA[
                      SELECT
                            u.name         USERNAME,
                            u.id           USERID,
                            o.name         OFFICENAME,
                            #{day}        DATE,
                            '1'           AMORPM,
                            s.sign_time     TIME,
                            (CASE WHEN s.sign_time IS NULL THEN '未签到' WHEN s.islate='1' THEN '迟到'  ELSE '正常' END)    SIGNSTARTS
                        FROM sys_user u
                            LEFT JOIN oa_sign s
                              ON u.id = s.user_id
                            AND u.del_flag <> '1'
                            AND s.del_flag <> '1'
                            AND s.sign_date = #{day}
                            AND s.amorpm = '1',
                            sys_office o
                        WHERE o.del_flag <> '1'
                            AND u.office_id = o.id 
                        ]]>
                            AND u.id IN
                            <foreach collection="userList" item="user" index="index" open="(" close=")" separator=",">
                                #{user}
                            </foreach>
                   ) AS HO LEFT JOIN oa_signout b ON HO.AMORPM=b.amorpm and HO.DATE=b.sign_date and HO.USERID=b.user_id
                   <![CDATA[AND b.del_flag <> '1']]>
            ORDER BY HO.USERID
    </select>

    <!-- 查询个人工作日记录 -->
    <select id="selectWorkdays" resultType="SignStatistic">
        <![CDATA[
        SELECT
                USERID,
                USERNAME,
                OFFICENAME,
                DATE,
                TIME,
                WD.AMORPM AMORPM,
                SIGNSTARTS,
                b.sign_time SIGNOUTTIME,
                (CASE WHEN b.sign_time IS NULL THEN '未签退' WHEN b.issign='1' THEN '早退'  ELSE '正常' END)    signoutstate,
                (CASE WHEN b.sign_time IS NULL THEN '1' WHEN b.issign='1' THEN '2' ELSE '3' END)    signoutflag
        FROM  (
                SELECT
                    SU.ID           USERID,
                    SU.NAME         USERNAME,
                    SO.NAME         OFFICENAME,
                    SI.SIGN_DATE    DATE,
                    SI.SIGN_TIME    TIME,
                    SI.amorpm       AMORPM,
                    (CASE WHEN SI.ISLATE ='1' THEN '迟到' ELSE '正常' END)    SIGNSTARTS
                FROM SYS_USER SU,
                    SYS_OFFICE SO,
                    OA_SIGN SI
                WHERE SU.OFFICE_ID = SO.ID
                      AND SU.ID = SI.USER_ID
                      AND IFNULL(SU.DEL_FLAG,'0') <> '1'
                      AND IFNULL(SO.DEL_FLAG,'0') <> '1'
                      AND IFNULL(SI.DEL_FLAG,'0') <> '1'
                      AND SI.SIGN_DATE = #{day}
                      AND SI.USER_ID IN
                ]]>
                <foreach collection="userList" item="user" index="index" open="(" close=")" separator=",">
                     #{user}
                </foreach>
                     AND SI.USER_ID NOT IN (
                     SELECT SE.USER_ID USER_ID 
                         FROM OA_SECTION SE 
                         WHERE IFNULL(SE.DEL_FLAG,'0')<![CDATA[ <> ]]>'1'
                             AND SE.DATE = #{day}
                             AND SE.USER_ID IN 
                        <foreach collection="userList" item="user" index="index" open="(" close=")" separator=",">
                             #{user}
                        </foreach>
                            AND
                            (CASE WHEN SI.amorpm='1' THEN SE.AMORPM ='pm' ELSE SE.AMORPM ='am' END)
                )
                <![CDATA[
                UNION ALL 
                SELECT
                     SU.ID            USERID,
                     SU.NAME          USERNAME,
                     SO.NAME          OFFICENAME,
                     SE.DATE          DATE,
                     ''               TIME,
                     (CASE WHEN SE.AMORPM='pm' THEN '1' ELSE '0' END)    AMORPM,
                     (CASE WHEN SE.FLAG ='gongchu' THEN '公出' ELSE '请假' END)    SIGNSTARTS
                     FROM SYS_USER SU,
                     SYS_OFFICE SO,
                     OA_SECTION SE
                     WHERE SU.OFFICE_ID = SO.ID
                       AND SU.ID = SE.USER_ID
                       AND IFNULL(SU.DEL_FLAG,'0') <> '1'
                       AND IFNULL(SO.DEL_FLAG,'0') <> '1'
                       AND IFNULL(SE.DEL_FLAG,'0') <> '1'
                       AND SE.DATE = #{day}
                       AND SE.USER_ID IN
            ]]>
            <foreach collection="userList" item="user" index="index" open="(" close=")" separator=",">
                 #{user}
            </foreach>
            <![CDATA[
                UNION ALL 
                SELECT
                    SU.ID           USERID,
                    SU.NAME         USERNAME,
                    SO.NAME         OFFICENAME,
                    #{day}         DATE,
                    ''             TIME,
                    '0'           AMORPM,
                    '未签到'          SIGNSTARTS
                FROM SYS_USER SU ,
                    SYS_OFFICE SO
                WHERE SU.OFFICE_ID = SO.ID
                    AND IFNULL(SU.DEL_FLAG,'0') <> '1'
                    AND IFNULL(SO.DEL_FLAG,'0') <> '1'
                    AND SU.ID IN 
            ]]>
            <foreach collection="userList" item="user" index="index" open="(" close=")" separator=",">
                 #{user}
            </foreach>
            <![CDATA[
                    AND SU.ID NOT IN (
                         SELECT SI.USER_ID USER_ID 
                         FROM OA_SIGN SI
                             WHERE IFNULL(SI.DEL_FLAG,'0') <> '1'
                             AND SI.SIGN_DATE = #{day}
                             AND SI.USER_ID IN 
                            ]]>
                            <foreach collection="userList" item="user" index="index" open="(" close=")" separator=",">
                                 #{user}
                            </foreach>
                            <![CDATA[
                             AND SI.AMORPM = '0'
                         UNION 
                         SELECT SE.USER_ID USER_ID 
                         FROM OA_SECTION SE 
                             WHERE IFNULL(SE.DEL_FLAG,'0') <> '1'
                             AND SE.DATE = #{day}
                             AND SE.USER_ID IN 
                            ]]>
                            <foreach collection="userList" item="user" index="index" open="(" close=")" separator=",">
                                 #{user}
                            </foreach>
                            <![CDATA[
                             AND SE.AMORPM = 'am')
                UNION ALL 
                SELECT
                    SU.ID           USERID,
                    SU.NAME         USERNAME,
                    SO.NAME         OFFICENAME,
                    #{day}         DATE,
                    ''            TIME,
                    '1'          AMORPM,
                    '未签到'          SIGNSTARTS
                FROM SYS_USER SU ,
                    SYS_OFFICE SO
                WHERE SU.OFFICE_ID = SO.ID
                     AND IFNULL(SU.DEL_FLAG,'0') <> '1'
                     AND IFNULL(SO.DEL_FLAG,'0') <> '1'
                     AND SU.ID IN 
                    ]]>
                    <foreach collection="userList" item="user" index="index" open="(" close=")" separator=",">
                         #{user}
                    </foreach>
                    <![CDATA[
                     AND SU.ID NOT IN (
                         SELECT SI.USER_ID USER_ID 
                         FROM OA_SIGN SI
                         WHERE IFNULL(SI.DEL_FLAG,'0') <> '1'
                             AND SI.SIGN_DATE = #{day}
                             AND SI.USER_ID IN 
                        ]]>
                        <foreach collection="userList" item="user" index="index" open="(" close=")" separator=",">
                             #{user}
                        </foreach>
                        <![CDATA[
                             AND SI.AMORPM = '1'
                         UNION 
                         SELECT SE.USER_ID USER_ID 
                         FROM OA_SECTION SE 
                         WHERE IFNULL(SE.DEL_FLAG,'0') <> '1'
                             AND SE.DATE = #{day}
                             AND SE.USER_ID IN 
                        ]]>
                        <foreach collection="userList" item="user" index="index" open="(" close=")" separator=",">
                             #{user}
                        </foreach>
                        <![CDATA[
                             AND SE.AMORPM = 'pm')
            ) AS WD LEFT JOIN oa_signout b ON WD.AMORPM=b.amorpm and WD.DATE=b.sign_date and WD.USERID=b.user_id
            AND b.del_flag <> '1'
            ORDER BY WD.USERID,WD.OFFICENAME  
        ]]>
    </select>

</mapper>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值