Project

General

Profile

CM_WORKFLOW_APPROVE_DATA.txt

Luc Tran Van, 03/21/2023 02:40 PM

 
1
USE [gAMSPro_BVB_v3_FINAL]
2
GO
3
/****** Object:  StoredProcedure [dbo].[CM_WORKFLOW_APPROVE_DATA]    Script Date: 3/21/2023 2:04:05 PM ******/
4
SET ANSI_NULLS ON
5
GO
6
SET QUOTED_IDENTIFIER ON
7
GO
8

    
9
ALTER PROCEDURE [dbo].[CM_WORKFLOW_APPROVE_DATA] 
10
	@p_REQ_ID varchar(20)=null,
11
	@p_DONE BIT = NULL,
12
	@p_IsNote BIT = NULL,
13
	@p_IsFile BIT = NULL
14
AS
15
BEGIN 
16
	DECLARE @temp_NONE TABLE ([NONE] CHAR)
17
	DECLARE @Is_Back_Day bit=0
18
	DECLARE @Back_Day date
19
	IF(EXISTS(SELECT 1 FROM CM_REQUEST_TEMPLATE WHERE REQUEST_TEMPLATE_ID=@p_REQ_ID AND CREATE_DT>REPORT_DT))
20
	BEGIN
21
		SET @Is_Back_Day=1
22
		SET @Back_Day=(SELECT REPORT_DT FROM CM_REQUEST_TEMPLATE WHERE REQUEST_TEMPLATE_ID=@p_REQ_ID AND CREATE_DT>REPORT_DT)
23
	END
24
	--Table 1
25
	SELECT 
26
	A.APPROVE_GROUP_ID,
27
    A.APPROVE_USERNAME,
28
    A.AUTHORITY_NAME,
29
    A.STEP_LEVEL,
30
    A.PROCESS_STATUS,
31
    A.DONE,
32
    A.NOTES,
33
    A.RECORD_STATUS,
34
    A.AUTH_STATUS,
35
    A.MAKER_ID,
36
    A.CREATE_DT,
37
    A.CHECKER_ID,
38
	CASE WHEN @Is_Back_Day=1 THEN FORMAT(@Back_Day, 'dd/MM/yyyy HH:mm:ss')
39
	ELSE FORMAT(A.APPROVE_DT, 'dd/MM/yyyy HH:mm:ss') END AS 'APPROVE_DT',
40
    A.REQ_ID,
41
    A.IS_REJECT,
42
    A.NEED_SEND_EMAIL,
43
    A.[TYPE],
44
    A.APPROVE_ROOT_ID,
45
    A.ORDER_STEP,
46
	CASE
47
		WHEN GR.APPROVE_USERNAME IS NOT NULL THEN 'TUQ.' + UPPER(ER.POS_NAME)
48
		ELSE UPPER( E.POS_NAME )
49
	END AS 'POS_NAME',
50
	A.APPROVE_ROOT_ID,
51
	UA.TLFullName AS 'APPROVE_FULL_NAME'
52
	FROM CM_APPROVE_GROUP A
53
	LEFT JOIN TL_USER UA ON UA.TLNANME = A.APPROVE_USERNAME
54
	LEFT JOIN CM_EMPLOYEE_LOG E ON E.USER_DOMAIN = UA.TLNANME
55
	LEFT JOIN dbo.CM_APPROVE_GROUP GR ON A.APPROVE_ROOT_ID = GR.APPROVE_GROUP_ID
56
	LEFT JOIN CM_EMPLOYEE_LOG ER ON GR.APPROVE_USERNAME = ER.USER_DOMAIN
57
	WHERE 1=1
58
	AND A.REQ_ID = @p_REQ_ID
59
	AND A.DONE = 1
60
	ORDER BY STEP_LEVEL ASC, ORDER_STEP ASC, CREATE_DT ASC
61

    
62
	--Table 2
63
	IF(@p_IsNote = 1)
64
	BEGIN
65
		SELECT 
66
			N'- Yêu cầu đã được ' +
67
			CASE 
68
				WHEN A.[ACTION] = 'AUT' THEN N'uỷ quyền '
69
				WHEN A.[ACTION] = 'ADD' THEN N'tạo '
70
				WHEN A.[ACTION] = 'UPD' THEN N'cập nhật '
