Files
SGGL_SHJ/DataBase/版本日志/已更新脚本/2021年度/SGGLDB_V2021-06-04-001.sql
T
2022-09-05 16:36:31 +08:00

525 lines
31 KiB
Transact-SQL

ALTER PROC [dbo].[sp_ReportQueryByProject]
@projectId NVARCHAR(50),
@startTime DATETIME = NULL,
@endTime DATETIME = NULL,
@material NVARCHAR(50)=NULL
--------------按项目统计---------------------------------
AS
SELECT project.ProjectId,project.ProjectCode,
ISNULL(total.TotalJot,0) AS TotalJot,ISNULL(total.TotalDin,0) AS TotalDin,
ISNULL(weldedJot.weldedJot,0) AS weldedJot,ISNULL(weldedJot.weldedDin,0) AS weldedDin,
CAST((CASE WHEN (ISNULL(total.TotalJot,0))>0
THEN 100.0 * (ISNULL(weldedJot.weldedJot,0))/(1.0 * ISNULL(total.TotalJot,0))
ELSE 0 END) AS DECIMAL(9,2))
AS WeldedRate, --焊接完成比例
ISNULL(oneCheck.OneCheckJotNum,0) AS OneCheckJotNum,ISNULL(oneCheckRepair.OneCheckRepairJotNum,0) AS OneCheckRepairJotNum,
CAST((CASE WHEN (ISNULL(oneCheck.OneCheckJotNum,0))>0
THEN 100.0 * (ISNULL(oneCheck.OneCheckJotNum,0)-ISNULL(oneCheckRepair.OneCheckRepairJotNum,0))/(1.0 * ISNULL(oneCheck.OneCheckJotNum,0))
ELSE 0 END) AS DECIMAL(9,2))
AS OneOKRate, --焊接一次合格率
ISNULL(needCheck.NeedCheckJotNum,0) AS NeedCheckJotNum, --应检测焊口数
ISNULL(checked.CheckedJotNum,0) AS CheckedJotNum, --已检测焊口数
CAST((CASE WHEN (ISNULL(needCheck.NeedCheckJotNum,0))>0
THEN 100.0 * (ISNULL(checked.CheckedJotNum,0))/(1.0 * ISNULL(needCheck.NeedCheckJotNum,0))
ELSE 0 END) AS DECIMAL(9,2))
AS CheckedRate, --检测完成比例
ISNULL(checkRepair.CheckRepairJotNum,0) AS CheckRepairJotNum, --返修焊口数
ISNULL(expandJot.OneExpandJotNum,0) AS OneExpandJotNum
FROM dbo.Base_Project project
LEFT JOIN (SELECT COUNT(*) TotalJot ,pipe.ProjectId ,SUM(jot.Size) AS TotalDin
FROM dbo.HJGL_WeldJoint jot
LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId
GROUP BY pipe.ProjectId) AS total ON total.ProjectId = project.ProjectId
LEFT JOIN (SELECT COUNT(*) weldedJot ,pipe.ProjectId ,SUM(jot.Size) AS weldedDin
FROM dbo.HJGL_WeldJoint jot
LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
WHERE jot.WeldingDailyId is not NULL
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY pipe.ProjectId) AS weldedJot ON weldedJot.ProjectId = project.ProjectId
LEFT JOIN (SELECT point.ProjectId,COUNT(ndeItem.NDEItemID) AS OneCheckJotNum --一次检测焊口数
FROM dbo.HJGL_Batch_NDEItem ndeItem
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE pointItem.PointState=1 AND trustItem.RepairRecordId IS NULL
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY point.ProjectId) AS oneCheck ON oneCheck.ProjectId = project.ProjectId
LEFT JOIN (SELECT point.ProjectId,COUNT(ndeItem.NDEItemID) AS OneCheckRepairJotNum --一次检测返修焊口数
FROM dbo.HJGL_Batch_NDEItem ndeItem
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE pointItem.PointDate IS NOT NULL AND pointItem.PointState=1
AND trustItem.RepairRecordId IS NULL AND ndeItem.CheckResult='2'
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY point.ProjectId) AS oneCheckRepair ON oneCheckRepair.ProjectId = project.ProjectId
LEFT JOIN (SELECT point.ProjectId,COUNT(ndeItem.NDEItemID) AS CheckRepairJotNum --返修焊口数
FROM dbo.HJGL_Batch_NDEItem ndeItem
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE pointItem.PointDate IS NOT NULL
AND trustItem.RepairRecordId IS NULL AND ndeItem.CheckResult='2'
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY point.ProjectId) AS checkRepair ON checkRepair.ProjectId = project.ProjectId
LEFT JOIN (SELECT point.ProjectId,COUNT(pointItem.PointBatchItemId) AS OneExpandJotNum --扩透焊口数
FROM dbo.HJGL_Batch_PointBatchItem pointItem
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE pointItem.PointState=2
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY point.ProjectId) AS expandJot ON expandJot.ProjectId = project.ProjectId
LEFT JOIN (SELECT jot.ProjectId,COUNT(pointItem.PointBatchItemId) AS NeedCheckJotNum --应检测焊口数
FROM dbo.HJGL_Batch_PointBatchItem pointItem
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
WHERE pointItem.PointState is not null and (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY jot.ProjectId) AS needCheck ON needCheck.ProjectId = project.ProjectId
LEFT JOIN (SELECT jot.ProjectId,COUNT(ndeItem.NDEItemID) AS CheckedJotNum --已检测焊口数
FROM dbo.HJGL_Batch_NDEItem ndeItem
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
WHERE (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY jot.ProjectId) AS checked ON checked.ProjectId = project.ProjectId
WHERE project.ProjectId=@projectId
GO
ALTER PROC [dbo].[sp_ReportQueryByPipeLine]
@projectId NVARCHAR(50),
@pipeLineId NVARCHAR(50),
@startTime DATETIME = NULL,
@endTime DATETIME = NULL,
@material NVARCHAR(50)=NULL
--------------按管线查询统计---------------------------------
AS
SELECT pipeLine.PipelineId,pipeLine.PipelineCode,
ISNULL(total.TotalJot,0) AS TotalJot,ISNULL(total.TotalDin,0) AS TotalDin,
ISNULL(weldedJot.weldedJot,0) AS weldedJot,ISNULL(weldedJot.weldedDin,0) AS weldedDin,
CAST((CASE WHEN (ISNULL(total.TotalJot,0))>0
THEN 100.0 * (ISNULL(weldedJot.weldedJot,0))/(1.0 * ISNULL(total.TotalJot,0))
ELSE 0 END) AS DECIMAL(9,2))
AS WeldedRate, --焊接完成比例
ISNULL(oneCheck.OneCheckJotNum,0) AS OneCheckJotNum,ISNULL(oneCheckRepair.OneCheckRepairJotNum,0) AS OneCheckRepairJotNum,
CAST((CASE WHEN (ISNULL(oneCheck.OneCheckJotNum,0))>0
THEN 100.0 * (ISNULL(oneCheck.OneCheckJotNum,0)-ISNULL(oneCheckRepair.OneCheckRepairJotNum,0))/(1.0 * ISNULL(oneCheck.OneCheckJotNum,0))
ELSE 0 END) AS DECIMAL(9,2))
AS OneOKRate, --焊接一次合格率
ISNULL(needCheck.NeedCheckJotNum,0) AS NeedCheckJotNum, --应检测焊口数
ISNULL(checked.CheckedJotNum,0) AS CheckedJotNum, --已检测焊口数
CAST((CASE WHEN (ISNULL(needCheck.NeedCheckJotNum,0))>0
THEN 100.0 * (ISNULL(checked.CheckedJotNum,0))/(1.0 * ISNULL(needCheck.NeedCheckJotNum,0))
ELSE 0 END) AS DECIMAL(9,2))
AS CheckedRate, --检测完成比例
ISNULL(checkRepair.CheckRepairJotNum,0) AS CheckRepairJotNum, --返修焊口数
ISNULL(expandJot.OneExpandJotNum,0) AS OneExpandJotNum
FROM dbo.HJGL_Pipeline pipeLine
LEFT JOIN (SELECT COUNT(*) TotalJot ,pipe.PipelineId ,SUM(jot.Size) AS TotalDin
FROM dbo.HJGL_WeldJoint jot
LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId
GROUP BY pipe.PipelineId) AS total ON total.PipelineId = pipeLine.PipelineId
LEFT JOIN (SELECT COUNT(*) weldedJot ,pipe.PipelineId ,SUM(jot.Size) AS weldedDin
FROM dbo.HJGL_WeldJoint jot
LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
WHERE jot.WeldingDailyId is not NULL
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY pipe.PipelineId) AS weldedJot ON weldedJot.PipelineId = pipeLine.PipelineId
LEFT JOIN (SELECT jot.PipelineId,COUNT(ndeItem.NDEItemID) AS OneCheckJotNum --一次检测焊口数
FROM dbo.HJGL_Batch_NDEItem ndeItem
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE pointItem.PointState=1 AND trustItem.RepairRecordId IS NULL
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY jot.PipelineId) AS oneCheck ON oneCheck.PipelineId = pipeLine.PipelineId
LEFT JOIN (SELECT jot.PipelineId,COUNT(ndeItem.NDEItemID) AS OneCheckRepairJotNum --一次检测返修焊口数
FROM dbo.HJGL_Batch_NDEItem ndeItem
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE pointItem.PointDate IS NOT NULL AND pointItem.PointState=1
AND trustItem.RepairRecordId IS NULL AND ndeItem.CheckResult='2'
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY jot.PipelineId) AS oneCheckRepair ON oneCheckRepair.PipelineId = pipeLine.PipelineId
LEFT JOIN (SELECT jot.PipelineId,COUNT(ndeItem.NDEItemID) AS CheckRepairJotNum --返修焊口数
FROM dbo.HJGL_Batch_NDEItem ndeItem
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE pointItem.PointDate IS NOT NULL
AND trustItem.RepairRecordId IS NULL AND ndeItem.CheckResult='2'
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY jot.PipelineId) AS checkRepair ON checkRepair.PipelineId = pipeLine.PipelineId
LEFT JOIN (SELECT jot.PipelineId,COUNT(pointItem.PointBatchItemId) AS OneExpandJotNum --扩透焊口数
FROM dbo.HJGL_Batch_PointBatchItem pointItem
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE pointItem.PointState=2
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY jot.PipelineId) AS expandJot ON expandJot.PipelineId = pipeLine.PipelineId
LEFT JOIN (SELECT jot.PipelineId,COUNT(pointItem.PointBatchItemId) AS NeedCheckJotNum --应检测焊口数
FROM dbo.HJGL_Batch_PointBatchItem pointItem
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
WHERE pointItem.PointState is not null and (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY jot.PipelineId) AS needCheck ON needCheck.PipelineId = pipeLine.PipelineId
LEFT JOIN (SELECT jot.PipelineId,COUNT(ndeItem.NDEItemID) AS CheckedJotNum --已检测焊口数
FROM dbo.HJGL_Batch_NDEItem ndeItem
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
WHERE (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY jot.PipelineId) AS checked ON checked.PipelineId = pipeLine.PipelineId
WHERE pipeLine.ProjectId=@projectId AND pipeLine.PipelineId=@pipeLineId
GO
ALTER PROC [dbo].[sp_ReportQueryByUnit]
@projectId NVARCHAR(50),
@unitId NVARCHAR(50),
@startTime DATETIME = NULL,
@endTime DATETIME = NULL,
@material NVARCHAR(50)=NULL
--------------按单位统计---------------------------------
AS
SELECT punit.UnitId,unit.UnitCode,unit.UnitName,
ISNULL(total.TotalJot,0) AS TotalJot,ISNULL(total.TotalDin,0) AS TotalDin,
ISNULL(weldedJot.weldedJot,0) AS weldedJot,ISNULL(weldedJot.weldedDin,0) AS weldedDin,
CAST((CASE WHEN (ISNULL(total.TotalJot,0))>0
THEN 100.0 * (ISNULL(weldedJot.weldedJot,0))/(1.0 * ISNULL(total.TotalJot,0))
ELSE 0 END) AS DECIMAL(9,2))
AS WeldedRate, --焊接完成比例
ISNULL(oneCheck.OneCheckJotNum,0) AS OneCheckJotNum,ISNULL(oneCheckRepair.OneCheckRepairJotNum,0) AS OneCheckRepairJotNum,
CAST((CASE WHEN (ISNULL(oneCheck.OneCheckJotNum,0))>0
THEN 100.0 * (ISNULL(oneCheck.OneCheckJotNum,0)-ISNULL(oneCheckRepair.OneCheckRepairJotNum,0))/(1.0 * ISNULL(oneCheck.OneCheckJotNum,0))
ELSE 0 END) AS DECIMAL(9,2))
AS OneOKRate, --焊接一次合格率
ISNULL(needCheck.NeedCheckJotNum,0) AS NeedCheckJotNum, --应检测焊口数
ISNULL(checked.CheckedJotNum,0) AS CheckedJotNum, --已检测焊口数
CAST((CASE WHEN (ISNULL(needCheck.NeedCheckJotNum,0))>0
THEN 100.0 * (ISNULL(checked.CheckedJotNum,0))/(1.0 * ISNULL(needCheck.NeedCheckJotNum,0))
ELSE 0 END) AS DECIMAL(9,2))
AS CheckedRate, --检测完成比例
ISNULL(checkRepair.CheckRepairJotNum,0) AS CheckRepairJotNum, --返修焊口数
ISNULL(expandJot.OneExpandJotNum,0) AS OneExpandJotNum
FROM dbo.Project_ProjectUnit punit
LEFT JOIN dbo.Base_Unit unit ON unit.UnitId = punit.UnitId
LEFT JOIN (SELECT COUNT(*) TotalJot ,pipe.UnitId ,SUM(jot.Size) AS TotalDin
FROM dbo.HJGL_WeldJoint jot
LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId
GROUP BY pipe.UnitId) AS total ON total.UnitId = punit.UnitId
LEFT JOIN (SELECT COUNT(*) weldedJot ,pipe.UnitId ,SUM(jot.Size) AS weldedDin
FROM dbo.HJGL_WeldJoint jot
LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
WHERE jot.WeldingDailyId is not NULL
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY pipe.UnitId) AS weldedJot ON weldedJot.UnitId = punit.UnitId
LEFT JOIN (SELECT point.UnitId,COUNT(ndeItem.NDEItemID) AS OneCheckJotNum --一次检测焊口数
FROM dbo.HJGL_Batch_NDEItem ndeItem
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE pointItem.PointState=1 AND trustItem.RepairRecordId IS NULL
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY point.UnitId) AS oneCheck ON oneCheck.UnitId = punit.UnitId
LEFT JOIN (SELECT point.UnitId,COUNT(ndeItem.NDEItemID) AS OneCheckRepairJotNum --一次检测返修焊口数
FROM dbo.HJGL_Batch_NDEItem ndeItem
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE pointItem.PointDate IS NOT NULL AND pointItem.PointState=1
AND trustItem.RepairRecordId IS NULL AND ndeItem.CheckResult='2'
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY point.UnitId) AS oneCheckRepair ON oneCheckRepair.UnitId = punit.UnitId
LEFT JOIN (SELECT point.UnitId,COUNT(ndeItem.NDEItemID) AS CheckRepairJotNum --返修焊口数
FROM dbo.HJGL_Batch_NDEItem ndeItem
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE pointItem.PointDate IS NOT NULL
AND trustItem.RepairRecordId IS NULL AND ndeItem.CheckResult='2'
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY point.UnitId) AS checkRepair ON checkRepair.UnitId = punit.UnitId
LEFT JOIN (SELECT point.UnitId,COUNT(pointItem.PointBatchItemId) AS OneExpandJotNum --扩透焊口数
FROM dbo.HJGL_Batch_PointBatchItem pointItem
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE pointItem.PointState=2
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY point.UnitId) AS expandJot ON expandJot.UnitId = punit.UnitId
LEFT JOIN (SELECT point.UnitId,COUNT(pointItem.PointBatchItemId) AS NeedCheckJotNum --应检测焊口数
FROM dbo.HJGL_Batch_PointBatchItem pointItem
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
WHERE pointItem.PointState is not null and (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY point.UnitId) AS needCheck ON needCheck.UnitId = punit.UnitId
LEFT JOIN (SELECT point.UnitId,COUNT(ndeItem.NDEItemID) AS CheckedJotNum --已检测焊口数
FROM dbo.HJGL_Batch_NDEItem ndeItem
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY point.UnitId) AS checked ON checked.UnitId = punit.UnitId
WHERE punit.ProjectId=@projectId AND punit.UnitId=@unitId AND punit.UnitType='2'
GO
ALTER PROC [dbo].[sp_ReportQueryByUnitWork]
@projectId NVARCHAR(50),
@unitWorkId NVARCHAR(50),
@startTime DATETIME = NULL,
@endTime DATETIME = NULL,
@material NVARCHAR(50)=NULL
--------------按单位工程统计---------------------------------
AS
SELECT unitWork.UnitWorkId,unitWork.UnitWorkCode,unitWork.ProjectId,
ISNULL(total.TotalJot,0) AS TotalJot,ISNULL(total.TotalDin,0) AS TotalDin,
ISNULL(weldedJot.weldedJot,0) AS weldedJot,ISNULL(weldedJot.weldedDin,0) AS weldedDin,
CAST((CASE WHEN (ISNULL(total.TotalJot,0))>0
THEN 100.0 * (ISNULL(weldedJot.weldedJot,0))/(1.0 * ISNULL(total.TotalJot,0))
ELSE 0 END) AS DECIMAL(9,2))
AS WeldedRate, --焊接完成比例
ISNULL(oneCheck.OneCheckJotNum,0) AS OneCheckJotNum,ISNULL(oneCheckRepair.OneCheckRepairJotNum,0) AS OneCheckRepairJotNum,
CAST((CASE WHEN (ISNULL(oneCheck.OneCheckJotNum,0))>0
THEN 100.0 * (ISNULL(oneCheck.OneCheckJotNum,0)-ISNULL(oneCheckRepair.OneCheckRepairJotNum,0))/(1.0 * ISNULL(oneCheck.OneCheckJotNum,0))
ELSE 0 END) AS DECIMAL(9,2))
AS OneOKRate, --焊接一次合格率
ISNULL(needCheck.NeedCheckJotNum,0) AS NeedCheckJotNum, --应检测焊口数
ISNULL(checked.CheckedJotNum,0) AS CheckedJotNum, --已检测焊口数
CAST((CASE WHEN (ISNULL(needCheck.NeedCheckJotNum,0))>0
THEN 100.0 * (ISNULL(checked.CheckedJotNum,0))/(1.0 * ISNULL(needCheck.NeedCheckJotNum,0))
ELSE 0 END) AS DECIMAL(9,2))
AS CheckedRate, --检测完成比例
ISNULL(checkRepair.CheckRepairJotNum,0) AS CheckRepairJotNum, --返修焊口数
ISNULL(expandJot.OneExpandJotNum,0) AS OneExpandJotNum
FROM dbo.WBS_UnitWork unitWork
LEFT JOIN (SELECT COUNT(*) TotalJot ,pipe.UnitWorkId ,SUM(jot.Size) AS TotalDin
FROM dbo.HJGL_WeldJoint jot
LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId
GROUP BY pipe.UnitWorkId) AS total ON total.UnitWorkId = unitWork.UnitWorkId
LEFT JOIN (SELECT COUNT(*) weldedJot ,pipe.UnitWorkId ,SUM(jot.Size) AS weldedDin
FROM dbo.HJGL_WeldJoint jot
LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
WHERE jot.WeldingDailyId is not NULL
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY pipe.UnitWorkId) AS weldedJot ON weldedJot.UnitWorkId = unitWork.UnitWorkId
LEFT JOIN (SELECT point.UnitWorkId,COUNT(ndeItem.NDEItemID) AS OneCheckJotNum --一次检测焊口数
FROM dbo.HJGL_Batch_NDEItem ndeItem
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE pointItem.PointState=1 AND trustItem.RepairRecordId IS NULL
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY point.UnitWorkId) AS oneCheck ON oneCheck.UnitWorkId = unitWork.UnitWorkId
LEFT JOIN (SELECT point.UnitWorkId,COUNT(ndeItem.NDEItemID) AS OneCheckRepairJotNum --一次检测返修焊口数
FROM dbo.HJGL_Batch_NDEItem ndeItem
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE pointItem.PointDate IS NOT NULL AND pointItem.PointState=1
AND trustItem.RepairRecordId IS NULL AND ndeItem.CheckResult='2'
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY point.UnitWorkId) AS oneCheckRepair ON oneCheckRepair.UnitWorkId = unitWork.UnitWorkId
LEFT JOIN (SELECT point.UnitWorkId,COUNT(ndeItem.NDEItemID) AS CheckRepairJotNum --返修焊口数
FROM dbo.HJGL_Batch_NDEItem ndeItem
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE pointItem.PointDate IS NOT NULL
AND trustItem.RepairRecordId IS NULL AND ndeItem.CheckResult='2'
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY point.UnitWorkId) AS checkRepair ON checkRepair.UnitWorkId = unitWork.UnitWorkId
LEFT JOIN (SELECT point.UnitWorkId,COUNT(pointItem.PointBatchItemId) AS OneExpandJotNum --扩透焊口数
FROM dbo.HJGL_Batch_PointBatchItem pointItem
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE pointItem.PointState=2
AND (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY point.UnitWorkId) AS expandJot ON expandJot.UnitWorkId = unitWork.UnitWorkId
LEFT JOIN (SELECT point.UnitWorkId,COUNT(pointItem.PointBatchItemId) AS NeedCheckJotNum --应检测焊口数
FROM dbo.HJGL_Batch_PointBatchItem pointItem
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
WHERE pointItem.PointState is not null and (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY point.UnitWorkId) AS needCheck ON needCheck.UnitWorkId = unitWork.UnitWorkId
LEFT JOIN (SELECT point.UnitWorkId,COUNT(ndeItem.NDEItemID) AS CheckedJotNum --已检测焊口数
FROM dbo.HJGL_Batch_NDEItem ndeItem
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
WHERE (daily.WeldingDate >= @startTime OR @startTime IS NULL)
AND (daily.WeldingDate <= @endTime OR @endTime IS NULL)
AND (jot.Material1Id=@material OR @material IS NULL)
GROUP BY point.UnitWorkId) AS checked ON checked.UnitWorkId = unitWork.UnitWorkId
WHERE unitWork.ProjectId=@projectId AND unitWork.UnitWorkId=@unitWorkId
GO
alter table PHTGL_ActionPlanFormation add BidProject nvarchar(100)
alter table PHTGL_ActionPlanFormation add BidType nvarchar(100)
alter table PHTGL_ActionPlanFormation add PriceType nvarchar(100)
alter table PHTGL_ActionPlanFormation add BidPrice nvarchar(100)
alter table PHTGL_Contract add IsPassBid nvarchar(50)
alter table PHTGL_Contract add PassBidCode nvarchar(50)
alter table sys_user add DataFrom nvarchar(100)