diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index cc4181a..297a7b5 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -3,6 +3,11 @@ + + + + + \ No newline at end of file diff --git a/doc/映射表规范.md b/doc/映射表规范.md new file mode 100644 index 0000000..9e6eb95 --- /dev/null +++ b/doc/映射表规范.md @@ -0,0 +1,27 @@ +# 组织架构映射表规范 + +关于 ```dim_organ_mapping```表数据填报规范 + + + +## 1. 专属字段id命名规则 + + +1> **客满项目在erp有的 按erp项目编码开始** + +2> **客满项目在erp完全没有的,项目id从1001开始** + +3> **财务项目在erp完全没有的,项目id从0001开始,片区ID从5001开始** + + +【满意度明细 新增片区如下】 + +| 项目id | 项目名称 | +|---|---| +| 1001 | 【荆州】凤鸣蘭台 | +| 214312003 | 【成都】新津天府兰台五期 | +| 214312002 | 【成都】新津天府兰台四期 | +| 214312001 | 【成都】新津天府兰台三期 | +| 214351002 | 【成都】港基·叠香庄园 | +| 214350002 | 【成都】翰香府 | + diff --git a/dw/dwd/dwd_cost_detail_data_d.sql b/dw/dwd/dwd_cost_detail_data_d.sql index 0fd163e..bf0e83e 100644 --- a/dw/dwd/dwd_cost_detail_data_d.sql +++ b/dw/dwd/dwd_cost_detail_data_d.sql @@ -1,7 +1,7 @@ -------------------------------------- +-- ----------------------------------- -- 费控明细表建表 -------------------------------------- +-- ----------------------------------- 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 '年' @@ -25,10 +25,17 @@ CREATE TABLE IF NOT EXISTS dw.dwd_cost_detail_data_d ( ,actual_fee VARCHAR(255) COMMENT '实际值' ,diff_amount VARCHAR(255) COMMENT '差额' ,implementation_rate VARCHAR(50) COMMENT '执行率' -)COMMENT = '费控明细表' +)COMMENT = '费控明细表'; ------------------------------------------------------------------------------------------------- +-- **************************************** +-- 创建人员: 杨坤安 +-- 创建日期: 2024-07-19 +-- 功 能: 费控明细表 +-- **************************************** + + +-- ---------------------------------------------------------------------------------------------- -- 【指标计算】 -- 预算金额 - 调整金额 = 预算初期金额 @@ -40,7 +47,7 @@ CREATE TABLE IF NOT EXISTS dw.dwd_cost_detail_data_d ( -- 差额 = 目标值 - 实际值 -- 执行率 = 实际值 / 目标值 ------------------------------------------------------------------------------------------------- +-- ---------------------------------------------------------------------------------------------- truncate dw.dwd_cost_detail_data_d; diff --git a/dw/ods/ods_cost_adjust_data_d.sql b/dw/ods/ods_cost_adjust_data_d.sql index de3d8e2..4397526 100644 --- a/dw/ods/ods_cost_adjust_data_d.sql +++ b/dw/ods/ods_cost_adjust_data_d.sql @@ -1,6 +1,6 @@ drop table if exists dw.ods_cost_adjust_data_d; -CREATE TABLE IF NOT EXISTS dw. ( +CREATE TABLE IF NOT EXISTS dw.ods_cost_adjust_data_d ( originalcurrency VARCHAR(255) COMMENT '调整金额' ,dimaccountcode VARCHAR(255) COMMENT '调整预算科目编码' ,dimaccountname VARCHAR(255) COMMENT '调整预算科目名称' @@ -8,7 +8,7 @@ CREATE TABLE IF NOT EXISTS dw. ( ,dimsubjectname VARCHAR(255) COMMENT '调整组织结构名称' ,year VARCHAR(100) COMMENT '年' ,month VARCHAR(100) COMMENT '月' -)COMMENT = '费控调整金额数据' +)COMMENT = '费控调整金额数据'; select @@ -51,4 +51,5 @@ dimaccountcode ,DimSubjectcode ,DimSubjectname ,year -,month \ No newline at end of file +,month +; \ No newline at end of file diff --git a/dw/ods/ods_cost_budget_data_d.sql b/dw/ods/ods_cost_budget_data_d.sql index 851e49c..be57104 100644 --- a/dw/ods/ods_cost_budget_data_d.sql +++ b/dw/ods/ods_cost_budget_data_d.sql @@ -1,10 +1,8 @@ - - -- RENAME TABLE ods_cost_budgetdata_d TO ods_cost_budget_data_d; CREATE TABLE IF NOT EXISTS dw.ods_cost_budget_data_d( - dimaccountcode VARCHAR(255) COMMENT '预算科目编码' + dimaccountcode VARCHAR(255) COMMENT '预算科目编码' ,dimaccountname VARCHAR(255) COMMENT '预算科目名称' ,dimsubjectcode VARCHAR(255) COMMENT '组织机构编码' ,dimsubjectname VARCHAR(255) COMMENT '组织机构名称' diff --git a/finereport/detail/住服比异常项目.sql b/finereport/detail/住服比异常项目.sql new file mode 100644 index 0000000..69d605f --- /dev/null +++ b/finereport/detail/住服比异常项目.sql @@ -0,0 +1,25 @@ +-- **************************************** +-- 创建人员: 杨坤安 +-- 创建日期: 2024-07-22 +-- 功 能: 帆软明细报表-住服比异常项目 +-- 目 录: xianzuan>2_运营>住服比异常项目.fvs +-- **************************************** + +-- 【数据集: report_住服比】 + + +select + ${if(len(p_area) == 0,"organ_name","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 -- 入住率 +from dws_operation_room_park_info_d +where 1=1 +${if(len(p_area) == 0,"","and organ_code = '" + p_area+ "'")} +group by +${if(len(p_area) == 0,"organ_name","comm_name")} -- 片区/项目 \ No newline at end of file diff --git a/finereport/detail/计划到期明细.sql b/finereport/detail/计划到期明细.sql new file mode 100644 index 0000000..68c23c3 --- /dev/null +++ b/finereport/detail/计划到期明细.sql @@ -0,0 +1,134 @@ +-- **************************************** +-- 创建人员: 杨坤安 +-- 创建日期: 2024-07-18 +-- 功 能: 帆软明细报表-计划到期明细 +-- 目 录: xianzuan>2_运营>计划到期明细.fvs +-- **************************************** + +-- 【数据集: 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 -- 计划结束时间 + ,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 -- 执行人 + ,left(a.end_ym,7) as end_ym -- 计划结束年月 +from + ( + SELECT + 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 -- 执行人 责任人 口径可能不一致 + ,a.plan_status -- 计划状态 + ,a.input_date -- 录入时间 + ,a.end_date -- 计划结束时间 + ,a.plan_name -- 计划名称 + ,concat(left(trim(end_date),5),lpad(substring_index(substring_index(trim(end_date),'-',2),'-',-1),2,0),right(trim(end_date),3)) as end_ym + ,a.finish_date -- 完成时间 + ,TO_DAYS(a.end_date) - TO_DAYS(curdate()) AS day_diff + ,a.eval_criteria -- 评价标准 + FROM dw.dwd_operations_plan_info_d a, + JSON_TABLE ( + cast( CONCAT( '["', REPLACE ( executor, ',', '","' ), '"]' ) AS json ), + "$[*]" COLUMNS ( executor INT PATH "$" ) + ) AS jt + WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 + AND TO_DAYS(a.end_date) - TO_DAYS(curdate()) >= 1 + )a + left join + ( + select + id + ,subcompanyid1 -- 公司id + ,lastname -- 执行人 + from dw.ods_oa_hrmresource_d + + )b + on a.executor = b.id + inner join + ( + select + id + ,subcompanyname -- 公司名称 + ,supsubcomid -- 父公司id + from dw.ods_oa_hrmsubcompany_d + where 1 = 1 + ${if(len(p_area) == 0,"","and supsubcomid = '" + p_area + "'")} + )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 + ${if(len(p_startdate) == 0,"","and left(a.end_ym,7) = '" + p_startdate + "'")} + + + + +-- 【筛选框数据集: dic_oa片区】 + +select + distinct d.oa_organ_code, d.oa_organ_name +from + ( + SELECT + 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 -- 执行人 责任人 口径可能不一致 + ,a.plan_status -- 计划状态 + ,a.input_date -- 录入时间 + ,a.end_date -- 计划结束时间 + ,a.plan_name -- 计划名称 + ,concat(left(trim(end_date),5),lpad(substring_index(substring_index(trim(end_date),'-',2),'-',-1),2,0),right(trim(end_date),3)) as end_ym + ,a.finish_date -- 完成时间 + ,TO_DAYS(a.end_date) - TO_DAYS(curdate()) AS day_diff + FROM dw.dwd_operations_plan_info_d a, + JSON_TABLE ( + cast( CONCAT( '["', REPLACE ( executor, ',', '","' ), '"]' ) AS json ), + "$[*]" COLUMNS ( executor INT PATH "$" ) + ) AS jt + WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 + AND TO_DAYS(a.end_date) - TO_DAYS(curdate()) >= 1 + )a + left join + ( + select + id + ,subcompanyid1 -- 公司id + ,lastname -- 执行人 + from dw.ods_oa_hrmresource_d + )b + on a.executor = b.id + inner join + ( + select + id + ,subcompanyname -- 公司名称 + ,supsubcomid -- 父公司id + from dw.ods_oa_hrmsubcompany_d + )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 +${if(len(p_startdate) == 0,"","and left(a.end_ym,7) = '" + p_startdate + "'")} +UNION ALL +SELECT + '13' AS oa_organ_code + ,'领悦集团总部' AS oa_organ_name +FROM dual diff --git a/finereport/detail/车位空置率明细.sql b/finereport/detail/车位空置率明细.sql new file mode 100644 index 0000000..111c253 --- /dev/null +++ b/finereport/detail/车位空置率明细.sql @@ -0,0 +1,23 @@ +-- **************************************** +-- 创建人员: 杨坤安 +-- 创建日期: 2024-07-17 +-- 功 能: 帆软明细报表-车位空置率明细 +-- 目 录: xianzuan>2_运营>车位空置率明细.fvs +-- **************************************** + + + +-- 【数据集: report_车位】 + +select * from dws_operation_room_park_info_d +where 1=1 +${if(len(p_area) == 0,"","and organ_code = '" + p_area + "'")} + + +-- 【筛选框数据集: 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/detail/项目明细弹窗.sql new file mode 100644 index 0000000..8ef92d9 --- /dev/null +++ b/finereport/detail/项目明细弹窗.sql @@ -0,0 +1,109 @@ +-- **************************************** +-- 创建人员: 杨坤安 +-- 创建日期: 2024-07-22 +-- 功 能: 帆软明细报表-项目明细弹窗 +-- 目 录: xianzuan>2_运营>项目明细弹窗.fvs +-- **************************************** + +-- 【数据集: report_project】 + +-- 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 -- 管理性质名称 【项目归属】 + ,A.ContractArea / 10000 AS ContractArea -- 合同面积 【建筑面积】 + ,A.TakeOverArea / 10000 AS TakeOverArea -- 接管面积 【合约面积】 + ,A.ManageContractArea / 10000 AS ManageContractArea -- 管理口径合同面积 【在管面积】 + -- ${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 + ,B.organ_name AS organ_name -- erp片区名称 + -- ,B.comm_id AS -- erp项目id + ,B.comm_name AS comm_name -- erp项目名称 +FROM + ( + select + CommId -- 项目id 可关联maping表 + ,ManageKind -- 管理性质 + ,ManageKindName -- 管理性质名称 + ,ContractArea -- 合同面积 合约面积 + ,ManageContractArea-- 管理口径合同面积 在管面积 + ,StateName -- 业态 项目业态 + ,TakeOverArea -- 接管面积 + ,Province -- 省 + ,City -- 市 + ,County -- 区 + from dw.dim_project_base_info_d -- 项目维度表 + )A + JOIN + ( + SELECT + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,comm_id -- erp项目id + ,comm_name -- erp项目名称 + FROM dw.dim_organ_mapping -- 片区项目映射维度表 + GROUP BY + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,comm_id -- erp项目id + ,comm_name -- erp项目名称 + )B + ON A.CommId = B.comm_id + JOIN + ( + SELECT + CommID + ,count(1) as room_num -- 项目对应房间数量 + FROM dw.dim_room_d + GROUP BY + CommID + )C + ON A.CommId = C.CommID +where 1 = 1 + ${if(len(p_area) == 0,"","and organ_code = '" + p_area + "'")} + + +-- )t +-- group by +-- ${if(len(p_area) == 0,"t.organ_name","t.comm_name")} -- 片区/项目 +-- -- ,t.organ_name -- erp片区名称 +-- -- ,t.comm_name -- erp项目名称 +-- ,${if(len(p_area) == 0,"'-'","t.ManageKindName")} -- 管理性质名称 +-- ,${if(len(p_area) == 0,"'-'","t.StateName")} -- 业态 【项目业态】 +; + + + + + + +-- 【筛选框数据集: dic_erp片区】 + + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dim_organ_mapping +; + +