public static void Run()
        {
            var list = WayBillController.GetSubmitWayBillNumber();

            if (list.Any())
            {
                var preAlertBatchNo = WayBillController.GetSequenceNumber();//生成批次号
                foreach (var wayBillNumber in list)
                {
                    var model = WayBillController.GetWayBillInfoModel(wayBillNumber);
                    if (model != null && !model.WayBillNumber.IsNullOrWhiteSpace())
                    {
                        model.PreAlertBatchNo = preAlertBatchNo;

                        var result = B2CController.SubmitB2C(model);
                        if (result.Status > 1)
                        {
                            WayBillController.UpdateB2CPreAlertLogs(result);
                        }
                    }
                    else
                    {
                        Log.Error("获取运单号为{0}的数据失败!".FormatWith(wayBillNumber));
                    }
                }
            }
        }
        public static void UpdatePrice()
        {
            var datenow      = DateTime.Now;
            var lastupdated  = WayBillController.GetLastUpdateTime(path);
            var shippinglist = FreightController.GetShippingMethodList(DateTime.Parse(lastupdated));

            if (shippinglist != null && shippinglist.List != null && shippinglist.List.Count > 0)
            {
                Log.Info("开始同步运输方式!");
                shippinglist.List.ForEach(p => WayBillController.SynchronousShippingMethod(p.ShippingMethodId, p.ShippingMethodTypeId, p.Enabled));
                Log.Info("完成同步运输方式!");
            }
            var list = WayBillController.GetUpdatePriceWayBillList(lastupdated);

            //更新最够更新时间
            LogTime.WriteFile(path, datenow.ToString("yyyy-MM-dd HH:mm:ss"));
            Log.Info(datenow.ToString("yyyy-MM-dd HH:mm:ss"));

            if (list == null || list.Count <= 0)
            {
                return;
            }
            if (ismultithreading.ToLowerInvariant() == "no")
            {
                //单线程
                foreach (var venderPackageModel in list)
                {
                    if (!WayBillController.UpdatePriceWayBill(FreightController.PostVenderPrice(venderPackageModel),
                                                              venderPackageModel.WayBillNumber))
                    {
                        Log.Error(string.Format("运单号:{0}更新错误!", venderPackageModel.WayBillNumber));
                    }
                }
            }
            else if (ismultithreading.ToLowerInvariant() == "yes")
            {
                //多线程
                if (minThreads > maxThreads)
                {
                    maxThreads = minThreads;
                }
                var threadPool = new SmartThreadPool {
                    MaxThreads = maxThreads < 1?1:maxThreads, MinThreads = minThreads < 1?1:minThreads
                };
                var pendingWorkItems = new IWorkItemResult[list.Count];
                for (int i = 0; i < list.Count; i++)
                {
                    pendingWorkItems[i] = threadPool.QueueWorkItem(new WorkItemCallback(MUpdatePrice), list[i]);
                }

                if (SmartThreadPool.WaitAll(pendingWorkItems))
                {
                    threadPool.Shutdown();
                }
            }
        }
        public static object MUpdatePrice(object value)
        {
            var model = value as WayBillPriceModel;

            if (!WayBillController.UpdatePriceWayBill(FreightController.GetFreightPrice(model),
                                                      model.WayBillNumber, model.ReceivingExpenseID))
            {
                Log.Error(string.Format("运单号:{0}更新错误!", model.WayBillNumber));
            }
            return(true);
        }
        public static object MUpdatePrice(object value)
        {
            var model = value as VenderInfoPackageRequest;

            if (!WayBillController.UpdatePriceWayBill(FreightController.PostVenderPrice(model),
                                                      model.WayBillNumber))
            {
                Log.Error(string.Format("运单号:{0}更新错误!", model.WayBillNumber));
            }
            return(true);
        }
Beispiel #5
0
        public static void SubmitSfOrder()
        {
            Log.Info("开始预报荷兰小包");
            //预报荷兰小包
            var list = WayBillController.GetNlPostWayBillNumberList();

            if (list.Any())
            {
                const int pagesize  = 50;//分批查询
                int       pageindex = 1;
                do
                {
                    var waybillList = WayBillController.GetWayBillSfModelList(list.Skip((pageindex - 1) * pagesize).Take(pagesize).ToList());
                    if (waybillList.Any())
                    {
                        foreach (var wayBillSfModel in waybillList)
                        {
                            try
                            {
                                if (!wayBillSfModel.ApplicationInfo.Any())
                                {
                                    WayBillController.SubmitFailure(wayBillSfModel.WayBillNumber, "没有申报信息");
                                    continue;
                                }
                                var parcel = SFController.NlPost(wayBillSfModel);
                                if (parcel != null && !parcel.WayBillNumber.IsNullOrWhiteSpace() && !parcel.MailNo.IsNullOrWhiteSpace())
                                {
                                    if (SFController.NlPostConfirm(parcel.WayBillNumber, parcel.MailNo))
                                    {
                                        //记录成功
                                        WayBillController.SubmitSuccess(parcel);
                                    }
                                    else
                                    {
                                        //取消订单
                                        SFController.NlPostConfirm(parcel.WayBillNumber, parcel.MailNo, 2);
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                Log.Error("运单号:{0} 提交顺丰API异常信息:{1}".FormatWith(wayBillSfModel.WayBillNumber, ex.Message));
                            }
                        }
                    }
                    pageindex++;
                } while (list.Count > (pageindex - 1) * pagesize);
            }
            Log.Info("完成预报荷兰小包");
            WayBillController.UpdateOutShippingMethod();
        }
        public static void UpdatePrice()
        {
            var list = WayBillController.GetUpdatePriceWayBillList();

            if (list == null || list.Count <= 0)
            {
                return;
            }
            if (ismultithreading.ToLowerInvariant() == "no")
            {
                //单线程
                foreach (var model in list)
                {
                    if (!WayBillController.UpdatePriceWayBill(FreightController.GetFreightPrice(model),
                                                              model.WayBillNumber, model.ReceivingExpenseID))
                    {
                        Log.Error(string.Format("运单号:{0}更新错误!", model.WayBillNumber));
                    }
                }
            }
            else if (ismultithreading.ToLowerInvariant() == "yes")
            {
                //多线程
                if (minThreads > maxThreads)
                {
                    maxThreads = minThreads;
                }
                var threadPool = new SmartThreadPool {
                    MaxThreads = maxThreads < 1 ? 1 : maxThreads, MinThreads = minThreads < 1 ? 1 : minThreads
                };
                var pendingWorkItems = new IWorkItemResult[list.Count];
                for (int i = 0; i < list.Count; i++)
                {
                    pendingWorkItems[i] = threadPool.QueueWorkItem(new WorkItemCallback(MUpdatePrice), list[i]);
                }

                if (SmartThreadPool.WaitAll(pendingWorkItems))
                {
                    threadPool.Shutdown();
                }
            }
        }