コード例 #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
ファイル: ClientHanlder.cs プロジェクト: wwkkww1983/LeProj
        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);
        }
コード例 #3
0
ファイル: ClientHanlder.cs プロジェクト: wwkkww1983/LeProj
        public byte[] HandlerClientData(byte[] buff)
        {
            DbTableDbContext db = new DbTableDbContext();

            db.RecordErrorInfo(enumSystemErrorCode.TcpDefaultHandlerErr, "", buff);

            return(null);
        }
コード例 #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
        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);
        }
コード例 #6
0
ファイル: ClientHanlder.cs プロジェクト: wwkkww1983/LeProj
        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);
        }
コード例 #7
0
ファイル: ClientHanlder.cs プロジェクト: wwkkww1983/LeProj
        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);
        }
コード例 #8
0
ファイル: ClientHanlder.cs プロジェクト: wwkkww1983/LeProj
        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);
        }
コード例 #9
0
ファイル: ClientHanlder.cs プロジェクト: wwkkww1983/LeProj
        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();
        }