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
|