• Global定时器任务使用。.NET定时执行方法


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading;
    using System.Web;
    using System.Web.Optimization;
    using System.Web.Routing;
    using System.Web.Security;
    using System.Web.SessionState;
    using BLL;
    using DAL;
    using DingTalk.Api.Response;
    using Model;
    using Newtonsoft.Json.Linq;
    using DingTalk.Api;
    using DingTalk.Api.Request;
    //using MyWeb.Common;
    using static DingTalk.Api.Response.OapiDepartmentListResponse;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;
    using static DingTalk.Api.Response.OapiAttendanceListscheduleResponse;
    using Newtonsoft.Json;
    using static DingTalk.Api.Response.OapiProcessinstanceGetResponse;
    using System.Configuration;
    using System.Net;
    using System.IO;
     
    namespace MyProject
    {
        public class Global : HttpApplication
        {
             
     
            void Application_Start(object sender, EventArgs e)
            {
                // 在应用程序启动时运行的代码。更新完,打开http://m.91zn.cn:81/AmebaScore/Test01.aspx激活一下应用程序池
     
                Thread t1 = new Thread(new ThreadStart(time001));
                t1.Start();
     
                Thread t2 = new Thread(new ThreadStart(time002));
                t2.Start();
     
                Thread t3 = new Thread(new ThreadStart(time003));
                t3.Start();
                 
            }
     
            #region 定时器---获取钉钉全部通讯录人员
            private void time001()
            {
                System.Timers.Timer MyTimerGetdingdingUser = new System.Timers.Timer();
                //MyTimerGetdingdingUser.Elapsed += GetMyUser;
                MyTimerGetdingdingUser.Interval = 1000 * 60 * 60;//每天触发一次1000是一秒
                //MyTimerGetdingdingUser.Interval = 1000 * 120;//每天触发一次1000是一秒
                MyTimerGetdingdingUser.Enabled = true;
                MyTimerGetdingdingUser.AutoReset = true;
                MyTimerGetdingdingUser.Start();
                MyTimerGetdingdingUser.Elapsed += new System.Timers.ElapsedEventHandler(GetMyUser);
     
            }
            #endregion
     
            #region 定时器---同步HIS上开检验单数据到LIS瑞美
            private void time002()
            {
     
                System.Timers.Timer MyTimerTongBuHisLis = new System.Timers.Timer();
                MyTimerTongBuHisLis.Elapsed += TongBuHisLis;
                //MyTimerTongBuHisLis.Interval = 1000 * 60 * 60 * 24;//每天触发一次1000是一秒
                MyTimerTongBuHisLis.Interval = 1000 * 10;//每天触发一次1000是一秒
                MyTimerTongBuHisLis.Enabled = true;//false
                MyTimerTongBuHisLis.AutoReset = true;
     
     
            }
            #endregion
     
            #region 定时器---同步钉钉排班
            private void time003()
            {
                 
                System.Timers.Timer MyTimerTongBuPaiBan = new System.Timers.Timer();
                MyTimerTongBuPaiBan.Elapsed += TongBuDDPaiBan;
                MyTimerTongBuPaiBan.Interval = 1000 * 60 * 30;//每小时触发一次1000是一秒
                //MyTimerTongBuPaiBan.Interval = 1000 * 200;//每天触发一次1000是一秒
                MyTimerTongBuPaiBan.Enabled = true;//false
                MyTimerTongBuPaiBan.AutoReset = true;
     
            }
            #endregion
     
            #region 定时器---获取钉钉全部通讯录人员
     
            void GetMyUser(object sender, System.Timers.ElapsedEventArgs e)
            {
                TimerTask.GetMyUser();
            }
            #endregion
             
            #region 同步HIS上开检验单数据到LIS瑞美
            void TongBuHisLis(object sender, System.Timers.ElapsedEventArgs e)
            {
                // AND DATEDIFF(dd,t1.sqsj,GETDATE()) = 0
                StringBuilder sbhcsqh = new StringBuilder();
                string sql = @"
                    SELECT t2.sqh,t2.brly,0 AS ifjz ,t2.brdh,t2.brxm,CASE brxb WHEN '男' THEN '1' ELSE '2' END AS patsex,brsr,ch,sqys,ksdh,zd,'' AS testname,t3.item,0 AS mode
                        FROM Lis_SQH t1
                        INNER JOIN SQLHIS.dbo.v_HIS_Lis_pat t2 ON t1.sqh=t2.sqh
                        INNER JOIN
                        (
                            SELECT sqh
                             ,item = stuff((
                                SELECT xmdh + ',' + XMMC + ',' + convert(varchar(50),dj) + ',' + convert(varchar(50),sl) + '|'
                                FROM SQLHIS.dbo.v_HIS_Lis_pat_mx
                                WHERE sqh = a.sqh
                                FOR XML path('')
                            ), 1, 0, '')
                            FROM SQLHIS.dbo.v_HIS_Lis_pat_mx a  --需要同步的申请单的项目的明细的视图@item ='501404,孕酮P,50,1|501396,雌二醇,50,1|'
                            GROUP BY sqh
                        ) t3 ON t2.sqh=t3.sqh
                        WHERE t1.state=0
         
                        UNION ALL
         
                        SELECT t2.sqh,t2.brly,0 AS ifjz,t2.brdh,t2.brxm,CASE brxb WHEN '男' THEN '1' ELSE '2' END AS patsex,brsr,ch,sqys,ksdh,zd,'' AS testname,t3.item,0  AS mode
                        FROM Lis_SQH t1
                        INNER JOIN SQLHIS_mq.dbo.v_HIS_Lis_pat t2 ON t1.sqh=t2.sqh
                        INNER JOIN
                        (
                            SELECT sqh
                             ,item = stuff((
                                SELECT xmdh + ',' + XMMC + ',' + convert(varchar(50),dj) + ',' + convert(varchar(50),sl) + '|'
                                FROM SQLHIS_mq.dbo.v_HIS_Lis_pat_mx
                                WHERE sqh = a.sqh
                                FOR XML path('')
                            ), 1, 0, '')
                            FROM SQLHIS_mq.dbo.v_HIS_Lis_pat_mx a   --需要同步的申请单的项目的明细的视图@item ='501404,孕酮P,50,1|501396,雌二醇,50,1|'
                            GROUP BY sqh
                        ) t3 ON t2.sqh=t3.sqh
                        WHERE t1.state=0
                    ";
                DataTable table = SqlHelperSQLHIS.ExecuteReader(sql, CommandType.Text);
                if (table == null || table.Rows.Count == 0)
                {
                }
                else
                {
                    //v_HIS_Lis_patModel v_HIS_Lis_patModel = null;
                    int ire = 0;
                    for (int i = 0; i < table.Rows.Count; i++)
                    {
                        sbhcsqh.Append("'" + table.Rows[i]["sqh"] + "',");//把此次同步的申请单号存起来,作为回改state=1用
                        //v_HIS_Lis_patModel.DingdingUserid = table.Rows[i]["dingdingUserid"] == DBNull.Value ? "" : (string)table.Rows[i]["dingdingUserid"];
                        //v_HIS_Lis_patModel = new v_HIS_Lis_patModel();
                        SqlParameter[] parameters = new SqlParameter[]
                        {
                            new SqlParameter("@applyno", SqlDbType.VarChar, 500),
                            new SqlParameter("@pattype", SqlDbType.VarChar, 500),
                            new SqlParameter("@ifjz", SqlDbType.Int, 50),
                            new SqlParameter("@patno", SqlDbType.VarChar, 500),
                            new SqlParameter("@patname", SqlDbType.VarChar, 500),
                            new SqlParameter("@patsex", SqlDbType.VarChar, 500),
                            new SqlParameter("@patbrith", SqlDbType.DateTime, 500),
                            new SqlParameter("@bedno", SqlDbType.VarChar, 500),
                            new SqlParameter("@docna", SqlDbType.VarChar, 500),
                            new SqlParameter("@depno", SqlDbType.VarChar, 500),
                            new SqlParameter("@dianose", SqlDbType.VarChar, 500),
                            new SqlParameter("@testname", SqlDbType.VarChar, 500),
                            new SqlParameter("@item", SqlDbType.NText, 4000),
                            new SqlParameter("@mode", SqlDbType.Int, 20)
                        };
                        parameters[0].Value = table.Rows[i]["sqh"];
                        parameters[1].Value = table.Rows[i]["brly"];
                        parameters[2].Value = Convert.ToInt32(table.Rows[i]["ifjz"]);
                        parameters[3].Value = table.Rows[i]["brdh"];
                        parameters[4].Value = table.Rows[i]["brxm"];
                        parameters[5].Value = table.Rows[i]["patsex"];
                        parameters[6].Value = Convert.ToString(table.Rows[i]["brsr"]);
                        parameters[7].Value = Convert.ToString(table.Rows[i]["ch"]);
                        parameters[8].Value = table.Rows[i]["sqys"];
                        parameters[9].Value = table.Rows[i]["ksdh"];
                        parameters[10].Value = table.Rows[i]["zd"];
                        parameters[11].Value = Convert.ToString(table.Rows[i]["testname"]);
                        parameters[12].Value = table.Rows[i]["item"];
                        parameters[13].Value = Convert.ToInt32(table.Rows[i]["mode"]);
                        ire = SqlHelperLis2002ywq.ExecuteNonQuery("sp_lisapp", CommandType.StoredProcedure, parameters);
     
     
                    }
                    if (ire > 0)
                    {
                        //回改sbhcsqh里的state=1
                        string strhgsql = "UPDATE lis_sqh SET state=1 WHERE sqh IN(" + sbhcsqh.ToString().Substring(0, sbhcsqh.ToString().Length - 1) + ")";
                        SqlHelperSQLHIS.ExecuteNonQuery(strhgsql, CommandType.Text);
                    }
                }
            }
            #endregion
             
            #region 同步钉钉排班
            void TongBuDDPaiBan(object sender, System.Timers.ElapsedEventArgs e)
            {
                TimerTask.TongBuDDPaiBan();
            }
            #endregion
             
            #region 临时类
     
            /// <summary>
            /// 返回给ajax请求的结果类
            /// </summary>
            private class ResultInfo
            {
                /// <summary>
                /// 是否成功, true:成功 false:失败
                /// </summary>
                public bool State { get; set; }
                /// <summary>
                /// 返回的数据集
                /// </summary>
                public object Data { get; set; }
                /// <summary>
                /// 成功信息
                /// </summary>
                public string Message { get; set; }
                /// <summary>
                /// 错误信息
                /// </summary>
                public string ErrorMsg { get; set; }
                /// <summary>
                /// 当前第几页
                /// </summary>
                public int PageIndex { get; set; }
                /// <summary>
                /// 记录总数
                /// </summary>
                public int RecordCount { get; set; }
            }
            private class userid02
            {
                /// <summary>
                /// 员工工号
                /// </summary>
                public string Jobnumber { get; set; }
                /// <summary>
                /// 钉ID
                /// </summary>
                public string Userid { get; set; }
            }
     
     
     
            #endregion
     
            protected void Application_End(object sender, EventArgs e)
            {
     
                SqlHelperSQLHIS.ExecuteNonQuery(" INSERT INTO a_test (cont) VALUES ('程序回收了') ", CommandType.Text);
     
                //下面的代码是关键,可解决IIS应用程序池自动回收的问题 
                Thread.Sleep(1000);
     
                //这里设置你的web地址,可以随便指向本项目你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start 
                string url = "http://XXXXX/Test01.aspx";
                HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
                HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流 
                SqlHelperSQLHIS.ExecuteNonQuery(" INSERT INTO a_test (cont) VALUES ('程序自动重新启动了') ", CommandType.Text);
            }
     
         
     
       
     
     
     
     
     
     
     
     
        }
    }
  • 相关阅读:
    flink checkpoint机制的实现
    openjdk源码分析之AtomicLong
    cpp之宏和函数调用约定
    JNA 相关问题
    spark RDD
    最长连续序列
    买卖股票的最佳时机
    二叉树展开为链表
    不同的二叉搜索树
    柱状图中最大的矩形
  • 原文地址:https://www.cnblogs.com/wybshyy/p/16042542.html
Copyright © 2020-2023  润新知