SGGL_SHJ/DataBase/版本日志/已更新脚本/SGGLDB_V2022-09-22.sql

117 lines
6.3 KiB
Transact-SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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