Project

General

Profile

CM_WORKFLOW_APPROVE_DATA.txt

Luc Tran Van, 03/07/2023 05:23 PM

 
1

    
2
ALTER PROCEDURE [dbo].[CM_WORKFLOW_APPROVE_DATA] 
3
	@p_REQ_ID varchar(20)=null,
4
	@p_DONE BIT = NULL,
5
	@p_IsNote BIT = NULL,
6
	@p_IsFile BIT = NULL
7
AS
8
BEGIN 
9
	DECLARE @temp_NONE TABLE ([NONE] CHAR)
10

    
11
	--Table 1
12
	SELECT 
13
	A.APPROVE_GROUP_ID,
14
    A.APPROVE_USERNAME,
15
    A.AUTHORITY_NAME,
16
    A.STEP_LEVEL,
17
    A.PROCESS_STATUS,
18
    A.DONE,
19
    A.NOTES,
20
    A.RECORD_STATUS,
21
    A.AUTH_STATUS,
22
    A.MAKER_ID,
23
    A.CREATE_DT,
24
    A.CHECKER_ID,
25
	FORMAT(A.APPROVE_DT, 'dd/MM/yyyy hh:mm:ss') AS 'APPROVE_DT',
26
    A.REQ_ID,
27
    A.IS_REJECT,
28
    A.NEED_SEND_EMAIL,
29
    A.[TYPE],
30
    A.APPROVE_ROOT_ID,
31
    A.ORDER_STEP,
32
	CASE
33
		WHEN GR.APPROVE_USERNAME IS NOT NULL THEN 'TUQ.' + ER.POS_NAME
34
		ELSE E.POS_NAME 
35
	END AS 'POS_NAME',
36
	A.APPROVE_ROOT_ID,
37
	UA.TLFullName AS 'APPROVE_FULL_NAME'
38
	FROM CM_APPROVE_GROUP A
39
	LEFT JOIN TL_USER UA ON UA.TLNANME = A.APPROVE_USERNAME
40
	LEFT JOIN CM_EMPLOYEE_LOG E ON E.USER_DOMAIN = UA.TLNANME
41
	LEFT JOIN dbo.CM_APPROVE_GROUP GR ON A.APPROVE_ROOT_ID = GR.APPROVE_GROUP_ID
42
	LEFT JOIN CM_EMPLOYEE_LOG ER ON GR.APPROVE_USERNAME = ER.USER_DOMAIN
43
	WHERE 1=1
44
	AND A.REQ_ID = @p_REQ_ID
45
	AND A.DONE = 1
46
	ORDER BY STEP_LEVEL ASC, ORDER_STEP ASC, CREATE_DT ASC
47

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

    
103
	--Table 3
104
	SELECT 
105
		N'- ' + UA.TLFullName + FORMAT(A.CREATE_DT, ' (dd/MM/yyyy HH:mm:ss): ') + A.CONTENT + '.' AS 'NOTE'
106
	FROM CM_TEMPLATE_NOTE A
107
	LEFT JOIN TL_USER UA ON A.TEMPLATE_NOTE_USERNAME = UA.TLNANME 
108
	WHERE 1=1
109
	AND A.REQ_ID = @p_REQ_ID
110
	ORDER BY A.CREATE_DT DESC
111

    
112
	--Table 4
113
	IF(@p_IsFile = 1)
114
	BEGIN
115
		DECLARE @FILE_NAME_OLD NVARCHAR(MAX) = NULL,
116
				@FILE_NAME_NEW NVARCHAR(MAX) = NULL,
117
				@PATH_NEW NVARCHAR(MAX) = NULL,
118
				@FILE_TYPE NVARCHAR(MAX) = NULL
119

    
120
		DECLARE @temp_OLD TABLE (
121
			[FILE_NAME] NVARCHAR(MAX),
122
			[INDEX] INT
123
		)
124
		DECLARE @temp_NEW TABLE (
125
			[FILE_NAME] NVARCHAR(MAX),
126
			[INDEX] INT
127
		)	
128
		DECLARE @temp_PATH TABLE (
129
			[PATH_NAME] NVARCHAR(MAX),
130
			[INDEX] INT
131
		)	
132
		DECLARE @temp_TYPE TABLE (
133
			[TYPE_NAME] NVARCHAR(MAX),
134
			[INDEX] INT
135
		)
136

    
137
		SELECT TOP 1
138
			@FILE_NAME_OLD = FILE_NAME_OLD, 
139
			@FILE_NAME_NEW = FILE_NAME_NEW, 
140
			@PATH_NEW = PATH_NEW,
141
			@FILE_TYPE = FILE_TYPE
142
		FROM dbo.CM_ATTACH_FILE
143
		WHERE REF_ID = @p_REQ_ID
144
		ORDER BY ATTACH_ID DESC
145

    
146
		INSERT INTO @temp_OLD ([FILE_NAME], [INDEX])
147
		SELECT RTRIM(LTRIM(value)) AS 'FILE_NAME', ROW_NUMBER()OVER(ORDER BY (SELECT 1)) AS 'INDEX' 
148
		FROM WSISPLIT(@FILE_NAME_OLD, '|')
149

    
150
		INSERT INTO @temp_NEW ([FILE_NAME], [INDEX])
151
		SELECT RTRIM(LTRIM(value)) AS 'FILE_NAME', ROW_NUMBER()OVER(ORDER BY (SELECT 1)) AS 'INDEX' 
152
		FROM WSISPLIT(@FILE_NAME_NEW, '|')
153

    
154
		INSERT INTO @temp_PATH ([PATH_NAME], [INDEX])
155
		SELECT RTRIM(LTRIM(value)) AS 'PATH_NAME', ROW_NUMBER()OVER(ORDER BY (SELECT 1)) AS 'INDEX' 
156
		FROM WSISPLIT(@PATH_NEW, '|')
157

    
158
		INSERT INTO @temp_TYPE ([TYPE_NAME], [INDEX])
159
		SELECT RTRIM(LTRIM(value)) AS 'TYPE_NAME', ROW_NUMBER()OVER(ORDER BY (SELECT 1)) AS 'INDEX' 
160
		FROM WSISPLIT(@FILE_TYPE, '|')
161

    
162
		SELECT 			
163
			CASE
164
				WHEN D.[TYPE_NAME] IN ('.xlsx', '.xls') THEN 'excel.png'
165
				WHEN D.[TYPE_NAME] IN ('.doc', '.docx') THEN 'word.png'
166
				WHEN D.[TYPE_NAME] IN ('.pdf') THEN 'pdf.png'
167
				WHEN D.[TYPE_NAME] IN ('.rar') THEN 'rar.png'
168
				WHEN D.[TYPE_NAME] IN ('.jpeg', '.png') THEN 'image.png'
169
				ELSE 'file.png'
170
			END AS 'ICON',
171
			A.[FILE_NAME] AS 'FILE_NAME' , 
172
			CONCAT('api/', C.[PATH_NAME], '/', B.[FILE_NAME]) AS 'FILE_PATH'
173
		FROM @temp_OLD A
174
		INNER JOIN @temp_NEW B ON B.[INDEX] = A.[INDEX]
175
		INNER JOIN @temp_PATH C ON C.[INDEX] = A.[INDEX]
176
		INNER JOIN @temp_TYPE D ON D.[INDEX] = A.[INDEX]
177
	END
178
	ELSE
179
	BEGIN
180
		SELECT NULL AS 'ICON', NULL AS 'FILE_NAME' , NULL AS 'FILE_PATH'
181
		FROM @temp_NONE
182
	END
183
END