项目计费面积逻辑优化,从ODS取数,以房间表房屋状态为准
This commit is contained in:
parent
3909b09182
commit
7b6e7beb5f
@ -31,7 +31,7 @@ SELECT
|
||||
,A.UndergroundArea AS undergroundarea -- 地下面积
|
||||
,A.ContractArea AS contractarea -- 合约面积
|
||||
,A.TakeOverArea AS takeoverarea -- 在管面积
|
||||
,E.CalcArea AS CalcArea -- 收费面积
|
||||
,C.CalcArea AS CalcArea -- 收费面积
|
||||
,A.GreenArea AS greenarea -- 绿化面积
|
||||
,C.room_num AS room_num -- 总户数
|
||||
,C.delivered_num AS delivered_num -- 已交付户数
|
||||
@ -123,20 +123,44 @@ ON A.CommId = B.comm_id
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT
|
||||
CommID
|
||||
,SUM(CASE WHEN roomstate <> 0 THEN 1 ELSE 0 END) AS room_num -- 项目对应房间数量
|
||||
,SUM(CASE WHEN roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN buildarea ELSE 0 END ) AS sold_area -- 已售面积
|
||||
,SUM(CASE WHEN roomstate = '2' THEN buildarea ELSE 0 END ) AS unsold_area -- 未售面积
|
||||
,SUM(CASE WHEN roomstate NOT IN('0','2') THEN 1 ELSE 0 END ) AS delivered_num -- 已交付户数
|
||||
,SUM(CASE WHEN roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS rece_num -- 已接房数
|
||||
,SUM(CASE WHEN roomstate = '4' THEN 1 ELSE 0 END ) AS fit_num -- 正在装修户数
|
||||
,SUM(CASE WHEN roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS done_fit_num -- 已完成装修户数
|
||||
,SUM(CASE WHEN roomstate = '5' THEN 1 ELSE 0 END ) AS done_fit_no -- 已完成装修未入住
|
||||
,SUM(CASE WHEN roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS done_fit_yes -- 已完成装修已入住
|
||||
FROM dw.dim_room_d a
|
||||
-- 排除掉房间表里房屋状态是未删除而在费用表里是删除的房子
|
||||
WHERE exists(SELECT 1 FROM dim_bind_cost_stan_detail_d B WHERE a.CommID = b.CommID AND A.RoomID = b.RoomID)
|
||||
GROUP BY CommID
|
||||
a.CommID AS CommID
|
||||
,SUM(CASE WHEN a.roomstate <> 0 THEN 1 ELSE 0 END) AS room_num -- 项目对应房间数量
|
||||
,SUM(CASE WHEN a.roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN a.buildarea ELSE 0 END ) AS sold_area -- 已售面积
|
||||
,SUM(CASE WHEN a.roomstate = '2' THEN a.buildarea ELSE 0 END ) AS unsold_area -- 未售面积
|
||||
,SUM(CASE WHEN a.roomstate NOT IN('0','2') THEN 1 ELSE 0 END ) AS delivered_num -- 已交付户数
|
||||
,SUM(CASE WHEN a.roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS rece_num -- 已接房数
|
||||
,SUM(CASE WHEN a.roomstate = '4' THEN 1 ELSE 0 END ) AS fit_num -- 正在装修户数
|
||||
,SUM(CASE WHEN a.roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS done_fit_num -- 已完成装修户数
|
||||
,SUM(CASE WHEN a.roomstate = '5' THEN 1 ELSE 0 END ) AS done_fit_no -- 已完成装修未入住
|
||||
,SUM(CASE WHEN a.roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS done_fit_yes -- 已完成装修已入住
|
||||
,SUM(b.CalcArea) AS CalcArea
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
*
|
||||
FROM dw.dim_room_d
|
||||
)a
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT
|
||||
b1.CommId AS CommId
|
||||
,b1.RoomID AS RoomID
|
||||
,SUM(CalcArea) AS CalcArea
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
CommId
|
||||
, CalcArea
|
||||
, RoomID
|
||||
FROM ods_erp_tb_hspr_coststansetting_d
|
||||
WHERE RoomID <> '0'
|
||||
GROUP BY CommId, CalcArea, RoomID
|
||||
)b1
|
||||
GROUP BY b1.CommId,b1.RoomID
|
||||
)b
|
||||
ON a.CommID = b.CommId
|
||||
AND a.RoomID = b.RoomID
|
||||
GROUP BY CommID
|
||||
)C
|
||||
ON A.CommId = C.CommID
|
||||
LEFT JOIN
|
||||
@ -152,38 +176,6 @@ LEFT JOIN
|
||||
)D
|
||||
ON A.COMMID = D.COMMID
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT
|
||||
A.CommId AS CommId
|
||||
,SUM(A.CalcArea ) AS CalcArea
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
CommId
|
||||
,CalcArea
|
||||
,RoomID
|
||||
FROM dim_bind_cost_stan_detail_d
|
||||
WHERE RoomID <> 0
|
||||
GROUP BY
|
||||
CommId
|
||||
,CalcArea
|
||||
,RoomID
|
||||
)A
|
||||
JOIN
|
||||
(-- 排除掉费用表里房屋状态是未删除而在房间表里是删除的房子
|
||||
SELECT
|
||||
CommID
|
||||
,RoomID
|
||||
FROM dw.dim_room_d
|
||||
GROUP BY CommID,RoomID
|
||||
)B
|
||||
ON A.RoomID = B.RoomID
|
||||
AND a.CommID = B.CommID
|
||||
GROUP BY
|
||||
A.CommId
|
||||
)E
|
||||
ON A.COMMID = E.COMMID
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT
|
||||
A.CommId
|
||||
@ -429,4 +421,289 @@ AND CASE WHEN'${fine_username}' = 'WangXiaoLi0726'
|
||||
THEN comm_name IN('【眉山】领地花屿二期','【眉山】领地凯旋国际公馆二期')
|
||||
WHEN'${fine_username}' = 'WangJing'
|
||||
THEN comm_name IN('【乐山】澜山悦','【乐山】领地蘭台府')
|
||||
ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")}
|
||||
ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")}
|
||||
|
||||
|
||||
-- ======================================
|
||||
-- 数据集逻辑
|
||||
-- ======================================
|
||||
|
||||
|
||||
-- ****************************************
|
||||
-- 创建人员: 杨坤安
|
||||
-- 创建日期: 2024-07-22
|
||||
-- 功 能: 帆软明细报表-项目明细弹窗
|
||||
-- 目 录: xianzuan>2_运营>项目明细弹窗.fvs
|
||||
-- ****************************************
|
||||
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.ManageKindName , -- 管理性质名称 【项目归属】
|
||||
A.Province,-- 省
|
||||
A.City,-- 市
|
||||
A.Citylevel,-- 城市级别
|
||||
A.ManageStage,-- 项目状态
|
||||
A.TakeOverTime,-- 交付时间
|
||||
A.CommFrom,-- 项目来源
|
||||
A.DevSubject,-- 项目开发商名称
|
||||
A.CommAddress,-- 项目地址
|
||||
CASE
|
||||
WHEN ProjectFloorPlan IS NULL
|
||||
OR JSON_EXTRACT( JSON_EXTRACT( cast( A.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NULL THEN'否'
|
||||
WHEN JSON_EXTRACT( JSON_EXTRACT( cast( A.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NOT NULL THEN'是'
|
||||
END AS IS_UPLOAD,-- 是否有上传项目平面图 -- 项目平面图
|
||||
( A.FloorArea + A.UndergroundArea ) AS TotalArea,-- 建筑总面积
|
||||
A.FloorArea,-- 地上面积
|
||||
A.UndergroundArea,-- 地下面积
|
||||
A.GreenArea,-- 绿化面积
|
||||
A.ContractTerm,
|
||||
A.PropertyMgrEntrustType,
|
||||
CASE
|
||||
WHEN A.IsContractFiled = '1' THEN'是' ELSE '否'
|
||||
END AS 是否办理合同备案,
|
||||
A.ProjectDeliverySituation,
|
||||
D.UnsoldParkingCount,
|
||||
IF( A.PedEntrExitsCount = 0 OR PedEntrExitsCount IS NULL, '-', PedEntrExitsCount ) AS PedEntrExitsCount,
|
||||
IF( A.CarEntrExitsCount = 0 OR CarEntrExitsCount IS NULL, '-', CarEntrExitsCount ) AS CarEntrExitsCount,
|
||||
IF( A.MixedEntrExitsCount = 0 OR MixedEntrExitsCount IS NULL, '-', MixedEntrExitsCount ) AS MixedEntrExitsCount,
|
||||
IF( A.GuardedEntrExitsCount = 0 OR GuardedEntrExitsCount IS NULL, '-', GuardedEntrExitsCount ) AS GuardedEntrExitsCount,
|
||||
IF( A.MonitoringRoomCount = 0 OR MonitoringRoomCount IS NULL, '-', MonitoringRoomCount ) AS MonitoringRoomCount,
|
||||
|
||||
-- TotalEntrExitsCount = PedEntrExitsCount + CarEntrExitsCount +MixedEntrExitsCount
|
||||
IF( A.PedEntrExitsCount = 0 OR PedEntrExitsCount IS NULL, '-', PedEntrExitsCount )
|
||||
+ IF( A.CarEntrExitsCount = 0 OR CarEntrExitsCount IS NULL, '-', CarEntrExitsCount )
|
||||
+ IF( A.MixedEntrExitsCount = 0 OR MixedEntrExitsCount IS NULL, '-', MixedEntrExitsCount ) AS TotalEntrExitsCount,
|
||||
|
||||
A.IsMonRoomMergedToGate,
|
||||
A.ContractArea,-- 合同面积 【建筑面积】
|
||||
A.TakeOverArea,-- 接管面积 【合约面积】
|
||||
A.ManageContractArea ManageContractArea,-- 管理口径合同面积 【在管面积】
|
||||
A.StateName AS StateName,-- 业态 【项目业态】
|
||||
A.ContractName,-- 合同类型
|
||||
A.GetMethod,-- 项目获取渠道
|
||||
A.ContractPartyName,-- 合同对方名称
|
||||
CASE
|
||||
WHEN A.IsSetCommittee = '1' THEN'是' ELSE '否'
|
||||
END AS 是否成立委员会,-- 是否已成立业主委员会
|
||||
A.CommitteeTime,-- 业委会成立时间
|
||||
A.ChargeMode,
|
||||
CONCAT(DATE_FORMAT(A.CommitteeTermStartDate, '%Y-%m-%d' ) , ' 至 ',DATE_FORMAT(A.CommitteeTermEndDate, '%Y-%m-%d' )) AS 任职天数,-- 任职时间
|
||||
C.room_num AS room_num,-- 总户数
|
||||
B.organ_name AS organ_name,-- erp片区名称
|
||||
B.comm_name AS comm_name,-- erp项目名称
|
||||
C.`已售面积`,
|
||||
C.`未售面积`,
|
||||
D.`已售车位`,
|
||||
C.`已交付户数`,
|
||||
C.`已接房数`,
|
||||
C.`正在装修户数`,
|
||||
C.`已完成装修户数`,
|
||||
C.`已完成装修未入住`,
|
||||
C.`已完成装修已入住`,
|
||||
(C.`已完成装修已入住` / C.`已交付户数` ) AS 入住率,
|
||||
(C.`已完成装修户数` / C.`已交付户数` ) AS 装修率,
|
||||
C.收费面积,-- 收费面积
|
||||
A.签约时间,
|
||||
G.住宅高层,
|
||||
G.住宅多层,
|
||||
G.别墅,
|
||||
G.联排物业服务费,
|
||||
G.叠拼物业服务费,
|
||||
G.洋房物业费,
|
||||
G.公寓物业服务费,
|
||||
G.商铺物业服务费,
|
||||
G.写字楼物业服务费,
|
||||
G.幼儿园物业服务费,
|
||||
G.厂区物业服务费,
|
||||
G.酒店物业服务费,
|
||||
G.车位管理物业服务费,
|
||||
G.车位月租费用
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
T.*
|
||||
,max(T.GetTime) OVER(PARTITION BY T.CommId)AS 签约时间
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
*
|
||||
,row_number() OVER(PARTITION BY CommId ORDER BY GetTime DESC) AS RK
|
||||
FROM dw.dim_project_base_info_d -- 项目维度表
|
||||
)T
|
||||
WHERE T.RK = 1
|
||||
) A
|
||||
JOIN
|
||||
(
|
||||
SELECT
|
||||
organ_code, -- erp片区id
|
||||
organ_name, -- erp片区名称
|
||||
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
|
||||
|
||||
${IF(LEN(p_area)!=0," and organ_code 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}') 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, -- erp片区id
|
||||
organ_name, -- erp片区名称
|
||||
comm_id, -- erp项目id
|
||||
comm_name -- erp项目名称
|
||||
)B
|
||||
ON A.CommId = B.comm_id
|
||||
LEFT JOIN
|
||||
(
|
||||
|
||||
SELECT
|
||||
a.CommID
|
||||
,SUM(CASE WHEN a.roomstate <> 0 THEN 1 ELSE 0 END) AS room_num, -- 项目对应房间数量
|
||||
SUM( CASE WHEN a.roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN a.buildarea ELSE 0 END ) AS 已售面积,
|
||||
SUM( CASE WHEN a.roomstate = '2' THEN a.buildarea ELSE 0 END ) AS 未售面积,
|
||||
SUM( CASE WHEN a.roomstate NOT IN('0','2') THEN 1 ELSE 0 END ) AS 已交付户数,
|
||||
SUM( CASE WHEN a.roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已接房数,
|
||||
SUM( CASE WHEN a.roomstate = '4' THEN 1 ELSE 0 END ) AS 正在装修户数,
|
||||
SUM( CASE WHEN a.roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修户数,
|
||||
SUM( CASE WHEN a.roomstate = '5' THEN 1 ELSE 0 END ) AS 已完成装修未入住,
|
||||
SUM( CASE WHEN a.roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修已入住,
|
||||
SUM(b.CalcArea) AS 收费面积
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
*
|
||||
FROM dw.dim_room_d
|
||||
)a
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT
|
||||
b1.CommId AS CommId
|
||||
,b1.RoomID AS RoomID
|
||||
,SUM(CalcArea) AS CalcArea
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
CommId
|
||||
, CalcArea
|
||||
, RoomID
|
||||
FROM ods_erp_tb_hspr_coststansetting_d
|
||||
WHERE RoomID <> '0'
|
||||
GROUP BY CommId, CalcArea, RoomID
|
||||
)b1
|
||||
GROUP BY b1.CommId,b1.RoomID
|
||||
)b
|
||||
ON a.CommID = b.CommId
|
||||
AND a.RoomID = b.RoomID
|
||||
GROUP BY CommID
|
||||
)C
|
||||
ON A.CommId = C.CommID
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT
|
||||
CommID
|
||||
,SUM( CASE WHEN ParkingState IN ( '0001', '0003' ) THEN 1 ELSE 0 END ) AS 已售车位
|
||||
,SUM(CASE WHEN ParkingState IN ( '0002', '0004' ) THEN 1 ELSE 0 END) AS UnsoldParkingCount
|
||||
FROM ods_erp_tb_hspr_parking_d
|
||||
WHERE IsDelete = '0'
|
||||
GROUP BY
|
||||
CommID
|
||||
)D
|
||||
ON A.COMMID = D.COMMID
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT
|
||||
A.CommId
|
||||
-- 住宅高层
|
||||
,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN ROUND(ROUND(B.StanAmount,2),2) END),',','\n'),'-') AS 住宅高层
|
||||
-- 住宅多层
|
||||
,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 住宅多层
|
||||
-- 别墅
|
||||
,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 别墅
|
||||
-- 联排物业服务费
|
||||
,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%联排%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 联排物业服务费
|
||||
-- 叠拼物业服务费
|
||||
,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%叠拼%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 叠拼物业服务费
|
||||
-- 洋房物业费
|
||||
,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%洋房%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 洋房物业费
|
||||
-- 公寓物业服务费
|
||||
,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%公寓%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 公寓物业服务费
|
||||
-- 商铺物业服务费
|
||||
,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%商铺%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 商铺物业服务费
|
||||
-- 写字楼物业服务费
|
||||
,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%写字楼%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 写字楼物业服务费
|
||||
-- 幼儿园物业服务费
|
||||
,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%幼儿园%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 幼儿园物业服务费
|
||||
-- 厂区物业服务费
|
||||
,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%厂区%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 厂区物业服务费
|
||||
-- 酒店物业服务费
|
||||
,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%酒店%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 酒店物业服务费
|
||||
-- 车位管理物业服务费
|
||||
,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN('车位管理物业服务费','车位物业服务费') THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 车位管理物业服务费
|
||||
-- 车位月租费用
|
||||
,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName = '车位月租' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 车位月租费用
|
||||
|
||||
FROM
|
||||
(
|
||||
|
||||
SELECT
|
||||
DISTINCT
|
||||
CommID
|
||||
,CostID
|
||||
,StanID
|
||||
FROM dim_bind_cost_stan_detail_d -- 绑定的收费标准明细
|
||||
-- WHERE CommID = '214330'
|
||||
)A
|
||||
LEFT JOIN
|
||||
(
|
||||
|
||||
SELECT
|
||||
B1.CommID AS CommID
|
||||
,B1.COSTID AS COSTID
|
||||
,B1.StanID AS StanID
|
||||
,B1.StanAmount AS StanAmount
|
||||
,B2.COSTNAME AS COSTNAME
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
CommID
|
||||
,COSTID
|
||||
,StanID
|
||||
,StanAmount
|
||||
FROM dim_cost_stand_d -- 小区收费标准
|
||||
WHERE StanAmount <> 0
|
||||
)B1
|
||||
LEFT JOIN
|
||||
(
|
||||
|
||||
SELECT
|
||||
distinct
|
||||
COMMID
|
||||
,COSTID
|
||||
,COSTNAME
|
||||
FROM dim_costitem_d -- 项目上的费用名称
|
||||
)B2
|
||||
ON B1.CommID = B2.COMMID
|
||||
AND B1.CostID = B2.COSTID
|
||||
)B
|
||||
ON A.CommID = B.COMMID
|
||||
AND A.CostID = B.COSTID
|
||||
AND A.StanID = B.StanID
|
||||
GROUP BY
|
||||
A.CommId
|
||||
)G
|
||||
ON A.COMMID = G.COMMID
|
||||
;
|
Loading…
Reference in New Issue
Block a user