where dept_id = #{deptId} AND type = #{typeId} AND (oa_project_id like CONCAT("%" ,#{projectNameOrNo},"%") OR project_name like CONCAT("%" ,#{projectNameOrNo},"%"))
group by <iftest="projectId != null and projectIds == null"> project_name,</if><iftest="projectId == null and projectIds != null"> project_name,dept_name,</if>year(statistics_start),MONTH(statistics_start)
group by ptc.project_id,project_name,year(statistics_start),MONTH(statistics_start) <iftest="projectId != null || (projectIds != null and !isAll) "> ,d.dept_name</if><iftest="projectIds != null and isAll">,d.dept_name ,u.name </if>
SELECT <iftest="isAll">u.id AS user_id, u.`name` AS user_name, d.dept_name AS dept_name,</if>
<iftest="!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, <iftest="!isAll">0</if>
<iftest="isAll">null</if>, sum(t.work_time)) AS over_time, IF(t.is_overtime=1, <iftest="!isAll">0</if>
<iftest="isAll">null</if>, sum(t.work_time)) AS normal_time
<iftest="!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, <iftest="!isAll">0</if><iftest="isAll">null</if>, sum(t.work_time)) AS over_time,
IF(t.is_overtime=1, <iftest="!isAll">0</if><iftest="isAll">null</if>, sum(t.work_time)) AS normal_time
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 join work_dept d on u.dept_id = d.id
SELECT t1.project_name,t1.name,if(sum(normal_time/8) is null,0,sum(normal_time/8)) AS normal_time,if(sum(over_time/8) is null,0,sum(over_time/8)) AS over_time
FROM (
SELECT project_name,u.name,sum(t.work_time) AS normal_time
FROM work_time_order t join work_user u on t.user_id = u.id
join work_project p on t.project_id = p.id
join work_type ty on t.type = ty.id
WHERE t.status in(2,5) AND is_overtime = 0 AND t.work_day>=#{startDate} AND t.work_day <=#{endDate}
<iftest="userId != null and deptId == null">
AND p.manager_id = #{userId}
</if>
<iftest="deptId != null and userId == null">
AND p.dept_id = #{deptId}
</if>
<iftest="deptId != null and userId != null">
AND (p.manager_id = #{userId} OR p.dept_id = #{deptId})
</if>
GROUP BY project_name,u.`name`
) t1 left join (
SELECT project_name,u.name,sum(t.work_time) AS over_time
FROM work_time_order t join work_user u on t.user_id = u.id
join work_project p on t.project_id = p.id
join work_type ty on t.type = ty.id
WHERE t.status in(2,5) AND is_overtime = 1 AND t.work_day>=#{startDate} AND t.work_day <=#{endDate}
<iftest="userId != null and deptId == null">
AND p.manager_id = #{userId}
</if>
<iftest="deptId != null and userId == null">
AND p.dept_id = #{deptId}
</if>
<iftest="deptId != null and userId != null">
AND (p.manager_id = #{userId} OR p.dept_id = #{deptId})
</if>
GROUP BY project_name,u.`name`
) t2 on t1.project_name = t2.project_name and t1.name = t2.name
GROUP BY t1.project_name,t1.`name`
ORDER BY CONVERT (t1.project_name USING gbk),CONVERT (t1. NAME USING gbk)