コード例 #1
0
        public static void Generate()
        {
            var value = RefineryAssays.Parse(File.ReadAllText(@"D:\XML\3.Oil_Name_define.XML"));
            var keys  = value.RefineryAssay.PlantDataGroups.PlantDataGroup.Properties.Property
                        .Select(o => new { o.Name, PropertyKey = o.PropertyKey.Value, PropertyName = o.PropertyName.Value })
                        .ToList();

            var all = map.Split("\r\n".ToArray(), StringSplitOptions.RemoveEmptyEntries)
                      .Select(o => o.Split('\t'))
                      .Where(o => o.Length >= 3)
                      .Where(o => string.IsNullOrEmpty(o[0]) == false && string.IsNullOrEmpty(o[2]) == false)
                      .ToList();

            var ls = new List <RefineryAssaysMapItem>();

            foreach (var a in all)
            {
                var name = a[0];

                var key = keys.FirstOrDefault(o => string.Compare(o.Name, name, true) == 0);
                if (key == null)
                {
                    key = keys.FirstOrDefault(o => o.Name.StartsWith(name, StringComparison.OrdinalIgnoreCase));
                }

                if (key == null)
                {
                    continue;
                }

                var m = new RefineryAssaysMapItem()
                {
                    key           = key.PropertyKey,
                    name          = key.Name,
                    property_name = key.PropertyName,
                    ripp_code     = a[2],
                    expr          = a.Length == 3 || string.IsNullOrWhiteSpace(a[3]) ? null : a[3]?.Trim()
                };
                ls.Add(m);
            }

            var json = JsonConvert.SerializeObject(ls, Formatting.Indented, new JsonSerializerSettings()
            {
                NullValueHandling = NullValueHandling.Ignore
            });
        }
コード例 #2
0
        /// <summary>
        /// 转换
        /// </summary>
        /// <param name="oil"></param>
        /// <returns></returns>
        public static RefineryAssays ConvertFrom(OilInfoBEntity oil)
        {
            var r = new RefineryAssays();

            if (oil == null)
            {
                return(r);
            }

            var maps = Newtonsoft.Json.JsonConvert.DeserializeObject <RefineryAssaysMapItem[]>(File.ReadAllText("RefineryAssaysMaps.json"));

            #region 原油信息

            var name = $"{oil.crudeIndex} - {oil.englishName ?? oil.crudeName}";
            r.RefineryAssay = new RefineryAssaysRefineryAssay()
            {
                Name = name,
                RefineryAssayName      = name,
                SourceType             = oil.sourceRef,
                AssociatedFluidPackage = "Basis-1",
                PlantDataGroups        = new RefineryAssaysRefineryAssayPlantDataGroups()
                {
                    PlantDataGroup = new RefineryAssaysRefineryAssayPlantDataGroupsPlantDataGroup()
                    {
                        Name = "Plant Data Group-1",
                        PlantDataGroupName = "Plant Data Group-1"
                    },
                }
            };

            var ps = new List <RefineryAssaysRefineryAssayPlantDataGroupsPlantDataGroupPropertiesProperty>();

            foreach (var p in maps)
            {
                var tr = oil.OilTableRows.FirstOrDefault(o => o.itemCode == p.ripp_code);
                if (tr == null)
                {
                    continue;
                }
                var index = oil.OilTableRows.IndexOf(tr);
                var d     = oil.OilDatas[index];

                ps.Add(new RefineryAssaysRefineryAssayPlantDataGroupsPlantDataGroupPropertiesProperty()
                {
                    Name                   = p.name,
                    PropertyName           = p.property_name,
                    PropertyKey            = p.key,
                    PropertyQualifierValue = p.GetValue(d.calData),
                });
            }

            var plant = r.RefineryAssay.PlantDataGroups.PlantDataGroup;
            plant.Properties = ps;

            #endregion 原油信息

            #region 切割曲线

            OilDataSearchColAccess        oilDataColAccess = new OilDataSearchColAccess();
            List <OilDataSearchColEntity> OilDataCols      = oilDataColAccess.Get("1=1");

            OilDataSearchRowAccess        oilDataRowAccess = new OilDataSearchRowAccess();
            List <OilDataSearchRowEntity> OilDataRows      = oilDataRowAccess.Get("1=1");

            OilDataSearchAccess        oilDataSearchAccess = new OilDataSearchAccess();
            List <OilDataSearchEntity> allDatas            = oilDataSearchAccess.Get("oilInfoID = " + oil.ID).ToList();

            var cuts = new List <RefineryAssaysRefineryAssayPlantDataGroupsPlantDataGroupCutsCut>();

            BuildCut("石脑油", "15-140", "Naph");
            BuildCut("煤油", "140-240", "Kero");
            BuildCut("柴油", "240-350", "Disel");
            BuildCut("蜡油", "350-540", "VGO");
            BuildCut("渣油", ">540", "Reside");

            //构造切割曲线
            void BuildCut(string name1, string name2, string type)
            {
                var Cols = OilDataCols.Where(o => o.OilTableName.Contains(name1) && o.OilTableName.Contains(name2)).OrderBy(o => o.itemOrder).ToList();

                if (Cols.Count == 0)
                {
                    return;
                }
                var Rows = OilDataRows.Where(o => o.OilDataColID == Cols[0].ID).OrderBy(o => o.OilTableRow.itemOrder).ToList();

                if (Rows.Count == 0)
                {
                    return;
                }
                var TableRows = new List <OilTableRowEntity>();

                for (int i = 0; i < Rows.Count; i++)
                {
                    OilTableRowEntity oilTableRow = OilTableRowBll._OilTableRow.Where(o => o.ID == Rows[i].OilTableRowID).FirstOrDefault();
                    TableRows.Add(oilTableRow);
                }

                for (int i = 0; i < Cols.Count; i++)
                {
                    var Data = allDatas.Where(o => o.oilTableColID == Cols[i].OilTableColID).ToList();
                    if (Data?.Any() != true)
                    {
                        continue;
                    }

                    var cut = new RefineryAssaysRefineryAssayPlantDataGroupsPlantDataGroupCutsCut()
                    {
                        CutName = type,
                        Name    = type,
                        CutType = 0,
                    };

                    var ps2 = new List <RefineryAssaysRefineryAssayPlantDataGroupsPlantDataGroupCutsCutPropertiesProperty>();

                    foreach (var p in maps)
                    {
                        var tr = Data.FirstOrDefault(o => o.OilTableRow.itemCode == p.ripp_code);
                        if (tr == null)
                        {
                            continue;
                        }

                        ps2.Add(new RefineryAssaysRefineryAssayPlantDataGroupsPlantDataGroupCutsCutPropertiesProperty()
                        {
                            Name         = p.name,
                            PropertyName = p.property_name,
                            InputValue   = p.GetValue(tr.calData)
                        });
                    }

                    cut.Properties = ps2;
                    cuts.Add(cut);
                }
            }

            if (cuts.Any() == true)
            {
                plant.Cuts = cuts;
            }

            #endregion 切割曲线

            return(r);
        }