Exemplo n.º 1
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));
        }
Exemplo n.º 2
0
        public ActionResult Assign(int id = 0)
        {
            Schedules schedules = null;
            int       userId    = Convert.ToInt32(Session["UserID"]);

            using (var t = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions {
                IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted
            }))
            {
                schedules = db.Schedules.Find(id);
                if (schedules == null)
                {
                    return(HttpNotFound());
                }
                if (!roomControl.CheckUserInRoom(userId, schedules.RoomId))
                {
                    return(RedirectToAction("Login", "Account"));
                }
            }
            db.Schedules.Attach(schedules);
            schedules.DetailInfo = schedules.DetailInfo == null ? string.Empty : schedules.DetailInfo;
            schedules.NoticeInfo = schedules.NoticeInfo == null ? string.Empty : schedules.NoticeInfo;
            byte[] buff = null;
            App_Start.Coder.EncodeSchedule(schedules, out buff);
            enumErrorCode result = this.SendScheduleHandler(schedules.MachineId, buff, userId, PRE_INFO_TYPE_CREATE);

            if (result == enumErrorCode.HandlerSuccess)
            {
                schedules.Status = enumStatus.Assigned;
                db.SaveChanges();
            }
            return(RedirectToAction("Details", new { id = id, error = result }));
        }
Exemplo n.º 3
0
        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();
            }
        }
