住服比异常指标+明细表数据权限控制

This commit is contained in:
yangkunan 2024-11-19 11:33:02 +08:00
parent a6c38d853a
commit d0482904fe
6 changed files with 487 additions and 156 deletions

View File

@ -0,0 +1,10 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<MySQLCodeStyleSettings version="7">
<option name="DISABLE_FORMATTING" value="true" />
</MySQLCodeStyleSettings>
<SqlCodeStyleSettings version="7">
<option name="DISABLE_FORMATTING" value="true" />
</SqlCodeStyleSettings>
</code_scheme>
</component>

View File

@ -238,4 +238,151 @@ group by
a.comm_name
${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}'
),hr_date AS
(
SELECT
B.organ_code AS organ_code
,B.organ_name AS organ_name
,B.comm_id AS comm_id
,B.comm_name AS comm_name
,SUM(A.bzs) AS bzs
,SUM(zzs) AS zzs -- 在职人数
FROM
(
SELECT
A1.pq AS pq
,A1.xm AS xm
,SUM(A1.zzs) AS zzs
,sum(A1.bzs) AS bzs
FROM
(
SELECT
pq -- 片区
,ny
,xm
,SUM(zzs) AS zzs -- 在职数
,SUM(bzs) AS bzs -- 编制数
FROM ods_hr_view_mbl_d
WHERE pq not in('89','267') -- 排除了佳美、悦汇
GROUP BY pq,ny,xm
-- 没有项目的历史数据
-- UNION ALL
-- SELECT
-- organ_code as pq
-- ,concat(left(ym,4),'-',right(ym,2)) as ny
-- ,'' AS xm
-- ,SUM(zzs) AS zzs
-- ,SUM(bzs) AS bzs
-- FROM ods_hr_history_bz_num
-- WHERE 1 = 1
-- GROUP BY ym,organ_code
)A1
WHERE A1.ny = '${p_ym}'
group by A1.pq,A1.xm
)A
RIGHT JOIN
(
SELECT
organ_code -- erp片区编码
,organ_name -- erp片区名称
,hr_organ_id -- hr片区编码
,hr_organ_name -- hr片区名称
,hr_comm_id -- hr项目id
,hr_comm_name -- hr项目名称
,comm_id
,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_id
,comm_name
)B
ON A.pq = B.hr_organ_id
AND A.xm = B.hr_comm_id
group by B.organ_code, B.organ_name, B.comm_id, B.comm_name
)
SELECT
count(1) AS CNT
FROM
(
select
a.comm_name as p_area -- 片区/项目
-- organ_name -- 片区名称
-- ,comm_name -- 项目名称
,sum(room_num) as room_num -- 房间总数 【总户数】
,sum(check_ins_num) as check_ins_num -- 入住数 【入住户数】
,case when sum(check_ins_num) = 0
then 0
else sum(check_ins_num) / sum(room_num)
end as occupancy_rate -- 入住率
,SUM(IFNULL(b.zzs,0)) AS zzs -- 在职数
,CASE WHEN sum(check_ins_num) = 0
THEN 0 ELSE SUM(IFNULL(b.zzs,0)) / sum(check_ins_num) END AS zfb -- 住服比
,CASE WHEN SUM(b.bzs) = 0 THEN 0 ELSE SUM(b.zzs) / SUM(b.bzs) END AS full_rate -- 满编率
from
(
SELECT
organ_code
,organ_name
,comm_id
,comm_name
,SUM(room_num) AS room_num
,SUM(check_ins_num) AS check_ins_num
FROM dws_operation_room_park_info_d
WHERE 1 = 1
-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")}
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 comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}')
ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
group by
organ_code
,organ_name
,comm_id
,comm_name
) a
left join hr_date b
on a.organ_code = b.organ_code
and a.comm_id = b.comm_id
where 1=1
${IF(LEN(p_area)!=0," and a.organ_code IN ('"+JOINARRAY(p_area,"','")+"')","")}
-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")}
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 a.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}')
ELSE ${if(left(fine_role,2)=="项目","a.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
group by
a.comm_name
)T
where T.zfb > 0.1

View File

@ -83,6 +83,15 @@ ${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
B.hr_comm_name AS comm_organ_name -- 片区
,SUM(IFNULL(A.bzs,0)) AS bzs -- 编制数
@ -253,12 +262,32 @@ ON B.organ_code = C.organ_code
AND B.hr_comm_id = C.comm_id
WHERE 1=1
${IF(LEN(p_area)>0," AND B.organ_code IN ('" + 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 B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}')
ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
GROUP BY
B.hr_comm_name
${if(len(p_area)>0,"", "*/")}
-- 满编率整体目标
${if(len(p_area)=0,"", "/*")}
SELECT
full_rate_target -- 满编率目标
FROM ods_hr_collection_target_overall
WHERE ym = '${p_ym}'
${if(len(p_area)=0,"", "*/")}
-- 片区整体目标
${if(len(p_area) =1,"", "/*")}
SELECT
full_rate_target -- 满编率目标
FROM ods_hr_collection_target_organ
WHERE ym = '${p_ym}'
AND organ_code = '${p_area}'
${if(len(p_area)=1,"", "*/")}
-- ======================================
-- 编制历史数据
-- ======================================

View File

@ -1,3 +1,12 @@
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
${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} AS hr_organ_name
,SUM(A.StartOfmonth_zzrs) AS StartOfmonth_zzrs -- 月初在职人数
@ -170,6 +179,9 @@ RIGHT JOIN
,hr_comm_name -- hr项目名称
FROM dim_organ_mapping
WHERE length(hr_comm_id) > 0
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 comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}')
ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
GROUP BY
organ_code
,organ_name
@ -191,6 +203,7 @@ ON A.pq = B.hr_organ_id
and A.xm = b.hr_comm_id
where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('" + p_area +"')", "")}
GROUP BY
${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")}
ORDER BY ${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")}

View File

@ -363,7 +363,15 @@ ${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
A1.hr_comm_name AS organ_comm -- 片区
,SUM(C.lc_fee_rate_target) AS year_fee_rate_target -- 人力费率年度目标值
@ -397,6 +405,7 @@ SELECT
organ_code
,organ_name
,comm_id
,comm_name
,hr_organ_id
,hr_organ_name
,hr_comm_id
@ -407,6 +416,7 @@ SELECT
organ_code
,organ_name
,comm_id
,comm_name
,hr_organ_id
,hr_organ_name
,hr_comm_id
@ -416,6 +426,7 @@ 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
@ -487,6 +498,9 @@ SELECT
AND A1.hr_comm_id = D.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 A1.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}')
ELSE ${if(left(fine_role,2)=="项目","A1.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
GROUP BY A1.hr_comm_name
@ -494,9 +508,15 @@ SELECT
${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
A1.hr_comm_name AS organ_comm -- 片区
,SUM(C.ac_fee_rate_target) AS year_fee_rate_target -- 人力费率年度目标值
@ -530,6 +550,7 @@ SELECT
organ_code
,organ_name
,comm_id
,comm_name
,hr_organ_id
,hr_organ_name
,hr_comm_id
@ -540,6 +561,7 @@ SELECT
organ_code
,organ_name
,comm_id
,comm_name
,hr_organ_id
,hr_organ_name
,hr_comm_id
@ -549,6 +571,7 @@ 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
@ -620,6 +643,9 @@ SELECT
AND A1.hr_comm_id = D.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 A1.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}')
ELSE ${if(left(fine_role,2)=="项目","A1.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
GROUP BY A1.hr_comm_name

View File

@ -45,6 +45,15 @@ GROUP BY nld
-- 年龄分布
-- 年龄30岁30岁≤年龄40岁40岁≤年龄50岁50岁≤年龄60岁60岁≤年龄65岁年龄≥65岁
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
CASE WHEN A.nl < 30.00 THEN '年龄30岁'
WHEN A.nl >= 30.00 AND A.nl < 40.00 THEN '30岁≤年龄40岁'
@ -66,36 +75,44 @@ FROM
)A
LEFT JOIN
(
SELECT
organ_code -- erp片区编码
,organ_name -- erp片区名称
,hr_organ_id -- hr片区编码
,hr_organ_name -- hr片区名称
,hr_comm_id -- hr项目id
,hr_comm_name -- hr项目名称
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
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项目名称
FROM dual
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
,'领悦集团总部' AS hr_comm_name
)B
ON A.pq = B.hr_organ_id
and A.xm = b.hr_comm_id
where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ 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 B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}')
ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
GROUP BY
CASE WHEN nl < 30.00 THEN '年龄30岁'
WHEN nl >= 30.00 AND nl < 40.00 THEN '30岁≤年龄40岁'
@ -149,7 +166,15 @@ where 1 = 1
GROUP BY sld
-- 司龄3个月内3个月≤司龄1年1年≤司龄3年3年≤司龄5年5年≤司龄10年10年≤司龄15年司龄≥15年
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
CASE WHEN A.sl < 0.30 THEN '司龄3个月内'
WHEN A.sl >= 0.30 AND A.sl < 1.00 THEN '3个月≤司龄1年'
@ -173,35 +198,44 @@ FROM
LEFT JOIN
(
SELECT
organ_code -- erp片区编码
,organ_name -- erp片区名称
,hr_organ_id -- hr片区编码
,hr_organ_name -- hr片区名称
,hr_comm_id -- hr项目id
,hr_comm_name -- hr项目名称
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
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项目名称
FROM dual
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
,'领悦集团总部' AS hr_comm_name
)B
ON A.pq = B.hr_organ_id
and A.xm = b.hr_comm_id
where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ 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 B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}')
ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
GROUP BY
CASE WHEN A.sl < 0.30 THEN '司龄3个月内'
WHEN A.sl >= 0.30 AND A.sl < 1.00 THEN '3个月≤司龄1年'
@ -256,6 +290,16 @@ where 1 = 1
GROUP BY xl
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
A.xlmc
,count(1) AS sl
@ -271,36 +315,45 @@ FROM
)A
LEFT JOIN
(
SELECT
organ_code -- erp片区编码
,organ_name -- erp片区名称
,hr_organ_id -- hr片区编码
,hr_organ_name -- hr片区名称
,hr_comm_id -- hr项目id
,hr_comm_name -- hr项目名称
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
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项目名称
FROM dual
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
,'领悦集团总部' AS hr_comm_name
)B
ON A.pq = B.hr_organ_id
and A.xm = b.hr_comm_id
where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ 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 B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}')
ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
GROUP BY
A.xlmc
@ -358,6 +411,15 @@ GROUP BY zwje
-- 案场部门负责人
-- 员工
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
zwmc AS zwje
,count(1) AS sl
@ -374,35 +436,44 @@ FROM
LEFT JOIN
(
SELECT
organ_code -- erp片区编码
,organ_name -- erp片区名称
,hr_organ_id -- hr片区编码
,hr_organ_name -- hr片区名称
,hr_comm_id -- hr项目id
,hr_comm_name -- hr项目名称
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
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项目名称
FROM dual
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
,'领悦集团总部' AS hr_comm_name
)B
ON A.pq = B.hr_organ_id
and A.xm = b.hr_comm_id
where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ 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 B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}')
ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
GROUP BY
A.zwmc
@ -453,7 +524,15 @@ GROUP BY swtx
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
A.zycjname
,count(1) AS sl
@ -469,36 +548,46 @@ FROM
)A
LEFT JOIN
(
SELECT
organ_code -- erp片区编码
,organ_name -- erp片区名称
,hr_organ_id -- hr片区编码
,hr_organ_name -- hr片区名称
,hr_comm_id -- hr项目id
,hr_comm_name -- hr项目名称
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
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项目名称
FROM dual
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
,'领悦集团总部' AS hr_comm_name
)B
ON A.pq = B.hr_organ_id
and A.xm = b.hr_comm_id
where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ p_area +"')", "")}
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ 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 B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}')
ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
GROUP BY
A.zycjname
@ -550,7 +639,15 @@ GROUP BY zytx
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
A.zytxmc
,count(1) AS sl
@ -567,35 +664,44 @@ FROM
LEFT JOIN
(
SELECT
organ_code -- erp片区编码
,organ_name -- erp片区名称
,hr_organ_id -- hr片区编码
,hr_organ_name -- hr片区名称
,hr_comm_id -- hr项目id
,hr_comm_name -- hr项目名称
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
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项目名称
FROM dual
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
,'领悦集团总部' AS hr_comm_name
)B
ON A.pq = B.hr_organ_id
and A.xm = b.hr_comm_id
where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ p_area +"')", "")}
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ 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 B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}')
ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
GROUP BY
A.zytxmc