WorkTimeOrderMapper.xml 20.1 KB
Newer Older
nie'hong's avatar
nie'hong committed
1 2 3 4 5 6
<?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="cn.wisenergy.mapper.WorkTimeOrderMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.wisenergy.model.app.WorkTimeOrder">
nie'hong's avatar
nie'hong committed
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
        <id column="work_id" property="workId"/>
        <result column="user_id" property="userId"/>
        <result column="project_id" property="projectId"/>
        <result column="dept_id" property="deptId"/>
        <result column="work_time" property="workTime"/>
        <result column="work_day" property="workDay"/>
        <result column="status" property="status"/>
        <result column="reviewer_id" property="reviewerId"/>
        <result column="des" property="des"/>
        <result column="reason" property="reason"/>
        <result column="type" property="type"/>
        <result column="is_overtime" property="isOvertime"/>
        <result column="reject_time" property="rejectTime"/>
        <result column="create_time" property="createTime"/>
        <result column="modify_time" property="modifyTime"/>
    </resultMap>

    <resultMap id="userWorkTimeStatisticsByProject" type="cn.wisenergy.model.dto.UserWorkTimeStatisticsByProject">
        <result property="userId" column="user_id"/>
        <result property="userName" column="user_name"/>
        <collection property="projectWorkTimeAndType" ofType="cn.wisenergy.model.dto.ProjectWorkTimeAndType">
            <result property="projectId" column="project_id"/>
nie'hong's avatar
nie'hong committed
29
            <result property="workTimeType" column="work_time_type"/>
nie'hong's avatar
nie'hong committed
30
            <result property="projectName" column="project_name"/>
nie'hong's avatar
nie'hong committed
31
            <result property="overTime" column="over_time"/>
nie'hong's avatar
nie'hong committed
32
            <result property="normalTime" column="normal_time"/>
nie'hong's avatar
nie'hong committed
33
        </collection>
nie'hong's avatar
nie'hong committed
34 35
    </resultMap>

cq990612's avatar
cq990612 committed
36
    <resultMap id="workTimeAndCostCollect" type="cn.wisenergy.model.dto.WorkTimeAndCostCollect">
nie'hong's avatar
nie'hong committed
37
        <result property="type" column="type"/>
nie'hong's avatar
nie'hong committed
38
        <result property="typeName" column="type_name"/>
cq990612's avatar
cq990612 committed
39
        <collection property="deptProjectWorkTimeAndCosts" resultMap="deptProjectWorkTimeAndCosts">
nie'hong's avatar
nie'hong committed
40 41 42 43 44 45
        </collection>
    </resultMap>

    <resultMap id="deptProjectWorkTimeAndCosts" type="cn.wisenergy.model.dto.DeptProjectWorkTimeAndCost">
        <result property="deptId" column="dept_id"/>
        <result property="deptName" column="dept_name"/>
cq990612's avatar
cq990612 committed
46 47
        <collection property="projectWorkTimeAndCostStatistics"
                    ofType="cn.wisenergy.model.dto.ProjectWorkTimeAndCostStatistics">
nie'hong's avatar
nie'hong committed
48 49
            <result property="projectId" column="project_id"/>
            <result property="projectName" column="project_name"/>
nie'hong's avatar
nie'hong committed
50
            <result property="statisticsTime" column="statistics_time"/>
nie'hong's avatar
nie'hong committed
51 52 53 54 55
            <result property="totalTime" column="total_time"/>
            <result property="cost" column="cost"/>
        </collection>
    </resultMap>

nie'hong's avatar
nie'hong committed
56

cq990612's avatar
cq990612 committed
57 58
    <!-- 通用查询结果列 -->
    <sql id="vals">
cq990612's avatar
cq990612 committed
59
       #{userId},#{projectId},#{deptId},#{workTime},#{workDay},#{status},#{reviewerId},#{des},#{reason},#{type},#{isOvertime},#{rejectTime},now(),#{modifyTime}
cq990612's avatar
cq990612 committed
60 61
    </sql>
    <sql id="cols_exclude_id">
cq990612's avatar
cq990612 committed
62
      user_id, project_id, dept_id, work_time, work_day, status, reviewer_id, des, reason, type, is_overtime,reject_time, create_time,modify_time
