初始化
This commit is contained in:
320
Face.Web/Global.asax.cs
Normal file
320
Face.Web/Global.asax.cs
Normal file
@@ -0,0 +1,320 @@
|
||||
using Face.Domain.Entities;
|
||||
using Face.Services.Manager;
|
||||
using Face.SystemTask;
|
||||
using Face.Web.Areas.App.Controllers;
|
||||
using Face.Web.Areas.App.Models;
|
||||
using FluentScheduler;
|
||||
using MySql.Data.MySqlClient;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using System.Web.Http;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Optimization;
|
||||
using System.Web.Routing;
|
||||
using TencentCloud.Common.Profile;
|
||||
using TencentCloud.Common;
|
||||
using WebServer;
|
||||
using static Face.Web.Areas.App.Models.Roominfo;
|
||||
using System.Text;
|
||||
using WebSocketToolsConsole;
|
||||
|
||||
namespace Face.Web
|
||||
{
|
||||
public class MvcApplication : System.Web.HttpApplication
|
||||
{
|
||||
protected void Application_Start()
|
||||
{
|
||||
MyRegistry.GoWork();
|
||||
AreaRegistration.RegisterAllAreas();
|
||||
GlobalConfiguration.Configure(WebApiConfig.Register);
|
||||
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
|
||||
RouteConfig.RegisterRoutes(RouteTable.Routes);
|
||||
BundleConfig.RegisterBundles(BundleTable.Bundles);
|
||||
//定时器
|
||||
System.Timers.Timer aTimer = new System.Timers.Timer();
|
||||
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(aTimer_Elapsed);
|
||||
//设置引发时间的时间间隔 此处设置为1秒
|
||||
aTimer.Interval = 1000 * 10;//3600秒也就是1小时,每1小时刷新一次,就是每1小时执行方法一次
|
||||
aTimer.Enabled = true;
|
||||
|
||||
//自定义定时作业计划
|
||||
JobManager.Initialize(new TimingPlanRegistry());
|
||||
//timingOut();
|
||||
//注册UDP监视
|
||||
//Services.UDPHelp.StartReceive();
|
||||
//(new System.Threading.Thread(new System.Threading.ThreadStart(Services.UDPHelp.CreatSocket))).Start(); //开辟一个新线程
|
||||
//(new System.Threading.Thread(new System.Threading.ThreadStart(Services.UDPHelp_New.CreatSocket))).Start(); //开辟一个新线程
|
||||
//Services.UDP.UDPHelp.RecevieAndSend();
|
||||
//Thread t = new Thread(timingOut);
|
||||
//t.Start();
|
||||
//Thread S = new Thread(UdpCommunication.UdpStateinfo);
|
||||
//S.Start();
|
||||
//timingOut();
|
||||
}
|
||||
|
||||
protected void Session_OnStart()
|
||||
{
|
||||
Session.Timeout = 60 * 4;
|
||||
}
|
||||
|
||||
|
||||
public void timingOut() //预约退房
|
||||
{
|
||||
List<Result> relist = null;
|
||||
Result result = new Result();
|
||||
try
|
||||
{
|
||||
using (var db = SqlSugarBase.GesmartDb())
|
||||
{
|
||||
var list = db.Queryable<CheckinTest>().Where(s => s.testState != 2 && s.testState != 3).ToList();
|
||||
foreach (var item in list)
|
||||
{
|
||||
var timeOut = DateTime.Parse(item.predictCheckIn.ToString()).AddMinutes(Convert.ToDouble(item.checkInduration.ToString()));
|
||||
|
||||
var hotellist = SqlSugarBase.authoriydb.Queryable<Hotels>().First(s => s.Id == item.hotelid);
|
||||
GetRoomInterface.test te = new GetRoomInterface.test
|
||||
{
|
||||
code = hotellist.Code.ToString(),
|
||||
creatDate = hotellist.CreateTime.ToString("yyyy-MM-dd")
|
||||
};
|
||||
var geiRoomShow = GetRoomInterface.Roomport(te);
|
||||
if (geiRoomShow.IsSuccess == true)
|
||||
{
|
||||
relist = geiRoomShow.Result;
|
||||
result = relist.FirstOrDefault(x => x.ID == item.Roomid);
|
||||
}
|
||||
var dqsj = timeOut - DateTime.Now;
|
||||
if (item.testState != 1)
|
||||
{
|
||||
if (item.predictCheckIn <= DateTime.Now)//立刻开房
|
||||
{
|
||||
List<TestUser> tu = new List<TestUser>();
|
||||
using (var sx = SqlSugarBase.GesmartDb())
|
||||
{
|
||||
|
||||
var dingdan = sx.Queryable<subtabulation>().Where(s => s.masterid == item.id).ToList();
|
||||
|
||||
foreach (var info in dingdan)
|
||||
{
|
||||
var user = sx.Queryable<TestUser>().First(x => x.id == info.Lodgerid);
|
||||
if (user != null)
|
||||
{
|
||||
tu.Add(user);
|
||||
}
|
||||
}
|
||||
bool isok = true;
|
||||
|
||||
List<WebServer.UserInfo> users = new List<WebServer.UserInfo>();
|
||||
for (int i = 0; i < tu.Count; i++)
|
||||
{
|
||||
WebServer.UserInfo fo = new WebServer.UserInfo()
|
||||
{
|
||||
idcard = tu[i].idNumber,
|
||||
customer = tu[i].name,
|
||||
sex = tu[i].sex == 1 ? "男" : "女",
|
||||
photoUrl = "http://face.blv-oa.com/ImgServer/FileImage?url=" + tu[i].picture,
|
||||
};
|
||||
users.Add(fo);
|
||||
int uid = tu[i].id;
|
||||
var sm = SqlSugarBase.Db.Queryable<TestUser>().First(x => x.id == uid);
|
||||
isok = WebHelp.Send(new SendInfo { code = hotellist.Code.ToString(), roomNumber = result.RoomNumber, idNumber = sm.idNumber, phoneNumber = sm.phone }, users.ToArray());
|
||||
users.Clear();
|
||||
int states = 4;
|
||||
|
||||
if (isok)
|
||||
{
|
||||
states = 1;
|
||||
}
|
||||
SqlSugarBase.Db.Updateable<CheckinTest>().SetColumns(s => s.testState == states).Where(x => x.id == item.id).ExecuteCommand();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//预约开房
|
||||
Task.Factory.StartNew(() =>
|
||||
{
|
||||
|
||||
var dqdate = Convert.ToDateTime(item.predictCheckIn.ToString()) - DateTime.Now;
|
||||
var sun = (DateTime.Now + dqdate);
|
||||
if (sun < DateTime.Now.AddMinutes(20))
|
||||
{
|
||||
Task.Delay(dqdate).Wait();
|
||||
List<TestUser> tu = new List<TestUser>();
|
||||
using (var sx = SqlSugarBase.GesmartDb())
|
||||
{
|
||||
var dingdan = sx.Queryable<subtabulation>().Where(s => s.masterid == item.id).ToList();
|
||||
foreach (var info in dingdan)
|
||||
{
|
||||
var user = sx.Queryable<TestUser>().First(x => x.id == info.Lodgerid);
|
||||
tu.Add(user);
|
||||
}
|
||||
bool isok = true;
|
||||
List<WebServer.UserInfo> users = new List<WebServer.UserInfo>();
|
||||
for (int i = 0; i < tu.Count; i++)
|
||||
{
|
||||
WebServer.UserInfo fo = new WebServer.UserInfo()
|
||||
{
|
||||
idcard = tu[i].idNumber,
|
||||
customer = tu[i].name,
|
||||
sex = tu[i].sex == 1 ? "男" : "女",
|
||||
photoUrl = "http://face.blv-oa.com/ImgServer/FileImage?url=" + tu[i].picture,
|
||||
};
|
||||
users.Add(fo);
|
||||
int uid = tu[i].id;
|
||||
var sm = SqlSugarBase.Db.Queryable<TestUser>().First(x => x.id == uid);
|
||||
isok = WebHelp.Send(new SendInfo { code = hotellist.Code.ToString(), roomNumber = result.RoomNumber, idNumber = sm.idNumber, phoneNumber = sm.phone }, users.ToArray());
|
||||
users.Clear();
|
||||
}
|
||||
int states = 4;
|
||||
if (isok)
|
||||
{
|
||||
states = 1;
|
||||
}
|
||||
SqlSugarBase.Db.Updateable<CheckinTest>().SetColumns(x => x.testState == states).Where(x => x.id == item.id).ExecuteCommand();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
{
|
||||
//var dates = item.predictCheckIn - DateTime.Now;
|
||||
}
|
||||
if (dqsj <= TimeSpan.FromMinutes(0))//立刻退房
|
||||
{
|
||||
Logs.WriteTimingUDPLog("全局异步立刻退房操作");
|
||||
if (item.checkInduration != 0)
|
||||
{
|
||||
FJHelp.outinfos(item.id.ToString());
|
||||
Logs.WriteTimingUDPLog("全局异步立刻退房成功");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else//预约退房
|
||||
{
|
||||
if (item.checkInduration != 0)
|
||||
{
|
||||
Task.Factory.StartNew(() =>
|
||||
{
|
||||
Task.Delay(dqsj).Wait();
|
||||
Logs.WriteTimingUDPLog("全局异步预约退房操作");
|
||||
FJHelp.outinfos(item.id.ToString());
|
||||
Logs.WriteTimingUDPLog("全局异步预约退房成功");
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
Logs.WriteTimingUDPLog("全局错误");
|
||||
}
|
||||
}
|
||||
|
||||
void aTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
protected void Application_Error(Object sender, EventArgs e)
|
||||
{
|
||||
Exception lastError = Server.GetLastError();//获取异常
|
||||
if (lastError != null)
|
||||
{
|
||||
//异常信息
|
||||
string strExceptionMessage = string.Empty;
|
||||
//对HTTP 404做额外处理,其他错误全部当成500服务器错误
|
||||
HttpException httpError = lastError as HttpException;
|
||||
//得到错误信息,可以写到日志里
|
||||
LogHelp.WriteExceptionLog(lastError);
|
||||
//一定要调用Server.ClearError()否则会触发错误详情页(就是黄页)
|
||||
//Server.ClearError();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public class MyRegistry : Registry
|
||||
{
|
||||
|
||||
//无参构造函数
|
||||
public MyRegistry()
|
||||
{
|
||||
|
||||
//每天2点
|
||||
Schedule(() =>
|
||||
{
|
||||
string fname = "移海";
|
||||
List<DeviceManage> tbl = SqlSugarBase.GesmartDb().Queryable<DeviceManage>().Where(x=>x.Status==true && x.Factory== fname).ToList();
|
||||
for (int i = 0; i < tbl.Count; i++)
|
||||
{
|
||||
if (tbl[i].Status == true)
|
||||
{
|
||||
Entity.Rootinfo info = new Entity.Rootinfo();
|
||||
info.pmsid = -1;
|
||||
Entity.msgx msgx = new Entity.msgx();
|
||||
|
||||
StringBuilder sbperson = new StringBuilder();
|
||||
sbperson.Append("key=abc");
|
||||
//sbperson.Append("&number=50");
|
||||
//sbperson.Append("&offset=0");
|
||||
|
||||
msgx.msgid = Guid.NewGuid().ToString();
|
||||
msgx.sn = tbl[i].SerialNo;
|
||||
msgx.cmd = "getDeviceInfo";//得到设备信息
|
||||
msgx.msg = System.Web.HttpUtility.HtmlDecode(sbperson.ToString());
|
||||
info.msgx = msgx;
|
||||
info.pmsid = -1;
|
||||
string sendMsg = Newtonsoft.Json.JsonConvert.SerializeObject(info);
|
||||
UdpCommunication.QueueSend(sendMsg);
|
||||
|
||||
Task.Delay(10000);
|
||||
|
||||
}
|
||||
}
|
||||
using (var db = SqlSugarBase.GesmartDb())
|
||||
{
|
||||
//string sn = tbl[i].SerialNo;
|
||||
//var dbt = db.Queryable<DeviceManage>().First(x => x.SerialNo == sn);
|
||||
ULog uLog = new ULog
|
||||
{
|
||||
Uname = "oy" /*Session["username"].ToString()*/,
|
||||
faceSN = "所以在线的人脸机"/*tbl[i].SerialNo*/,
|
||||
operatetype = "得到设备基本信息,每天晚上2点执行一次",
|
||||
hotelcode = 0 /*int.Parse(Session["hotelCode"].ToString())*/,//
|
||||
roomid = 0,
|
||||
Creationtime = DateTime.Now
|
||||
};
|
||||
SqlSugarBase.Db.Insertable(uLog).ExecuteCommand();
|
||||
}
|
||||
|
||||
//if (!SyncHotelServer.SyncHotelGroups())
|
||||
// Logs.WriteTimingUDPLog("2:00执行定时任务--清除酒店失败~");
|
||||
}).ToRunEvery(0).Days().At(2, 00);
|
||||
}
|
||||
|
||||
public static void GoWork()
|
||||
{
|
||||
JobManager.Initialize(new MyRegistry());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user