Files
Web_Faces_Prod/Face.Web/Areas/App/Controllers/InterfaceController.cs
2025-11-25 17:41:57 +08:00

3948 lines
212 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Face.Domain.Entities;
using Face.Domain.ViewModels;
using Face.Services.DBUtility.Common;
using Face.Services.Manager;
using Face.Web.Areas.App.Models;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Hosting;
using System.Web.Mvc;
using WebSocketToolsConsole;
using Face.Web.Areas.App.Controllers;
using System.Threading;
using Newtonsoft.Json;
using TencentCloud.Common.Profile;
using TencentCloud.Common;
using TencentCloud.Sms.V20210111;
using TencentCloud.Sms.V20210111.Models;
using System.Data;
using System.Diagnostics;
using System.Xml;
using AUTS.Services.Enums;
using System.Text.RegularExpressions;
using static WebSocketToolsConsole.Entity;
using static Face.Web.Areas.App.Models.Roominfo;
using static Face.Web.Areas.App.Controllers.InterfaceController;
using System.Web.Helpers;
using Newtonsoft.Json.Linq;
using System.Web.Services.Description;
namespace Face.Web.Areas.App.Controllers
{
/*
* hotel, room, facedevice
* no device:
* step 9: error hotel or error room
* step 8: success without facedevice
* has device
* step 7: error with face device
* step 6: success with face device
*/
public class InterfaceController : Controller
{
private static readonly TimeSpan Interval = TimeSpan.FromMilliseconds(1000);
#region
/// <summary>
/// 接口1 (入住人员信息)
/// </summary>
/// https://gitee.com/My_yaoyao/blog/pages
[HttpPost]
public ActionResult checkinInterface(string key, string data)
{
//酒店编号
string hc = "";
//房间编号
string ridname = "";
//List<DeviceManage> tblsdsas = SqlSugarBase.GesmartDb().Queryable<DeviceManage>().ToList();
DateTime dateTimess = DateTime.Now;
Logs.WriteLog(data);
string sn = "";
string sendMsg, img, pictures;
int pmsid = -1;
string messageid = Guid.NewGuid().ToString();
ReturnResult result = new ReturnResult();
Hotels hotel = new Hotels();
List<pmsLog> logList = new List<pmsLog>();
bool offLineSend = false;
threadinfo ti = new threadinfo();
try
{
portinfo ci = JsonConvert.DeserializeObject<portinfo>(data);
hc = ci.HotelCode;
ridname = ci.roomid;
if (key == "abc")
{
hotel = SqlSugarBase.authoriydb.Queryable<Hotels>().First(x => x.Code == ci.HotelCode);
//把酒店id转换成string类型
//ci.HotelCode = hotel.Id.ToString();
pmsInterface info = new pmsInterface()
{
pmstype = 1,
DateTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
pmsContent = data,
hotelid = hotel.Id,
};
pmsid = ci.pmsinfoid;
//SqlSugarBase.Db.Updateable(info).Where(x => x.pmsId == pmsid);
messageid = pmsid.ToString();
if (hotel.Id == 916)
{
pmsLog pmslogerr = new pmsLog
{
pmsid = pmsid,
app = 1,
step = 201,
Data = data,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
message = "请求过于频繁,已拒绝本酒店访问!",
HotelCode = hc,
roomid = ridname
};
SqlSugarBase.Db.Insertable(pmslogerr).ExecuteCommand();
result.Status = 200;
result.Message = $"请求过于频繁,已拒绝本酒店访问!";
return Json(result);
}
pmsLog pmslog = new pmsLog
{
pmsid = pmsid,
app = 1,
step = 201,
Data = data,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
message = "收到pms信息",
HotelCode = hc,
roomid = ridname
};
SqlSugarBase.Db.Insertable(pmslog).ExecuteCommand();
if (ci.HotelCode != "")
{
hotel = SqlSugarBase.authoriydb.Queryable<Hotels>().First(x => x.Code == ci.HotelCode);
ci.HotelCode = hotel.Id.ToString();
GetRoomInterface.test test = new GetRoomInterface.test
{
code = hotel.Code.ToString(),
creatDate = hotel.CreateTime.ToString("yyyy-MM-dd")
};
Roominfo.Root asd = GetRoomInterface.Roomport(test);
if (asd.IsSuccess == true)
{
//根据房间id使用三元运算符取通过apihttps://www.boonlive-rcu.com/api/GetHostLis返回的房间信息
var Hotelroomid = asd.Result.FirstOrDefault(x => x.RoomNumber == ci.roomid) != null ? asd.Result.FirstOrDefault(x => x.RoomNumber == ci.roomid) : null;
//没有找到对应酒店的房间
if (Hotelroomid == null)
{
logList.Clear();
//创建s2 错误信息
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 202,
Data = "",
message = $"已校验数据,未找到{ridname}房间",
HotelCode = hc,
roomid = ridname
});
//创建s9错误信息
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 203,
Data = "",
message = $"无需处理,未找到{ridname}房间",
HotelCode = hc,
roomid = ridname
});
//添加到pmsLog数据库
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 300;
result.Message = $"未找到{ridname}房间";
return Json(result);
}
//否则吧房间id转换成string类型
ci.roomid = Hotelroomid.ID.ToString();
}
else
{
logList.Clear();
//创建s2 错误信息
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 204,
Data = "",
message = $"已校验数据,未找到{ci.HotelCode}酒店code",
HotelCode = hc,
roomid = ridname
});
//创建s9 错误信息
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 205,
Data = "",
message = $"无需处理,未找到{ci.HotelCode}酒店code",
HotelCode = hc,
roomid = ridname
});
//添加到pmsLog数据库
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 300;
result.Message = "酒店输入错误";
return Json(result);
}
}
else
{
logList.Clear();
//创建S2错误信息
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 206,
Data = "",
message = $"已校验数据,{ci.HotelCode}酒店code错误",
HotelCode = hc,
roomid = ridname
});
//创建S9错误信息
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 207,
Data = "",
message = $"无需处理,{ci.HotelCode}酒店code错误",
HotelCode = hc,
roomid = ridname
});
//添加到pmslog数据库
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 300;
result.Message = "酒店code错误";
return Json(result);
}
//查询房间是否是公区并且关联公区
tbl_room_basic_info tbl_room_basic_info = SqlSugarBase.Gesmartblv_rcu_db().Queryable<tbl_room_basic_info>().First(x => x.IsDel == 0 && x.ROOM_OLD_ID == int.Parse(ci.roomid));
//是公区
if (tbl_room_basic_info.isPublicArea == 1)
{
#region
sn = SqlOperationsData.selectFace(ci.HotelCode, ci.roomid);//是否有此SN号
DeviceManage device = SqlSugarBase.GesmartDb().Queryable<DeviceManage>().First(x => x.SerialNo == sn);
string Factorys = "";
if (device.Factory == "移海")
{
Factorys = "yh";
}
else if (device.Factory == "实义德")
{
Factorys = "devs";
}
else if (device.Factory == "深圳嘉禾兴")
{
Factorys = "szjhx";
}
else
{
Factorys = " ";
}
using (var sex = SqlSugarBase.GesmartDb())
{
///添加pms酒店,房间,sn号,信息索引
pmsInterface pms = new pmsInterface()
{
faceSN = sn,
hotelid = int.Parse(ci.HotelCode),
room = int.Parse(ci.roomid),
messageid = messageid,
pmsId = pmsid
};
SqlOperationsData.revisepms(pms);
//添加人脸机下发表
FaceIssue fi = new FaceIssue()
{
creationtime = DateTime.Now,
faceSn = sn,
issuestate = 0,
messageid = messageid,
picture = ci.picture,
Factory = Factorys,
APKVersion = device.APKVersion
};
//添加到数据库FaceIssue
SqlSugarBase.Db.Insertable(fi).ExecuteCommand();
///修改人脸机下发表
if (messageid != "")
{
string id = pms.pmsId.ToString();
SqlSugarBase.Db.Updateable<FaceIssue>().SetColumns(x => x.pmsid == id).Where(x => x.messageid == messageid).ExecuteCommand();
}
if (sn != "" && sn != "")
{
//有人脸机,但是状态不在线
var sea = sex.Queryable<DeviceManage>().Where(s => s.SerialNo == sn).First(j => j.Status == false);
#region
//if (sea != null)
//{
// logList.Clear();
// logList.Add(new pmsLog
// {
// pmsid = pmsid,
// app = 1,
// Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
// step = 2,
// Data = "",
// message = $"已校验数据,{sn}号人脸机不在线"
// });
// logList.Add(new pmsLog
// {
// pmsid = pmsid,
// app = 1,
// Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
// step = 7,
// Data = "",
// message = $"无需处理,{sn}号人脸机不在线"
// });
// SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
// result.Status = 505;
// result.Message = "人脸机不在线";
// SqlOperationsData.preserve(data, ci.HotelCode, ci.roomid, sn, 3, 1);
// return Json(result);
//}
#endregion
//改为尝试下发
if (sea != null)
{
//虽然不在线,依然尝试下发。
//不要return 会跳到397行
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 208,
Data = "",
message = $"已校验数据,{sn}号人脸机不在线,但仍然尝试下发,房号" + ridname + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
offLineSend = true;
}
}
}
if (sn == null || sn == "")
{
img = ci.picture;
pictures = Down(ci.picture, ci.LodgerNmae + ci.IDNumber + DateTime.Now.ToString("ss fff"));//云端地址转换ftp图片
//if (pictures == "图片路径错误")
if (pictures.Contains("图片路径错误"))
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 209,
Data = "",
message = "已校验数据,图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 210,
Data = "",
message = "无需处理,图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 50;
result.Message = "图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:是";
return Json(result);
}
ci.picture = pictures;
Lodger lodgers = new Lodger
{
CheckInDate = DateTime.Now,
IDNumber = ci.IDNumber,
LodgerNmae = ci.LodgerNmae,
Sex = ci.Sex,
remark = ci.remark,
Sourcedian = 1,
phonenumber = ci.phonenumber
};
CheckInInfo cf = new CheckInInfo
{
Name = ci.LodgerNmae,
IdNumber = ci.IDNumber,
picture = ci.picture,
HotelCode = int.Parse(ci.HotelCode),
Roomid = int.Parse(ci.roomid),
InfoSource = 0,
CheckTime = ci.CheckTime,
checkOutTime = Convert.ToDateTime("2000/01/01"),
//checkOutTime = ci.checkOutTime,
CreationTime = DateTime.Now,
};
if (SqlOperationsData.addClient(lodgers) > 0)
{
if (SqlOperationsData.additionCheck(cf) > 0)
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 211,
Data = "",
message = "已校验数据,图片路径正确,入住客户已经添加,客房已经开房,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 212,
Data = "",
message = "无需处理,此房间没有人脸机,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 200;
result.Message = "添加入住信息成功,房号" + ridname + ",SN:" + sn + ",是否公区:是";
return Json(result);
}
else
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 213,
Data = "",
message = "已校验数据,图片路径正确,入住客户已经添加,客房开房失败,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 214,
Data = "",
message = "此房间没有人脸机,但是客房开房失败,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 400;
result.Message = "添加入住信息失败";
return Json(result);
}
}
else
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 215,
Data = "",
message = "已校验数据,图片路径正确,入住客户添加失败,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 216,
Data = "",
message = "此房间没有人脸机,但是入住客户添加失败,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 300;
result.Message = "添加客户信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:是";
return Json(result);
}
}
else
{
//checkin.checkinRoom(data, ci.HotelCode, ci.roomid,sn, tbl_room_basic_info.isPublicArea);
img = ci.picture;
string pictures1 = Down(ci.picture, ci.LodgerNmae + ci.IDNumber + DateTime.Now.ToString("ss fff"));//云端地址转换ftp图片
if (pictures1 == "图片路径错误")
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 217,
Data = "",
message = "已校验数据,图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 218,
Data = "",
message = "无需处理,图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 50;
result.Message = "图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:是";
return Json(result);
}
ci.picture = pictures1;
Lodger lodgers1 = new Lodger
{
CheckInDate = DateTime.Now,
IDNumber = ci.IDNumber,
LodgerNmae = ci.LodgerNmae,
Sex = ci.Sex,
remark = ci.remark,
Sourcedian = 1,
phonenumber = ci.phonenumber
};
CheckInInfo cf2 = new CheckInInfo
{
Name = ci.LodgerNmae,
IdNumber = ci.IDNumber,
picture = ci.picture,
HotelCode = int.Parse(ci.HotelCode),
Roomid = int.Parse(ci.roomid),
InfoSource = 0,
CheckTime = ci.CheckTime,
checkOutTime = Convert.ToDateTime("2000/01/01"),
//checkOutTime = ci.checkOutTime,
CreationTime = DateTime.Now,
};
if (SqlOperationsData.addClient(lodgers1) > 0)
{
if (SqlOperationsData.additionCheck(cf2) > 0)
{
StringBuilder sbperson = new StringBuilder();
sbperson.Append("key=abc");
sbperson.Append("&id=" + ci.IDNumber);
sbperson.Append("&name=" + ci.LodgerNmae);
sbperson.Append("&IC_NO=0001");
sbperson.Append("&ID_NO=" + ci.IDNumber);
sbperson.Append("&photo=<" + img + ">");
sbperson.Append("&startTs=-1");
sbperson.Append("&endTs=-1");
sbperson.Append("&passCount=10000");
//追加酒店id和房间id
sbperson.Append("&HotelID=" + ci.HotelCode);
sbperson.Append("&RoomID=" + ci.roomid);
//协议里面没有的字段是否公区
sbperson.Append("&isPublicArea=1");
Entity.Rootinfo msgx = new Entity.Rootinfo();
List<Entity.Rootinfo> rootinfos = new List<Entity.Rootinfo>();
Entity.msgx ms = new Entity.msgx();
ms.msgid = messageid;
ms.sn = sn;
ms.cmd = "setPerson";
ms.msg = System.Web.HttpUtility.HtmlDecode(sbperson.ToString());
msgx.msgx = ms;
msgx.pmsid = pmsid;
transferFace tf = new transferFace()
{
faceSN = sn,
faultState = 0,
infoid = msgx.msgx.msgid,
creationTime = DateTime.Now
};
SqlSugarBase.Db.Insertable(tf).ExecuteCommand();
rootinfos.Add(msgx);//存储
sendMsg = Newtonsoft.Json.JsonConvert.SerializeObject(msgx);
pmsLog log = null;
if (offLineSend)
{
log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 219,
Data = sendMsg,
message = "已校验数据,准备向控制台发送,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
};
}
else
{
log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 220,
Data = sendMsg,
message = "已校验数据,准备向控制台发送,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
};
}
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
string infods = UdpCommunication.QueueSend(sendMsg);
log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 225,
Data = sendMsg,
message = infods
};
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
Errormessageinfo errorinfo = new Errormessageinfo();
errorinfo.Errormessage(pmsid, log.message);
/*改成MSMQ消息队列*/
//UdpCommunication.UdpState(sendMsg);//下发数据给控制台
result.Status = 200;
result.Message = "开房成功";
Thread.Sleep(Interval);
}
else
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 226,
Data = "",
message = "已校验数据,添加入住信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 227,
Data = "",
message = "无需处理,添加入住信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 400;
result.Message = "添加入住信息失败";
}
}
else
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 228,
Data = "",
message = "已校验数据,添加客户信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 229,
Data = "",
message = "无需处理,添加客户信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 300;
result.Message = "添加客户信息失败";
}
}
#endregion
}
//不是公区
else
{
//没有关联公区
if (string.IsNullOrEmpty(tbl_room_basic_info.AssociatedPublicArea))
{
#region
sn = SqlOperationsData.selectFace(ci.HotelCode, ci.roomid);//是否有此SN号
DeviceManage device = SqlSugarBase.GesmartDb().Queryable<DeviceManage>().First(x => x.SerialNo == sn);
string Factorys = "";
if (device.Factory == "移海")
{
Factorys = "yh";
}
else if (device.Factory == "实义德")
{
Factorys = "devs";
}
else if (device.Factory == "深圳嘉禾兴")
{
Factorys = "szjhx";
}
else
{
Factorys = " ";
}
using (var sex = SqlSugarBase.GesmartDb())
{
///添加pms酒店,房间,sn号,信息索引
pmsInterface pms = new pmsInterface()
{
faceSN = sn,
hotelid = int.Parse(ci.HotelCode),
room = int.Parse(ci.roomid),
messageid = messageid,
pmsId = pmsid
};
SqlOperationsData.revisepms(pms);
//添加人脸机下发表
FaceIssue fi = new FaceIssue()
{
creationtime = DateTime.Now,
faceSn = sn,
issuestate = 0,
messageid = messageid,
picture = ci.picture,
Factory = Factorys,
APKVersion = device.APKVersion
};
//添加到数据库FaceIssue
SqlSugarBase.Db.Insertable(fi).ExecuteCommand();
///修改人脸机下发表
if (messageid != "")
{
string id = pms.pmsId.ToString();
SqlSugarBase.Db.Updateable<FaceIssue>().SetColumns(x => x.pmsid == id).Where(x => x.messageid == messageid).ExecuteCommand();
}
if (sn != "" && sn != "")
{
//有人脸机,但是状态不在线
var sea = sex.Queryable<DeviceManage>().Where(s => s.SerialNo == sn).First(j => j.Status == false);
//if (sea != null)
//{
// logList.Clear();
// logList.Add(new pmsLog
// {
// pmsid = pmsid,
// app = 1,
// Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
// step = 2,
// Data = "",
// message = $"已校验数据,{sn}号人脸机不在线"
// });
// logList.Add(new pmsLog
// {
// pmsid = pmsid,
// app = 1,
// Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
// step = 7,
// Data = "",
// message = $"无需处理,{sn}号人脸机不在线"
// });
// SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
// result.Status = 505;
// result.Message = "人脸机不在线";
// SqlOperationsData.preserve(data, ci.HotelCode, ci.roomid, sn, 3, 1);
// return Json(result);
//}
//改为尝试下发
if (sea != null)
{
//虽然不在线,依然尝试下发。
//不要return 会跳到397行
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 230,
Data = "",
message = $"已校验数据,{sn}号人脸机不在线,但仍然尝试下发,房号" + ridname + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
offLineSend = true;
}
}
}
if (sn == null || sn == "")
{
img = ci.picture;
//pictures = Down(ci.picture, DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss fff"));//云端地址转换ftp图片
pictures = Down(ci.picture, ci.LodgerNmae + ci.IDNumber + DateTime.Now.ToString("ss fff"));//云端地址转换ftp图片
if (pictures == "图片路径错误")
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 231,
Data = "",
message = "已校验数据,图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 232,
Data = "",
message = "无需处理,图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 50;
result.Message = "图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:否";
return Json(result);
}
ci.picture = pictures;
Lodger lodgers = new Lodger
{
CheckInDate = DateTime.Now,
IDNumber = ci.IDNumber,
LodgerNmae = ci.LodgerNmae,
Sex = ci.Sex,
remark = ci.remark,
Sourcedian = 1,
phonenumber = ci.phonenumber
};
CheckInInfo cf = new CheckInInfo
{
Name = ci.LodgerNmae,
IdNumber = ci.IDNumber,
picture = ci.picture,
HotelCode = int.Parse(ci.HotelCode),
Roomid = int.Parse(ci.roomid),
InfoSource = 0,
CheckTime = ci.CheckTime,
checkOutTime = Convert.ToDateTime("2000/01/01"),
//checkOutTime =ci.checkOutTime,
CreationTime = DateTime.Now,
};
if (SqlOperationsData.addClient(lodgers) > 0)
{
if (SqlOperationsData.additionCheck(cf) > 0)
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 235,
Data = "",
message = "已校验数据,图片路径正确,入住客户已经添加,客房已经开房,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 236,
Data = "",
message = "无需处理,此房间没有人脸机,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 200;
result.Message = "添加入住信息成功,房号" + ridname + ",SN:" + sn + ",是否公区:否";
return Json(result);
}
else
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 237,
Data = "",
message = "已校验数据,图片路径正确,入住客户已经添加,客房开房失败,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 238,
Data = "",
message = "此房间没有人脸机,但是客房开房失败,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 400;
result.Message = "添加入住信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:否";
return Json(result);
}
}
else
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 239,
Data = "",
message = "已校验数据,图片路径正确,入住客户添加失败,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 240,
Data = "",
message = "此房间没有人脸机,但是入住客户添加失败,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 300;
result.Message = "添加客户信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:否";
return Json(result);
}
}
else
{
img = ci.picture;
string pictures1 = Down(ci.picture, ci.LodgerNmae + ci.IDNumber + DateTime.Now.ToString("ss fff"));//云端地址转换ftp图片
if (pictures1 == "图片路径错误")
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 244,
Data = "",
message = "已校验数据,图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 245,
Data = "",
message = "无需处理,图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 50;
result.Message = "图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:否";
return Json(result);
}
ci.picture = pictures1;
Lodger lodgers1 = new Lodger
{
CheckInDate = DateTime.Now,
IDNumber = ci.IDNumber,
LodgerNmae = ci.LodgerNmae,
Sex = ci.Sex,
remark = ci.remark,
Sourcedian = 1,
phonenumber = ci.phonenumber
};
CheckInInfo cf2 = new CheckInInfo
{
Name = ci.LodgerNmae,
IdNumber = ci.IDNumber,
picture = ci.picture,
HotelCode = int.Parse(ci.HotelCode),
Roomid = int.Parse(ci.roomid),
InfoSource = 0,
CheckTime = ci.CheckTime,
checkOutTime = Convert.ToDateTime("2000/01/01"),
//checkOutTime = ci.checkOutTime,
CreationTime = DateTime.Now,
};
if (SqlOperationsData.addClient(lodgers1) > 0)
{
if (SqlOperationsData.additionCheck(cf2) > 0)
{
StringBuilder sbperson = new StringBuilder();
sbperson.Append("key=abc");
sbperson.Append("&id=" + ci.IDNumber);
sbperson.Append("&name=" + ci.LodgerNmae);
sbperson.Append("&IC_NO=0001");
sbperson.Append("&ID_NO=" + ci.IDNumber);
sbperson.Append("&photo=<" + img + ">");
sbperson.Append("&startTs=-1");
sbperson.Append("&endTs=-1");
sbperson.Append("&passCount=10000");
//追加酒店id和房间id
sbperson.Append("&HotelID=" + ci.HotelCode);
sbperson.Append("&RoomID=" + ci.roomid);
//协议里面没有的字段是否公区
sbperson.Append("&isPublicArea=0");
Entity.Rootinfo msgx = new Entity.Rootinfo();
List<Entity.Rootinfo> rootinfos = new List<Entity.Rootinfo>();
Entity.msgx ms = new Entity.msgx();
ms.msgid = messageid;
ms.sn = sn;
ms.cmd = "setPerson";
ms.msg = System.Web.HttpUtility.HtmlDecode(sbperson.ToString());
msgx.msgx = ms;
msgx.pmsid = pmsid;
transferFace tf = new transferFace()
{
faceSN = sn,
faultState = 0,
infoid = msgx.msgx.msgid,
creationTime = DateTime.Now
};
SqlSugarBase.Db.Insertable(tf).ExecuteCommand();
rootinfos.Add(msgx);//存储
sendMsg = Newtonsoft.Json.JsonConvert.SerializeObject(msgx);
pmsLog log = null;
if (offLineSend)
{
log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 246,
Data = sendMsg,
message = "已校验数据,准备向控制台发送,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
};
}
else
{
log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 247,
Data = sendMsg,
message = "已校验数据,准备向控制台发送,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
};
}
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
//UdpCommunication.QueueSend(sendMsg);
Errormessageinfo errorinfo = new Errormessageinfo();
errorinfo.Errormessage(pmsid, log.message);
//发送信息给控制台程序
string infods = UdpCommunication.QueueSend(sendMsg);
log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 248,
Data = sendMsg,
message = infods
};
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
/*改成MSMQ消息队列*/
//UdpCommunication.UdpState(sendMsg);//下发数据给控制台
result.Status = 200;
result.Message = "开房成功";
Thread.Sleep(Interval);
}
else
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 249,
Data = "",
message = "已校验数据,添加入住信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 251,
Data = "",
message = "无需处理,添加入住信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 400;
result.Message = "添加入住信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:否";
}
}
else
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 252,
Data = "",
message = "已校验数据,添加客户信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 253,
Data = "",
message = "无需处理,添加客户信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 300;
result.Message = "添加客户信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:否";
}
}
#endregion
}
//关联了公区的
else
{
img = ci.picture;
List<string> ints = new List<string>();
string guanlian = tbl_room_basic_info.AssociatedPublicArea;
string[] arr = guanlian.Split(',');
//ints.Add(ci.roomid);
ints.AddRange(arr);
#region
for (int i = 0; i < ints.Count(); i++)
{
//根据酒店编号和房间编号查找人脸机编号
sn = SqlOperationsData.selectFace(ci.HotelCode, ints[i]);//是否有此SN号
DeviceManage deviced = SqlSugarBase.GesmartDb().Queryable<DeviceManage>().First(x => x.SerialNo == sn);
tbl_room_basic_info tbl = SqlSugarBase.Gesmartblv_rcu_db().Queryable<tbl_room_basic_info>().First(x => x.IsDel == 0 && x.ROOM_OLD_ID == int.Parse(ints[i]));
string Factorysd = "";
if (deviced != null)
{
if (deviced.Factory == "移海")
{
Factorysd = "yh";
}
else if (deviced.Factory == "实义德")
{
Factorysd = "devs";
}
else if (deviced.Factory == "深圳嘉禾兴")
{
Factorysd = "szjhx";
}
else
{
Factorysd = " ";
}
}
using (var sex = SqlSugarBase.GesmartDb())
{
///添加pms酒店,房间,sn号,信息索引
pmsInterface pms = new pmsInterface()
{
faceSN = sn,
hotelid = int.Parse(ci.HotelCode),
room = int.Parse(ints[i]),
messageid = messageid,
pmsId = pmsid
};
SqlOperationsData.revisepms(pms);
//添加人脸机下发表
FaceIssue fi = new FaceIssue()
{
creationtime = DateTime.Now,
faceSn = sn,
issuestate = 0,
messageid = messageid,
picture = ci.picture,
Factory = Factorysd,
APKVersion = deviced.APKVersion
};
//添加到数据库FaceIssue
SqlSugarBase.Db.Insertable(fi).ExecuteCommand();
///修改人脸机下发表
if (messageid != "")
{
string id = pms.pmsId.ToString();
SqlSugarBase.Db.Updateable<FaceIssue>().SetColumns(x => x.pmsid == id).Where(x => x.messageid == messageid).ExecuteCommand();
}
if (sn != "" && sn != "")
{
//有人脸机,但是状态不在线
var sea = sex.Queryable<DeviceManage>().Where(s => s.SerialNo == sn).First(j => j.Status == false);
//改为尝试下发
if (sea != null)
{
//虽然不在线,依然尝试下发。
//不要return 会跳到397行
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 254,
Data = "",
message = $"已校验数据,{sn}号人脸机不在线,但仍然尝试下发,房号" + tbl.ROOM_NUMBER + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
offLineSend = true;
}
}
}
if (sn == null || sn == "")
{
//img = ci.picture;
//pictures = Down(ci.picture, DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss fff"));//云端地址转换ftp图片
pictures = Down(img, ci.LodgerNmae + ci.IDNumber + DateTime.Now.ToString("ss fff"));//云端地址转换ftp图片
if (pictures == "图片路径错误")
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 255,
Data = "",
message = "已校验数据,图片路径错误,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 256,
Data = "",
message = "无需处理,图片路径错误,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 50;
result.Message = "图片路径错误,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是";
return Json(result);
}
ci.picture = pictures;
Lodger lodgers = new Lodger
{
CheckInDate = DateTime.Now,
IDNumber = ci.IDNumber,
LodgerNmae = ci.LodgerNmae,
Sex = ci.Sex,
remark = ci.remark,
Sourcedian = 1,
phonenumber = ci.phonenumber
};
CheckInInfo cf = new CheckInInfo
{
Name = ci.LodgerNmae,
IdNumber = ci.IDNumber,
picture = ci.picture,
HotelCode = int.Parse(ci.HotelCode),
Roomid = int.Parse(ci.roomid),
InfoSource = 0,
CheckTime = ci.CheckTime,
//checkOutTime = Convert.ToDateTime("2000/01/01"),
checkOutTime = ci.checkOutTime,
CreationTime = DateTime.Now,
};
if (SqlOperationsData.addClient(lodgers) > 0)
{
if (SqlOperationsData.additionCheck(cf) > 0)
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 257,
Data = "",
message = "已校验数据,图片路径正确,入住客户已经添加,客房已经开房,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 258,
Data = "",
message = "无需处理,此房间没有人脸机,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 200;
result.Message = "添加入住信息成功";
return Json(result);
}
else
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 259,
Data = "",
message = "已校验数据,图片路径正确,入住客户已经添加,客房开房失败,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 260,
Data = "",
message = "此房间没有人脸机,但是客房开房失败,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 400;
result.Message = "添加入住信息失败";
return Json(result);
}
}
else
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 261,
Data = "",
message = "已校验数据,图片路径正确,入住客户添加失败,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 262,
Data = "",
message = "此房间没有人脸机,但是入住客户添加失败,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 300;
result.Message = "添加客户信息失败,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是";
return Json(result);
}
}
else
{
//img = ci.picture;
string pictures1 = Down(img, ci.LodgerNmae + ci.IDNumber + DateTime.Now.ToString("ss fff"));//云端地址转换ftp图片
if (pictures1 == "图片路径错误")
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 263,
Data = "",
message = "已校验数据,图片路径错误,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 264,
Data = "",
message = "无需处理,图片路径错误,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 50;
result.Message = "图片路径错误,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是";
return Json(result);
}
ci.picture = pictures1;
Lodger lodgers1 = new Lodger
{
CheckInDate = DateTime.Now,
IDNumber = ci.IDNumber,
LodgerNmae = ci.LodgerNmae,
Sex = ci.Sex,
remark = ci.remark,
Sourcedian = 1,
phonenumber = ci.phonenumber
};
CheckInInfo cf2 = new CheckInInfo
{
Name = ci.LodgerNmae,
IdNumber = ci.IDNumber,
picture = ci.picture,
HotelCode = int.Parse(ci.HotelCode),
Roomid = int.Parse(ci.roomid),
InfoSource = 0,
CheckTime = ci.CheckTime,
//checkOutTime = Convert.ToDateTime("2000/01/01"),
checkOutTime = ci.checkOutTime,
CreationTime = DateTime.Now,
};
if (SqlOperationsData.addClient(lodgers1) > 0)
{
if (SqlOperationsData.additionCheck(cf2) > 0)
{
//Thread revT = new Thread(IssueFacemachine);
//ti.roomid = ints[i];
//ti.IDNumber = ci.IDNumber;
//ti.LodgerNmae = ci.LodgerNmae;
//ti.IDNumber = ci.IDNumber;
//ti.picture = img;
//ti.HotelCode= ci.HotelCode;
//ti.offLineSend = offLineSend;
//ti.pmsid = pmsid;
//ti.SN = sn;
//ti.messageid = messageid;
//revT.Start(ti);
StringBuilder sbperson = new StringBuilder();
sbperson.Append("key=abc");
sbperson.Append("&id=" + ci.IDNumber);
sbperson.Append("&name=" + ci.LodgerNmae);
sbperson.Append("&IC_NO=0001");
sbperson.Append("&ID_NO=" + ci.IDNumber);
sbperson.Append("&photo=<" + img + ">");
sbperson.Append("&startTs=" + ci.CheckTime);
sbperson.Append("&endTs=" + ci.checkOutTime);
sbperson.Append("&passCount=10000");
//追加酒店id和房间id
sbperson.Append("&HotelID=" + ci.HotelCode);
sbperson.Append("&RoomID=" + ints[i]);
//协议里面没有的字段是否公区
sbperson.Append("&isPublicArea=1");
//sbperson.Append("&Groupid=" + ci.Groupid);
Entity.Rootinfo msgx = new Entity.Rootinfo();
List<Entity.Rootinfo> rootinfos = new List<Entity.Rootinfo>();
Entity.msgx ms = new Entity.msgx();
ms.msgid = messageid;
ms.sn = sn;
ms.cmd = "setPerson";
ms.msg = System.Web.HttpUtility.HtmlDecode(sbperson.ToString());
msgx.msgx = ms;
msgx.pmsid = pmsid;
transferFace tf = new transferFace()
{
faceSN = sn,
faultState = 0,
infoid = msgx.msgx.msgid,
creationTime = DateTime.Now
};
SqlSugarBase.Db.Insertable(tf).ExecuteCommand();
rootinfos.Add(msgx);//存储
sendMsg = Newtonsoft.Json.JsonConvert.SerializeObject(msgx);
pmsLog log = null;
if (offLineSend)
{
log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 265,
Data = sendMsg,
message = "已校验数据,准备向控制台发送,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
};
}
else
{
log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 266,
Data = sendMsg,
message = "已校验数据,准备向控制台发送,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
};
}
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
string infos = UdpCommunication.QueueSend(sendMsg);
log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 267,
Data = sendMsg,
message = infos,
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
};
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
Errormessageinfo errorinfo = new Errormessageinfo();
errorinfo.Errormessage(pmsid, log.message);
/*改成MSMQ消息队列*/
//UdpCommunication.UdpState(sendMsg);//下发数据给控制台
result.Status = 200;
result.Message = "开房成功";
Thread.Sleep(Interval);
}
else
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 268,
Data = "",
message = "已校验数据,添加入住信息失败,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 269,
Data = "",
message = "无需处理,添加入住信息失败,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 400;
result.Message = "添加入住信息失败,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是";
}
}
else
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 270,
Data = "",
message = "已校验数据,添加客户信息失败,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 271,
Data = "",
message = "无需处理,添加客户信息失败,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbl.ROOM_NUMBER
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 300;
result.Message = "添加客户信息失败,房号" + tbl.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是";
}
}
}
#endregion
#region
sn = SqlOperationsData.selectFace(ci.HotelCode, ci.roomid);//是否有此SN号
DeviceManage device = SqlSugarBase.GesmartDb().Queryable<DeviceManage>().First(x => x.SerialNo == sn);
string Factorys = "";
if (device.Factory == "移海")
{
Factorys = "yh";
}
else if (device.Factory == "实义德")
{
Factorys = "devs";
}
else if (device.Factory == "深圳嘉禾兴")
{
Factorys = "szjhx";
}
else
{
Factorys = " ";
}
using (var sex = SqlSugarBase.GesmartDb())
{
///添加pms酒店,房间,sn号,信息索引
pmsInterface pms = new pmsInterface()
{
faceSN = sn,
hotelid = int.Parse(ci.HotelCode),
room = int.Parse(ci.roomid),
messageid = messageid,
pmsId = pmsid
};
SqlOperationsData.revisepms(pms);
//添加人脸机下发表
FaceIssue fi = new FaceIssue()
{
creationtime = DateTime.Now,
faceSn = sn,
issuestate = 0,
messageid = messageid,
picture = ci.picture,
Factory = Factorys,
APKVersion = device.APKVersion
};
//添加到数据库FaceIssue
SqlSugarBase.Db.Insertable(fi).ExecuteCommand();
///修改人脸机下发表
if (messageid != "")
{
string id = pms.pmsId.ToString();
SqlSugarBase.Db.Updateable<FaceIssue>().SetColumns(x => x.pmsid == id).Where(x => x.messageid == messageid).ExecuteCommand();
}
if (sn != "" && sn != "")
{
//有人脸机,但是状态不在线
var sea = sex.Queryable<DeviceManage>().Where(s => s.SerialNo == sn).First(j => j.Status == false);
//if (sea != null)
//{
// logList.Clear();
// logList.Add(new pmsLog
// {
// pmsid = pmsid,
// app = 1,
// Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
// step = 2,
// Data = "",
// message = $"已校验数据,{sn}号人脸机不在线"
// });
// logList.Add(new pmsLog
// {
// pmsid = pmsid,
// app = 1,
// Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
// step = 7,
// Data = "",
// message = $"无需处理,{sn}号人脸机不在线"
// });
// SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
// result.Status = 505;
// result.Message = "人脸机不在线";
// SqlOperationsData.preserve(data, ci.HotelCode, ci.roomid, sn, 3, 1);
// return Json(result);
//}
//改为尝试下发
if (sea != null)
{
//虽然不在线,依然尝试下发。
//不要return 会跳到397行
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 272,
Data = "",
message = $"已校验数据,{sn}号人脸机不在线,但仍然尝试下发,房号" + ridname + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
offLineSend = true;
}
}
}
if (sn == null || sn == "")
{
//img = ci.picture;
//pictures = Down(ci.picture, DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss fff"));//云端地址转换ftp图片
pictures = Down(img, ci.LodgerNmae + ci.IDNumber + DateTime.Now.ToString("ss fff"));//云端地址转换ftp图片
if (pictures == "图片路径错误")
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 273,
Data = "",
message = "已校验数据,图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 274,
Data = "",
message = "无需处理,图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 50;
result.Message = "图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:否";
return Json(result);
}
ci.picture = pictures;
Lodger lodgers = new Lodger
{
CheckInDate = DateTime.Now,
IDNumber = ci.IDNumber,
LodgerNmae = ci.LodgerNmae,
Sex = ci.Sex,
remark = ci.remark,
Sourcedian = 1,
phonenumber = ci.phonenumber
};
CheckInInfo cf = new CheckInInfo
{
Name = ci.LodgerNmae,
IdNumber = ci.IDNumber,
picture = ci.picture,
HotelCode = int.Parse(ci.HotelCode),
Roomid = int.Parse(ci.roomid),
InfoSource = 0,
CheckTime = ci.CheckTime,
checkOutTime = Convert.ToDateTime("2000/01/01"),
//checkOutTime = ci.checkOutTime,
CreationTime = DateTime.Now,
};
if (SqlOperationsData.addClient(lodgers) > 0)
{
if (SqlOperationsData.additionCheck(cf) > 0)
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 275,
Data = "",
message = "已校验数据,图片路径正确,入住客户已经添加,客房已经开房,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 276,
Data = "",
message = "无需处理,此房间没有人脸机,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 200;
result.Message = "添加入住信息成功,房号" + ridname + ",SN:" + sn + ",是否公区:否";
return Json(result);
}
else
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 277,
Data = "",
message = "已校验数据,图片路径正确,入住客户已经添加,客房开房失败,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 278,
Data = "",
message = "此房间没有人脸机,但是客房开房失败,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 400;
result.Message = "添加入住信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:否";
return Json(result);
}
}
else
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 279,
Data = "",
message = "已校验数据,图片路径正确,入住客户添加失败,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 280,
Data = "",
message = "此房间没有人脸机,但是入住客户添加失败,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 300;
result.Message = "添加客户信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:否";
return Json(result);
}
}
else
{
//img = ci.picture;
string pictures1 = Down(img, ci.LodgerNmae + ci.IDNumber + DateTime.Now.ToString("ss fff"));//云端地址转换ftp图片
if (pictures1 == "图片路径错误")
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 281,
Data = "",
message = "已校验数据,图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 282,
Data = "",
message = "无需处理,图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 50;
result.Message = "图片路径错误,房号" + ridname + ",SN:" + sn + ",是否公区:否";
return Json(result);
}
ci.picture = pictures1;
Lodger lodgers1 = new Lodger
{
CheckInDate = DateTime.Now,
IDNumber = ci.IDNumber,
LodgerNmae = ci.LodgerNmae,
Sex = ci.Sex,
remark = ci.remark,
Sourcedian = 1,
phonenumber = ci.phonenumber
};
CheckInInfo cf2 = new CheckInInfo
{
Name = ci.LodgerNmae,
IdNumber = ci.IDNumber,
picture = ci.picture,
HotelCode = int.Parse(ci.HotelCode),
Roomid = int.Parse(ci.roomid),
InfoSource = 0,
CheckTime = ci.CheckTime,
checkOutTime = Convert.ToDateTime("2000/01/01"),
//checkOutTime = ci.checkOutTime,
CreationTime = DateTime.Now,
};
if (SqlOperationsData.addClient(lodgers1) > 0)
{
if (SqlOperationsData.additionCheck(cf2) > 0)
{
StringBuilder sbperson = new StringBuilder();
sbperson.Append("key=abc");
sbperson.Append("&id=" + ci.IDNumber);
sbperson.Append("&name=" + ci.LodgerNmae);
sbperson.Append("&IC_NO=0001");
sbperson.Append("&ID_NO=" + ci.IDNumber);
sbperson.Append("&photo=<" + img + ">");
sbperson.Append("&startTs=-1");
sbperson.Append("&endTs=-1");
sbperson.Append("&passCount=10000");
//追加酒店id和房间id
sbperson.Append("&HotelID=" + ci.HotelCode);
sbperson.Append("&RoomID=" + ci.roomid);
//协议里面没有的字段是否公区
sbperson.Append("&isPublicArea=0");
Entity.Rootinfo msgx = new Entity.Rootinfo();
List<Entity.Rootinfo> rootinfos = new List<Entity.Rootinfo>();
Entity.msgx ms = new Entity.msgx();
ms.msgid = messageid;
ms.sn = sn;
ms.cmd = "setPerson";
ms.msg = System.Web.HttpUtility.HtmlDecode(sbperson.ToString());
msgx.msgx = ms;
msgx.pmsid = pmsid;
transferFace tf = new transferFace()
{
faceSN = sn,
faultState = 0,
infoid = msgx.msgx.msgid,
creationTime = DateTime.Now
};
SqlSugarBase.Db.Insertable(tf).ExecuteCommand();
rootinfos.Add(msgx);//存储
sendMsg = Newtonsoft.Json.JsonConvert.SerializeObject(msgx);
pmsLog log = null;
if (offLineSend)
{
log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 283,
Data = sendMsg,
message = "已校验数据,准备向控制台发送,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
};
}
else
{
log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 284,
Data = sendMsg,
message = "已校验数据,准备向控制台发送,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
};
}
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
//UdpCommunication.QueueSend(sendMsg);
string infods = UdpCommunication.QueueSend(sendMsg);
log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 285,
Data = sendMsg,
message = infods
};
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
Errormessageinfo errorinfo = new Errormessageinfo();
errorinfo.Errormessage(pmsid, log.message);
/*改成MSMQ消息队列*/
//UdpCommunication.UdpState(sendMsg);//下发数据给控制台
result.Status = 200;
result.Message = "开房成功";
Thread.Sleep(Interval);
}
else
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 286,
Data = "",
message = "已校验数据,添加入住信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 287,
Data = "",
message = "无需处理,添加入住信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 400;
result.Message = "添加入住信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:否";
}
}
else
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 288,
Data = "",
message = "已校验数据,添加客户信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 289,
Data = "",
message = "无需处理,添加客户信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 300;
result.Message = "添加客户信息失败,房号" + ridname + ",SN:" + sn + ",是否公区:否";
}
}
#endregion
}
}
}
else
{
result.Status = 100;
result.Message = "密钥错误";
}
}
catch (Exception e)
{
result.Status = 500;
result.Message = e.Message;
LogHelp.WriteExceptionLog(e, "开房接口");
}
return Json(result);
}
/// <summary>
/// string转 byte数组
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static byte[] stringToByteArray(string data)
{
return Encoding.Default.GetBytes(data);
}
/// <summary>
/// 16进制原码字符串转字节数组
/// </summary>
/// <param name="hexString">"AABBCC"或"AA BB CC"格式的字符串</param>
/// <returns></returns>
public static byte[] ConvertHexStringToBytes(string hexString)
{
hexString = hexString.Replace(" ", "");
if (hexString.Length % 2 != 0)
{
throw new ArgumentException("参数长度不正确,必须是偶数位。");
}
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
{
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
}
return returnBytes;
}
/// <summary>
/// 接口2 (删除人员)
/// </summary>
/// <param name="HotelCode"></param>
/// <param name="roomName"></param>
/// <returns></returns>
[HttpPost]
public ActionResult CheckOut(string key, string data)
{ //酒店编号
string hc = "";
//房间编号
string ridname = "";
int pmsid = -1;
List<string> message = new List<string>();
string messageid = "";
string sn = "";
data da = JsonConvert.DeserializeObject<data>(data);
ReturnResult result = new ReturnResult();
Hotels hotel = new Hotels();
List<pmsLog> logList = new List<pmsLog>();
try
{
hc = da.HotelCode;
ridname = da.roomid;
//密码出错,直接返回。不跟踪。
if (key != "abc")
{
result.Status = 100;
result.Message = "密钥错误";
return Json(result);
}
hotel = SqlSugarBase.authoriydb.Queryable<Hotels>().First(x => x.Code == da.HotelCode);
#region pmsid
//记录入口产生pmsid以备跟踪
pmsInterface info = new pmsInterface
{
pmstype = 0,
DateTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
pmsContent = data,
hotelid = hotel.Id,
};
//pmsid = SqlSugarBase.Db.Insertable(info).ExecuteReturnIdentity();
pmsid = da.pmsinfoid;
SqlSugarBase.Db.Updateable(info).Where(x => x.pmsId == pmsid);
messageid = pmsid.ToString();
pmsLog pmslog = new pmsLog
{
pmsid = pmsid,
app = 1,
step = 201,
Data = data,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
message = "收到pms信息",
HotelCode = hc,
roomid = ridname
};
SqlSugarBase.Db.Insertable(pmslog).ExecuteCommand();
#endregion
//酒店出错:酒店为空。跟踪记录到 step 9 返回酒店code错误。
if (da.HotelCode == "")
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 290,
Data = "",
message = $"已校验数据,酒店code输入错误",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 291,
Data = "",
message = $"无需处理,未找到{da.HotelCode}(code)输入错误",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 350;
result.Message = "酒店code错误";
return Json(result);
}
hotel = SqlSugarBase.authoriydb.Queryable<Hotels>().First(x => x.Code == da.HotelCode);
//酒店出错,直接返回。跟踪记录到 step 9 返回无编号酒店错误。
if (hotel == null)
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 292,
Data = "",
message = "已校验数据,无酒店",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 293,
Data = "",
message = $"无需处理,无编号为{da.HotelCode}酒店",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 121;
result.Message = "无酒店";
return Json(result);
}
da.HotelCode = hotel.Id.ToString();
GetRoomInterface.test test = new GetRoomInterface.test
{
code = hotel.Code.ToString(),
creatDate = hotel.CreateTime.ToString("yyyy-MM-dd")
};
Roominfo.Root asd = GetRoomInterface.Roomport(test);
//酒店出错,直接返回。跟踪记录到 step 9 返回酒店输入错误。
if (asd != null && asd.IsSuccess == false)
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 290,
Data = "",
message = $"已校验数据,酒店code输入错误",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 291,
Data = "",
message = $"无需处理,未找到{da.HotelCode}(code)输入错误",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 300;
result.Message = "酒店输入错误";
return Json(result);
}
var Hotelroomid = asd.Result.FirstOrDefault(x => x.RoomNumber == da.roomid);
//房间出错,直接返回。跟踪记录到 step 9 返回无房间错误。
if (Hotelroomid == null)
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 296,
Data = "",
message = $"已校验数据,无{da.roomid}此房间",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 297,
Data = "",
message = $"无需处理,未找到{da.roomid}此房间",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 120;
result.Message = "无房间";
return Json(result);
}
#region
da.roomid = Hotelroomid.ID.ToString();
//查询房间是否关联公区
tbl_room_basic_info tbl_room_basic_info = SqlSugarBase.Gesmartblv_rcu_db().Queryable<tbl_room_basic_info>().First(x => x.IsDel == 0 && x.ROOM_OLD_ID == int.Parse(da.roomid));
//是公区
if (tbl_room_basic_info.isPublicArea == 1)
{
#region
//da.HotelCode = "1287";
List<string> sdres = SqlOperationsData.getCheck(da.HotelCode, da.roomid);
sn = SqlOperationsData.selectFace(da.HotelCode, da.roomid);
DeviceManage deviced = SqlSugarBase.GesmartDb().Queryable<DeviceManage>().First(x => x.SerialNo == sn);
string Factorysd = "";
if (deviced != null)
{
if (deviced.Factory == "移海")
{
Factorysd = "yh";
}
else if (deviced.Factory == "实义德")
{
Factorysd = "devs";
}
else if (deviced.Factory == "深圳嘉禾兴")
{
Factorysd = "szjhx";
}
else
{
Factorysd = " ";
}
}
pmsInterface pmss = new pmsInterface
{
faceSN = sn,
hotelid = int.Parse(da.HotelCode),
room = int.Parse(da.roomid),
messageid = messageid,
pmsId = pmsid,
};
SqlOperationsData.revisepms(pmss);
//住客错误。直接返回。跟踪记录到 step 8 返回无客人错误。
if (sdres.Count == 0)
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 298,
Data = "",
message = "已校验数据,此房间无人脸机,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 299,
Data = "",
message = $"无需处理,房间无客人入住,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 404;
result.Message = "此房间无客人入住,房号" + ridname + ",SN:" + sn + ",是否公区:是";
//return Json(result);
}
if (sn != null && sn != "")// 有人脸机退房。跟踪记录到 step 2 返回退房成功。
{
Entity.Rootinfo msgx = new Entity.Rootinfo();
Entity.msgx mx = new Entity.msgx();
//mx.msgid = Guid.NewGuid().ToString();
//messageid = mx.msgid;//保存信息id
mx.msgid = messageid;
mx.sn = sn;
mx.cmd = "removePerson";
StringBuilder builder = new StringBuilder();
builder.Append("key=abc");
builder.Append("&id=[]");
builder.Append("&HotelID=" + da.HotelCode);
builder.Append("&RoomID=" + da.roomid);
//协议里面没有的字段是否公区
builder.Append("&isPublicArea=1");
mx.msg = System.Web.HttpUtility.HtmlDecode(builder.ToString());
msgx.pmsid = pmsid;
msgx.msgx = mx;
string sendMsg = Newtonsoft.Json.JsonConvert.SerializeObject(msgx);
string Number = sdres[0];
var sdete = SqlSugarBase.Db.Queryable<CheckInInfo>().First(x => x.IdNumber == Number).picture;
FaceIssue issue = new FaceIssue()
{
faceSn = sn,
creationtime = DateTime.Now,
messageid = messageid,
issuestate = 0,
picture = "http://face.blv-oa.com/ImgServer/FileImage?url=" + sdete,
Factory = Factorysd,
APKVersion = deviced.APKVersion
};
SqlSugarBase.Db.Insertable(issue).ExecuteCommand();
message.Add(messageid);
pmsLog log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 300,
Data = sendMsg,
message = "已校验数据,准备向控制台发送,房号" + ridname + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
};
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
#region
/*改成MSMQ消息队列*/
//UdpCommunication.UdpState(sendMsg);
//Thread.Sleep(100);
//DateTime dateTimess = DateTime.Now;
//DateTime dateTime = DateTime.Now;
//TimeSpan ss = dateTime - dateTimess;
//string times = ss.TotalSeconds.ToString();
//float ssd = float.Parse(times);
//if (ssd > 4)
//{
// if (log.message == "已校验数据,准备向控制台发送")
// {
// DateTime nowtime = DateTime.Now.AddDays(-1);
// string infos = "已校验数据,准备向控制台发送";
// var logspms = SqlSugarBase.Db.Queryable<pmsLog>().Where(x => x.step == 2 && x.Creationtime >= nowtime && x.message.Contains(infos)).ToList();
// if (logspms.Count() > 10)
// {
// smsconts = smsconts + 1;
// //Responsesd info = SMSinfo.SMSNotify();
// }
// }
//}
//if (smsconts >= 10)
//{
// Responsesd responsesd = SMSinfo.SMSNotify();
// if (responsesd.SendStatusSet[0].Code == "ok" || responsesd.SendStatusSet[0].Code == "Ok")
// {
// GetProcess();
// smsconts = 0;
// }
//}
#endregion
//UdpCommunication.QueueSend(sendMsg);
string infods = UdpCommunication.QueueSend(sendMsg);
log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 301,
Data = sendMsg,
message = infods
};
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
Errormessageinfo errorinfo = new Errormessageinfo();
errorinfo.Errormessage(pmsid, log.message);
result.Status = 200;
result.Message = "退房成功";
//每次调用都会记录FaceIssue日志
foreach (var item in message)
{
SqlSugarBase.Db.Updateable<FaceIssue>().SetColumns(x => x.pmsid == pmsid.ToString()).Where(x => x.messageid == item).ExecuteCommand();
}
//return Json(result);
}//end of if (sn != null && sn != "")// 有人脸机退房。跟踪记录到 step 2 返回退房成功。
else // 普通退房,没有人脸机。跟踪记录到 step 8 返回退房成功。
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 302,
Data = "",
message = "已校验数据,此房间无人脸机,房号" + da.roomid + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 303,
Data = "",
message = $"无需处理,此房间无人脸机,房号" + da.roomid + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 200;
result.Message = "退房成功";
//return Json(result);
} //end of else // 普通退房,没有人脸机。跟踪记录到 step 8 返回退房成功。
#endregion
}
//不是公区
else
{
//没有关联公区
if (string.IsNullOrEmpty(tbl_room_basic_info.AssociatedPublicArea))
{
#region
List<string> sdre = SqlOperationsData.getCheck(da.HotelCode, da.roomid);
sn = SqlOperationsData.selectFace(da.HotelCode, da.roomid.ToString());
DeviceManage deviced = SqlSugarBase.GesmartDb().Queryable<DeviceManage>().First(x => x.SerialNo == sn);
string Factorysd = "";
if (deviced != null)
{
if (deviced.Factory == "移海")
{
Factorysd = "yh";
}
else if (deviced.Factory == "实义德")
{
Factorysd = "devs";
}
else if (deviced.Factory == "深圳嘉禾兴")
{
Factorysd = "szjhx";
}
else
{
Factorysd = " ";
}
}
pmsInterface pms = new pmsInterface
{
faceSN = sn,
hotelid = int.Parse(da.HotelCode),
room = int.Parse(da.roomid),
messageid = messageid,
pmsId = pmsid,
};
SqlOperationsData.revisepms(pms);
//住客错误。直接返回。跟踪记录到 step 8 返回无客人错误。
if (sdre.Count == 0)
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 304,
Data = "",
message = "已校验数据,此房间无人脸机,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 305,
Data = "",
message = $"无需处理,房间无客人入住,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 404;
result.Message = "此房间无客人入住,房号" + ridname + ",SN:" + sn + ",是否公区:否";
//return Json(result);
}
if (sn != null && sn != "")// 有人脸机退房。跟踪记录到 step 2 返回退房成功。
{
Entity.Rootinfo msgx = new Entity.Rootinfo();
Entity.msgx mx = new Entity.msgx();
//mx.msgid = Guid.NewGuid().ToString();
//messageid = mx.msgid;//保存信息id
mx.msgid = messageid;
mx.sn = sn;
mx.cmd = "removePerson";
StringBuilder builder = new StringBuilder();
builder.Append("key=abc");
builder.Append("&id=[]");
builder.Append("&HotelID=" + da.HotelCode);
builder.Append("&RoomID=" + da.roomid);
//协议里面没有的字段是否公区
builder.Append("&isPublicArea=0");
mx.msg = System.Web.HttpUtility.HtmlDecode(builder.ToString());
msgx.pmsid = pmsid;
msgx.msgx = mx;
string sendMsg = Newtonsoft.Json.JsonConvert.SerializeObject(msgx);
string Number = sdre[0];
var sdete = SqlSugarBase.Db.Queryable<CheckInInfo>().First(x => x.IdNumber == Number).picture;
FaceIssue issue = new FaceIssue()
{
faceSn = sn,
creationtime = DateTime.Now,
messageid = messageid,
issuestate = 0,
picture = "http://face.blv-oa.com/ImgServer/FileImage?url=" + sdete,
Factory = Factorysd,
APKVersion = deviced.APKVersion
};
SqlSugarBase.Db.Insertable(issue).ExecuteCommand();
message.Add(messageid);
pmsLog log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 306,
Data = sendMsg,
message = "已校验数据,准备向控制台发送,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
};
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
#region
/*改成MSMQ消息队列*/
//UdpCommunication.UdpState(sendMsg);
//Thread.Sleep(100);
//DateTime dateTimess = DateTime.Now;
//DateTime dateTime = DateTime.Now;
//TimeSpan ss = dateTime - dateTimess;
//string times = ss.TotalSeconds.ToString();
//float ssd = float.Parse(times);
//if (ssd > 4)
//{
// if (log.message == "已校验数据,准备向控制台发送")
// {
// DateTime nowtime = DateTime.Now.AddDays(-1);
// string infos = "已校验数据,准备向控制台发送";
// var logspms = SqlSugarBase.Db.Queryable<pmsLog>().Where(x => x.step == 2 && x.Creationtime >= nowtime && x.message.Contains(infos)).ToList();
// if (logspms.Count() > 10)
// {
// smsconts = smsconts + 1;
// //Responsesd info = SMSinfo.SMSNotify();
// }
// }
//}
//if (smsconts >= 10)
//{
// Responsesd responsesd = SMSinfo.SMSNotify();
// if (responsesd.SendStatusSet[0].Code == "ok" || responsesd.SendStatusSet[0].Code == "Ok")
// {
// GetProcess();
// smsconts = 0;
// }
//}
#endregion
string infods = UdpCommunication.QueueSend(sendMsg);
log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 307,
Data = sendMsg,
message = infods
};
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
Errormessageinfo errorinfo = new Errormessageinfo();
errorinfo.Errormessage(pmsid, log.message);
result.Status = 200;
result.Message = "退房成功";
//每次调用都会记录FaceIssue日志
foreach (var item in message)
{
SqlSugarBase.Db.Updateable<FaceIssue>().SetColumns(x => x.pmsid == pmsid.ToString()).Where(x => x.messageid == item).ExecuteCommand();
}
//return Json(result);
}//end of if (sn != null && sn != "")// 有人脸机退房。跟踪记录到 step 2 返回退房成功。
else // 普通退房,没有人脸机。跟踪记录到 step 8 返回退房成功。
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 308,
Data = "",
message = "已校验数据,此房间无人脸机,房号" + da.roomid + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 309,
Data = "",
message = $"无需处理,此房间无人脸机,房号" + da.roomid + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 200;
result.Message = "退房成功";
return Json(result);
} //end of else // 普通退房,没有人脸机。跟踪记录到 step 8 返回退房成功。
#endregion
}
//有关联公区
else
{
//删除公区用户人的信息
List<string> ints = new List<string>();
string guanlian = tbl_room_basic_info.AssociatedPublicArea;
string[] arr = guanlian.Split(',');
//ints.Add(da.roomid);
ints.AddRange(arr);
for (int j = 0; j < ints.Count(); j++)
{
#region
List<string> sdres = SqlOperationsData.getCheck(da.HotelCode, ints[j]);
sn = SqlOperationsData.selectFace(da.HotelCode, ints[j].ToString());
DeviceManage deviceds = SqlSugarBase.GesmartDb().Queryable<DeviceManage>().First(x => x.SerialNo == sn);
tbl_room_basic_info tbbasicinfo = SqlSugarBase.Gesmartblv_rcu_db().Queryable<tbl_room_basic_info>().First(x => x.IsDel == 0 && x.ROOM_OLD_ID == int.Parse(ints[j]));
string Factorysds = "";
if (deviceds != null)
{
if (deviceds.Factory == "移海")
{
Factorysds = "yh";
}
else if (deviceds.Factory == "实义德")
{
Factorysds = "devs";
}
else if (deviceds.Factory == "深圳嘉禾兴")
{
Factorysds = "szjhx";
}
else
{
Factorysds = " ";
}
}
pmsInterface pmss = new pmsInterface
{
faceSN = sn,
hotelid = int.Parse(da.HotelCode),
room = int.Parse(ints[j]),
messageid = messageid,
pmsId = pmsid,
};
SqlOperationsData.revisepms(pmss);
//住客错误。直接返回。跟踪记录到 step 8 返回无客人错误。
if (sdres.Count == 0)
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 310,
Data = "",
message = "已校验数据,此房间无人脸机,房号" + tbbasicinfo.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbbasicinfo.ROOM_NUMBER
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 311,
Data = "",
message = $"无需处理,房间无客人入住,房号" + tbbasicinfo.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbbasicinfo.ROOM_NUMBER
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 404;
result.Message = "此房间无客人入住,房号" + tbbasicinfo.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是";
}
if (sn != null && sn != "")// 有人脸机退房。跟踪记录到 step 2 返回退房成功。
{
Entity.Rootinfo msgx = new Entity.Rootinfo();
Entity.msgx mx = new Entity.msgx();
//mx.msgid = Guid.NewGuid().ToString();
//messageid = mx.msgid;//保存信息id
mx.msgid = messageid;
mx.sn = sn;
mx.cmd = "removePerson";
StringBuilder builder = new StringBuilder();
builder.Append("key=abc");
builder.Append("&id=[]");
builder.Append("&HotelID=" + da.HotelCode);
builder.Append("&RoomID=" + ints[j]);
builder.Append("&Groupid=1");
//协议里面没有的字段是否公区
builder.Append("&isPublicArea=1");
mx.msg = System.Web.HttpUtility.HtmlDecode(builder.ToString());
msgx.pmsid = pmsid;
msgx.msgx = mx;
string sendMsg = Newtonsoft.Json.JsonConvert.SerializeObject(msgx);
string Number = "";
if (sdres.Count != 0)
{
Number = sdres[0];
}
//string Number = sdres[0];
var sdete = SqlSugarBase.Db.Queryable<CheckInInfo>().First(x => x.IdNumber == Number).picture;
FaceIssue issue = new FaceIssue()
{
faceSn = sn,
creationtime = DateTime.Now,
messageid = messageid,
issuestate = 0,
picture = "http://face.blv-oa.com/ImgServer/FileImage?url=" + sdete,
Factory = Factorysds,
APKVersion = deviceds.APKVersion
};
SqlSugarBase.Db.Insertable(issue).ExecuteCommand();
message.Add(messageid);
pmsLog log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 312,
Data = sendMsg,
message = "已校验数据,准备向控制台发送,房号" + tbbasicinfo.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbbasicinfo.ROOM_NUMBER
};
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
#region
/*改成MSMQ消息队列*/
//UdpCommunication.UdpState(sendMsg);
//Thread.Sleep(100);
//DateTime dateTimess = DateTime.Now;
//DateTime dateTime = DateTime.Now;
//TimeSpan ss = dateTime - dateTimess;
//string times = ss.TotalSeconds.ToString();
//float ssd = float.Parse(times);
//if (ssd > 4)
//{
// if (log.message == "已校验数据,准备向控制台发送")
// {
// DateTime nowtime = DateTime.Now.AddDays(-1);
// string infos = "已校验数据,准备向控制台发送";
// var logspms = SqlSugarBase.Db.Queryable<pmsLog>().Where(x => x.step == 2 && x.Creationtime >= nowtime && x.message.Contains(infos)).ToList();
// if (logspms.Count() > 10)
// {
// smsconts = smsconts + 1;
// //Responsesd info = SMSinfo.SMSNotify();
// }
// }
//}
//if (smsconts >= 10)
//{
// Responsesd responsesd = SMSinfo.SMSNotify();
// if (responsesd.SendStatusSet[0].Code == "ok" || responsesd.SendStatusSet[0].Code == "Ok")
// {
// GetProcess();
// smsconts = 0;
// }
//}
#endregion
string infods = UdpCommunication.QueueSend(sendMsg);
log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 313,
Data = sendMsg,
message = infods
};
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
Errormessageinfo errorinfo = new Errormessageinfo();
errorinfo.Errormessage(pmsid, log.message);
result.Status = 200;
result.Message = "退房成功";
//每次调用都会记录FaceIssue日志
foreach (var item in message)
{
SqlSugarBase.Db.Updateable<FaceIssue>().SetColumns(x => x.pmsid == pmsid.ToString()).Where(x => x.messageid == item).ExecuteCommand();
}
//return Json(result);
}//end of if (sn != null && sn != "")// 有人脸机退房。跟踪记录到 step 2 返回退房成功。
else // 普通退房,没有人脸机。跟踪记录到 step 8 返回退房成功。
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 314,
Data = "",
message = "已校验数据,此房间无人脸机,房号" + tbbasicinfo.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbbasicinfo.ROOM_NUMBER
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 315,
Data = "",
message = $"无需处理,此房间无人脸机,房号" + tbbasicinfo.ROOM_NUMBER + ",SN:" + sn + ",是否公区:是",
HotelCode = hc,
roomid = tbbasicinfo.ROOM_NUMBER
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 200;
result.Message = "退房成功";
//return Json(result);
} //end of else // 普通退房,没有人脸机。跟踪记录到 step 8 返回退房成功。
#endregion
}
#region
//删除房间所有人信息
List<string> sdre = SqlOperationsData.getCheck(da.HotelCode, da.roomid);
sn = SqlOperationsData.selectFace(da.HotelCode, da.roomid.ToString());
DeviceManage deviced = SqlSugarBase.GesmartDb().Queryable<DeviceManage>().First(x => x.SerialNo == sn);
string Factorysd = "";
if (deviced != null)
{
if (deviced.Factory == "移海")
{
Factorysd = "yh";
}
else if (deviced.Factory == "实义德")
{
Factorysd = "devs";
}
else if (deviced.Factory == "深圳嘉禾兴")
{
Factorysd = "szjhx";
}
else
{
Factorysd = " ";
}
}
pmsInterface pms = new pmsInterface
{
faceSN = sn,
hotelid = int.Parse(da.HotelCode),
room = int.Parse(da.roomid),
messageid = messageid,
pmsId = pmsid,
};
SqlOperationsData.revisepms(pms);
//住客错误。直接返回。跟踪记录到 step 8 返回无客人错误。
if (sdre.Count == 0)
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 314,
Data = "",
message = "已校验数据,此房间无人脸机,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 315,
Data = "",
message = $"无需处理,房间无客人入住,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 404;
result.Message = "此房间无客人入住";
//return Json(result);不管房间住没有住人都下发一次删除人脸的动作2024-04-11 17:24:13做出的修改
}
if (sn != null && sn != "")// 有人脸机退房。跟踪记录到 step 2 返回退房成功。
{
Entity.Rootinfo msgx = new Entity.Rootinfo();
Entity.msgx mx = new Entity.msgx();
//mx.msgid = Guid.NewGuid().ToString();
//messageid = mx.msgid;//保存信息id
mx.msgid = messageid;
mx.sn = sn;
mx.cmd = "removeGroup";
StringBuilder builder = new StringBuilder();
builder.Append("key=abc");
//builder.Append("&id=[]");
builder.Append("&Group=1");
//协议里面没有的字段是否公区
builder.Append("&isPublicArea=0");
//builder.Append("&RoomID=" + da.roomid);
mx.msg = System.Web.HttpUtility.HtmlDecode(builder.ToString());
msgx.pmsid = pmsid;
msgx.msgx = mx;
string sendMsg = Newtonsoft.Json.JsonConvert.SerializeObject(msgx);
string Number = sdre[0];
var sdete = SqlSugarBase.Db.Queryable<CheckInInfo>().First(x => x.IdNumber == Number).picture;
FaceIssue issue = new FaceIssue()
{
faceSn = sn,
creationtime = DateTime.Now,
messageid = messageid,
issuestate = 0,
picture = "http://face.blv-oa.com/ImgServer/FileImage?url=" + sdete,
APKVersion = deviced.APKVersion
};
SqlSugarBase.Db.Insertable(issue).ExecuteCommand();
message.Add(messageid);
pmsLog log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 316,
Data = sendMsg,
message = "已校验数据,准备向控制台发送,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
};
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
#region
/*改成MSMQ消息队列*/
//UdpCommunication.UdpState(sendMsg);
//Thread.Sleep(100);
//DateTime dateTimess = DateTime.Now;
//DateTime dateTime = DateTime.Now;
//TimeSpan ss = dateTime - dateTimess;
//string times = ss.TotalSeconds.ToString();
//float ssd = float.Parse(times);
//if (ssd > 4)
//{
// if (log.message == "已校验数据,准备向控制台发送")
// {
// DateTime nowtime = DateTime.Now.AddDays(-1);
// string infos = "已校验数据,准备向控制台发送";
// var logspms = SqlSugarBase.Db.Queryable<pmsLog>().Where(x => x.step == 2 && x.Creationtime >= nowtime && x.message.Contains(infos)).ToList();
// if (logspms.Count() > 10)
// {
// smsconts = smsconts + 1;
// //Responsesd info = SMSinfo.SMSNotify();
// }
// }
//}
//if (smsconts >= 10)
//{
// Responsesd responsesd = SMSinfo.SMSNotify();
// if (responsesd.SendStatusSet[0].Code == "ok" || responsesd.SendStatusSet[0].Code == "Ok")
// {
// GetProcess();
// smsconts = 0;
// }
//}
#endregion
string infods = UdpCommunication.QueueSend(sendMsg);
log = new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 317,
Data = sendMsg,
message = infods
};
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
Errormessageinfo errorinfo = new Errormessageinfo();
errorinfo.Errormessage(pmsid, log.message);
result.Status = 200;
result.Message = "退房成功";
//每次调用都会记录FaceIssue日志
foreach (var item in message)
{
SqlSugarBase.Db.Updateable<FaceIssue>().SetColumns(x => x.pmsid == pmsid.ToString()).Where(x => x.messageid == item).ExecuteCommand();
}
//return Json(result);
}//end of if (sn != null && sn != "")// 有人脸机退房。跟踪记录到 step 2 返回退房成功。
else // 普通退房,没有人脸机。跟踪记录到 step 8 返回退房成功。
{
logList.Clear();
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 317,
Data = "",
message = "已校验数据,此房间无人脸机,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
logList.Add(new pmsLog
{
pmsid = pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 318,
Data = "",
message = $"无需处理,此房间无人脸机,房号" + ridname + ",SN:" + sn + ",是否公区:否",
HotelCode = hc,
roomid = ridname
});
SqlSugarBase.Db.Insertable(logList).ExecuteCommand();
result.Status = 200;
result.Message = "退房成功";
//return Json(result);
} //end of else // 普通退房,没有人脸机。跟踪记录到 step 8 返回退房成功。
}
#endregion
}
#endregion
}
catch (Exception e)
{
LogHelp.WriteExceptionLog(e);
result.Status = 500;
result.Message = e.Message;
}
return Json(result);
}
public class data
{
public string HotelCode { get; set; }
public string roomid { get; set; }
public string checkOutTime { get; set; }
public int pmsinfoid { get; set; }
}
/// <summary>
/// 网络图片保存到项目目录
/// </summary>
/// <param name="url"></param>
/// <param name="dtnow"></param>
public string Down(string url, string dtnow)
{
string tmp_ErrIdx = "0";
try
{
tmp_ErrIdx = "1";
WebRequest wreq = WebRequest.Create(url);
tmp_ErrIdx = "2";
HttpWebResponse wresp = (HttpWebResponse)wreq.GetResponse();
tmp_ErrIdx = "3";
Stream s = wresp.GetResponseStream();
tmp_ErrIdx = "4";
System.Drawing.Image img;
using (img = System.Drawing.Image.FromStream(s))
{
tmp_ErrIdx = "5";
string TimePath = HostingEnvironment.MapPath("~/Upload/Image/");//保存路径
if (!Directory.Exists(TimePath))//判断文件夹是否存在
{
Directory.CreateDirectory(TimePath);//不存在则创建文件夹
}
tmp_ErrIdx = "6";
string TimePathMake = HostingEnvironment.MapPath("~/Upload/Img/");//小图
if (!Directory.Exists(TimePathMake))//判断文件夹是否存在
{
Directory.CreateDirectory(TimePathMake);//不存在则创建文件夹
}
tmp_ErrIdx = "7";
img.Save(TimePath + dtnow + "_1" + ".jpg", ImageFormat.Jpeg);
tmp_ErrIdx = "8";
string res = MakeThumbnail(img, TimePathMake, 800, 800, "", dtnow);
//System.IO.File.Delete(TimePath + "1" + name + ".jpg");
//MemoryStream ms = new MemoryStream();
//img.Dispose();
string ftpURL = "auth.blv-oa.com:50/uts_Manager/oyl_FTP/Image";
//string ftpURLTwo = "auth.blv-oa.com:50/uts_Manager/oyl_FTP/Img";
//FtpUploadShow(TimePathMake + dtnow + ".jpg", ftpURLTwo);
return FtpUploadShow(res, ftpURL);
}
}
catch (Exception ex)
{
LogHelp.WriteExceptionLog(ex, "图片");
return "图片路径错误-" + tmp_ErrIdx;
}
}
/// <summary>
/// 上传到FTP
/// </summary>
/// <param name="filename"></param>
/// <param name="ftpServerIP"></param>
/// <returns></returns>
public string FtpUploadShow(string filename, string ftpServerIP)
{
//filename += ".jpg";
string ftpUserID = "uts_manager";//ftp账号
string ftpPassword = "uts_Inhaos@all";//ftp密码
FileInfo fileInf = new FileInfo(filename);
FtpWebRequest reqFTP;
ServicePointManager.ServerCertificateValidationCallback =
new RemoteCertificateValidationCallback(ValidateServerCertificate);
try
{
// 根据uri创建FtpWebRequest对象
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileInf.Name));
string s = fileInf.Name;
// ftp用户名和密码
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
// 默认为true连接不会被关闭
// 在一个命令之后被执行
reqFTP.KeepAlive = true;
//如果要连接的 FTP 服务器要求凭据并支持安全套接字层 (SSL),则应将 EnableSsl 设置为 true。如果不写会报出421错误服务不可用
reqFTP.EnableSsl = false;
// 指定执行什么命令
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
// 指定数据传输类型
reqFTP.UseBinary = true;
// 上传文件时通知服务器文件的大小
reqFTP.ContentLength = fileInf.Length;
// 缓冲大小设置为 10kb
int buffLength = 10480;
byte[] buff = new byte[buffLength];
int contentLen;
// 打开一个文件流 (System.IO.FileStream) 去读上传的文件
FileStream fs = fileInf.OpenRead();
try
{
// 把上传的文件写入流
Stream strm = reqFTP.GetRequestStream();
// 每次读文件流的buffLength kb
contentLen = fs.Read(buff, 0, buffLength);
// 流内容没有结束
while (contentLen != 0)
{
// 把内容从file stream 写入 upload stream
strm.Write(buff, 0, contentLen);
contentLen = fs.Read(buff, 0, buffLength);
}
// 关闭两个流
strm.Close();
fs.Close();
return fileInf.Name;
}
catch (Exception ex)
{
Response.Write("Upload Error" + ex.Message);
}
}
catch (Exception e)
{
Response.Write("Upload Error" + e.Message);
}
return null;
}
public static bool ValidateServerCertificate
(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
public string MakeThumbnail(Image originalImage, string thumbnailPath, int width, int height, string mode, string name)
{
try
{
ReturnResult result = new ReturnResult();
int towidth = width;
int toheight = height;
int x = 0;
int y = 0;
int ow = originalImage.Width;
int oh = originalImage.Height;
if (mode == "")
{
if (ow > oh)
{
mode = "W";
}
else
{
mode = "H";
}
}
switch (mode)
{
case "HW"://指定高宽缩放(可能变形)
break;
case "W"://指定宽,高按比例
toheight = originalImage.Height * width / originalImage.Width;
break;
case "H"://指定高,宽按比例
towidth = originalImage.Width * height / originalImage.Height;
break;
case "Cut"://指定高宽裁减(不变形)
if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
{
oh = originalImage.Height;
ow = originalImage.Height * towidth / toheight;
y = 0;
x = (originalImage.Width - ow) / 2;
}
else
{
ow = originalImage.Width;
oh = originalImage.Width * height / towidth;
x = 0;
y = (originalImage.Height - oh) / 2;
}
break;
default:
break;
}
using (Image bitmap = new System.Drawing.Bitmap(towidth, toheight))
{
//新建一个画板
using (Graphics g = System.Drawing.Graphics.FromImage(bitmap))
{
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空画布并以透明背景色填充
g.Clear(Color.Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
new Rectangle(x, y, ow, oh),
GraphicsUnit.Pixel);
if (!Directory.Exists(thumbnailPath))
{
Directory.CreateDirectory(thumbnailPath);
}
//以jpg格式保存缩略图
bitmap.Save(thumbnailPath + "2" + name + ".jpg");
ImgServerController.CompressImage(thumbnailPath + "2" + name + ".jpg", thumbnailPath + name + ".jpg");
//System.IO.File.Delete(thumbnailPath + "2" + name + ".jpg");
//originalImage.Dispose();
//bitmap.Dispose();
//g.Dispose();
return thumbnailPath + name + ".jpg";
//return thumbnailPath + info.Name;
//g.Dispose();
//bitmap.Dispose();
}
}
}
catch (Exception)
{
//LogHelp.WriteExceptionLog(ex, this.GetType().Name);
return null;
}
finally
{
//originalImage.Dispose();
}
}
/// <summary>
/// 图片是否合格
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public ActionResult VisitImg(string Imgurl)
{
try
{
WebRequest wreq = WebRequest.Create(Imgurl);
HttpWebResponse wresp = (HttpWebResponse)wreq.GetResponse();
Stream s = wresp.GetResponseStream();
System.Drawing.Image img;
img = System.Drawing.Image.FromStream(s);
if (img.Width > 900 || img.Height > 900)
{
return Json(new
{
Status = false,
Message = "图片不符合要求,注释:照片要求宽高640*480像素,分辨率最大支持1080*1080"
});
}
return Json(new
{
Status = true,
Message = "图片符合要求"
});
}
catch (Exception ex)
{
throw;
}
}
#endregion
//开启进程方法
public string GetProcess()
{
//找到所有进程
Process[] ps = Process.GetProcesses();
DataTable ProcessTable = new DataTable();
ProcessTable.Columns.Add("Name", typeof(string));
ProcessTable.Columns.Add("Start Time", typeof(DateTime));
ProcessTable.Columns.Add("CPU %", typeof(TimeSpan));
ProcessTable.Columns.Add("Threads", typeof(string));
ProcessTable.Columns.Add("Session ID", typeof(int));
ProcessTable.Columns.Add("Unique ID", typeof(int));
ProcessTable.Columns.Add("RAM", typeof(float));
ProcessTable.Columns.Add("Machine", typeof(string));
ProcessTable.Columns.Add("Priority", typeof(int));
foreach (Process Process in ps)
{
try
{
//找到具有指定名称的进程
// 换成你的exe名字 去掉exe
if (!Process.ProcessName.ToUpper().Contains("TESTWEBSOCKET"))
continue;
string pName = Process.ProcessName;
DateTime pStartTime = Process.StartTime;
TimeSpan pProcTime = Process.TotalProcessorTime;
string pThreads = Process.Threads.ToString();
int pSessionId = Process.SessionId;
int pId = Process.Id;
long pRam = Process.VirtualMemorySize64;
string pMachineName = Process.MachineName;
int pPriority = Process.BasePriority;
//杀死进程
Process.Kill();
ProcessTable.Rows.Add(pName
, pStartTime
, pProcTime
, pThreads
, pSessionId
, pId
, pRam
, pMachineName
, pPriority);
}
catch (Exception e)
{
Logs.WriteLog("重新启动进成功" + e);
}
}
// 换成你的exe路径
Process.Start(@"C:\FaceConsole\bin6\Release\TestWebSocket.exe");
return JsonConvert.SerializeObject(ProcessTable);
}
/// <summary>
/// 关闭进程
/// </summary>
/// <returns></returns>
public string GetProcessKill()
{
//找到所有进程
Process[] ps = Process.GetProcesses();
DataTable ProcessTable = new DataTable();
ProcessTable.Columns.Add("Name", typeof(string));
ProcessTable.Columns.Add("Start Time", typeof(DateTime));
ProcessTable.Columns.Add("CPU %", typeof(TimeSpan));
ProcessTable.Columns.Add("Threads", typeof(string));
ProcessTable.Columns.Add("Session ID", typeof(int));
ProcessTable.Columns.Add("Unique ID", typeof(int));
ProcessTable.Columns.Add("RAM", typeof(float));
ProcessTable.Columns.Add("Machine", typeof(string));
ProcessTable.Columns.Add("Priority", typeof(int));
foreach (Process Process in ps)
{
try
{
//找到具有指定名称的进程
// 换成你的exe名字 去掉exe
if (!Process.ProcessName.ToUpper().Contains("TESTWEBSOCKET"))
continue;
string pName = Process.ProcessName;
DateTime pStartTime = Process.StartTime;
TimeSpan pProcTime = Process.TotalProcessorTime;
string pThreads = Process.Threads.ToString();
int pSessionId = Process.SessionId;
int pId = Process.Id;
long pRam = Process.VirtualMemorySize64;
string pMachineName = Process.MachineName;
int pPriority = Process.BasePriority;
//杀死进程
Process.Kill();
ProcessTable.Rows.Add(pName
, pStartTime
, pProcTime
, pThreads
, pSessionId
, pId
, pRam
, pMachineName
, pPriority);
}
catch (Exception e)
{
}
}
// 换成你的exe路径
Process.Start(@"C:\FaceConsole\bin6\Release\TestWebSocket.exe");
return JsonConvert.SerializeObject(ProcessTable);
}
public static void IssueFacemachine(object issueinfo)
{
ReturnResult result = new ReturnResult();
string sendMsg;
try
{
threadinfo faceinfo = (issueinfo as threadinfo);
StringBuilder sbperson = new StringBuilder();
sbperson.Append("key=abc");
sbperson.Append("&id=" + faceinfo.IDNumber);
sbperson.Append("&name=" + faceinfo.LodgerNmae);
sbperson.Append("&IC_NO=0001");
sbperson.Append("&ID_NO=" + faceinfo.IDNumber);
sbperson.Append("&photo=<" + faceinfo.picture + ">");
sbperson.Append("&startTs=-1");
sbperson.Append("&endTs=-1");
sbperson.Append("&passCount=10000");
//追加酒店id和房间id
sbperson.Append("&HotelID=" + faceinfo.HotelCode);
sbperson.Append("&RoomID=" + faceinfo.roomid);
//协议里面没有的字段是否公区
sbperson.Append("&isPublicArea=1");
//sbperson.Append("&Groupid=" + ci.Groupid);
Entity.Rootinfo msgx = new Entity.Rootinfo();
List<Entity.Rootinfo> rootinfos = new List<Entity.Rootinfo>();
Entity.msgx ms = new Entity.msgx();
ms.msgid = faceinfo.messageid;
ms.sn = faceinfo.SN;
ms.cmd = "setPerson";
ms.msg = System.Web.HttpUtility.HtmlDecode(sbperson.ToString());
msgx.msgx = ms;
msgx.pmsid = faceinfo.pmsid;
transferFace tf = new transferFace()
{
faceSN = faceinfo.SN,
faultState = 0,
infoid = msgx.msgx.msgid,
creationTime = DateTime.Now
};
SqlSugarBase.Db.Insertable(tf).ExecuteCommand();
rootinfos.Add(msgx);//存储
sendMsg = Newtonsoft.Json.JsonConvert.SerializeObject(msgx);
pmsLog log = null;
if (faceinfo.offLineSend)
{
log = new pmsLog
{
pmsid = faceinfo.pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 319,
Data = sendMsg,
message = "已校验数据,准备向控制台发送,房号" + faceinfo.roomid + ",SN:" + faceinfo.SN + ",是否公区:是"
};
}
else
{
log = new pmsLog
{
pmsid = faceinfo.pmsid,
app = 1,
Creationtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
step = 320,
Data = sendMsg,
message = "已校验数据,准备向控制台发送,房号" + faceinfo.roomid + ",SN:" + faceinfo.SN + ",是否公区:是"
};
}
SqlSugarBase.Db.Insertable(log).ExecuteCommand();
UdpCommunication.QueueSend(sendMsg);
Errormessageinfo errorinfo = new Errormessageinfo();
errorinfo.Errormessage(faceinfo.pmsid, log.message);
/*改成MSMQ消息队列*/
//UdpCommunication.UdpState(sendMsg);//下发数据给控制台
result.Status = 200;
result.Message = "开房成功";
//return result;
Thread.Sleep(Interval);
}
catch (Exception e)
{
result.Status = 500;
result.Message = e.Message;
LogHelp.WriteExceptionLog(e, "开房接口多线程错误");
}
}
}
public static class SMSinfo
{
public static Responsesd SMSNotify()
{
Responsesd shujiu = new Responsesd();
try
{
// 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey此处还需注意密钥对的保密
// 代码泄露可能会导致 SecretId 和 SecretKey 泄露并威胁账号下所有资源的安全性。以下代码示例仅供参考建议采用更安全的方式来使用密钥请参见https://cloud.tencent.com/document/product/1278/85305
// 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
Credential cred = new Credential
{
SecretId = "AKID99vRlvskQs52khPs78uQhkbKwaCkDeHo",
//SecretId = "AKID99vRIvskQs52khPs78uQhkbKwaCkDeHo",
SecretKey = "RhmgMn37xZyAFPQSFn14uhQ3a4QgzJby"
//SecretKey = "RhmgMn37xZyAFPQSFn14uhQ3a4QgzJby"
};
// 实例化一个client选项可选的没有特殊需求可以跳过
ClientProfile clientProfile = new ClientProfile();
// 实例化一个http选项可选的没有特殊需求可以跳过
HttpProfile httpProfile = new HttpProfile();
httpProfile.Endpoint = ("sms.tencentcloudapi.com");
clientProfile.HttpProfile = httpProfile;
// 实例化要请求产品的client对象,clientProfile是可选的
//SmsClient client = new SmsClient(cred, "", clientProfile);
SmsClient client = new SmsClient(cred, "ap-guangzhou", clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
SendSmsRequest req = new SendSmsRequest();
req.PhoneNumberSet = new string[] { "13509214696" };
req.SmsSdkAppId = "1400871751";
req.SignName = "东莞市英皓思科技有限公司";
req.TemplateId = "2000581";
// 返回的resp是一个SendSmsResponse的实例与请求对象对应
SendSmsResponse resp = client.SendSmsSync(req);
var abs = AbstractModel.ToJsonString(resp);
shujiu = JsonConvert.DeserializeObject<Responsesd>(abs);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
return shujiu;
}
}
public class Responsesd
{
public List<SendStatusSetsdf> SendStatusSet { get; set; }
public string RequestId { get; set; }
}
public class SendStatusSetsdf
{
public string PhoneNumber { get; set; }
public string SerialNo { get; set; }
public int Fee { get; set; }
public string SessionContext { get; set; }
public string Code { get; set; }
public string Message { get; set; }
public string IsoCode { get; set; }
}
public class threadinfo : portinfo
{
public bool offLineSend { get; set; }
public int pmsid { get; set; }
public string SN { get; set; }
public string messageid { get; set; }
}
}