public void ResendShippedOrder(int day) { string UserName = MyHelp.get_session("ApiUserName", Session, "*****@*****.**").ToString(); string Password = MyHelp.get_session("ApiPassword", Session, "timfromweypro").ToString(); var dateAgo = DateTime.Now.AddDays((0 - day)); dateAgo = MyHelp.DateTimeWithZone(dateAgo, false); var SCWS = new SC_WebService(UserName, Password); var stock = new StockKeepingUnit(); var winit = new Winit_API(); var winitWarehouseIDs = db.Warehouses.AsNoTracking().Where(w => w.IsEnable.Value & w.IsSellable.Value && !w.WinitWarehouseID.Equals("0")).ToDictionary(w => w.ID, w => w.WinitWarehouseID); var WinitShippingMethod = db.CarrierAPI.AsNoTracking().Where(api => api.IsEnable && api.Type.Value.Equals((byte)EnumData.CarrierType.Winit)) .SelectMany(api => api.Carriers.Where(c => c.IsEnable)).SelectMany(c => c.ShippingMethod.Where(s => s.IsEnable)).Select(s => s.ID).Distinct().ToArray(); var OrderFilter = db.Orders.Where(o => o.TimeOfOrder.Value >= dateAgo); var PackageFilter = db.Packages.Where(p => p.ID.Equals(828842) && p.IsEnable.Value && !p.ProcessStatus.Equals((byte)EnumData.ProcessStatus.訂單管理) && !string.IsNullOrEmpty(p.WinitNo) && WinitShippingMethod.Contains(p.ShippingMethod.Value)); var dataList = OrderFilter.Join(PackageFilter, o => o.OrderID, p => p.OrderID.Value, (order, package) => new { order, package }).ToList(); foreach (var data in dataList) { if (!data.package.Items.Where(i => i.IsEnable.Value).Any(i => i.SerialNumbers.Any())) { var winitData = winit.GetOutboundOrderData(data.package.WinitNo); var merchandiseList = winitData.packageList.SelectMany(p => p.merchandiseList).ToList(); if (merchandiseList != null && merchandiseList.All(m => m.itemList != null)) { try { var recordResult = stock.WinitRecordShippedOrder(data.package.ID, merchandiseList); if (recordResult.Any()) { foreach (var item in data.package.Items.Where(i => i.IsEnable.Value)) { var sku = item.ProductID.Split(new char[] { '-' })[0]; if (recordResult.ContainsKey(sku)) { foreach (var serial in recordResult[sku]) { item.SerialNumbers.Add(new SerialNumbers() { OrderID = item.OrderID, OrderItemID = item.ID, ProductID = item.ProductID, SerialNumber = serial }); } Response.Write(string.Format("訂單【{0}】記錄成功:{1}<br />", data.order.OrderID, string.Join("、", recordResult[sku].ToArray()))); } } db.SaveChanges(); } } catch (Exception ex) { Response.Write(string.Format("訂單【{0}】記錄失敗:{1}<br />", data.order.OrderID, ex.InnerException?.Message ?? ex.Message)); } } } } }