Project

General

Profile

EMP_SYNC_1.txt

Luc Tran Van, 04/20/2023 04:48 PM

 
1

    
2
ALTER PROCEDURE dbo.CM_EMPLOYEE_SYNC_INS
3
@p_JSON_DATA NVARCHAR(MAX) = NULL
4
AS
5
----Phucvh 20/02/23 Store đồng bộ nhân viên từ DB HR
6
IF (@p_JSON_DATA IS NULL OR @p_JSON_DATA = '')
7
BEGIN  
8
SELECT '-1' as Result, '' ID, N'Data NULL Đồng bộ thất bại' ErrorDesc
9
RETURN '-1'
10
END
11

    
12
--LUU DATA DONG BO
13
UPDATE THREAD_TIME_SEND_LOG SET MESSAGE = MESSAGE + @p_JSON_DATA
14
WHERE TOOL_VALUE = 'SYNC_EMP' AND ID = (SELECT TOP 1 TTSL.ID FROM THREAD_TIME_SEND_LOG TTSL WHERE TTSL.TOOL_VALUE = 'SYNC_EMP' ORDER BY TTSL.ID DESC)
15

    
16
DECLARE @SYNC_DATE VARCHAR(100) = FORMAT(GETDATE(),'dd/MM/yyyy')
17

    
18
DECLARE @Tbl_Data_From_Json TABLE(
19
Id	UNIQUEIDENTIFIER,
20
Loai	INT,
21
MaNS nvarchar(500),
22
HoTen nvarchar(500),
23
MaDVCu nvarchar(500),
24
DVCu nvarchar(500),
25
MaDVMoi nvarchar(500),
26
DVMoi nvarchar(500),
27
MaCDCu nvarchar(500),
28
CDCu nvarchar(500),
29
MaCDMoi nvarchar(500),
30
CDMoi nvarchar(500),
31
LoaiHDLD nvarchar(500),
32
Email nvarchar(500),
33
Ngay VARCHAR(500),
34
So nvarchar(500),
35
NgayHLuc VARCHAR(500),
36
NgayHetHLuc VARCHAR(500),
37
TGTao VARCHAR(500)
38
)
39

    
40
INSERT INTO @Tbl_Data_From_Json
41
SELECT *
42
FROM OPENJSON(@p_JSON_DATA)
43
WITH 
44
(
45
Id	UNIQUEIDENTIFIER '$.Id',
46
Loai	INT '$.Loai',
47
MaNS nvarchar(500) '$.MaNS',
48
HoTen nvarchar(500) '$.HoTen',
49
MaDVCu nvarchar(500) '$.MaDVCu',
50
DVCu nvarchar(500) '$.DVCu',
51
MaDVMoi nvarchar(500) '$.MaDVMoi',
52
DVMoi nvarchar(500) '$.DVMoi',
53
MaCDCu nvarchar(500) '$.MaCDCu',
54
CDCu nvarchar(500) '$.CDCu',
55
MaCDMoi nvarchar(500) '$.MaCDMoi',
56
CDMoi nvarchar(500) '$.CDMoi',
57
LoaiHDLD nvarchar(500) '$.LoaiHDLD',
58
Email nvarchar(500) '$.Email',
59
Ngay VARCHAR(500) '$.Ngay',
60
So nvarchar(500) '$.So',
61
NgayHLuc VARCHAR(500) '$.NgayHLuc',
62
NgayHetHLuc VARCHAR(500) '$.NgayHetHLuc',
63
TGTao VARCHAR(500) '$.TGTao'
64
)
65

    
66
DECLARE 
67
@Id	UNIQUEIDENTIFIER, @Loai	INT, @MaNS nvarchar(500), @HoTen nvarchar(500), 
68
@MaDVCu nvarchar(500), @DVCu nvarchar(500), @MaDVMoi nvarchar(500), @DVMoi nvarchar(500), 
69
@MaCDCu nvarchar(500), @CDCu nvarchar(500), @MaCDMoi nvarchar(500), @CDMoi nvarchar(500), 
70
@LoaiHDLD nvarchar(500), @Email nvarchar(500), @Ngay VARCHAR(500), @So nvarchar(500), 
71
@NgayHLuc VARCHAR(500), @NgayHetHLuc VARCHAR(500), @TGTao VARCHAR(500)
72
                   
