--焊工业绩 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