WorkTimeOrderMapper.xml 19 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()
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
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 140
    </update>


    <select id="getByDay" resultType="cn.wisenergy.model.app.WorkTimeOrder">
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 252 253 254
                <foreach collection="typeList" item="type" open="(" close=")" separator=",">
                    #{type}
                </foreach>
            </if>
            <if test="deptIdList != null">
                AND `type` IN
                <foreach collection="deptIdList" item="dept" open="(" close=")" separator=",">
nie'hong's avatar
nie'hong committed
255 256 257 258 259
                    #{type}
                </foreach>
            </if>
        </where>
    </select>
nie'hong's avatar
nie'hong committed
260

nie'hong's avatar
nie'hong committed
261
    <select id="getWorkTimeAndCostCollect" resultMap="workTimeAndCostCollect">
nie'hong's avatar
nie'hong committed
262
        SELECT t.type AS type, d.id AS dept_id,dept_name,
nie'hong's avatar
nie'hong committed
263 264
        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
265
        total_time, SUM(t.work_time * s.day_salary)/8 AS cost,ty.sort AS ty_sort, d.sort AS d_sort
nie'hong's avatar
nie'hong committed
266
        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
nie'hong's avatar
nie'hong committed
267
        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
268 269
        <if test="firstDayOfMonth != null">
            AND work_day >= #{firstDayOfMonth}
nie'hong's avatar
nie'hong committed
270
        </if>
nie'hong's avatar
nie'hong committed
271
        <if test="deptId != null">
nie'hong's avatar
nie'hong committed
272 273 274 275 276 277
            AND t.dept_id = #{deptId}
        </if>
        AND t.type in
        <foreach collection="types" item="type" open="(" close=")" separator=",">
            #{type}
        </foreach>
278 279 280
        <if test="centreId != null">
            AND centre_id = #{centreId}
        </if>
nie'hong's avatar
nie'hong committed
281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305
        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
        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())
        <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
306 307
    </select>

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

cq990612's avatar
cq990612 committed
316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333
    <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
334 335 336 337 338 339 340 341
    </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
342
            AND TIMESTAMPDIFF(HOUR,create_time,now()) > #{autoExamine}
cq990612's avatar
cq990612 committed
343 344 345
        </where>


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


    <select id="getUserProjectWorkTimeStatistics" resultMap="userWorkTimeStatisticsByProject">
nie'hong's avatar
nie'hong committed
350 351 352 353 354 355
        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
        AS project_name,
        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>
        <if test="isAll">null</if>, sum(t.work_time)) AS normal_time
nie'hong's avatar
nie'hong committed
356
        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
357
        where
nie'hong's avatar
nie'hong committed
358 359
        t.status in (2,5) AND
        t.work_day &lt;= #{endDate}
nie'hong's avatar
nie'hong committed
360
        AND t.dept_id = #{deptId}
361
        <if test="startDate != null">
nie'hong's avatar
nie'hong committed
362
            AND t.work_day >= #{startDate}
nie'hong's avatar
nie'hong committed
363
        </if>
nie'hong's avatar
nie'hong committed
364 365
        GROUP BY <if test="isAll">u.id,u.`name`,</if> t.project_id,t.type,p.project_name, t.is_overtime
        ORDER BY <if test="isAll">convert(u.`name` using gbk) asc</if>
nie'hong's avatar
nie'hong committed
366
        <if test="!isAll">ty.sort</if> ,t.project_id
nie'hong's avatar
nie'hong committed
367
    </select>
368 369 370

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

    <select id="selectListByType" resultMap="userWorkTimeStatisticsByProject">
nie'hong's avatar
nie'hong committed
381 382 383 384 385
        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>
        <if test="isAll">null</if>, sum(t.work_time)) AS normal_time
nie'hong's avatar
nie'hong committed
386
        from work_time_order t JOIN work_user u ON t.user_id = u.id
nie'hong's avatar
nie'hong committed
387
        where
nie'hong's avatar
nie'hong committed
388 389
        t.work_day &lt;= #{endDate} AND t.status IN (2, 5)
        AND t.type in
nie'hong's avatar
nie'hong committed
390 391 392
        <foreach collection="queryType" item="type" open="(" close=")" separator=",">
            #{type}
        </foreach>
nie'hong's avatar
nie'hong committed
393 394 395 396
        <if test="startDate != null">
            AND t.work_day >= #{startDate}
        </if>
        AND user_id in (
nie'hong's avatar
nie'hong committed
397 398 399 400 401 402 403 404 405 406 407 408 409 410
        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
411 412
        )
        GROUP BY <if test="isAll">u.id,u.`name`,</if> t.type, t.is_overtime
nie'hong's avatar
nie'hong committed
413
    </select>
cq990612's avatar
cq990612 committed
414 415 416 417 418 419

    <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
420
        <result property="createTime" column="create_time"/>
cq990612's avatar
cq990612 committed
421 422 423 424 425 426 427 428 429
        <collection property="workDay"
                    javaType="ArrayList"
                    ofType = "java.util.Date">
            <result column="work_day"/>
        </collection>
    </resultMap>


    <select id="getDeptNotOrderInfo" resultMap="DeptUserCollectDto">
cq990612's avatar
cq990612 committed
430
        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
431 432
        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
433
            u.submit_order = 1 and u.`status` = 1 and (c.`status` !=3 and c.total_time = 8
cq990612's avatar
cq990612 committed
434 435 436 437 438 439 440 441 442
            <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
443 444 445 446 447 448 449 450
            ) 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>
            </if>)

cq990612's avatar
cq990612 committed
451
        </where>
cq990612's avatar
cq990612 committed
452
        ORDER BY CONVERT( u.name USING gbk )
cq990612's avatar
cq990612 committed
453 454 455


    </select>
nie'hong's avatar
nie'hong committed
456
</mapper>