73

    
74
BEGIN TRANSACTION
75
    DECLARE cur CURSOR FAST_FORWARD READ_ONLY LOCAL FOR
76
    SELECT * FROM @Tbl_Data_From_Json
77
   
78
   OPEN cur
79
   
80
   FETCH NEXT FROM cur INTO @Id,@Loai,@MaNS,@HoTen,@MaDVCu,@DVCu,@MaDVMoi,@DVMoi,@MaCDCu,@CDCu,@MaCDMoi,@CDMoi,@LoaiHDLD,@Email,@Ngay,@So,@NgayHLuc,@NgayHetHLuc,@TGTao
81
   
82
   WHILE @@FETCH_STATUS = 0 BEGIN
83
      
84
      IF(NOT EXISTS(SELECT 1 FROM CM_EMPLOYEE_SYNC ces WHERE ces.Id = @Id))
85
      BEGIN
86
           	INSERT INTO CM_EMPLOYEE_SYNC (Id, Loai, MaNS, HoTen, MaDVCu, DVCu, MaDVMoi, DVMoi, MaCDCu, CDCu, MaCDMoi, CDMoi, LoaiHDLD, Email, Ngay, So, NgayHLuc, NgayHetHLuc, TGTao, SYNC_DATE)
87
            VALUES(@Id,@Loai,@MaNS,@HoTen,@MaDVCu,@DVCu,@MaDVMoi,@DVMoi,@MaCDCu,@CDCu,@MaCDMoi,@CDMoi,@LoaiHDLD,@Email,CONVERT(DATETIME,@Ngay),@So,CONVERT(DATETIME,@NgayHLuc),CONVERT(DATETIME,@NgayHetHLuc),CONVERT(DATETIME,@TGTao), @SYNC_DATE)
88
      END      
89
     
90
     	FETCH NEXT FROM cur INTO @Id,@Loai,@MaNS,@HoTen,@MaDVCu,@DVCu,@MaDVMoi,@DVMoi,@MaCDCu,@CDCu,@MaCDMoi,@CDMoi,@LoaiHDLD,@Email,@Ngay,@So,@NgayHLuc,@NgayHetHLuc,@TGTao
91
   
92
   END
93
   
94
   CLOSE cur
95
   DEALLOCATE cur
96

    
97

    
98
		IF @@Error <> 0 GOTO ABORT
99
COMMIT TRANSACTION
100
SELECT '0' as Result, ''  ID, N'Đồng bộ chi phí sửa chữa tài sản thành công' ErrorDesc
101
RETURN '0'
102
ABORT:
103
BEGIN
104
    CLOSE cur
105
    DEALLOCATE cur
106
		ROLLBACK TRANSACTION
107
		SELECT '-1' as Result, '' ID, N'Đồng bộ chi phí sửa chữa tài sản thất bại' ErrorDesc
108
		RETURN '-1'
109
End
110

    
111

    
112
GO
113

    
114
ALTER PROC dbo.THREAD_GET_CONTENT_SEND_MAIL
115
@p_TIME_RUN_TOOL VARCHAR(50) = NULL,
116
@p_TIME_SEND_ID INT = NULL, 
117
@p_TIME_VALUE VARCHAR(100) = NULL,
118
@p_LOCATION VARCHAR(20) = NULL
119
AS
120
BEGIN 
121

    
122
  IF(@p_TIME_VALUE IS NULL OR @p_TIME_VALUE = '' OR @p_TIME_SEND_ID IS NULL OR @p_TIME_SEND_ID = '')
123
  RETURN '-1'
124

    
125
  DECLARE   @DISTANCE_TIME INT = NULL,
126
            @DISTANCE_TYPE VARCHAR(20) = NULL,
127
            @TOOL_NAME NVARCHAR(1000) = NULL,
128
            @TOOL_VALUE VARCHAR(100) = NULL,
129
            @EXEC_DT DATETIME = NULL,            
