--表结构
CREATE TABLE [dbo].[ARP_TXSZ](
[TXSZ_ID] [int] IDENTITY(1,1) NOT NULL,
[TXSZ_LX] [varchar](50) NOT NULL,
[TXSZ_YC_SJ] [datetime] NULL,
[TXSZ_CF_PL] [varchar](50) NULL,
[TXSZ_MTPL_LX] [varchar](50) NULL,
[TXSZ_MTPL_YC_SJ] [varchar](8) NULL,
[TXSZ_MTPL_JG_SL] [int] NULL,
[TXSZ_MTPL_JG_DW] [varchar](50) NULL,
[TXSZ_MZPL_ZJ] [varchar](50) NULL,
[TXSZ_MYPL_JH] [varchar](100) NULL,
[TXSZ_NR] [varchar](500) NULL,
[TXSZ_KSRQ] [varchar](10) NULL,
[TXSZ_ZZRQ] [varchar](10) NULL,
[TXSZ_BZ] [varchar](50) NULL,
[TXSZ_DJRQ] [datetime] NULL,
[TXSZ_DJBH] [varchar](50) NULL,
[TXSZ_JSR] [varchar](50) NULL,
[TXSZ_DJZT] [varchar](10) NULL,
CONSTRAINT [PK_ARP_TXSZ] PRIMARY KEY CLUSTERED
(
[TXSZ_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'重复执行、执行一次' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_LX'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'一次性提醒执行时间' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_YC_SJ'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'重复频率(每天、每周、每月)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_CF_PL'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'每天频率类型(执行一次、执行间隔)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_MTPL_LX'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'每天在几点几分执行一次' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_MTPL_YC_SJ'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'每天每多少执行一次(单位在TXSZ_MTPL_JG_)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_MTPL_JG_SL'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'间隔单位(时、分、秒)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_MTPL_JG_DW'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'每周周几(可以多选)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_MZPL_ZJ'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'每月几号(可以多选)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_MYPL_JH'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'提醒内容' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_NR'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'开始日期' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_KSRQ'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'终止日期' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_ZZRQ'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'备注' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_BZ'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'单据日期' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_DJRQ'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'单据编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_DJBH'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'经手人' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_JSR'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'生效状态' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZ', @level2type=N'COLUMN',@level2name=N'TXSZ_DJZT'
GO
CREATE TABLE [dbo].[ARP_TXSZMX](
[TXSZMX_ID] [int] IDENTITY(1,1) NOT NULL,
[TXSZMX_DJBH] [varchar](50) NULL,
[TXSZMX_LX] [varchar](50) NULL,
[TXSZMX_BH] [varchar](50) NULL,
[TXSZMX_MC] [varchar](50) NULL,
CONSTRAINT [PK_ARP_TXSZRY] PRIMARY KEY CLUSTERED
(
[TXSZMX_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'单据编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZMX', @level2type=N'COLUMN',@level2name=N'TXSZMX_DJBH'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'类型(用户或者角色)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZMX', @level2type=N'COLUMN',@level2name=N'TXSZMX_LX'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZMX', @level2type=N'COLUMN',@level2name=N'TXSZMX_BH'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TXSZMX', @level2type=N'COLUMN',@level2name=N'TXSZMX_MC'
GO
CREATE TABLE [dbo].[ARP_TX](
[TX_ID] [int] IDENTITY(1,1) NOT NULL,
[TX_DJBH] [varchar](50) NULL,
[TX_TXRY] [varchar](50) NULL,
[TX_TXSJ] [datetime] NULL,
[TX_TXNR] [varchar](500) NULL,
[TX_CLZT] [varchar](50) NULL,
CONSTRAINT [PK_ARP_TX] PRIMARY KEY CLUSTERED
(
[TX_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'单据编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TX', @level2type=N'COLUMN',@level2name=N'TX_DJBH'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'提醒人员' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TX', @level2type=N'COLUMN',@level2name=N'TX_TXRY'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'产生时间' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TX', @level2type=N'COLUMN',@level2name=N'TX_TXSJ'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'提醒内容' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TX', @level2type=N'COLUMN',@level2name=N'TX_TXNR'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'处理状态(0:未处理,1:已处理)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ARP_TX', @level2type=N'COLUMN',@level2name=N'TX_CLZT'
GO
create procedure [dbo].[sp_exec_tx](@djbh varchar(50)='')
as
/*
@Copy Right:kuailewangzi1212
创建日期:2013-11-19
作者:kuailewangzi1212
功能描述:根据提醒设置生成提醒内容
算法说明:
1、删除新单据明细。
2、插入原单据明细
3、修改你单据的"年度、类型、起始日期、终止日期"
参数说明:
测试代码:
审核人:
审核日期:
--
修改日期1:
修改人:
修改内容说明:
测试代码:
--1、测试一次提醒select * from arp_txsz
delete from arp_tx
execute sp_exec_tx
select * from arp_tx
--2测试重复提醒
--2.1、测试重复提醒-天、一次性提醒
delete from arp_tx
execute sp_exec_tx 'TXSZ-20131119-003'
select * from arp_tx
--2.2、测试重复提醒-天、间隔提醒
--delete from arp_tx
execute sp_exec_tx 'TXSZ-20131120-001'
select * from arp_tx
--2.3、每周
--delete from arp_tx
execute sp_exec_tx 'TXSZ-20131120-002'
select * from arp_tx
--2.4、每月
--delete from arp_tx
execute sp_exec_tx 'TXSZ-20131120-003'
select * from arp_tx
审核人:
审核日期:
*/
begin
--select * from arp_txsz select * from arp_txszmx select * from arp_tx
declare @dt10 varchar(10),--
@txsz_djbh varchar(50),--单据编号
@txsz_lx varchar(50),--提醒类型(一次提醒或者重复提醒)
@txsz_yc_sj varchar(50),--一次提醒时间
@txsz_cf_pl varchar(50),--重复提醒频率(每天、每周、每月)
@txsz_mtpl_lx varchar(50),--每天频率类型(提醒一次或者间隔提醒)
@txsz_mtpl_yc_sj varchar(50),--每天提醒一次,提醒时间
@txsz_mtpl_jg_sl int,--每天间隔数量
@txsz_mtpl_jg_dw varchar(50),--每天间隔单位
@txsz_mzpl_zj varchar(50),--每周周几
@txsz_mypl_jh varchar(50),--每月几号
@txsz_nr varchar(500)--提醒内容
declare @sl int,--间隔数量
@sc int--是否是首次提醒 0表示首次提醒
select @sl=0,@sc=0
declare @zj varchar(10),--当前是周几
@jh varchar(10),--当前是几号
@jhCnt int,--几号个数
@ts int--当月的天数
select @dt10=CONVERT(char(10),getdate(),120)
declare cur_m cursor for--select * from arp_txsz
select txsz_djbh,txsz_lx,txsz_yc_sj,txsz_cf_pl,txsz_mtpl_lx,txsz_mtpl_yc_sj,txsz_mtpl_jg_sl,txsz_mtpl_jg_dw,txsz_mzpl_zj,txsz_mypl_jh,txsz_nr
from arp_txsz
where txsz_ksrq<=@dt10 and (txsz_zzrq>=@dt10 or isnull(txsz_zzrq,'')='') and txsz_djzt='已审核' and isnull(txsz_xtcf,'定时器')='定时器' and txsz_djbh like @djbh+'%'
open cur_m
fetch cur_m into @txsz_djbh,@txsz_lx,@txsz_yc_sj,@txsz_cf_pl,@txsz_mtpl_lx,@txsz_mtpl_yc_sj,@txsz_mtpl_jg_sl,@txsz_mtpl_jg_dw,@txsz_mzpl_zj,@txsz_mypl_jh,@txsz_nr
while @@FETCH_STATUS=0
begin
if @txsz_lx='一次提醒'
begin
if convert(datetime,@txsz_yc_sj)<=GETDATE()
begin
if exists(select txszmx_id from arp_txszmx where txszmx_djbh=@txsz_djbh)
begin--提醒指定人员或角色
--插入未提醒过的人员
insert into arp_tx(tx_djbh,tx_txry,tx_txsj,tx_txnr,tx_clzt)
select @txsz_djbh,username,GETDATE(),@txsz_nr,'未处理'
from v_txry_list
where djbh=@txsz_djbh and username not in(select tx_txry from arp_tx where tx_djbh=@txsz_djbh)
end
else
begin--提醒所有人
----插入未提醒过的人员
insert into arp_tx(tx_djbh,tx_txry,tx_txsj,tx_txnr,tx_clzt)
select @txsz_djbh,username,GETDATE(),@txsz_nr,'未处理'
from v_txry_all
where username not in(select tx_txry from arp_tx where tx_djbh=@txsz_djbh)
end
end
end
if @txsz_lx='重复提醒'
begin--重复提醒
if @txsz_cf_pl='每周'
begin
--@txsz_mzpl_zj--每周周几
select @zj=convert(varchar(10),case datepart(WEEKDAY,GETDATE()) - 1 when 0 then 7 else datepart(WEEKDAY,GETDATE()) - 1 end)
if(charindex(CONVERT(varchar(1),@zj),@txsz_mzpl_zj)>0)
begin
select @txsz_cf_pl='每天'--转到每天
end
end
if @txsz_cf_pl='每月'
begin
----@txsz_mypl_jh--每月几号
select @jh=datepart(DAY,GETDATE())
select @jhCnt=LEN(REPLACE(@txsz_mypl_jh,',','aa')) - LEN(@txsz_mypl_jh)
select @txsz_mypl_jh=','+@txsz_mypl_jh+','--前后添加","符号
if(charindex(','+CONVERT(varchar(10),@jh)+',',@txsz_mypl_jh)>0)
begin
select @txsz_cf_pl='每天'--转到每天
end
--如果是28号29号30号是当月的最后一天,则判断31号是否符合条件
select @ts=datepart(DAY,dateadd(dd,-1,left(convert(varchar(10),dateadd(mm,1,GETDATE()),120),7)+'-01'))
if @jh=@ts and charindex(',31,',@txsz_mypl_jh)>0
begin
select @txsz_cf_pl='每天'--转到每天
end
end
if @txsz_cf_pl='每天'--重复频率是'每天'
begin
if @txsz_mtpl_lx='提醒一次'
begin
if convert(datetime,@dt10+' '+@txsz_mtpl_yc_sj)<=GETDATE()
begin
if exists(select txszmx_id from arp_txszmx where txszmx_djbh=@txsz_djbh)
begin--提醒指定人员或角色
--插入未提醒过的人员
insert into arp_tx(tx_djbh,tx_txry,tx_txsj,tx_txnr,tx_clzt)
select @txsz_djbh,username,GETDATE(),@txsz_nr,'未处理'
from v_txry_list
where djbh=@txsz_djbh and username not in(select tx_txry from arp_tx where tx_djbh=@txsz_djbh)
end
else
begin--提醒所有人
----插入未提醒过的人员
insert into arp_tx(tx_djbh,tx_txry,tx_txsj,tx_txnr,tx_clzt)
select @txsz_djbh,username,GETDATE(),@txsz_nr,'未处理'
from v_txry_all
where username not in(select tx_txry from arp_tx where tx_djbh=@txsz_djbh)
end
end
end
if @txsz_mtpl_lx='间隔提醒'
begin
select @sc= COUNT(*) from ARP_TX where TX_DJBH=@txsz_djbh
if @txsz_mtpl_jg_dw='小时'
begin
select @sl= DATEDIFF(hour,MAX(TX_TXSJ),GETDATE()) from ARP_TX where TX_DJBH=@txsz_djbh
select @sl=ISNULL(@sl,0)
end
if @txsz_mtpl_jg_dw='分钟'
begin
select @sl= DATEDIFF(MINUTE,MAX(TX_TXSJ),GETDATE()) from ARP_TX where TX_DJBH=@txsz_djbh
select @sl=ISNULL(@sl,0)
end
if @txsz_mtpl_jg_dw='秒钟'
begin
select @sl= DATEDIFF(SECOND,MAX(TX_TXSJ),GETDATE()) from ARP_TX where TX_DJBH=@txsz_djbh
select @sl=ISNULL(@sl,0)
end
if @sl>=@txsz_mtpl_jg_sl or @sc=0--@sc=0表示是当天的首次提醒
begin
if exists(select txszmx_id from arp_txszmx where txszmx_djbh=@txsz_djbh)
begin--提醒指定人员或角色
--插入未提醒过的人员
insert into arp_tx(tx_djbh,tx_txry,tx_txsj,tx_txnr,tx_clzt)
select @txsz_djbh,username,GETDATE(),@txsz_nr,'未处理'
from v_txry_list
where djbh=@txsz_djbh --and username not in(select tx_txry from arp_tx where tx_djbh=@txsz_djbh)
end
else
begin--提醒所有人
----插入未提醒过的人员
insert into arp_tx(tx_djbh,tx_txry,tx_txsj,tx_txnr,tx_clzt)
select @txsz_djbh,username,GETDATE(),@txsz_nr,'未处理'
from v_txry_all
--where username --not in(select tx_txry from arp_tx where tx_djbh=@txsz_djbh)
end
end
end
end
end
fetch cur_m into @txsz_djbh,@txsz_lx,@txsz_yc_sj,@txsz_cf_pl,@txsz_mtpl_lx,@txsz_mtpl_yc_sj,@txsz_mtpl_jg_sl,@txsz_mtpl_jg_dw,@txsz_mzpl_zj,@txsz_mypl_jh,@txsz_nr
end
close cur_m
deallocate cur_m
end