Example #1
0
        public HttpResponseMessage Post([FromBody] DeviceOperationLog deviceOperationLogInfo)
        {
            return(ActionWarpper.Process(deviceOperationLogInfo, OperationCodes.ADVOPLOG, () =>
            {
                var repo = RepositoryManager.GetRepository <IDeviceOperationLogRepository>();
                repo.Insert(deviceOperationLogInfo);

                return Request.CreateResponse(HttpStatusCode.OK, deviceOperationLogInfo);
            }, this));
        }
Example #2
0
        public HttpResponseMessage Put(int id, [FromBody] DeviceOperationLog deviceOperationLogInfo)
        {
            return(ActionWarpper.Process(deviceOperationLogInfo, OperationCodes.MDVOPLOG, () =>
            {
                deviceOperationLogInfo.LogID = id;
                var repo = RepositoryManager.GetRepository <IDeviceOperationLogRepository>();
                repo.Update(deviceOperationLogInfo);

                return Request.CreateResponse(HttpStatusCode.OK);
            }, this));
        }
Example #3
0
        /// <summary>
        /// OLP配置
        /// </summary>
        /// <param name="info"></param>
        /// <param name="ip"></param>
        /// <param name="port"></param>
        /// <param name="slot"></param>
        /// <returns></returns>
        public ActionResult SetConfiguration(OLPInfo info, int mfId, string ip, int port, int slot, string configItems)
        {
            JsonResult result = new JsonResult();
            var        tcp    = TcpClientServicePool.GetService(ip, port);

            if (tcp != null)
            {
                try
                {
                    var                       arrProperty   = configItems.Split(',');
                    List <string>             listException = new List <string>();
                    OLPCommService            service       = new OLPCommService(tcp, slot);
                    List <string>             listMethod    = new List <string>();
                    Type                      t             = info.GetType();
                    List <DeviceOperationLog> logs          = new List <DeviceOperationLog>();
                    foreach (var p in arrProperty.OrderBy(e => e))
                    {
                        //获取属性
                        var prop = t.GetProperty(p);
                        if (prop != null)
                        {
                            string name  = prop.Name;
                            object value = prop.GetValue(info);
                            //设置方法名
                            string methodName = "Set" + name.Replace("_", "");
                            var    methodInfo = service.GetType().GetMethod(methodName);
                            if (methodInfo != null)
                            {
                                listMethod.Add(methodInfo.Name);
                                string operation = "";
                                //获取设置项说明
                                object[] arrDescription = methodInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
                                if (arrDescription != null && arrDescription.Length > 0)
                                {
                                    DescriptionAttribute desc = (DescriptionAttribute)arrDescription[0];
                                    if (desc != null)
                                    {
                                        operation = desc.Description;
                                    }
                                }
                                //获取方法参数信息
                                var      paramInfo   = methodInfo.GetParameters();
                                object[] paramObject = new object[paramInfo.Length];
                                foreach (var e in paramInfo)
                                {
                                    paramObject[0] = Convert.ChangeType(value, e.ParameterType);
                                }

                                var ret = (bool)methodInfo.Invoke(service, paramObject);
                                if (!ret)
                                {
                                    listException.Add(operation);
                                }
                                var log = new DeviceOperationLog
                                {
                                    DOLCardSN           = info.Serial_Number,
                                    DOLCardType         = "OLP",
                                    DOLDeviceSlot       = short.Parse(slot.ToString()),
                                    DOLOperationDetials = operation,
                                    DOLOperationType    = "板卡配置",
                                    DOLOperationResult  = ret ? "成功" : "失败",
                                    DOLOperationTime    = DateTime.Now,
                                    Remark = ""
                                };
                                logs.Add(log);
                            }
                        }
                    }
                    using (var ctx = new GlsunViewEntities())
                    {
                        MachineFrame frame = ctx.MachineFrame.Find(mfId);
                        var          user  = ctx.User.Where(u => u.ULoginName == HttpContext.User.Identity.Name).FirstOrDefault();
                        foreach (var log in logs)
                        {
                            //基本信息
                            log.DID        = frame.ID;
                            log.DName      = frame.MFName;
                            log.DAddress   = frame.MFIP;
                            log.UID        = user.ID;
                            log.ULoginName = user.ULoginName;
                            log.UName      = user.UName;
                        }
                        ctx.DeviceOperationLog.AddRange(logs);
                        ctx.SaveChanges();
                    }
                    if (listException.Count == 0)
                    {
                        result.Data = new { Code = "", Data = "配置成功" };
                    }
                    else
                    {
                        string data = "配置失败:";
                        foreach (var e in listException)
                        {
                            data += e + " ";
                        }
                        result.Data = new { Code = "Exception", Data = data };
                    }
                }
                catch (Exception ex)
                {
                    result.Data = new { Code = "Exception", Data = ex.Message };
                }
                finally
                {
                    TcpClientServicePool.FreeService(tcp);
                }
            }
            else
            {
                result.Data = new { Code = "Exception", Data = "获取TCP连接失败" };
            }
            return(result);
        }