130
            @MESSAGE NVARCHAR(1000) = NULL,
131
            @EXEC_TYPE VARCHAR(20) = NULL
132

    
133
  IF(@p_LOCATION = 'EXEC')
134
  BEGIN
135
      SET @EXEC_TYPE = 'EXECUTE'
136
  END
137
  ELSE
138
  BEGIN
139
      SET @EXEC_TYPE = 'AUTO'
140
  END
141

    
142
  SELECT  @DISTANCE_TIME = TIME_SEND        
143
        ,@DISTANCE_TYPE = TIME_SEND_TYPE
144
        ,@TOOL_NAME = TIME_CONTENT
145
        ,@TOOL_VALUE = TIME_VALUE,
146
        @EXEC_DT = SENT_DATE                
147
  FROM THREAD_TIME_SEND 
148
  WHERE TIME_VALUE = @p_TIME_VALUE
149

    
150
	DECLARE	@TEMP TABLE
151
			(
152
				[ID]				VARCHAR(20),
153
				[EMAIL]				VARCHAR(50),
154
				[NF_MESSAGE_TYPE]	VARCHAR(500),
155
				[ROLE_TIFI_TYPE]	VARCHAR(500),
156
        IS_SENDMAIL BIT,
157
        IS_RUN_TOOL BIT,
158
        TOOL_NAME NVARCHAR(100),
159
        QUERY_SELECT NVARCHAR(MAX)
160
        
161
			)
162
	DECLARE	@TIME_SEND			INT = NULL,
163
			@TIME_SEND_TYPE		VARCHAR(20) = NULL,
164
			@TIME_VALUE			VARCHAR(25) = NULL,
165
			@NF_MESSAGE_TYPE	VARCHAR(50) = NULL,
166
			@ROLE_TIFI_TYPE		VARCHAR(50) = NULL,
167
      @SEND_DATE DATETIME = NULL,
168
      @QUERY_SELECT NVARCHAR(MAX) = NULL,
169

    
170
      @EXEC_DATE VARCHAR(50) = NULL
171

    
172
	SELECT @TIME_SEND = A.TIME_SEND,@TIME_SEND_TYPE = A.TIME_SEND_TYPE,
173
  @TIME_VALUE = A.TIME_VALUE,@NF_MESSAGE_TYPE = A.NF_MESSAGE_TYPE, 
174
  @ROLE_TIFI_TYPE = A.ROLE_TIFI_TYPE,@SEND_DATE = A.SENT_DATE
175
	FROM THREAD_TIME_SEND A
176
	WHERE (A.[STATUS] = 1 OR @p_LOCATION = 'EXEC') AND A.TIME_VALUE = @p_TIME_VALUE AND A.TIME_SEND_ID = @p_TIME_SEND_ID
177
	 
178
  
179
  --FIX THREAD NẾU START VÀ STOP TOOL NHIỀU LẦN THÌ BỊ DUP EXEC
180
  IF(@p_LOCATION <> 'EXEC' OR @p_LOCATION IS NULL OR @p_LOCATION = '')
181
  BEGIN
182
      IF(DATEDIFF(DAYOFYEAR,CONVERT(DATETIME,@p_TIME_RUN_TOOL,103),@SEND_DATE) <> 0)
183
      BEGIN  
184
      	  SET @MESSAGE = N'Ngày không hợp lệ'
185
          GOTO ABORT
186
      END
187
      
188
  END
189

    
190
  BEGIN --TRANSACTION T1
191

    
192
      IF(@p_TIME_VALUE = 'SYNC_EMP')
193
      BEGIN --TOOL ĐỒNG BỘ NGƯỜI DÙNG
