更新版本

This commit is contained in:
yangkunan 2024-10-17 11:19:07 +08:00
parent b0a2b6b3ec
commit da78536473
8 changed files with 315 additions and 143 deletions

View File

@ -10,6 +10,7 @@
<file url="file://$PROJECT_DIR$/dw/dim/dim_project_base_info_d.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/dw/dim/dim_room_d.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/dw/dwd/dwd_business_contract_info_d.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/dw/dwd/dwd_cost_detail_data_d.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/dw/dwd/dwd_engine_equipment_inspection_task_d.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/dw/dwd/dwd_engine_equipment_status_d.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/dw/dwd/dwd_engine_stat_exception_rate_d.sql" dialect="MySQL" />
@ -29,6 +30,7 @@
<file url="file://$PROJECT_DIR$/dw/dws/dws_operation_subcompany_plan_level_d.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/dw/ods/ods_cost_budget_data_d.sql" dialect="Oracle" />
<file url="file://$PROJECT_DIR$/finereport/kanban/mobile/创新生态_mobile.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/kanban/mobile/工程_mobile.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/kanban/mobile/物业_mobile.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/kanban/pc/创新生态.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/kanban/pc/商业.sql" dialect="MySQL" />

View File

@ -4,6 +4,8 @@
-- 修改内容: 一个项目接管面积会有多个,先累加再关联
-- 修改日期: 2024-09-24
-- 修改内容: 项目对应业态取值规则变更
-- 修改日期: 2024-10-09
-- 修改内容: 新增合同到期时间
-- *****************************
select
b.CommId
@ -60,6 +62,7 @@ select
, a.CommitteeTermStartDate
, a.CommitteeTermEndDate
, b.DictionaryName AS StateNameNew
, a.ContractEndTime AS ContractEndTime
from (
select
c.CommId
@ -95,51 +98,52 @@ from (
, c.CityLevel
, c.CommitteeTermStartDate
, c.CommitteeTermEndDate
, a.ContractEndTime -- 合同结束时间
, sum(TakeOverArea) TakeOverArea
, sum(ContractArea) ContractArea
, sum(ManageContractArea) ManageContractArea
from
(
select
*
from ods_erp_tb_hspr_projecttakeoverinformation_d
where IsDelete = 0
) a
left join
(
select
ParentId
,SUM(TakeOverArea) AS TakeOverArea
from ods_erp_tb_hspr_projecttakeoverdetail_d
WHERE IsDelete = 0
group by
ParentId
) b
on a.id = b.ParentId
right join (select * from ods_erp_tb_hspr_projectbasicinfomation_d where IsDelete = 0) c
on a.ParentId = c.id
group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33
(
select
*
from ods_erp_tb_hspr_projecttakeoverinformation_d
where IsDelete = 0
) a
left join
(
select
ParentId
,SUM(TakeOverArea) AS TakeOverArea
from ods_erp_tb_hspr_projecttakeoverdetail_d
WHERE IsDelete = 0
group by
ParentId
) b
on a.id = b.ParentId
right join (select * from ods_erp_tb_hspr_projectbasicinfomation_d where IsDelete = 0) c
on a.ParentId = c.id
group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34
) a
right join
(
SELECT
b1.*
,b2.DictionaryName
FROM
(
select
*
from ods_erp_tb_hspr_community_d
where IsDelete = 0
)b1
LEFT JOIN
(-- add 2024-09-24 项目业态新规则取数
select
DictionaryCode -- 项目业态编码
,DictionaryName -- 项目业态名称
from ods_erp_tb_dictionary_projectformat_d
)b2
ON B1.CommKind = b2.DictionaryCode
right join
(
SELECT
b1.*
,b2.DictionaryName
FROM
(
select
*
from ods_erp_tb_hspr_community_d
where IsDelete = 0
)b1
LEFT JOIN
(-- add 2024-09-24 项目业态新规则取数
select
DictionaryCode -- 项目业态编码
,DictionaryName -- 项目业态名称
from ods_erp_tb_dictionary_projectformat_d
)b2
ON B1.CommKind = b2.DictionaryCode
) b
on a.CommId = b.CommId
) b
on a.CommId = b.CommId

View File

@ -47,7 +47,7 @@ CREATE TABLE IF NOT EXISTS dw.dwd_cost_detail_data_d (
-- ----------------------------------------------------------------------------------------------
SELECT * FROM dw.dwd_cost_detail_data_d;
truncate dw.dwd_cost_detail_data_d;
INSERT into dw.dwd_cost_detail_data_d
SELECT

View File

@ -4,18 +4,23 @@ select
, c.subcompanyname
, c.supsubcomid
, a.plan_level
, count(*) plan_num
, count(plan_name) plan_adjust_num
, sum(case when plan_status = 2 then 1 else 0 end) plan_cancel_num
, sum(case when plan_status = 7 then 1 else 0 end) plan_exempt_assess_num
, sum(case when plan_status = 4 then 1 else 0 end) plan_incomplete_num
, sum(case when left(start_date,7) = left(input_date,7) then 1 else 0 end) plan_thism_num
, sum(case when plan_status = 0 then 1 else 0 end) plan_in_progress_num
, sum(case when plan_status = 1 then 1 else 0 end) plan_complete_num
,a.plan_name
,a.id
,a.responsible_person1
,organ_code, organ_name, comm_id, comm_name
, oa_organ_code, oa_organ_name, oa_comm_id, oa_comm_name
-- , count(*) plan_num
-- , count(plan_name) plan_adjust_num
-- , sum(case when plan_status = 2 then 1 else 0 end) plan_cancel_num
-- , sum(case when plan_status = 7 then 1 else 0 end) plan_exempt_assess_num
-- , sum(case when plan_status = 4 then 1 else 0 end) plan_incomplete_num
-- , sum(case when left(start_date,7) = left(input_date,7) then 1 else 0 end) plan_thism_num
-- , sum(case when plan_status = 0 then 1 else 0 end) plan_in_progress_num
-- , sum(case when plan_status = 1 then 1 else 0 end) plan_complete_num
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)) start_date,
a.plan_level,
a.plan_level,plan_name,
jt.responsible_person1 ,
a.id,
a.plan_status,
@ -26,6 +31,8 @@ from (
cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ),
"$[*]" COLUMNS ( responsible_person1 INT PATH "$" )
) AS jt
where a.id in ('17015','17016','17024','17056','17075','17084','29372','29373','29374','29375','29376','29377','29433','29434','29435','29436','29437','29438','29439','29440','29503','29504','29505','29506','29507','29508','29509','29510','29561','29562','29564','29565','29566','29567','29568','29569','29591','29629','29630','40703','42177','42180','42767','42779','42837')
) a
left join ods_oa_hrmresource_d b
on a.responsible_person1 = b.id
@ -33,10 +40,16 @@ from (
on b.subcompanyid1 = c.id
left join (select distinct plan_name from dwd_operations_plan_adjust_info_d) d
on a.id = d.plan_name
WHERE left(a.end_date,7) = '2024-09'
group by
left(a.end_date,7)
, b.subcompanyid1
, c.subcompanyname
, c.supsubcomid
, a.plan_level
left join (select distinct organ_code, organ_name, comm_id, comm_name
, oa_organ_code, oa_organ_name, oa_comm_id, oa_comm_name from dim_organ_mapping where comm_id is not null) b1
on b.subcompanyid1 = b1.oa_comm_id
WHERE left(a.end_date,7) = '2024-10'
-- AND b.subcompanyid1 in(select distinct oa_comm_id from dim_organ_mapping where comm_id is not null and organ_code = '0108')
-- group by
-- left(a.end_date,7)
-- , b.subcompanyid1
-- , c.subcompanyname
-- , c.supsubcomid
-- , a.plan_level

View File

@ -1,5 +1,3 @@
-- 【单位面积能耗同环比】
select
A.organ_code AS organ_code
, A.organ_name AS organ_name
@ -9,7 +7,12 @@ select
, A.list_ym AS list_ym
, A.Dosage AS Dosage
, A.Amount AS Amount
,IF(B.ContractArea = 0,0,A.Dosage / B.ContractArea) AS DOSAGE_PER_SQUARE_METER
, B.StateNameNew AS StateNameNew
,CASE WHEN StateNameNew = '写字楼' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_SHUI
,CASE WHEN StateNameNew = '写字楼' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_DIAN
,CASE WHEN StateNameNew = '商住' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_SHUI
,CASE WHEN StateNameNew = '商住' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_DIAN
,IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) AS DOSAGE_PER_SQUARE_METER
from
(
SELECT
@ -22,23 +25,26 @@ from
, Dosage
, Amount
FROM dws_engine_meter_dosage_m
${IF(p_type = "环比","/*","")}
${IF(p_type = "环比","/*","")}
where 1=1
AND list_ym <> DATE_FORMAT(CURDATE(), '%Y%m')
AND list_ym >= '${FORMAT(MONTHDELTA(CONCATENATE(p_ym,"-01"),-60),"yyyyMM")}'
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")}
-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")}
${IF(LEN(p_shop)!=0," and comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")}
${IF(LEN(p_ym)>0," AND right(list_ym,2) ='" +right(p_ym,2) + "'","")}
and MeterType in ('水表','电表')
order by list_ym asc
${IF(p_type = "环比","*/","")}
${IF(p_type = "环比","","/*")}
${IF(p_type = "环比","","/*")}
where left(list_ym,4) = ${left(p_ym,4)}
AND list_ym <> DATE_FORMAT(CURDATE(), '%Y%m')
and MeterType in ('水表','电表')
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")}
-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")}
${IF(LEN(p_shop)!=0," and comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")}
ORDER BY list_ym ASC
${IF(p_type = "环比","","*/")}
)A
@ -46,11 +52,16 @@ from
(
select
CommId -- 项目id
,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew
ELSE '商住'
END AS StateNameNew
,SUM(FloorArea + UndergroundArea) as totalarea
,SUM(ContractArea) AS ContractArea-- 合同面积(建筑面积)
from dim_project_base_info_d
GROUP BY
CommId
CommId,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew
ELSE '商住'
END
)B
ON A.comm_id = B.CommId
ORDER BY A.list_ym,A.MeterType
;

