2025-12-11 09:17:16 +08:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Collections.Concurrent;
|
|
|
|
|
|
using System.Data;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Linq.Dynamic;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
using Dao;
|
|
|
|
|
|
using Domain;
|
|
|
|
|
|
using RCUHost;
|
|
|
|
|
|
using System.Xml;
|
|
|
|
|
|
using Common;
|
|
|
|
|
|
using System.IO;
|
|
|
|
|
|
using Dao.Implement;
|
|
|
|
|
|
using RestSharp;
|
|
|
|
|
|
using CommonEntity;
|
|
|
|
|
|
using System.Configuration;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Service.Implement
|
|
|
|
|
|
{
|
|
|
|
|
|
public class HostManager : GenericManagerBase<Host>, IHostManager
|
|
|
|
|
|
{
|
|
|
|
|
|
#region Properties
|
|
|
|
|
|
|
|
|
|
|
|
private static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(HostManager));
|
|
|
|
|
|
|
|
|
|
|
|
public IUpdateHostReceiver UpdateHostReceiver { get; set; }
|
|
|
|
|
|
public IUpdateHostFTPReceiver UpdateHostFTPReceiver { get; set; }
|
|
|
|
|
|
public IUpdateRCUFileReceiver UpdateRCUFileReceiver { get; set; }
|
|
|
|
|
|
public IAuthorizationReceiver AuthorizationReceiver { get; set; }
|
|
|
|
|
|
//public IUpdateConfigReceiver UpdateConfigReceiver { get; set; }
|
|
|
|
|
|
//public IConnectingRoomReceiver ConnectingRoomReceiver { get; set; }
|
|
|
|
|
|
//public IHeartReceiver HeartReceiver { get; set; }
|
|
|
|
|
|
//public IRoomTypeRepository RoomTypeRepository { get; set; }
|
|
|
|
|
|
public IAlarmSettingRepository AlarmSettingRepository { get; set; }
|
|
|
|
|
|
public IGroupRepository GroupRepository { get; set; }
|
|
|
|
|
|
public IRoomTypeModalRepository RoomTypeModalRepository { get; set; }
|
|
|
|
|
|
public IRoomTypeAirRepository RoomTypeAirRepository { get; set; }
|
|
|
|
|
|
public IHostAirRepository HostAirRepository { get; set; }
|
|
|
|
|
|
public IHostModalRepository HostModalRepository { get; set; }
|
|
|
|
|
|
public INetworkSettingReceiver NetworkSettingReceiver { get; set; }
|
|
|
|
|
|
public IRoomStatusRepository RoomStatusRepository { get; set; }
|
|
|
|
|
|
public IRoomStatusChangedReceiver RoomStatusChangedReceiver { get; set; }
|
|
|
|
|
|
public IRoomServiceRepository RoomServiceRepository { get; set; }
|
|
|
|
|
|
public ISysHotelRepository SysHotelRepository { get; set; }
|
|
|
|
|
|
public IDeviceSecretReceiver DeviceSecretReceiver { get; set; }
|
|
|
|
|
|
public IHostSecretReceiver HostSecretReceiver { get; set; }
|
|
|
|
|
|
public IHostWordsReportRepository HostWordsReportRepository { get; set; }
|
|
|
|
|
|
public IHostFaultsRepository HostFaultsRepository { get; set; }
|
|
|
|
|
|
public IHostFaultRecordsRepository HostFaultRecordsRepository { get; set; }
|
|
|
|
|
|
public IHostSceneRepository HostSceneRepository { get; set; }
|
|
|
|
|
|
public IHostRoomCardRepository HostRoomCardRepository { get; set; }
|
|
|
|
|
|
public IHostRegisterReceiver HostRegisterReceiver { get; set; }
|
|
|
|
|
|
public IHostRegisterSetReceiver HostRegisterSetReceiver { get; set; }
|
|
|
|
|
|
public ISysOauth2Repository SysOauth2Repository { get; set; }
|
|
|
|
|
|
public IHotelSeasonRepository HotelSeasonRepository { get; set; }
|
|
|
|
|
|
public IHotelAirControlRepository HotelAirControlRepository { get; set; }
|
|
|
|
|
|
public IHostModalManager HostModalManager { get; set; }
|
|
|
|
|
|
public IHostRepository HostRepository { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 阿宝添加的功能
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public IKongTiaoTimerManager KongTiaoManager { get; set; }
|
|
|
|
|
|
public IRoomNoBodyMananger RoomNoBodyMananger { get; set; }
|
|
|
|
|
|
public IRoomNoBodyLogMananger RoomNoBodyLogMananger { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
public IECO_DetailRepository ECO_DetailRepository { get; set; }
|
|
|
|
|
|
public IECO_SettingRepository ECO_SettingRepository { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public IT_FTPReceiver TFTP_LogReceiver { get; set; }
|
|
|
|
|
|
public IT_FTPSettingReceiver TFTP_LogSettingReceiver { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 透传功能
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public IHostTouChuan HostUDPTouChuan { get; set; }
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
//private bool GetHostStatus(string hostNumber)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// return Common.MemoryCacheHelper.Contains(hostNumber);
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
#region Public Methods
|
|
|
|
|
|
|
|
|
|
|
|
public override Host Get(object id)
|
|
|
|
|
|
{
|
|
|
|
|
|
var host = base.Get(id);
|
|
|
|
|
|
if (host != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
host.Status = Common.CSRedisCacheHelper.Contains(host.HostNumber, host.MAC);
|
|
|
|
|
|
}
|
|
|
|
|
|
return host;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override IList<Host> LoadAll()
|
|
|
|
|
|
{
|
|
|
|
|
|
IList<Host> list = base.LoadAll();
|
|
|
|
|
|
foreach (var host in list)
|
|
|
|
|
|
{
|
|
|
|
|
|
host.Status = Common.CSRedisCacheHelper.Contains(host.HostNumber, host.MAC);
|
|
|
|
|
|
}
|
|
|
|
|
|
return list;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public IList<Host> LoadAll(string order, string sort, Group group, string roomNumber)
|
|
|
|
|
|
{
|
|
|
|
|
|
IList<Group> groups = GroupRepository.GetGroupList(group);
|
|
|
|
|
|
IList<Host> hosts = ((IHostRepository)CurrentRepository).LoadAll(order, sort, groups, roomNumber);
|
|
|
|
|
|
foreach (var host in hosts)
|
|
|
|
|
|
{
|
|
|
|
|
|
host.Status = Common.CSRedisCacheHelper.Contains(host.HostNumber, host.MAC);
|
|
|
|
|
|
var table = RoomServiceRepository.LoadAll().Where(r => r.HostID == host.ID && r.AlarmType == 'B').ToList();
|
|
|
|
|
|
//foreach (var roomService in table)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// if (roomService.AlarmCode == "B01")
|
|
|
|
|
|
// {
|
|
|
|
|
|
// host.SOS = roomService.Status;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else if (roomService.AlarmCode == "B02")
|
|
|
|
|
|
// {
|
|
|
|
|
|
// host.RequestDNDST = roomService.Status;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else if (roomService.AlarmCode == "B03")
|
|
|
|
|
|
// {
|
|
|
|
|
|
// host.RequestClear = roomService.Status;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else if (roomService.AlarmCode == "B04")
|
|
|
|
|
|
// {
|
|
|
|
|
|
// host.RequestService = roomService.Status;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else if (roomService.AlarmCode == "B05")
|
|
|
|
|
|
// {
|
|
|
|
|
|
// host.RequestCheckOut = roomService.Status;
|
|
|
|
|
|
// }
|
|
|
|
|
|
//}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return hosts;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public IList<Host> LoadAll(Group group)
|
|
|
|
|
|
{
|
|
|
|
|
|
IList<Group> groups = GroupRepository.GetGroupList(group);
|
|
|
|
|
|
IList<Host> hosts = ((IHostRepository)CurrentRepository).LoadAll(groups);
|
|
|
|
|
|
foreach (var host in hosts)
|
|
|
|
|
|
{
|
|
|
|
|
|
host.Status = Common.CSRedisCacheHelper.Contains(host.HostNumber, host.MAC);
|
|
|
|
|
|
}
|
|
|
|
|
|
return hosts;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public IList<Host> LoadAll(string hotelCode)
|
|
|
|
|
|
{
|
|
|
|
|
|
var hotel = SysHotelRepository.GetByCode(hotelCode);
|
|
|
|
|
|
return ((IHostRepository)CurrentRepository).LoadAll(hotel.ID, "");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public IList<Host> LoadAll(int hotelID, string roomNumber = "")
|
|
|
|
|
|
{
|
|
|
|
|
|
IList<Host> hosts = ((IHostRepository)CurrentRepository).LoadAll(hotelID, roomNumber);
|
|
|
|
|
|
foreach (var host in hosts)
|
|
|
|
|
|
{
|
|
|
|
|
|
host.Status = Common.CSRedisCacheHelper.Contains(host.HostNumber, host.MAC);
|
|
|
|
|
|
}
|
|
|
|
|
|
return hosts;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public IList<Host> LoadAll(IList<Group> groupList, RoomStatus roomStatus, RoomType roomType)
|
|
|
|
|
|
{
|
|
|
|
|
|
var hostList = ((IHostRepository)CurrentRepository).LoadAll(groupList, roomStatus, roomType);
|
|
|
|
|
|
foreach (var host in hostList)
|
|
|
|
|
|
{
|
|
|
|
|
|
host.Status = Common.CSRedisCacheHelper.Contains(host.HostNumber, host.MAC);
|
|
|
|
|
|
}
|
|
|
|
|
|
return hostList;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public IList<Host> LoadAllByPage(out long total, int page, int rows, string order, string sort, int groupId, int hotelID, string roomNumber, string mac, string roomType, int isSyncRoomNumber)
|
|
|
|
|
|
{
|
|
|
|
|
|
return ((IHostRepository)CurrentRepository).LoadAllByPage(out total, page, rows, order, sort, groupId, hotelID, roomNumber, mac, roomType, isSyncRoomNumber).ToList();
|
|
|
|
|
|
//var list = CurrentRepository.LoadAll();
|
|
|
|
|
|
//if (groupId.HasValue && groupId != 1)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// list = list.Where(r => r.Group != null && r.Group.ID == groupId);
|
|
|
|
|
|
//}
|
|
|
|
|
|
//total = list.LongCount();
|
|
|
|
|
|
//list = list.OrderBy(sort + " " + order);
|
|
|
|
|
|
//list = list.Skip((page - 1) * rows).Take(rows);
|
|
|
|
|
|
//return list.ToList();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public DataTable LoadHostWithPage(out long total, int page, int rows, string order, string sort, int groupId, int hotelID, string roomNumber, string mac, string roomType)
|
|
|
|
|
|
{
|
|
|
|
|
|
return ((IHostRepository)CurrentRepository).LoadHostWithPage(out total, page, rows, order, sort, groupId, hotelID, roomNumber, mac, roomType);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public IList<Room> LoadRooms(out long total, int page, int rows, int? groupId, int lang, int hotelID)
|
|
|
|
|
|
{
|
|
|
|
|
|
return ((IHostRepository)CurrentRepository).LoadRooms(out total, page, rows, groupId, lang, hotelID);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public IList<string> LoadRoomNumbers()
|
|
|
|
|
|
{
|
|
|
|
|
|
return ((IHostRepository)CurrentRepository).LoadAll().Select(r => r.RoomNumber).ToList<string>();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public DataTable LoadRoomNumbers(Group group, int hotelID)
|
|
|
|
|
|
{
|
|
|
|
|
|
return ((IHostRepository)CurrentRepository).LoadRoomNumbers(group, hotelID);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override object Save(Host entity)
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
//SysHotel sysHotel = SysHotelRepository.Get(entity.SysHotel.ID);
|
|
|
|
|
|
//if (sysHotel == null) { throw new ApplicationException("无效的酒店!"); }
|
|
|
|
|
|
//RoomType roomType = RoomTypeRepository.Get(entity.RoomType.ID);
|
|
|
|
|
|
//if (roomType == null) { throw new ApplicationException("无效的房型!"); }
|
|
|
|
|
|
if (entity.ID == 0)//新增
|
|
|
|
|
|
{
|
|
|
|
|
|
entity.RegisterDate = DateTime.Now;
|
|
|
|
|
|
entity.RoomStatus = new RoomStatus { ID = 16 };
|
|
|
|
|
|
entity.SafeStatus = 2;
|
|
|
|
|
|
entity.Version = "C";//界面上新增的主机都属于C系列主机
|
|
|
|
|
|
entity.ExpireTime = Convert.ToDateTime("2100-12-31");//默认有效期永久
|
|
|
|
|
|
entity.Last_Modified_Time = DateTime.Now;//标识有更新
|
|
|
|
|
|
base.Save(entity);
|
|
|
|
|
|
Task.Factory.StartNew((state) =>
|
|
|
|
|
|
{
|
|
|
|
|
|
var entity1 = state as Host;
|
|
|
|
|
|
UpdateHostModals(entity1);
|
|
|
|
|
|
}, entity);
|
|
|
|
|
|
//更新回路
|
|
|
|
|
|
return entity;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
var host = CurrentRepository.Get(entity.ID);
|
|
|
|
|
|
|
|
|
|
|
|
Host host_take = null;
|
|
|
|
|
|
string Key = CacheKey.HostInfo_Key_HostNumber + "_" + host.HostNumber;
|
|
|
|
|
|
object obj = MemoryCacheHelper.Get(Key);
|
|
|
|
|
|
if (obj != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
host_take = obj as Host;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int oldRoomTypeID = host.RoomType.ID;
|
|
|
|
|
|
bool isChanged = false;
|
|
|
|
|
|
if (host.RoomNumber != entity.RoomNumber)
|
|
|
|
|
|
{
|
|
|
|
|
|
host.RoomNumber = entity.RoomNumber;
|
|
|
|
|
|
isChanged = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (host.MAC != entity.MAC)
|
|
|
|
|
|
{
|
|
|
|
|
|
host.MAC = entity.MAC;
|
|
|
|
|
|
isChanged = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (host.SysHotel.ID != entity.SysHotel.ID)
|
|
|
|
|
|
{
|
|
|
|
|
|
host.SysHotel = entity.SysHotel;
|
|
|
|
|
|
isChanged = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (host.RoomType.ID != entity.RoomType.ID)
|
|
|
|
|
|
{
|
|
|
|
|
|
host.RoomType = entity.RoomType;
|
|
|
|
|
|
isChanged = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (host.Remark != entity.Remark.Trim())
|
|
|
|
|
|
{
|
|
|
|
|
|
host.Remark = entity.Remark.Trim();
|
|
|
|
|
|
isChanged = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (host.ServerIP != entity.ServerIP.Trim())
|
|
|
|
|
|
{
|
|
|
|
|
|
host.ServerIP = entity.ServerIP.Trim();
|
|
|
|
|
|
isChanged = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (host.ServerPort != entity.ServerPort)
|
|
|
|
|
|
{
|
|
|
|
|
|
host.ServerPort = entity.ServerPort;
|
|
|
|
|
|
isChanged = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (host.FCS_locationUUID != entity.FCS_locationUUID)
|
|
|
|
|
|
{
|
|
|
|
|
|
host.FCS_locationUUID = entity.FCS_locationUUID;
|
|
|
|
|
|
isChanged = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (isChanged) { host.Last_Modified_Time = DateTime.Now; }
|
|
|
|
|
|
host.HostNumber = entity.HostNumber;
|
|
|
|
|
|
host.Group = entity.Group;
|
|
|
|
|
|
if (string.IsNullOrEmpty(host.Version)) { host.Version = "C"; }
|
|
|
|
|
|
host.IsSyncRoomNumber = entity.IsSyncRoomNumber;
|
|
|
|
|
|
host.IsAutoUpdate = entity.IsAutoUpdate;
|
|
|
|
|
|
host.IPType = entity.IPType;
|
|
|
|
|
|
if (host.IPType == 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
host.LanIP = entity.LanIP.Trim();
|
|
|
|
|
|
host.LanPort = entity.LanPort;
|
|
|
|
|
|
host.SubnetMask = entity.SubnetMask.Trim();
|
|
|
|
|
|
host.Gateway = entity.Gateway.Trim();
|
|
|
|
|
|
host.DNS = entity.DNS.Trim();
|
|
|
|
|
|
}
|
|
|
|
|
|
base.Update(host);
|
|
|
|
|
|
if (host_take != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
host_take.ServerPort = host.ServerPort;
|
|
|
|
|
|
host_take.ServerIP = host.ServerIP;
|
|
|
|
|
|
host_take.FCS_locationUUID = host.FCS_locationUUID;
|
|
|
|
|
|
|
|
|
|
|
|
host.RoomType = host.RoomType;
|
|
|
|
|
|
host_take.MAC = host.MAC;
|
|
|
|
|
|
host_take.Version = host.Version;
|
|
|
|
|
|
host_take.LanIP = host.LanIP;
|
|
|
|
|
|
host_take.LanPort = host.LanPort;
|
|
|
|
|
|
host_take.SubnetMask = host.SubnetMask;
|
|
|
|
|
|
host_take.Gateway = host.Gateway;
|
|
|
|
|
|
host_take.DNS = host.DNS;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (HostModalRepository.LoadByHostID(entity.ID).ToList().Count == 0 || host.RoomType == null || host.RoomType.ID != oldRoomTypeID)
|
|
|
|
|
|
{
|
|
|
|
|
|
Task.Factory.StartNew((state) =>
|
|
|
|
|
|
{
|
|
|
|
|
|
var entity1 = state as Host;
|
|
|
|
|
|
UpdateHostModals(entity1);
|
|
|
|
|
|
}, entity);//更新回路
|
|
|
|
|
|
}
|
|
|
|
|
|
return host;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new ApplicationException(ex.ToString());
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void SaveSmartVoiceBinding(Host entity)
|
|
|
|
|
|
{
|
|
|
|
|
|
var host = CurrentRepository.Get(entity.ID);
|
|
|
|
|
|
host.XiaoDuCUID = entity.XiaoDuCUID;
|
|
|
|
|
|
host.TCLCUID = entity.TCLCUID;
|
|
|
|
|
|
host.TCLSkillID = entity.TCLSkillID;
|
|
|
|
|
|
host.HuaWeiCUID = entity.HuaWeiCUID;
|
|
|
|
|
|
host.TianMaoCUID = entity.TianMaoCUID;
|
|
|
|
|
|
host.HiWeiCUID = entity.HiWeiCUID;
|
|
|
|
|
|
host.RokidWebhookUrl = entity.RokidWebhookUrl;
|
|
|
|
|
|
host.IsWelcomeDisableTime = entity.IsWelcomeDisableTime;
|
|
|
|
|
|
host.DisableStartTime = entity.DisableStartTime;
|
|
|
|
|
|
host.DisableEndTime = entity.DisableEndTime;
|
|
|
|
|
|
|
|
|
|
|
|
//string Key = CacheKey.HostInfo_Key_HostNumber + "_" + host.HostNumber;
|
|
|
|
|
|
//object obj = MemoryCacheHelper.Get(Key);
|
|
|
|
|
|
//if (obj != null)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// host = obj as Host;
|
|
|
|
|
|
// host.XiaoDuCUID;
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
((IHostRepository)CurrentRepository).Update(host);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public Host GetByMAC(string mac, int hotelID)
|
|
|
|
|
|
{
|
|
|
|
|
|
return (CurrentRepository as Dao.IHostRepository).GetByMAC(mac, hotelID);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public IList<Host> LoadByMac(string mac)
|
|
|
|
|
|
{
|
|
|
|
|
|
return (CurrentRepository as Dao.IHostRepository).LoadByMac(mac);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public Host GetByXiaoDuCUID(string cuid)
|
|
|
|
|
|
{
|
|
|
|
|
|
return (CurrentRepository as Dao.IHostRepository).GetByXiaoDuCUID(cuid);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public Host GetByTianMaoCUID(string cuid)
|
|
|
|
|
|
{
|
|
|
|
|
|
return (CurrentRepository as Dao.IHostRepository).GetByTianMaoCUID(cuid);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public Host GetByHuaWeiCUID(string cuid)
|
|
|
|
|
|
{
|
|
|
|
|
|
return (CurrentRepository as Dao.IHostRepository).GetByHuaWeiCUID(cuid);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public Host GetByTCLCUID(string cuid)
|
|
|
|
|
|
{
|
|
|
|
|
|
return (CurrentRepository as Dao.IHostRepository).GetByTCLCUID(cuid);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public Host GetByRoomNumber(string roomNumber, int hotelID)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (String.IsNullOrEmpty(roomNumber))
|
|
|
|
|
|
{
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
return CurrentRepository.LoadAll().FirstOrDefault(r => r.RoomNumber == roomNumber && r.SysHotel.ID == hotelID && !r.IsDeleted);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public Host GetByRoomNumber(string roomNumber, string hotelCode)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (String.IsNullOrEmpty(roomNumber))
|
|
|
|
|
|
{
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
return CurrentRepository.LoadAll().FirstOrDefault(r => r.RoomNumber == roomNumber && r.SysHotel.Code == hotelCode && !r.IsDeleted);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public Host GetByRoomNumberSupply(string roomNumber)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (String.IsNullOrEmpty(roomNumber))
|
|
|
|
|
|
{
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
return CurrentRepository.LoadAll().FirstOrDefault(r => r.RoomNumber == roomNumber && !r.IsDeleted);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//public IList<Host> GetConnectRoomHosts(Host host)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// return ((IHostRepository)CurrentRepository).GetConnectRoomHosts(host);
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
public string GetRoomNumber(int hostID)
|
|
|
|
|
|
{
|
|
|
|
|
|
return CurrentRepository.LoadAll().Where(r => r.ID == hostID && !r.IsDeleted).Select(r => r.RoomNumber).FirstOrDefault();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public IList<Host> GetByGroup(Group group)
|
|
|
|
|
|
{
|
|
|
|
|
|
return LoadAll().Where(r => r.Group == group).ToList();
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 删除主机的同时,删除其关联的数据
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="idList"></param>
|
|
|
|
|
|
public override void Delete(IList<object> idList)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (int id in idList)
|
|
|
|
|
|
{
|
|
|
|
|
|
HostModalRepository.DeteleByHostID(id);//删除 HostModal
|
|
|
|
|
|
HostWordsReportRepository.DeteleByHostID(id);
|
|
|
|
|
|
HostFaultsRepository.DeteleByHostID(id);
|
|
|
|
|
|
//HostFaultRecordsRepository.DeteleByHostID(id);
|
|
|
|
|
|
HostSceneRepository.DeteleByHostID(id);
|
|
|
|
|
|
HostRoomCardRepository.DeteleByHostID(id);
|
|
|
|
|
|
}
|
|
|
|
|
|
((IHostRepository)(this.CurrentRepository)).Delete(idList);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void UpdateHost(HostUpdate hostUpdate, FileType fileType, string fileHref, string fileMd5, IList<Host> hosts, bool isTFTP)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (hostUpdate.FileType)
|
|
|
|
|
|
{
|
|
|
|
|
|
case FileType.RCUValidate:
|
|
|
|
|
|
UpdateRCUFileReceiver.Update(hostUpdate, hosts);
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
if (isTFTP)
|
|
|
|
|
|
{
|
|
|
|
|
|
UpdateHostReceiver.Update(hostUpdate, fileType, fileHref, fileMd5, hosts);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
UpdateHostFTPReceiver.Update(hostUpdate, fileType, fileHref, fileMd5, hosts);
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 针对C主机升级
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="hostUpdate"></param>
|
|
|
|
|
|
/// <param name="fileType"></param>
|
|
|
|
|
|
/// <param name="fileHref"></param>
|
|
|
|
|
|
/// <param name="fileMd5"></param>
|
|
|
|
|
|
/// <param name="hosts"></param>
|
|
|
|
|
|
public void UpdateHostC(HostUpdate hostUpdate, FileType fileType, string fileHref, string fileMd5, IList<Host> hosts)
|
|
|
|
|
|
{
|
|
|
|
|
|
UpdateHostReceiver.Update(hostUpdate, fileType, fileHref, fileMd5, hosts);
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 修改房态
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="host"></param>
|
|
|
|
|
|
/// <param name="roomStatusID">2:出租,4:待租,8:退房,16:空房</param>
|
|
|
|
|
|
public void ChangeRoomStatus(Host host, int roomStatusID, string wxValidate)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
RoomStatus NNN = NewMethod(host, roomStatusID);
|
|
|
|
|
|
|
|
|
|
|
|
ChangeRoomStatus(host, NNN, wxValidate);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private RoomStatus NewMethod(Host host, int roomStatusID)
|
|
|
|
|
|
{
|
|
|
|
|
|
//目前房态信息有一下4种
|
|
|
|
|
|
//0x01:入住 - 用户插卡取电后,RCU主机上报入住服务
|
|
|
|
|
|
//0x02:退房 - 服务器通过协议下发房态
|
|
|
|
|
|
//0x03:待租 - 服务器通过协议下发房态
|
|
|
|
|
|
//0x04:空房 - 服务器通过协议下发房态
|
|
|
|
|
|
|
|
|
|
|
|
RoomStatus NNN = RoomStatusRepository.Get(roomStatusID);
|
|
|
|
|
|
string host_number = host.HostNumber;
|
|
|
|
|
|
//string CKey = CacheKey.RoomStatus_Prefix + "_" + host_number;
|
|
|
|
|
|
//var q = CSRedisCacheHelper.Get_Partition<SomeDeviceExistsData>(CKey);
|
|
|
|
|
|
|
|
|
|
|
|
Host host_takeout = null;
|
|
|
|
|
|
string Key = CacheKey.HostInfo_Key_HostNumber + "_" + host_number;
|
|
|
|
|
|
object obj = MemoryCacheHelper.Get(Key);
|
|
|
|
|
|
if (obj != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
//q.RoomStatus = NNN;
|
|
|
|
|
|
//CSRedisCacheHelper.Set_Partition<SomeDeviceExistsData>(CKey,q);
|
|
|
|
|
|
|
|
|
|
|
|
host_takeout = (Host)obj;
|
|
|
|
|
|
host_takeout.RoomStatus = NNN;
|
|
|
|
|
|
}
|
|
|
|
|
|
return NNN;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 阿宝要修改的,
|
|
|
|
|
|
/// PMS 有房态变化,这里就要产生一个任务
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="host"></param>
|
|
|
|
|
|
/// <param name="roomStatus"></param>
|
|
|
|
|
|
/// <param name="wxValidate"></param>
|
|
|
|
|
|
public void ChangeRoomStatus(Host host, RoomStatus roomStatus, string wxValidate)
|
|
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
try
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
logger.Error("触发状态ID:" + roomStatus.ID);
|
|
|
|
|
|
RoomStatusChangedReceiver.SendRoomStatus(host, roomStatus);
|
|
|
|
|
|
host.RoomStatus = roomStatus;
|
|
|
|
|
|
|
|
|
|
|
|
Host host_takeout = null;
|
|
|
|
|
|
string Key = CacheKey.HostInfo_Key_HostNumber + "_" + host.HostNumber;
|
|
|
|
|
|
object obj = MemoryCacheHelper.Get(Key);
|
|
|
|
|
|
if (obj != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
host_takeout = (Host)obj;
|
|
|
|
|
|
host_takeout.RoomStatus = roomStatus;
|
|
|
|
|
|
}
|
2025-12-11 09:17:16 +08:00
|
|
|
|
|
2025-12-19 16:58:44 +08:00
|
|
|
|
if (!string.IsNullOrEmpty(wxValidate))
|
|
|
|
|
|
{
|
|
|
|
|
|
host.WXValidate = wxValidate;
|
|
|
|
|
|
}
|
|
|
|
|
|
CurrentRepository.Update(host);
|
2025-12-11 09:17:16 +08:00
|
|
|
|
|
|
|
|
|
|
|
2025-12-19 16:58:44 +08:00
|
|
|
|
#region 语言重置
|
2025-12-11 09:17:16 +08:00
|
|
|
|
|
2025-12-19 16:58:44 +08:00
|
|
|
|
if (roomStatus.ID == 2 || roomStatus.ID == 8)//开房和退房时重置
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
if (!string.IsNullOrEmpty(host.XiaoDuCUID))
|
|
|
|
|
|
{
|
|
|
|
|
|
string accessToken = SysOauth2Repository.GetXiaoDuToken();
|
|
|
|
|
|
if (!string.IsNullOrEmpty(accessToken) && host.SysHotel.IsPowerOffResetXiaoDu)
|
|
|
|
|
|
{
|
|
|
|
|
|
System.Threading.Tasks.Task.Factory.StartNew(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (string cuid in host.XiaoDuCUID.Split(','))//多个小度英文逗号隔开
|
|
|
|
|
|
{
|
|
|
|
|
|
XiaoDuOperation.PostWebRequestToXiaoDu(accessToken, cuid, new XiaoDuParamJson() { method = "reset" }, host.SysHotel.Code, host.RoomNumber);//重置小度
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!string.IsNullOrEmpty(host.TianMaoCUID))
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
|
|
|
|
|
System.Threading.Tasks.Task.Factory.StartNew(() =>
|
|
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
foreach (string cuid in host.TianMaoCUID.Split(','))//多个英文逗号隔开
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
TianMaoOperation.PostWebRequestToTianMao("CheckoutWithAK",
|
|
|
|
|
|
Newtonsoft.Json.JsonConvert.SerializeObject(new { HotelId = cuid.Split('&')[0], RoomNo = cuid.Split('&')[1] }), host.SysHotel.Code, host.RoomNumber);//重置天猫精灵
|
2025-12-11 09:17:16 +08:00
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-19 16:58:44 +08:00
|
|
|
|
#endregion
|
2025-12-11 09:17:16 +08:00
|
|
|
|
|
2025-12-19 16:58:44 +08:00
|
|
|
|
if (roomStatus.ID == 8)
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
#region 退房后空调控制
|
|
|
|
|
|
HotelSeason hotelSeason = HotelSeasonRepository.LoadByHotelID(host.SysHotel.ID);//获取该酒店下季节设置记录
|
|
|
|
|
|
if (hotelSeason != null)
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
//条件:1出租后,2取电后,3断电后
|
|
|
|
|
|
List<HotelAirControl> list = HotelAirControlRepository.LoadAll(host.SysHotel.ID, 4, true);
|
|
|
|
|
|
List<HostModal> hostModals = HostModalRepository.LoadByHostID(host.ID).Where(r => r.Modal.Type == DeviceType.AirConditioner && r.Modal.ActiveIndicator).ToList();//获取启用的空调回路
|
|
|
|
|
|
if (list.Count > 0 && hostModals.Count > 0)
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
System.Reflection.PropertyInfo[] properties = typeof(HotelSeason).GetProperties();//获取所有属性
|
|
|
|
|
|
foreach (HotelAirControl item in list)
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
foreach (System.Reflection.PropertyInfo prop in properties)//遍历属性
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
if (prop.Name == "Month" + DateTime.Now.Month.ToString() && Convert.ToInt16(prop.GetValue(hotelSeason, null)) == item.Season)//当前月份所属该季节,则发送命令给rcu设置空调
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
#region 备用方案
|
|
|
|
|
|
//var TTT = new Tuple<Host, HotelAirControl, List<HostModal>>(host, item, hostModals);
|
|
|
|
|
|
//Task.Factory.StartNew((state) =>
|
|
|
|
|
|
// {
|
|
|
|
|
|
// System.Threading.Thread.Sleep(item.DelayTime * 1000);//延迟执行
|
|
|
|
|
|
|
|
|
|
|
|
// Tuple<Host, HotelAirControl, List<HostModal>> NNN = state as Tuple<Host, HotelAirControl, List<HostModal>>;
|
|
|
|
|
|
|
|
|
|
|
|
// var QQ0 = NNN.Item1;
|
|
|
|
|
|
// var QQ1 = NNN.Item2;
|
|
|
|
|
|
// var QQ2 = NNN.Item3;
|
|
|
|
|
|
// foreach (HostModal hostModal in QQ2)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// HostModalManager.SetDevice(QQ0, hostModal, QQ1.Status, 0, QQ1.SettingTemp, QQ1.FanSpeed, QQ1.Mode, 0);//0表示不变
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }, TTT);
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
//这段代码在生产环境中不管用,很奇怪
|
|
|
|
|
|
string KeyMission = System.Guid.NewGuid().ToString("N");
|
|
|
|
|
|
MissonData m = new MissonData()
|
|
|
|
|
|
{
|
|
|
|
|
|
hostnumber = host.HostNumber,
|
|
|
|
|
|
mac = host.MAC,
|
|
|
|
|
|
};
|
2025-12-11 09:17:16 +08:00
|
|
|
|
|
2025-12-19 16:58:44 +08:00
|
|
|
|
m.HostModalList = new List<Tuple<string, DeviceType>>();
|
|
|
|
|
|
foreach (HostModal hostModal in hostModals)
|
|
|
|
|
|
{
|
|
|
|
|
|
var t = new Tuple<string, DeviceType>(hostModal.Modal.ModalAddress, hostModal.Modal.Type);
|
|
|
|
|
|
m.HostModalList.Add(t);
|
|
|
|
|
|
}
|
|
|
|
|
|
m.Status = item.Status;
|
|
|
|
|
|
m.SettingTemp = item.SettingTemp;
|
|
|
|
|
|
m.FanSpeed = item.FanSpeed;
|
|
|
|
|
|
m.Mode = item.Mode;
|
|
|
|
|
|
string MKey = "TuiFang_" + KeyMission;
|
|
|
|
|
|
CSRedisCacheHelper.Set_Partition<MissonData>(MKey, m, 1);
|
|
|
|
|
|
|
|
|
|
|
|
DelayExe_Task(host, item.DelayTime, MKey);
|
|
|
|
|
|
break;
|
2025-12-11 09:17:16 +08:00
|
|
|
|
}
|
2025-12-19 16:58:44 +08:00
|
|
|
|
catch (Exception)
|
|
|
|
|
|
{
|
2025-12-11 09:17:16 +08:00
|
|
|
|
|
2025-12-19 16:58:44 +08:00
|
|
|
|
}
|
2025-12-11 09:17:16 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-12-19 16:58:44 +08:00
|
|
|
|
#endregion
|
2025-12-11 09:17:16 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-19 16:58:44 +08:00
|
|
|
|
if (roomStatus.ID == 2)
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
#region 出租后空调处理
|
|
|
|
|
|
//阿宝
|
|
|
|
|
|
//空调 在10分钟无人入住的情况之下,就关闭
|
|
|
|
|
|
//启动 一个任务
|
|
|
|
|
|
|
|
|
|
|
|
#region 阿宝添加的
|
|
|
|
|
|
int currenthotelid = host.SysHotel.ID;
|
|
|
|
|
|
RoomNobodyHowTo nnn = RoomNoBodyMananger.LoadAll().FirstOrDefault(A => A.CurrentHotelID == currenthotelid);
|
|
|
|
|
|
if (nnn != null)
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
if (!nnn.How.Equals("without"))
|
|
|
|
|
|
{
|
|
|
|
|
|
string Code = host.SysHotel.Code;
|
|
|
|
|
|
string RoomNo = host.RoomNumber;
|
|
|
|
|
|
DateTime CreateDate = host.SysHotel.CreatedDate;
|
|
|
|
|
|
string CD = CreateDate.ToString("yyyy-MM-dd");
|
|
|
|
|
|
int hotel_id = host.SysHotel.ID;
|
|
|
|
|
|
int host_id = host.ID;
|
|
|
|
|
|
string ti = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
int delaytime = nnn.DelayTime;
|
|
|
|
|
|
int sustain = 20;
|
|
|
|
|
|
string MissionKey = System.Guid.NewGuid().ToString("N");
|
|
|
|
|
|
DateTime starttime = DateTime.Now.AddMinutes(delaytime);
|
|
|
|
|
|
DateTime endtime = starttime.AddMinutes(sustain);
|
|
|
|
|
|
|
|
|
|
|
|
//创建一条任务 插 入数据库
|
|
|
|
|
|
KongTiaoTimer k = new KongTiaoTimer();
|
|
|
|
|
|
k.HotelID = hotel_id;
|
|
|
|
|
|
k.HostID = host_id;
|
|
|
|
|
|
k.HotelCode = Code;
|
|
|
|
|
|
k.RoomNo = RoomNo;
|
|
|
|
|
|
k.MissonKey = MissionKey;
|
|
|
|
|
|
k.IsCancel = 0;
|
|
|
|
|
|
k.CreateTime = ti;
|
|
|
|
|
|
k.StartTime = starttime.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
k.EndTime = endtime.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
k.CreateDate = CD;
|
|
|
|
|
|
|
|
|
|
|
|
//string HotelCode, string RoomNo, int host_id,int hotel_id
|
|
|
|
|
|
|
|
|
|
|
|
MissionRequestData mm = new MissionRequestData();
|
|
|
|
|
|
|
|
|
|
|
|
mm.DelayTimer = delaytime;
|
|
|
|
|
|
mm.KT = k;
|
|
|
|
|
|
//mm.HotelCode = Code;
|
|
|
|
|
|
//mm.RoomNo = RoomNo;
|
|
|
|
|
|
//mm.HotelID = hotel_id;
|
|
|
|
|
|
//mm.HostID = host_id;
|
|
|
|
|
|
//mm.CreateDate = CD;
|
|
|
|
|
|
|
|
|
|
|
|
string jsstr = Newtonsoft.Json.JsonConvert.SerializeObject(mm);
|
|
|
|
|
|
//k.JsonData = jsstr;
|
|
|
|
|
|
k.MissonKey = MissionKey;
|
|
|
|
|
|
KongTiaoManager.Save(k);
|
|
|
|
|
|
|
|
|
|
|
|
//给 任务管理系统 发送消息
|
|
|
|
|
|
var client1 = new RestClient(Missionsys_Address);
|
|
|
|
|
|
var request1 = new RestRequest("api/index", Method.POST);
|
|
|
|
|
|
|
|
|
|
|
|
logger.Error("任务管理系统发送了数据:" + Missionsys_Address + "API/Index");
|
|
|
|
|
|
//GetRequest ggg = new GetRequest() { creatDate = DateTime.Now.ToString("yyyy-mm-dd"), roomNumber = RoomNo, code = Code };
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
request1.AddParameter("jsonData", jsstr);
|
|
|
|
|
|
|
|
|
|
|
|
client1.ExecuteAsync(request1, (response) => { });
|
|
|
|
|
|
}
|
2025-12-11 09:17:16 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-19 16:58:44 +08:00
|
|
|
|
#endregion
|
2025-12-11 09:17:16 +08:00
|
|
|
|
|
2025-12-19 16:58:44 +08:00
|
|
|
|
HotelSeason hotelSeason = HotelSeasonRepository.LoadByHotelID(host.SysHotel.ID);//获取该酒店下季节设置记录
|
|
|
|
|
|
if (hotelSeason != null)
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
List<HotelAirControl> list = HotelAirControlRepository.LoadAll(host.SysHotel.ID, 1, true);
|
|
|
|
|
|
List<HostModal> hostModals = HostModalRepository.LoadByHostID(host.ID).Where(r => r.Modal.Type == DeviceType.AirConditioner && r.Modal.ActiveIndicator).ToList();//获取启用的空调回路
|
|
|
|
|
|
if (list.Count > 0 && hostModals.Count > 0)
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
System.Reflection.PropertyInfo[] properties = typeof(HotelSeason).GetProperties();//获取所有属性
|
|
|
|
|
|
foreach (HotelAirControl item in list)
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
foreach (System.Reflection.PropertyInfo prop in properties)//遍历属性
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
if (prop.Name == "Month" + DateTime.Now.Month.ToString() && Convert.ToInt16(prop.GetValue(hotelSeason, null)) == item.Season)//当前月份所属该季节,则发送命令给rcu设置空调
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
2025-12-19 16:58:44 +08:00
|
|
|
|
var TTT = new Tuple<Host, HotelAirControl, List<HostModal>>(host, item, hostModals);
|
|
|
|
|
|
Task.Factory.StartNew((state) =>
|
|
|
|
|
|
{
|
|
|
|
|
|
System.Threading.Thread.Sleep(item.DelayTime * 1000);//延迟执行
|
|
|
|
|
|
|
|
|
|
|
|
Tuple<Host, HotelAirControl, List<HostModal>> NNN = state as Tuple<Host, HotelAirControl, List<HostModal>>;
|
|
|
|
|
|
|
|
|
|
|
|
var QQ0 = NNN.Item1;
|
|
|
|
|
|
var QQ1 = NNN.Item2;
|
|
|
|
|
|
var QQ2 = NNN.Item3;
|
|
|
|
|
|
foreach (HostModal hostModal in QQ2)
|
|
|
|
|
|
{
|
|
|
|
|
|
//host 只需要hostnumber和mac
|
|
|
|
|
|
//hostmodal只需要 address //和type
|
|
|
|
|
|
//device.Address = hostModal.Modal.ModalAddress;
|
|
|
|
|
|
//device.Type = hostModal.Modal.Type;
|
|
|
|
|
|
HostModalManager.SetDevice(QQ0, hostModal, QQ1.Status, 0, QQ1.SettingTemp, QQ1.FanSpeed, QQ1.Mode, 0);//0表示不变
|
|
|
|
|
|
}
|
|
|
|
|
|
}, TTT);
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
//这段代码在生产环境中不管用,很奇怪
|
|
|
|
|
|
//string KeyMission = System.Guid.NewGuid().ToString("N");
|
|
|
|
|
|
|
|
|
|
|
|
//MissonData m = new MissonData()
|
|
|
|
|
|
//{
|
|
|
|
|
|
// hostnumber = host.HostNumber,
|
|
|
|
|
|
// mac = host.MAC,
|
|
|
|
|
|
//};
|
|
|
|
|
|
|
|
|
|
|
|
//m.HostModalList = new List<Tuple<string, DeviceType>>();
|
|
|
|
|
|
//foreach (HostModal hostModal in hostModals)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// var t = new Tuple<string, DeviceType>(hostModal.Modal.ModalAddress, hostModal.Modal.Type);
|
|
|
|
|
|
// m.HostModalList.Add(t);
|
|
|
|
|
|
//}
|
|
|
|
|
|
//m.Status = item.Status;
|
|
|
|
|
|
//m.SettingTemp = item.SettingTemp;
|
|
|
|
|
|
//m.FanSpeed = item.FanSpeed;
|
|
|
|
|
|
//m.Mode = item.Mode;
|
|
|
|
|
|
//string MKey = "Mission_" + KeyMission;
|
|
|
|
|
|
//CSRedisCacheHelper.Set_Partition<MissonData>(MKey, m, 1);
|
|
|
|
|
|
|
|
|
|
|
|
//DelayExe_Task(host, item.DelayTime, KeyMission);
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception)
|
|
|
|
|
|
{
|
2025-12-11 09:17:16 +08:00
|
|
|
|
|
2025-12-19 16:58:44 +08:00
|
|
|
|
}
|
2025-12-11 09:17:16 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-12-19 16:58:44 +08:00
|
|
|
|
#endregion
|
2025-12-11 09:17:16 +08:00
|
|
|
|
}
|
2025-12-19 16:58:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
logger.Error(ex.Message);
|
|
|
|
|
|
logger.Error(ex.StackTrace);
|
2025-12-11 09:17:16 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public class MissonData
|
|
|
|
|
|
{
|
|
|
|
|
|
public string hostnumber { get; set; }
|
|
|
|
|
|
public string mac { get; set; }
|
|
|
|
|
|
public List<Tuple<string, DeviceType>> HostModalList { get; set; }
|
|
|
|
|
|
public int Status { get; set; }
|
|
|
|
|
|
public int SettingTemp { get; set; }
|
|
|
|
|
|
public int FanSpeed { get; set; }
|
|
|
|
|
|
public int Mode { get; set; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 任务管理系统是 分钟,这里是秒
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="host"></param>
|
|
|
|
|
|
/// <param name="delaytime">秒</param>
|
|
|
|
|
|
/// <param name="MissionKey"></param>
|
|
|
|
|
|
private static void DelayExe_Task(Host host, int delaytime, string MissionKey)
|
|
|
|
|
|
{
|
|
|
|
|
|
string Code = host.SysHotel.Code;
|
|
|
|
|
|
string RoomNo = host.RoomNumber;
|
|
|
|
|
|
DateTime CreateDate = host.SysHotel.CreatedDate;
|
|
|
|
|
|
string CD = CreateDate.ToString("yyyy-MM-dd");
|
|
|
|
|
|
int hotel_id = host.SysHotel.ID;
|
|
|
|
|
|
int host_id = host.ID;
|
|
|
|
|
|
string ti = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
int sustain = 20;
|
|
|
|
|
|
DateTime starttime = DateTime.Now.AddSeconds(delaytime);
|
|
|
|
|
|
DateTime endtime = starttime.AddMinutes(sustain);
|
|
|
|
|
|
|
|
|
|
|
|
//创建一条任务 插 入数据库
|
|
|
|
|
|
KongTiaoTimer k = new KongTiaoTimer();
|
|
|
|
|
|
k.HotelID = hotel_id;
|
|
|
|
|
|
k.HotelCode = Code;
|
|
|
|
|
|
k.RoomNo = RoomNo;
|
|
|
|
|
|
k.MissonKey = MissionKey;
|
|
|
|
|
|
k.IsCancel = 0;
|
|
|
|
|
|
k.CreateTime = ti;
|
|
|
|
|
|
k.StartTime = starttime.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
k.EndTime = endtime.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
k.CreateDate = CD;
|
|
|
|
|
|
|
|
|
|
|
|
MissionRequestData mm = new MissionRequestData();
|
|
|
|
|
|
|
|
|
|
|
|
mm.DelayTimer = delaytime;
|
|
|
|
|
|
mm.KT = k;
|
|
|
|
|
|
string jsstr = Newtonsoft.Json.JsonConvert.SerializeObject(mm);
|
|
|
|
|
|
|
|
|
|
|
|
logger.Error("任务管理:" + jsstr);
|
|
|
|
|
|
//给 任务管理系统 发送消息
|
|
|
|
|
|
var client1 = new RestClient(Missionsys_Address);
|
|
|
|
|
|
var request1 = new RestRequest("api/index_sec", Method.POST);
|
|
|
|
|
|
|
|
|
|
|
|
request1.AddParameter("jsonData", jsstr);
|
|
|
|
|
|
|
|
|
|
|
|
client1.ExecuteAsync(request1, (response) => { });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 批量更改主机网络设置
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="hostList">RCU主机列表</param>
|
|
|
|
|
|
/// <param name="ip">IP地址</param>
|
|
|
|
|
|
/// <param name="subnetmask">子网掩码</param>
|
|
|
|
|
|
/// <param name="gateway">默认网关</param>
|
|
|
|
|
|
/// <param name="port">通讯端口</param>
|
|
|
|
|
|
public void ChangeNetworkSetting(IList<Host> hostList, string ip, string subnetmask, string gateway, ushort port)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var host in hostList)
|
|
|
|
|
|
{
|
|
|
|
|
|
string newIP = GetNewIP(host.IP, ip);
|
|
|
|
|
|
|
|
|
|
|
|
if (!NetworkSettingReceiver.SetNetwork(host, newIP, subnetmask, gateway, port))
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new ApplicationException("设置客房【" + host.RoomNumber + "】主机网络参数失败。");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
host.IP = newIP;
|
|
|
|
|
|
host.SubnetMask = subnetmask;
|
|
|
|
|
|
host.Gateway = gateway;
|
|
|
|
|
|
host.Port = port;
|
|
|
|
|
|
CurrentRepository.Update(host);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Private Methods
|
|
|
|
|
|
|
|
|
|
|
|
private bool UpdateHostAirs(Host host)
|
|
|
|
|
|
{
|
|
|
|
|
|
HostAirRepository.DeteleByHostID(host.ID);
|
|
|
|
|
|
|
|
|
|
|
|
var list = RoomTypeAirRepository.LoadAll().Where(r => r.RoomType == host.RoomType);
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var modal in list)
|
|
|
|
|
|
{
|
|
|
|
|
|
var hostAir = new HostAir();
|
|
|
|
|
|
|
|
|
|
|
|
hostAir.HostID = host.ID;
|
|
|
|
|
|
hostAir.Modal = modal;
|
|
|
|
|
|
hostAir.ControlType = host.RoomType.ControlType;
|
|
|
|
|
|
|
|
|
|
|
|
HostAirRepository.SaveOrUpdate(hostAir);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private bool UpdateHostModals(Host host)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (host == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
HostModalRepository.DeteleByHostID(host.ID);
|
|
|
|
|
|
var list = RoomTypeModalRepository.LoadAll().Where(r => r.RoomType == host.RoomType);
|
|
|
|
|
|
DateTime now = DateTime.Now;
|
|
|
|
|
|
foreach (var modal in list)
|
|
|
|
|
|
{
|
|
|
|
|
|
HostModalRepository.Save(new HostModal { HostID = host.ID, Modal = modal, Status = 2, Time = 0, UpdateTime = now });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 创建服务异常
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="host"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
private bool CreateServiceAndAbnormity(Host host)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (host == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
var services = RoomServiceRepository.LoadAll(host.ID);
|
|
|
|
|
|
foreach (var service in services)
|
|
|
|
|
|
{
|
|
|
|
|
|
RoomServiceRepository.Delete(service.ID);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var servicesSetting = AlarmSettingRepository.LoadAll().Where(r => r.HotelID == host.SysHotel.ID && (r.Type == 'B' || r.Type == 'C'));
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var serviceSetting in servicesSetting)
|
|
|
|
|
|
{
|
|
|
|
|
|
var service = new RoomService();
|
|
|
|
|
|
service.HostID = host.ID;
|
|
|
|
|
|
service.AlarmType = serviceSetting.Type;
|
|
|
|
|
|
service.AlarmCode = serviceSetting.Code;
|
|
|
|
|
|
service.Status = false;
|
|
|
|
|
|
RoomServiceRepository.Save(service);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception)
|
|
|
|
|
|
{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 读取连通房到 connectingRooms 中
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="host"></param>
|
|
|
|
|
|
/// <param name="connectingRooms"></param>
|
|
|
|
|
|
//private void ReadConnectRoomsToList(Host host, IList<Host> connectingRooms)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// if (String.IsNullOrEmpty(host.ConnectingRooms))
|
|
|
|
|
|
// {
|
|
|
|
|
|
// return;
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// var hosts = host.ConnectingRooms.Split(',').Select(r => Get(int.Parse(r)));
|
|
|
|
|
|
|
|
|
|
|
|
// foreach (var h in hosts)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// if (h != null && !connectingRooms.Contains(h))
|
|
|
|
|
|
// {
|
|
|
|
|
|
// connectingRooms.Add(h);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 复制ip2地址前两段到ip1
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="ip1">IP1</param>
|
|
|
|
|
|
/// <param name="ip2">IP2</param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
private string GetNewIP(string ip1, string ip2)
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] ip1Arr = ip1.Split('.');
|
|
|
|
|
|
string[] ip2Arr = ip2.Split('.');
|
|
|
|
|
|
ip1Arr[0] = ip2Arr[0];
|
|
|
|
|
|
ip1Arr[1] = ip2Arr[1];
|
|
|
|
|
|
|
|
|
|
|
|
return String.Join(".", ip1Arr);
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 处理“退房保险箱关”异常
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="host"></param>
|
|
|
|
|
|
private void ProcessAbnormities(Host host)
|
|
|
|
|
|
{
|
|
|
|
|
|
//如果是退房,并且保险箱是关的状态,报警,否则存在此报警,关掉
|
|
|
|
|
|
var abnormity = RoomServiceRepository.Get(host.ID, "C04");
|
|
|
|
|
|
if (host.RoomStatus.ID == 0x08)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (host.SafeStatus == 0 && abnormity != null && !abnormity.Status)
|
|
|
|
|
|
{
|
|
|
|
|
|
abnormity.Status = true;
|
|
|
|
|
|
abnormity.StartTime = DateTime.Now;
|
|
|
|
|
|
RoomServiceRepository.Update(abnormity);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else //if (host.SafeStatus != 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (abnormity != null && abnormity.Status)
|
|
|
|
|
|
{
|
|
|
|
|
|
abnormity.Status = false;//关掉报警
|
|
|
|
|
|
abnormity.StartTime = DateTime.Now;
|
|
|
|
|
|
RoomServiceRepository.Update(abnormity);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void AccreditForHost(IList<Host> hostList, DateTime expires)
|
|
|
|
|
|
{
|
|
|
|
|
|
AuthorizationReceiver.AccreditForHost(hostList, expires);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void SetDeviceSecret(Host host)
|
|
|
|
|
|
{
|
|
|
|
|
|
DeviceSecretReceiver.Send(host);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void SendForGetHostSecret(Host host)
|
|
|
|
|
|
{
|
|
|
|
|
|
HostSecretReceiver.Send(host);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void SyncHostInfo(Host host)
|
|
|
|
|
|
{
|
|
|
|
|
|
HostRegisterReceiver.Send(host);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void PublishHostInfo(Host host)
|
|
|
|
|
|
{
|
|
|
|
|
|
HostRegisterSetReceiver.Send(host);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void PublishHostInfo(Host host, byte[] sendData)
|
|
|
|
|
|
{
|
|
|
|
|
|
HostRegisterSetReceiver.Send(host, sendData);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 根据房型获取主机列表(C主机升级使用)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="hotelID"></param>
|
|
|
|
|
|
/// <param name="roomTypeID"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public IList<Object> LoadHostByRoomType(int hotelID, int roomTypeID)
|
|
|
|
|
|
{
|
|
|
|
|
|
return (CurrentRepository as Dao.IHostRepository).LoadHostByRoomType(hotelID, roomTypeID);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public IList<Object> LoadHostByRoomTypeChengZiHao(int hotelID, int roomTypeID, string roomNumber)
|
|
|
|
|
|
{
|
|
|
|
|
|
return (CurrentRepository as Dao.IHostRepository).LoadHostByRoomTypeChengZiHao(hotelID, roomTypeID, roomNumber);
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 根据房型获取所有主机列表
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="hotelID"></param>
|
|
|
|
|
|
/// <param name="roomTypeID"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public IList<Object> LoadAllHostByRoomType(int hotelID, int roomTypeID)
|
|
|
|
|
|
{
|
|
|
|
|
|
return (CurrentRepository as Dao.IHostRepository).LoadAllHostByRoomType(hotelID, roomTypeID);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 阿宝
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public List<KongTiaoTimer> GetInitializeKTMission()
|
|
|
|
|
|
{
|
|
|
|
|
|
return KongTiaoManager.Select();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static readonly string Missionsys_Address = ConfigurationManager.AppSettings["missionsys_address"];
|
|
|
|
|
|
public static readonly string Currentsys_address = ConfigurationManager.AppSettings["currentsys_address"];
|
|
|
|
|
|
|
2025-12-19 16:58:44 +08:00
|
|
|
|
public void TimerECO(string hotelcode, int sheng_jiang_value)
|
2025-12-11 09:17:16 +08:00
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
int finallytemp = 0;
|
|
|
|
|
|
//模式:1制冷,2制热,3送风
|
|
|
|
|
|
var hostlist = HostRepository.GetByHotelCode(hotelcode);
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var item in hostlist)
|
|
|
|
|
|
{
|
|
|
|
|
|
List<HostModal> hostModals = HostModalRepository.LoadByHostID(item.ID).Where(r => r.Modal.Type == DeviceType.AirConditioner && r.Modal.ActiveIndicator).ToList();
|
|
|
|
|
|
foreach (HostModal hostModal in hostModals)
|
|
|
|
|
|
{
|
|
|
|
|
|
string KKey = CacheKey.HostModalStatus_Prefix + "_" + item.ID + "_" + hostModal.Modal.ModalAddress;
|
|
|
|
|
|
var mm = CSRedisCacheHelper.Get_Partition<HostModal_Cache>(KKey);
|
|
|
|
|
|
if (mm != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
int s = mm.Status;
|
|
|
|
|
|
int sss = mm.AirConditionData.SettingTemp;
|
|
|
|
|
|
int model = mm.AirConditionData.Mode;
|
|
|
|
|
|
if (s == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
if (model == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
finallytemp = sss + sheng_jiang_value;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (model == 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
finallytemp = sss - sheng_jiang_value;
|
|
|
|
|
|
}
|
|
|
|
|
|
//获取 触发的 酒店
|
|
|
|
|
|
//循环这些 酒店,获取每个房间,获取每个房间的 空调,如何开的话 ,就触发
|
|
|
|
|
|
Host host111 = new Host();
|
|
|
|
|
|
host111.HostNumber = item.HostNumber;
|
|
|
|
|
|
host111.MAC = item.MAC;
|
|
|
|
|
|
//host 只需要hostnumber和mac
|
|
|
|
|
|
//hostmodal只需要 address 和type
|
|
|
|
|
|
//device.Address = hostModal.Modal.ModalAddress;
|
|
|
|
|
|
//device.Type = hostModal.Modal.Type;
|
|
|
|
|
|
HostModal hm = new HostModal();
|
|
|
|
|
|
hm.Modal = new RoomTypeModal();
|
|
|
|
|
|
hm.Modal.Type = DeviceType.AirConditioner;
|
|
|
|
|
|
hm.Modal.ModalAddress = hostModal.Modal.ModalAddress;
|
|
|
|
|
|
logger.Error("ECO系统要开始执行了:" + host111.RoomNumber + " air_condition stattus: " + finallytemp);
|
|
|
|
|
|
//HostModalManager.SetDevice(host111, hm, 1, 0, GenericData.SetTemperatureValue, GenericData.FanSpeed, GenericData.Mode, 0);//0表示不变
|
|
|
|
|
|
HostModalManager.SetDevice(host111, hm, 0, 0, finallytemp, 0, 0, 0);//0表示不变
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
logger.Error("ECO 系统出异常了" + ex.Message);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 任务控制
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="hotel_id"></param>
|
|
|
|
|
|
/// <param name="HotelCode"></param>
|
|
|
|
|
|
/// <param name="host_id"></param>
|
|
|
|
|
|
/// <param name="RoomNo"></param>
|
|
|
|
|
|
/// <param name="k"></param>
|
|
|
|
|
|
public void AirConditionTimer_Controller(int hotel_id, string HotelCode, string HotelCreateDate, int host_id, string RoomNo, KongTiaoTimer k)
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
string LieECOTaskKey = CacheKey.LieECOTask;
|
|
|
|
|
|
string MKey = k.MissonKey;
|
|
|
|
|
|
bool OldOrNew0 = MKey.StartsWith("TuiFang");
|
|
|
|
|
|
bool OldOrNew1 = MKey.StartsWith("Mission");
|
|
|
|
|
|
bool OldOrNew2 = MKey.StartsWith(LieECOTaskKey);
|
|
|
|
|
|
if (OldOrNew0)
|
|
|
|
|
|
{
|
|
|
|
|
|
NewMission(MKey);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (OldOrNew1)
|
|
|
|
|
|
{
|
|
|
|
|
|
NewMission(MKey);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (OldOrNew2)
|
|
|
|
|
|
{
|
|
|
|
|
|
var GenericData = CSRedisCacheHelper.Get_Partition<LieECOTaskExtra>(MKey, 1);
|
|
|
|
|
|
if (GenericData != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
Host host111 = new Host();
|
|
|
|
|
|
host111.HostNumber = GenericData.HostNUMBER;
|
|
|
|
|
|
host111.MAC = GenericData.MAC;
|
|
|
|
|
|
//host 只需要hostnumber和mac
|
|
|
|
|
|
//hostmodal只需要 address 和type
|
|
|
|
|
|
//device.Address = hostModal.Modal.ModalAddress;
|
|
|
|
|
|
//device.Type = hostModal.Modal.Type;
|
|
|
|
|
|
HostModal hm = new HostModal();
|
|
|
|
|
|
hm.Modal = new RoomTypeModal();
|
|
|
|
|
|
hm.Modal.Type = DeviceType.AirConditioner;
|
|
|
|
|
|
hm.Modal.ModalAddress = GenericData.ModalAddress;
|
|
|
|
|
|
logger.Error("ECO系统要开始执行了:" + host111.RoomNumber + " air_condition stattus: " + GenericData.SetTemperatureValue);
|
|
|
|
|
|
//HostModalManager.SetDevice(host111, hm, 1, 0, GenericData.SetTemperatureValue, GenericData.FanSpeed, GenericData.Mode, 0);//0表示不变
|
|
|
|
|
|
HostModalManager.SetDevice(host111, hm, 0, 0, GenericData.SetTemperatureValue, 0, 0, 0);//0表示不变
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
logger.Error("ECO 系统出异常了" + ex.Message);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
string ct = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
RoomNobodyHowToLog n = new RoomNobodyHowToLog() { MissionKey = MKey, CreateTime = ct };
|
|
|
|
|
|
Host host = GetByRoomNumber(RoomNo, hotel_id);
|
|
|
|
|
|
if (host == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
//查询 现在有没有补取电
|
|
|
|
|
|
//string KKey = CacheKey.HostModalStatus_Prefix + "_" +host_id + "_" + device.Value.Address;
|
|
|
|
|
|
//var client = new RestClient("https://pms.boonlive-rcu.com/");
|
|
|
|
|
|
//var client = new RestClient(Currentsys_address);
|
|
|
|
|
|
//var request = new RestRequest("api/GetRoomServiceList", Method.GET);
|
|
|
|
|
|
//GetRequest ggg = new GetRequest() { creatDate = HotelCreateDate, roomNumber = RoomNo, code = HotelCode };
|
|
|
|
|
|
//string jsstr = Newtonsoft.Json.JsonConvert.SerializeObject(ggg);
|
|
|
|
|
|
//request.AddParameter("jsonData", jsstr);
|
|
|
|
|
|
//var response = client.Execute(request);
|
|
|
|
|
|
//string str = response.Content;
|
|
|
|
|
|
logger.Error("222:");
|
|
|
|
|
|
//logger.Error("333333:" + str);
|
|
|
|
|
|
|
|
|
|
|
|
string KKey = CacheKey.HostModalStatus_Prefix + "_" + host.ID + "_" + "004000001";
|
|
|
|
|
|
var mm = CSRedisCacheHelper.Get_Partition<HostModal_Cache>(KKey);
|
|
|
|
|
|
//333333:{"IsSuccess":true,"Result":[{"ModalAddress":"004000002","Name":"勿扰","Status":2,"Brightness":0},{"ModalAddress":"004000003","Name":"清理","Status":2,"Brightness":0}]}
|
|
|
|
|
|
//{"IsSuccess":true,"Result":[{"ModalAddress":"004000001",
|
|
|
|
|
|
// "Name":"取电","Status":2,"Brightness":0},
|
|
|
|
|
|
//{"ModalAddress":"004000003","Name":"清理","Status":2,"Brightness":0}]}
|
|
|
|
|
|
if (mm != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
var Nstr = Newtonsoft.Json.JsonConvert.SerializeObject(mm);
|
|
|
|
|
|
logger.Error("222:" + Nstr);
|
|
|
|
|
|
logger.Error("takecard:" + mm.Status);
|
|
|
|
|
|
//超过了30分钟,还没有取电
|
|
|
|
|
|
//如果没有取电就关了空调
|
|
|
|
|
|
//1 为取电,2为没有取电
|
|
|
|
|
|
if (mm.Status != 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
//获取启用的空调回路
|
|
|
|
|
|
List<HostModal> hostModals = HostModalRepository.LoadByHostID(host_id).Where(r => r.Modal.Type == DeviceType.AirConditioner && r.Modal.ActiveIndicator).ToList();
|
|
|
|
|
|
|
|
|
|
|
|
RoomNobodyHowTo nnn = RoomNoBodyMananger.LoadAll().FirstOrDefault(A => A.CurrentHotelID == hotel_id);
|
|
|
|
|
|
|
|
|
|
|
|
foreach (HostModal hostModal in hostModals)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
if (nnn != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
logger.Error("nnn.how " + nnn.How);
|
|
|
|
|
|
//close or monitor
|
|
|
|
|
|
if (nnn.How.Equals("close"))
|
|
|
|
|
|
{
|
|
|
|
|
|
//0表示不变
|
|
|
|
|
|
HostModalManager.SetDevice(host, hostModal, 2, 0);
|
|
|
|
|
|
RoomNoBodyLogMananger.Save(n);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (nnn.How.Equals("monitor"))
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
//状态:1开,2关,6停
|
|
|
|
|
|
//0表示不变
|
|
|
|
|
|
//如果只调温的话,所有的数据都要设置为0
|
|
|
|
|
|
HostModalManager.SetDevice(host, hostModal, 0, 0, nnn.Temperature);
|
|
|
|
|
|
|
|
|
|
|
|
RoomNoBodyLogMananger.Save(n);
|
|
|
|
|
|
logger.Error("monitor is !!!!" + nnn.Temperature);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
logger.Error("Air Condition Controller");
|
|
|
|
|
|
//空调关闭后,就将任务设置成已经完成了
|
|
|
|
|
|
k.IsCancel = 1;
|
|
|
|
|
|
|
|
|
|
|
|
KongTiaoManager.Update(k);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void NewMission(string MKey)
|
|
|
|
|
|
{
|
|
|
|
|
|
var MMK = CSRedisCacheHelper.Get_Partition<MissonData>(MKey, 1);
|
|
|
|
|
|
if (MMK != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
Host host111 = new Host();
|
|
|
|
|
|
host111.HostNumber = MMK.hostnumber;
|
|
|
|
|
|
host111.MAC = MMK.mac;
|
|
|
|
|
|
var L = MMK.HostModalList;
|
|
|
|
|
|
foreach (var hostModal in L)
|
|
|
|
|
|
{
|
|
|
|
|
|
//host 只需要hostnumber和mac
|
|
|
|
|
|
//hostmodal只需要 address 和type
|
|
|
|
|
|
//device.Address = hostModal.Modal.ModalAddress;
|
|
|
|
|
|
//device.Type = hostModal.Modal.Type;
|
|
|
|
|
|
HostModal hm = new HostModal();
|
|
|
|
|
|
hm.Modal = new RoomTypeModal();
|
|
|
|
|
|
hm.Modal.Type = hostModal.Item2;
|
|
|
|
|
|
hm.Modal.ModalAddress = hostModal.Item1;
|
|
|
|
|
|
logger.Error("delay Mission start:" + host111.RoomNumber + " air_condition stattus: " + MMK.Status);
|
|
|
|
|
|
HostModalManager.SetDevice(host111, hm, MMK.Status, 0, MMK.SettingTemp, MMK.FanSpeed, MMK.Mode, 0);//0表示不变
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void LoggerTest()
|
|
|
|
|
|
{
|
|
|
|
|
|
string MKey = "aaaaaaaaa";
|
|
|
|
|
|
string ct = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
RoomNobodyHowToLog n = new RoomNobodyHowToLog() { MissionKey = MKey, CreateTime = ct };
|
|
|
|
|
|
|
|
|
|
|
|
RoomNoBodyLogMananger.Save(n);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// ECO模式执行
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void ECO_Execute(string hotelid_api)
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
logger.Error("ECO_Execute here");
|
|
|
|
|
|
//取出ECO配置的酒店 的房间号
|
|
|
|
|
|
List<ECO_Setting> ECOList = ECO_SettingRepository.LoadAll().ToList();
|
|
|
|
|
|
|
|
|
|
|
|
if (ECOList.Count > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var ECO in ECOList)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
int hotelid = ECO.HotelID;
|
|
|
|
|
|
bool isenable = ECO.IsEnable;
|
|
|
|
|
|
|
|
|
|
|
|
string st_time = ECO.StartTime;
|
|
|
|
|
|
|
|
|
|
|
|
string[] h_m = st_time.Split(':');
|
|
|
|
|
|
int a1 = 0;
|
|
|
|
|
|
int.TryParse(h_m[0], out a1);
|
|
|
|
|
|
|
|
|
|
|
|
int b1 = 0;
|
|
|
|
|
|
int.TryParse(h_m[1], out b1);
|
|
|
|
|
|
|
|
|
|
|
|
string et_time = ECO.EndTime;
|
|
|
|
|
|
string[] h_m_1 = et_time.Split(':');
|
|
|
|
|
|
int a2 = 0;
|
|
|
|
|
|
int.TryParse(h_m_1[0], out a2);
|
|
|
|
|
|
|
|
|
|
|
|
int b2 = 0;
|
|
|
|
|
|
int.TryParse(h_m_1[1], out b2);
|
|
|
|
|
|
|
|
|
|
|
|
var ccc = DateTime.Now;
|
|
|
|
|
|
var start_time = new DateTime(ccc.Year, ccc.Month, ccc.Day, a1, b1, 0);
|
|
|
|
|
|
var end_time = new DateTime(ccc.Year, ccc.Month, ccc.Day, a2, b2, 0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//节能模式开启了
|
|
|
|
|
|
if (isenable)
|
|
|
|
|
|
{
|
|
|
|
|
|
//当前时间在两个时间 区间内
|
|
|
|
|
|
if (ccc > start_time && ccc < end_time)
|
|
|
|
|
|
{
|
|
|
|
|
|
//获取当前酒店的主机
|
|
|
|
|
|
//IList<Host> hosts = LoadAll(hotelid).Where(r => r.Status == true).ToList();
|
|
|
|
|
|
IList<Host> hosts = LoadAll(hotelid).ToList();
|
|
|
|
|
|
|
|
|
|
|
|
foreach (Host host in hosts)
|
|
|
|
|
|
{
|
|
|
|
|
|
int host_id = host.ID;
|
|
|
|
|
|
//查看是否执行过了
|
|
|
|
|
|
ECO_Detail detail = ECO_DetailRepository.GetDetail(hotelid, host_id);
|
|
|
|
|
|
if (detail == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
AirConditionECO_Execute(ECO, host);
|
|
|
|
|
|
ECO_Detail e = new ECO_Detail();
|
|
|
|
|
|
e.HotelID = hotelid;
|
|
|
|
|
|
e.HostID = host_id;
|
|
|
|
|
|
e.IsTrigger = true;
|
|
|
|
|
|
e.RoomNo = host.RoomNumber;
|
|
|
|
|
|
string ct = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
e.TriggerTime = ct;
|
|
|
|
|
|
e.ECO_ID = ECO.ID;
|
|
|
|
|
|
ECO_DetailRepository.Add(e);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (detail != null && !detail.IsTrigger)
|
|
|
|
|
|
{
|
|
|
|
|
|
//获取启用的空调回路
|
|
|
|
|
|
AirConditionECO_Execute(ECO, host);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
detail.IsTrigger = true;
|
|
|
|
|
|
string ct = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
detail.TriggerTime = ct;
|
|
|
|
|
|
ECO_DetailRepository.Update(detail);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
logger.Error("ECO execute error: " + ex.Message);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 重置
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void Zero_Refresh()
|
|
|
|
|
|
{
|
|
|
|
|
|
ECO_DetailRepository.ZeroRefresh();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void AirConditionECO_Execute(ECO_Setting ECO, Host host)
|
|
|
|
|
|
{
|
|
|
|
|
|
int host_id = host.ID;
|
|
|
|
|
|
//根据主机编号,获取所有的空调
|
|
|
|
|
|
//获取所有空调的数据
|
|
|
|
|
|
List<HostModal> hostModals = HostModalRepository.LoadByHostID(host_id).Where(r => r.Modal.Type == DeviceType.AirConditioner && r.Modal.ActiveIndicator).ToList();
|
|
|
|
|
|
foreach (HostModal hostModal in hostModals)
|
|
|
|
|
|
{
|
|
|
|
|
|
string KKey = CacheKey.HostModalStatus_Prefix + "_" + host_id + "_" + hostModal.Modal.ModalAddress;
|
|
|
|
|
|
var obj = CSRedisCacheHelper.Get_Partition<HostModal_Cache>(KKey);
|
|
|
|
|
|
if (obj != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
HostModal_Cache hhh = obj as HostModal_Cache;
|
|
|
|
|
|
|
|
|
|
|
|
if (hhh.AirConditionData.AirStatus == 1 && hhh.Status == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
int settemp = 0;
|
|
|
|
|
|
//0x01:制冷
|
|
|
|
|
|
//0x02:制热
|
|
|
|
|
|
//0x03:送风
|
|
|
|
|
|
|
|
|
|
|
|
int moshi = hhh.AirConditionData.Mode;
|
|
|
|
|
|
if (moshi == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
//如果是制冷 ,那就将温度调高一些
|
|
|
|
|
|
settemp = hhh.AirConditionData.CurrentTemp + ECO.ActValue;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (moshi == 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
settemp = hhh.AirConditionData.CurrentTemp - ECO.ActValue;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
hostModal.Brightness = hhh.Brightness;
|
|
|
|
|
|
hostModal.Status = hhh.Status;
|
|
|
|
|
|
hostModal.SettingTemp = hhh.AirConditionData.SettingTemp;
|
|
|
|
|
|
hostModal.CurrentTemp = hhh.AirConditionData.CurrentTemp;
|
|
|
|
|
|
hostModal.Mode = hhh.AirConditionData.Mode;
|
|
|
|
|
|
hostModal.FanSpeed = hhh.AirConditionData.FanSpeed;
|
|
|
|
|
|
hostModal.Valve = hhh.AirConditionData.Valve;
|
|
|
|
|
|
//状态:1开,2关,6停
|
|
|
|
|
|
//0表示不变
|
|
|
|
|
|
//如果只调温的话,所有的数据都要设置为0
|
|
|
|
|
|
HostModalManager.SetDevice(host, hostModal, 0, 0, settemp);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<ECO_Setting> Get_ECOList()
|
|
|
|
|
|
{
|
|
|
|
|
|
return ECO_SettingRepository.LoadAll().Where(A => A.IsEnable == true).ToList();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 查询
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="data"></param>
|
|
|
|
|
|
/// <param name="host_number"></param>
|
|
|
|
|
|
/// <param name="mac"></param>
|
|
|
|
|
|
public void Send_Query_Data(byte[] data, string host_number, string mac)
|
|
|
|
|
|
{
|
|
|
|
|
|
TFTP_LogReceiver.Send_QueryData(data, host_number, mac);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 发送设置
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="data"></param>
|
|
|
|
|
|
/// <param name="host_number"></param>
|
|
|
|
|
|
/// <param name="mac"></param>
|
|
|
|
|
|
public void Send_Setting_Data(byte[] data, string host_number, string mac)
|
|
|
|
|
|
{
|
|
|
|
|
|
TFTP_LogSettingReceiver.Send_Setting_Data(data, host_number, mac);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
///
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="roomid"></param>
|
|
|
|
|
|
/// <param name="hotelID"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public Host GetByRoomNumber(int roomid, int hotelID)
|
|
|
|
|
|
{
|
|
|
|
|
|
return CurrentRepository.LoadAll().FirstOrDefault(r => r.ID == roomid && r.SysHotel.ID == hotelID && !r.IsDeleted);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Host GetByHiWeiCUID(string cuid)
|
|
|
|
|
|
{
|
|
|
|
|
|
return (CurrentRepository as Dao.IHostRepository).GetByHiWeiCUID(cuid);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void PublishUDPData(string hostnumber, string mac, byte[] data, byte cmdtype, bool isoriginal)
|
|
|
|
|
|
{
|
|
|
|
|
|
HostUDPTouChuan.Send(hostnumber, mac, data, cmdtype, isoriginal);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public IList<HostMappingData> LoadAllID_HostNumberMapping()
|
|
|
|
|
|
{
|
|
|
|
|
|
return (CurrentRepository as Dao.IHostRepository).LoadAllID_HostNumberMapping();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public IList<HostRoomNumberMapping> LoadAll_RoomNumberMapping()
|
|
|
|
|
|
{
|
|
|
|
|
|
return (CurrentRepository as Dao.IHostRepository).LoadAll_RoomNumberMapping();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
//{"IsSuccess":true,"Result":[{"ModalAddress":"004000001",
|
|
|
|
|
|
// "Name":"取电","Status":2,"Brightness":0},
|
|
|
|
|
|
//{"ModalAddress":"004000003","Name":"清理","Status":2,"Brightness":0}]}
|
|
|
|
|
|
public class ResultData
|
|
|
|
|
|
{
|
|
|
|
|
|
public bool IsSuccess { get; set; }
|
|
|
|
|
|
public List<MySheBei> Result { get; set; }
|
|
|
|
|
|
}
|
|
|
|
|
|
public class MySheBei
|
|
|
|
|
|
{
|
|
|
|
|
|
public string ModalAddress { get; set; }
|
|
|
|
|
|
public string Name { get; set; }
|
|
|
|
|
|
public int Status { get; set; }
|
|
|
|
|
|
public int Brightness { get; set; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//"{\"creatDate\":\"2023-11-16\",\"roomNumber\":\"2206\",\"code\":\"1762\"}"
|
|
|
|
|
|
public class GetRequest
|
|
|
|
|
|
{
|
|
|
|
|
|
public string creatDate { get; set; }
|
|
|
|
|
|
public string roomNumber { get; set; }
|
|
|
|
|
|
public string code { get; set; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|