-- dbo.View_HJGL_WeldJoint source

ALTER view dbo.View_HJGL_WeldJoint as
    SELECT jot.[ProjectId]                                                                                                          --项目Id
         , pipe.[UnitWorkId]                                                                                                        --单位工程Id
         , uw.UnitWorkName                                                                                                          --单位工程
         , pipe.[UnitId]                                                                                                            --单位Id
         , unit.UnitName                                                                                                            --单位
         , jot.[PipelineCode]                                                                                                       --管线号
         , pipe.[SingleNumber]                                                                                                      --单线图号
         , pipe.[SingleName]                                                                                                        --图纸名称
         , pipe.[MediumId]                                                                                                          --介质Id
         , medium.MediumCode
         , medium.MediumName                                                                                                        --介质名称
         , pipe.[PipingClassId]                                                                                                     --管道等级Id
         , pipingClass.PipingClassCode                                                                                              --管道等级
         , pipe.[DetectionRateId]                                                                                                   --探伤比例Id
         , dr.DetectionRateCode                                                                                                     --探伤比例（例如5，10，20）
         , pipe.DetectionType                                                                                                       --探伤类型Id(可能多个，中间用|分隔)
         , STUFF((SELECT ',' + DetectionTypeCode
                  FROM Base_DetectionType
                  WHERE CHARINDEX('|' + LTRIM(DetectionTypeId) + '|', '|' + pipe.DetectionType + '|') > 0
                  FOR XML PATH('')), 1, 1, '')                                                        AS DetectionTypeStr           --探伤类型（可能多个，中间用,分隔）
         , pipe.DesignTemperature                                                                                                   --设计温度℃
         , pipe.DesignPress                                                                                                         --设计压力Mpa(g)
         , pipe.TestMedium                                                                                                          --压力试验介质Id
         , tm.MediumName                                                                              AS TestMediumName             --压力试验介质
         , pipe.TestPressure                                                                                                        --压力试验压力Mpa(g)
         , pipe.PressurePipingClassId                                                                                               --压力管道级别Id
         , ppc.PressurePipingClassCode                                                                                              --压力管道级别
         , pipe.PipeLenth                                                                                                           --管线长度(m)
         , pipe.LeakMedium                                                                                                          --泄露性试验介质Id
         , tm2.MediumName                                                                             AS LeakMediumName             --泄露性试验介质
         , pipe.LeakPressure                                                                                                        --泄露性试验压力Mpa(g)
         , pipe.PCMedium                                                                                                            --吹洗要求Id
         , pm.PurgeMethodCode                                                                                                       --吹洗要求
         , pipe.VacuumPressure                                                                                                      --真空试验压力Kpa(a)
         , pipe.MaterialId                                                                                                          --材质Id
         , mat.MaterialCode                                                                           AS PipeMaterialCode           --材质
         , pipe.Remark                                                                                AS PipeRemark                 --备注
         , pipe.FlowingSection                                                                        as FlowingSection             --流水段
         , jot.[WeldJointId]                                                                                                        --焊口Id
         , jot.[WeldJointCode]                                                                                                      --焊口号
         , jot.[Material1Id]                                                                                                        --材质1Id
         , mat1.MaterialCode                                                                          AS Material1Code              --材质1
         , jot.[Material2Id]                                                                                                        --材质2Id
         , mat2.MaterialCode                                                                          AS Material2Code              --材质2
         , jot.[Dia]                                                                                                                --外径
         , jot.DNDia                                                                                                                --DN公称直径
         , jot.[Size]                                                                                                               --达因
         , jot.[Thickness]                                                                                                          --壁厚
         , jot.[Specification]                                                                                                      --规格
         , jot.[WeldTypeId]                                                                                                         --焊缝类型Id
         , WeldType.WeldTypeCode                                                                                                    --焊缝类型
         , jot.[DetectionTypeId]                                                                                                    --检测类型Id
         , ndt.DetectionTypeCode                                                                                                    --检测类型
         , jot.[Components1Id]                                                                                                      --组件1号Id
         , com1.ComponentsCode                                                                        AS ComponentsCode1            --组件1号
         , jot.[Components2Id]                                                                                                      --组件2号Id
         , com2.ComponentsCode                                                                        AS ComponentsCode2            --组件2号
         , jot.DesignIsHotProess                                                                                                    --是否热处理
         , CASE jot.DesignIsHotProess WHEN 1 THEN '是' ELSE '否' END                                  AS DesignIsHotProessStr       --是否热处理
         , jot.[WeldingMethodId]                                                                                                    --焊接方法Id
         , WeldingMethod.WeldingMethodCode                                                                                          --焊接方法
         , jot.WPQId                                                                                                                --WPS的Id
         , wps.WPQCode                                                                                                              --WPS编号
         , jot.MatchableWPQ                                                                                                         --可匹配WPQ
         , jot.[GrooveTypeId]                                                                                                       --坡口类型Id
         , GrooveType.GrooveTypeCode                                                                                                --坡口类型
         , jot.[WeldingRod]                                                                                                         --焊条Id
         , rod.ConsumablesCode                                                                        AS WeldingRodCode             --焊条
         , jot.[WeldingWire]                                                                                                        --焊丝Id
         , wire.ConsumablesCode                                                                       AS WeldingWireCode            --焊丝
         , jot.PreTemperature                                                                                                       --预热温度
         , jot.[JointAttribute]                                                                                                     --焊口属性
         , jot.TwoJointType                                                                                                         --二次焊口新增类型
         , pipe.PipeArea                                                                                                            --工厂预制/现场安装
         , daily.WeldingDate                                                                          as WeldingDateD
         , CONVERT(VARCHAR(100), daily.WeldingDate, 23)                                               AS WeldingDate                --焊接日期
         , BackingWelder.WelderCode                                                                   AS BackingWelderCode          --打底焊工
         , CoverWelder.WelderCode                                                                     AS CoverWelderCode            --盖面焊工
         , CoverWelderTeamGroup.TeamGroupName                                                         as CoverWelderTeamGroupName   ----盖面焊工班组
         , BackingWelderTeamGroup.TeamGroupName                                                       as BackingWelderTeamGroupName --打底焊工班组
         , (CASE (SELECT COUNT(*)
                  FROM [dbo].[HJGL_HotProess_TrustItem] hpti
                  WHERE hpti.WeldJointId = jot.WeldJointId)
                WHEN 0 THEN ''
                ELSE (SELECT TOP 1 ISNULL(ReportNo, '')
                      FROM [dbo].[HJGL_HotProess_Trust] hpt
                               LEFT JOIN [dbo].[HJGL_HotProess_TrustItem] hpti
                                         ON hpti.HotProessTrustId = hpt.HotProessTrustId
                      WHERE hpti.WeldJointId = jot.WeldJointId) END)                                  AS HotProessReportNo          --热处理报告编号
         , (CASE (SELECT TOP 1 IsCompleted
                  FROM [dbo].[HJGL_HotProess_TrustItem] hpti
                  WHERE hpti.WeldJointId = jot.WeldJointId)
                WHEN 1 THEN '完成'
                WHEN 0 THEN '未完成'
                ELSE '未热处理' END)                                                                  AS HotProessResult            --热处理检测结果
         , (CASE (SELECT COUNT(*)
                  FROM [dbo].HJGL_Hard_TrustItem hti
                  WHERE hti.WeldJointId = jot.WeldJointId)
                WHEN 0 THEN ''
                ELSE (SELECT TOP 1 ISNULL(InspectionNum, '')
                      FROM [dbo].HJGL_Hard_Trust ht
                               LEFT JOIN [dbo].HJGL_Hard_TrustItem hti ON hti.HardTrustID = ht.HardTrustID
                      WHERE hti.WeldJointId = jot.WeldJointId) END)                                   AS HardReportNo               --硬度报告编号
         , (CASE (SELECT TOP 1 IsPass
                  FROM [dbo].HJGL_Hard_TrustItem hti
                  WHERE hti.WeldJointId = jot.WeldJointId)
                WHEN 1 THEN '合格'
                WHEN 0 THEN '不合格'
                ELSE '待检测' END)                                                                    AS HardResult                 --硬度检测结果
         , (CASE (SELECT COUNT(*)
                  FROM [dbo].HJGL_Batch_BatchTrustItem bti
                  WHERE bti.WeldJointId = jot.WeldJointId)
                WHEN 0 THEN ''
                ELSE (SELECT TOP 1 TrustBatchCode
                      FROM [dbo].HJGL_Batch_BatchTrust bt
                               LEFT JOIN [dbo].HJGL_Batch_BatchTrustItem bti ON bti.TrustBatchId = bt.TrustBatchId
                      WHERE bti.WeldJointId = jot.WeldJointId) END)                                   AS TrustBatchCode             --委托单编号
         , (CASE (SELECT COUNT(*)
                  FROM [dbo].HJGL_Batch_NDEItem ndei
                           LEFT JOIN [dbo].HJGL_Batch_BatchTrustItem bti ON bti.TrustBatchItemId = ndei.TrustBatchItemId
                  WHERE bti.WeldJointId = jot.WeldJointId)
                WHEN 0 THEN ''
                ELSE (SELECT TOP 1 ISNULL(NDECode, '')
                      FROM [dbo].HJGL_Batch_NDE nde
                               LEFT JOIN [dbo].HJGL_Batch_NDEItem ndei ON ndei.NDEID = nde.NDEID
                               LEFT JOIN [dbo].HJGL_Batch_BatchTrustItem bti
                                         ON bti.TrustBatchItemId = ndei.TrustBatchItemId
                      WHERE bti.WeldJointId = jot.WeldJointId) END)                                   AS NDECode                    --检测单编号
         , (CASE (SELECT TOP 1 CheckResult
                  FROM [dbo].HJGL_Batch_NDEItem ndei
                           LEFT JOIN [dbo].HJGL_Batch_BatchTrustItem bti ON bti.TrustBatchItemId = ndei.TrustBatchItemId
                  WHERE bti.WeldJointId = jot.WeldJointId)
                WHEN '1' THEN '合格'
                WHEN '2' THEN '不合格'
                ELSE '' END)                                                                          AS CheckResult                --检测结果
         , jot.PipelineId
         , jot.[JointArea]
         , jot.[WeldingLocationId]
         , jot.[HeartNo1]
         , jot.[HeartNo2]
         , jot.[IsHotProess]
         , jot.[WeldingDailyId]
         , jot.[BackingWelderId]
         , jot.[CoverWelderId]
         , jot.WeldingMode
         , jot.Remark
         , jot.IsTwoJoint
         , jot.SubmitMan
         , jot.AuditMan
         , jot.AuditMan2
         , jot.AuditDate
         , jot.AuditDate2
         , jot.WeldJointPoint
         , task.TaskCode
         , WeldingLocation.WeldingLocationCode
         , CASE WHEN jot.WeldingDailyId IS NULL THEN '否' ELSE '是' END                               AS IsWelding
         , CASE WHEN jot.WeldingDailyId IS NULL THEN '未完成' ELSE '已完成' END                       AS IsWeldOK
         , CASE WHEN jot.IsHotProess = 1 THEN '是' ELSE '否' END                                      AS IsHotProessStr
         , BackingWelder.PersonName                                                                   AS BackingWelderName
         , CoverWelder.PersonName                                                                     AS CoverWelderName
         , (CASE
                WHEN CoverWelder.WelderCode IS NOT NULL AND BackingWelder.WelderCode IS NOT NULL
                    THEN CoverWelder.WelderCode + '/' + BackingWelder.WelderCode
                ELSE (ISNULL(CoverWelder.WelderCode, '') + ISNULL(BackingWelder.WelderCode, '')) END) AS WelderCode
         ,                                                                                                                          --焊工
        (CASE
             WHEN mat1.MaterialCode IS NOT NULL AND mat2.MaterialCode IS NOT NULL
                 THEN mat1.MaterialCode + '/' + mat2.MaterialCode
             ELSE (ISNULL(mat1.MaterialCode, '') + ISNULL(mat2.MaterialCode, '')) END)                AS MaterialCode
         ,                                                                                                                          --材质

        daily.WeldingDailyCode
         , pointItem.PointBatchId
         , point.PointBatchCode
         , (CASE
                WHEN pointItem.PointState = '1' THEN '已点口'
                WHEN pointItem.PointState = '2' THEN '已扩透'
                ELSE '' END)                                                                          AS IsPoint
    FROM [dbo].[HJGL_WeldJoint] jot
             LEFT JOIN dbo.HJGL_Pipeline pipe ON pipe.PipelineId = jot.PipelineId
             LEFT JOIN dbo.HJGL_WeldTask task ON task.WeldJointId = jot.WeldJointId
             LEFT JOIN dbo.WBS_UnitWork uw ON uw.UnitWorkId = pipe.UnitWorkId
             LEFT JOIN dbo.HJGL_WeldingDaily AS daily ON daily.WeldingDailyId = jot.WeldingDailyId
             LEFT JOIN dbo.Base_Unit unit ON unit.UnitId = daily.UnitId
             LEFT JOIN Base_WeldType AS WeldType ON WeldType.WeldTypeId = jot.WeldTypeId
             LEFT JOIN dbo.Base_DetectionRate dr ON dr.DetectionRateId = pipe.DetectionRateId
             LEFT JOIN Base_TestMedium tm ON tm.TestMediumId = pipe.TestMedium
             LEFT JOIN Base_TestMedium tm2 ON tm2.TestMediumId = pipe.LeakMedium
             LEFT JOIN Base_PurgeMethod pm ON pm.PurgeMethodId = pipe.PCMedium
             LEFT JOIN Base_PressurePipingClass ppc ON ppc.PressurePipingClassId = pipe.PressurePipingClassId
             LEFT JOIN Base_Material AS mat ON mat.MaterialId = pipe.MaterialId
             LEFT JOIN Base_Material AS mat1 ON mat1.MaterialId = jot.Material1Id
             LEFT JOIN Base_Material AS mat2 ON mat2.MaterialId = jot.Material2Id
             LEFT JOIN Base_WeldingMethod AS WeldingMethod ON WeldingMethod.WeldingMethodId = jot.WeldingMethodId
             LEFT JOIN Base_WeldingLocation AS WeldingLocation
                       ON WeldingLocation.WeldingLocationId = jot.WeldingLocationId
             LEFT JOIN Base_Consumables AS wire ON wire.ConsumablesId = jot.WeldingWire
             LEFT JOIN Base_Consumables AS rod ON rod.ConsumablesId = jot.WeldingRod
             LEFT JOIN Base_GrooveType AS GrooveType ON GrooveType.GrooveTypeId = jot.GrooveTypeId
             LEFT JOIN Base_Components AS com1 ON com1.ComponentsId = jot.Components1Id
             LEFT JOIN Base_Components AS com2 ON com2.ComponentsId = jot.Components2Id
             LEFT JOIN SitePerson_Person AS BackingWelder
                       ON BackingWelder.PersonId = jot.BackingWelderId and BackingWelder.ProjectId = jot.ProjectId
             LEFT JOIN SitePerson_Person AS CoverWelder
                       ON CoverWelder.PersonId = jot.CoverWelderId and CoverWelder.ProjectId = jot.ProjectId
             LEFT JOIN Base_PipingClass AS pipingClass ON pipingClass.PipingClassId = pipe.PipingClassId
             LEFT JOIN dbo.Base_Medium medium ON medium.MediumId = pipe.MediumId
             LEFT JOIN dbo.Base_DetectionType ndt ON ndt.DetectionTypeId = jot.DetectionTypeId
             LEFT JOIN dbo.WPQ_WPQList wps ON wps.WPQId = jot.WPQId
             LEFT JOIN dbo.HJGL_Batch_PointBatchItem pointItem ON pointItem.WeldJointId = jot.WeldJointId
             LEFT JOIN dbo.HJGL_Batch_PointBatch point ON point.PointBatchId = pointItem.PointBatchId
             LEFT JOIN dbo.ProjectData_TeamGroup AS CoverWelderTeamGroup
                       on CoverWelderTeamGroup.TeamGroupId = jot.CoverWelderTeamGroupId and
                          CoverWelderTeamGroup.ProjectId = jot.ProjectId
             LEFT JOIN dbo.ProjectData_TeamGroup AS BackingWelderTeamGroup
                       on BackingWelderTeamGroup.TeamGroupId = jot.BackingWelderTeamGroupId and
                          BackingWelderTeamGroup.ProjectId = jot.ProjectId;