71
				WHEN A.[ACTION] = 'APP' THEN N'duyệt '
72
				WHEN A.[ACTION] = 'REJ' THEN N'từ chối '
73
				WHEN A.[ACTION] = 'HAN' THEN N'bàn giao '
74
				WHEN A.[ACTION] = 'SEND' THEN N'gửi đi '
75
				WHEN A.[ACTION] = 'SEND_R' THEN N'gửi lại '
76
				WHEN A.[ACTION] = 'SHARE' THEN N'chia sẻ '
77
				WHEN A.[ACTION] = 'APP_ADMIN' THEN N'duyệt thay '
78
				ELSE ''
79
			END + 
80
			N'bởi ' + UA.TLFullName + 
81
			CASE 
82
				WHEN A.[ACTION] = 'AUT' THEN N' cho ' + UG2.TLFullName
83
				WHEN A.[ACTION] = 'HAN' THEN N' cho ' + UG2.TLFullName
84
				WHEN A.[ACTION] = 'APP_ADMIN' THEN N' (Admin) cho ' + UG2.TLFullName
85
				WHEN A.[ACTION] = 'SHARE' THEN + ISNULL(N' cho ' + 
86
														STUFF((SELECT ', ' + ISNULL(TU.TLFullName, '')
87
																FROM CM_TEMPLATE_LOG_SHARE LG	
88
																LEFT JOIN dbo.TL_USER TU ON TU.TLNANME = LG.SHARER_ID
89
																WHERE LG.TEMPLATE_PROCESS_ID = A.[TEMPLATE_PROCESS_ID]
90
																AND LG.IS_ADD = 1
91
																FOR XML PATH(''), TYPE).value('.[1]', 'NVARCHAR(MAX)'), 1, 2, '') + ' và ', '')
92
												+ ISNULL(N' đã hủy chia sẻ '+
93
														STUFF((SELECT ', ' + ISNULL(TU.TLFullName, '')
94
																FROM CM_TEMPLATE_LOG_SHARE LG	
95
																LEFT JOIN dbo.TL_USER TU ON TU.TLNANME = LG.SHARER_ID
96
																WHERE LG.TEMPLATE_PROCESS_ID = A.[TEMPLATE_PROCESS_ID]
97
																AND LG.IS_ADD = 0
98
																FOR XML PATH(''), TYPE).value('.[1]', 'NVARCHAR(MAX)'), 1, 2, ''), '')	
99
				ELSE ''
100
			END + 
101
			N' vào lúc: ' + FORMAT(A.APPROVE_DT, 'dd/MM/yyyy HH:mm:ss') + '.' +
102
			CASE 
103
				WHEN A.[ACTION] IN ('APP', 'REJ', 'APP_ADMIN') THEN N' Lý do: ' + a.PROCESS_DESC + '.'
104
				ELSE ''
105
			END AS 'LOG'
106
		FROM CM_TEMPLATE_LOG A
107
		LEFT JOIN TL_USER UA ON UA.TLNANME = A.CHECKER_ID
108
		--LEFT JOIN CM_APPROVE_GROUP G ON G.APPROVE_GROUP_ID = A.APPROVE_GROUP_ID
109
		--LEFT JOIN TL_USER UA2 ON UA2.TLNANME = G.AUTHORITY_NAME
110
		LEFT JOIN TL_USER UG2 ON UG2.TLNANME = A.HANDOVER_MAKER_ID
111
		WHERE 1=1
112
		AND A.REQ_ID = @p_REQ_ID
113
		ORDER BY A.APPROVE_DT DESC
114
	END
115
	ELSE
116
	BEGIN
117
		SELECT '' AS 'LOG'
118
		FROM @temp_NONE
119
	END
120

    
121
	--Table 3
122
	SELECT 
123
		N'- ' + UA.TLFullName + FORMAT(A.CREATE_DT, ' (dd/MM/yyyy HH:mm:ss): ') + A.CONTENT + '.' AS 'NOTE'
124
	FROM CM_TEMPLATE_NOTE A
125
	LEFT JOIN TL_USER UA ON A.TEMPLATE_NOTE_USERNAME = UA.TLNANME 
126
	WHERE 1=1
127
	AND A.REQ_ID = @p_REQ_ID
128
	ORDER BY A.CREATE_DT DESC
129

    
130
	--Table 4
131
	IF(@p_IsFile = 1)
