| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- <%@ Application Language="C#" %>
- <%@ Import Namespace="System.Data" %>
- <%@ Import Namespace="Curtain.DataAccess" %>
- <%@ Import Namespace="Curtain.Log" %>
- <%@ Import Namespace="DK.XuWei.WebMes" %>
- <%@ Import Namespace="Newtonsoft.Json.Linq" %>
- <script runat="server">
- void Application_Start(object sender, EventArgs e)
- {
- // 在应用程序启动时运行的代码
- string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
- DataAccess.DefaultParameterType = SQLParameterType.CDA;
- DataAccess.DefaultDataBaseType = Curtain.DataAccess.DataBaseType.Oracle;
- DataAccess.DefaultConnectionString = connStr;
- tr_Load();
- }
- void Application_End(object sender, EventArgs e)
- {
- // 在应用程序关闭时运行的代码
- }
- void Application_Error(object sender, EventArgs e)
- {
- // 在出现未处理的错误时运行的代码
- }
- void Session_Start(object sender, EventArgs e)
- {
- // 在新会话启动时运行的代码
- }
- void Session_End(object sender, EventArgs e)
- {
- // 在会话结束时运行的代码。
- // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
- // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
- // 或 SQLServer,则不引发该事件。
- }
- //定时器任务 自动结转数据===============================
- void tr_Load()
- {
- //取刷新时间
- int refreshTime = 60000;
- //设置timer
- System.Timers.Timer tr = new System.Timers.Timer(refreshTime);
- tr.Elapsed += new System.Timers.ElapsedEventHandler(tr_Elapsed);
- tr.Enabled = true;
- tr.AutoReset = true;
- }
- void tr_Elapsed(object sender, EventArgs e)
- {
- using (IDataAccess conn = DataAccess.Create())
- {
- string guid = Guid.NewGuid().ToString().Replace("-", "").ToUpper();
- try
- {
- #region 读取可结转的表
- DataTable dt = conn.ExecuteDatatable(@"
- SELECT
- S.*
- FROM
- JZ_SETTING S
- LEFT JOIN JZ_LOG L ON L.RPTGUID = S.GUID
- AND EXTRACT( YEAR FROM L.EXECUTEDATE ) = EXTRACT( YEAR FROM SYSDATE )
- AND EXTRACT( MONTH FROM L.EXECUTEDATE ) = EXTRACT( MONTH FROM SYSDATE )
- WHERE
- --结转时间在开始和截止范围内
- S.BEGINDATE <= SYSDATE AND S.ENDDATE >= SYSDATE
- --结转时间在当天的
- AND EXTRACT( DAY FROM S.EXECUTEDATE ) = EXTRACT( DAY FROM SYSDATE )
- --结转日志中没结转的,或最后一次结转没成功的
- AND ( L.EXECUTEDATE IS NULL OR (L.EXECUTESTATE = 0 AND L.EXECUTEDATE = (SELECT MAX(ML.EXECUTEDATE) FROM JZ_LOG ML WHERE ML.RPTGUID = S.GUID) ) )
- --没有正在结转的进程
- AND ( L.EXECUTEDATE IS NULL OR L.EXECUTESTATE <> -1)
- ");
- Logger.Debug("轮询结转配置表!");
- #endregion
- if (dt.Rows.Count > 0)
- {
- #region 开始结转
- string message = "开始结转:" + DateTime.Now.ToString();
- conn.ExecuteNonQuery(@"
- INSERT INTO JZ_LOG (
- GUID,
- RPTGUID,
- RPTDATE,
- EXECUTESTATE,
- EXECUTEMESSAGE,
- EXECUTEDATE
- ) VALUES (
- @GUID@,
- @RPTGUID@,
- @RPTDATE@,
- @EXECUTESTATE@,
- @EXECUTEMESSAGE@,
- @EXECUTEDATE@
- )
- ",
- new CDAParameter("GUID",guid),
- new CDAParameter("RPTGUID", dt.Rows[0]["GUID"]),
- new CDAParameter("RPTDATE", DateTime.Now.ToString("yyyyMM")),
- new CDAParameter("EXECUTESTATE", -1),
- new CDAParameter("EXECUTEMESSAGE", ""),
- new CDAParameter("EXECUTEDATE", DateTime.Now.ToString(), Curtain.DataAccess.DataType.DateTime)
- );
- Logger.Debug("表名:" + dt.Rows[0]["RPTNAME"].ToString() + " 开始结转!");
- #endregion
- #region 结转处理
- string jsonStr = JsonClient.Get(dt.Rows[0]["APIURL"].ToString(),3600000);
- JObject json = JObject.Parse(jsonStr);
- int apiState = json["success"].ToString().ToLower() == "true" ? 1 : 0;
- Logger.Debug("表名:" + dt.Rows[0]["RPTNAME"].ToString() + " 结转接口" + dt.Rows[0]["APIURL"].ToString() + "执行完成!");
- Logger.Debug(jsonStr);
- #endregion
- #region 结转完成,更新日志
- message += " 完成结转:" + DateTime.Now.ToString();
- conn.ExecuteNonQuery(@"
- UPDATE JZ_LOG
- SET
- EXECUTESTATE = @EXECUTESTATE@,
- EXECUTEMESSAGE = @EXECUTEMESSAGE@
- WHERE
- GUID = @GUID@
- ",
- new CDAParameter("EXECUTESTATE",apiState),
- new CDAParameter("EXECUTEMESSAGE",message),
- new CDAParameter("GUID",guid)
- );
- Logger.Debug("表名:" + dt.Rows[0]["RPTNAME"].ToString() + " 结转完成!");
- #endregion
- }
- }
- catch (Exception ex)
- {
- #region 结转失败
- conn.ExecuteNonQuery(@"
- UPDATE JZ_LOG
- SET
- EXECUTESTATE = @EXECUTESTATE@,
- EXECUTEMESSAGE = @EXECUTEMESSAGE@
- WHERE
- GUID = @GUID@
- ",
- new CDAParameter("EXECUTESTATE",0),
- new CDAParameter("EXECUTEMESSAGE","结转失败!"),
- new CDAParameter("GUID",guid)
- );
- Logger.Error(ex);
- #endregion
- }
- }
- }
- </script>
|