194
          SET @QUERY_SELECT = N'SELECT Id,Loai,MaNS,HoTen,MaDVCu,DVCu,MaDVMoi,DVMoi,MaCDCu,CDCu,MaCDMoi,CDMoi,LoaiHDLD,Email,Ngay,So,NgayHLuc,NgayHetHLuc,TGTao FROM CM_EMPLOYEE_SYNC WHERE (EXISTS(SELECT 1 FROM SYS_PARAMETERS WHERE ParaKey = ''GETALL_RECORD_EMPSYNC'' AND ParaValue = ''1'') OR (DATEDIFF(DAYOFYEAR,CONVERT(DATETIME,''' + (ISNULL((SELECT ca.ParaValue FROM SYS_PARAMETERS ca WHERE ca.ParaKey = 'LAST_SYNC_DATE'),GETDATE())) + ''',103),TGTao) >= 0))  ORDER BY TGTao'
195
    
196
          INSERT INTO @TEMP (IS_RUN_TOOL, TOOL_NAME, QUERY_SELECT)
197
          VALUES (1,'CM_EMPLOYEE_SYNC',@QUERY_SELECT);
198
    
199
          IF(@p_LOCATION IS NULL)
200
          BEGIN
201
                IF @@Error <> 0 GOTO ABORT
202

    
203
                UPDATE SYS_PARAMETERS SET ParaValue = FORMAT(CONVERT(DATE,GETDATE(),103),'dd/MM/yyyy') WHERE ParaKey = 'LAST_SYNC_DATE' 
204
          END
205
    
206
      END  
207
      ELSE IF(@p_TIME_VALUE = 'CHECK_WARRANTY_DT')
208
      BEGIN --TOOL GỬI MAIL THÔNG BÁO TÀI SẢN SẮP HẾT HẠN BẢO HÀNH
209
          INSERT INTO @TEMP (IS_SENDMAIL, TOOL_NAME,NF_MESSAGE_TYPE,ROLE_TIFI_TYPE)
210
          VALUES (1,N'GỬI MAIL',@NF_MESSAGE_TYPE,@ROLE_TIFI_TYPE);
211
      END
212
      ELSE IF(@p_TIME_VALUE = 'CHECK_TRANS_NOT_APPROVE')
213
      BEGIN --GỬI MAIL NHỮNG GIAO DỊCH CHƯA ĐƯỢC PHÊ DUYỆT
214
          INSERT INTO @TEMP (IS_SENDMAIL, TOOL_NAME,NF_MESSAGE_TYPE,ROLE_TIFI_TYPE)
215
          
216
          SELECT 1,N'CHECK GIAO DỊCH CHƯA DUYỆT',@NF_MESSAGE_TYPE + '|' + PP.ID, @ROLE_TIFI_TYPE + '|' + PP.ID
217
          FROM (
218
              SELECT A.USER_MASTER_ID + '|ASS_USE|' + CASE WHEN A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U' THEN 'KSV'	ELSE 'GDV' END AS ID
219
              FROM ASS_USE_MULTI_MASTER A
220
              LEFT JOIN ASS_USE_CONFIRM_MASTER B ON A.USER_MASTER_ID = B.USER_MASTER_ID
221
              WHERE (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'E' AND B.USER_CONFIRM_MASTER_ID IS NOT NULL) 
222
                    OR (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U')
223
              UNION
224
              SELECT A.TRANS_MULTI_MASTER_ID + '|ASS_TRANSFER|' + CASE WHEN A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U' THEN 'KSV'	ELSE 'GDV' END AS ID
225
              FROM ASS_TRANSFER_MULTI_MASTER A                  
226
              WHERE (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'E')
227
                    OR (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U')
228
              UNION
229
              SELECT A.COL_MULTI_MASTER_ID + '|ASS_COLLECT|' + CASE WHEN A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U' THEN 'KSV'	ELSE 'GDV' END AS ID
230
              FROM ASS_COLLECT_MULTI_MASTER A
231
              LEFT JOIN ASS_COLLECT_CONFIRM_MASTER B ON A.COL_MULTI_MASTER_ID = B.COL_MULTI_MASTER_ID
232
              WHERE (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'E' AND B.COL_MULTI_MASTER_CONFIRM_ID IS NOT NULL)
233
                    OR (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U')
234
              UNION
235
              SELECT A.LIQ_ID + '|ASS_LIQ|' + CASE WHEN A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U' THEN 'KSV'	ELSE 'GDV' END AS ID
236
              FROM ASS_LIQUIDATION A
237
              WHERE (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'E')
238
                    OR (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U')
239
              UNION
240
              SELECT A.ADDNEW_ID + '|ASS_ADDNEW|' + CASE WHEN A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U' THEN 'KSV'	ELSE 'GDV' END AS ID
241
              FROM ASS_ADDNEW A
242
              WHERE (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'E')
243
                    OR (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U'))PP              
244
    
245
      END
246
      ELSE IF(@p_TIME_VALUE = 'KH')
247
      BEGIN --TOOL CHẠY KHẤU HAO             
248
          SET @EXEC_DATE = CONVERT(VARCHAR(50),@SEND_DATE)
249
          IF((SELECT (((DATEPART(DW, @SEND_DATE) - 1 ) + @@DATEFIRST ) % 7)) NOT IN ('0','6'))
250
          BEGIN -- NẾU KHÁC NGÀY T7 VÀ CN THÌ CHẠY
251
              EXEC ASS_AMORT_StartDO @p_EXECUTE_DATE =  @EXEC_DATE
252
                                    ,@p_MAKER_ID = 'bichnn'
253
                                    ,@p_CHECKER_ID = 'bichnn'
254
                                    ,@p_ASSET_TYPE = NULL
255
                                    ,@p_BRANCH_ID_LST = NULL   
256
                                    ,@p_EXEC_TYPE = @EXEC_TYPE
257
         END                                     
258
      END
259

    
260
      IF @@Error <> 0 GOTO ABORT
261
    
262
      IF(@p_LOCATION IS NULL OR @p_LOCATION = '')
263
      BEGIN -- NẾU CHẠY TOOL THÌ UPDATE NGÀY, EXEC TRỰC TIẾP THÌ KHÔNG UPDATE NGÀY
264
          IF(@TIME_SEND_TYPE = 'NGAY')
265
    			BEGIN
266
                UPDATE THREAD_TIME_SEND 
267
                SET SENT_DATE = DATEADD(DAY,@TIME_SEND,@SEND_DATE)
268
                WHERE TIME_SEND_ID = @p_TIME_SEND_ID AND TIME_VALUE = @p_TIME_VALUE
269
          END
270
    			ELSE IF(@TIME_SEND_TYPE = 'THANG')
271
    			BEGIN
272
                UPDATE THREAD_TIME_SEND 
273
                SET SENT_DATE = DATEADD(MONTH,@TIME_SEND,@SEND_DATE)
274
                WHERE TIME_SEND_ID = @p_TIME_SEND_ID AND TIME_VALUE = @p_TIME_VALUE
275
    			END
276
      END
277

    
278
      
279
  
280
--  COMMIT TRANSACTION T1
281
  END
282
  SELECT * FROM @TEMP  
283
  
284
  IF(@p_TIME_VALUE <> 'KH')
285
  BEGIN
286
      INSERT INTO THREAD_TIME_SEND_LOG (DISTANCE_TIME, DISTANCE_TYPE, TOOL_NAME, TOOL_VALUE, EXEC_DT, EXEC_TYPE, MESSAGE, CREATE_DT)
287
      VALUES (@DISTANCE_TIME,@DISTANCE_TYPE, @TOOL_NAME, @TOOL_VALUE, @EXEC_DT,@EXEC_TYPE, N'Thực thi thành công', GETDATE()); 
288
  END
289

    
290
  RETURN '0'
291
  ABORT:
292
  BEGIN
293
  		--ROLLBACK TRANSACTION T1
294
      --GHI LOG
295
        IF(@p_TIME_VALUE <> 'KH')
296
        BEGIN
297
            INSERT INTO THREAD_TIME_SEND_LOG (DISTANCE_TIME, DISTANCE_TYPE, TOOL_NAME, TOOL_VALUE, EXEC_DT, EXEC_TYPE, MESSAGE, CREATE_DT)
298
            VALUES (@DISTANCE_TIME,@DISTANCE_TYPE, @TOOL_NAME, @TOOL_VALUE, @EXEC_DT,@EXEC_TYPE, ISNULL(@MESSAGE,ERROR_MESSAGE()), GETDATE()); 
299
        END
300
      RETURN '-1'
301
  End
302

    
303
	
304
END
305