nie'hong's avatar
nie'hong committed
63 64 65 66 67 68 69 70
    </sql>

    <sql id="criteria">
        <if test="workId != null">and work_id = #{workId}</if>
        <if test="userId != null">and user_id = #{userId}</if>
        <if test="projectId != null">and project_id =#{projectId}</if>
        <if test="deptId != null">and dept_id = #{deptId}</if>
        <if test="workTime != null">and work_time = #{workTime}</if>
nie'hong's avatar
nie'hong committed
71
        <if test="workDay != null">and work_day = #{workDay}</if>
nie'hong's avatar
nie'hong committed
72 73 74 75 76 77 78
        <if test=" status != null">and `status` = #{status}</if>
        <if test=" reviewerId != null">and reviewer_id = #{reviewerId}</if>
        <if test="des != null">and des =#{des}</if>
        <if test="reason != null">and reason = #{reason}</if>
        <if test="type != null">and type = #{type}</if>
        <if test="isOvertime != null">and is_overtime = #{isOvertime}</if>
        <if test="createTime != null">and create_time &gt;= #{createTime}</if>
cq990612's avatar
cq990612 committed
79
        <if test="rejectTime !=null">and reject_time = #{rejectTime}</if>
nie'hong's avatar
nie'hong committed
80 81
    </sql>

cq990612's avatar
cq990612 committed
82
    <resultMap id="dayWorkTimeAndType" type="cn.wisenergy.model.dto.DayWorkTimeAndType">
nie'hong's avatar
nie'hong committed
83
        <result property="userId" column="user_id"/>
cq990612's avatar
cq990612 committed
84 85 86 87 88 89 90 91
        <result property="day" column="day(work_day)"/>
        <result property="type" column="type"/>
        <result property="workTime" column="sum(work_time)"/>
    </resultMap>

    <resultMap id="monthlyWorkHourStatistics" type="cn.wisenergy.model.dto.MonthlyWorkingHoursStatistics">
        <result property="count" column="count(1)"/>
        <result property="workTime" column="sum(work_time)"/>
92 93 94
        <result property="projectType" column="id"/>
        <result property="typeName" column="name"/>
        <result property="approved" column="approved"/>
cq990612's avatar
cq990612 committed
95 96 97 98 99 100
    </resultMap>

    <sql id="table">
        work_time_order
    </sql>

nie'hong's avatar
nie'hong committed
101
    <insert id="save" keyProperty="workId" useGeneratedKeys="true">
cq990612's avatar
cq990612 committed
102 103 104 105 106 107 108 109
        insert into
        <include refid="table"/>
        (<include refid="cols_exclude_id"/>)
        value(
        <include refid="vals"/>
        )
    </insert>

cq990612's avatar
cq990612 committed
110

cq990612's avatar
cq990612 committed
111 112 113
    <update id="updateByIds">
        UPDATE
        <include refid="table"/>
nie'hong's avatar
nie'hong committed
114
        SET status = 2,reviewer_id = #{reviewerId},modify_time = now()
cq990612's avatar
cq990612 committed
115 116 117 118 119
        WHERE work_id IN
        <foreach collection="ids" item="id" open="(" close=")" separator=",">
            #{id}
        </foreach>
    </update>
nie'hong's avatar
nie'hong committed
120

cq990612's avatar
cq990612 committed
121 122 123
    <update id="updateStatusById">
        UPDATE
        <include refid="table"/>
cq990612's avatar
cq990612 committed
124
        SET status = 3,reason = #{reason},reviewer_id = #{reviewerId},modify_time=now(),reject_time=now()
cq990612's avatar
cq990612 committed
125
        WHERE work_id = #{id}
cq990612's avatar
cq990612 committed
126 127 128 129 130 131

    </update>
    <update id="updateAutoExamine">
        UPDATE
        <include refid="table"/>
        SET status = 5,modify_time=now()
nie'hong's avatar
nie'hong committed
132
        <where>work_id IN
cq990612's avatar
cq990612 committed
133 134 135 136
            <foreach collection="workIds" item="id" open="(" close=")" separator=",">
                #{id}
            </foreach>
        </where>
