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
|