Пример #1
0
        public void AddSkuAql(Newtonsoft.Json.Linq.JObject requestValue, Newtonsoft.Json.Linq.JObject Data, MESStationReturn StationReturn)
        {
            T_C_SKU_AQL tCSkuAql = null;
            OleExec     sfcdb    = null;
            T_C_SKU     tCSku    = null;

            try
            {
                sfcdb    = this.DBPools["SFCDB"].Borrow();
                tCSkuAql = new T_C_SKU_AQL(sfcdb, DB_TYPE_ENUM.Oracle);
                tCSku    = new T_C_SKU(sfcdb, DB_TYPE_ENUM.Oracle);
                SkuObject sku = tCSku.GetSkuByID(Data["SkuId"].ToString().Trim(), sfcdb);
                if (sku == null)
                {
                    StationReturn.Status      = StationReturnStatusValue.Fail;
                    StationReturn.MessageCode = "MES00000245";
                    StationReturn.MessagePara = new List <object>()
                    {
                        Data["SKUNO"].ToString().Trim()
                    };
                    return;
                }
                tCSkuAql.DeleteBySkuno(sfcdb, sku.SkuNo);
                Row_C_SKU_AQL r = (Row_C_SKU_AQL)tCSkuAql.NewRow();
                r.ID          = tCSkuAql.GetNewID(this.BU, sfcdb);
                r.SKUNO       = sku.SkuNo;
                r.AQLTYPE     = Data["AqlType"].ToString().Trim();
                r.DEFAULLEVEL = Data["aqlLevel"].ToString().Trim();
                r.EDIT_EMP    = this.LoginUser.EMP_NO;
                r.EDIT_TIME   = GetDBDateTime();


                string strRet = sfcdb.ExecSQL(r.GetInsertString(DB_TYPE_ENUM.Oracle));
                if (Convert.ToInt32(strRet) > 0)
                {
                    StationReturn.Message = "添加成功!!";
                    StationReturn.Status  = StationReturnStatusValue.Pass;
                    StationReturn.Data    = "";
                }
                else
                {
                    StationReturn.MessageCode = "MES00000036";
                    StationReturn.Status      = StationReturnStatusValue.Fail;
                    StationReturn.Data        = "";
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                this.DBPools["SFCDB"].Return(sfcdb);
            }
        }
Пример #2
0
        public void DeleteSkuById(Newtonsoft.Json.Linq.JObject requestValue, Newtonsoft.Json.Linq.JObject Data, MESStationReturn StationReturn)
        {
            OleExec       sfcdb  = null;
            T_C_SKU       Table  = null;
            SkuObject     Sku    = null;
            string        result = string.Empty;
            string        SkuId  = string.Empty;
            StringBuilder strSkuId;

            try
            {
                sfcdb     = this.DBPools["SFCDB"].Borrow();
                Table     = new T_C_SKU(sfcdb, DBTYPE);
                SkuId     = Data["SkuID"].ToString();
                Sku       = new SkuObject();
                Sku.SkuId = SkuId;
                result    = Table.UpdateSku(BU, Sku, "DELETE", GetDBDateTime(), out strSkuId, sfcdb);

                if (Int32.Parse(result) > 0)
                {
                    //刪除成功
                    StationReturn.Status      = StationReturnStatusValue.Pass;
                    StationReturn.MessageCode = "MES00000035";
                    StationReturn.MessagePara.Add(result);
                    StationReturn.Data = strSkuId.ToString();
                }
                else
                {
                    //沒有刪除任何數據
                    StationReturn.Status      = StationReturnStatusValue.Pass;
                    StationReturn.MessageCode = "MES00000036";
                    StationReturn.Data        = result;
                }

                if (sfcdb != null)
                {
                    this.DBPools["SFCDB"].Return(sfcdb);
                }
            }
            catch (Exception e)
            {
                StationReturn.Status      = StationReturnStatusValue.Fail;
                StationReturn.MessageCode = "MES00000037";
                StationReturn.MessagePara.Add(e.Message);
                StationReturn.Data = e.Message;

                if (sfcdb != null)
                {
                    this.DBPools["SFCDB"].Return(sfcdb);
                }
            }
        }
Пример #3
0
        public void AddSku(Newtonsoft.Json.Linq.JObject requestValue, Newtonsoft.Json.Linq.JObject Data, MESStationReturn StationReturn)
        {
            OleExec       sfcdb     = null;
            T_C_SKU       Table     = null;
            string        SkuObject = string.Empty;
            SkuObject     Sku       = null;
            string        result    = string.Empty;
            StringBuilder SkuId;

            try
            {
                sfcdb            = this.DBPools["SFCDB"].Borrow();
                Table            = new T_C_SKU(sfcdb, DBTYPE);
                SkuObject        = Data["SkuObject"].ToString();
                Sku              = (SkuObject)JsonConvert.Deserialize(SkuObject, typeof(SkuObject));
                Sku.LastEditUser = LoginUser.EMP_NO;
                result           = Table.UpdateSku(BU, Sku, "ADD", GetDBDateTime(), out SkuId, sfcdb);

                if (Int32.Parse(result) > 0)
                {
                    //添加成功
                    StationReturn.Status      = StationReturnStatusValue.Pass;
                    StationReturn.MessageCode = "MES00000035";
                    StationReturn.MessagePara.Add(result);
                    StationReturn.Data = SkuId.ToString();
                }
                else
                {
                    //沒有添加任何數據
                    StationReturn.Status      = StationReturnStatusValue.Pass;
                    StationReturn.MessageCode = "MES00000036";
                    StationReturn.Data        = result;
                }

                if (sfcdb != null)
                {
                    this.DBPools["SFCDB"].Return(sfcdb);
                }
            }
            catch (Exception e)
            {
                if (!string.IsNullOrEmpty(result))
                {
                    StationReturn.Status      = StationReturnStatusValue.Fail;
                    StationReturn.MessageCode = "MES00000005";
                    StationReturn.Data        = e.Message + ":" + result;
                }
                else
                {
                    StationReturn.Status      = StationReturnStatusValue.Pass;
                    StationReturn.MessageCode = "MES00000037";
                    StationReturn.MessagePara.Add(e.Message);
                    StationReturn.Data = e.Message;
                }

                if (sfcdb != null)
                {
                    this.DBPools["SFCDB"].Return(sfcdb);
                }
            }
        }
        public SkuInfo FetchSkuInfo(string rackSkuName)
        {
            SkuInfo   skuInfo   = null;
            SkuObject skuObject = null;

            try
            {
                var skuRefHandler = new SkuRefHandler();
                skuObject = skuRefHandler.GetSkuDetails(rackSkuName);
                if (skuObject == null || skuObject.Results == null || !skuObject.Results.Any() || !string.IsNullOrEmpty(skuObject.Error))
                {
                    return(skuInfo);
                }
            }
            catch (Exception ex)
            {
                SendEmail.SendExoSkuMsAssetReportEmail(Constants.serviceAccountAlias, Constants.automationTeam, "FetchSkuInfo exception", ex.ToString());
                return(skuInfo);
            }

            // Initialize the skuInfo object
            skuInfo = new SkuInfo();
            foreach (var skuInfoResult in skuObject.Results)
            {
                if (skuInfoResult != null && skuInfoResult.Name != null && skuInfoResult.Name.Equals(rackSkuName, StringComparison.OrdinalIgnoreCase) && skuInfoResult.Items != null)
                {
                    // Fill Servers
                    var serverItems = skuInfoResult.Items.Where(sItem => !string.IsNullOrEmpty(sItem.AssetType) && sItem.AssetType.Equals("Server", StringComparison.OrdinalIgnoreCase) && IsServer(sItem.SingleScanDetails));
                    if (serverItems != null && serverItems.Any())
                    {
                        skuInfo.ServerSpec   = new TechSpec();
                        skuInfo.ServerLayout = new List <PhysicalRackLayout>();
                        foreach (var serverItem in serverItems)
                        {
                            if (serverItem != null)
                            {
                                skuInfo.ServerSpec.QuantityPerRack += serverItem.Quantity;
                                skuInfo.ServerSpec.DskuName         = string.IsNullOrEmpty(skuInfo.ServerSpec.DskuName) ?
                                                                      (serverItem.DiscreteSkuName):
                                                                      (skuInfo.ServerSpec.DskuName + ";" + serverItem.DiscreteSkuName);
                                skuInfo.ServerSpec.MsfNumber = serverItem.MsfPartNumberAx;
                                skuInfo.ServerSpec.Model     = serverItem.ModelName;
                                if (serverItem.SingleScanDetails != null && serverItem.SingleScanDetails.Any())
                                {
                                    var singleScanDetails = serverItem.SingleScanDetails;
                                    foreach (var ssd in singleScanDetails)
                                    {
                                        if (ssd != null)
                                        {
                                            skuInfo.ServerLayout.Add(new PhysicalRackLayout
                                            {
                                                Slot      = ssd.SlotNum,
                                                BinNumber = converToInt(ssd.BinNum)
                                            });
                                        }
                                    }
                                }
                            }
                        }
                    }

                    // Fill Chassis
                    var chassisItems = skuInfoResult.Items.Where(sItem => !string.IsNullOrEmpty(sItem.AssetType) && sItem.AssetType.Equals("Chassis", StringComparison.OrdinalIgnoreCase) && IsChassis(sItem.SingleScanDetails));
                    if (chassisItems != null && chassisItems.Any())
                    {
                        skuInfo.ChassisSpec   = new TechSpec();
                        skuInfo.ChassisLayout = new List <PhysicalRackLayout>();
                        foreach (var chassisItem in chassisItems)
                        {
                            if (chassisItem != null)
                            {
                                skuInfo.ChassisSpec.QuantityPerRack += chassisItem.Quantity;
                                skuInfo.ChassisSpec.DskuName         = string.IsNullOrEmpty(skuInfo.ChassisSpec.DskuName) ?
                                                                       (chassisItem.DiscreteSkuName) :
                                                                       (skuInfo.ChassisSpec.DskuName + ";" + chassisItem.DiscreteSkuName);
                                skuInfo.ChassisSpec.MsfNumber = chassisItem.MsfPartNumberAx;
                                skuInfo.ChassisSpec.Model     = chassisItem.ModelName;
                                if (chassisItem.SingleScanDetails != null && chassisItem.SingleScanDetails.Any())
                                {
                                    var singleScanDetails = chassisItem.SingleScanDetails;
                                    foreach (var ssd in singleScanDetails)
                                    {
                                        if (ssd != null)
                                        {
                                            skuInfo.ChassisLayout.Add(new PhysicalRackLayout
                                            {
                                                Slot      = ssd.SlotNum,
                                                BinNumber = converToInt(ssd.BinNum)
                                            });
                                        }
                                    }
                                }
                            }
                        }
                    }

                    // Fill Chassis Manager
                    var chassisManagerItems = skuInfoResult.Items.Where(sItem => !string.IsNullOrEmpty(sItem.AssetType) && sItem.AssetType.Equals("Server", StringComparison.OrdinalIgnoreCase) && IsChassisManager(sItem.SingleScanDetails));
                    if (chassisManagerItems != null && chassisManagerItems.Any())
                    {
                        skuInfo.ChassisManagerSpec   = new TechSpec();
                        skuInfo.ChassisManagerLayout = new List <PhysicalRackLayout>();
                        foreach (var chassisManagerItem in chassisManagerItems)
                        {
                            if (chassisManagerItem != null)
                            {
                                skuInfo.ChassisManagerSpec.QuantityPerRack += chassisManagerItem.Quantity;
                                skuInfo.ChassisManagerSpec.DskuName         = string.IsNullOrEmpty(skuInfo.ChassisManagerSpec.DskuName) ?
                                                                              (chassisManagerItem.DiscreteSkuName) :
                                                                              (skuInfo.ChassisManagerSpec.DskuName + ";" + chassisManagerItem.DiscreteSkuName);
                                skuInfo.ChassisManagerSpec.MsfNumber = chassisManagerItem.MsfPartNumberAx;
                                skuInfo.ChassisManagerSpec.Model     = chassisManagerItem.ModelName;
                                if (chassisManagerItem.SingleScanDetails != null && chassisManagerItem.SingleScanDetails.Any())
                                {
                                    var singleScanDetails = chassisManagerItem.SingleScanDetails;
                                    foreach (var ssd in singleScanDetails)
                                    {
                                        if (ssd != null)
                                        {
                                            skuInfo.ChassisManagerLayout.Add(new PhysicalRackLayout
                                            {
                                                Slot      = ssd.SlotNum,
                                                BinNumber = converToInt(ssd.BinNum)
                                            });
                                        }
                                    }
                                }
                            }
                        }
                    }

                    // Fill Rack
                    var rackItems = skuInfoResult.Items.Where(sItem => !string.IsNullOrEmpty(sItem.AssetType) && sItem.AssetType.Equals("Rack", StringComparison.OrdinalIgnoreCase) && IsRack(sItem.SingleScanDetails));
                    if (rackItems != null && rackItems.Any())
                    {
                        skuInfo.RackSpec   = new TechSpec();
                        skuInfo.RackLayout = new List <PhysicalRackLayout>();
                        foreach (var rackItem in rackItems)
                        {
                            if (rackItem != null)
                            {
                                skuInfo.RackSpec.QuantityPerRack += rackItem.Quantity;
                                skuInfo.RackSpec.DskuName         = string.IsNullOrEmpty(skuInfo.RackSpec.DskuName) ?
                                                                    (rackItem.DiscreteSkuName) :
                                                                    (skuInfo.RackSpec.DskuName + ";" + rackItem.DiscreteSkuName);
                                skuInfo.RackSpec.MsfNumber = rackItem.MsfPartNumberAx;
                                skuInfo.RackSpec.Model     = rackItem.ModelName;
                                if (rackItem.SingleScanDetails != null && rackItem.SingleScanDetails.Any())
                                {
                                    var singleScanDetails = rackItem.SingleScanDetails;
                                    foreach (var ssd in singleScanDetails)
                                    {
                                        if (ssd != null)
                                        {
                                            skuInfo.RackLayout.Add(new PhysicalRackLayout
                                            {
                                                Slot      = ssd.SlotNum,
                                                BinNumber = converToInt(ssd.BinNum)
                                            });
                                        }
                                    }
                                }
                            }
                        }
                    }

                    // Fill UPS
                    var upsItems = skuInfoResult.Items.Where(sItem => !string.IsNullOrEmpty(sItem.AssetType) &&
                                                             (sItem.AssetType.Equals("Server", StringComparison.OrdinalIgnoreCase) || sItem.AssetType.Equals("PowerStrip", StringComparison.OrdinalIgnoreCase)) && IsUps(sItem.SingleScanDetails));
                    if (upsItems != null && upsItems.Any())
                    {
                        skuInfo.UpsSpec   = new TechSpec();
                        skuInfo.UpsLayout = new List <PhysicalRackLayout>();
                        foreach (var upsItem in upsItems)
                        {
                            if (upsItem != null)
                            {
                                skuInfo.UpsSpec.QuantityPerRack += upsItem.Quantity;
                                skuInfo.UpsSpec.DskuName         = string.IsNullOrEmpty(skuInfo.UpsSpec.DskuName) ?
                                                                   (upsItem.DiscreteSkuName) :
                                                                   (skuInfo.UpsSpec.DskuName + ";" + upsItem.DiscreteSkuName);
                                skuInfo.UpsSpec.MsfNumber = upsItem.MsfPartNumberAx;
                                skuInfo.UpsSpec.Model     = upsItem.ModelName;
                                if (upsItem.SingleScanDetails != null && upsItem.SingleScanDetails.Any())
                                {
                                    var singleScanDetails = upsItem.SingleScanDetails;
                                    foreach (var ssd in singleScanDetails)
                                    {
                                        if (ssd != null)
                                        {
                                            skuInfo.UpsLayout.Add(new PhysicalRackLayout
                                            {
                                                Slot      = ssd.SlotNum,
                                                BinNumber = converToInt(ssd.BinNum)
                                            });
                                        }
                                    }
                                }
                            }
                        }
                    }

                    // Fill ToR Switch
                    var switchItems = skuInfoResult.Items.Where(sItem => !string.IsNullOrEmpty(sItem.AssetType) && sItem.AssetType.Equals("NetDevice", StringComparison.OrdinalIgnoreCase) && IsSwitch(sItem.SingleScanDetails));
                    if (switchItems != null && switchItems.Any())
                    {
                        skuInfo.SwitchSpec   = new TechSpec();
                        skuInfo.SwitchLayout = new List <PhysicalRackLayout>();
                        foreach (var switchItem in switchItems)
                        {
                            if (switchItem != null)
                            {
                                skuInfo.SwitchSpec.QuantityPerRack += switchItem.Quantity;
                                skuInfo.SwitchSpec.DskuName         = string.IsNullOrEmpty(skuInfo.SwitchSpec.DskuName) ?
                                                                      (switchItem.DiscreteSkuName) :
                                                                      (skuInfo.SwitchSpec.DskuName + ";" + switchItem.DiscreteSkuName);
                                skuInfo.SwitchSpec.MsfNumber = switchItem.MsfPartNumberAx;
                                skuInfo.SwitchSpec.Model     = switchItem.ModelName;
                                if (switchItem.SingleScanDetails != null && switchItem.SingleScanDetails.Any())
                                {
                                    var singleScanDetails = switchItem.SingleScanDetails;
                                    foreach (var ssd in singleScanDetails)
                                    {
                                        if (ssd != null)
                                        {
                                            skuInfo.SwitchLayout.Add(new PhysicalRackLayout
                                            {
                                                Slot      = ssd.SlotNum,
                                                BinNumber = converToInt(ssd.BinNum)
                                            });
                                        }
                                    }
                                }
                            }
                        }
                    }

                    // Fill Load Balancer
                    var loadBalancerItems = skuInfoResult.Items.Where(sItem => !string.IsNullOrEmpty(sItem.AssetType) && sItem.AssetType.Equals("NetDevice", StringComparison.OrdinalIgnoreCase) &&
                                                                      !string.IsNullOrEmpty(sItem.DiscreteSkuNetDeviceType) && sItem.DiscreteSkuNetDeviceType.IndexOf("Load", StringComparison.OrdinalIgnoreCase) >= 0);
                    if (loadBalancerItems != null && loadBalancerItems.Any())
                    {
                        skuInfo.LoadBalancerSpec   = new TechSpec();
                        skuInfo.LoadBalancerLayout = new List <PhysicalRackLayout>();
                        foreach (var loadBalancerItem in loadBalancerItems)
                        {
                            if (loadBalancerItem != null)
                            {
                                skuInfo.LoadBalancerSpec.QuantityPerRack += loadBalancerItem.Quantity;
                                skuInfo.LoadBalancerSpec.DskuName         = string.IsNullOrEmpty(skuInfo.LoadBalancerSpec.DskuName) ?
                                                                            (loadBalancerItem.DiscreteSkuName) :
                                                                            (skuInfo.LoadBalancerSpec.DskuName + ";" + loadBalancerItem.DiscreteSkuName);
                                skuInfo.LoadBalancerSpec.MsfNumber = loadBalancerItem.MsfPartNumberAx;
                                skuInfo.LoadBalancerSpec.Model     = loadBalancerItem.ModelName;
                                if (loadBalancerItem.SingleScanDetails != null && loadBalancerItem.SingleScanDetails.Any())
                                {
                                    var singleScanDetails = loadBalancerItem.SingleScanDetails;
                                    foreach (var ssd in singleScanDetails)
                                    {
                                        if (ssd != null)
                                        {
                                            skuInfo.LoadBalancerLayout.Add(new PhysicalRackLayout
                                            {
                                                Slot      = ssd.SlotNum,
                                                BinNumber = converToInt(ssd.BinNum)
                                            });
                                        }
                                    }
                                }
                            }
                        }
                    }

                    // Fill ILO and DIGI
                    var iloItems = skuInfoResult.Items.Where(sItem => !string.IsNullOrEmpty(sItem.AssetType) && sItem.AssetType.Equals("NetDevice", StringComparison.OrdinalIgnoreCase) &&
                                                             !string.IsNullOrEmpty(sItem.DiscreteSkuNetDeviceType) && sItem.DiscreteSkuNetDeviceType.IndexOf("ILO", StringComparison.OrdinalIgnoreCase) >= 0 &&
                                                             IsIloSwitch(sItem.SingleScanDetails));
                    var digiItems = skuInfoResult.Items.Where(sItem => !string.IsNullOrEmpty(sItem.AssetType) && sItem.AssetType.Equals("NetDevice", StringComparison.OrdinalIgnoreCase) &&
                                                              !string.IsNullOrEmpty(sItem.Manufacturer) && sItem.Manufacturer.IndexOf("Digi", StringComparison.OrdinalIgnoreCase) >= 0 &&
                                                              IsDigiSwitch(sItem.SingleScanDetails));
                    iloItems = iloItems.Union(digiItems);
                    if (iloItems != null && iloItems.Any())
                    {
                        skuInfo.IloSpec   = new TechSpec();
                        skuInfo.IloLayout = new List <PhysicalRackLayout>();
                        foreach (var iloItem in iloItems)
                        {
                            if (iloItem != null)
                            {
                                skuInfo.IloSpec.QuantityPerRack += iloItem.Quantity;
                                skuInfo.IloSpec.DskuName         = string.IsNullOrEmpty(skuInfo.IloSpec.DskuName) ?
                                                                   (iloItem.DiscreteSkuName) :
                                                                   (skuInfo.IloSpec.DskuName + ";" + iloItem.DiscreteSkuName);
                                skuInfo.IloSpec.MsfNumber = iloItem.MsfPartNumberAx;
                                skuInfo.IloSpec.Model     = iloItem.ModelName;
                                if (iloItem.SingleScanDetails != null && iloItem.SingleScanDetails.Any())
                                {
                                    var singleScanDetails = iloItem.SingleScanDetails;
                                    foreach (var ssd in singleScanDetails)
                                    {
                                        if (ssd != null)
                                        {
                                            skuInfo.IloLayout.Add(new PhysicalRackLayout
                                            {
                                                Slot      = ssd.SlotNum,
                                                BinNumber = converToInt(ssd.BinNum)
                                            });
                                        }
                                    }
                                }
                            }
                        }
                    }

                    if (digiItems != null && digiItems.Any())
                    {
                        skuInfo.DigiSpec   = new TechSpec();
                        skuInfo.DigiLayout = new List <PhysicalRackLayout>();
                        foreach (var digiItem in digiItems)
                        {
                            if (digiItem != null)
                            {
                                skuInfo.DigiSpec.QuantityPerRack += digiItem.Quantity;
                                skuInfo.DigiSpec.DskuName         = string.IsNullOrEmpty(skuInfo.DigiSpec.DskuName) ?
                                                                    (digiItem.DiscreteSkuName) :
                                                                    (skuInfo.DigiSpec.DskuName + ";" + digiItem.DiscreteSkuName);
                                skuInfo.DigiSpec.MsfNumber = digiItem.MsfPartNumberAx;
                                skuInfo.DigiSpec.Model     = digiItem.ModelName;
                                if (digiItem.SingleScanDetails != null && digiItem.SingleScanDetails.Any())
                                {
                                    var singleScanDetails = digiItem.SingleScanDetails;
                                    foreach (var ssd in singleScanDetails)
                                    {
                                        if (ssd != null)
                                        {
                                            skuInfo.DigiLayout.Add(new PhysicalRackLayout
                                            {
                                                Slot      = ssd.SlotNum,
                                                BinNumber = converToInt(ssd.BinNum)
                                            });
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            return(skuInfo);
        }