Exemplo n.º 4
0
        public byte[] HandlerClientData(byte[] buff)
        {
            byte[]           buffResp = { 0 };
            DbTableDbContext db       = new DbTableDbContext();
            ProductInfo      outInfo  = this.DecodeData(buff);

            Models.ProductInfo lastInfo = db.ProductInfo.OrderByDescending(tmpItem => tmpItem.ID).FirstOrDefault(item => item.MachineId == outInfo.MachineId);
            Machines           machine  = db.Machines.Find(outInfo.MachineId);

            Models.ProductInfo innerInfo = this.exchangeData(outInfo, machine);
            //记录原始数据
            db.ProductInfo.Add(innerInfo);
            db.SaveChanges();
            //记录统计表
            if (outInfo.MsgStatus == enumProductType.LoginOut)
            {
                if (lastInfo == null || lastInfo.MsgType != (byte)enumProductType.LoginIn)
                {
                    db.RecordErrorInfo(enumSystemErrorCode.ProductOutWithoutIn, innerInfo.ToString(), null);
                    return(buffResp);
                }
                if (lastInfo.staffNumber != outInfo.StaffNumber)
                {
                    db.RecordErrorInfo(enumSystemErrorCode.ProductOutInDiff, lastInfo.ToString() + "\r\n" + innerInfo.ToString(), null);
                }
                int currentFinishCount = (outInfo.ChannelFinish1 + outInfo.ChannelFinish2 + outInfo.ChannelFinish3 +
                                          outInfo.ChannelFinish4 + outInfo.ChannelFinish5 + outInfo.ChannelFinish6 - lastInfo.ChannelFinish1 -
                                          lastInfo.ChannelFinish2 - lastInfo.ChannelFinish3 - lastInfo.ChannelFinish4 - lastInfo.ChannelFinish5 -
                                          lastInfo.ChannelFinish6);
                RecordStatisticsInfo(lastInfo, innerInfo.ID, outInfo, machine, currentFinishCount, db);
            }
            buffResp[0] = 0;
            return(buffResp);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        public byte[] HandlerClientData(byte[] buff)
        {
            DbTableDbContext db      = new DbTableDbContext();
            HeartBreak       outInfo = this.DecodeData(buff);
            Machines         machine = db.Machines.Find(outInfo.MachineId);

            Models.HeartBreak innerInfo = this.exchangeData(outInfo, machine);
            //记录原始数据
            db.HeartBreak.Add(innerInfo);
            //记录设备状态
            RefreshOnlineInfo(machine, db);

            db.SaveChanges();
            byte[] resp = {};
            return(resp);
        }
Exemplo n.º 7
0
        public byte[] HandlerClientData(byte[] buff)
        {
            byte[]           buffResp = { 1 };
            DbTableDbContext db       = new DbTableDbContext();

            try
            {
                DateTime        currentTime = DateTime.Now;
                DeviceStartEnd  outInfo     = this.DecodeData(buff);
                Machines        machine     = db.Machines.Find(outInfo.MachineId);
                Schedules       schedule    = db.Schedules.FirstOrDefault(item => item.Number == outInfo.ScheduleNumber);
                UserProfile     userInfo    = new UsersContext().UserProfiles.FirstOrDefault(item => item.UserName == outInfo.UserNumber);
                MachineStartEnd innerInfo   = this.exchangeData(outInfo, machine, schedule, userInfo);
                //记录原始数据

                if (outInfo.Status == enumDeviceWorkStatus.Start)
                {
                    innerInfo.DateStart = currentTime;
                    db.MachineStartEnd.Add(innerInfo);
                }
                else
                {
                    MachineStartEnd lastRecord = db.MachineStartEnd.FirstOrDefault(item => item.MachineId == outInfo.MachineId &&
                                                                                   item.SchueduleNumber == outInfo.ScheduleNumber &&
                                                                                   item.UserNumber == outInfo.UserNumber &&
                                                                                   item.Status == enumDeviceWorkStatus.Start);
                    if (lastRecord == null)
                    {
                        innerInfo.DateEnd = currentTime;
                        db.MachineStartEnd.Add(innerInfo);
                    }
                    else
                    {
                        db.MachineStartEnd.Attach(lastRecord);
                        lastRecord.DateEnd = currentTime;
                        lastRecord.Status  = enumDeviceWorkStatus.End;
                    }
                }

                db.SaveChanges();
                buffResp[0] = 0;
            }
            catch
            {
            }
            return(buffResp);
        }
Exemplo n.º 8
0
        public byte[] HandlerClientData(byte[] buff)
        {
            byte[]           buffResp = { 1 };
            DbTableDbContext db       = new DbTableDbContext();

            try
            {
                int           outInfo   = this.DecodeData(buff);
                Machines      machine   = db.Machines.Find(outInfo);
                MachineReport innerInfo = this.exchangeData(machine);
                //记录原始数据
                db.MachineReport.Add(innerInfo);

                db.SaveChanges();
                buffResp[0] = 0;
            }
            catch
            {
            }
            return(buffResp);
        }
Exemplo n.º 9
0
        public byte[] HandlerClientData(byte[] buff)
        {
            byte[]           buffResp = { 1 };
            DbTableDbContext db       = new DbTableDbContext();

            try
            {
                DeviceMaterial      outInfo   = this.DecodeData(buff);
                Machines            machine   = db.Machines.Find(outInfo.MachineId);
                Schedules           schedule  = db.Schedules.FirstOrDefault(item => item.Number == outInfo.ScheduleNumber);
                MachineCallMaterial innerInfo = this.exchangeData(machine, schedule);
                //记录原始数据
                db.MachineCallMaterial.Add(innerInfo);

                db.SaveChanges();
                buffResp[0] = 0;
            }
            catch
            {
            }
            return(buffResp);
        }
Exemplo n.º 10
0
        private void RecordStatisticsInfo(Models.ProductInfo lastInfo, int currInfoId, ProductInfo outInfo, Machines machine, int finishCount, DbTableDbContext db)
        {
            Schedules     tempSchedule = db.Schedules.First(item => item.Number == outInfo.ScheduleNumber);
            StatisticInfo statistics   = new StatisticInfo()
            {
                ProductIdStart = lastInfo.ID,
                DateStart      = lastInfo.DateCreate,
                ProductIdOut   = currInfoId,
                DateOut        = DateTime.Now,
                ExceptionCount = outInfo.UnusualCount,
                FinishCount    = finishCount,
                MachineId      = machine.ID,
                MachineName    = machine.Name,
                OrderNumber    = tempSchedule.OrderNumber,
                ScheduleID     = tempSchedule.ID,
                ScheduleNumber = tempSchedule.Number,
                StaffName      = outInfo.StaffName,
                StaffNumber    = outInfo.StaffNumber,
                RoomID         = machine.RoomID,
                RoomName       = machine.RoomName,
                Factory        = "振德敷料"
            };

            db.Statistics.Add(statistics);
            //施工单生产记录
            db.Schedules.Attach(tempSchedule);
            tempSchedule.FinishCount += finishCount;
            tempSchedule.Status       = tempSchedule.FinishCount >= tempSchedule.ProductCount ? enumStatus.Finished : enumStatus.Working;
            //订单生产记录
            Orders tempOrder = db.Orders.Find(tempSchedule.OrderId);

            db.Orders.Attach(tempOrder);
            tempOrder.ProductFinishedCount += finishCount;
            tempOrder.Status = tempOrder.ProductFinishedCount >= tempOrder.ProductCount ? enumStatus.Finished : enumStatus.Working;

            db.SaveChanges();
        }
Exemplo n.º 11
0
        public ActionResult MachineEdit(int id, string Name, string RemarkInfo)
        {
            Machines machine = db.Machines.Find(id);

            db.Machines.Attach(machine);
            machine.Name       = Name;
            machine.RemarkInfo = RemarkInfo;
            db.SaveChanges();

            string strName = client.Get <string>(PRE_MACHINE_NAME_NUMBER + machine.Number);

            if (strName != null && strName != string.Empty)
            {
                client.Set <string>(PRE_MACHINE_NAME_NUMBER + machine.Number, Name);
            }


            return(RedirectToAction("Machines"));
        }
Exemplo n.º 12
0
        public JsonResult GetOrderInfo(string order)
        {
            JsonResult result = new JsonResult();

            using (var t = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions {
                IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted
            }))
            {
                Orders tempCurrentOrder = db.Orders.FirstOrDefault(item => item.OrderNumber == order);
                if (tempCurrentOrder != null)
                {
                    result.Data = new { error = ORDER_EXISTS_ERROR };
                    return(result);
                }
            }
            result.Data = new { error = ORDER_RIGHT_ERROR };
            //获取订单数据
            List <OrderSystemDetail> orderDetails;

            if (!this.CheckOrder(order, out orderDetails))
            {
                return(result);
            }
            //物料保存
            List <string> matList    = new List <string>();
            bool          insertFlag = false;

            foreach (OrderSystemDetail item in orderDetails)
            {
                matList.Add(string.Format(App_Start.Constants.MACHINE_MATERIAL_STRUCTURE, item.Childitemcode, item.ChildnvntryUom, item.Childitemname));
                Materials tempMat = db.Materials.FirstOrDefault(m => m.Code == item.Childitemcode);
                if (tempMat == null)
                {
                    db.Materials.Add(new Materials()
                    {
                        Code       = item.Childitemcode,
                        Unit       = item.ChildnvntryUom,
                        DetailInfo = item.Childitemname
                    });
                    insertFlag = true;
                }
            }
            if (insertFlag)
            {
                db.SaveChanges();
            }
            //返回前台显示
            OrderSystemDetail orderItem = orderDetails[0];

            result.Data = new
            {
                orderCode    = orderItem.docnum,
                roomName     = orderItem.roomName,
                roomNumber   = orderItem.ocrcode,
                dateFinish   = orderItem.duedate.ToString("yyyy年MM月dd日"),
                productCode  = orderItem.Fatheritemcode,
                productUnit  = orderItem.FatherInvntryUom,
                productInfo  = orderItem.Fatheritemname,
                materialInfo = matList.ToArray(),
                detail       = orderItem.U_WL_PACK == null ? "" : orderItem.U_WL_PACK,
                notice       = orderItem.U_htyq
            };

            return(result);
        }