132
	BEGIN
133
		DECLARE @FILE_NAME_OLD NVARCHAR(MAX) = NULL,
134
				@FILE_NAME_NEW NVARCHAR(MAX) = NULL,
135
				@PATH_NEW NVARCHAR(MAX) = NULL,
136
				@FILE_TYPE NVARCHAR(MAX) = NULL
137

    
138
		DECLARE @temp_OLD TABLE (
139
			[FILE_NAME] NVARCHAR(MAX),
140
			[INDEX] INT
141
		)
142
		DECLARE @temp_NEW TABLE (
143
			[FILE_NAME] NVARCHAR(MAX),
144
			[INDEX] INT
145
		)	
146
		DECLARE @temp_PATH TABLE (
147
			[PATH_NAME] NVARCHAR(MAX),
148
			[INDEX] INT
149
		)	
150
		DECLARE @temp_TYPE TABLE (
151
			[TYPE_NAME] NVARCHAR(MAX),
152
			[INDEX] INT
153
		)
154

    
155
		SELECT TOP 1
156
			@FILE_NAME_OLD = FILE_NAME_OLD, 
157
			@FILE_NAME_NEW = FILE_NAME_NEW, 
158
			@PATH_NEW = PATH_NEW,
159
			@FILE_TYPE = FILE_TYPE
160
		FROM dbo.CM_ATTACH_FILE
161
		WHERE REF_ID = @p_REQ_ID
162
		ORDER BY ATTACH_DT DESC
163

    
164
		INSERT INTO @temp_OLD ([FILE_NAME], [INDEX])
165
		SELECT RTRIM(LTRIM(value)) AS 'FILE_NAME', ROW_NUMBER()OVER(ORDER BY (SELECT 1)) AS 'INDEX' 
166
		FROM WSISPLIT(@FILE_NAME_OLD, '|')
167

    
168
		INSERT INTO @temp_NEW ([FILE_NAME], [INDEX])
169
		SELECT RTRIM(LTRIM(value)) AS 'FILE_NAME', ROW_NUMBER()OVER(ORDER BY (SELECT 1)) AS 'INDEX' 
170
		FROM WSISPLIT(@FILE_NAME_NEW, '|')
171

    
172
		INSERT INTO @temp_PATH ([PATH_NAME], [INDEX])
173
		SELECT RTRIM(LTRIM(value)) AS 'PATH_NAME', ROW_NUMBER()OVER(ORDER BY (SELECT 1)) AS 'INDEX' 
174
		FROM WSISPLIT(@PATH_NEW, '|')
175

    
176
		INSERT INTO @temp_TYPE ([TYPE_NAME], [INDEX])
177
		SELECT RTRIM(LTRIM(value)) AS 'TYPE_NAME', ROW_NUMBER()OVER(ORDER BY (SELECT 1)) AS 'INDEX' 
178
		FROM WSISPLIT(@FILE_TYPE, '|')
179

    
180
		SELECT 			
181
			CASE
182
				WHEN D.[TYPE_NAME] IN ('.xlsx', '.xls') THEN 'excel.png'
183
				WHEN D.[TYPE_NAME] IN ('.doc', '.docx') THEN 'word.png'
184
				WHEN D.[TYPE_NAME] IN ('.pdf') THEN 'pdf.png'
185
				WHEN D.[TYPE_NAME] IN ('.rar') THEN 'rar.png'
186
				WHEN D.[TYPE_NAME] IN ('.jpeg', '.png') THEN 'image.png'
187
				ELSE 'file.png'
188
			END AS 'ICON',
189
			A.[FILE_NAME] AS 'FILE_NAME' , 
190
			CONCAT('api/', C.[PATH_NAME], '/', B.[FILE_NAME]) AS 'FILE_PATH'
191
		FROM @temp_OLD A
192
		INNER JOIN @temp_NEW B ON B.[INDEX] = A.[INDEX]
193
		INNER JOIN @temp_PATH C ON C.[INDEX] = A.[INDEX]
194
		INNER JOIN @temp_TYPE D ON D.[INDEX] = A.[INDEX]
195
	END
196
	ELSE
197
	BEGIN
198
		SELECT NULL AS 'ICON', NULL AS 'FILE_NAME' , NULL AS 'FILE_PATH'
199
		FROM @temp_NONE
200
	END
201
END