117 lines
6.3 KiB
Transact-SQL
117 lines
6.3 KiB
Transact-SQL
--焊工业绩
|
||
ALTER PROC [dbo].[sp_rpt_WelderPerformance]
|
||
@unitcode NVARCHAR(50) = NULL,
|
||
@UnitWorkId NVARCHAR(50) = NULL,
|
||
@steel NVARCHAR(50) = NULL,
|
||
@wloName NVARCHAR(50) = NULL,
|
||
@date1 DATETIME = NULL,
|
||
@date2 DATETIME = NULL,
|
||
@projectId NVARCHAR(50) = NULL
|
||
|
||
AS
|
||
/*焊工业绩分析*/
|
||
|
||
SELECT
|
||
welder.ProjectId,
|
||
welder.WelderCode,-- 焊工代码
|
||
welder.PersonName,--焊工名称
|
||
(CASE WHEN Persons.Sex ='2' THEN '女' ELSE '男' END) AS Sex, --性别
|
||
-------------本期start
|
||
CAST(ISNULL(nowtotal_din.nowtotal_din,0) AS DECIMAL(19,2)) AS nowtotal_din, --本期总达因值
|
||
ISNULL(nowtotal_din.nowtotal_jot,0) AS nowtotal_jot, --本期总焊口
|
||
ISNULL(nowtotal_Rt.Rt_JotNum,0) AS rt_total_Jot, -- 本期已RT焊口数
|
||
ISNULL(nowtotal_repairjot.nowtotal_repairjot,0) AS nowtotal_repairjot, -- 本期RT返修焊口数
|
||
CONVERT(NVARCHAR(10),(CAST((CASE ISNULL(nowtotal_Rt.Rt_JotNum,0) WHEN 0 THEN 0
|
||
ELSE 100.0 * ISNULL(nowtotal_repairjot.nowtotal_repairjot,0)/(1.0 * nowtotal_Rt.Rt_JotNum) END) AS DECIMAL(8,1))))+'%' AS nowrepairrate, -- 本期RT返修率(焊口)
|
||
|
||
ISNULL(nowtotalfilm.nowtotalfilm,0) AS nowtotalfilm, --本期RT拍片总数
|
||
ISNULL(nowtotalfilm.nopassfilm,0) AS nopassfilm, --本期RT不合格拍片数
|
||
CONVERT(NVARCHAR(10),(CAST((CASE ISNULL(nowtotalfilm.nowtotalfilm,0) WHEN 0 THEN 0
|
||
ELSE 100.0 * ISNULL(nowtotalfilm.nopassfilm,0)/(1.0 * nowtotalfilm.nowtotalfilm) END) AS DECIMAL(8,1))))+'%'
|
||
AS nopassfilmrate , ---本期RT返修率(片数)
|
||
teamGroup.TeamGroupName AS education, --所在班组
|
||
welder.States
|
||
FROM SitePerson_Person AS welder
|
||
LEFT JOIN Person_Persons AS Persons ON welder.PersonId =Persons.PersonId
|
||
left join ProjectData_TeamGroup as teamGroup on teamGroup.TeamGroupId=welder.TeamGroupId
|
||
--本期总达因值 --本期总焊口
|
||
LEFT JOIN (SELECT SUM(jot.Size) AS nowtotal_din
|
||
,COUNT(*) AS nowtotal_jot
|
||
,jot.CoverWelderId
|
||
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
|
||
LEFT JOIN WBS_UnitWork UnitWork ON UnitWork.UnitWorkId = pipe.UnitWorkId
|
||
WHERE jot.WeldingDailyId IS NOT NULL
|
||
AND (daily.WeldingDate >= @date1 OR @date1 IS NULL) AND (daily.WeldingDate <= @date2 OR @date2 IS NULL)
|
||
AND (pipe.UnitWorkId =@UnitWorkId OR @UnitWorkId IS NULL)
|
||
AND (jot.Material1Id=@steel OR @steel IS NULL)
|
||
GROUP BY jot.CoverWelderId) AS nowtotal_din ON nowtotal_din.CoverWelderId = welder.PersonId
|
||
|
||
--本期已Rt焊口数
|
||
LEFT JOIN (SELECT COUNT(pointItem.PointBatchItemId) AS Rt_JotNum --RT焊口数
|
||
,jot.CoverWelderId
|
||
FROM dbo.HJGL_Batch_PointBatchItem pointItem
|
||
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId
|
||
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
|
||
LEFT JOIN Base_DetectionType ndeType ON ndeType.DetectionTypeId = point.DetectionTypeId
|
||
LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId
|
||
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
|
||
WHERE pointItem.PointDate IS NOT NULL
|
||
AND ndeType.DetectionTypeCode='RT' --表示RT类型
|
||
AND (daily.WeldingDate >= @date1 OR @date1 IS NULL)
|
||
AND (daily.WeldingDate <= @date2 OR @date2 IS NULL)
|
||
AND (pipe.UnitWorkId =@UnitWorkId OR @UnitWorkId IS NULL)
|
||
AND (jot.Material1Id=@steel OR @steel IS NULL)
|
||
GROUP BY jot.CoverWelderId) AS nowtotal_Rt ON nowtotal_Rt.CoverWelderId = welder.PersonId
|
||
-- 本期RT返口数
|
||
LEFT JOIN (SELECT COUNT(pointItem.PointBatchItemId) AS nowtotal_repairjot --返修口数
|
||
,jot.CoverWelderId
|
||
FROM dbo.HJGL_Batch_PointBatchItem pointItem
|
||
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId
|
||
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
|
||
LEFT JOIN Base_DetectionType ndeType ON ndeType.DetectionTypeId = point.DetectionTypeId
|
||
LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId
|
||
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
|
||
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.PointBatchItemId = pointItem.PointBatchItemId
|
||
LEFT JOIN dbo.HJGL_Batch_NDEItem ndeItem ON ndeItem.TrustBatchItemId = trustItem.TrustBatchItemId
|
||
WHERE pointItem.PointDate IS NOT NULL
|
||
AND ndeType.DetectionTypeCode='RT' --表示RT类型
|
||
AND ndeItem.CheckResult='2'
|
||
AND (daily.WeldingDate >= @date1 OR @date1 IS NULL)
|
||
AND (daily.WeldingDate <= @date2 OR @date2 IS NULL)
|
||
AND (pipe.UnitWorkId =@UnitWorkId OR @UnitWorkId IS NULL)
|
||
AND (jot.Material1Id=@steel OR @steel IS NULL)
|
||
GROUP BY jot.CoverWelderId) AS nowtotal_repairjot ON nowtotal_repairjot.CoverWelderId = welder.PersonId
|
||
|
||
--本期RT总片数
|
||
LEFT JOIN (SELECT SUM(ndeItem.TotalFilm) AS nowtotalfilm
|
||
,SUM(ndeItem.PassFilm) AS nowpassfilm
|
||
,SUM(ndeItem.TotalFilm-ndeItem.PassFilm) AS nopassfilm,
|
||
jot.CoverWelderId
|
||
FROM dbo.HJGL_Batch_NDEItem ndeItem
|
||
LEFT JOIN dbo.HJGL_Batch_BatchTrustItem trustItem ON trustItem.TrustBatchItemId = ndeItem.TrustBatchItemId
|
||
LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.PointBatchItemId = trustItem.PointBatchItemId
|
||
LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
|
||
LEFT JOIN Base_DetectionType ndeType ON ndeType.DetectionTypeId = point.DetectionTypeId
|
||
LEFT JOIN dbo.HJGL_WeldJoint jot ON jot.WeldJointId = pointItem.WeldJointId
|
||
LEFT JOIN dbo.HJGL_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
|
||
WHERE ndeType.DetectionTypeCode='RT'
|
||
AND ndeItem.CheckResult IS NOT NULL --表示有检测结果
|
||
AND jot.WeldingDailyId IS NOT NULL
|
||
AND (point.UnitWorkId=@UnitWorkId OR @UnitWorkId IS NULL)
|
||
AND (jot.Material1Id=@steel OR @steel IS NULL)
|
||
AND (daily.WeldingDate >= @date1 OR @date1 IS NULL) AND (daily.WeldingDate <= @date2 OR @date2 IS NULL)
|
||
GROUP BY jot.CoverWelderId) AS nowtotalfilm ON nowtotalfilm.CoverWelderId = welder.PersonId
|
||
|
||
WHERE (welder.WelderCode IS NOT NULL AND welder.WelderCode!='') AND
|
||
(welder.ProjectId = @projectId OR @projectId IS NULL)
|
||
AND (welder.UnitId=@unitcode OR @unitcode IS NULL)
|
||
AND (welder.WorkPostId='19B8F2A9-28D3-4F20-867A-1B2237C2E228')
|
||
AND (welder.PersonId=@wloName OR @wloname IS NULL)
|
||
ORDER BY welder.WelderCode
|
||
|
||
GO
|
||
|
||
|