using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using System.Web.Mvc; using Domain; using Service; using System.IO; using CommonEntity; using Common; namespace WebSite.Controllers { public class RoomServiceController : BaseController { private const int AuthorityID = 10; public IRoomServiceManager RoomServiceManager { get; set; } public IRoomServiceRecordManager RoomServiceRecordManager { get; set; } public IAlarmSettingManager AlarmSettingManager { get; set; } public IHostManager HostManager { get; set; } public IHostModalManager HostModalManager { get; set; } public ActionResult Index() { return View(); } #region 服务记录 /// /// 服务记录 /// /// public ActionResult ServiceRecords() { return View(); } /// /// 加载服务记录 /// /// [Authorize] public ActionResult LoadServiceRecords(int page, int rows, string order, string sort, string roomNumber, string startTime, string endTime, string alarmCodes) { Models.QueryConditionModel model = new Models.QueryConditionModel(); model.Order = order; model.Sort = sort; model.RoomNumber = roomNumber; model.StartTime = startTime; model.EndTime = endTime; model.AlarmCodes = alarmCodes; Session["QueryConditionModel"] = model; long total = 0; string[] services = null; if (!String.IsNullOrWhiteSpace(alarmCodes)) { services = alarmCodes.Split(','); } var list = RoomServiceRecordManager.LoadAllByPage(out total, page, rows, order, sort, roomNumber, startTime, endTime, services); //list = (IList)list.Where(r => r.HostID == CurrentHotelID); var result = list.Select(r => new { r.RoomNumber, r.Name, r.StartTime, r.EndTime, Time = r.EndTime.HasValue ? (r.EndTime.Value - r.StartTime).TotalMinutes : (DateTime.Now - r.StartTime).TotalMinutes, }); return Json(new { total = total, rows = result }); } #endregion /// /// 获取当前服务信息 /// /// [Authorize] public ActionResult LoadCurrentMsg() { var result = new List(); var table = RoomServiceManager.LoadCurrentRoomServicesCount(CurrentHotelID, this.User.Identity.Name); if (table != null) { foreach (System.Data.DataRow row in table.Rows) { result.Add(new { Name = (bool)Session["isCN"] ? row["Name"] : row["EName"], Count = row["Number"] }); } } return Json(new { IsSuccess = true, Data = result }, JsonRequestBehavior.AllowGet); } /// /// 获取当前设备故障信息 /// /// [Authorize] public ActionResult LoadCurrentHostFault() { IList faults = new List(); //外设离线 IList list = RoomServiceManager.LoadCurrentHostFaultStatistics(CurrentHotelID, this.User.Identity.Name, 1); foreach (object obj in list) { faults.Add(new { RoomNumber = Convert.ToString(((object[])(obj))[0]), Name = HttpContext.InnerLanguage("PeripheralOffline") }); } //外设低电 list = RoomServiceManager.LoadCurrentHostFaultStatistics(CurrentHotelID, this.User.Identity.Name, 2); foreach (object obj in list) { faults.Add(new { RoomNumber = Convert.ToString(((object[])(obj))[0]), Name = HttpContext.InnerLanguage("PeripheralLowPower") }); } return Json(new { total = faults.Count, rows = faults }); } //[Authorize] //public ActionResult LoadDeviceFault() //{ // IList list = RoomServiceManager.LoadCurrentHostFaultStatistics(CurrentHotelID, this.User.Identity.Name); // var result = list.Select(r => new // { // RoomNumber = r[0] // }).ToList(); // return Json(new { total = result.Count, rows = result }); //} /// /// 加载当前请求的服务 /// /// [Authorize] public ActionResult LoadCurrentRoomServices() { IList list = RoomServiceManager.LoadCurrentRoomServices(CurrentHotelID, this.User.Identity.Name); var result = list.Select(r => new TempLinShiClass() { HostID = r[0].ToString(), RoomTypeModalID = r[1].ToString(), RoomNumber = r[2].ToString(), Name = ReturnNameByLanguage(r[3].ToString(), r[4].ToString(), r[6].ToString()), //(bool)Session["isCN"] ? r[3] : r[4], Time = r[5], HostNumber = r[7].ToString(), ModalAddress = r[8].ToString() }).ToList(); foreach (var item in result) { if (item.Time == null) { string KKey = CacheKey.HostModalStatus_Prefix + "_" + item.HostID + "_" + item.ModalAddress; var hostModal = CSRedisCacheHelper.Get_Partition(KKey); if (hostModal != null) { HostModal_Cache hhh = hostModal as HostModal_Cache; item.Time = hhh.UpdateTime; } } } return Json(new { total = result.Count, rows = result }); } /// /// 加载当前客房异常 /// /// [Authorize] public ActionResult LoadCurrentRoomAbnormities() { IList list = RoomServiceManager.LoadCurrentRoomAbnormities(CurrentHotelID, User.Identity.Name); var result = list.Select(r => new { ID = r[0], Name = (bool)Session["isCN"] ? r[1] : r[4], RoomNumber = r[2], Time = r[3] }).ToList(); return Json(new { total = result.Count, rows = result }); } [Authorize] public ActionResult LoadServicesForCombobox() { //var list = AlarmSettingManager.LoadAll() // .Where(r => r.HotelID == CurrentHotelID && r.Type == 'B') // .OrderBy(o => o.Sort) // .Select(s => new { Name = (Language == Language.CN) ? s.Name : s.EName, s.Code, s.Color }) // .ToList(); IList services = new List(); var table = RoomServiceManager.LoadCurrentRoomServicesCount(CurrentHotelID, this.User.Identity.Name); if (table != null) { foreach (System.Data.DataRow row in table.Rows) { services.Add(new { Code = row["Code"], Name = ReturnNameByLanguage(row["Name"].ToString(), row["EName"].ToString(), row["TWName"].ToString()),// (bool)Session["isCN"] ? row["Name"] : row["EName"], Color = row["Color"] }); } } services.Insert(0, new { Name = HttpContext.InnerLanguage("Service"), Code = "", Color = "#FFFFFF" }); return Json(services); } /// /// 清除服务 /// /// /// [Authorize] public ActionResult ClearRoomService(long id, string roomNumber, string name) { try { var host = HostManager.GetByRoomNumber(roomNumber, CurrentHotelID); if (host == null) { throw new ApplicationException(HttpContext.InnerLanguage("InvalidRoom")); } var service = RoomServiceManager.Get(id); if (service == null) { throw new ApplicationException(HttpContext.InnerLanguage("InvalidService")); } RoomServiceManager.ClearRoomService(host, service, User.Identity.Name); // 清除相连通主机的服务 //if (host.IsConnectingRoom) //{ // var hostList = HostManager.GetConnectRoomHosts(host); // foreach (var item in hostList) // { // var service1 = RoomServiceManager.Get(host.ID, service.AlarmCode); // RoomServiceManager.ClearRoomService(item, service1, User.Identity.Name); // } //} SaveSystemLog(AuthorityID, HttpContext.InnerLanguage("CleanupServices"), name); return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("CleanupSuccess") }); } catch (Exception ex) { return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("CleanupFailedReason") + ex.Message }); } } public ActionResult ExportExcel() { try { NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(); NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1"); sheet1.SetColumnWidth(0, 10 * 256); sheet1.SetColumnWidth(1, 20 * 256); sheet1.SetColumnWidth(2, 20 * 256); sheet1.SetColumnWidth(3, 20 * 256); NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0); row1.CreateCell(0).SetCellValue(HttpContext.InnerLanguage("RoomNumber")); row1.CreateCell(1).SetCellValue(HttpContext.InnerLanguage("ServiceType")); row1.CreateCell(2).SetCellValue(HttpContext.InnerLanguage("StartDate")); row1.CreateCell(3).SetCellValue(HttpContext.InnerLanguage("Deadline")); row1.CreateCell(4).SetCellValue(HttpContext.InnerLanguage("TotalTime")); Models.QueryConditionModel model = Session["QueryConditionModel"] as Models.QueryConditionModel; //var list = Session["ServiceList"] as IList; long total = 0; string[] services = null; if (!String.IsNullOrWhiteSpace(model.AlarmCodes)) { services = model.AlarmCodes.Split(','); } var list = RoomServiceRecordManager.LoadAllByPage(out total, 1, 10000, model.Order, model.Sort, model.RoomNumber, model.StartTime, model.EndTime, services); list = (IList)list.Where(r => r.HostID == CurrentHotelID); if (list != null) { for (int i = 0; i < list.Count; i++) { NPOI.SS.UserModel.IRow row = sheet1.CreateRow(i + 1); row.CreateCell(0).SetCellValue(list[i].RoomNumber); row.CreateCell(1).SetCellValue(list[i].Name); row.CreateCell(2).SetCellValue(list[i].StartTime.ToString("yyyy-MM-dd HH:mm:ss")); row.CreateCell(3).SetCellValue(list[i].EndTime.HasValue ? list[i].EndTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""); Double totalMinutes = list[i].EndTime.HasValue ? (list[i].EndTime.Value - list[i].StartTime).TotalMinutes : (DateTime.Now - list[i].StartTime).TotalMinutes; row.CreateCell(4).SetCellValue(Math.Floor(totalMinutes / 60) + HttpContext.InnerLanguage("Hour") + Math.Ceiling(totalMinutes % 60) + HttpContext.InnerLanguage("Minute")); } } using (MemoryStream stream = new MemoryStream()) { book.Write(stream); stream.Seek(0, SeekOrigin.Begin); string filename = Common.Tools.ToUtf8String(HttpContext.InnerLanguage("ServiceQuery") + ".xls"); return File(stream, "application/vnd.ms-excel", filename); } } catch (Exception ex) { return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("Export") + ex.Message }, JsonRequestBehavior.AllowGet); } } } public class TempLinShiClass { public string HostID; public string RoomTypeModalID; public string RoomNumber; public string Name; public object Time; public string HostNumber { get; set; } public string ModalAddress { get; set; } } }