Example #4
0
        /// <summary>
        /// OEO配置
        /// </summary>
        /// <param name="modules"></param>
        /// <param name="ip"></param>
        /// <param name="port"></param>
        /// <param name="slot"></param>
        /// <returns></returns>
        public ActionResult SetConfiguration(List <SFPModule> modules, int mfId, string ip, int port, int slot, List <SFPModuleConfigRecord> records)
        {
            JsonResult result = new JsonResult();
            var        tcp    = TcpClientServicePool.GetService(ip, port);

            if (tcp != null)
            {
                try
                {
                    List <DeviceOperationLog> logs          = new List <DeviceOperationLog>();
                    List <string>             listException = new List <string>();
                    OEOInfo        oeoInfo = new OEOInfo();
                    OEOCommService service = new OEOCommService(tcp, slot);
                    oeoInfo.RefreshData(service);
                    var srvType = service.GetType();
                    foreach (var sfp in modules)
                    {
                        var record = (from r in records
                                      where r.Slot == sfp.SlotPosition
                                      select r).FirstOrDefault();
                        if (record != null)
                        {
                            foreach (var p in record.ChangeItems)
                            {
                                //获取属性
                                var prop = sfp.GetType().GetProperty(p);
                                if (prop != null)
                                {
                                    //获取属性值
                                    var    value      = prop.GetValue(sfp);
                                    var    methodName = "Set" + p.Replace("_", "");
                                    var    methodInfo = srvType.GetMethod(methodName);
                                    string operation  = "";
                                    if (methodInfo != null)
                                    {
                                        //获取设置项说明
                                        object[] arrDescription = methodInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
                                        if (arrDescription != null && arrDescription.Length > 0)
                                        {
                                            DescriptionAttribute desc = (DescriptionAttribute)arrDescription[0];
                                            if (desc != null)
                                            {
                                                operation = desc.Description;
                                            }
                                        }
                                        //获取方法参数信息
                                        var      paramInfo   = methodInfo.GetParameters();
                                        object[] paramObject = new object[paramInfo.Length];
                                        object[] values      = new object[] { sfp.SlotPosition, value };
                                        int      i           = 0;
                                        foreach (var e in paramInfo)
                                        {
                                            paramObject[i] = Convert.ChangeType(values[i], e.ParameterType);
                                            i++;
                                        }
                                        var ret = (bool)methodInfo.Invoke(service, paramObject);
                                        if (!ret)
                                        {
                                            listException.Add(string.Format("光模块{0}", sfp.SlotPosition) + operation);
                                        }
                                        var log = new DeviceOperationLog
                                        {
                                            DOLCardSN           = oeoInfo.Serial_Number,
                                            DOLCardType         = "OEO",
                                            DOLDeviceSlot       = short.Parse(slot.ToString()),
                                            DOLOperationDetials = string.Format("光模块{0}{1}", sfp.SlotPosition, operation),
                                            DOLOperationType    = "板卡配置",
                                            DOLOperationResult  = ret ? "成功" : "失败",
                                            DOLOperationTime    = DateTime.Now,
                                            Remark = ""
                                        };
                                        logs.Add(log);
                                    }
                                }
                            }
                        }

                        /*if(!service.SetWorkMode(sfp.SlotPosition, sfp.Work_Mode))
                         * {
                         *  listException.Add(string.Format("SFP模块{0}工作模式", sfp.SlotPosition));
                         * }
                         * if(!service.SetTxPowerControl(sfp.SlotPosition, sfp.Tx_Power_Control))
                         * {
                         *  listException.Add(string.Format("SFP模块{0}发功率控制", sfp.SlotPosition));
                         * }*/
                    }
                    if (listException.Count == 0)
                    {
                        result.Data = new { Code = "", Data = "配置成功" };
                    }
                    else
                    {
                        string data = "配置失败:";
                        foreach (var e in listException)
                        {
                            data += e + " ";
                        }
                        result.Data = new { Code = "Exception", Data = data };
                    }
                    using (var ctx = new GlsunViewEntities())
                    {
                        MachineFrame frame = ctx.MachineFrame.Find(mfId);
                        var          user  = ctx.User.Where(u => u.ULoginName == HttpContext.User.Identity.Name).FirstOrDefault();
                        foreach (var log in logs)
                        {
                            //基本信息
                            log.DID        = frame.ID;
                            log.DName      = frame.MFName;
                            log.DAddress   = frame.MFIP;
                            log.UID        = user.ID;
                            log.ULoginName = user.ULoginName;
                            log.UName      = user.UName;
                        }
                        ctx.DeviceOperationLog.AddRange(logs);
                        //异步保存不阻塞网页
                        ctx.SaveChanges();
                    }
                }
                catch (Exception ex)
                {
                    result.Data = new { Code = "Exception", Data = ex.Message };
                }
                finally
                {
                    TcpClientServicePool.FreeService(tcp);
                }
            }
            else
            {
                result.Data = new { Code = "Exception", Data = "获取TCP连接失败" };
            }
            return(result);
        }