private void RefreshOnlineInfo(Machines machine, DbTableDbContext db) { DateTime now = DateTime.Now; DeviceStatus roomStatus = GlobalVariable.deviceStatusList.Find(item => item.RoomID == machine.RoomID); if (roomStatus == null) { FactoryRoom tempRoom = db.FactoryRoom.Find(machine.RoomID); roomStatus = new DeviceStatus() { FactoryName = tempRoom.FactoryName, MachineCount = tempRoom.MachineCount, RoomID = machine.RoomID, RoomName = machine.RoomName, MachineList = new System.Collections.Generic.Dictionary <string, DateTime>() }; roomStatus.MachineList.Add(machine.Number, now); GlobalVariable.deviceStatusList.Add(roomStatus); } else { if (roomStatus.MachineList.ContainsKey(machine.Number)) { roomStatus.MachineList[machine.Number] = now; } else { roomStatus.MachineList.Add(machine.Number, now); } LastHeartBreak tempHeart = db.LastHeartBreak.FirstOrDefault(item => item.MachineId == machine.ID); db.LastHeartBreak.Attach(tempHeart); tempHeart.DateRefresh = now; db.SaveChanges(); } }
public ActionResult Create(StaffInfo staffInfo) { if (ModelState.IsValid) { IEnumerable <StaffInfo> tempStaff = from item in db.StaffInfo where item.Number == staffInfo.Number select item; if (tempStaff.Count() > 0) { ViewData["error"] = "【工号】 重复"; return(View(staffInfo)); } FactoryRoom roomItem = db.FactoryRoom.Single(item => item.RoomID == staffInfo.DeptId); staffInfo.DeptName = roomItem.RoomName; staffInfo.DeptNumber = roomItem.RoomNumber; //用户资料库 db.StaffInfo.Add(staffInfo); //同步管理账户 WebSecurity.CreateUserAndAccount(staffInfo.Number, staffInfo.Password); db.SaveChanges(); } return(View("Detail", staffInfo)); }
public void DeliverRobotParts(FactoryRoom deliveryBay) { foreach (var robotPart in RobotParts) { deliveryBay.AddRobotPart(robotPart); } RobotParts.Clear(); }
public byte[] HandlerClientData(byte[] buff) { int resInt = 0, machineId = 0; byte[] byteResp = { 0, 0, 0 }; DbTableDbContext db = new DbTableDbContext(); DeviceSetting outInfo = this.DecodeData(buff); FactoryRoom tempRoom = db.FactoryRoom.FirstOrDefault(item => item.RoomNumber == outInfo.RoomNumber); Machines tempMachine = db.Machines.FirstOrDefault(item => item.Number == outInfo.DeviceNumber); Machines innerInfo; if (outInfo.DeviceId < 1) { resInt = tempRoom == null ? 3 : (tempMachine != null ? 4 : 0); if (resInt != 0) { byteResp[0] = (byte)resInt; return(byteResp); } innerInfo = this.exchangeData(tempRoom, outInfo); db.FactoryRoom.Attach(tempRoom); tempRoom.MachineCount += 1; //记录原始数据 db.Machines.Add(innerInfo); //最近心跳设备记录 db.LastHeartBreak.Add(new LastHeartBreak() { DateRefresh = DateTime.Now, FactoryName = tempRoom.FactoryName, MachineId = innerInfo.ID, RoomID = tempRoom.RoomID, RoomName = tempRoom.RoomName, MachineName = outInfo.DeviceNumber }); } else { innerInfo = db.Machines.FirstOrDefault(item => (item.IpAddress == outInfo.IPAddress || item.Number == outInfo.DeviceNumber) && item.ID != outInfo.DeviceId); if (innerInfo != null) { byteResp[0] = (byte)4; return(byteResp); } innerInfo = db.Machines.Find(outInfo.DeviceId); db.Machines.Attach(innerInfo); this.exchangeData(innerInfo, tempRoom, outInfo); machineId = innerInfo.ID; } db.SaveChanges(); machineId = innerInfo.ID; //生成返回结果 byte[] byteID = ConvertHelper.Int16ToBytes(machineId, true); Array.Copy(byteID, 0, byteResp, 1, 2); return(byteResp); }
/// <summary> /// 内外部数据转换 /// </summary> /// <param name="innerInfo"></param> /// <param name="room"></param> /// <param name="info"></param> private void exchangeData(Machines innerInfo, FactoryRoom room, DeviceSetting info) { innerInfo.RoomID = room.RoomID; innerInfo.RoomName = room.RoomName; innerInfo.RoomNumber = room.RoomNumber; innerInfo.IpAddress = info.IPAddress; innerInfo.Number = info.DeviceNumber; innerInfo.Name = info.DeviceName; innerInfo.Status = enumMachineStatus.Normal; }
/// <summary> /// 内外部数据转换 /// </summary> /// <param name="room"></param> /// <param name="info"></param> /// <returns></returns> private Machines exchangeData(FactoryRoom room, DeviceSetting info) { return(new Machines() { RoomID = room.RoomID, RoomName = room.RoomName, RoomNumber = room.RoomNumber, IpAddress = info.IPAddress, Number = info.DeviceNumber, Name = info.DeviceName, Status = enumMachineStatus.Normal }); }
public ActionResult RoomEdit(FactoryRoom room) { FactoryRoom dbRoom = db.FactoryRoom.Find(room.RoomID); string oldRoomName = dbRoom.RoomName; dbRoom.ManagerName = room.ManagerName; dbRoom.ManagerPhone = room.ManagerPhone; dbRoom.Phone = room.Phone; dbRoom.Remarks = room.Remarks; dbRoom.RepairNumber = room.RepairNumber; dbRoom.Address = room.Address; if (dbRoom.RoomNumber != room.RoomNumber || dbRoom.RoomName != room.RoomName) { IEnumerable <Machines> machineList = from item in db.Machines where item.RoomID == dbRoom.RoomID select item; foreach (Machines machine in machineList) { db.Machines.Attach(machine); machine.RoomName = room.RoomName; machine.RoomNumber = room.RoomNumber; } IEnumerable <StaffInfo> staffList = from item in db.StaffInfo where item.DeptId == dbRoom.RoomID select item; foreach (StaffInfo staff in staffList) { db.StaffInfo.Attach(staff); staff.DeptName = room.RoomName; staff.DeptNumber = room.RoomNumber; } //移除原来车间名称的心跳包,新车间名称会在新的心跳包过来时 dbRoom.RoomName = room.RoomName; dbRoom.RoomNumber = room.RoomNumber; } db.SaveChanges(); if (oldRoomName != room.RoomName) { client.Set <string>(PRE_ONLINE_MACHINE + dbRoom.RoomNumber, room.RoomName); } return(RedirectToAction("Rooms")); }
private bool CheckOrder(string order, out List <OrderSystemDetail> orderDetails) { bool result = false; orderDetails = null; try { //获取订单数据 Dictionary <string, string> orderParam = new Dictionary <string, string>(); orderParam.Add(ORDER_CODE_PARAM, order); string strOrderInfo = WebInfo.PostPageInfo(ORDER_URL, orderParam); //订单解码 DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List <OrderSystemDetail>)); MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(strOrderInfo)); orderDetails = (List <OrderSystemDetail>)serializer.ReadObject(stream); if (orderDetails.Count < 1) { return(result); } //校验车间权限 OrderSystemDetail orderItem = orderDetails[0]; FactoryRoom room = db.FactoryRoom.FirstOrDefault(item => item.RoomNumber == orderItem.ocrcode); if (room == null) { return(result); } int userId = Convert.ToInt32(Session["UserID"]); UsersInRooms tempUserRoom = db.UsersInRooms.FirstOrDefault(item => item.RoomId == room.RoomID && item.UserId == userId); if (tempUserRoom == null) { return(result); } orderItem.roomName = room.RoomName; orderItem.roomId = room.RoomID; result = true; } catch { } return(result); }
public ActionResult UploadStaffInfo(HttpPostedFileBase excelFileName) { if (excelFileName.ContentLength <= 0) { return(RedirectToAction("Index")); } string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + Path.GetFileName(excelFileName.FileName); string extName = Path.GetExtension(excelFileName.FileName); if (extName != ".xlsx") { return(RedirectToAction("Index", new { error = enumErrorCode.FileOnlyExcel })); } string serverPath = Path.Combine(Server.MapPath("~/Uploads"), fileName); excelFileName.SaveAs(serverPath); List <StaffInfo> staffList = new List <StaffInfo>(); enumErrorCode result = Excel.CheckAndReadStaffInfo(serverPath, staffList); if (result == enumErrorCode.HandlerSuccess) { try { foreach (StaffInfo staff in staffList) { FactoryRoom tempRoom = db.FactoryRoom.FirstOrDefault(item => item.RoomNumber == staff.DeptNumber); staff.DeptId = tempRoom.RoomID; staff.DeptName = tempRoom.RoomName; db.StaffInfo.Add(staff); //同步管理账户 WebSecurity.CreateUserAndAccount(staff.Number, staff.Phone); } db.SaveChanges(); } catch { result = enumErrorCode.ExcelContentError; } } return(RedirectToAction("Index", new { error = result })); }
// These methods handle the text for our state machines when the appropriate key is pressed. void DisplayRoom(FactoryRoom room) { switch (room) { case FactoryRoom.Office: { Text.text = "You are currently in the office. "; } break; case FactoryRoom.Maintenance: { Text.text = "You are in maintenance. You see broken glass all around,\n and can hear the wails of crushed coffee beans. \n Press L to look around, or N to continue to the next room."; } break; case FactoryRoom.Manufacturing: { Text.text = "Manufacturing contains a secret. Press L to look around, or B to continue to the next room. "; } break; case FactoryRoom.Bottling: { Text.text = "Broken chilled coffee bottles lay all around you. A massacre of bean grounding took place here not long ago. \n Press L to look around, or W to locate an exit."; } break; case FactoryRoom.Window: { Text.text = "You discover a cracked window that you can escape through. Press T to throw your bottle \n and climb out, or L to wait and look around for stuff."; } break; } }
public ActionResult RoomCreate(FactoryRoom room) { IEnumerable <FactoryRoom> tempRoom = from item in db.FactoryRoom where item.RoomNumber == room.RoomNumber || item.RoomName == room.RoomName select item; if (tempRoom.Count() > 0) { ViewData["error"] = "【车间编号】或【车间名称】 重复"; return(View(room)); } //车间增加 db.FactoryRoom.Add(room); db.SaveChanges(); //添加超级管理员 db.UsersInRooms.Add(new UsersInRooms() { RoomId = room.RoomID, UserId = 1 }); db.SaveChanges(); return(RedirectToAction("Rooms")); }
private List <DeviceStatus> RefreshMachineStatus(bool refresh = false) { List <DeviceStatus> deviceStatusList = new List <DeviceStatus>(); if (!refresh) {//数据自刷新 HashSet <string> roomList = client.GetAllItemsFromSet(ONLINE_FACTRORY_ROOM); foreach (string room in roomList) { FactoryRoom roomItem = db.FactoryRoom.FirstOrDefault(item => item.RoomNumber == room); DeviceStatus tempStatus = new DeviceStatus() { RoomName = client.Get <string>(PRE_ROOM_NAME_NUMBER + room), MachineList = new Dictionary <string, DateTime>() }; HashSet <string> machineList = client.GetAllItemsFromSet(PRE_ONLINE_MACHINE + room); foreach (string machine in machineList) { DateTime lastTime = new DateTime(client.Get <long>(PRE_ONLINE_TIME + machine)); if (CheckValidTime(lastTime)) { string strName = client.Get <string>(PRE_MACHINE_NAME_NUMBER + machine); tempStatus.MachineList.Add(strName ?? machine, lastTime); } else { client.Remove(PRE_ONLINE_TIME + machine); client.RemoveItemFromSet(PRE_ONLINE_MACHINE + room, machine); } } if (tempStatus.MachineList.Count < 1) { client.RemoveItemFromSet(ONLINE_FACTRORY_ROOM, room); } IEnumerable <Machines> roomMachines = from item in db.Machines where item.RoomID == roomItem.RoomID select item; List <string> freeMachineList = new List <string>(); foreach (Machines item in roomMachines) { if (!tempStatus.MachineList.Keys.Contains(item.Name) && !tempStatus.MachineList.Keys.Contains(item.Number)) { freeMachineList.Add(item.Name); } } tempStatus.OfflineMachines = freeMachineList.ToArray(); tempStatus.MachineCount = tempStatus.OfflineMachines.Count() + tempStatus.MachineList.Count; deviceStatusList.Add(tempStatus); } } else {//重新加载数据 foreach (FactoryRoom room in db.FactoryRoom) { DeviceStatus device = new DeviceStatus() { RoomID = room.RoomID, RoomName = room.RoomName, MachineCount = room.MachineCount, FactoryName = room.FactoryName, MachineList = new Dictionary <string, DateTime>() }; deviceStatusList.Add(device); } foreach (DeviceStatus device in GlobalVariable.deviceStatusList) { IEnumerable <LastHeartBreak> lastItemList = from tempMachine in db.LastHeartBreak where tempMachine.RoomID == device.RoomID select tempMachine; List <string> freeMachineList = new List <string>(); foreach (LastHeartBreak item in lastItemList) { if (CheckValidTime(item.DateRefresh)) { device.MachineList.Add(item.MachineName, item.DateRefresh); } else { freeMachineList.Add(item.MachineName); } } device.OfflineMachines = freeMachineList.ToArray(); } } return(deviceStatusList); }
public void EnterRoom() { _factoryRoom = GetFactoryRoom(); _factoryRoom.AddTransportationMechanism(this); }