業務場景:
用戶每次登錄系統時,在首頁公告欄以及右下角彈出窗口處可以收到系統自動發送的消息,此消息內容可以根據不同業務需要定制發送內容,接收人,接收時間等等,非常靈活有效。
基本原理:
通過向T_TIPS表中寫入特定數據,即可達到發送自定義消息功能。需要說明的是,寫入這個表中的數據并不是立刻發送的,而是根據表中的發送日期字段來判定,當前日期已經超過設定的發送日期才會發送。因此主要用于在未來某個時間點發送預期的消息。
實施部署步驟:
1、創建自定義標量值函數dbo.FVGetIfSendTips(BILL_NO,USER_ID),作用是判斷是否已經發送過消息,輸入參數為單號和用戶,返回值為字符“Y、N”
2、創建發送消息的存儲過程dbo.P_UF_AUTO_TIPS,作用是根據不同業務場景,寫入T_TIPS表,達到定時發送的目的。此存儲過程可以要參數或者不要參數,如果加上BILL_ID參數,則可以指定對某張單發送消息。不要參數,則可以統一發送消息。
3、根據需要,可以在不同的地方調用存儲過程,比如審批流程節點中,在特定節點審批后發送;或者放到數據庫計劃任務中,每天自動發送一批。
代碼范例:
--檢查是否已經發送消息 create FUNCTION [dbo].[FVGetIfSendTips] ( @BILL_NO VARCHAR(50) ,@USER_ID VARCHAR(50) ) RETURNS CHAR(1) AS BEGIN DECLARE @RESULT CHAR(1)='N' IF EXISTS (SELECT TT_TO FROM T_TIPS WHERE TT_BILL_NO=@BILL_NO AND TT_TO=@USER_ID) SET @RESULT='Y' RETURN @RESULT END
--發送消息 create PROC [dbo].[P_UF_AUTO_TIPS] AS BEGIN --場景1:借款到期歸還 INSERT INTO T_TIPS (TT_ID,TT_TO,TT_BILL_NO,TT_SUBJECT,TT_CONTENT,TT_TIPS_DATE,TT_COUNT_SUM,TT_CREATER) SELECT NEWID(),BILL_SUBMIT_USER,BILL_NO,'借款到期 | '+BILL_NO,'借款單摘要:'+BILL_REMARK ,BILLC_EX_DATE01 ,1,'借款到期' FROM TBILL B INNER JOIN TBILL_CONTENT BC ON BC.BILLC_BILL_ID=B.BILL_ID WHERE B.BILL_FLAG IN ('JZ','CLOSE') AND BILLC_LAMOUNT<>0 AND BILLC_EX_DATE01 <>'' AND BILLC_EX_DATE01 IS NOT NULL AND DBO.FVGETIFSENDTIPS(BILL_NO,BILL_SUBMIT_USER)='N' AND BILL_TEMPLATE_TYPE='T-L' AND BILLC_EX_DATE01>GETDATE() ORDER BY BILL_NO,BILLC_SEQ --場景2:申請流程走完提醒報銷 INSERT INTO T_TIPS (TT_ID,TT_TO,TT_BILL_NO,TT_SUBJECT,TT_CONTENT,TT_TIPS_DATE,TT_COUNT_SUM,TT_CREATER) SELECT NEWID(),BILL_SUBMIT_USER,BILL_NO,'申請流程走完 | '+BILL_NO,'申請單摘要:'+BILL_REMARK ,DATEADD("HOUR", 1,DBO.FVGETLASTTIMEBYBILL(B.BILL_ID)) ,1,'及時報銷' FROM TBILL B INNER JOIN TBILL_CONTENT BC ON BC.BILLC_BILL_ID=B.BILL_ID WHERE B.BILL_FLAG IN ('JZ','CLOSE') --AND CAST(DBO.FVGETLASTTIMEBYBILL(B.BILL_ID) AS DATE)=@TODAY AND DBO.FVGETIFSENDTIPS(BILL_NO,BILL_SUBMIT_USER)='N' AND BILL_TEMPLATE_TYPE IN ('T-L','T-A') AND B.BILL_NO NOT IN (SELECT DISTINCT BILL_APPLY FROM TBILL WHERE BILL_APPLY<>'') ORDER BY BILL_NO,BILLC_SEQ --場景3:有溝通信息及時查看 INSERT INTO T_TIPS (TT_ID,TT_TO,TT_BILL_NO,TT_SUBJECT,TT_CONTENT,TT_TIPS_DATE,TT_COUNT_SUM,TT_CREATER) SELECT NEWID(),BILL_SUBMIT_USER,BILL_NO,('有溝通信息 | '+BILL_NO) ,('單據摘要:'+BILL_REMARK+CHAR(10)+'溝通發起人:'+CHAT_NAME+CHAR(10)+'溝通內容:'+CHAT_CONTENT+CHAR(10)) ,DATEADD("DAY",1,CAST(CHAT_DATE AS DATE)) ,1,'單據溝通' FROM TBILL B INNER JOIN TCHAT ON BILL_ID=CHAT_BILLS WHERE B.BILL_FLAG NOT IN ('NO') --AND CAST(CHAT_DATE AS DATE)=@TODAY AND DBO.FVGETIFSENDTIPS(BILL_NO,BILL_SUBMIT_USER)='N' AND B.BILL_NO NOT LIKE '%***%' AND CHAT_NAME<>'系統管理員' ORDER BY BILL_NO END
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。