新增权限控制
This commit is contained in:
parent
475f768118
commit
3a65a27a77
@ -65,7 +65,15 @@ FROM third_department
|
|||||||
-- ======================================
|
-- ======================================
|
||||||
-- report_指标卡_在职人数
|
-- report_指标卡_在职人数
|
||||||
-- ======================================
|
-- ======================================
|
||||||
|
with one_to_many AS(
|
||||||
|
SELECT
|
||||||
|
a.username AS username -- 用户名
|
||||||
|
,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名
|
||||||
|
FROM ods_one_to_many_perm a
|
||||||
|
JOIN mysql.help_topic b
|
||||||
|
on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1)
|
||||||
|
WHERE a.username = '${fine_username}'
|
||||||
|
)
|
||||||
SELECT
|
SELECT
|
||||||
SUM(zzs) AS SL
|
SUM(zzs) AS SL
|
||||||
FROM
|
FROM
|
||||||
@ -188,7 +196,9 @@ FROM
|
|||||||
,hr_organ_name
|
,hr_organ_name
|
||||||
,hr_comm_id
|
,hr_comm_id
|
||||||
,hr_comm_name
|
,hr_comm_name
|
||||||
|
,comm_name
|
||||||
FROM dim_organ_mapping
|
FROM dim_organ_mapping
|
||||||
|
WHERE length(hr_comm_id) > 0
|
||||||
GROUP BY
|
GROUP BY
|
||||||
organ_code
|
organ_code
|
||||||
,organ_name
|
,organ_name
|
||||||
@ -196,6 +206,7 @@ FROM
|
|||||||
,hr_organ_name
|
,hr_organ_name
|
||||||
,hr_comm_id
|
,hr_comm_id
|
||||||
,hr_comm_name
|
,hr_comm_name
|
||||||
|
,comm_name
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT
|
SELECT
|
||||||
'0000' AS organ_code -- erp片区编码
|
'0000' AS organ_code -- erp片区编码
|
||||||
@ -204,15 +215,29 @@ FROM
|
|||||||
,'领悦集团总部' AS hr_organ_name -- hr片区名称
|
,'领悦集团总部' AS hr_organ_name -- hr片区名称
|
||||||
,'153' AS hr_comm_id -- hr项目id
|
,'153' AS hr_comm_id -- hr项目id
|
||||||
,'领悦集团总部' AS hr_comm_name -- hr项目名称
|
,'领悦集团总部' AS hr_comm_name -- hr项目名称
|
||||||
|
,'' AS comm_name
|
||||||
)B
|
)B
|
||||||
ON A.pq = B.hr_organ_id
|
ON A.pq = B.hr_organ_id
|
||||||
and A.xm = b.hr_comm_id
|
and A.xm = b.hr_comm_id
|
||||||
where 1 = 1
|
where 1 = 1
|
||||||
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
||||||
|
AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL
|
||||||
|
THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")}
|
||||||
|
ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
|
||||||
|
|
||||||
|
|
||||||
-- ======================================
|
-- ======================================
|
||||||
-- 指标卡_离职人数
|
-- 指标卡_离职人数
|
||||||
-- ======================================
|
-- ======================================
|
||||||
|
with one_to_many AS(
|
||||||
|
SELECT
|
||||||
|
a.username AS username -- 用户名
|
||||||
|
,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名
|
||||||
|
FROM ods_one_to_many_perm a
|
||||||
|
JOIN mysql.help_topic b
|
||||||
|
on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1)
|
||||||
|
WHERE a.username = '${fine_username}'
|
||||||
|
)
|
||||||
SELECT
|
SELECT
|
||||||
SUM(lzrs) AS SL
|
SUM(lzrs) AS SL
|
||||||
FROM
|
FROM
|
||||||
@ -345,7 +370,9 @@ FROM
|
|||||||
,hr_organ_name
|
,hr_organ_name
|
||||||
,hr_comm_id
|
,hr_comm_id
|
||||||
,hr_comm_name
|
,hr_comm_name
|
||||||
|
,comm_name
|
||||||
FROM dim_organ_mapping
|
FROM dim_organ_mapping
|
||||||
|
WHERE length(hr_comm_id) > 0
|
||||||
GROUP BY
|
GROUP BY
|
||||||
organ_code
|
organ_code
|
||||||
,organ_name
|
,organ_name
|
||||||
@ -353,6 +380,7 @@ FROM
|
|||||||
,hr_organ_name
|
,hr_organ_name
|
||||||
,hr_comm_id
|
,hr_comm_id
|
||||||
,hr_comm_name
|
,hr_comm_name
|
||||||
|
,comm_name
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT
|
SELECT
|
||||||
'0000' AS organ_code -- erp片区编码
|
'0000' AS organ_code -- erp片区编码
|
||||||
@ -361,30 +389,90 @@ FROM
|
|||||||
,'领悦集团总部' AS hr_organ_name -- hr片区名称
|
,'领悦集团总部' AS hr_organ_name -- hr片区名称
|
||||||
,'153' AS hr_comm_id -- hr项目id
|
,'153' AS hr_comm_id -- hr项目id
|
||||||
,'领悦集团总部' AS hr_comm_name -- hr项目名称
|
,'领悦集团总部' AS hr_comm_name -- hr项目名称
|
||||||
|
,'' AS comm_name
|
||||||
)B
|
)B
|
||||||
ON A.pq = B.hr_organ_id
|
ON A.pq = B.hr_organ_id
|
||||||
and A.xm = B.hr_comm_id
|
and A.xm = B.hr_comm_id
|
||||||
where 1 = 1
|
where 1 = 1
|
||||||
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
||||||
|
AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL
|
||||||
|
THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")}
|
||||||
|
ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
|
||||||
|
|
||||||
-- ======================================
|
-- ======================================
|
||||||
-- 指标卡_人力成本/行政成本
|
-- 指标卡_人力成本/行政成本
|
||||||
-- ======================================
|
-- ======================================
|
||||||
|
with one_to_many AS(
|
||||||
SELECT
|
SELECT
|
||||||
coalesce(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),0) AS lc_total_fee -- 人力成本费用
|
a.username AS username -- 用户名
|
||||||
,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用
|
,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名
|
||||||
from dw.ods_cost_collection_lc_ac
|
FROM ods_one_to_many_perm a
|
||||||
|
JOIN mysql.help_topic b
|
||||||
|
on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1)
|
||||||
|
WHERE a.username = '${fine_username}'
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
coalesce(SUM(CASE WHEN A.cost_type = '人力成本' THEN A.actual_amount ELSE 0 END),0) AS lc_total_fee -- 人力成本费用
|
||||||
|
,coalesce(SUM(CASE WHEN A.cost_type = '行政成本' THEN A.actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
*
|
||||||
|
FROM dw.ods_cost_collection_lc_ac
|
||||||
WHERE left(ym,4) = left('${p_ym}',4)
|
WHERE left(ym,4) = left('${p_ym}',4)
|
||||||
AND ym <= '${p_ym}'
|
AND ym <= '${p_ym}'
|
||||||
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
)A
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
organ_code
|
||||||
|
,organ_name
|
||||||
|
,hr_organ_id
|
||||||
|
,hr_organ_name
|
||||||
|
,hr_comm_id
|
||||||
|
,hr_comm_name
|
||||||
|
,comm_name
|
||||||
|
FROM dim_organ_mapping
|
||||||
|
WHERE length(hr_comm_id) > 0
|
||||||
|
GROUP BY
|
||||||
|
organ_code
|
||||||
|
,organ_name
|
||||||
|
,hr_organ_id
|
||||||
|
,hr_organ_name
|
||||||
|
,hr_comm_id
|
||||||
|
,hr_comm_name
|
||||||
|
,comm_name
|
||||||
|
UNION ALL
|
||||||
|
SELECT
|
||||||
|
'0000' AS organ_code -- erp片区编码
|
||||||
|
,'' AS organ_name -- erp片区名称
|
||||||
|
,'153' AS hr_organ_id -- hr片区编码
|
||||||
|
,'领悦集团总部' AS hr_organ_name -- hr片区名称
|
||||||
|
,'153' AS hr_comm_id -- hr项目id
|
||||||
|
,'领悦集团总部' AS hr_comm_name -- hr项目名称
|
||||||
|
,'' AS comm_name
|
||||||
|
)B
|
||||||
|
ON A.organ_code = B.hr_organ_id
|
||||||
|
and A.comm_id = B.hr_comm_id
|
||||||
|
WHERE 1 = 1
|
||||||
|
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
||||||
|
AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL
|
||||||
|
THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")}
|
||||||
|
ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
|
||||||
|
|
||||||
|
|
||||||
-- ======================================
|
-- ======================================
|
||||||
-- 员工满编率柱状图
|
-- 员工满编率柱状图
|
||||||
-- ======================================
|
-- ======================================
|
||||||
|
with one_to_many AS(
|
||||||
|
SELECT
|
||||||
|
a.username AS username -- 用户名
|
||||||
|
,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名
|
||||||
|
FROM ods_one_to_many_perm a
|
||||||
|
JOIN mysql.help_topic b
|
||||||
|
on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1)
|
||||||
|
WHERE a.username = '${fine_username}'
|
||||||
|
)
|
||||||
SELECT
|
SELECT
|
||||||
yd
|
yd
|
||||||
,SUM(A.zzs) AS zzs -- 在职数
|
,SUM(A.zzs) AS zzs -- 在职数
|
||||||
@ -518,7 +606,9 @@ LEFT JOIN
|
|||||||
,hr_organ_name
|
,hr_organ_name
|
||||||
,hr_comm_id
|
,hr_comm_id
|
||||||
,hr_comm_name
|
,hr_comm_name
|
||||||
|
,comm_name
|
||||||
FROM dim_organ_mapping
|
FROM dim_organ_mapping
|
||||||
|
WHERE length(hr_comm_id) > 0
|
||||||
GROUP BY
|
GROUP BY
|
||||||
organ_code
|
organ_code
|
||||||
,organ_name
|
,organ_name
|
||||||
@ -526,6 +616,7 @@ LEFT JOIN
|
|||||||
,hr_organ_name
|
,hr_organ_name
|
||||||
,hr_comm_id
|
,hr_comm_id
|
||||||
,hr_comm_name
|
,hr_comm_name
|
||||||
|
,comm_name
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT
|
SELECT
|
||||||
'0000' AS organ_code -- erp片区编码
|
'0000' AS organ_code -- erp片区编码
|
||||||
@ -534,11 +625,15 @@ LEFT JOIN
|
|||||||
,'领悦集团总部' AS hr_organ_name -- hr片区名称
|
,'领悦集团总部' AS hr_organ_name -- hr片区名称
|
||||||
,'153' AS hr_comm_id -- hr项目id
|
,'153' AS hr_comm_id -- hr项目id
|
||||||
,'领悦集团总部' AS hr_comm_name -- hr项目名称
|
,'领悦集团总部' AS hr_comm_name -- hr项目名称
|
||||||
|
,'' AS comm_name
|
||||||
)B
|
)B
|
||||||
ON A.pq = B.hr_organ_id
|
ON A.pq = B.hr_organ_id
|
||||||
and A.xm = b.hr_comm_id
|
and A.xm = b.hr_comm_id
|
||||||
where 1 = 1
|
where 1 = 1
|
||||||
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
||||||
|
AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL
|
||||||
|
THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")}
|
||||||
|
ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
|
||||||
group by
|
group by
|
||||||
yd
|
yd
|
||||||
|
|
||||||
@ -549,6 +644,15 @@ yd
|
|||||||
-- 片区排名
|
-- 片区排名
|
||||||
|
|
||||||
${IF(LEN(p_area)=0,"", "/*")}
|
${IF(LEN(p_area)=0,"", "/*")}
|
||||||
|
with one_to_many AS(
|
||||||
|
SELECT
|
||||||
|
a.username AS username -- 用户名
|
||||||
|
,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名
|
||||||
|
FROM ods_one_to_many_perm a
|
||||||
|
JOIN mysql.help_topic b
|
||||||
|
on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1)
|
||||||
|
WHERE a.username = '${fine_username}'
|
||||||
|
)
|
||||||
SELECT
|
SELECT
|
||||||
T1.organ_comm AS organ_comm
|
T1.organ_comm AS organ_comm
|
||||||
,ROW_NUMBER() OVER(ORDER BY T1.RATE DESC) 排名
|
,ROW_NUMBER() OVER(ORDER BY T1.RATE DESC) 排名
|
||||||
@ -702,6 +806,8 @@ FROM
|
|||||||
WHERE ym = '${p_ym}'
|
WHERE ym = '${p_ym}'
|
||||||
)C
|
)C
|
||||||
ON A.pq = C.organ_code
|
ON A.pq = C.organ_code
|
||||||
|
where 1 = 1
|
||||||
|
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
||||||
GROUP BY
|
GROUP BY
|
||||||
B.hr_organ_name
|
B.hr_organ_name
|
||||||
)T1
|
)T1
|
||||||
@ -709,6 +815,15 @@ ${IF(LEN(p_area)=0,"", "*/")}
|
|||||||
|
|
||||||
-- 项目排名
|
-- 项目排名
|
||||||
${IF(LEN(p_area) > 0,"", "/*")}
|
${IF(LEN(p_area) > 0,"", "/*")}
|
||||||
|
with one_to_many AS(
|
||||||
|
SELECT
|
||||||
|
a.username AS username -- 用户名
|
||||||
|
,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名
|
||||||
|
FROM ods_one_to_many_perm a
|
||||||
|
JOIN mysql.help_topic b
|
||||||
|
on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1)
|
||||||
|
WHERE a.username = '${fine_username}'
|
||||||
|
)
|
||||||
SELECT
|
SELECT
|
||||||
T1.organ_comm AS organ_comm
|
T1.organ_comm AS organ_comm
|
||||||
,ROW_NUMBER() OVER(ORDER BY T1.RATE DESC) 排名
|
,ROW_NUMBER() OVER(ORDER BY T1.RATE DESC) 排名
|
||||||
@ -841,6 +956,7 @@ FROM
|
|||||||
,hr_organ_name
|
,hr_organ_name
|
||||||
,hr_comm_id
|
,hr_comm_id
|
||||||
,hr_comm_name
|
,hr_comm_name
|
||||||
|
,comm_name
|
||||||
FROM dim_organ_mapping
|
FROM dim_organ_mapping
|
||||||
WHERE length(hr_comm_id) > 0
|
WHERE length(hr_comm_id) > 0
|
||||||
GROUP BY
|
GROUP BY
|
||||||
@ -850,6 +966,7 @@ FROM
|
|||||||
,hr_organ_name
|
,hr_organ_name
|
||||||
,hr_comm_id
|
,hr_comm_id
|
||||||
,hr_comm_name
|
,hr_comm_name
|
||||||
|
,comm_name
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT
|
SELECT
|
||||||
'0000' AS organ_code -- erp片区编码
|
'0000' AS organ_code -- erp片区编码
|
||||||
@ -858,6 +975,7 @@ FROM
|
|||||||
,'领悦集团总部' AS hr_organ_name -- hr片区名称
|
,'领悦集团总部' AS hr_organ_name -- hr片区名称
|
||||||
,'153' AS hr_comm_id -- hr项目id
|
,'153' AS hr_comm_id -- hr项目id
|
||||||
,'领悦集团总部' AS hr_comm_name -- hr项目名称
|
,'领悦集团总部' AS hr_comm_name -- hr项目名称
|
||||||
|
,'' AS comm_name
|
||||||
)B
|
)B
|
||||||
ON A.pq = B.hr_organ_id
|
ON A.pq = B.hr_organ_id
|
||||||
and A.xm = B.hr_comm_id
|
and A.xm = B.hr_comm_id
|
||||||
@ -874,6 +992,9 @@ FROM
|
|||||||
AND A.xm = C.comm_id
|
AND A.xm = C.comm_id
|
||||||
WHERE 1=1
|
WHERE 1=1
|
||||||
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
||||||
|
AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL
|
||||||
|
THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")}
|
||||||
|
ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
|
||||||
GROUP BY
|
GROUP BY
|
||||||
B.hr_comm_name
|
B.hr_comm_name
|
||||||
)T1
|
)T1
|
||||||
@ -884,7 +1005,15 @@ ${IF(LEN(p_area)>0,"", "*/")}
|
|||||||
-- ======================================
|
-- ======================================
|
||||||
-- 员工离职原因占比
|
-- 员工离职原因占比
|
||||||
-- ======================================
|
-- ======================================
|
||||||
|
with one_to_many AS(
|
||||||
|
SELECT
|
||||||
|
a.username AS username -- 用户名
|
||||||
|
,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名
|
||||||
|
FROM ods_one_to_many_perm a
|
||||||
|
JOIN mysql.help_topic b
|
||||||
|
on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1)
|
||||||
|
WHERE a.username = '${fine_username}'
|
||||||
|
)
|
||||||
SELECT
|
SELECT
|
||||||
A.lzlx AS lzlx -- 离职类型id
|
A.lzlx AS lzlx -- 离职类型id
|
||||||
,A.lzlxname AS lzlxname -- 离职类型名称
|
,A.lzlxname AS lzlxname -- 离职类型名称
|
||||||
@ -913,7 +1042,9 @@ LEFT JOIN
|
|||||||
,hr_organ_name
|
,hr_organ_name
|
||||||
,hr_comm_id
|
,hr_comm_id
|
||||||
,hr_comm_name
|
,hr_comm_name
|
||||||
|
,comm_name
|
||||||
FROM dim_organ_mapping
|
FROM dim_organ_mapping
|
||||||
|
WHERE length(hr_comm_id) > 0
|
||||||
GROUP BY
|
GROUP BY
|
||||||
organ_code
|
organ_code
|
||||||
,organ_name
|
,organ_name
|
||||||
@ -921,6 +1052,7 @@ LEFT JOIN
|
|||||||
,hr_organ_name
|
,hr_organ_name
|
||||||
,hr_comm_id
|
,hr_comm_id
|
||||||
,hr_comm_name
|
,hr_comm_name
|
||||||
|
,comm_name
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT
|
SELECT
|
||||||
'0000' AS organ_code -- erp片区编码
|
'0000' AS organ_code -- erp片区编码
|
||||||
@ -929,17 +1061,30 @@ LEFT JOIN
|
|||||||
,'领悦集团总部' AS hr_organ_name -- hr片区名称
|
,'领悦集团总部' AS hr_organ_name -- hr片区名称
|
||||||
,'153' AS hr_comm_id -- hr项目id
|
,'153' AS hr_comm_id -- hr项目id
|
||||||
,'领悦集团总部' AS hr_comm_name -- hr项目名称
|
,'领悦集团总部' AS hr_comm_name -- hr项目名称
|
||||||
|
,'' AS comm_name
|
||||||
)B
|
)B
|
||||||
ON A.pq = B.hr_organ_id
|
ON A.pq = B.hr_organ_id
|
||||||
and A.xm = B.hr_comm_id
|
and A.xm = B.hr_comm_id
|
||||||
where 1 = 1
|
where 1 = 1
|
||||||
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
||||||
|
AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL
|
||||||
|
THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")}
|
||||||
|
ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
|
||||||
|
|
||||||
-- ======================================
|
-- ======================================
|
||||||
-- 人力行政成本费率柱状图
|
-- 人力行政成本费率柱状图
|
||||||
-- ======================================
|
-- ======================================
|
||||||
|
|
||||||
${if(p_type='人力',"","/*")}
|
${if(p_type='人力',"","/*")}
|
||||||
|
with one_to_many AS(
|
||||||
|
SELECT
|
||||||
|
a.username AS username -- 用户名
|
||||||
|
,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名
|
||||||
|
FROM ods_one_to_many_perm a
|
||||||
|
JOIN mysql.help_topic b
|
||||||
|
on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1)
|
||||||
|
WHERE a.username = '${fine_username}'
|
||||||
|
)
|
||||||
SELECT
|
SELECT
|
||||||
T1.yr_month AS yr_month
|
T1.yr_month AS yr_month
|
||||||
,'人力成本' AS name
|
,'人力成本' AS name
|
||||||
@ -951,26 +1096,68 @@ FROM
|
|||||||
(
|
(
|
||||||
SELECT
|
SELECT
|
||||||
A.ym AS yr_month
|
A.ym AS yr_month
|
||||||
|
, SUM(A.lc_total_fee) AS lc_total_fee
|
||||||
|
, SUM(B.index_income_fact) AS index_income_fact
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
A.ym AS ym
|
||||||
|
,A.organ_code AS organ_code
|
||||||
|
,A1.comm_id AS comm_id -- erp项目 匹配财务收入填报
|
||||||
|
,A1.comm_name AS comm_name -- erp项目,用作权限控制
|
||||||
,A.lc_total_fee AS lc_total_fee
|
,A.lc_total_fee AS lc_total_fee
|
||||||
,b.index_income_fact AS index_income_fact
|
|
||||||
FROM
|
FROM
|
||||||
(
|
(
|
||||||
-- 费控人力行政成本填报
|
-- 费控人力行政成本填报
|
||||||
SELECT
|
SELECT organ_code
|
||||||
organ_code
|
, comm_id
|
||||||
, ym
|
, ym
|
||||||
,coalesce(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),0) AS lc_total_fee -- 人力成本费用
|
, COALESCE(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),
|
||||||
,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用
|
0) AS lc_total_fee -- 人力成本费用
|
||||||
from dw.ods_cost_collection_lc_ac
|
, COALESCE(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),
|
||||||
WHERE left(ym,4) = left('${p_ym}',4)
|
0) AS ac_total_fee -- 行政成本费用
|
||||||
|
FROM dw.ods_cost_collection_lc_ac
|
||||||
|
WHERE LEFT(ym, 4) = LEFT('${p_ym}', 4)
|
||||||
AND ym <= '${p_ym}'
|
AND ym <= '${p_ym}'
|
||||||
GROUP BY organ_code,ym
|
GROUP BY organ_code, ym, comm_id) A
|
||||||
|
LEFT JOIN
|
||||||
|
(SELECT organ_code
|
||||||
|
, organ_name
|
||||||
|
, comm_id
|
||||||
|
, comm_name
|
||||||
|
, hr_organ_id
|
||||||
|
, hr_organ_name
|
||||||
|
, hr_comm_id
|
||||||
|
, hr_comm_name
|
||||||
|
FROM dim_organ_mapping
|
||||||
|
WHERE LENGTH(hr_comm_id) > 0
|
||||||
|
GROUP BY organ_code
|
||||||
|
, organ_name
|
||||||
|
, comm_id
|
||||||
|
, comm_name
|
||||||
|
, hr_organ_id
|
||||||
|
, hr_organ_name
|
||||||
|
, hr_comm_id
|
||||||
|
, hr_comm_name
|
||||||
|
UNION ALL
|
||||||
|
SELECT '0000' AS organ_code -- erp片区编码
|
||||||
|
, '' AS organ_name -- erp片区名称
|
||||||
|
, '' AS comm_id
|
||||||
|
, '' AS comm_name
|
||||||
|
, '153' AS hr_organ_id -- hr片区编码
|
||||||
|
, '领悦集团总部' AS hr_organ_name -- hr片区名称
|
||||||
|
, '153' AS hr_comm_id -- hr项目id
|
||||||
|
, '领悦集团总部' AS hr_comm_name -- hr项目名称
|
||||||
|
) A1
|
||||||
|
ON A.organ_code = A1.organ_code
|
||||||
|
AND A.comm_id = A1.hr_comm_id
|
||||||
)A
|
)A
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
(-- 公司实际收入
|
(-- 公司实际收入
|
||||||
SELECT
|
SELECT
|
||||||
yr_month
|
yr_month
|
||||||
,organ_code
|
,organ_code
|
||||||
|
,comm_id
|
||||||
,SUM(index_income_fact) AS index_income_fact -- 实际收入
|
,SUM(index_income_fact) AS index_income_fact -- 实际收入
|
||||||
FROM ods_caiwu_feecollection
|
FROM ods_caiwu_feecollection
|
||||||
WHERE category = '物业'
|
WHERE category = '物业'
|
||||||
@ -978,49 +1165,106 @@ FROM
|
|||||||
GROUP BY
|
GROUP BY
|
||||||
yr_month
|
yr_month
|
||||||
,organ_code
|
,organ_code
|
||||||
|
,comm_id
|
||||||
)B
|
)B
|
||||||
ON A.ym = B.yr_month
|
ON A.organ_code = B.organ_code
|
||||||
AND A.organ_code = B.organ_code
|
AND A.ym = B.yr_month
|
||||||
|
AND A.comm_id = B.comm_id
|
||||||
WHERE 1 = 1
|
WHERE 1 = 1
|
||||||
${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
||||||
|
AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL
|
||||||
|
THEN ${if(len(p_area)>0,"A.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")}
|
||||||
|
ELSE ${if(left(fine_role,2)=="项目","A.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
|
||||||
|
GROUP BY A.ym
|
||||||
)T1
|
)T1
|
||||||
ORDER BY T1.yr_month
|
ORDER BY T1.yr_month
|
||||||
|
|
||||||
${if(p_type='人力',"","*/")}
|
${if(p_type='人力',"","*/")}
|
||||||
|
|
||||||
${if(p_type='行政',"","/*")}
|
${if(p_type='行政',"","/*")}
|
||||||
|
with one_to_many AS(
|
||||||
|
SELECT
|
||||||
|
a.username AS username -- 用户名
|
||||||
|
,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名
|
||||||
|
FROM ods_one_to_many_perm a
|
||||||
|
JOIN mysql.help_topic b
|
||||||
|
on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1)
|
||||||
|
WHERE a.username = '${fine_username}'
|
||||||
|
)
|
||||||
SELECT
|
SELECT
|
||||||
T1.yr_month AS yr_month
|
T1.yr_month AS yr_month
|
||||||
,'行政成本' AS name
|
,'行政成本' AS name
|
||||||
,'行政成本费率' AS name_rate
|
,'行政成本费率' AS name_rate
|
||||||
,T1.ac_total_fee AS total_fee -- 人力成本
|
,T1.ac_total_fee AS total_fee -- 行政成本
|
||||||
,T1.index_income_fact AS index_income_fact -- 实际收入
|
,T1.index_income_fact AS index_income_fact -- 实际收入
|
||||||
,T1.ac_total_fee / T1.index_income_fact AS fee_rate -- 人力成本费率
|
,T1.ac_total_fee / T1.index_income_fact AS fee_rate -- 人力成本费率
|
||||||
FROM
|
FROM
|
||||||
(
|
(
|
||||||
SELECT
|
SELECT
|
||||||
A.ym AS yr_month
|
A.ym AS yr_month
|
||||||
,A.ac_total_fee AS ac_total_fee -- 人力成本
|
,SUM(A.ac_total_fee) AS ac_total_fee -- 行政成本
|
||||||
,B.index_income_fact AS index_income_fact -- 实际收入
|
,SUM(B.index_income_fact) AS index_income_fact -- 实际收入
|
||||||
FROM
|
FROM
|
||||||
(
|
(
|
||||||
-- 费控人力行政成本填报
|
|
||||||
SELECT
|
SELECT
|
||||||
organ_code
|
A.ym AS ym
|
||||||
|
,A.organ_code AS organ_code
|
||||||
|
,A1.comm_id AS comm_id -- erp项目 匹配财务收入填报
|
||||||
|
,A1.comm_name AS comm_name-- erp项目,用作权限控制
|
||||||
|
,A.ac_total_fee AS ac_total_fee
|
||||||
|
FROM
|
||||||
|
( -- 费控人力行政成本填报
|
||||||
|
SELECT organ_code
|
||||||
, ym
|
, ym
|
||||||
,coalesce(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),0) AS lc_total_fee -- 人力成本费用
|
, comm_id
|
||||||
,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用
|
, COALESCE(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),
|
||||||
from dw.ods_cost_collection_lc_ac
|
0) AS lc_total_fee -- 人力成本费用
|
||||||
WHERE left(ym,4) = left('${p_ym}',4)
|
, COALESCE(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),
|
||||||
|
0) AS ac_total_fee -- 行政成本费用
|
||||||
|
FROM dw.ods_cost_collection_lc_ac
|
||||||
|
WHERE LEFT(ym, 4) = LEFT('${p_ym}', 4)
|
||||||
AND ym <= '${p_ym}'
|
AND ym <= '${p_ym}'
|
||||||
GROUP BY organ_code,ym
|
GROUP BY organ_code, ym, comm_id
|
||||||
|
) A
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
SELECT organ_code
|
||||||
|
, organ_name
|
||||||
|
, comm_id
|
||||||
|
, comm_name
|
||||||
|
, hr_organ_id
|
||||||
|
, hr_organ_name
|
||||||
|
, hr_comm_id
|
||||||
|
, hr_comm_name
|
||||||
|
FROM dim_organ_mapping
|
||||||
|
WHERE LENGTH(hr_comm_id) > 0
|
||||||
|
GROUP BY organ_code
|
||||||
|
, organ_name
|
||||||
|
, comm_id
|
||||||
|
, comm_name
|
||||||
|
, hr_organ_id
|
||||||
|
, hr_organ_name
|
||||||
|
, hr_comm_id
|
||||||
|
, hr_comm_name
|
||||||
|
UNION ALL
|
||||||
|
SELECT '0000' AS organ_code -- erp片区编码
|
||||||
|
, '' AS organ_name -- erp片区名称
|
||||||
|
, '' AS comm_id
|
||||||
|
, '' AS comm_name
|
||||||
|
, '153' AS hr_organ_id -- hr片区编码
|
||||||
|
, '领悦集团总部' AS hr_organ_name -- hr片区名称
|
||||||
|
, '153' AS hr_comm_id -- hr项目id
|
||||||
|
, '领悦集团总部' AS hr_comm_name -- hr项目名称
|
||||||
|
) A1
|
||||||
|
ON A.organ_code = A1.organ_code
|
||||||
|
AND A.comm_id = A1.hr_comm_id
|
||||||
)A
|
)A
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
(-- 公司实际收入
|
(-- 公司实际收入
|
||||||
SELECT
|
SELECT
|
||||||
yr_month
|
yr_month
|
||||||
,organ_code
|
,organ_code
|
||||||
|
,comm_id
|
||||||
,SUM(index_income_fact) AS index_income_fact -- 实际收入
|
,SUM(index_income_fact) AS index_income_fact -- 实际收入
|
||||||
FROM ods_caiwu_feecollection
|
FROM ods_caiwu_feecollection
|
||||||
WHERE category = '物业'
|
WHERE category = '物业'
|
||||||
@ -1028,12 +1272,17 @@ FROM
|
|||||||
GROUP BY
|
GROUP BY
|
||||||
yr_month
|
yr_month
|
||||||
,organ_code
|
,organ_code
|
||||||
|
,comm_id
|
||||||
)B
|
)B
|
||||||
ON A.ym = B.yr_month
|
ON A.ym = B.yr_month
|
||||||
AND A.organ_code = B.organ_code
|
AND A.organ_code = B.organ_code
|
||||||
|
AND A.comm_id = B.comm_id
|
||||||
WHERE 1=1
|
WHERE 1=1
|
||||||
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
||||||
|
AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL
|
||||||
|
THEN ${if(len(p_area)>0,"A.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")}
|
||||||
|
ELSE ${if(left(fine_role,2)=="项目","A.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
|
||||||
|
GROUP BY A.ym
|
||||||
)T1
|
)T1
|
||||||
ORDER BY T1.yr_month
|
ORDER BY T1.yr_month
|
||||||
${if(p_type='行政',"","*/")}
|
${if(p_type='行政',"","*/")}
|
||||||
@ -1065,6 +1314,7 @@ ${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "/*")}
|
|||||||
from dw.ods_cost_collection_lc_ac
|
from dw.ods_cost_collection_lc_ac
|
||||||
WHERE left(ym,4) = left('${p_ym}',4)
|
WHERE left(ym,4) = left('${p_ym}',4)
|
||||||
AND ym <= '${p_ym}'
|
AND ym <= '${p_ym}'
|
||||||
|
${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
||||||
GROUP BY organ_code,organ_name
|
GROUP BY organ_code,organ_name
|
||||||
)A
|
)A
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
@ -1096,7 +1346,15 @@ ${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "*/")}
|
|||||||
|
|
||||||
|
|
||||||
${if(and(len(p_area)=0,p_type='行政')," -- 片区排名开始", "/*")}
|
${if(and(len(p_area)=0,p_type='行政')," -- 片区排名开始", "/*")}
|
||||||
|
with one_to_many AS(
|
||||||
|
SELECT
|
||||||
|
a.username AS username -- 用户名
|
||||||
|
,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名
|
||||||
|
FROM ods_one_to_many_perm a
|
||||||
|
JOIN mysql.help_topic b
|
||||||
|
on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1)
|
||||||
|
WHERE a.username = '${fine_username}'
|
||||||
|
)
|
||||||
SELECT
|
SELECT
|
||||||
A.organ_name AS organ_comm_name
|
A.organ_name AS organ_comm_name
|
||||||
,A.ac_total_fee AS actual_cost -- 成本
|
,A.ac_total_fee AS actual_cost -- 成本
|
||||||
@ -1114,6 +1372,7 @@ SELECT
|
|||||||
from dw.ods_cost_collection_lc_ac
|
from dw.ods_cost_collection_lc_ac
|
||||||
WHERE left(ym,4) = left('${p_ym}',4)
|
WHERE left(ym,4) = left('${p_ym}',4)
|
||||||
AND ym <= '${p_ym}'
|
AND ym <= '${p_ym}'
|
||||||
|
${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
||||||
GROUP BY organ_code,organ_name
|
GROUP BY organ_code,organ_name
|
||||||
)A
|
)A
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
@ -1146,6 +1405,15 @@ ${if(and(len(p_area)=0,p_type='行政')," -- 片区排名开始", "*/")}
|
|||||||
-- 项目排名
|
-- 项目排名
|
||||||
|
|
||||||
${if(and(len(p_area)>0,p_type='人力')," -- 片区排名开始", "/*")}
|
${if(and(len(p_area)>0,p_type='人力')," -- 片区排名开始", "/*")}
|
||||||
|
with one_to_many AS(
|
||||||
|
SELECT
|
||||||
|
a.username AS username -- 用户名
|
||||||
|
,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名
|
||||||
|
FROM ods_one_to_many_perm a
|
||||||
|
JOIN mysql.help_topic b
|
||||||
|
on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1)
|
||||||
|
WHERE a.username = '${fine_username}'
|
||||||
|
)
|
||||||
SELECT
|
SELECT
|
||||||
T.organ_comm_name AS organ_comm_name
|
T.organ_comm_name AS organ_comm_name
|
||||||
,T.actual_cost AS actual_cost
|
,T.actual_cost AS actual_cost
|
||||||
@ -1159,22 +1427,72 @@ FROM
|
|||||||
A.comm_name AS organ_comm_name
|
A.comm_name AS organ_comm_name
|
||||||
,SUM(A.lc_total_fee) AS actual_cost -- 成本
|
,SUM(A.lc_total_fee) AS actual_cost -- 成本
|
||||||
,SUM(B.index_income_fact) AS index_income_fact -- 实际收入
|
,SUM(B.index_income_fact) AS index_income_fact -- 实际收入
|
||||||
-- ,ROW_NUMBER() OVER (ORDER BY A.lc_total_fee / B.index_income_fact DESC ) AS 排名 -- 费率排名
|
|
||||||
,CASE WHEN sum(B.index_income_fact) = 0 THEN 0
|
,CASE WHEN sum(B.index_income_fact) = 0 THEN 0
|
||||||
ELSE SUM(A.lc_total_fee) / SUM(B.index_income_fact) END AS fee_rate
|
ELSE SUM(A.lc_total_fee) / SUM(B.index_income_fact) END AS fee_rate
|
||||||
,SUM(C.lc_fee_rate_target) AS target_fee_rate -- 费率目标
|
,SUM(C.lc_fee_rate_target) AS target_fee_rate -- 费率目标
|
||||||
FROM
|
FROM
|
||||||
( -- 费控人力行政成本填报
|
( SELECT
|
||||||
SELECT
|
A1.organ_code AS organ_code
|
||||||
organ_code
|
,A1.comm_id AS comm_id
|
||||||
|
,A1.comm_name AS comm_name
|
||||||
|
,A1.lc_total_fee AS lc_total_fee
|
||||||
|
,A2.comm_id AS erp_comm_id
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
-- 费控人力行政成本填报
|
||||||
|
SELECT organ_code
|
||||||
, comm_id
|
, comm_id
|
||||||
, comm_name
|
, comm_name
|
||||||
,coalesce(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),0) AS lc_total_fee -- 人力成本费用
|
, COALESCE(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),
|
||||||
,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用
|
0) AS lc_total_fee -- 人力成本费用
|
||||||
from dw.ods_cost_collection_lc_ac
|
, COALESCE(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),
|
||||||
WHERE left(ym,4) = left('${p_ym}',4)
|
0) AS ac_total_fee -- 行政成本费用
|
||||||
|
FROM dw.ods_cost_collection_lc_ac
|
||||||
|
WHERE LEFT(ym, 4) = LEFT('${p_ym}', 4)
|
||||||
AND ym <= '${p_ym}'
|
AND ym <= '${p_ym}'
|
||||||
GROUP BY organ_code, comm_id, comm_name
|
GROUP BY organ_code, comm_id, comm_name
|
||||||
|
)A1
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
organ_code
|
||||||
|
,organ_name
|
||||||
|
,comm_id
|
||||||
|
,comm_name
|
||||||
|
,hr_organ_id
|
||||||
|
,hr_organ_name
|
||||||
|
,hr_comm_id
|
||||||
|
,hr_comm_name
|
||||||
|
FROM dim_organ_mapping
|
||||||
|
WHERE length(hr_comm_id) > 0
|
||||||
|
GROUP BY
|
||||||
|
organ_code
|
||||||
|
,organ_name
|
||||||
|
,comm_id
|
||||||
|
,comm_name
|
||||||
|
,hr_organ_id
|
||||||
|
,hr_organ_name
|
||||||
|
,hr_comm_id
|
||||||
|
,hr_comm_name
|
||||||
|
UNION ALL
|
||||||
|
SELECT
|
||||||
|
'0000' AS organ_code -- erp片区编码
|
||||||
|
,'' AS organ_name -- erp片区名称
|
||||||
|
,'' AS comm_id
|
||||||
|
,'' AS comm_name
|
||||||
|
,'153' AS hr_organ_id -- hr片区编码
|
||||||
|
,'领悦集团总部' AS hr_organ_name -- hr片区名称
|
||||||
|
,'153' AS hr_comm_id -- hr项目id
|
||||||
|
,'领悦集团总部' AS hr_comm_name -- hr项目名称
|
||||||
|
)A2
|
||||||
|
ON A1.organ_code = A2.organ_code
|
||||||
|
and A1.comm_id = A2.hr_comm_id
|
||||||
|
where 1 = 1
|
||||||
|
${IF(LEN(p_area)>0," AND A1.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
||||||
|
AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL
|
||||||
|
THEN ${if(len(p_area)>0,"A2.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")}
|
||||||
|
ELSE ${if(left(fine_role,2)=="项目","A2.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
|
||||||
|
|
||||||
)A
|
)A
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
(-- 公司实际收入
|
(-- 公司实际收入
|
||||||
@ -1203,15 +1521,21 @@ FROM
|
|||||||
)C
|
)C
|
||||||
ON A.organ_code = C.organ_code
|
ON A.organ_code = C.organ_code
|
||||||
AND A.comm_id = C.comm_id
|
AND A.comm_id = C.comm_id
|
||||||
WHERE 1 = 1
|
|
||||||
${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
|
||||||
GROUP BY A.comm_name
|
GROUP BY A.comm_name
|
||||||
)T
|
)T
|
||||||
${if(and(len(p_area)>0,p_type='人力')," -- 片区排名开始", "*/")}
|
${if(and(len(p_area)>0,p_type='人力')," -- 片区排名开始", "*/")}
|
||||||
|
|
||||||
|
|
||||||
${if(and(len(p_area)>0,p_type='行政')," -- 片区排名开始", "/*")}
|
${if(and(len(p_area)>0,p_type='行政')," -- 片区排名开始", "/*")}
|
||||||
|
with one_to_many AS(
|
||||||
|
SELECT
|
||||||
|
a.username AS username -- 用户名
|
||||||
|
,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名
|
||||||
|
FROM ods_one_to_many_perm a
|
||||||
|
JOIN mysql.help_topic b
|
||||||
|
on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1)
|
||||||
|
WHERE a.username = '${fine_username}'
|
||||||
|
)
|
||||||
SELECT
|
SELECT
|
||||||
T.organ_comm_name AS organ_comm_name
|
T.organ_comm_name AS organ_comm_name
|
||||||
,T.actual_cost AS actual_cost
|
,T.actual_cost AS actual_cost
|
||||||
@ -1229,20 +1553,70 @@ SELECT
|
|||||||
,CASE WHEN SUM(B.index_income_fact) = 0 THEN 0
|
,CASE WHEN SUM(B.index_income_fact) = 0 THEN 0
|
||||||
ELSE SUM(A.ac_total_fee) / SUM(B.index_income_fact) END AS fee_rate
|
ELSE SUM(A.ac_total_fee) / SUM(B.index_income_fact) END AS fee_rate
|
||||||
,SUM(C.ac_fee_rate_target) AS target_fee_rate -- 费率目标
|
,SUM(C.ac_fee_rate_target) AS target_fee_rate -- 费率目标
|
||||||
|
|
||||||
|
|
||||||
FROM
|
FROM
|
||||||
( -- 费控人力行政成本填报
|
( -- 费控人力行政成本填报
|
||||||
SELECT
|
SELECT
|
||||||
organ_code
|
A1.organ_code AS organ_code
|
||||||
|
,A1.comm_id AS comm_id
|
||||||
|
,A1.comm_name AS comm_name
|
||||||
|
,A1.ac_total_fee AS ac_total_fee
|
||||||
|
,A2.comm_id AS erp_comm_id
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
-- 费控人力行政成本填报
|
||||||
|
SELECT organ_code
|
||||||
, comm_id
|
, comm_id
|
||||||
, comm_name
|
, comm_name
|
||||||
,coalesce(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),0) AS lc_total_fee -- 人力成本费用
|
, COALESCE(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),
|
||||||
,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用
|
0) AS lc_total_fee -- 人力成本费用
|
||||||
from dw.ods_cost_collection_lc_ac
|
, COALESCE(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),
|
||||||
WHERE left(ym,4) = left('${p_ym}',4)
|
0) AS ac_total_fee -- 行政成本费用
|
||||||
|
FROM dw.ods_cost_collection_lc_ac
|
||||||
|
WHERE LEFT(ym, 4) = LEFT('${p_ym}', 4)
|
||||||
AND ym <= '${p_ym}'
|
AND ym <= '${p_ym}'
|
||||||
GROUP BY organ_code, comm_id, comm_name
|
GROUP BY organ_code, comm_id, comm_name
|
||||||
|
)A1
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
organ_code
|
||||||
|
,organ_name
|
||||||
|
,comm_id
|
||||||
|
,comm_name
|
||||||
|
,hr_organ_id
|
||||||
|
,hr_organ_name
|
||||||
|
,hr_comm_id
|
||||||
|
,hr_comm_name
|
||||||
|
FROM dim_organ_mapping
|
||||||
|
WHERE length(hr_comm_id) > 0
|
||||||
|
GROUP BY
|
||||||
|
organ_code
|
||||||
|
,organ_name
|
||||||
|
,comm_id
|
||||||
|
,comm_name
|
||||||
|
,hr_organ_id
|
||||||
|
,hr_organ_name
|
||||||
|
,hr_comm_id
|
||||||
|
,hr_comm_name
|
||||||
|
UNION ALL
|
||||||
|
SELECT
|
||||||
|
'0000' AS organ_code -- erp片区编码
|
||||||
|
,'' AS organ_name -- erp片区名称
|
||||||
|
,'' AS comm_id
|
||||||
|
,'' AS comm_name
|
||||||
|
,'153' AS hr_organ_id -- hr片区编码
|
||||||
|
,'领悦集团总部' AS hr_organ_name -- hr片区名称
|
||||||
|
,'153' AS hr_comm_id -- hr项目id
|
||||||
|
,'领悦集团总部' AS hr_comm_name -- hr项目名称
|
||||||
|
)A2
|
||||||
|
ON A1.organ_code = A2.organ_code
|
||||||
|
and A1.comm_id = A2.hr_comm_id
|
||||||
|
where 1 = 1
|
||||||
|
${IF(LEN(p_area)>0," AND A1.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
||||||
|
AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL
|
||||||
|
THEN ${if(len(p_area)>0,"A2.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")}
|
||||||
|
ELSE ${if(left(fine_role,2)=="项目","A2.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
|
||||||
|
|
||||||
)A
|
)A
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
(-- 公司实际收入
|
(-- 公司实际收入
|
||||||
@ -1272,7 +1646,6 @@ FROM
|
|||||||
ON A.organ_code = C.organ_code
|
ON A.organ_code = C.organ_code
|
||||||
AND A.comm_id = C.comm_id
|
AND A.comm_id = C.comm_id
|
||||||
WHERE 1 = 1
|
WHERE 1 = 1
|
||||||
${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
|
||||||
GROUP BY A.comm_name
|
GROUP BY A.comm_name
|
||||||
)T
|
)T
|
||||||
${if(and(len(p_area)>0,p_type='行政')," -- 片区排名开始", "*/")}
|
${if(and(len(p_area)>0,p_type='行政')," -- 片区排名开始", "*/")}
|
||||||
@ -1286,6 +1659,15 @@ ${if(and(len(p_area)>0,p_type='行政')," -- 片区排名开始", "*/")}
|
|||||||
|
|
||||||
-- 片区
|
-- 片区
|
||||||
${IF(LEN(p_area)=0,"", "/*")}
|
${IF(LEN(p_area)=0,"", "/*")}
|
||||||
|
with one_to_many AS(
|
||||||
|
SELECT
|
||||||
|
a.username AS username -- 用户名
|
||||||
|
,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名
|
||||||
|
FROM ods_one_to_many_perm a
|
||||||
|
JOIN mysql.help_topic b
|
||||||
|
on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1)
|
||||||
|
WHERE a.username = '${fine_username}'
|
||||||
|
)
|
||||||
SELECT
|
SELECT
|
||||||
T.hr_organ_name AS hr_organ_name
|
T.hr_organ_name AS hr_organ_name
|
||||||
,T.lz_rate AS lz_rate
|
,T.lz_rate AS lz_rate
|
||||||
@ -1343,6 +1725,9 @@ FROM
|
|||||||
WHERE ym = '${p_ym}'
|
WHERE ym = '${p_ym}'
|
||||||
)C
|
)C
|
||||||
ON A.pq = C.organ_code
|
ON A.pq = C.organ_code
|
||||||
|
where 1 = 1
|
||||||
|
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
||||||
|
|
||||||
GROUP BY
|
GROUP BY
|
||||||
B.hr_organ_name
|
B.hr_organ_name
|
||||||
)T
|
)T
|
||||||
@ -1351,7 +1736,15 @@ ${IF(LEN(p_area)=0,"", "*/")}
|
|||||||
|
|
||||||
${IF(LEN(p_area)>0,"", "/*")}
|
${IF(LEN(p_area)>0,"", "/*")}
|
||||||
-- 项目
|
-- 项目
|
||||||
|
with one_to_many AS(
|
||||||
|
SELECT
|
||||||
|
a.username AS username -- 用户名
|
||||||
|
,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名
|
||||||
|
FROM ods_one_to_many_perm a
|
||||||
|
JOIN mysql.help_topic b
|
||||||
|
on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1)
|
||||||
|
WHERE a.username = '${fine_username}'
|
||||||
|
)
|
||||||
SELECT
|
SELECT
|
||||||
T.hr_organ_name AS hr_organ_name
|
T.hr_organ_name AS hr_organ_name
|
||||||
,T.lz_rate AS lz_rate -- 离职率
|
,T.lz_rate AS lz_rate -- 离职率
|
||||||
@ -1388,6 +1781,7 @@ FROM
|
|||||||
,hr_organ_name
|
,hr_organ_name
|
||||||
,hr_comm_id
|
,hr_comm_id
|
||||||
,hr_comm_name
|
,hr_comm_name
|
||||||
|
,comm_name
|
||||||
FROM dim_organ_mapping
|
FROM dim_organ_mapping
|
||||||
WHERE length(hr_comm_id) > 0
|
WHERE length(hr_comm_id) > 0
|
||||||
GROUP BY
|
GROUP BY
|
||||||
@ -1397,6 +1791,7 @@ FROM
|
|||||||
,hr_organ_name
|
,hr_organ_name
|
||||||
,hr_comm_id
|
,hr_comm_id
|
||||||
,hr_comm_name
|
,hr_comm_name
|
||||||
|
,comm_name
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT
|
SELECT
|
||||||
'0000' AS organ_code -- erp片区编码
|
'0000' AS organ_code -- erp片区编码
|
||||||
@ -1405,6 +1800,7 @@ FROM
|
|||||||
,'领悦集团总部' AS hr_organ_name -- hr片区名称
|
,'领悦集团总部' AS hr_organ_name -- hr片区名称
|
||||||
,'153' AS hr_comm_id -- hr项目id
|
,'153' AS hr_comm_id -- hr项目id
|
||||||
,'领悦集团总部' AS hr_comm_name -- hr项目名称
|
,'领悦集团总部' AS hr_comm_name -- hr项目名称
|
||||||
|
,'' AS comm_name
|
||||||
)B
|
)B
|
||||||
ON A.pq = B.hr_organ_id
|
ON A.pq = B.hr_organ_id
|
||||||
and A.xm = b.hr_comm_id
|
and A.xm = b.hr_comm_id
|
||||||
@ -1421,6 +1817,10 @@ FROM
|
|||||||
AND A.xm = C.comm_id
|
AND A.xm = C.comm_id
|
||||||
where 1 = 1
|
where 1 = 1
|
||||||
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
||||||
|
AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL
|
||||||
|
THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")}
|
||||||
|
ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
|
||||||
|
|
||||||
GROUP BY
|
GROUP BY
|
||||||
B.hr_comm_name
|
B.hr_comm_name
|
||||||
)T
|
)T
|
||||||
@ -1663,8 +2063,6 @@ SELECT
|
|||||||
FROM ods_hr_collection_target_overall
|
FROM ods_hr_collection_target_overall
|
||||||
WHERE ym = '${p_ym}'
|
WHERE ym = '${p_ym}'
|
||||||
)T
|
)T
|
||||||
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
|
|
||||||
|
|
||||||
|
|
||||||
${IF(LEN(p_area) = 0,"", "*/")}
|
${IF(LEN(p_area) = 0,"", "*/")}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user