Project

General

Profile

upd_CM_WORKFLOW_APPROVE_DATA.txt

Luc Tran Van, 03/23/2023 10:56 AM

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

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

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

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

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

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

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

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

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

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

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