diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml
index 1c139a9..98b3673 100644
--- a/.idea/sqldialects.xml
+++ b/.idea/sqldialects.xml
@@ -10,6 +10,7 @@
+
@@ -29,6 +30,7 @@
+
diff --git a/dw/dim/dim_project_base_info_d.sql b/dw/dim/dim_project_base_info_d.sql
index 1395e99..0163dc5 100644
--- a/dw/dim/dim_project_base_info_d.sql
+++ b/dw/dim/dim_project_base_info_d.sql
@@ -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
\ No newline at end of file
+ ) b
+ on a.CommId = b.CommId
\ 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 069bd28..bd2c7cc 100644
--- a/dw/dwd/dwd_cost_detail_data_d.sql
+++ b/dw/dwd/dwd_cost_detail_data_d.sql
@@ -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
diff --git a/dw/dws/dws_operation_subcompany_plan_level_d.sql b/dw/dws/dws_operation_subcompany_plan_level_d.sql
index 708aaaa..467de22 100644
--- a/dw/dws/dws_operation_subcompany_plan_level_d.sql
+++ b/dw/dws/dws_operation_subcompany_plan_level_d.sql
@@ -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
\ No newline at end of file
+ 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
\ No newline at end of file
diff --git a/finereport/kanban/mobile/工程_mobile.sql b/finereport/kanban/mobile/工程_mobile.sql
index 32c706f..646a484 100644
--- a/finereport/kanban/mobile/工程_mobile.sql
+++ b/finereport/kanban/mobile/工程_mobile.sql
@@ -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
-;
\ No newline at end of file
+ORDER BY A.list_ym,A.MeterType
\ No newline at end of file
diff --git a/finereport/xiazuan/2_operation/计划到期明细.sql b/finereport/xiazuan/2_operation/计划到期明细.sql
index 1e9c3fa..1619f33 100644
--- a/finereport/xiazuan/2_operation/计划到期明细.sql
+++ b/finereport/xiazuan/2_operation/计划到期明细.sql
@@ -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片区】
diff --git a/finereport/xiazuan/4_engine/2_水电能耗明细.sql b/finereport/xiazuan/4_engine/2_水电能耗明细.sql
index 2cd34d4..d90e46a 100644
--- a/finereport/xiazuan/4_engine/2_水电能耗明细.sql
+++ b/finereport/xiazuan/4_engine/2_水电能耗明细.sql
@@ -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
\ No newline at end of file
diff --git a/finereport/预警/片区预警数据.sql b/finereport/预警/片区预警数据.sql
index 1bd2ad6..81078fc 100644
--- a/finereport/预警/片区预警数据.sql
+++ b/finereport/预警/片区预警数据.sql
@@ -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)