316 lines
15 KiB
Transact-SQL
316 lines
15 KiB
Transact-SQL
IF OBJECT_ID(N'dbo.View_ProjectPictureReport', N'V') IS NOT NULL
|
|
DROP VIEW dbo.View_ProjectPictureReport;
|
|
go
|
|
IF OBJECT_ID(N'dbo.ProjectSitePersonNum', N'V') IS NOT NULL
|
|
DROP VIEW dbo.ProjectSitePersonNum;
|
|
go
|
|
IF OBJECT_ID(N'dbo.View_DayReport', N'V') IS NOT NULL
|
|
DROP VIEW dbo.View_DayReport;
|
|
go
|
|
IF OBJECT_ID(N'dbo.View_DayPersonReport', N'V') IS NOT NULL
|
|
DROP VIEW dbo.View_DayPersonReport;
|
|
go
|
|
IF OBJECT_ID(N'dbo.View_HSSEAccidentReport', N'V') IS NOT NULL
|
|
DROP VIEW dbo.View_HSSEAccidentReport;
|
|
go
|
|
IF OBJECT_ID(N'dbo.View_HSSECheckReport', N'V') IS NOT NULL
|
|
DROP VIEW dbo.View_HSSECheckReport;
|
|
go
|
|
IF OBJECT_ID(N'dbo.View_MaterPhyQuantity', N'V') IS NOT NULL
|
|
DROP VIEW dbo.View_MaterPhyQuantity;
|
|
go
|
|
IF OBJECT_ID(N'dbo.View_HSSERiskReport', N'V') IS NOT NULL
|
|
DROP VIEW dbo.View_HSSERiskReport;
|
|
go
|
|
IF OBJECT_ID(N'dbo.View_ProjectqualityReport', N'V') IS NOT NULL
|
|
DROP VIEW dbo.View_HSSERiskReport;
|
|
go
|
|
--实物工程量
|
|
create view dbo.View_MaterPhyQuantity as
|
|
WITH CTE AS (SELECT project.ProjectId,
|
|
project.ProjectName,
|
|
project.ProjectCode,
|
|
sysConst.ConstText AS UnitTypeName,
|
|
CONVERT(VARCHAR(7), ReportDate, 120) AS YearMonth,
|
|
SUM(x.Total) AS Totals,
|
|
SUM(x.PlanCompletedNum) AS MonthTotalPlanCompletedNum,
|
|
SUM(x.ActCompletedNum) AS MonthTotalActCompletedNum,
|
|
ROW_NUMBER() OVER (PARTITION BY project.ProjectId ORDER BY CONVERT(VARCHAR(7), ReportDate, 120) ASC) AS RN
|
|
|
|
FROM HSSE_MaterPhyQuantity x
|
|
|
|
LEFT JOIN Sys_Const AS sysConst
|
|
ON sysConst.GroupId = 'MaterPhyQuantityType' AND
|
|
x.MaterPhyQuantityType = sysConst.ConstValue
|
|
|
|
LEFT JOIN Base_Project project ON x.ProjectId = project.ProjectId
|
|
GROUP BY project.ProjectId,
|
|
project.ProjectName,
|
|
project.ProjectCode,
|
|
sysConst.ConstText,
|
|
CONVERT(VARCHAR(7), ReportDate, 120))
|
|
SELECT CTE.ProjectId,
|
|
CTE.ProjectName,
|
|
CTE.ProjectCode,
|
|
CTE.UnitTypeName,
|
|
CTE.YearMonth,
|
|
CTE.Totals,
|
|
CTE.MonthTotalPlanCompletedNum,
|
|
CTE.MonthTotalActCompletedNum,
|
|
SUM(CTE.MonthTotalPlanCompletedNum)
|
|
OVER (PARTITION BY CTE.ProjectId,CTE.UnitTypeName ORDER BY CTE.YearMonth ASC) AS AccumulatedPlanCompletedNum,
|
|
SUM(CTE.MonthTotalActCompletedNum)
|
|
OVER (PARTITION BY CTE.ProjectId,CTE.UnitTypeName ORDER BY CTE.YearMonth ASC) AS AccumulatedActCompletedNum
|
|
FROM CTE
|
|
WHERE CTE.RN <= (SELECT COUNT(*) FROM CTE)
|
|
;
|
|
go
|
|
--项目图片
|
|
|
|
create view dbo.View_ProjectPictureReport as
|
|
select ProjectCode, ProjectName, Title, type.Name, AttachFile.AttachUrl, UploadDate
|
|
from InformationProject_Picture InFo
|
|
left join Base_Project project on InFo.ProjectId = project.ProjectId
|
|
left join Base_PictureType type on InFo.PictureType = type.PictureTypeId
|
|
left join AttachFile on InFo. PictureId = AttachFile.ToKeyId
|
|
where MenuType = 'Menu_HSSE'
|
|
and type.Name in ('项目现场图', '项目效果图')
|
|
|
|
go
|
|
--现场人数视图
|
|
create view dbo.ProjectSitePersonNum as
|
|
SELECT
|
|
pro.ProjectName,
|
|
pro.ProjectCode,
|
|
COUNT(CASE WHEN Post.PostType IN ('1', '4') AND Person.IsForeign = 0 AND Punit.UnitType='1' THEN 1 END) AS GenManagerCount,--总包人数
|
|
COUNT(CASE WHEN Post.PostType IN ('1', '4') AND Person.IsForeign = 0 AND Punit.UnitType='2' and Unit.IsBuild = 0 THEN 1 END) AS ManagerSystemOutChinaCount,--分包管理系统外中国籍人数
|
|
COUNT(CASE WHEN Post.PostType IN ('1', '4') AND Person.IsForeign = 1 AND Punit.UnitType='2' and Unit.IsBuild = 0 THEN 1 END) AS ManagerSystemOutForeignCount,--分包管理系统外外籍人数
|
|
COUNT(CASE WHEN Post.PostType IN ('1', '4') AND Person.IsForeign = 0 AND Punit.UnitType='2' and Unit.IsBuild = 1 THEN 1 END) AS ManagerSystemInChinaCount,--分包管理系统内中国籍人数
|
|
COUNT(CASE WHEN Post.PostType IN ('1', '4') AND Person.IsForeign = 1 AND Punit.UnitType='2' and Unit.IsBuild = 1 THEN 1 END) AS ManagerSystemInForeignCount,--分包管理系统内外籍人数
|
|
COUNT(CASE WHEN Post.PostType IN ('2', '3') AND Person.IsForeign = 0 AND Punit.UnitType='2' and Unit.IsBuild = 0 THEN 1 END) AS OperManSystemOutChinaCount,--分包直接系统外中国籍人数
|
|
COUNT(CASE WHEN Post.PostType IN ('2', '3') AND Person.IsForeign = 1 AND Punit.UnitType='2' and Unit.IsBuild = 0 THEN 1 END) AS OperManSystemOutForeignCount,--分包直接系统外外籍人数
|
|
COUNT(CASE WHEN Post.PostType IN ('2', '3') AND Person.IsForeign = 0 AND Punit.UnitType='2' and Unit.IsBuild = 1 THEN 1 END) AS OperManSystemInChinaCount,--分包直接系统内中国籍人数
|
|
COUNT(CASE WHEN Post.PostType IN ('2', '3') AND Person.IsForeign = 1 AND Punit.UnitType='2' and Unit.IsBuild = 1 THEN 1 END) AS OperManSystemInForeignCount,--分包直接系统内外籍人数
|
|
(CASE
|
|
WHEN (select count(*) from RealName_SynchroSet where RealName_SynchroSet.UnitId='b4f3d912-ca6d-440c-a8d7-bc6a5d5a1f84' and proCode=pro.ContractNo)=1 THEN '是'
|
|
ELSE '否'
|
|
END) AS IsRealName
|
|
FROM
|
|
SitePerson_Person AS Person
|
|
left JOIN Base_Project pro ON pro.ProjectId = Person.ProjectId
|
|
left JOIN Base_Unit AS Unit ON Unit.UnitId = Person.UnitId
|
|
left JOIN Project_ProjectUnit as Punit on Punit.UnitId =Person.UnitId and Punit.ProjectId =Person.ProjectId
|
|
left JOIN Base_WorkPost AS Post ON Post.WorkPostId = Person.WorkPostId
|
|
WHERE
|
|
Post.PostType IN ('1', '2', '3', '4')
|
|
GROUP BY
|
|
pro.ProjectName, pro.ProjectCode,pro.ContractNo
|
|
go
|
|
--人工时
|
|
|
|
create view dbo.View_DayReport as
|
|
WITH CTE AS (SELECT project.ProjectId,
|
|
project.ProjectName,
|
|
project.ProjectCode,
|
|
sysConst.ConstText AS UnitTypeName,
|
|
CONVERT(VARCHAR(7), CompileDate, 120) AS YearMonth,
|
|
SUM(x.PersonWorkTime) AS MonthTotalPersonWorkTime,
|
|
ROW_NUMBER() OVER (PARTITION BY project.ProjectId ORDER BY CONVERT(VARCHAR(7), CompileDate, 120) ASC) AS RN
|
|
|
|
FROM SitePerson_DayReportDetail x
|
|
|
|
LEFT JOIN SitePerson_DayReport a ON x.DayReportId = a.DayReportId
|
|
|
|
LEFT JOIN Base_Unit b ON x.UnitId = b.UnitId
|
|
|
|
LEFT JOIN Project_ProjectUnit ProUnit ON b.UnitId = ProUnit.UnitId
|
|
|
|
LEFT JOIN Sys_Const AS sysConst
|
|
ON sysConst.GroupId = 'ProjectUnitType' AND ProUnit.UnitType = sysConst.ConstValue
|
|
|
|
LEFT JOIN Base_Project project ON a.ProjectId = project.ProjectId
|
|
|
|
WHERE ProUnit.ProjectId = a.ProjectId
|
|
GROUP BY project.ProjectId,
|
|
project.ProjectName,
|
|
project.ProjectCode,
|
|
sysConst.ConstText,
|
|
CONVERT(VARCHAR(7), CompileDate, 120))
|
|
SELECT CTE.ProjectId,
|
|
CTE.ProjectName,
|
|
CTE.ProjectCode,
|
|
CTE.UnitTypeName,
|
|
CTE.YearMonth,
|
|
CTE.MonthTotalPersonWorkTime,
|
|
SUM(CTE.MonthTotalPersonWorkTime)
|
|
OVER (PARTITION BY CTE.ProjectId,CTE.UnitTypeName ORDER BY CTE.YearMonth ASC) AS AccumulatedPersonWorkTime
|
|
|
|
FROM CTE
|
|
WHERE CTE.RN <= (SELECT COUNT(*) FROM CTE)
|
|
;
|
|
go
|
|
--人工日
|
|
|
|
create view dbo.View_DayPersonReport as
|
|
WITH CTE AS (SELECT project.ProjectId,
|
|
project.ProjectName,
|
|
project.ProjectCode,
|
|
sysConst.ConstText AS UnitTypeName,
|
|
CONVERT(VARCHAR(7), CompileDate, 120) AS YearMonth,
|
|
SUM(x.RealPersonNum) AS MonthTotalPersonNum,
|
|
ROW_NUMBER() OVER (PARTITION BY project.ProjectId ORDER BY CONVERT(VARCHAR(7), CompileDate, 120) ASC) AS RN
|
|
|
|
FROM SitePerson_DayReportDetail x
|
|
|
|
LEFT JOIN SitePerson_DayReport a ON x.DayReportId = a.DayReportId
|
|
|
|
LEFT JOIN Base_Unit b ON x.UnitId = b.UnitId
|
|
|
|
LEFT JOIN Project_ProjectUnit ProUnit ON b.UnitId = ProUnit.UnitId
|
|
|
|
LEFT JOIN Sys_Const AS sysConst
|
|
ON sysConst.GroupId = 'ProjectUnitType' AND ProUnit.UnitType = sysConst.ConstValue
|
|
|
|
LEFT JOIN Base_Project project ON a.ProjectId = project.ProjectId
|
|
|
|
WHERE ProUnit.ProjectId = a.ProjectId
|
|
GROUP BY project.ProjectId,
|
|
project.ProjectName,
|
|
project.ProjectCode,
|
|
sysConst.ConstText,
|
|
CONVERT(VARCHAR(7), CompileDate, 120))
|
|
SELECT CTE.ProjectId,
|
|
CTE.ProjectName,
|
|
CTE.ProjectCode,
|
|
CTE.UnitTypeName,
|
|
CTE.YearMonth,
|
|
CTE.MonthTotalPersonNum,
|
|
SUM(CTE.MonthTotalPersonNum)
|
|
OVER (PARTITION BY CTE.ProjectId,CTE.UnitTypeName ORDER BY CTE.YearMonth ASC) AS AccumulatedPersonNum
|
|
|
|
FROM CTE
|
|
WHERE CTE.RN <= (SELECT COUNT(*) FROM CTE)
|
|
;
|
|
go
|
|
--现场HSE状态(事故报告统计)
|
|
|
|
create view dbo.View_HSSEAccidentReport as
|
|
with CTE AS (SELECT project.ProjectId,
|
|
project.ProjectName,
|
|
project.ProjectCode,
|
|
AccidentType.ConstText AS AccidentTypeName,
|
|
CONVERT(VARCHAR(7), ReportDate, 120) AS YearMonth,
|
|
count(a.AccidentReportId) AS MonthTotal,
|
|
ROW_NUMBER() OVER (PARTITION BY project.ProjectId ORDER BY CONVERT(VARCHAR(7), ReportDate, 120) ASC) AS RN
|
|
FROM Accident_AccidentReport a
|
|
LEFT JOIN Base_Project project ON a.ProjectId = project.ProjectId
|
|
LEFT JOIN Sys_Const AS AccidentType ON AccidentType.ConstValue = a.AccidentTypeId and
|
|
AccidentType.GroupId = 'AccidentReportRegistration'
|
|
GROUP BY project.ProjectId,
|
|
project.ProjectName,
|
|
project.ProjectCode,
|
|
CONVERT(VARCHAR(7), ReportDate, 120), AccidentType.ConstText)
|
|
SELECT CTE.ProjectId,
|
|
CTE.ProjectName,
|
|
CTE.ProjectCode,
|
|
CTE.YearMonth,
|
|
cte.AccidentTypeName,
|
|
CTE.MonthTotal,
|
|
SUM(CTE.MonthTotal)
|
|
OVER (PARTITION BY CTE.ProjectId,CTE.AccidentTypeName ORDER BY CTE.YearMonth ASC) AS Accumulated
|
|
FROM CTE
|
|
WHERE CTE.RN <= (SELECT COUNT(*) FROM CTE)
|
|
go
|
|
--现场HSE检查情况
|
|
|
|
create view dbo.View_HSSECheckReport as
|
|
with Daily as (
|
|
SELECT project.ProjectId,
|
|
project.ProjectName,
|
|
project.ProjectCode,
|
|
'安全日常巡查' AS CheckTypeName,
|
|
CONVERT(VARCHAR(7), CheckTime, 120) AS YearMonth,
|
|
count(Hazardreg.HazardRegisterId) AS MonthTotal,
|
|
ROW_NUMBER() OVER (PARTITION BY project.ProjectId ORDER BY CONVERT(VARCHAR(7), CheckTime, 120) ASC) AS RN
|
|
FROM HSSE_Hazard_HazardRegister Hazardreg
|
|
LEFT JOIN Base_Project project ON Hazardreg.ProjectId = project.ProjectId
|
|
GROUP BY project.ProjectId,
|
|
project.ProjectName,
|
|
project.ProjectCode,
|
|
CONVERT(VARCHAR(7), CheckTime, 120)),
|
|
|
|
CTE AS (SELECT project.ProjectId,
|
|
project.ProjectName,
|
|
project.ProjectCode,
|
|
(CASE
|
|
WHEN a.CheckType = '1' THEN '每周安全检查'
|
|
WHEN a.CheckType = '2' THEN '每月安全大检查'
|
|
WHEN a.CheckType = '3' THEN '节前节后安全检查'
|
|
WHEN a.CheckType = '0' THEN '专项安全检查'
|
|
ELSE '专项检查' END) AS CheckTypeName,
|
|
CONVERT(VARCHAR(7), CheckTime, 120) AS YearMonth,
|
|
count(a.CheckSpecialId) AS MonthTotal,
|
|
ROW_NUMBER() OVER (PARTITION BY project.ProjectId ORDER BY CONVERT(VARCHAR(7), CheckTime, 120) ASC) AS RN
|
|
FROM Check_CheckSpecial a
|
|
LEFT JOIN Base_Project project ON a.ProjectId = project.ProjectId
|
|
where a.CheckType in ('1','2','0')
|
|
GROUP BY project.ProjectId,
|
|
project.ProjectName,
|
|
project.ProjectCode,
|
|
CheckType,
|
|
CONVERT(VARCHAR(7), CheckTime, 120))
|
|
SELECT CTE.ProjectId,
|
|
CTE.ProjectName,
|
|
CTE.ProjectCode,
|
|
CTE.YearMonth,
|
|
cte.CheckTypeName,
|
|
CTE.MonthTotal,
|
|
SUM(CTE.MonthTotal)
|
|
OVER (PARTITION BY CTE.ProjectId,CTE.CheckTypeName ORDER BY CTE.YearMonth ASC) AS Accumulated
|
|
FROM CTE
|
|
WHERE CTE.RN <= (SELECT COUNT(*) FROM CTE)
|
|
union
|
|
SELECT Daily.ProjectId,
|
|
Daily.ProjectName,
|
|
Daily.ProjectCode,
|
|
Daily.YearMonth,
|
|
Daily.CheckTypeName,
|
|
Daily.MonthTotal,
|
|
SUM(Daily.MonthTotal)
|
|
OVER (PARTITION BY Daily.ProjectId,Daily.CheckTypeName ORDER BY Daily.YearMonth ASC) AS Accumulated
|
|
FROM Daily
|
|
WHERE Daily.RN <= (SELECT COUNT(*) FROM Daily)
|
|
go
|
|
------ 项目风险状态
|
|
create view dbo.View_HSSERiskReport as
|
|
SELECT
|
|
pro.ProjectName,
|
|
pro.ProjectCode,
|
|
COUNT(CASE WHEN hazard.HazardId !='' THEN 1 END) AS ALLCount,--总数
|
|
COUNT(CASE WHEN level.RiskLevel='4' THEN 1 END) AS MajorRisksCount,--特大风险数
|
|
COUNT(CASE WHEN level.RiskLevel='3' THEN 1 END) AS SignificantRiskCount,--重大风险数
|
|
COUNT(CASE WHEN level.RiskLevel='2' THEN 1 END) AS NorMalRiskCount,--一般风险数
|
|
COUNT(CASE WHEN level.RiskLevel='1' THEN 1 END) AS LowRiskCount--低风险
|
|
FROM
|
|
Base_Project pro
|
|
left JOIN Hazard_HazardSelectedItem AS hazard ON pro.ProjectId = hazard.ProjectId
|
|
left JOIN Base_RiskLevel AS level ON hazard.HazardLevel = level.RiskLevelId
|
|
GROUP BY
|
|
pro.ProjectName, pro.ProjectCode,pro.ContractNo
|
|
|
|
go
|
|
|
|
------ 项目质量数据
|
|
create view dbo.View_ProjectqualityReport as
|
|
SELECT
|
|
pro.ProjectName,
|
|
pro.ProjectCode,
|
|
FORMAT((SUM(cht_passfilm) * 100.0 / NULLIF(SUM(cht_totalfilm), 0)), '0.00') as HJPassRate
|
|
FROM
|
|
Base_Project pro
|
|
left join PW_JointInfo JointInfo on JointInfo.ProjectId=pro.ProjectId
|
|
left join CH_CheckItem ch_checkitem on JointInfo.JOT_ID = ch_checkitem.JOT_ID
|
|
GROUP BY
|
|
pro.ProjectName, pro.ProjectCode,pro.ContractNo
|
|
|