using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using System.Web;
using System.Web.Mvc;
using Common;
using Domain;
using Service;
using WebSite.Models;
using System.Text;
using CommonEntity;
using System.Web.Caching;
namespace WebSite.Controllers
{
public class RoomStatusController : BaseController
{
private static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(RoomStatusController));
public IHostManager HostManager { get; set; }
//阿宝添加的
public ISysHotelManager SysHotelManager { get; set; }
public ISysUserManager SysUserManager { get; set; }
public IGroupManager GroupManager { get; set; }
public IRoomStatusManager RoomStatusManager { get; set; }
public IRoomServiceManager RoomServiceManager { get; set; }
public IAlarmSettingManager AlarmSettingManager { get; set; }
public IHostModalManager HostModalManager { get; set; }
public IHostFaultsManager HostFaultsManager { get; set; }
//阿宝添加的
public ICarbonVIPMananger CarbonVIPManager { get; set; }
///
/// LieECO Manager
///
public ILieECOMananger LieECOManager { get; set; }
///
/// 空调设置权限ID
///
private const int AUTHORITY_AIRSETTING = 1002;
#region Action
[Authorize]
public ActionResult Index()
{
return View("SimonIndex");
}
///
/// 客房详细
///
///
///
public ActionResult RoomDetail(int hostID)
{
Host host = HostManager.Get(hostID);
if (host == null)
{
ViewData["ErrorMsg"] = HttpContext.InnerLanguage("InvalidRoom");
return View("Error");
}
//ViewData["ConnectingRooms"] = HostManager.GetConnectRoomHosts(host);
//获取服务信息
IList services = new List();
//var currentServices = RoomServiceManager.LoadCurrentRoomServices(host.ID);
var currentServices = HostModalManager.Load(hostID, DeviceType.ServiceInfo).Where(r => r.Modal.Name != "" && r.Status == 1);
foreach (var service in currentServices)
{
services.Add(ReturnNameByLanguage(service.Modal.Name, service.Modal.EnglishName, service.Modal.TWName));
}
ViewData["Services"] = services;
//获取故障信息
//IList abnormities = new List();
//var currentAbnormities = HostFaultsManager.LoadCurrentHostFault(host.ID); //.LoadAll().Where(r => r.HostID == host.ID);
//foreach (var abnormity in currentAbnormities)
//{
// string strFault = (Language == Domain.Language.CN) ? Convert.ToString(((object[])(abnormity))[3]) : Convert.ToString(((object[])(abnormity))[4]);
// strFault += "(" + Convert.ToString(((object[])(abnormity))[0]) + ",";
// switch (Convert.ToInt16(((object[])(abnormity))[1]))
// {
// case 1://状态
// strFault += HttpContext.InnerLanguage("Status") + ":";
// if (Convert.ToInt16(((object[])(abnormity))[2]) == 0)
// {
// strFault += HttpContext.InnerLanguage("Online");
// }
// else
// {
// strFault += HttpContext.InnerLanguage("Offline");
// }
// break;
// case 2://电量
// strFault += HttpContext.InnerLanguage("Electricity") + ":" + Convert.ToString(((object[])(abnormity))[2]) + "%";
// break;
// }
// abnormities.Add(strFault + ")");
//}
//ViewData["Abnormities"] = abnormities;
//获取客房信息
var roomInfoModel = new RoomInfoModel();
roomInfoModel.HostID = host.ID;
roomInfoModel.RoomNumber = host.RoomNumber;
roomInfoModel.RoomStatus = ReturnNameByLanguage(host.RoomStatus.Name, host.RoomStatus.EName, host.RoomStatus.TWName);
roomInfoModel.IP = CSRedisCacheHelper.Get(host.HostNumber, host.MAC);
string k2 = CacheKey.PowerSupply + "_" + host.HostNumber;
bool b = CSRedisCacheHelper.ForeverGet(k2);
string Key = CacheKey.HostInfo_Key_HostNumber + "_" + host.HostNumber;
Host HHH = null;
object obj = MemoryCacheHelper.Get(Key);
if (obj != null)
{
HHH = obj as Host;
roomInfoModel.Identity = (HHH.RoomCard != null && HHH.RoomCard.RoomCardType != null) ? (Language == Language.CN ? HHH.RoomCard.RoomCardType.Name : HHH.RoomCard.RoomCardType.EName) : HttpContext.InnerLanguage("Nobody");
roomInfoModel.HostStatus = HHH.Status ? HttpContext.InnerLanguage("Online") : HttpContext.InnerLanguage("Offline");
roomInfoModel.PowerSupply = HHH.PowerSupply;
roomInfoModel.PowerSupply = b;
}
else
{
roomInfoModel.Identity = (host.RoomCard != null && host.RoomCard.RoomCardType != null) ? (Language == Language.CN ? host.RoomCard.RoomCardType.Name : host.RoomCard.RoomCardType.EName) : HttpContext.InnerLanguage("Nobody");
roomInfoModel.HostStatus = host.Status ? HttpContext.InnerLanguage("Online") : HttpContext.InnerLanguage("Offline");
roomInfoModel.PowerSupply = b;
}
return View("CtrlRoomDetail", roomInfoModel);
}
///
/// 客房详细中的空调信息
///
///
///
[Authorize]
public ActionResult LoadHostAirs(int hostID)
{
IList hostModals = HostModalManager.Load(hostID, DeviceType.AirConditioner).Where(r => r.Modal.Name != "").ToList();
var result = hostModals.Select(r => new
{
HostID = r.HostID,
ModalID = r.Modal.ID,
ModalAddress = r.Modal.ModalAddress,
Name = ReturnNameByLanguage(r.Modal.Name, r.Modal.EnglishName, r.Modal.TWName),
Status = r.Status,// (r.Status == 1 ? HttpContext.InnerLanguage("AirOn") : HttpContext.InnerLanguage("AirOff")),
CurrentTemp = r.CurrentTemp,
SettingTemp = r.SettingTemp,
Mode = r.Mode,
FanSpeed = r.FanSpeed,
ValveName = (r.Valve == 1 ? HttpContext.InnerLanguage("ValveOn") : HttpContext.InnerLanguage("ValveOff"))
});
return Json(result, JsonRequestBehavior.AllowGet);
}
///
/// 异常信息
///
///
///
[Authorize]
public ActionResult LoadCurrentHostFault(int hostID)
{
var hostFault = HostFaultsManager.LoadHostFault(hostID);
var restult = hostFault.Select(r => new
{
Name = ReturnNameByLanguage(r[0].ToString(), r[1].ToString(), r[2].ToString()),
Address = r[7],
AbnormalStatus = (Convert.ToBoolean(r[3]) == false ? "" : (Convert.ToDateTime(r[9]).Year < 1900 ? "" : r[8])),
StatusDate = (Convert.ToBoolean(r[3]) == false ? "" : (Convert.ToDateTime(r[9]).Year < 1900 ? "" : Convert.ToDateTime(r[9]).ToString("yyyy-MM-dd HH:mm:ss"))),
AbnormalElectricQty = (Convert.ToBoolean(r[4]) == false ? "" : (Convert.ToDateTime(r[11]).Year < 1900 ? "" : r[8])),
ElectricQtyDate = (Convert.ToBoolean(r[4]) == false ? "" : (Convert.ToDateTime(r[11]).Year < 1900 ? "" : Convert.ToDateTime(r[11]).ToString("yyyy-MM-dd HH:mm:ss"))),
Abnormal3 = Convert.ToDateTime(r[13]).Year < 1900 ? "" : (Convert.ToInt16(r[12]) * 10).ToString(),//数据乘以10,单位mA
Abnormal3Date = Convert.ToDateTime(r[13]).Year < 1900 ? "" : Convert.ToDateTime(r[13]).ToString("yyyy-MM-dd HH:mm:ss"),
Abnormal4 = Convert.ToDateTime(r[15]).Year < 1900 ? "" : r[14],
Abnormal4Date = Convert.ToDateTime(r[15]).Year < 1900 ? "" : Convert.ToDateTime(r[15]).ToString("yyyy-MM-dd HH:mm:ss"),
Abnormal5 = Convert.ToDateTime(r[17]).Year < 1900 ? "" : r[16],
Abnormal5Date = Convert.ToDateTime(r[17]).Year < 1900 ? "" : Convert.ToDateTime(r[17]).ToString("yyyy-MM-dd HH:mm:ss")
}).Where(A=>!string.IsNullOrEmpty(A.Name));
return Json(restult, JsonRequestBehavior.AllowGet);
}
public ActionResult AirCondition(int hostID)
{
Host host = HostManager.Get(hostID);
if (host == null)
{
ViewData["ErrorMsg"] = HttpContext.InnerLanguage("InvalidRoom");
return View("Error");
}
ViewData["EnableAirSetting"] = SysUserManager.HasAuthority(User.Identity.Name, AUTHORITY_AIRSETTING);
var roomInfoModel = new RoomInfoModel();
roomInfoModel.HostID = host.ID;
roomInfoModel.RoomNumber = host.RoomNumber;
roomInfoModel.RoomStatus = ReturnNameByLanguage(host.RoomStatus.Name, host.RoomStatus.EName, host.RoomStatus.TWName);
roomInfoModel.Identity = (host.RoomCard != null && host.RoomCard.RoomCardType != null) ? (Language == Language.CN ? host.RoomCard.RoomCardType.Name : host.RoomCard.RoomCardType.EName) : HttpContext.InnerLanguage("Nobody");
roomInfoModel.HostStatus = host.Status ? HttpContext.InnerLanguage("Online") : HttpContext.InnerLanguage("Offline");
roomInfoModel.IP = host.IP;
return View("CtrlAirCondition", roomInfoModel);
}
///
/// 房态设置
///
///
///
public ActionResult RoomStatus(int hostID)
{
Host host = HostManager.Get(hostID);
if (host == null)
{
ViewData["ErrorMsg"] = HttpContext.InnerLanguage("InvalidRoom");
return View("Error");
}
var list = RoomStatusManager.LoadAll().OrderBy(r => r.Sort).ToList();
IList result = new List();
foreach (var roomstatus in list)
{
result.Add(new RoomStatus
{
ID = roomstatus.ID,
Name = ReturnNameByLanguage(roomstatus.Name, roomstatus.EName, roomstatus.TWName), //((Boolean)Session["isCN"]) ? roomstatus.Name : roomstatus.EName,
Sort = roomstatus.Sort
});
}
ViewData["RoomStatus"] = result;
var roomInfoModel = new RoomInfoModel();
roomInfoModel.HostID = host.ID;
roomInfoModel.RoomNumber = host.RoomNumber;
roomInfoModel.RoomStatus = ReturnNameByLanguage(host.RoomStatus.Name, host.RoomStatus.EName, host.RoomStatus.TWName);
roomInfoModel.Identity = (host.RoomCard != null && host.RoomCard.RoomCardType != null) ? (Language == Language.CN ? host.RoomCard.RoomCardType.Name : host.RoomCard.RoomCardType.EName) : HttpContext.InnerLanguage("Nobody");
roomInfoModel.HostStatus = host.Status ? HttpContext.InnerLanguage("Online") : HttpContext.InnerLanguage("Offline");
roomInfoModel.IP = CSRedisCacheHelper.Get(host.HostNumber, host.MAC);
roomInfoModel.PowerSupply = host.PowerSupply;
return View("CtrlRoomStatus", roomInfoModel);
}
///
/// 客房详细房间信息
///
///
///
public ActionResult DeviceStatus(int hostID)
{
Host host = HostManager.Get(hostID);
if (host == null)
{
ViewData["ErrorMsg"] = HttpContext.InnerLanguage("InvalidRoom");
return View("Error");
}
var roomInfoModel = new RoomInfoModel();
roomInfoModel.HostID = host.ID;
roomInfoModel.RoomNumber = host.RoomNumber;
roomInfoModel.RoomStatus = ReturnNameByLanguage(host.RoomStatus.Name, host.RoomStatus.EName, host.RoomStatus.TWName);//(host.RoomStatus != null) ? (Language == Language.CN ? host.RoomStatus.Name : host.RoomStatus.EName) : "";
roomInfoModel.Identity = (host.RoomCard != null && host.RoomCard.RoomCardType != null) ? (Language == Language.CN ? host.RoomCard.RoomCardType.Name : host.RoomCard.RoomCardType.EName) : HttpContext.InnerLanguage("Nobody");
roomInfoModel.HostStatus = host.Status ? HttpContext.InnerLanguage("Online") : HttpContext.InnerLanguage("Offline");
roomInfoModel.IP = CSRedisCacheHelper.Get(host.HostNumber, host.MAC);
return PartialView("CtrlLightStatus", roomInfoModel);
}
///
/// 楼层加载信息
///
///
///
///
///
///
///
///
///
//public ActionResult LoadRoomStatus(int page, int rows, string order, string sort, int? groupId, int? status, string roomNumber)
//{
// Group group = groupId.HasValue ? GroupManager.Get(groupId) : SysUserManager.Get(User.Identity.Name).Group;
// if (group == null)
// {
// return Json(new { IsSuccess = false, Message = "您没有分配楼层,不能查看客房状态。" });
// }
// var list = HostManager.LoadAll(order, sort, group, roomNumber);
// if (status.HasValue)
// {
// list = list.Where(r => r.Status == (status == 1 ? true : false)).ToList();
// }
// long total = list.LongCount();
// list = list.Skip((page - 1) * rows).Take(rows).ToList();
// var result = list.Select(r => CreateHost(r));
// return Json(new { IsSuccess = true, Data = new { total = total, rows = result } });
//}
///
/// 首页房间加载信息
///
///
///
///
///
[Authorize]
public ActionResult LoadRooms(int page, int rows, int? groupId, bool isAirDetect = false)
{
//这里需要
try
{
Group group = null;
if (groupId.HasValue)
{
string likeKey = "LoadGroupPrefix_" + groupId.Value;
object odata = MemoryCacheHelper.Get(likeKey);
if (odata != null)
{
group = odata as Group;
}
else
{
group = GroupManager.Get(groupId.Value);
MemoryCacheHelper.Set(likeKey, group);
}
}
else
{
var sysUser = SysUserManager.Get(User.Identity.Name);
if (sysUser != null)
{
group = sysUser.Group;
}
}
int groupID = group != null ? group.ID : 0;
int lang = Session["isCN"] != null ? (int)Session["isCN"] : 0;
long total = 0;
string LLL = "LoadRoomsPrefix_" + "_" + CurrentHotelID + "_" + groupID;
object oook = MemoryCacheHelper.Get(LLL);
IList roomList = null;
if (oook == null)
{
roomList = HostManager.LoadRooms(out total, page, rows, groupID, lang, CurrentHotelID);
MemoryCacheHelper.Set(LLL, roomList);
}
else
{
roomList = (IList)oook;
}
IList> groupRooms = roomList.GroupBy(g => g.GroupSort).ToList();
ConcurrentBag floors = new ConcurrentBag();
Parallel.ForEach(groupRooms, (groupRoom) =>
{
var floor = new FloorModel();
ConcurrentBag rooms = new ConcurrentBag();
Parallel.ForEach(groupRoom, (room) =>
{
var hostID = room.HostID;
var roomnum = room.RoomNumber;
var roomModel = new RoomModel();
#region 碳达人
StringBuilder sb = new StringBuilder();
sb.Append(CacheKey.CarbonVIP_Prefix);
sb.Append("_");
sb.Append(hostID.ToString());
string Key = sb.ToString();
roomModel.ID = room.HostID;
string current_status = CSRedisCacheHelper.Get(Key);
if (string.IsNullOrEmpty(current_status))
{
string DKey = string.Format("DKey_{0}_{1}_{2}_{3}", CurrentHotelID, roomnum, "054000001", "054000100");
var ddd = HttpContext.Cache.Get(DKey);
List takeOutdata = new List();
if (ddd != null)
{
takeOutdata = ddd as List;
}
else
{
var lll = SysHotelManager.IsExistsSomeDeviceRoomModal(CurrentHotelID, roomnum, "054000001", "054000100");
takeOutdata = lll;
HttpContext.Cache.Insert(DKey, lll, null, Cache.NoAbsoluteExpiration, new TimeSpan(0, 30, 0));
}
if (takeOutdata.Count > 0)
{
current_status = "exists_nostatus";
}
else
{
current_status = "";
}
}
roomModel.CarbonVIP = current_status;
#endregion
string host_number = room.HostNumber;
string mac = room.MAC;
bool is_online = CSRedisCacheHelper.Contains(host_number, mac);
if (!string.IsNullOrEmpty(mac))
{
///能耗
//string nenghaoKey = CacheKey.NengHao + "_" + mac;
string nenghaoKey = CacheKey.NengHao + "_" + host_number;
//var NNNHHH = CSRedisCacheHelper.ForeverGet(nenghaoKey);
var NNNHHH = CSRedisCacheHelper.Get_Partition(nenghaoKey,1);
if (NNNHHH != null)
{
roomModel.Power = NNNHHH.P.ToString()+"w";
}
else
{
roomModel.Power = "";
}
}
roomModel.HostStatus = is_online;
roomModel.RoomNumber = room.RoomNumber;
roomModel.RoomStatus = room.RoomStatus;
roomModel.LockStatusName = (room.LockStatus == 1 ? HttpContext.InnerLanguage("LockOn") : HttpContext.InnerLanguage("LockOff"));
if (room.DoorLock)//房门开还是房门关
{
roomModel.RoomStatus += "(" + HttpContext.InnerLanguage("DoorOpen") + ")";//"," + roomModel.LockStatusName +
}
else
{
roomModel.RoomStatus += "(" + HttpContext.InnerLanguage("DoorClose") + ")";//"," + roomModel.LockStatusName +
}
roomModel.RoomStatusID = room.RoomStatusID;
roomModel.Identity = room.Identity;
roomModel.IsConnectingRoom = false;
roomModel.PowerSupplyName = room.PowerSupply ? ("" + HttpContext.InnerLanguage("Normal") + "") : ("" + HttpContext.InnerLanguage("Lock") + "");
roomModel.LockVoltage = room.LockVoltage;
roomModel.Peripheral = HttpContext.InnerLanguage("Peripheral") + "(";
if (room.PeripheralOfflineCount > 0)
{
roomModel.Peripheral += HttpContext.InnerLanguage("Offline") + ":" + room.PeripheralOfflineCount + ",";
}
if (room.PeripheralLowPowerCount > 0)
{
roomModel.Peripheral += HttpContext.InnerLanguage("LowPower") + ":" + room.PeripheralLowPowerCount + "";
}
//如果无离线和低电,则不显示
if (room.PeripheralOfflineCount == 0 && room.PeripheralLowPowerCount == 0)
{
roomModel.Peripheral = "";
}
else
{
if (room.PeripheralLowPowerCount == 0)
{
roomModel.Peripheral = roomModel.Peripheral.Replace(",", "");
}
roomModel.Peripheral += ")";
}
//原来使用Redis
//var cache_data = CSRedisCacheHelper.Get_Partition(CKey);
string CKey = CacheKey.HostInfo_Key_HostNumber + "_" + host_number;
object ooo = MemoryCacheHelper.Get(CKey);
if (ooo != null)
{
Host cache_data = ooo as Host;
string k2 = CacheKey.PowerSupply + "_" + cache_data.HostNumber;
bool b = CSRedisCacheHelper.ForeverGet(k2);
string k3 = CacheKey.LockVoltage + "_" + cache_data.HostNumber;
float b3 = CSRedisCacheHelper.ForeverGet(k3);
roomModel.LockVoltage = b3;
roomModel.LockStatusName = (cache_data.LockStatus == 1 ? HttpContext.InnerLanguage("LockOn") : HttpContext.InnerLanguage("LockOff"));
roomModel.PowerSupplyName = b ? ("" + HttpContext.InnerLanguage("Normal") + "") : ("" + HttpContext.InnerLanguage("Lock") + "");
if (cache_data.RoomStatus == null)
{
roomModel.RoomStatus = "空房";
}
else
{
roomModel.RoomStatus = cache_data.RoomStatus.Name;
}
if (cache_data.DoorLockStatus)//房门开还是房门关
{
roomModel.RoomStatus += "(" + HttpContext.InnerLanguage("DoorOpen") + ")";//"," + roomModel.LockStatusName +
}
else
{
roomModel.RoomStatus += "(" + HttpContext.InnerLanguage("DoorClose") + ")";//"," + roomModel.LockStatusName +
}
}
//Host hh = null;
string KongTiaoAddress = "";
string CurrentRoomKongTiao = "GetRoomKongTiaoStatus+" + CurrentHotelID.ToString() + "+" + host_number;
object oofgs = MemoryCacheHelper.Get(CurrentRoomKongTiao);
if (oofgs != null)
{
KongTiaoAddress = oofgs.ToString();
}
else
{
//①获取空调信息
HostModal hostModal = HostModalManager.Load(room.HostID, DeviceType.AirConditioner).Where(r => r.Modal.Name != "").FirstOrDefault();
if (hostModal != null)
{
MemoryCacheHelper.SlideSet(CurrentRoomKongTiao, hostModal.Modal.ModalAddress);
KongTiaoAddress = hostModal.Modal.ModalAddress;
}
}
//string Key_KKKongTiao = CacheKey.HostInfo_Key_HostNumber + "_" + host_number;
//object obj = MemoryCacheHelper.Get(Key_KKKongTiao);
//if (obj != null)
//{
// hh = obj as Host;
// var QQQ = hh.RoomType.Modals.Where(A => A.RoomType.Equals(DeviceType.AirConditioner) && A.Name != "").FirstOrDefault();
// if (QQQ != null)
// {
// KongTiaoAddress = QQQ.ModalAddress;
// }
//}
//空调的值
string KongTiaoKey = CacheKey.HostModalStatus_Prefix + "_" + hostID + "_" + "007001000";
if (!string.IsNullOrEmpty(KongTiaoAddress))
{
KongTiaoKey = CacheKey.HostModalStatus_Prefix + "_" + hostID + "_" + KongTiaoAddress;
}
var kongtiao_cache_data = CSRedisCacheHelper.Get_Partition(KongTiaoKey);
if (kongtiao_cache_data != null)
{
var nnn = kongtiao_cache_data.AirConditionData;
roomModel.AirStatusName = (nnn.AirStatus == 1 ? HttpContext.InnerLanguage("AirOn") : HttpContext.InnerLanguage("AirOff"));
roomModel.RoomTemp = nnn.CurrentTemp;
roomModel.SettingTemp = nnn.SettingTemp;
roomModel.Mode = nnn.AirStatus == 1 ? nnn.Mode : 0;//如果空调关,则不显示模式
roomModel.FanSpeed = nnn.AirStatus == 1 ? nnn.FanSpeed : 0;//如果空调关,则不显示风速
roomModel.ValveName = (nnn.Valve == 1 ? HttpContext.InnerLanguage("ValveOn") : HttpContext.InnerLanguage("ValveOff"));//阀门
}
else
{
roomModel.AirStatusName = HttpContext.InnerLanguage("AirOff");
roomModel.RoomTemp = 0;
roomModel.SettingTemp = 0;
roomModel.Mode = 0;
roomModel.FanSpeed = 0;
roomModel.ValveName = HttpContext.InnerLanguage("ValveOff");//阀门
}
//if (hostModal != null)
//{
// roomModel.AirStatusName = (hostModal.Status == 1 ? HttpContext.InnerLanguage("AirOn") : HttpContext.InnerLanguage("AirOff"));
// roomModel.RoomTemp = hostModal.CurrentTemp;
// roomModel.SettingTemp = hostModal.SettingTemp;
// roomModel.Mode = hostModal.Status == 1 ? hostModal.Mode : 0;//如果空调关,则不显示模式
// roomModel.FanSpeed = hostModal.Status == 1 ? hostModal.FanSpeed : 0;//如果空调关,则不显示风速
// roomModel.ValveName = (hostModal.Valve == 1 ? HttpContext.InnerLanguage("ValveOn") : HttpContext.InnerLanguage("ValveOff"));//阀门
//}
//else
//{
// roomModel.AirStatusName = HttpContext.InnerLanguage("AirOff");
// roomModel.RoomTemp = 0;
// roomModel.SettingTemp = 0;
// roomModel.Mode = 0;
// roomModel.FanSpeed = 0;
// roomModel.ValveName = HttpContext.InnerLanguage("ValveOff");//阀门
//}
//②获取服务信息
//var services = HostModalManager.Load(room.HostID, DeviceType.ServiceInfo).Where(r => r.Modal.ActiveIndicator && r.Status == 1);
var services = HostModalManager.Load(room.HostID, DeviceType.ServiceInfo).Where(r => r.Modal.ActiveIndicator);
roomModel.Services = new List();
foreach (var service in services)
{
string ServiceKey = CacheKey.HostModalStatus_Prefix + "_" + hostID + "_" + service.Modal.ModalAddress;
var service_cache_data = CSRedisCacheHelper.Get_Partition(ServiceKey);
if (service_cache_data != null && service_cache_data.Status == 1)
{
roomModel.Services.Add(new ServiceModel
{
Status = 1,
Code = service.Modal.ModalAddress,
Name = ReturnNameByLanguage(service.Modal.Name, service.Modal.EnglishName, service.Modal.TWName),
Color = string.IsNullOrEmpty(service.Modal.Color) ? "#080808" : service.Modal.Color
});
}
}
//③获取空气质量检测数据
if (isAirDetect)
{
//var airDetects = HostModalManager.Load(room.HostID, DeviceType.AirDetect).Where(r => r.Modal.ActiveIndicator && r.Status == 1);
var airDetects = HostModalManager.Load(room.HostID, DeviceType.AirDetect).Where(r => r.Modal.ActiveIndicator && r.Status == 1);
roomModel.AirDetects = new List();
foreach (var airDetect in airDetects)
{
string DiZhi = airDetect.Modal.ModalAddress;
string ModalKey = CacheKey.HostModalStatus_Prefix + "_" + hostID + "_" + DiZhi;
var kongqi_data = CSRedisCacheHelper.Get_Partition(ModalKey);
if (kongqi_data == null || kongqi_data.Status != 1)
{
continue;
}
var airModel = new AirDetectModel();
airModel.Name = ReturnNameByLanguage(airDetect.Modal.Name, airDetect.Modal.EnglishName, airDetect.Modal.TWName);
string color = "red";
switch (airDetect.Modal.ModalAddress)
{
case "009000001"://CO2浓度 ppm
case "009001001":
if (kongqi_data.Brightness <= 1000)
{
color = "green";
}
else if (kongqi_data.Brightness <= 2000)
{
color = "orange";
}
else if (kongqi_data.Brightness <= 5000)
{
color = "yellow";
}
break;
case "009000002"://甲醛浓度 ug/m3 实际显示单位为mg/M3
case "009001002":
if (kongqi_data.Brightness <= 80)
{
color = "green";
}
else if (kongqi_data.Brightness <= 100)
{
color = "orange";
}
else if (kongqi_data.Brightness <= 500)
{
color = "yellow";
}
break;
case "009000003"://TVOC浓度 ug/m3 实际显示单位为mg/M3
case "009001003":
if (kongqi_data.Brightness <= 160)
{
color = "green";
}
else if (kongqi_data.Brightness <= 500)
{
color = "orange";
}
else if (kongqi_data.Brightness <= 3000)
{
color = "yellow";
}
break;
case "009000004"://PM2.5浓度 ug/m3
case "009001004":
if (kongqi_data.Brightness <= 35)
{
color = "green";
}
else if (kongqi_data.Brightness <= 75)
{
color = "orange";
}
else if (kongqi_data.Brightness <= 150)
{
color = "yellow";
}
break;
case "009000005"://PM10浓度 ug/m3
case "009001005":
if (kongqi_data.Brightness <= 50)
{
color = "green";
}
else if (kongqi_data.Brightness <= 100)
{
color = "orange";
}
else if (kongqi_data.Brightness <= 150)
{
color = "yellow";
}
break;
case "009000006"://温度 度
case "009001006":
if (kongqi_data.Brightness >= 18 && kongqi_data.Brightness <= 28)
{
color = "green";
}
else if (kongqi_data.Brightness >= 16 && kongqi_data.Brightness < 18 || kongqi_data.Brightness > 28 && kongqi_data.Brightness <= 32)
{
color = "orange";
}
else if (kongqi_data.Brightness >= 12 && kongqi_data.Brightness < 16 || kongqi_data.Brightness > 32 && kongqi_data.Brightness <= 36)
{
color = "yellow";
}
else if (kongqi_data.Brightness < 12 || kongqi_data.Brightness > 36)
{
color = "red";
}
break;
case "009000007"://湿度 %RH
case "009001007":
if (kongqi_data.Brightness >= 40 && kongqi_data.Brightness <= 60)
{
color = "green";
}
else if (kongqi_data.Brightness >= 30 && kongqi_data.Brightness < 40 || kongqi_data.Brightness > 60 && kongqi_data.Brightness <= 80)
{
color = "orange";
}
else if (kongqi_data.Brightness >= 15 && kongqi_data.Brightness < 30 || kongqi_data.Brightness > 80 && kongqi_data.Brightness <= 90)
{
color = "yellow";
}
else if (kongqi_data.Brightness < 15 || kongqi_data.Brightness > 90)
{
color = "red";
}
break;
}
airModel.Value = string.Format("{1}", color, airDetect.Brightness);
roomModel.AirDetects.Add(airModel);
}
}
if (string.IsNullOrEmpty(roomModel.Power))
{
roomModel.Power = "";
}
floor.Sort = room.GroupSort;
rooms.Add(roomModel);
});
floor.FloorRooms = rooms.OrderBy(r => r.RoomNumber).ThenBy(r => r.ID).ToList();
floors.Add(floor);
});
return Json(new { IsSuccess = true, Total = total, Data = floors.OrderBy(r => r.Sort) }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
logger.Error(ex);
return Json(new { IsSuccess = false, Message = ex.Message }, JsonRequestBehavior.AllowGet);
}
}
///
/// 加载客房统计数据
///
/// 临时 注释 ,返回空值
/// 2025-07-11
///
[Authorize]
public ActionResult LoadRoomStatistics()
{
string IP = "";
string PPP = Request.UserHostAddress;
string III = Request.ServerVariables["REMOTE_ADDR"];
if (string.IsNullOrEmpty(III))
{
IP = PPP;
}
else
{
IP = III;
}
string[] codename = CurrentHotelName.Split('_');
string code = codename[0];
string Account = "";
object ooo = Session["Account"];
if (ooo != null)
{
Account = ooo.ToString();
}
if (!string.IsNullOrEmpty(Account))
{
string Key = IP + "@" + Account + "@" + code;
OnLineUser U = null;
bool bf = DataTongJi.OnLineUserList_IP.TryGetValue(Key, out U);
if (bf)
{
U.LastUpdateTime = DateTime.Now;
}
else
{
OnLineUser u = new OnLineUser();
u.Account = Account;
u.IP = IP;
u.LastUpdateTime = DateTime.Now;
u.HotelCode = code;
u.HotelId = CurrentHotelID;
DataTongJi.OnLineUserList_IP.TryAdd(Key, u);
}
//OnLineUser V = null;
//bool uv = DataTongJi.OnLineUserList_IP.TryGetValue(Account, out V);
//if (uv)
//{
// V.LastUpdateTime = DateTime.Now;
//}
//else
//{
// OnLineUser u = new OnLineUser();
// u.Account = Account;
// u.IP = IP;
// u.LastUpdateTime = DateTime.Now;
// u.HotelCode = code;
// u.HotelId = CurrentHotelID;
// DataTongJi.OnLineUserList_Account.TryAdd(Account, u);
//}
}
//string KeyFilter1 = "在线Account";
//RCUHost.RCUHostCommon.tools.LanJieData(KeyFilter1, Q.Value);
//string KeyFilter2 = "在线IP";
//RCUHost.RCUHostCommon.tools.LanJieData(KeyFilter2, IP);
string LieKey = CacheKey.LieECOKey + "_" + CurrentHotelID;
var LLLData = LieECOManager.LoadAll().Where(A => A.HotelID == CurrentHotelID && A.IsEnable).ToList();
if (LLLData != null && LLLData.Count > 0)
{
CSRedisCacheHelper.Set_Partition>(LieKey, LLLData, 1);
}
DataTongJi.InvokeCount("LoadRoomStatistics_");
//string ipAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
//if (string.IsNullOrEmpty(ipAddress)) // 如果没有代理,直接获取REMOTE_ADDR
//{
// ipAddress = Request.ServerVariables["REMOTE_ADDR"];
//}
//// 如果有代理,取第一个IP(可能是客户端的真实IP)
//else
//{
// string[] addresses = ipAddress.Split(',');
// if (addresses.Length > 0)
// {
// ipAddress = addresses[0].Trim();
// }
//}
//return Json(new { IsSuccess = true, Data = new {} }, JsonRequestBehavior.AllowGet);
if (Session["CurrentHotelID"] == null)
{
return Json(new { IsSuccess = false, Message = "重新登录" });
}
try
{
IList