Example #1
0
        public IHttpActionResult GetRecentMaterialcraps(int?MaterialType = null)
        {
            try
            {
                List <BomItem> Items = new List <BomItem>();

                using (SqlConnection npdConnection = new SqlConnection(Static.Secrets.NpdConnectionString))
                {
                    using (SqlDataReader reader = Utilities.GetRecentComponentScrap(npdConnection, MaterialType))
                    {
                        while (reader.Read())
                        {
                            BomItem b = new BomItem();
                            b.ZfinIndex = reader.GetInt32(reader.GetOrdinal("zfinIndex"));
                            b.Material  = reader.GetInt32(reader.GetOrdinal("material"));
                            b.Amount    = reader.IsDBNull(reader.GetOrdinal("amount")) ? new double?() : reader.GetDouble(reader.GetOrdinal("amount"));
                            b.Unit      = reader.GetString(reader.GetOrdinal("unit"));
                            b.Scrap     = reader.IsDBNull(reader.GetOrdinal("scrap")) ? new double?() : reader.GetDouble(reader.GetOrdinal("scrap"));
                            Items.Add(b);
                        }
                        return(Ok(Items));
                    }
                }
            }catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
Example #2
0
        private List <BomItem> CreateNewBomItems(Message orderMessage)
        {
            List <BomItem> createdBomItems = new List <BomItem>();

            foreach (var bomItem in orderMessage.Body.Order.Components)
            {
                BomItem createdBomItem = new BomItem();

                int    materialId = CheckAndFormatMaterial(bomItem.BOMMaterial);
                string uom        = CheckUom(bomItem.BOMUnitOfMeasure);

                if (materialId != HAS_ERROR_INT && uom != HAS_ERROR_STRING)
                {
                    createdBomItem.MaterialId = materialId;
                    createdBomItem.Quantity   = bomItem.BOMQuantity;
                    createdBomItem.UOM        = bomItem.BOMUnitOfMeasure;
                }
                else
                {
                    return(null);
                }

                createdBomItems.Add(createdBomItem);
            }

            return(createdBomItems);
        }
Example #3
0
        /// <summary>
        /// Map item model to view model
        /// </summary>
        /// <param name="bomItem"></param>
        /// <returns></returns>
        private BomItemViewModel MapBomItemToViewModel(BomItem bomItem)
        {
            var bomItemViewModel = new BomItemViewModel {
                ItemType = bomItem.ItemType
            };

            if (bomItem.ItemType == BomItemType.Equipment)
            {
                var equipmentViewModel = new EquipmentViewModel();
                equipmentViewModel.MapFromModel(bomItem.Item as Equipment);
                bomItemViewModel.Item = equipmentViewModel;
            }
            else
            {
                var materialViewModel = new MaterialViewModel();
                materialViewModel.MapFromModel(bomItem.Item as Material);
                bomItemViewModel.Item = materialViewModel;
            }
            return(bomItemViewModel);
        }
Example #4
0
        /// <summary>
        /// Map Bom Item View Model To Model
        /// </summary>
        /// <param name="bomItemViewModel"></param>
        /// <returns></returns>
        private BomItem MapBomItemToModel(BomItemViewModel bomItemViewModel)
        {
            var bomItem = new BomItem {
                ItemType = bomItemViewModel.ItemType
            };

            if (bomItemViewModel.ItemType == BomItemType.Equipment)
            {
                var equipmentViewModel = JsonConvert.DeserializeObject <EquipmentViewModel>(bomItemViewModel.Item.ToString());
                var equipment          = new Equipment();
                bomItem.Item = equipment.MapFromViewModel(equipmentViewModel as EquipmentViewModel) as BillOfMaterialsItem;
            }
            else
            {
                var materialViewModel = JsonConvert.DeserializeObject <MaterialViewModel>(bomItemViewModel.Item.ToString());
                var material          = new Material();
                bomItem.Item = material.MapFromViewModel(materialViewModel as MaterialViewModel) as BillOfMaterialsItem;
            }
            return(bomItem);
        }
Example #5
0
 private static ProductModel GetProductFromrelation(List <ProductModel> products, BomItem item)
 {
     return(products
            .Where(x => x.Id == item.ComponentID)
            .FirstOrDefault());
 }
Example #6
0
        //补充 还不完整的信息
        private async Task FillDetail(DishDetailsRawDataItem detail)
        {
            IHtmlDocument doc = await CrawlerHelper.GetDocumentASync($"https:{detail.Url}");

            //大图
            var img = doc.QuerySelector(".J_photo img"); // 找出大图url

            detail.BigImageUrl = img?.GetAttribute("src");
            // 分类
            var tips = doc.QuerySelectorAll(".recipeTip.mt16");

            if (tips != null && tips.Length >= 3)
            {
                var           links = tips[2].GetElementsByTagName("a");
                StringBuilder sb    = new StringBuilder();
                foreach (var a in links)
                {
                    sb.Append(a.TextContent);
                    sb.Append(",");
                }
                detail.Tags = sb.ToString();
            }
            // 配比bom
            var particulars = doc.QuerySelectorAll(".particulars");

            if (particulars != null && particulars.Length >= 2)
            {
                var boms = particulars.Select(p =>
                {
                    var bom = new DishBomRawData();
                    var bis = p.GetElementsByTagName("li").Select(li =>
                    {
                        var spans = li.Children;
                        if (spans != null && spans.Length >= 2)
                        {
                            var bi = new BomItem()
                            {
                                EnglishName      = CrawlerHelper.GetUrlLast(spans[0].FirstElementChild?.GetAttribute("href")),
                                FoodMaterialName = spans[0].GetElementsByTagName("b").FirstOrDefault()?.TextContent,
                                Use = spans[1].TextContent,
                            };
                            return(bi);
                        }
                        else
                        {
                            return(new BomItem());
                        }
                    }
                                                                  );
                    bom.AddRange(bis);
                    return(bom);
                }).ToList();
                if (boms != null && boms.Count >= 2)
                {
                    detail.DishBom    = boms[0];
                    detail.AuxDishBom = boms[1];
                }
            }

            // 口味等
            var specs = doc.QuerySelectorAll(".recipeCategory_sub_R.mt30.clear li").Select(li =>
            {
                return(li.GetElementsByTagName("a").FirstOrDefault()?.TextContent);
            }).ToList();

            if (specs != null && specs.Count >= 4)
            {
                detail.Taste      = specs[0];
                detail.Technology = specs[1];
                detail.CookTime   = specs[2];
                detail.Difficulty = specs[3];
            }
            // 步骤
            var steps = doc.QuerySelectorAll(".recipeStep li").Select(li =>
            {
                string url     = li.GetElementsByTagName("img").FirstOrDefault()?.GetAttribute("src");
                string content = li.LastElementChild?.TextContent;
                return(new CookeyItem()
                {
                    Photo = url,
                    Content = content
                });
            }).ToList();

            detail.Cookery = new CookeryRawData(steps);
        }
        public ActionResult ImportBomItemRecord(HttpPostedFileBase bomItemFile)
        {
            if (bomItemFile == null)
            {
                //TODO: BomItem Import 优化
                throw new Exception("No file is uploaded to system");
            }

            var appData  = Server.MapPath("~/TmpFile/");
            var filename = Path.Combine(appData,
                                        DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + Path.GetFileName(bomItemFile.FileName));

            bomItemFile.SaveAs(filename);
            string ex = Path.GetExtension(filename);

            List <BomItemImportModel> records = new List <BomItemImportModel>();

            if (ex.Equals(".csv"))
            {
                CsvConfiguration configuration = new CsvConfiguration();
                configuration.Delimiter        = Settings.Default.csvDelimiter;
                configuration.HasHeaderRecord  = true;
                configuration.SkipEmptyRecords = true;
                configuration.RegisterClassMap <BomItemCsvModelMap>();
                configuration.TrimHeaders = true;
                configuration.TrimFields  = true;

                try
                {
                    using (TextReader treader = System.IO.File.OpenText(filename))
                    {
                        CsvReader csvReader = new CsvReader(treader, configuration);
                        records = csvReader.GetRecords <BomItemImportModel>().ToList();
                    }
                }
                catch (Exception e)
                {
                    //ViewBag.TextExpMsg = "<-------------Read Csv File Exception!,Please Check.------------->" + e;
                    ViewBag.TextExpMsg = "<-------------读取CSV文件异常,请查看原因:------------->" + e;
                }

                List <Dictionary <string, string> > CreateErrorDic     = new List <Dictionary <string, string> >();
                List <Dictionary <string, string> > UpdateErrorDic     = new List <Dictionary <string, string> >();
                List <Dictionary <string, string> > DeleteErrorDic     = new List <Dictionary <string, string> >();
                List <Dictionary <string, string> > ActionNullErrorDic = new List <Dictionary <string, string> >();
                List <Dictionary <string, string> > OtherErrorDic      = new List <Dictionary <string, string> >();

                if (records.Count > 0)
                {
                    int AllQty           = records.Count;
                    int CreateSuccessQty = 0;
                    int CreateFailureQty = 0;
                    int UpdateSuccessQty = 0;
                    int UpdateFailureQty = 0;
                    int DeleteSuccessQty = 0;
                    int DeleteFailureQty = 0;
                    int ActionNullQty    = 0;
                    int OtherQty         = 0;

                    IBomItemService ps = new BomItemService(Settings.Default.db);

                    foreach (BomItemImportModel record in records)
                    {
                        if (string.IsNullOrWhiteSpace(record.Action))
                        {
                            ActionNullQty++;

                            Dictionary <string, string> ActionNullErrorList = new Dictionary <string, string>();

                            ActionNullErrorList.Add("ID", record.ID);
                            ActionNullErrorList.Add("ComponentId", record.ComponentId);
                            ActionNullErrorList.Add("ValidFrom", record.ValidFrom.ToString());
                            ActionNullErrorList.Add("ValidTo", record.ValidTo.ToString());
                            ActionNullErrorList.Add("HasChild", record.HasChild.ToString());
                            ActionNullErrorList.Add("UOM", record.UOM.ToString());
                            ActionNullErrorList.Add("Quantity", record.Quantity.ToString());
                            ActionNullErrorList.Add("BomId", record.BomId);
                            ActionNullErrorList.Add("Action", record.Action);

                            ActionNullErrorDic.Add(ActionNullErrorList);
                            ViewData["actionNullErrorDic"] = ActionNullErrorDic;
                        }
                        else
                        {
                            //新建
                            BomItem bomItem = new BomItem()
                            {
                                id          = Convert.ToInt32(record.ID),
                                componentId = record.ComponentId,
                                validFrom   = record.ValidFrom,
                                validTo     = record.ValidTo,
                                hasChind    = Convert.ToByte(record.HasChild),
                                uom         = record.UOM,
                                quantity    = record.Quantity,
                                bomId       = record.BomId
                            };

                            if (record.Action.Trim().ToLower().Equals("create"))
                            {
                                try
                                {
                                    bool result = ps.Create(bomItem);
                                    if (result)
                                    {
                                        CreateSuccessQty++;
                                    }
                                    else
                                    {
                                        CreateFailureQty++;

                                        Dictionary <string, string> CreateErrorList = new Dictionary <string, string>();

                                        CreateErrorList.Add("ID", record.ID);
                                        CreateErrorList.Add("ComponentId", record.ComponentId);
                                        CreateErrorList.Add("ValidFrom", record.ValidFrom.ToString());
                                        CreateErrorList.Add("ValidTo", record.ValidTo.ToString());
                                        CreateErrorList.Add("HasChild", record.HasChild.ToString());
                                        CreateErrorList.Add("UOM", record.UOM.ToString());
                                        CreateErrorList.Add("Quantity", record.Quantity.ToString());
                                        CreateErrorList.Add("BomId", record.BomId);
                                        CreateErrorList.Add("Action", record.Action);

                                        CreateErrorDic.Add(CreateErrorList);
                                        ViewData["createErrorDic"] = CreateErrorDic;
                                    }
                                }
                                catch (Exception)
                                {
                                    CreateFailureQty++;

                                    Dictionary <string, string> CreateErrorList = new Dictionary <string, string>();

                                    CreateErrorList.Add("ID", record.ID);
                                    CreateErrorList.Add("ComponentId", record.ComponentId);
                                    CreateErrorList.Add("ValidFrom", record.ValidFrom.ToString());
                                    CreateErrorList.Add("ValidTo", record.ValidTo.ToString());
                                    CreateErrorList.Add("HasChild", record.HasChild.ToString());
                                    CreateErrorList.Add("UOM", record.UOM.ToString());
                                    CreateErrorList.Add("Quantity", record.Quantity.ToString());
                                    CreateErrorList.Add("BomId", record.BomId);
                                    CreateErrorList.Add("Action", record.Action);

                                    CreateErrorDic.Add(CreateErrorList);
                                    ViewData["createErrorDic"] = CreateErrorDic;
                                }
                            }
                            else if (record.Action.Trim().ToLower().Equals("update"))
                            {
                                //更新
                                try
                                {
                                    bool result = ps.Update(bomItem);
                                    if (result)
                                    {
                                        UpdateSuccessQty++;
                                    }
                                    else
                                    {
                                        UpdateFailureQty++;

                                        Dictionary <string, string> UpdateErrorList = new Dictionary <string, string>();

                                        UpdateErrorList.Add("ID", record.ID);
                                        UpdateErrorList.Add("ComponentId", record.ComponentId);
                                        UpdateErrorList.Add("ValidFrom", record.ValidFrom.ToString());
                                        UpdateErrorList.Add("ValidTo", record.ValidTo.ToString());
                                        UpdateErrorList.Add("HasChild", record.HasChild.ToString());
                                        UpdateErrorList.Add("UOM", record.UOM.ToString());
                                        UpdateErrorList.Add("Quantity", record.Quantity.ToString());
                                        UpdateErrorList.Add("BomId", record.BomId);
                                        UpdateErrorList.Add("Action", record.Action);

                                        UpdateErrorDic.Add(UpdateErrorList);
                                        ViewData["updateErrorDic"] = UpdateErrorDic;
                                    }
                                }
                                catch (Exception)
                                {
                                    UpdateFailureQty++;
                                    Dictionary <string, string> UpdateErrorList = new Dictionary <string, string>();

                                    UpdateErrorList.Add("ID", record.ID);
                                    UpdateErrorList.Add("ComponentId", record.ComponentId);
                                    UpdateErrorList.Add("ValidFrom", record.ValidFrom.ToString());
                                    UpdateErrorList.Add("ValidTo", record.ValidTo.ToString());
                                    UpdateErrorList.Add("HasChild", record.HasChild.ToString());
                                    UpdateErrorList.Add("UOM", record.UOM.ToString());
                                    UpdateErrorList.Add("Quantity", record.Quantity.ToString());
                                    UpdateErrorList.Add("BomId", record.BomId);
                                    UpdateErrorList.Add("Action", record.Action);

                                    UpdateErrorDic.Add(UpdateErrorList);
                                    ViewData["updateErrorDic"] = UpdateErrorDic;
                                }
                            }
                            else if (record.Action.Trim().ToLower().Equals("delete"))
                            {
                                //删除
                                try
                                {
                                    bool result = ps.Delete(bomItem);

                                    if (result)
                                    {
                                        DeleteSuccessQty++;
                                    }
                                    else
                                    {
                                        DeleteFailureQty++;
                                        Dictionary <string, string> DeleteErrorList = new Dictionary <string, string>();

                                        DeleteErrorList.Add("ID", record.ID);
                                        DeleteErrorList.Add("ComponentId", record.ComponentId);
                                        DeleteErrorList.Add("ValidFrom", record.ValidFrom.ToString());
                                        DeleteErrorList.Add("ValidTo", record.ValidTo.ToString());
                                        DeleteErrorList.Add("HasChild", record.HasChild.ToString());
                                        DeleteErrorList.Add("UOM", record.UOM.ToString());
                                        DeleteErrorList.Add("Quantity", record.Quantity.ToString());
                                        DeleteErrorList.Add("BomId", record.BomId);
                                        DeleteErrorList.Add("Action", record.Action);

                                        DeleteErrorDic.Add(DeleteErrorList);
                                        ViewData["deleteErrorDic"] = DeleteErrorDic;
                                    }
                                }
                                catch (Exception)
                                {
                                    DeleteFailureQty++;

                                    Dictionary <string, string> DeleteErrorList = new Dictionary <string, string>();

                                    DeleteErrorList.Add("ID", record.ID);
                                    DeleteErrorList.Add("ComponentId", record.ComponentId);
                                    DeleteErrorList.Add("ValidFrom", record.ValidFrom.ToString());
                                    DeleteErrorList.Add("ValidTo", record.ValidTo.ToString());
                                    DeleteErrorList.Add("HasChild", record.HasChild.ToString());
                                    DeleteErrorList.Add("UOM", record.UOM.ToString());
                                    DeleteErrorList.Add("Quantity", record.Quantity.ToString());
                                    DeleteErrorList.Add("BomId", record.BomId);
                                    DeleteErrorList.Add("Action", record.Action);

                                    DeleteErrorDic.Add(DeleteErrorList);
                                    ViewData["deleteErrorDic"] = DeleteErrorDic;
                                }
                            }
                            else
                            {
                                //错误 忽略

                                Dictionary <string, string> OtherErrorList = new Dictionary <string, string>();

                                OtherErrorList.Add("ID", record.ID);
                                OtherErrorList.Add("ComponentId", record.ComponentId);
                                OtherErrorList.Add("ValidFrom", record.ValidFrom.ToString());
                                OtherErrorList.Add("ValidTo", record.ValidTo.ToString());
                                OtherErrorList.Add("HasChild", record.HasChild.ToString());
                                OtherErrorList.Add("UOM", record.UOM.ToString());
                                OtherErrorList.Add("Quantity", record.Quantity.ToString());
                                OtherErrorList.Add("BomId", record.BomId);
                                OtherErrorList.Add("Action", record.Action);

                                OtherErrorDic.Add(OtherErrorList);
                                ViewData["otherErrorDic"] = OtherErrorDic;
                            }
                        }
                    }

                    OtherQty = AllQty - CreateSuccessQty - CreateFailureQty - UpdateSuccessQty - UpdateFailureQty - DeleteSuccessQty - DeleteFailureQty - ActionNullQty;
                    Dictionary <string, int> Qty = new Dictionary <string, int>();
                    Qty.Add("AllQty", AllQty);
                    Qty.Add("CreateSuccessQty", CreateSuccessQty);
                    Qty.Add("CreateFailureQty", CreateFailureQty);
                    Qty.Add("UpdateSuccessQty", UpdateSuccessQty);
                    Qty.Add("UpdateFailureQty", UpdateFailureQty);
                    Qty.Add("DeleteSuccessQty", DeleteSuccessQty);
                    Qty.Add("DeleteFailureQty", DeleteFailureQty);
                    Qty.Add("ActionNullQty", ActionNullQty);
                    Qty.Add("OtherQty", OtherQty);
                    ViewData["Qty"] = Qty;
                }
                else
                {
                    //ViewBag.NotCheckedData = "There are no Data. Please Check Delimiter or Column Name.";
                    ViewBag.NotCheckedData = "没有检测到数据。请检查分隔符和列名。";
                }
            }
            else
            {
                //ViewBag.NotCsv = "Your File is not .Csv File, Please Check FileName.";
                ViewBag.NotCsv = "你上传的文件不是.CSV格式。请检查文件名。";
            }

            if (ViewBag.NotCsv == null)
            {
                //ViewBag.NotCsv = "CSV File is OK.";
                ViewBag.NotCsv = "上传CSV文件正确!";
            }

            if (ViewBag.NotCheckedData == null)
            {
                //ViewBag.NotCheckedData = "Check Data is OK.";
                ViewBag.NotCheckedData = "检查数据完成!";
            }

            return(View());
        }