diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 297a7b5..8b050c8 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -6,8 +6,9 @@ - - + + + \ No newline at end of file diff --git a/dw/dwd/dwd_cost_detail_data_d.sql b/dw/dwd/dwd_cost_detail_data_d.sql index bf0e83e..069bd28 100644 --- a/dw/dwd/dwd_cost_detail_data_d.sql +++ b/dw/dwd/dwd_cost_detail_data_d.sql @@ -1,4 +1,3 @@ - -- ----------------------------------- -- 费控明细表建表 -- ----------------------------------- @@ -27,7 +26,6 @@ CREATE TABLE IF NOT EXISTS dw.dwd_cost_detail_data_d ( ,implementation_rate VARCHAR(50) COMMENT '执行率' )COMMENT = '费控明细表'; - -- **************************************** -- 创建人员: 杨坤安 -- 创建日期: 2024-07-19 diff --git a/dwd_cost_detail_data_d.sql b/dwd_cost_detail_data_d.sql deleted file mode 100644 index 0fd163e..0000000 --- a/dwd_cost_detail_data_d.sql +++ /dev/null @@ -1,194 +0,0 @@ - -------------------------------------- --- 费控明细表建表 -------------------------------------- -DROP TABLE IF EXISTS dw.dwd_cost_detail_data_d; -CREATE TABLE IF NOT EXISTS dw.dwd_cost_detail_data_d ( - yearname VARCHAR(50) COMMENT '年' -,monthname VARCHAR(50) COMMENT '月' -,organ_code VARCHAR(255) COMMENT '片区ID' -,organ_name VARCHAR(255) COMMENT '片区名称' -,cost_code VARCHAR(50) COMMENT '成本类型编码: LC:行政成本 AC:人力成本' -,cost_name VARCHAR(50) COMMENT '成本类型名称' -,dimsubjectcode VARCHAR(255) COMMENT '组织机构编码' -,dimsubjectname VARCHAR(255) COMMENT '组织机构名称' -,totalcode VARCHAR(255) COMMENT '组织机构层级编码' -,dimaccountcode VARCHAR(255) COMMENT '预算科目编码' -,dimaccountname VARCHAR(255) COMMENT '预算科目名称' -,buget VARCHAR(255) COMMENT '预算金额' -,occ VARCHAR(255) COMMENT '已占用金额' -,realfee VARCHAR(255) COMMENT '已使用金额' -,available VARCHAR(255) COMMENT '剩余可用金额' -,budgetfee_rate VARCHAR(50) COMMENT '预算执行率' -,originalcurrency VARCHAR(255) COMMENT '调整金额' -,target_fee VARCHAR(255) COMMENT '目标值' -,actual_fee VARCHAR(255) COMMENT '实际值' -,diff_amount VARCHAR(255) COMMENT '差额' -,implementation_rate VARCHAR(50) COMMENT '执行率' -)COMMENT = '费控明细表' - - ------------------------------------------------------------------------------------------------- --- 【指标计算】 - --- 预算金额 - 调整金额 = 预算初期金额 - --- 查询预算sql的预算金额(年月需要和调整金额sql中的年月一致)-调整金额sql的调整金额=预算初期金额 - --- 目标值 = 预算金额 - 调整金额 --- 实际值 = 已使用金额 --- 差额 = 目标值 - 实际值 --- 执行率 = 实际值 / 目标值 - ------------------------------------------------------------------------------------------------- - - -truncate dw.dwd_cost_detail_data_d; -INSERT into dw.dwd_cost_detail_data_d -SELECT - T1.yearname AS yearname -- 年 - ,T1.monthname AS monthname -- 月 - ,T2.organ_code AS organ_code -- 片区ID - ,T2.organ_name AS organ_name -- 片区名称 - ,T1.cost_code AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本 - ,T1.cost_name AS cost_name -- 成本类型名称 - ,T1.dimsubjectcode AS dimsubjectcode -- 组织机构编码 - ,T1.dimsubjectname AS dimsubjectname -- 组织机构名称 - ,T1.totalcode AS totalcode -- 组织机构层级编码 - ,T1.dimaccountcode AS dimaccountcode -- 预算科目编码 - ,T1.dimaccountname AS dimaccountname -- 预算科目名称 - ,T1.buget AS buget -- 预算金额 - ,T1.occ AS occ -- 已占用金额 - ,T1.realfee AS realfee -- 已使用金额 - ,T1.available AS available -- 剩余可用金额 - ,T1.budgetfee_rate AS budgetfee_rate -- 预算执行率 - ,T1.originalcurrency AS originalcurrency -- 调整金额 - ,T1.target_fee AS target_fee -- 目标值 - ,T1.actual_fee AS actual_fee -- 实际值 - ,ROUND((T1.target_fee - T1.actual_fee),2) AS diff_amount -- 差额 - ,case when T1.target_fee = 0 then '0%' else concat(ROUND((T1.actual_fee / T1.target_fee)*100,2),'%') end AS implementation_rate -- 执行率 -FROM -( - SELECT - A.yearname AS yearname -- 年 - ,A.monthname AS monthname -- 月 - ,'LC' AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本 - ,'行政成本' AS cost_name -- 成本类型名称 - ,A.dimsubjectcode AS dimsubjectcode -- 组织机构编码 - ,A.dimsubjectname AS dimsubjectname -- 组织机构名称 - ,A.totalcode AS totalcode -- 组织机构层级编码 - ,A.dimaccountcode AS dimaccountcode -- 预算科目编码 - ,A.dimaccountname AS dimaccountname -- 预算科目名称 - ,A.buget AS buget -- 预算金额 - ,A.occ AS occ -- 已占用金额 - ,A.realfee AS realfee -- 已使用金额 - ,A.available AS available -- 剩余可用金额 - ,A.budgetfee_rate AS budgetfee_rate -- 预算执行率 - ,COALESCE(B.originalcurrency,0) AS originalcurrency -- 调整金额 - ,ROUND((A.buget - COALESCE(B.originalcurrency,0)),2) AS target_fee -- 目标值 - ,A.realfee AS actual_fee -- 实际值 - -- ,'' AS diff_amount -- 差额 - -- ,'' AS implementation_rate -- 执行率 - FROM - ( - SELECT - dimaccountcode -- 预算科目编码 - ,dimaccountname -- 预算科目名称 - ,dimsubjectcode -- 组织机构编码 - ,dimsubjectname -- 组织机构名称 - ,yearname -- 年 - ,totalcode -- 组织机构层级编码 - ,monthname -- 月 - ,buget -- 预算金额 - ,occ -- 已占用金额 - ,realfee -- 已使用金额 - ,available -- 剩余可用金额 - ,budgetfee_rate -- 预算执行率 - FROM dw.dwd_cost_budget_data_d -- 预算金额明细表 - WHERE dimaccountcode IN('WY0402','WY040201','WY040202','WY040203','WY040204','WY040205','WY040206','WY040207','WY040208','WY040209','WY040210','WY040211','WY040212','WY040213','WY040214','WY040215','WY040216') - )A - LEFT JOIN - ( - SELECT - year -- 年 - ,month -- 月 - ,dimsubjectcode -- 调整组织机构编码 - ,dimaccountcode -- 调整预算科目编码 - ,originalcurrency -- 调整金额 - FROM dw.dwd_cost_adjust_data_d -- 调整金额明细表 - WHERE dimaccountcode IN('WY0402','WY040201','WY040202','WY040203','WY040204','WY040205','WY040206','WY040207','WY040208','WY040209','WY040210','WY040211','WY040212','WY040213','WY040214','WY040215','WY040216') - )B - ON A.dimaccountcode = B.dimaccountcode - AND A.dimsubjectcode = B.dimsubjectcode - AND A.yearname = B.year - AND A.monthname = B.month - UNION ALL - SELECT - A.yearname AS yearname -- 年 - ,A.monthname AS monthname -- 月 - ,'AC' AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本 - ,'人力成本' AS cost_name -- 成本类型名称 - ,A.dimsubjectcode AS dimsubjectcode -- 组织机构编码 - ,A.dimsubjectname AS dimsubjectname -- 组织机构名称 - ,A.totalcode AS totalcode -- 组织机构层级编码 - ,A.dimaccountcode AS dimaccountcode -- 预算科目编码 - ,A.dimaccountname AS dimaccountname -- 预算科目名称 - ,A.buget AS buget -- 预算金额 - ,A.occ AS occ -- 已占用金额 - ,A.realfee AS realfee -- 已使用金额 - ,A.available AS available -- 剩余可用金额 - ,A.budgetfee_rate AS budgetfee_rate -- 预算执行率 - ,COALESCE(B.originalcurrency,0) AS originalcurrency -- 调整金额 - ,ROUND((A.buget - COALESCE(B.originalcurrency,0)),2) AS target_fee -- 目标值 - ,A.realfee AS actual_fee -- 实际值 - -- ,'' AS diff_amount -- 差额 - -- ,'' AS implementation_rate -- 执行率 - FROM - ( - SELECT - dimaccountcode -- 预算科目编码 - ,dimaccountname -- 预算科目名称 - ,dimsubjectcode -- 组织机构编码 - ,dimsubjectname -- 组织机构名称 - ,yearname -- 年 - ,totalcode -- 组织机构层级编码 - ,monthname -- 月 - ,buget -- 预算金额 - ,occ -- 已占用金额 - ,realfee -- 已使用金额 - ,available -- 剩余可用金额 - ,budgetfee_rate -- 预算执行率 - FROM dw.dwd_cost_budget_data_d -- 预算金额明细表 - WHERE dimaccountcode IN('WY0401','WY040101','WY040102','WY040103','WY040104','WY040105','WY040106','WY040107','WY040108','WY040109','WY040110','WY040111','WY040112','WY040113','WY040114') - )A - LEFT JOIN - ( - SELECT - year -- 年 - ,month -- 月 - ,dimsubjectcode -- 调整组织机构编码 - ,dimaccountcode -- 调整预算科目编码 - ,originalcurrency -- 调整金额 - FROM dw.dwd_cost_adjust_data_d -- 调整金额明细表 - WHERE dimaccountcode IN('WY0401','WY040101','WY040102','WY040103','WY040104','WY040105','WY040106','WY040107','WY040108','WY040109','WY040110','WY040111','WY040112','WY040113','WY040114') - )B - ON A.dimaccountcode = B.dimaccountcode - AND A.dimsubjectcode = B.dimsubjectcode - AND A.yearname = B.year - AND A.monthname = B.month -)T1 -LEFT JOIN -( - SELECT - organ_code -- erp片区id - ,organ_name -- erp片区名称 - ,cost_comm_id -- 费控项目id - FROM dw.dim_organ_mapping -- 片区项目映射维度表 - where cost_comm_id is not null - GROUP BY - organ_code -- erp片区id - ,organ_name -- erp片区名称 - ,cost_comm_id -- 费控项目id -)T2 -ON T1.dimsubjectcode = T2.cost_comm_id -; \ No newline at end of file diff --git a/finereport/detail/住服比异常项目.sql b/finereport/xiazuan/2_operation/住服比异常项目.sql similarity index 76% rename from finereport/detail/住服比异常项目.sql rename to finereport/xiazuan/2_operation/住服比异常项目.sql index 69d605f..0d5f765 100644 --- a/finereport/detail/住服比异常项目.sql +++ b/finereport/xiazuan/2_operation/住服比异常项目.sql @@ -20,6 +20,14 @@ select end as occupancy_rate -- 入住率 from dws_operation_room_park_info_d where 1=1 -${if(len(p_area) == 0,"","and organ_code = '" + p_area+ "'")} + ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} group by -${if(len(p_area) == 0,"organ_name","comm_name")} -- 片区/项目 \ No newline at end of file +${if(len(p_area) == 0,"organ_name","comm_name")} + + +-- 【筛选框数据集: dic_erp片区】 + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dim_organ_mapping \ No newline at end of file diff --git a/finereport/detail/计划到期明细.sql b/finereport/xiazuan/2_operation/计划到期明细.sql similarity index 61% rename from finereport/detail/计划到期明细.sql rename to finereport/xiazuan/2_operation/计划到期明细.sql index 68c23c3..1ed0e56 100644 --- a/finereport/detail/计划到期明细.sql +++ b/finereport/xiazuan/2_operation/计划到期明细.sql @@ -7,25 +7,27 @@ -- 【数据集: report_计划到期】 select - ${if(len(p_area) == 0,"coalesce(d.oa_organ_name,c.subcompanyname)","c.subcompanyname")} as p_area - ,d.oa_comm_id as oa_comm_id -- 项目id - ,d.oa_comm_name as oa_comm_name -- 项目名称 - ,d.oa_organ_code as oa_organ_code -- 片区id - ,d.oa_organ_name as oa_organ_name -- 片区名称 - ,b.subcompanyid1 as subcompanyid1 -- 公司id - ,c.subcompanyname as subcompanyname -- 公司名称 - ,c.supsubcomid as supsubcomid -- 父公司id - ,a.plan_name as plan_name -- 计划名称 - ,a.eval_criteria as plan_desc -- 计划内容 - ,a.plan_level as plan_level -- 计划等级 - ,left(a.start_date,7) as ym -- 计划开始年月 - ,a.start_dt as start_dt -- 计划开始时 - ,a.end_date as end_date -- 计划结束时间 + ${if(len(p_area) == 0,"c.organ_name","c.comm_name")} as p_area + ,c.oa_comm_id as oa_comm_id -- oa项目id + ,c.oa_comm_name as oa_comm_name -- oa项目名称 + ,c.oa_organ_code as oa_organ_code -- oa片区id + ,c.oa_organ_name as oa_organ_name -- oa片区名称 + ,c.organ_code as organ_code -- erp片区编码 + ,c.organ_name as organ_name -- erp片区名称 + ,c.comm_id as comm_id -- erp项目id + ,c.comm_name as comm_name -- erp项目名称 + ,b.subcompanyid1 as subcompanyid1 -- 公司id + ,a.plan_name as plan_name -- 计划名称 + ,a.eval_criteria as plan_desc -- 计划内容 + ,a.plan_level as plan_level -- 计划等级 + ,left(a.start_date,7) as ym -- 计划开始年月 + ,a.start_dt as start_dt -- 计划开始时 + ,a.end_date as end_date -- 计划结束时间 ,a.finish_date as finish_date -- 计划完成时间 ,a.input_date as input_date -- 计划录入时间 - ,a.day_diff as day_diff -- 距离计划结束天数 - ,a.executor as executor -- 执行人编码 - ,b.lastname as executor_name -- 执行人 + ,a.day_diff as day_diff -- 距离计划结束天数 + ,a.responsible_person1 as responsible_person1 -- 责任人编码 + ,b.lastname as executor_name -- 责任人名称 ,left(a.end_ym,7) as end_ym -- 计划结束年月 from ( @@ -33,7 +35,7 @@ from concat(left(trim(start_date),5),lpad(substring_index(substring_index(trim(start_date),'-',2),'-',-1),2,0),right(trim(start_date),3)) as start_date ,a.start_date as start_dt -- 计划开始时间 ,a.plan_level -- 计划等级 - ,jt.executor -- 执行人 责任人 口径可能不一致 + ,jt.responsible_person1 -- 责任人 ,a.plan_status -- 计划状态 ,a.input_date -- 录入时间 ,a.end_date -- 计划结束时间 @@ -44,11 +46,13 @@ from ,a.eval_criteria -- 评价标准 FROM dw.dwd_operations_plan_info_d a, JSON_TABLE ( - cast( CONCAT( '["', REPLACE ( executor, ',', '","' ), '"]' ) AS json ), - "$[*]" COLUMNS ( executor INT PATH "$" ) + cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ), + "$[*]" COLUMNS ( responsible_person1 INT PATH "$" ) ) AS jt - WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 - AND TO_DAYS(a.end_date) - TO_DAYS(curdate()) >= 1 + -- WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 + -- AND TO_DAYS(a.end_date) - TO_DAYS(curdate()) >= 1 + where a.end_date > date_format(CURDATE() - INTERVAL 3 day,'%Y-%m-%d') + and a.end_date <= date_format(CURDATE(),'%Y-%m-%d') )a left join ( @@ -59,23 +63,26 @@ from from dw.ods_oa_hrmresource_d )b - on a.executor = b.id - inner join + on a.responsible_person1 = b.id + left join ( select - id - ,subcompanyname -- 公司名称 - ,supsubcomid -- 父公司id - from dw.ods_oa_hrmsubcompany_d - where 1 = 1 - ${if(len(p_area) == 0,"","and supsubcomid = '" + p_area + "'")} + distinct + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,comm_id -- erp项目id + ,comm_name -- erp项目名称 + ,oa_organ_code -- oa片区id + ,oa_organ_name -- oa片区名称 + ,oa_comm_id -- oa项目id + ,oa_comm_name -- oa项目名称 + from dim_organ_mapping -- 组织结构映射维度表 + where comm_id is not null )c - on b.subcompanyid1 = c.id - left join (select distinct oa_comm_id, oa_comm_name, oa_organ_code, oa_organ_name from dim_organ_mapping) d - on b.subcompanyid1 = d.oa_comm_id -where 1 = 1 + on b.subcompanyid1 = c.oa_comm_id + where 1 = 1 ${if(len(p_startdate) == 0,"","and left(a.end_ym,7) = '" + p_startdate + "'")} - + ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} diff --git a/finereport/detail/车位空置率明细.sql b/finereport/xiazuan/2_operation/车位空置率明细.sql similarity index 100% rename from finereport/detail/车位空置率明细.sql rename to finereport/xiazuan/2_operation/车位空置率明细.sql diff --git a/finereport/detail/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql similarity index 63% rename from finereport/detail/项目明细弹窗.sql rename to finereport/xiazuan/2_operation/项目明细弹窗.sql index 8ef92d9..4c0d7fe 100644 --- a/finereport/detail/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -6,36 +6,31 @@ -- **************************************** -- 【数据集: report_project】 +-- 1. 财务 finance +-- 2. 运营 operation +-- 3. 物业 property +-- 4. 工程 engine +-- 5. 人力 5_manpower +-- 6. 创新 6_innovation +-- 7. 商业 7_business +-- 8. 法务 8_legal --- SELECT --- --- -- ${if(len(p_area) == 0,"t.organ_name","t.comm_name")} as p_area -- 片区/项目 --- t.organ_name as organ_name -- erp片区名称 --- ,t.comm_name as comm_name -- erp项目名称 --- ,${if(len(p_area) == 0,"'-'","t.ManageKindName")} as ManageKindName -- 管理性质名称 【项目归属】 --- ,${if(len(p_area) == 0,"'-'","t.StateName")} as StateName -- 业态 【项目业态】 --- ,sum(t.ContractArea) as ContractArea -- 合同面积 【建筑面积】 --- ,sum(t.TakeOverArea) as TakeOverArea -- 接管面积 【合约面积】 --- ,sum(t.ManageContractArea) as ManageContractArea -- 管理口径合同面积 【在管面积】 --- ,sum(t.room_num) as room_num -- 总户数 --- FROM --- ( SELECT - -- ${if(len(p_area) == 0,"B.organ_name","B.comm_name")} as p_area - -- ,A.CommId AS CommId -- 项目id 可关联maping表 - -- ${if(len(p_area) == 0,",'-'",",A.ManageKindName")} as newManageKind - -- ,A.ManageKind AS ManageKind -- 管理性质 【项目归属】 - A.ManageKindName AS ManageKindName -- 管理性质名称 【项目归属】 + -- ${if(len(p_area) == 0,"B.organ_name","B.comm_name")} as p_area + -- ,A.CommId AS CommId -- 项目id 可关联maping表 + -- ${if(len(p_area) == 0,",'-'",",A.ManageKindName")} as newManageKind + -- ,A.ManageKind AS ManageKind -- 管理性质 【项目归属】 + A.ManageKindName AS ManageKindName -- 管理性质名称 【项目归属】 ,A.ContractArea / 10000 AS ContractArea -- 合同面积 【建筑面积】 ,A.TakeOverArea / 10000 AS TakeOverArea -- 接管面积 【合约面积】 ,A.ManageContractArea / 10000 AS ManageContractArea -- 管理口径合同面积 【在管面积】 - -- ${if(len(p_area) == 0,",'-'",",A.StateName")} as newStateName + -- ${if(len(p_area) == 0,",'-'",",A.StateName")} as newStateName ,A.StateName AS StateName -- 业态 【项目业态】 ,C.room_num AS room_num -- 总户数 - -- ,A.Province AS Province -- 省 - -- ,A.City AS City -- 市 - -- ,A.County AS County -- 区 - -- ,B.organ_code AS organ_code -- erp片区id + -- ,A.Province AS Province -- 省 + -- ,A.City AS City -- 市 + -- ,A.County AS County -- 区 + ,B.organ_code AS organ_code -- erp片区id ,B.organ_name AS organ_name -- erp片区名称 -- ,B.comm_id AS -- erp项目id ,B.comm_name AS comm_name -- erp项目名称 @@ -62,6 +57,7 @@ FROM ,comm_id -- erp项目id ,comm_name -- erp项目名称 FROM dw.dim_organ_mapping -- 片区项目映射维度表 + where comm_id is not null and comm_name not like '%撤场%' and comm_name not like '%案场%' and comm_name not like '%禁用%' and length(comm_id) != 0 GROUP BY organ_code -- erp片区id ,organ_name -- erp片区名称 @@ -69,7 +65,7 @@ FROM ,comm_name -- erp项目名称 )B ON A.CommId = B.comm_id - JOIN + LEFT JOIN ( SELECT CommID @@ -79,8 +75,8 @@ FROM CommID )C ON A.CommId = C.CommID -where 1 = 1 - ${if(len(p_area) == 0,"","and organ_code = '" + p_area + "'")} + where 1 = 1 + ${IF(LEN(p_area)!=0," where t.organ_code IN ('"+JOINARRAY(p_area,"','")+"')","")} -- )t @@ -106,4 +102,3 @@ SELECT DISTINCT FROM dim_organ_mapping ; -