//开始执行操作 private bool StartRun(object obj) { int StartIndex = 0; MYDZ.Business.Business_Logic.Order.InitTradeInfo iti = new Business_Logic.Order.InitTradeInfo(); bool Result = false; string ErrorMsg = null; bool HasNext = false; long TotalResults = 0; Hashtable ht = null; TradesSoldGet TradesSold = null; tbClientUser clientuser = null; tbOrdersConfig ordersConfig = null; List <Trade> listtrade = null; IList <StoreLogistics> StoreLogisticsList = null; tbOrdersInfo OrdersInfo = null; if (obj != null) { ht = new Hashtable(); TradesSold = new TradesSoldGet(); clientuser = new tbClientUser(); ordersConfig = new tbOrdersConfig(); ht = obj as Hashtable; clientuser = ht["clientuser"] as tbClientUser; TradesSold = ht["TradesSoldGet"] as TradesSoldGet; StoreLogisticsList = ht["LogisticsList"] as List <StoreLogistics>; ordersConfig = ht["Config"] as tbOrdersConfig; //获取从上一次同步到现在产生的订单,否则获取店铺一个星期的未完成订单 DateTime LastModifyTime = ht["LastModifyTime"] == null ? new DateTime() : Convert.ToDateTime(ht["LastModifyTime"].ToString()); if (LastModifyTime != new DateTime()) { TradesSold.StartCreated = Convert.ToDateTime(LastModifyTime.ToString("yyyy-MM-dd HH:mm:ss")); } else { TradesSold.StartCreated = Convert.ToDateTime(DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd HH:mm:ss")); } if (TradesSold.EndCreated == null) { TradesSold.EndCreated = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); } while (true) { string Errormsg = null; List <tbOrdersInfo> listOrdersInfo = new List <tbOrdersInfo>(); listtrade = new List <Trade>(); //获取未完成订单 TradesSold.Status = "WAIT_SELLER_SEND_GOODS"; //获取淘宝默认数量的订单 listtrade = iti.GetTradesSold(clientuser.UserShops[0].SessionKey, TradesSold, out ErrorMsg, out HasNext, out TotalResults); if (listtrade == null || TotalResults == 0) { break; } try { //这里写得到临时数据 //遍历订单 foreach (Trade trade in listtrade) { try { OrdersInfo = new tbOrdersInfo(); //获取订单的详细信息 OrdersInfo = iti.GetTradeFullinfo(clientuser.UserShops[0].SessionKey, trade.Tid.ToString(), clientuser.UserShops[0].Shop.ShopId, out Errormsg); //这里做物流解析 string[] LogisticsList = Comm.Distribution(StoreLogisticsList, OrdersInfo.LogisticsStr); if (LogisticsList != null) { OrdersInfo.IsFree = bool.Parse(LogisticsList[0]); OrdersInfo.Logistics.LogisticsId = int.Parse(LogisticsList[1]);; if (OrdersInfo.OrdersFreight == 0) { OrdersInfo.IsFree = true; } } //拆单、并单 Comm.MergeOrder(ordersConfig, listOrdersInfo, OrdersInfo); // 检查订单配置关系 Comm.StatusAssign(ordersConfig, OrdersInfo); //物流分配 bool IsOk = Comm.DeliveryAssign(ordersConfig, StoreLogisticsList, OrdersInfo); if (!IsOk && ordersConfig.LogisticsDis && StoreLogisticsList != null && StoreLogisticsList.Count > 0) { string target = String.IsNullOrEmpty(OrdersInfo.Consignee.District) ? OrdersInfo.Consignee.City : OrdersInfo.Consignee.District; if (!String.IsNullOrEmpty(target)) { List <string> CompayList = GetLogisticsIdList((OrdersInfo.CashOndelivery ? "cod" : "online"), "", target.Trim()); //根据物流配送范围和物流优先级别分配订单物流信息 Comm.RangeDelivery(StoreLogisticsList, OrdersInfo, CompayList); } } //解析订单是否需要打印发货单 Comm.AnalyticalInvoice(ordersConfig, StoreLogisticsList, OrdersInfo); //修改订单备注旗帜 UpdateDeital(OrdersInfo, ordersConfig, clientuser.UserShops[0].SessionKey); } catch (Exception ex) { continue; } } StartIndex++; //这里写插入数据库临时表 if (CheckAndInsertOrders(listOrdersInfo)) { if (StartIndex == 1) { clientuser.StartIndex = StartIndex; } } } catch (Exception ex) { continue; } if (HasNext) { TradesSold.PageNo++; } else { break; } } } return(Result); }