1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| USE [SPD15_SA_ProjectServer_Custom]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_Test]
@StageNames UNIQUEIDENTIFIER = NULL,
@OwnerNames Varchar(max)
AS
BEGIN
SET NOCOUNT ON
DECLARE @LIST nvarchar(max) = 'Project Server Workflow Tasks'
DECLARE @COL_Name nvarchar(max) ='nvarchar1'
DECLARE @COL_DESCRIPTION nvarchar(max) ='ntext2'
DECLARE @COL_DUE_DATE nvarchar(max)='datetime2'
DECLARE @COL_PRCCOMPLETED nvarchar(max)='float1'
DECLARE @COL_ASSIGNEDTO nvarchar(max)='nvarchar8'
DECLARE @ProjectUID nvarchar(max)='nvarchar7'
Declare @COL_OUTCOME nvarchar(max)='nvarchar6'
;WITH PhaseTable AS ( SELECT
PRJ.ProjectUID, PRJ.ProjectName, PRJ.EnterpriseProjectTypeUID, EPT.ENTERPRISE_PROJECT_TYPE_NAME
, PRJ.ProjectOwnerResourceUID, PRJ.ProjectOwnerName
, PRJ.ProjectStartDate as PlannedStart, PRJ.ProjectFinishDate as PlannedFinish
, PRJ.[ISC Approval]
, PRJ.[DG/DEPT], PRJ.Program, PRJ.[IT Division], PRJ.[Project Short Description], PRJ.ProjectBaseline0Work BudgetWork, PRJ.[Project Status]
, STG.StageUID, STG.StageName, WS.StageOrder, STATUS.StageStateDescription, WS.StageEntryDate, WS.StageCompletionDate
, PHASE.PhaseUID, PHASE.PhaseName,WORKFLOW_ASSOCIATION_NAME AS workflowName,WORKFLOW_ASSOCIATION_UID as WorkflowUID
FROM
[SPD15_SA_ProjectServer_ProjectWebApp].[dbo].MSP_EpmProject_UserView PRJ
JOIN [SPD15_SA_ProjectServer_ProjectWebApp].[pub].[MSP_ENTERPRISE_PROJECT_TYPES] EPT on EPT.ENTERPRISE_PROJECT_TYPE_UID=PRJ.EnterpriseProjectTypeUID
LEFT JOIN [SPD15_SA_ProjectServer_ProjectWebApp].[dbo].[MSP_EpmWorkflowStatusInformation] WS on WS.ProjectUID=PRJ.ProjectUID
LEFT JOIN [SPD15_SA_ProjectServer_ProjectWebApp].[dbo].[MSP_EpmWorkflowStage] STG on STG.StageUID=WS.StageUID
LEFT JOIN [SPD15_SA_ProjectServer_ProjectWebApp].[dbo].[MSP_EpmWorkflowStatusType] STATUS on STATUS.StageStatusID=WS.StageStatus
LEFT JOIN [SPD15_SA_ProjectServer_ProjectWebApp].[dbo].[MSP_EpmWorkflowPhase] PHASE on PHASE.PhaseUID=STG.PhaseUID
WHERE StageEntryDate IS NOT NULL AND StageCompletionDate IS NULL AND WS.StageUID=@StageNames
AND @OwnerNames like '%' + ISNULL( CAST(PRJ.ProjectOwnerResourceUID as nvarchar(max)), 'Not defined') + '%'
)
, ProjectTable AS ( SELECT
D.tp_Created as StartDate
, ISNULL(D.[tp_ColumnSet].value('(//*[local-name() = sql:variable("@COL_OUTCOME")])[1]', 'nvarchar(max)'),'Not Reviewed') as Outcome
,D.[tp_ColumnSet].value('(//*[local-name() = sql:variable("@COL_Name")])[1]', 'nvarchar(max)') as TaskName
, D.[tp_ColumnSet].value('(//*[local-name() = sql:variable("@COL_DUE_DATE")])[1]', 'Date') as DueDate
,D.[tp_ColumnSet].value('(//*[local-name() = sql:variable("@COL_ASSIGNEDTO")])[1]', 'nvarchar(max)') as AssignedTo,
Replace(right(D.[tp_ColumnSet].value('(//*[local-name() = sql:variable("@COL_DESCRIPTION")])[1]', 'nvarchar(max)'),36),' ','') ProjectUID
FROM
[SPD15_PMIS].[dbo].[AllLists] L
JOIN [SPD15_PMIS].[dbo].[AllWebs] W on W.Id=L.tp_WebId
JOIN [SPD15_PMIS].[dbo].[AllUserData] D on D.[tp_ListId]=L.tp_ID
where
L.tp_Title = 'Project Server Workflow Tasks'
AND W.FullUrl like '%projects'
AND [tp_IsCurrentVersion]=1
AND [tp_IsCurrent]=1
AND D.[tp_DeleteTransactionId]=0
)
, AggregateTable AS (
Select T.ProjectUID
,max(createdDate) AS LastTaskDate
FROM(
SELECT D.tp_Created as createdDate
,Replace(right(D.[tp_ColumnSet].value('(//*[local-name() = sql:variable("@COL_DESCRIPTION")])[1]', 'nvarchar(max)'),36),' ','') ProjectUID
FROM
[SPD15_PMIS].[dbo].[AllLists] L
JOIN [SPD15_PMIS].[dbo].[AllWebs] W on W.Id=L.tp_WebId
JOIN [SPD15_PMIS].[dbo].[AllUserData] D on D.[tp_ListId]=L.tp_ID
where
L.tp_Title = 'Project Server Workflow Tasks'
AND W.FullUrl like '%projects'
AND [tp_IsCurrentVersion]=1
AND [tp_IsCurrent]=1
AND D.[tp_DeleteTransactionId]=0
) as T
GROUP BY T.ProjectUID
)
Select Outcome, PT.ProjectUID, StageName, PhaseUID, DueDate, AssignedTo, StageStateDescription,TaskName, StageUID,PHT.ProjectName, PT.StartDate
FROM ProjectTable AS PT
JOIN PhaseTable AS PHT
on PT.ProjectUID = CAST(PHT.ProjectUID as nvarchar(max))
JOIN AggregateTable AS AT
ON at.ProjectUID=PT.ProjectUID
AND AT.LastTaskDate = PT.StartDate
END |
Partager