Files

3948 lines
212 KiB
C#
Raw Permalink Normal View History

2025-11-25 17:41:24 +08:00
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; }
}
}