コード例 #1
0
ファイル: ClientHanlder.cs プロジェクト: wwkkww1983/LeProj
        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();
            }
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        public void DeliverRobotParts(FactoryRoom deliveryBay)
        {
            foreach (var robotPart in RobotParts)
            {
                deliveryBay.AddRobotPart(robotPart);
            }

            RobotParts.Clear();
        }
コード例 #4
0
ファイル: ClientHanlder.cs プロジェクト: wwkkww1983/LeProj
        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);
        }
コード例 #5
0
ファイル: ClientHanlder.cs プロジェクト: wwkkww1983/LeProj
 /// <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;
 }
コード例 #6
0
ファイル: ClientHanlder.cs プロジェクト: wwkkww1983/LeProj
 /// <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
     });
 }
コード例 #7
0
        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"));
        }
コード例 #8
0
ファイル: OrderController.cs プロジェクト: wwkkww1983/LeProj
        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);
        }
コード例 #9
0
        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 }));
        }
コード例 #10
0
    // 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;
        }
    }
コード例 #11
0
        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"));
        }
コード例 #12
0
        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);
        }
コード例 #13
0
 public void EnterRoom()
 {
     _factoryRoom = GetFactoryRoom();
     _factoryRoom.AddTransportationMechanism(this);
 }