/// <summary> /// 将组合商品拆分成基础商品信息 /// </summary> public void setProductNum(RequestOrderStatusList m, System.Collections.Concurrent.ConcurrentBag <RequestOrderStatusList> productList, System.Collections.Concurrent.ConcurrentDictionary <string, List <string> > baseProductDictionary) { var ProductList = this.GetXMProductListByzuheCode(m.PlatformMerchantCode, 508);//判断是否是组合商品,是的话将会拆分成组成商品的基础商品信息 var erpPlatformMerchantCodelist = new List <string>(); if (ProductList.Count != 0) { foreach (var elem in ProductList) { var entity = new RequestOrderStatusList(); entity.OrderCode = m.OrderCode; entity.PlatformMerchantCode = elem.PlatformMerchantCode; //料号(商品编码,对应供应商那边) erpPlatformMerchantCodelist.Add(elem.PlatformMerchantCode); productList.Add(entity); } } else { productList.Add(m); //erpPlatformMerchantCodelist.Add(m.PlatformMerchantCode); } var keyvalue = m.OrderCode + "," + m.PlatformMerchantCode; if (!baseProductDictionary.Keys.Contains(keyvalue)) { baseProductDictionary.TryAdd(keyvalue, erpPlatformMerchantCodelist); } }
/// <summary> /// 得到每个请求的货物的发货状态 /// </summary> /// <param name="orderStatusList">erp中相关的请求物品的发货信息</param> /// <param name="erpOrderStatus">五道发送的请求信息</param> /// <param name="baseProductDictionar">记录组合商品的信息</param> /// <returns></returns> public ErpOrderStatusList isErpOrderStatus(List <ErpOrderStatusList> orderStatusList, RequestOrderStatusList erpOrderStatus, System.Collections.Concurrent.ConcurrentDictionary <string, List <string> > baseProductDictionar) { var keyvalue = erpOrderStatus.OrderCode + "," + erpOrderStatus.PlatformMerchantCode; if (baseProductDictionar.Keys.Contains(keyvalue) && baseProductDictionar[keyvalue].Count != 0)//如果是拆分的组合商品 { var entity = new ErpOrderStatusList() { OrderCode = erpOrderStatus.OrderCode, PlatformMerchantCode = erpOrderStatus.PlatformMerchantCode }; var PlatformMerchantCodeList = baseProductDictionar[keyvalue]; var allEntity = orderStatusList.Where(m => PlatformMerchantCodeList.Contains(m.PlatformMerchantCode) && m.OrderCode == erpOrderStatus.OrderCode).ToList(); if (allEntity.Count > 0) { entity.IsDelivery = !allEntity.Where(m => m.IsDelivery == false).Any(); //如果有一单没有发货则整个组合商品就是未发货状态 var firLogistics = allEntity.FirstOrDefault(); //如果都发货则回传第一个发货单号 entity.LogisticsName = entity.IsDelivery ? firLogistics.LogisticsName : string.Empty; entity.LogisticsNumber = entity.IsDelivery ? firLogistics.LogisticsNumber : string.Empty; return(entity); } else { entity.OrderCode = string.Empty; entity.PlatformMerchantCode = string.Empty; //entity.IsDelivery = false; //entity.LogisticsName = string.Empty; //entity.LogisticsNumber = string.Empty; return(entity); } } else //非组合商品 { var allEntity = orderStatusList.Where(m => m.PlatformMerchantCode == erpOrderStatus.PlatformMerchantCode && m.OrderCode == erpOrderStatus.OrderCode).ToList(); var entity = new ErpOrderStatusList() { OrderCode = erpOrderStatus.OrderCode, PlatformMerchantCode = erpOrderStatus.PlatformMerchantCode }; if (allEntity.Count > 0) { return(allEntity.FirstOrDefault()); } else { entity.OrderCode = string.Empty; entity.PlatformMerchantCode = string.Empty; //entity.IsDelivery = false; //entity.LogisticsName = string.Empty; //entity.LogisticsNumber = string.Empty; return(entity); } } }