自动发送特定信息到首页公告栏功能的配置
admin
2023-07-30 16:40:11
0次

业务场景:

    用户每次登录系统时,在首页公告栏以及右下角弹出窗口处可以收到系统自动发送的消息,此消息内容可以根据不同业务需要定制发送内容,接收人,接收时间等等,非常灵活有效。


基本原理:

    通过向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

    

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...