Project

General

Profile

proc_CM_WORKFLOW_APPROVE_DATA.txt

Luc Tran Van, 03/24/2023 10:02 AM

 
1

    
2

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

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

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

    
124
	--Table 4
125
	IF(@p_IsFile = 1)
126
	BEGIN
127
		DECLARE @FILE_NAME_OLD NVARCHAR(MAX) = NULL,
128
				@FILE_NAME_NEW NVARCHAR(MAX) = NULL,
129
				@PATH_NEW NVARCHAR(MAX) = NULL,
130
				@FILE_TYPE NVARCHAR(MAX) = NULL
131

    
132
		DECLARE @temp_OLD TABLE (
133
			[FILE_NAME] NVARCHAR(MAX),
134
			[INDEX] INT
135
		)
136
		DECLARE @temp_NEW TABLE (
137
			[FILE_NAME] NVARCHAR(MAX),
138
			[INDEX] INT
139
		)	
140
		DECLARE @temp_PATH TABLE (
141
			[PATH_NAME] NVARCHAR(MAX),
142
			[INDEX] INT
143
		)	
144
		DECLARE @temp_TYPE TABLE (
145
			[TYPE_NAME] NVARCHAR(MAX),
146
			[INDEX] INT
147
		)
148

    
149
		SELECT TOP 1
150
			@FILE_NAME_OLD = FILE_NAME_OLD, 
151
			@FILE_NAME_NEW = FILE_NAME_NEW, 
152
			@PATH_NEW = PATH_NEW,
153
			@FILE_TYPE = FILE_TYPE
154
		FROM dbo.CM_ATTACH_FILE
155
		WHERE REF_ID = @p_REQ_ID
156
		ORDER BY ATTACH_DT DESC
157

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

    
162
		INSERT INTO @temp_NEW ([FILE_NAME], [INDEX])
163
		SELECT RTRIM(LTRIM(value)) AS 'FILE_NAME', ROW_NUMBER()OVER(ORDER BY (SELECT 1)) AS 'INDEX' 
164
		FROM WSISPLIT(@FILE_NAME_NEW, '|')
165

    
166
		INSERT INTO @temp_PATH ([PATH_NAME], [INDEX])
167
		SELECT RTRIM(LTRIM(value)) AS 'PATH_NAME', ROW_NUMBER()OVER(ORDER BY (SELECT 1)) AS 'INDEX' 
168
		FROM WSISPLIT(@PATH_NEW, '|')
169

    
170
		INSERT INTO @temp_TYPE ([TYPE_NAME], [INDEX])
171
		SELECT RTRIM(LTRIM(value)) AS 'TYPE_NAME', ROW_NUMBER()OVER(ORDER BY (SELECT 1)) AS 'INDEX' 
172
		FROM WSISPLIT(@FILE_TYPE, '|')
173

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