--主表增加出差天数 alter table CQMS_Performance add OutDay int null; GO --主表增加工作负荷 alter table CQMS_Performance add Workloads decimal(18, 2) null; GO --主表增加工作范围 alter table CQMS_Performance add WorkRange nvarchar(200) null; GO --主表增加打分人 alter table CQMS_Performance add ScorMan nvarchar(50) null; GO --添加菜单施工管理绩效数据 insert into sys_menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) values('F2133BD6-C786-407A-AD6F-3EEF613229A8','施工管理绩效数据','ZHGL/Performance/PerformanceAllData.aspx',150, '0','Menu_ZHGL','1','1','1') GO ALTER PROCEDURE [dbo].[Proc_CallWebApi] -- Add the parameters for the stored procedure here @userId NVARCHAR(2000),--需要发送订阅者的userid(逗号分隔) @thing2 nvarchar(2000),--发送的消息内容 @name1 nvarchar(50),--发起人 @date3 datetime,--发送的日期 @projectName nvarchar(200), @ResponseText NVARCHAR(4000) OUTPUT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here DECLARE @data varchar(8000); DECLARE @ApiUrl VARCHAR(200); DECLARE @RequestType VARCHAR(5);--请求类型:POST,GET DECLARE @date2 varchar(100); set @date2 = CONVERT(varchar(100), @date3, 23) --API地址 set @ApiUrl='http://localhost:7040/api/Common/postSubscribeMessage'; --set @ApiUrl='https://zhgd.cwcec.com/sgglapi_wx/api/Common/postSubscribeMessage'; set @RequestType='POST'; --发送数据 set @data='{ "touser":"'+@userId+'", "template_id":"1gT0FfTc2LwnnqUCU8h_nXDyv8VGtne1Iolo47gPA0c", "page":"pages/index/index", "data":{ "thing3":{"value":"您今日的施工绩效尚未填写"}, "thing13":{"value":"系统管理员"}, "time5":{"value":"'+@date2+'"} } }'; --入参 Declare @Object as Int Exec sp_OACreate 'Msxml2.ServerXMLHTTP.3.0', @Object OUT Exec sp_OAMethod @Object, 'open', NULL, @RequestType,@ApiUrl,'false' IF @RequestType='POST' BEGIN Exec sp_OAMethod @Object, 'setRequestHeader', NULL, 'Content-Type','application/json' END Exec sp_OAMethod @Object, 'setRequestHeader', NULL, 'token','C4A62EC0-E5D3-4EBF-A5FA-E56AA89633C0' Exec sp_OAMethod @Object, 'send', NULL, @data --发送数据 Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT --EXEC sp_OAGetErrorInfo @Object --异常输出 --Select @ResponseText as ResponseText --Select * from [dbo].[ParseJSON](@ResponseText) Exec sp_OADestroy @Object END SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO --每天下午4点定时执行,查询所有施工绩效表,当天没有填写数据的人,然后推送 ALTER PROCEDURE [dbo].[Sp_APP_PerformanceByTime] AS BEGIN declare @ResponseText NVARCHAR(4000); DECLARE @PostUserid nvarchar(2000); declare @UserOpenid nvarchar(50); declare @Projectname nvarchar(200); --定义游标查询 DECLARE @Userid nvarchar(50);--用户id DECLARE @ProjectId nvarchar(50);-- DECLARE My_Cursor CURSOR --定义游标 FOR ( select Top 1 Child3.CreateMan,Perfor.ProjectId from CQMS_Performance_Child3 Child3 LEFT JOIN CQMS_Performance as Perfor ON Perfor.PerformanceGid=Child3.PerformanceGid where Child3.WorkPlan='' and CONVERT(varchar(100), Child3.CurrentDate, 23)=CONVERT(varchar(100), GETDATE(), 23) ) OPEN My_Cursor;--打开游标 FETCH NEXT FROM My_Cursor INTO @Userid,@ProjectId;--读取第一行数据 WHILE @@FETCH_STATUS=0 --这里对游标的状态进行判断,如果为0,证明游标中有值 BEGIN declare @dateNow datetime; set @dateNow=getdate(); select @UserOpenid=openid from sys_user where userid=@Userid; select @Projectname=ShortName from Base_Project where projectid=@ProjectId; --执行推送api存储过程 exec Proc_CallWebApi @UserOpenid,'您今日的施工绩效尚未填写','系统管理员',@dateNow,@Projectname,@ResponseText output; FETCH NEXT FROM My_Cursor INTO @Userid,@ProjectId; END CLOSE My_Cursor;--关闭游标 DEALLOCATE My_Cursor;--释放游标 END GO