View File

@ -18,7 +18,8 @@ with one_to_many AS(
WHERE a.username = '${fine_username}'
)
select
${if(len(p_area) == 0,"c.organ_name","c.comm_name")} as p_area
-- ${if(len(p_area) == 0,"c.organ_name","c.comm_name")} as p_area
${if(len(p_area) == 0,"COALESCE(c.oa_organ_name,e.subcompanyname)","COALESCE(c.oa_comm_name,e.subcompanyname)")} 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
@ -31,6 +32,7 @@ select
,a.plan_name as plan_name -- 计划名称
,a.eval_criteria as plan_desc -- 计划内容
,a.plan_level as plan_level -- 计划等级
,a.plan_level_name as plan_level_name -- 计划等级名称
,left(a.start_date,7) as ym -- 计划开始年月
,a.start_dt as start_dt -- 计划开始时
,a.end_date as end_date -- 计划结束时间
@ -57,12 +59,13 @@ from
,TO_DAYS(a.end_date) - TO_DAYS(curdate()) AS day_diff
,a.eval_criteria -- 评价标准
,a.executor -- 执行人
,case when a.plan_level = 4 then '控股集团级计划' when a.plan_level = 0 then '一级计划' when a.plan_level = 1 then '二级计划' when a.plan_level = 3 then '三级计划' end plan_level_name
FROM dw.dwd_operations_plan_info_d a,
JSON_TABLE (
cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ),
"$[*]" COLUMNS ( responsible_person1 INT PATH "$" )
) AS jt
-- WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3
-- 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')
@ -93,7 +96,7 @@ from
-- where comm_id is not null
)c
on b.subcompanyid1 = c.oa_comm_id
left join
left join
(
select
id
@ -103,15 +106,21 @@ from
)d
on a.executor = d.id
LEFT JOIN
(
SELECT
*
FROM dw.ods_oa_hrmsubcompany_d -- 分部信息表
-- WHERE id = '288'
)e
ON b.subcompanyid1 = e.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+"')","")}
${IF(LEN(p_area)!=0," and coalesce(c.oa_organ_code,e.id) IN ('"+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 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
THEN COALESCE(c.oa_organ_name,e.subcompanyname) IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}')
ELSE ${if(left(fine_role,2)=="项目","COALESCE(c.oa_organ_name,e.subcompanyname) = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END
-- 【筛选框数据集: dic_oa片区】

View File

@ -1,82 +1,214 @@
-- 【dic_erp片区】
with one_to_many_organ AS(
SELECT
a.username AS username -- 用户名
,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_organ, ',',b.help_topic_id + 1),',',-1) AS mang_organ -- 管理片区
FROM ods_one_to_many_perm a
JOIN mysql.help_topic b
on b.help_topic_id < (LENGTH(a.mang_organ) - length(replace(a.mang_organ,',','')) + 1)
WHERE a.username = '${fine_username}'
)
SELECT DISTINCT
organ_code AS id,
organ_name AS
FROM dw.dws_engine_meter_dosage_m
where 1=1
${if(GETUSERDEPARTMENTS(2)="领悦集团总部","","and organ_name = '"+GETUSERDEPARTMENTS(2)+"'")}
-- ${if(GETUSERDEPARTMENTS(2)="领悦集团总部","","and organ_name = '"+GETUSERDEPARTMENTS(2)+"'")}
AND CASE WHEN (SELECT mang_organ FROM ods_one_to_many_perm WHERE username = '${fine_username}') IS NOT NULL
THEN organ_name IN (SELECT mang_organ FROM one_to_many_organ WHERE username = '${fine_username}')
ELSE ${if(GETUSERDEPARTMENTS(2)!="领悦集团总部","organ_name = '"+GETUSERDEPARTMENTS(2)+"'","1=1")} END
-- 【能耗环比】
-- 折线图
select
list_ym
, MeterType
,SUM(Dosage) /10000 Dosage -- 能耗
,SUM(Amount) AS Amount-- 能耗金额
from dw.dws_engine_meter_dosage_m
where 1=1
and MeterType in ('水表','电表')
AND list_ym < date_format(current_date(),'%Y%m')
and left(list_ym,4) = ${left(p_ym,4)}
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")}
-- ${IF(LEN(P_MeterType)>0," AND MeterType IN ('"+JOINARRAY(P_MeterType,"','")+"')", "")}
GROUP by
list_ym
, MeterType
ORDER BY
list_ym
-- 明细表
-- 【能耗同比】
-- 【单位面积能耗_环比】
with one_to_many AS(
SELECT
MeterType
, list_ym
,SUM(Dosage) /10000 Dosage
,SUM(Amount) AS Amount
FROM dw.dws_engine_meter_dosage_m
where 1=1
AND list_ym <> DATE_FORMAT(CURDATE(), '%Y%m')
AND list_ym >= '${FORMAT(MONTHDELTA(CONCATENATE(p_ym,"-01"),-60),"yyyyMM")}'
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
${IF(LEN(p_ym)>0," AND right(list_ym,2) ='" +right(p_ym,2) + "'","")}
${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")}
and MeterType in ('水表','电表')
group by
MeterType
,list_ym
order by
list_ym
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.organ_code AS organ_code
, A.organ_name AS organ_name
, A.comm_id AS comm_id
, A.comm_name AS comm_name
, A.MeterType AS MeterType
, A.list_ym AS list_ym
, A.Dosage AS Dosage
, A.Amount AS Amount
, B.StateNameNew AS StateNameNew
,CASE WHEN StateNameNew = '写字楼' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_SHUI
,CASE WHEN StateNameNew = '写字楼' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_DIAN
,CASE WHEN StateNameNew = '商住' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_SHUI
,CASE WHEN StateNameNew = '商住' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_DIAN
,IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) AS DOSAGE_PER_SQUARE_METER
from
(
SELECT
organ_code
, organ_name
, comm_id
, comm_name
, MeterType
, list_ym
, Dosage
, Amount
FROM dws_engine_meter_dosage_m
WHERE 1=1
AND MeterType IN ('水表','电表')
AND list_ym < date_format(CURRENT_DATE(),'%Y%m')
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
AND LEFT (list_ym,4) = ${left(p_ym,4)}
-- ${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
)A
LEFT JOIN
(
select
CommId -- 项目id
,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew
ELSE '商住'
END AS StateNameNew
,SUM(FloorArea + UndergroundArea) as totalarea
,SUM(ContractArea) AS ContractArea-- 合同面积(建筑面积)
from dim_project_base_info_d
GROUP BY
CommId,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew
ELSE '商住'
END
)B
ON A.comm_id = B.CommId
ORDER BY A.list_ym,A.MeterType
-- 【单位面积能耗_同比】
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.organ_code AS organ_code
, A.organ_name AS organ_name
, A.comm_id AS comm_id
, A.comm_name AS comm_name
, A.MeterType AS MeterType
, A.list_ym AS list_ym
, A.Dosage AS Dosage
, A.Amount AS Amount
, B.StateNameNew AS StateNameNew
,CASE WHEN StateNameNew = '写字楼' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_SHUI
,CASE WHEN StateNameNew = '写字楼' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_DIAN
,CASE WHEN StateNameNew = '商住' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_SHUI
,CASE WHEN StateNameNew = '商住' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_DIAN
,IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea))AS DOSAGE_PER_SQUARE_METER
from
(
SELECT
organ_code
, organ_name
, comm_id
, comm_name
, MeterType
, list_ym
, Dosage
, Amount
FROM dws_engine_meter_dosage_m
WHERE 1=1
AND list_ym <> DATE_FORMAT(CURDATE(), '%Y%m')
AND list_ym >= '${FORMAT(MONTHDELTA(CONCATENATE(p_ym,"-01"),-60),"yyyyMM")}'
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
${IF(LEN(p_ym)>0," AND right(list_ym,2) ='" +right(p_ym,2) + "'","")}
-- ${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
and MeterType in ('水表','电表')
)A
LEFT JOIN
(
select
CommId -- 项目id
,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew
ELSE '商住'
END AS StateNameNew
,SUM(FloorArea + UndergroundArea) as totalarea
,SUM(ContractArea) AS ContractArea-- 合同面积(建筑面积)
from dim_project_base_info_d
GROUP BY
CommId,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew
ELSE '商住'
END
)B
ON A.comm_id = B.CommId
order by A.list_ym,A.MeterType asc
-- 【明细】
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,"organ_name","comm_name")} as p_area -- 片区/项目
, MeterType
,SUM(Dosage) Dosage -- 能耗
,SUM(Amount) AS Amount-- 能耗金额
from dw.dws_engine_meter_dosage_m
where 1=1
and MeterType in ('水表','电表')
and list_ym = ${replace(p_ym,'-','')}
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")}
${IF(LEN(P_MeterType)>0," AND MeterType IN ('"+JOINARRAY(P_MeterType,"','")+"')", "")}
${if(len(p_area) == 0,"A.organ_name","A.comm_name")} as p_area -- 片区/项目
, A.MeterType AS MeterType
, SUM(A.Dosage) AS Dosage -- 能耗
, sum(A.Amount) AS Amount -- 金额
-- , B.StateNameNew AS StateNameNew -- 业态
,IF(sum(B.ContractArea) = 0,0,(sum(A.Dosage) / sum(B.totalarea)))AS DOSAGE_PER_SQUARE_METER -- 单位面积能耗
from
(
SELECT
organ_code
, organ_name
, comm_id
, comm_name
, MeterType
, list_ym
, Dosage
, Amount
FROM dws_engine_meter_dosage_m
WHERE 1=1
and MeterType in ('水表','电表')
and list_ym = ${replace(p_ym,'-','')}
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
${IF(LEN(P_MeterType)>0," AND MeterType IN ('"+JOINARRAY(P_MeterType,"','")+"')", "")}
)A
LEFT JOIN
(
select
CommId -- 项目id
,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew
ELSE '商住'
END AS StateNameNew
,SUM(FloorArea + UndergroundArea) as totalarea
,SUM(ContractArea) AS ContractArea-- 合同面积(建筑面积)
from dim_project_base_info_d
GROUP BY
CommId,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew
ELSE '商住'
END
)B
ON A.comm_id = B.CommId
GROUP BY
${if(len(p_area) == 0,"organ_name","comm_name")}
, MeterType
${if(len(p_area) == 0,"A.organ_name","A.comm_name")}
, A.MeterType

View File

@ -132,6 +132,7 @@ FROM
,organ_name
,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)) / sum(ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)) cu_collection_rate
,sum((- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) pr_collection_rate
,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)- ifnull(cu_offset_pr_amt,0) - ifnull(cu_paid_pr_amt,0)) / sum(ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0) + ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) total_collection_rate
from dwd_finance_fees_serial_d
where ParentCostCode = '0001'
and ym = left(current_date,7)