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)); } }
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); }
/// <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); }
/// <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); }
private static ProductModel GetProductFromrelation(List <ProductModel> products, BomItem item) { return(products .Where(x => x.Id == item.ComponentID) .FirstOrDefault()); }
//补充 还不完整的信息 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()); }