diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index 2e9cbc6..1312101 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -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")} \ No newline at end of file + 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 +; \ No newline at end of file