三期内容优化

This commit is contained in:
2025-03-19 21:37:54 +08:00
parent aa64312441
commit ed7012e2dd
24 changed files with 671 additions and 96 deletions

View File

@@ -117,7 +117,7 @@
</select>
<select id="selectListToCost" resultType="com.ruoyi.oa.domain.vo.SysOaCostAllVo">
SELECT
sop.project_name,sop.project_num,sop.project_id,
sop.project_name,sop.project_num,sop.project_id,sop.funds,
(
SELECT COALESCE(SUM(soc.cost),0)
@@ -126,10 +126,11 @@
) AS claimCost,
(
SELECT COALESCE(SUM(soow.amount * sow.price),0)
FROM sys_oa_out_warehouse soow
JOIN sys_oa_warehouse sow ON soow.id = sow.id
WHERE soow.project_id = sop.project_id
SELECT COALESCE(SUM(sod.price), 0)
FROM sys_oa_finance sof
JOIN sys_oa_detail sod ON sof.finance_id = sod.finance_id
WHERE sof.project_id = sop.project_id
AND sof.finance_type = 0
) AS materialCost,
(
@@ -151,74 +152,96 @@
<select id="selectProjectDetails" parameterType="Long" resultType="java.util.Map">
SELECT
JSON_OBJECT(
'userCostList', COALESCE((
SELECT JSON_ARRAYAGG(
JSON_OBJECT(
'userId', CAST(uc.userId AS CHAR),
'nickName', COALESCE(uc.nickName, ''),
'laborCost', ROUND(COALESCE(uc.laborCost, 0),1),
'attendenceNum', ROUND(COALESCE(uc.attendenceNum, 0),1)
)
)
FROM (
SELECT
a.user_id AS userId,
u.nick_name AS nickName,
COALESCE(SUM(ROUND((a.day_length * 9 + a.hour) / 9,1) * u.labor_cost), 0) AS laborCost,
COALESCE(ROUND(SUM((a.day_length * 9 + a.hour) / 9),1), 0) AS attendenceNum
FROM sys_oa_attendance a
INNER JOIN sys_user u ON a.user_id = u.user_id
WHERE a.project_id = #{projectId} AND a.del_flag = 0
GROUP BY a.user_id
) uc
), JSON_ARRAY()),
SELECT JSON_OBJECT(
'userCostList',
COALESCE(
(
SELECT JSON_ARRAYAGG(
JSON_OBJECT(
'userId', CAST(uc.userId AS CHAR),
'nickName', COALESCE(uc.nickName, ''),
'laborCost', ROUND(COALESCE(uc.laborCost, 0), 1),
'attendenceNum', ROUND(COALESCE(uc.attendenceNum, 0), 1)
)
)
FROM (
SELECT
a.user_id AS userId,
u.nick_name AS nickName,
COALESCE(
SUM(
ROUND((a.day_length * 9 + a.hour) / 9, 1) * u.labor_cost
),
0
) AS laborCost,
COALESCE(
ROUND(
SUM((a.day_length * 9 + a.hour) / 9), 1
),
0
) AS attendenceNum
FROM sys_oa_attendance a
INNER JOIN sys_user u
ON a.user_id = u.user_id
WHERE a.project_id = #{projectId}
AND a.del_flag = 0
GROUP BY a.user_id
) uc
),
JSON_ARRAY()
),
'materialList', COALESCE((
SELECT JSON_ARRAYAGG(
JSON_OBJECT(
'materialId', CAST(ml.materialId AS CHAR),
'name', COALESCE(ml.name, ''),
'price', COALESCE(ml.price, 0),
'amount', COALESCE(ml.amount, 0)
)
)
FROM (
SELECT
ow.id AS materialId,
COALESCE(w.name, '') AS name,
COALESCE(w.price, 0) AS price,
COALESCE(ow.amount, 0) AS amount
FROM sys_oa_out_warehouse ow
INNER JOIN sys_oa_warehouse w ON ow.warehouse_id = w.id
WHERE ow.project_id = #{projectId} AND ow.del_flag = 0
) ml
), JSON_ARRAY()),
'materialList',
COALESCE(
(
SELECT JSON_ARRAYAGG(
JSON_OBJECT(
'detailId', CAST(d.detail_id AS CHAR),
'detailTitle', COALESCE(d.detail_title, ''),
'price', COALESCE(d.price, 0),
'financeParties', COALESCE(f.finance_parties, ''),
'remark', COALESCE(f.remark, '')
)
)
FROM sys_oa_finance f
INNER JOIN sys_oa_detail d
ON f.finance_id = d.finance_id
WHERE f.project_id = #{projectId}
AND f.finance_type = 0
),
JSON_ARRAY()
),
'claimList', COALESCE((
SELECT JSON_ARRAYAGG(
JSON_OBJECT(
'claimId', CAST(cl.claimId AS CHAR),
'nickName', COALESCE(cl.nickName, ''),
'cost', COALESCE(cl.cost, 0),
'remark', COALESCE(cl.remark, '')
)
)
FROM (
SELECT
c.claim_id AS claimId,
COALESCE(u.nick_name, '') AS nickName,
COALESCE(c.cost, 0) AS cost,
COALESCE(c.remark, '') AS remark
FROM sys_oa_claim c
INNER JOIN sys_user u ON c.user_id = u.user_id
WHERE c.project_id = #{projectId} AND c.del_flag = 0
) cl
), JSON_ARRAY())
) AS data
'claimList',
COALESCE(
(
SELECT JSON_ARRAYAGG(
JSON_OBJECT(
'claimId', CAST(cl.claimId AS CHAR),
'nickName', COALESCE(cl.nickName, ''),
'cost', COALESCE(cl.cost, 0),
'remark', COALESCE(cl.remark, '')
)
)
FROM (
SELECT
c.claim_id AS claimId,
COALESCE(u.nick_name, '') AS nickName,
COALESCE(c.cost, 0) AS cost,
COALESCE(c.remark, '') AS remark
FROM sys_oa_claim c
INNER JOIN sys_user u
ON c.user_id = u.user_id
WHERE c.project_id = #{projectId}
AND c.del_flag = 0
) cl
),
JSON_ARRAY()
)
) AS data
FROM sys_oa_project p
WHERE p.project_id = #{projectId}
</select>