1
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER procedure [dbo].[PR_XZFW_ZiDongFaPai] --自动发预警和红黄牌 @alarmyujing int, --预警提前天数 @alarmyellow int, --超期多少天发黄牌 @alarmred int --超期多少天发红牌 as declare @isweekday int --是否是工作日,1-工作日,0-休息日 declare @nextIsweekday int --下一天是否是休息日 1-工作日,0-休息日 declare @nextholidays int --接下来的几天是休息日的 create table #tmp_fapaiList ( YXTYWLSH varchar(100), --原业务流水号 hzbh varchar(100), --回执编号 HJDM varchar(10), --环节代码 SLSJ datetime, --受理时间 YBJSJ datetime, --应办结时间 GDBLSX int, --规定办理时限 GDBLSXDW char(1), --规定办理时限单位 SQDWHSQRXM varchar(100), --申请单位或申请人名称 SLJGZZJGDM varchar(20), --受理机关组织机构代码 SLJGMC varchar(50) --受理机关名称 ) declare @YXTYWLSH varchar(100) declare @hzbh varchar(100) declare @HJDM varchar(10) declare @SLSJ datetime declare @YBJSJ datetime declare @GDBLSX int declare @GDBLSXDW char(1) declare @SQDWHSQRXM varchar(100) declare @SLJGZZJGDM varchar(20) declare @SLJGMC varchar(50) declare @primarykey varchar(20) declare @intbcx int declare lsh_cur cursor for select * from #tmp_fapaiList begin --计算是否为节假日 set @isweekday = 1 set @nextholidays = 0 if ((datepart(dw,getdate())=7) or (datepart(dw,getdate())=1)) --周六、周日 set @isweekday = (select case when count(1)>0 then 1 else 0 end from Sys_Holiday where workflag='W' and datediff(dy,getdate(),today)=0) else set @isweekday = (select case when count(1)>0 then 0 else 1 end from Sys_Holiday where workflag='H' and datediff(dy,getdate(),today)=0) if( @isweekday = 1) --如果是工作日,则发牌,并判断明天是否是休息日,是则发明天的牌,以此类推 begin --发预警 delete from #tmp_fapaiList insert into #tmp_fapaiList(YXTYWLSH, hzbh, SLSJ, YBJSJ, GDBLSX, GDBLSXDW, SQDWHSQRXM, SLJGZZJGDM, SLJGMC) select YXTYWLSH, hzbh, SLSJ, YBJSJ, GDBLSX, GDBLSXDW, SQDWHSQRXM, SLJGZZJGDM, SLJGMC from ZW_ShouLi where not exists (select 1 from ZW_BanJie where ZW_BanJie.YXTYWLSH=ZW_ShouLi.YXTYWLSH) and not exists (select 1 from ZWJC_YuJing where ZWJC_YuJing.YXTYWLSH=ZW_ShouLi.YXTYWLSH and YJLX='1') and convert(varchar(20), dbo.add_workdate(getdate(),@alarmyujing), 120) >= convert(varchar(20), YBJSJ, 120) update #tmp_fapaiList set HJDM = '0005' update #tmp_fapaiList set HJDM = (select max(b.STEPCODE) from zw_workflow_StepStatus a,zw_workflow_stepdesc b where a.YXTYWLSH=#tmp_fapaiList.YXTYWLSH and a.BLSTATUS='0' and a.WORKFLOWID=b.WORKFLOWID and a.STEPDESCID=b.STEPDESCID) where exists (select 1 from zw_workflow_StepStatus a,zw_workflow_stepdesc b where a.YXTYWLSH=#tmp_fapaiList.YXTYWLSH and a.BLSTATUS='0' and a.WORKFLOWID=b.WORKFLOWID and a.STEPDESCID=b.STEPDESCID) open lsh_cur fetch next from lsh_cur into @YXTYWLSH,@hzbh,@HJDM,@SLSJ,@YBJSJ,@GDBLSX,@GDBLSXDW,@SQDWHSQRXM,@SLJGZZJGDM,@SLJGMC while @@fetch_status=0 begin set @intbcx = (select count(1) from xzfw_wh.dbo.xzfw_shouli where shoulioid=@YXTYWLSH and (statusid=10 or bzstatus=1)) if(@intbcx=0) begin exec PR_XZFW_getPrimaryKey @primarykey output insert into ZWJC_YuJing(OID, YXTYWLSH, HZBH, YJHJDM, YJYJ, YJSJ, YJLX, SLSJ, YBSJ, GDBLSX, GDBLSXDW, SQDWHSQRXM, SLJGZZJGDM, SLJGMC, BZ) values (@primarykey, @YXTYWLSH, @hzbh, @HJDM,'即将超时', getdate(), '1', @SLSJ, @YBJSJ, @GDBLSX, @GDBLSXDW, @SQDWHSQRXM, @SLJGZZJGDM, @SLJGMC, '') end fetch next from lsh_cur into @YXTYWLSH,@hzbh,@HJDM,@SLSJ,@YBJSJ,@GDBLSX,@GDBLSXDW,@SQDWHSQRXM,@SLJGZZJGDM,@SLJGMC end close lsh_cur --deallocate lsh_cur --发黄牌 delete from #tmp_fapaiList insert into #tmp_fapaiList(YXTYWLSH, hzbh, SLSJ, YBJSJ, GDBLSX, GDBLSXDW, SQDWHSQRXM, SLJGZZJGDM, SLJGMC) select YXTYWLSH, hzbh, SLSJ, YBJSJ, GDBLSX, GDBLSXDW, SQDWHSQRXM, SLJGZZJGDM, SLJGMC from ZW_ShouLi where not exists (select 1 from ZW_BanJie where ZW_BanJie.YXTYWLSH=ZW_ShouLi.YXTYWLSH) and not exists (select 1 from ZWJC_RedYellow where ZWJC_RedYellow.YXTYWLSH=ZW_ShouLi.YXTYWLSH and FPLX='1' and PLX='1') and getdate()> YBJSJ and getdate()< dbo.add_workdate(YBJSJ,1) update #tmp_fapaiList set HJDM = '0005' update #tmp_fapaiList set HJDM = (select max(b.STEPCODE) from zw_workflow_StepStatus a,zw_workflow_stepdesc b where a.YXTYWLSH=#tmp_fapaiList.YXTYWLSH and a.BLSTATUS='0' and a.WORKFLOWID=b.WORKFLOWID and a.STEPDESCID=b.STEPDESCID) where exists (select 1 from zw_workflow_StepStatus a,zw_workflow_stepdesc b where a.YXTYWLSH=#tmp_fapaiList.YXTYWLSH and a.BLSTATUS='0' and a.WORKFLOWID=b.WORKFLOWID and a.STEPDESCID=b.STEPDESCID) open lsh_cur fetch next from lsh_cur into @YXTYWLSH,@hzbh,@HJDM,@SLSJ,@YBJSJ,@GDBLSX,@GDBLSXDW,@SQDWHSQRXM,@SLJGZZJGDM,@SLJGMC while @@fetch_status=0 begin set @intbcx = (select count(1) from xzfw_wh.dbo.xzfw_shouli where shoulioid=@YXTYWLSH and (statusid=10 or bzstatus=1)) if(@intbcx=0) begin exec PR_XZFW_getPrimaryKey @primarykey output insert into ZWJC_RedYellow(OID, YXTYWLSH, HZBH, FPHJDM, FPSJ,FPLX,PLX, FPYY, SLSJ, YBSJ, GDBLSX, GDBLSXDW, SQDWHSQRXM, SLJGZZJGDM, SLJGMC, BZ) values (@primarykey, @YXTYWLSH, @hzbh, @HJDM, getdate(),'1','1', '超时未办结', @SLSJ, @YBJSJ, @GDBLSX, @GDBLSXDW, @SQDWHSQRXM, @SLJGZZJGDM, @SLJGMC, '') end fetch next from lsh_cur into @YXTYWLSH,@hzbh,@HJDM,@SLSJ,@YBJSJ,@GDBLSX,@GDBLSXDW,@SQDWHSQRXM,@SLJGZZJGDM,@SLJGMC end close lsh_cur --deallocate lsh_cur --发红牌 delete from #tmp_fapaiList insert into #tmp_fapaiList(YXTYWLSH, hzbh, SLSJ, YBJSJ, GDBLSX, GDBLSXDW, SQDWHSQRXM, SLJGZZJGDM, SLJGMC) select YXTYWLSH, hzbh, SLSJ, YBJSJ, GDBLSX, GDBLSXDW, SQDWHSQRXM, SLJGZZJGDM, SLJGMC from ZW_ShouLi where not exists (select 1 from ZW_BanJie where ZW_BanJie.YXTYWLSH=ZW_ShouLi.YXTYWLSH) and not exists (select 1 from ZWJC_RedYellow where ZWJC_RedYellow.YXTYWLSH=ZW_ShouLi.YXTYWLSH and FPLX='1' and PLX='2') and getdate()>= dbo.add_workdate(YBJSJ,1) update #tmp_fapaiList set HJDM = '0005' update #tmp_fapaiList set HJDM = (select max(b.STEPCODE) from zw_workflow_StepStatus a,zw_workflow_stepdesc b where a.YXTYWLSH=#tmp_fapaiList.YXTYWLSH and a.BLSTATUS='0' and a.WORKFLOWID=b.WORKFLOWID and a.STEPDESCID=b.STEPDESCID) where exists (select 1 from zw_workflow_StepStatus a,zw_workflow_stepdesc b where a.YXTYWLSH=#tmp_fapaiList.YXTYWLSH and a.BLSTATUS='0' and a.WORKFLOWID=b.WORKFLOWID and a.STEPDESCID=b.STEPDESCID) open lsh_cur fetch next from lsh_cur into @YXTYWLSH,@hzbh,@HJDM,@SLSJ,@YBJSJ,@GDBLSX,@GDBLSXDW,@SQDWHSQRXM,@SLJGZZJGDM,@SLJGMC while @@fetch_status=0 begin set @intbcx = (select count(1) from xzfw_wh.dbo.xzfw_shouli where shoulioid=@YXTYWLSH and (statusid=10 or bzstatus=1)) if(@intbcx=0) begin exec PR_XZFW_getPrimaryKey @primarykey output insert into ZWJC_RedYellow(OID, YXTYWLSH, HZBH, FPHJDM, FPSJ,FPLX,PLX, FPYY, SLSJ, YBSJ, GDBLSX, GDBLSXDW, SQDWHSQRXM, SLJGZZJGDM, SLJGMC, BZ) values (@primarykey, @YXTYWLSH, @hzbh, @HJDM, getdate(),'1','2', '超时大于一天未办结', @SLSJ, @YBJSJ, @GDBLSX, @GDBLSXDW, @SQDWHSQRXM, @SLJGZZJGDM, @SLJGMC, '') end --delete from ZWJC_RedYellow where YXTYWLSH=@YXTYWLSH and FPLX='1' and PLX='1' fetch next from lsh_cur into @YXTYWLSH,@hzbh,@HJDM,@SLSJ,@YBJSJ,@GDBLSX,@GDBLSXDW,@SQDWHSQRXM,@SLJGZZJGDM,@SLJGMC end close lsh_cur deallocate lsh_cur end end