LEFT JOIN jl_key_dm_borrow_application b ON b.id = d.application_id
ba.department_name,
ad.material_id,
ad.material_name,
ad.apply_quantity,
ad.returned_quantity
from jl_key_dm_borrow_application_detail ad
LEFT JOIN jl_key_dm_borrow_application ba on ad.application_id = ba.id
LEFT JOIN jl_key_dm_material m on ad.material_id = m.id
LEFT JOIN sys_office so on so.id = ba.department_id
<where>
<where>
AND b.is_used = 1
AND ba.is_used=1 and ad.is_used=1 and ba.approval_status = 9
<iftest="params.start != null and params.start != '' and params.end != null and params.end != ''">
<iftest="start != null and start != ''">
AND b.create_time BETWEEN #{params.start} AND #{params.end}
AND ba.create_time > #{start}
</if>
<iftest="end != null and end != ''">
AND ba.create_time < #{end}
</if>
</if>
<iftest="params.material != null and params.material != ''">
<iftest="material != null and material != ''">
AND (d.material_name LIKE CONCAT('%', #{params.material}, '%') OR d.material_code LIKE CONCAT('%', #{params.material}, '%'))
AND ad.material_id = #{material}
</if>
</if>
<iftest="params.department != null and params.department != ''">
<iftest="department != null and department != ''">
AND b.department_id = #{params.department}
AND ba.department_id = #{department}
</if>
</if>
</where>
</where>
ORDER BY b.create_time DESC
GROUP BY ba.department_id, ba.department_name, ad.material_id,ad.material_name
ORDER BY apply_quantity DESC
</select>
</select>
<!-- 工作量统计:合并多表数据后按人员统计 -->
<!-- 工作量统计:合并多表数据后按人员统计 -->
...
@@ -57,19 +77,47 @@
...
@@ -57,19 +77,47 @@
FROM (
FROM (
SELECT l.user_id AS uid, l.user_name AS uname, 1 AS leave_app, 0 AS leave_approve, 0 AS borrow_app, 0 AS inbound_cnt, COALESCE(l.duration,0) AS leave_duration
SELECT l.user_id AS uid, l.user_name AS uname, 1 AS leave_app, 0 AS leave_approve, 0 AS borrow_app, 0 AS inbound_cnt, COALESCE(l.duration,0) AS leave_duration
FROM jl_key_dm_leave_application l
FROM jl_key_dm_leave_application l
WHERE l.create_time BETWEEN #{params.start} AND #{params.end}
<where>
<iftest="start != null and start != ''">
AND l.create_time > #{start}
</if>
<iftest="end != null and end != ''">
AND l.create_time < #{end}
</if>
</where>
UNION ALL
UNION ALL
SELECT r.approver_id AS uid, r.approver_name AS uname, 0, CASE WHEN r.approver_result = 1 THEN 1 ELSE 0 END, 0, 0, 0
SELECT r.approver_id AS uid, r.approver_name AS uname, 0, CASE WHEN r.approver_result = 1 THEN 1 ELSE 0 END, 0, 0, 0
FROM jl_key_dm_leave_approval_record r
FROM jl_key_dm_leave_approval_record r
WHERE r.approver_time BETWEEN #{params.start} AND #{params.end}
<where>
<iftest="start != null and start != ''">
AND r.approver_time > #{start}
</if>
<iftest="end != null and end != ''">
AND r.approver_time < #{end}
</if>
</where>
UNION ALL
UNION ALL
SELECT b.applicant_id AS uid, b.applicant_name AS uname, 0, 0, 1, 0, 0
SELECT b.applicant_id AS uid, b.applicant_name AS uname, 0, 0, 1, 0, 0
FROM jl_key_dm_borrow_application b
FROM jl_key_dm_borrow_application b
WHERE b.create_time BETWEEN #{params.start} AND #{params.end}
<where>
<iftest="start != null and start != ''">
AND b.create_time > #{start}
</if>
<iftest="end != null and end != ''">
AND b.create_time < #{end}
</if>
</where>
UNION ALL
UNION ALL
SELECT o.receiver_id AS uid, o.receiver_name AS uname, 0, 0, 0, 1, 0
SELECT o.receiver_id AS uid, o.receiver_name AS uname, 0, 0, 0, 1, 0
FROM jl_key_dm_outbound_record o
FROM jl_key_dm_outbound_record o
WHERE o.create_time BETWEEN #{params.start} AND #{params.end}
<where>
<iftest="start != null and start != ''">
AND o.create_time > #{start}
</if>
<iftest="end != null and end != ''">
AND o.create_time < #{end}
</if>
</where>
) t
) t
GROUP BY uid, uname
GROUP BY uid, uname
ORDER BY leave_applications DESC, borrow_applications DESC
ORDER BY leave_applications DESC, borrow_applications DESC