cq990612's avatar
cq990612 committed
137 138 139
    </update>


cq990612's avatar
cq990612 committed
140
    <select id="getByDay" resultType="cn.wisenergy.model.app.WorkTimeOrder" flushCache="true">
nie'hong's avatar
nie'hong committed
141 142 143 144
        SELECT
        <include refid="Base_Column_List"/>
        FROM
        <include refid="table"/>
cq990612's avatar
cq990612 committed
145 146 147
        <where>
            <if test="null !=userId">
                <if test="null != userId">
nie'hong's avatar
nie'hong committed
148
                    AND user_id = #{userId}
cq990612's avatar
cq990612 committed
149 150
                </if>
                <if test="null != workDay">
nie'hong's avatar
nie'hong committed
151
                    AND DATE_FORMAT(work_day, '%Y%m%d') = DATE_FORMAT(#{workDay} ,'%Y%m%d')
cq990612's avatar
cq990612 committed
152 153 154 155 156 157 158 159 160 161 162
                </if>
            </if>
        </where>

    </select>
    <select id="queryByPage" resultType="cn.wisenergy.model.app.WorkTimeOrder">
        SELECT
        <include refid="Base_Column_List"/>
        FROM
        <include refid="table"/>
        <where>
cq990612's avatar
cq990612 committed
163 164 165 166
            <if test="null != projectIds and projectIds.size()>0">
                AND project_id IN
                <foreach collection="projectIds" item="projectId" open="(" close=")" separator=",">
                    #{projectId}
cq990612's avatar
cq990612 committed
167
                </foreach>
cq990612's avatar
cq990612 committed
168 169 170 171 172 173
                <if test=" null != status and status.size()>0">
                    AND status IN
                    <foreach collection="status" item="sta" open="(" close=")" separator=",">
                        #{sta}
                    </foreach>
                </if>
cq990612's avatar
cq990612 committed
174
            </if>
cq990612's avatar
cq990612 committed
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
            <if test="null != types and types.size()>0">
                OR (type IN
                <foreach collection="types" item="type" open="(" close=")" separator=",">
                    #{type}
                </foreach>

                <if test=" null != deptId ">
                    AND dept_id = #{deptId}
                </if>
                <if test=" null != status and status.size()>0">
                    AND status in
                    <foreach collection="status" item="sta" open="(" close=")" separator=",">
                        #{sta}
                    </foreach>
                </if>
                )
cq990612's avatar
cq990612 committed
191 192
            </if>
        </where>
cq990612's avatar
cq990612 committed
193
        ORDER BY work_day DESC
cq990612's avatar
cq990612 committed
194
    </select>
nie'hong's avatar
nie'hong committed
195 196 197

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
cq990612's avatar
cq990612 committed
198
        work_id, user_id, project_id,  dept_id, work_time, work_day, status, reviewer_id, des, reason, type, is_overtime, create_time, modify_time,reject_time
nie'hong's avatar
nie'hong committed
199 200
    </sql>

nie'hong's avatar
nie'hong committed
201
    <select id="statisticsByProjectType" resultMap="monthlyWorkHourStatistics">
nie'hong's avatar
nie'hong committed
202 203
        select ty.id AS id , ty.name AS name ,count(1),sum(work_time)
        from work_time_order t join work_type ty on t.type = ty.id
nie'hong's avatar
nie'hong committed
204
        where user_id = #{userId} AND work_day >= #{currentMonthFirstDay} AND t.status != 3
nie'hong's avatar
nie'hong committed
205
        group by type
nie'hong's avatar
nie'hong committed
206
        order by ty.sort
nie'hong's avatar
nie'hong committed
207 208 209
    </select>

    <select id="listByDateAndUserId" resultMap="dayWorkTimeAndType">
nie'hong's avatar
nie'hong committed
210 211 212 213 214 215 216 217 218 219
        select user_id,day(work_day),CASE when `type` = 3 then "请假" when `type` = 4 then "调休" else "正常" end AS `type`,
        sum(work_time)
        from
        <include refid="table"/>
        where year(work_day) = #{year} AND month(work_day) = #{month} AND (status = 2 OR status=5)AND user_id IN
        <foreach collection="userIds" separator="," close=")" item="userId" open="(">
            #{userId}
        </foreach>
        group by user_id,day(work_day), CASE when `type` = 3 then "请假" when `type` = 4 then "调休" else "正常" end
        order by day(work_day)
nie'hong's avatar
nie'hong committed
220
    </select>
cq990612's avatar
cq990612 committed
221

nie'hong's avatar
nie'hong committed
222 223
    <select id="getCountByCondition" resultType="integer" parameterType="map">
        select count(1)
nie'hong's avatar
nie'hong committed
224 225
        from
        <include refid="table"/>
nie'hong's avatar
nie'hong committed
226 227
        <where>
            <include refid="criteria"/>
nie'hong's avatar
nie'hong committed
228
            <if test="startModifyTime != null">
nie'hong's avatar
nie'hong committed
229 230
                AND modify_time>=#{startModifyTime}
            </if>
nie'hong's avatar
nie'hong committed
231
            <if test="startWorkDay != null">
nie'hong's avatar
nie'hong committed
232
                AND work_day>=#{startWorkDay}
nie'hong's avatar
nie'hong committed
233
            </if>
nie'hong's avatar
nie'hong committed
234
            <if test="projectIdList != null">
nie'hong's avatar
nie'hong committed
235
                AND project_id IN
nie'hong's avatar
nie'hong committed
236
                <foreach collection="projectIdList" item="projectId" open="(" close=")" separator=",">
nie'hong's avatar
nie'hong committed
237 238 239 240 241
                    #{projectId}
                </foreach>
            </if>
            <if test="statusArray != null">
                AND `status` IN
nie'hong's avatar
nie'hong committed
242
                <foreach collection="statusArray" item="workStatus" open="(" close=")" separator=",">
cq990612's avatar
cq990612 committed
243
                    #{workStatus}
nie'hong's avatar
nie'hong committed
244
                </foreach>
nie'hong's avatar
nie'hong committed
245
            </if>
nie'hong's avatar
nie'hong committed
246
            <if test="typeList != null">
nie'hong's avatar
nie'hong committed
247
                AND `type` IN
nie'hong's avatar
nie'hong committed
248 249 250 251
                <foreach collection="typeList" item="type" open="(" close=")" separator=",">
                    #{type}
                </foreach>
            </if>
nie'hong's avatar
nie'hong committed
252

nie'hong's avatar
nie'hong committed
253 254
        </where>
    </select>
nie'hong's avatar
nie'hong committed
255

nie'hong's avatar
nie'hong committed
256
    <select id="getWorkTimeAndCostCollect" resultMap="workTimeAndCostCollect">
nie'hong's avatar
nie'hong committed
257
        SELECT t.type AS type, d.id AS dept_id,dept_name,
nie'hong's avatar
nie'hong committed
258 259
        IF (YEAR (work_day) = YEAR (NOW()), concat(YEAR (work_day),'年',MONTH (work_day),'月') , concat(YEAR(work_day),
        '年')) AS statistics_time ,SUM(t.work_time)/8 AS
nie'hong's avatar
nie'hong committed
260
        total_time, SUM(t.work_time * s.day_salary)/8 AS cost,ty.sort AS ty_sort, d.sort AS d_sort
cq990612's avatar
cq990612 committed
261 262 263 264
        FROM work_time_order t join work_dept d on d.id = t.dept_id join work_user_salary s on s.user_id = t.user_id
        join work_type ty on t.type = ty.id
        WHERE t.status IN (2,5) AND s.create_time &lt; t.work_day AND s.end_time > t.work_day AND year(t.work_day) &lt;
        year(NOW())
nie'hong's avatar
nie'hong committed
265 266
        <if test="firstDayOfMonth != null">
            AND work_day >= #{firstDayOfMonth}
nie'hong's avatar
nie'hong committed
267
        </if>
nie'hong's avatar
nie'hong committed
268
        <if test="deptId != null">
nie'hong's avatar
nie'hong committed
269 270 271 272 273 274
            AND t.dept_id = #{deptId}
        </if>
        AND t.type in
        <foreach collection="types" item="type" open="(" close=")" separator=",">
            #{type}
        </foreach>
275 276 277
        <if test="centreId != null">
            AND centre_id = #{centreId}
        </if>
nie'hong's avatar
nie'hong committed
278 279 280 281 282 283 284 285
        group by t.type,d.id, dept_name,year(work_day)

        union

        SELECT t.type AS type, d.id AS dept_id,dept_name,
        IF (YEAR (work_day) = YEAR (NOW()), concat(YEAR (work_day),'年',MONTH (work_day),'月') , concat(YEAR(work_day),
        '年')) AS statistics_time ,SUM(t.work_time)/8 AS
        total_time, SUM(t.work_time * s.day_salary)/8 AS cost,ty.sort AS ty_sort, d.sort AS d_sort
cq990612's avatar
cq990612 committed
286 287 288 289
        FROM work_time_order t join work_dept d on d.id = t.dept_id join work_user_salary s on s.user_id = t.user_id
        join work_type ty on t.type = ty.id
        WHERE t.status IN (2,5) AND s.create_time &lt; t.work_day AND s.end_time > t.work_day AND year(t.work_day) =
        year(NOW())
nie'hong's avatar
nie'hong committed
290 291 292 293 294 295 296 297 298 299 300 301 302 303 304
        <if test="firstDayOfMonth != null">
            AND work_day >= #{firstDayOfMonth}
        </if>
        <if test="deptId != null">
            AND t.dept_id = #{deptId}
        </if>
        AND t.type in
        <foreach collection="types" item="type" open="(" close=")" separator=",">
            #{type}
        </foreach>
        <if test="centreId != null">
            AND centre_id = #{centreId}
        </if>
        group by t.type,d.id, dept_name,month(work_day)
        ORDER BY ty_sort, d_sort, statistics_time
nie'hong's avatar
nie'hong committed
305 306
    </select>

nie'hong's avatar
nie'hong committed
307
    <select id="getDaysByDateAndStatus" resultType="date">
308
        select distinct(work_day)
nie'hong's avatar
nie'hong committed
309 310
        from
        <include refid="table"/>
cq990612's avatar
cq990612 committed
311 312
        where year(#{date}) = year(work_day) AND month(#{date}) = month(work_day) AND user_id = #{userId} AND status !=
        3
cq990612's avatar
cq990612 committed
313
    </select>
nie'hong's avatar
nie'hong committed
314

cq990612's avatar
cq990612 committed
315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332
    <select id="geByMonth" resultType="cn.wisenergy.model.app.WorkTimeOrder">
        SELECT
        <include refid="Base_Column_List"/>
        FROM
        <include refid="table"/>
        <where>
            <if test="null != userId">
                AND user_id = #{userId}
            </if>
            <if test="null != workMonth">
                AND DATE_FORMAT(work_day, '%Y%m') = DATE_FORMAT(#{workMonth} ,'%Y%m')
            </if>
            <if test="null != status">
                AND status = #{status}
            </if>
        </where>


cq990612's avatar
cq990612 committed
333 334 335 336 337 338 339 340
    </select>
    <select id="getAutoOrder" resultType="cn.wisenergy.model.app.WorkTimeOrder">
        select
        <include refid="Base_Column_List"/>
        FROM
        <include refid="table"/>
        <where>
            status IN (1,4)
cq990612's avatar
cq990612 committed
341
            AND TIMESTAMPDIFF(HOUR,create_time,now()) > #{autoExamine}
cq990612's avatar
cq990612 committed
342 343 344
        </where>


345
    </select>
nie'hong's avatar
nie'hong committed
346 347 348


    <select id="getUserProjectWorkTimeStatistics" resultMap="userWorkTimeStatisticsByProject">
cq990612's avatar
cq990612 committed
349 350 351 352
        SELECT
        <if test="isAll">u.id AS user_id, u.`name` AS user_name,</if>
        <if test="!isAll">'合计' AS user_name ,</if>
        t.project_id AS project_id, t.type AS work_time_type, p.project_name
nie'hong's avatar
nie'hong committed
353
        AS project_name,
cq990612's avatar
cq990612 committed
354 355 356 357
        IF(t.is_overtime = 0,
        <if test="!isAll">0</if>
        <if test="isAll">null</if>, sum(t.work_time)) AS over_time, IF(t.is_overtime=1,
        <if test="!isAll">0</if>
nie'hong's avatar
nie'hong committed
358
        <if test="isAll">null</if>, sum(t.work_time)) AS normal_time
cq990612's avatar
cq990612 committed
359 360
        from work_time_order t left join work_project p on t.project_id = p.id join work_user u on t.user_id = u.id join
        work_type ty on t.type = ty.id
361
        where
nie'hong's avatar
nie'hong committed
362 363
        t.status in (2,5) AND
        t.work_day &lt;= #{endDate}
nie'hong's avatar
nie'hong committed
364
        AND t.dept_id = #{deptId}
365
        <if test="startDate != null">
nie'hong's avatar
nie'hong committed
366
            AND t.work_day >= #{startDate}
nie'hong's avatar
nie'hong committed
367
        </if>
nie'hong's avatar
nie'hong committed
368
        GROUP BY <if test="isAll">u.id,u.`name`,</if> t.project_id,t.type,p.project_name, t.is_overtime
cq990612's avatar
cq990612 committed
369 370 371 372
        ORDER BY
        <if test="isAll">convert(u.`name` using gbk) asc</if>
        <if test="!isAll">ty.sort</if>
        ,t.project_id
nie'hong's avatar
nie'hong committed
373
    </select>
374 375 376

    <select id="selectCountByTypeAndStatus" resultType="cn.wisenergy.model.dto.MonthlyWorkingHoursStatistics">
        select type AS projectType, count(1) AS approved
cq990612's avatar
cq990612 committed
377 378
        from
        <include refid="table"/>
nie'hong's avatar
nie'hong committed
379
        where user_id = #{userId} and work_day >= #{firstDayOfMonth} AND `type` is not null AND status in
380
        <foreach collection="status" open="(" close=")" separator="," item="s">
cq990612's avatar
cq990612 committed
381 382 383
            #{s}
        </foreach>
        GROUP BY type
384
    </select>
nie'hong's avatar
nie'hong committed
385 386

    <select id="selectListByType" resultMap="userWorkTimeStatisticsByProject">
cq990612's avatar
cq990612 committed
387 388 389 390 391 392 393 394
        SELECT
        <if test="isAll">u.id AS user_id, u.`name` AS user_name,</if>
        <if test="!isAll">'合计' AS user_name,</if>
        t.type AS work_time_type,
        IF(t.is_overtime = 0,
        <if test="!isAll">0</if>
        <if test="isAll">null</if>, sum(t.work_time)) AS over_time, IF(t.is_overtime=1,
        <if test="!isAll">0</if>
nie'hong's avatar
nie'hong committed
395
        <if test="isAll">null</if>, sum(t.work_time)) AS normal_time
nie'hong's avatar
nie'hong committed
396
        from work_time_order t JOIN work_user u ON t.user_id = u.id
nie'hong's avatar
nie'hong committed
397
        where
nie'hong's avatar
nie'hong committed
398 399
        t.work_day &lt;= #{endDate} AND t.status IN (2, 5)
        AND t.type in
nie'hong's avatar
nie'hong committed
400 401 402
        <foreach collection="queryType" item="type" open="(" close=")" separator=",">
            #{type}
        </foreach>
nie'hong's avatar
nie'hong committed
403 404 405 406
        <if test="startDate != null">
            AND t.work_day >= #{startDate}
        </if>
        AND user_id in (
nie'hong's avatar
nie'hong committed
407 408 409 410 411 412 413 414 415 416 417 418 419 420
        select user_id
        from work_project p JOIN work_user_project up ON p.id = up.project_id
        <if test="isConclusion != null">
            AND p.is_conclusion = #{isConclusion}
        </if>
        <if test="deptId != null and managerId == null">
            AND p.dept_id = #{deptId}
        </if>
        <if test="deptId != null and managerId != null">
            AND (p.dept_id = #{deptId} OR p.manager_id = #{managerId})
        </if>
        <if test="managerId != null and deptId == null">
            AND p.manager_id = #{managerId}
        </if>
nie'hong's avatar
nie'hong committed
421 422
        )
        GROUP BY <if test="isAll">u.id,u.`name`,</if> t.type, t.is_overtime
nie'hong's avatar
nie'hong committed
423
    </select>
cq990612's avatar
cq990612 committed
424 425 426 427 428 429

    <resultMap id="DeptUserCollectDto" type="cn.wisenergy.model.dto.DeptUserCollectDto">
        <result property="userId" column="user_id"/>
        <result property="userName" column="user_name"/>
        <result property="deptId" column="dept_id"/>
        <result property="deptName" column="dept_name"/>
cq990612's avatar
cq990612 committed
430
        <result property="createTime" column="create_time"/>
cq990612's avatar
cq990612 committed
431 432
        <collection property="workDay"
                    javaType="ArrayList"
cq990612's avatar
cq990612 committed
433
                    ofType="java.util.Date">
cq990612's avatar
cq990612 committed
434 435 436 437 438 439
            <result column="work_day"/>
        </collection>
    </resultMap>


    <select id="getDeptNotOrderInfo" resultMap="DeptUserCollectDto">
cq990612's avatar
cq990612 committed
440
        select d.id as 'dept_id',d.dept_name,u.id as 'user_id',u.name as 'user_name',u.create_time,c.work_day
cq990612's avatar
cq990612 committed
441 442
        from work_user u LEFT JOIN work_collect c ON u.id = c.user_id LEFT JOIN work_dept d on u.dept_id = d.id
        <where>
cq990612's avatar
cq990612 committed
443
            u.submit_order = 1 and u.`status` = 1 and (c.`status` !=3 and c.total_time = 8
cq990612's avatar
cq990612 committed
444 445 446 447 448 449 450 451 452
            <if test=" startDate !=null and endDate !=null">
                and c.work_day between #{startDate} and #{endDate}
            </if>
            <if test="depts !=null and depts.size()>0">
                AND d.id in
                <foreach collection="depts" item="dept" open="(" close=")" separator=",">
                    #{dept}
                </foreach>
            </if>
cq990612's avatar
cq990612 committed
453 454 455 456 457 458
            ) or (c.work_day is null and u.submit_order = 1 and u.`status` = 1
            <if test="depts !=null and depts.size()>0">
                AND d.id in
                <foreach collection="depts" item="dept" open="(" close=")" separator=",">
                    #{dept}
                </foreach>
cq990612's avatar
cq990612 committed
459 460
            </if>
            )
cq990612's avatar
cq990612 committed
461

cq990612's avatar
cq990612 committed
462
        </where>
cq990612's avatar
cq990612 committed
463
        ORDER BY CONVERT( u.name USING gbk )
cq990612's avatar
cq990612 committed
464 465 466


    </select>
cq990612's avatar
cq990612 committed
467 468 469 470 471 472 473 474 475 476
    <select id="getOrderChangePage" resultType="cn.wisenergy.model.dto.OrderChangePageDto">
        select o.project_id,p.project_name,u.name 'user_name',o.work_day,
        o.work_time,t.name 'type_name',o.des,o.status
        from work_time_order o LEFT JOIN work_type t on o.type = t.id
        LEFT JOIN work_user u on o.user_id = u.id
        LEFT JOIN work_project p on o.project_id = p.id
        <where>
            <if test="projectId !=null">
                AND o.project_id = #{projectId}
            </if>
cq990612's avatar
cq990612 committed
477
            <if test="type !=null ">
cq990612's avatar
cq990612 committed
478 479
                AND o.type = #{type}
            </if>
cq990612's avatar
cq990612 committed
480 481 482
            <if test="deptId !=null">
                AND o.dept_id = #{deptId}
            </if>
cq990612's avatar
cq990612 committed
483 484 485 486 487 488 489 490 491 492 493 494
            <if test="startDate !=null">
                AND o.work_day >= #{startDate}
            </if>
            <if test="endDate !=null">
                AND o.work_day &lt;= #{endDate}
            </if>
            <if test="userName !=null">
                AND u.name like  concat('%',#{userName},'%')
            </if>
        </where>
        ORDER BY CONVERT( u.name USING gbk ), o.work_day desc
    </select>
nie'hong's avatar
nie'hong committed
495
</mapper>