Esempio n. 1
0
        private void CheckImportData(DataTable importTable, int stockSysNo, out List <TrackingNumberInfo> successResult, out List <TrackingNumberInfo> failedResult)
        {
            successResult = new List <TrackingNumberInfo>();
            failedResult  = new List <TrackingNumberInfo>();

            foreach (DataRow row in importTable.Rows)
            {
                TrackingNumberInfo entity = new TrackingNumberInfo()
                {
                    OrderID        = Convert.ToString(row["OrderID"]),
                    OrderType      = Convert.ToString(row["OrderType"]),
                    InvoiceNumber  = Convert.ToString(row["InvoiceNumber"]),
                    TrackingNumber = Convert.ToString(row["TrackingNumber"]),
                    StockSysNo     = stockSysNo
                };
                if (string.IsNullOrEmpty(entity.OrderID))
                {
                    if (string.IsNullOrEmpty(entity.OrderID) && string.IsNullOrEmpty(entity.OrderType) &&
                        string.IsNullOrEmpty(entity.InvoiceNumber) && string.IsNullOrEmpty(entity.TrackingNumber))
                    {
                        continue;
                    }
                    failedResult.Add(entity);
                }
                else
                {
                    successResult.Add(entity);
                }
            }
        }
        public bool DisableTrackingNumber(string id)
        {
            TrackingNumberInfo model = new TrackingNumberInfo();
            List <TrackingNumberDetailInfo> trackingNumberDetailInfo = new List <TrackingNumberDetailInfo>();

            trackingNumberDetailInfo = _trackingNumberDetailInfoRepository.GetList(p => p.TrackingNumberID == id);
            model = _trackingNumberInfoRepository.Get(id);
            if (model != null)
            {
                if (trackingNumberDetailInfo.Count > 0)
                {
                    foreach (var row in trackingNumberDetailInfo)
                    {
                        if (row.Status == 1)
                        {
                            row.Status = 3;
                            _trackingNumberDetailInfoRepository.Modify(row);
                        }
                    }
                }
                model.Status = 2;
                _trackingNumberInfoRepository.Modify(model);
                _trackingNumberInfoRepository.UnitOfWork.Commit();
                _trackingNumberDetailInfoRepository.UnitOfWork.Commit();
                return(true);
            }
            return(false);
        }
Esempio n. 3
0
        public TrackingNumberInfo CreateTrackingNumber(TrackingNumberInfo entity)
        {
            CustomDataCommand dataCommand = DataCommandManager.CreateCustomDataCommandFromConfig("InsertTrackingNumber");

            dataCommand.SetParameterValue(entity);

            var suffix = GetStockSuffix(entity.StockSysNo.Value);

            dataCommand.CommandText = dataCommand.CommandText
                                      .Replace("Invoice_TrackingNumber", "Invoice_TrackingNumber_" + suffix);

            entity.SysNo = Convert.ToInt32(dataCommand.ExecuteScalar());
            return(entity);
        }
 public void UpdateTrackingNumber(TrackingNumberInfo trackingNumberInfo)
 {
     throw new NotImplementedException();
 }
 public void AddTrackingNumber(TrackingNumberInfo trackingNumberInfo)
 {
     _trackingNumberInfoRepository.Add(trackingNumberInfo);
     _trackingNumberInfoRepository.UnitOfWork.Commit();
 }
        /// <summary>
        /// 上传跟踪号
        /// Add by zhengsong
        /// 修复不同运输方式可能重复的问题 ,
        /// 对跟踪号分批进行全表对比 ,
        /// 同时加入并行运算提升性能
        /// by daniel 2014-11-1
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public List <TrackingNumberDetailInfo> UploadTrackingNumberList(TrackingNumberInfo model)
        {
            Log.Info("跟踪号" + model.TrackingNumberDetailInfos.Count);
            TrackingNumberInfo tn = new TrackingNumberInfo();
            ConcurrentBag <TrackingNumberDetailInfo> errors = new ConcurrentBag <TrackingNumberDetailInfo>();


            Log.Info("开始查找重复的跟踪号...");
            var duplicateTrackNumbers = GetRepeatedTrackNumbers(model.TrackingNumberDetailInfos.ToList());

            Log.Info("查找重复的跟踪号OK.");
            Parallel.ForEach(model.TrackingNumberDetailInfos, t =>
                             //foreach (var t in model.TrackingNumberDetailInfos)
            {
                if (duplicateTrackNumbers.Contains(t.TrackingNumber))
                {
                    errors.Add(t);
                }
            });

            if (errors.Count < 1)
            {
                tn.TrackingNumberID = model.TrackingNumberID;
                tn.ShippingMethodID = model.ShippingMethodID;
                tn.ApplianceCountry = model.ApplianceCountry;
                tn.Status           = model.Status;
                tn.CreatedBy        = model.CreatedBy;
                tn.CreatedNo        = model.CreatedNo;
                tn.LastUpdateOn     = model.LastUpdateOn;
                tn.LastUpdatedBy    = model.LastUpdatedBy;
                tn.ApplianceCountry = model.ApplianceCountry;

                ConcurrentBag <TrackingNumberDetailInfo> dataList = new ConcurrentBag <TrackingNumberDetailInfo>();

                //排除有问题的跟踪号
                var good = model.TrackingNumberDetailInfos.Except(errors);

                Log.Info("准备插入的数据..." + good.Count());
                //插入的数据
                Parallel.ForEach(good, row =>
                {
                    TrackingNumberDetailInfo detail = new TrackingNumberDetailInfo();
                    detail.TrackingNumber           = row.TrackingNumber.ToUpperInvariant();
                    detail.TrackingNumberID         = model.TrackingNumberID;
                    detail.Status        = (short)TrackingNumberDetailInfo.StatusEnum.NotUsed;
                    detail.WayBillNumber = "";
                    dataList.Add(detail);
                });
                Log.Info("准备的数据OK." + dataList.Count);

                if (dataList.Count > 0)
                {
                    Log.Info("开始保存数据...");
                    using (var trans = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 10, 0)))
                    {
                        AddTrackingNumber(tn);
                        _wayBillInfoRepository.BulkInsert("TrackingNumberDetailInfos", dataList.ToList());
                        trans.Complete();
                    }
                    Log.Info("保存数据完成.");
                }

                return(dataList.ToList());
            }
            else
            {
                return(errors.ToList());
            }
        }
Esempio n. 7
0
 public virtual TrackingNumberInfo CreateTrackingNumber(TrackingNumberInfo entity)
 {
     return(DA.CreateTrackingNumber(entity));
 }