修改人天计算方法,避免笛卡尔积问题导致人天错误
This commit is contained in:
@@ -96,30 +96,41 @@
|
||||
</select>
|
||||
|
||||
<select id="getProjectDataByMonth" resultType="com.ruoyi.oa.domain.vo.SysOaProjectVo">
|
||||
SELECT sop.project_id,
|
||||
sop.project_name,
|
||||
sop.color,
|
||||
ROUND(SUM(soa.day_length + soa.hour / 9), 2) AS labor_cost,
|
||||
SELECT
|
||||
p.project_id,
|
||||
p.project_name,
|
||||
p.color,
|
||||
-- 子查询里已经聚合完 labor_cost
|
||||
a.labor_cost,
|
||||
-- 同理财务部分
|
||||
f.total_price
|
||||
FROM sys_oa_project AS p
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
project_id,
|
||||
ROUND(SUM(day_length + hour / 9), 2) AS labor_cost
|
||||
FROM sys_oa_attendance
|
||||
WHERE create_time BETWEEN #{firstDay} AND #{lastDay}
|
||||
AND del_flag = '0'
|
||||
GROUP BY project_id
|
||||
) AS a ON p.project_id = a.project_id
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
sof.project_id,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN sof.finance_type = 0 THEN sod.price
|
||||
ELSE 0
|
||||
END
|
||||
CASE WHEN sof.finance_type = 0 THEN sod.price ELSE 0 END
|
||||
) AS total_price
|
||||
FROM sys_oa_project AS sop
|
||||
LEFT JOIN sys_oa_attendance AS soa
|
||||
ON sop.project_id = soa.project_id
|
||||
AND soa.create_time BETWEEN #{firstDay} AND #{lastDay}
|
||||
AND soa.del_flag = '0'
|
||||
LEFT JOIN sys_oa_finance AS sof
|
||||
ON sop.project_id = sof.project_id
|
||||
AND sof.create_time BETWEEN #{firstDay} AND #{lastDay}
|
||||
LEFT JOIN sys_oa_detail AS sod
|
||||
ON sof.finance_id = sod.finance_id
|
||||
AND sod.create_time BETWEEN #{firstDay} AND #{lastDay}
|
||||
GROUP BY sop.project_id,
|
||||
sop.project_name,
|
||||
sop.color
|
||||
FROM sys_oa_finance sof
|
||||
JOIN sys_oa_detail sod ON sof.finance_id = sod.finance_id
|
||||
AND sod.create_time BETWEEN #{firstDay} AND #{lastDay}
|
||||
WHERE sof.create_time BETWEEN #{firstDay} AND #{lastDay}
|
||||
GROUP BY sof.project_id
|
||||
) AS f ON p.project_id = f.project_id
|
||||
|
||||
-- 最后只要在这里加一个 WHERE 条件,过滤掉 labor_cost=0 或者为空
|
||||
WHERE a.labor_cost > 0
|
||||
|
||||
|
||||
</select>
|
||||
|
||||
<select id="getProjectDataByMonthAndDate" resultType="com.ruoyi.oa.domain.vo.SysOaProjectVo">
|
||||
|
||||
Reference in New Issue
Block a user