Esempio n. 1
0
        public virtual void Modify(ref ValidationErrors errors, Apps.Models.Spm.Spm_TracesInfoModel model, params string[] updateProperties)
        {
            Spm_TracesInfo entity = m_Rep.GetById(model.Id);

            if (entity == null)
            {
                errors.Add(Resource.Disable);
                return;
            }
            if (updateProperties.Count() <= 0)
            {
                entity.Id            = model.Id;
                entity.ExInfoId      = model.ExInfoId;
                entity.AcceptStation = model.AcceptStation;
                entity.AcceptTime    = model.AcceptTime;
            }
            else
            {
                Type type  = typeof(Apps.Models.Spm.Spm_TracesInfoModel);
                Type typeE = typeof(Apps.Models.Spm_TracesInfo);
                foreach (var item in updateProperties)
                {
                    System.Reflection.PropertyInfo pi  = type.GetProperty(item);
                    System.Reflection.PropertyInfo piE = typeE.GetProperty(item);
                    piE.SetValue(entity, pi.GetValue(model), null);
                }
            }


            m_Rep.Modify(entity, updateProperties);
        }
Esempio n. 2
0
        private string GetTracesByExId(Spm_ExpressInfo exInfo) {

            string result = "";
            Spm_TracesInfo ti = exInfo.Spm_TracesInfo.FirstOrDefault();
            if (ti != null) {
                result = ti.AcceptTime.ToString() + " : " + ti.AcceptStation;
            }

            return result;
        }
Esempio n. 3
0
        public virtual void Create(ref ValidationErrors errors, Apps.Models.Spm.Spm_TracesInfoModel model)
        {
            Spm_TracesInfo entity = m_Rep.GetById(model.Id);

            if (entity != null)
            {
                errors.Add(Resource.PrimaryRepeat);
                return;
            }
            entity               = new Spm_TracesInfo();
            entity.Id            = model.Id;
            entity.ExInfoId      = model.ExInfoId;
            entity.AcceptStation = model.AcceptStation;
            entity.AcceptTime    = model.AcceptTime;

            m_Rep.Create(entity);
        }
Esempio n. 4
0
        public virtual Apps.Models.Spm.Spm_TracesInfoModel GetById(string id)
        {
            Spm_TracesInfo entity = m_Rep.GetById(id);

            if (entity != null)
            {
                //Spm_TracesInfo entity = m_Rep.GetById(id);
                Apps.Models.Spm.Spm_TracesInfoModel model = new Apps.Models.Spm.Spm_TracesInfoModel();
                model.Id            = entity.Id;
                model.ExInfoId      = entity.ExInfoId;
                model.AcceptStation = entity.AcceptStation;
                model.AcceptTime    = entity.AcceptTime;

                return(model);
            }
            else
            {
                return(null);
            }
        }
Esempio n. 5
0
        public void Post(TrackingInfoModel model)
        {
            if (model.meta != null && model.meta.code == 200)
            {
                if (model.data == null)
                {
                    return;
                }

                if (model.data.origin_info != null && model.data.status != null && model.data.origin_info.trackinfo != null)
                {
                    using (DBContainer dbContext = new DBContainer())
                    {
                        DbSet <Spm_ExpressInfo> dbSet0 = dbContext.Set <Spm_ExpressInfo>();
                        DbSet <Spm_TracesInfo>  dbSet1 = dbContext.Set <Spm_TracesInfo>();

                        Spm_ExpressInfo exInfo = dbSet0.Where(o => o.TrackingNumber == model.data.tracking_number).FirstOrDefault();

                        if (exInfo != null)
                        {
                            switch (model.data.status)
                            {
                            case "notfound": exInfo.State = "0"; break;

                            case "transit":
                            case "pickup":
                            case "undelivered":
                            case "expired": exInfo.State = "2"; break;

                            case "delivered": exInfo.State = "3"; break;

                            case "exception": exInfo.State = "4"; break;

                            default:
                                break;
                            }
                            IQueryable <Spm_TracesInfo> ti = dbSet1.Where(t => t.ExInfoId == exInfo.Id).OrderByDescending(a => a.AcceptTime);
                            foreach (var item in model.data.origin_info.trackinfo)
                            {
                                if (ti.Count() > 0)
                                {
                                    if ((item.Date > ti.First().AcceptTime))
                                    {
                                        Spm_TracesInfo m = new Spm_TracesInfo()
                                        {
                                            Id            = ResultHelper.NewId,
                                            ExInfoId      = exInfo.Id,
                                            AcceptTime    = item.Date,
                                            AcceptStation = item.StatusDescription + ";" + item.Details,
                                        };
                                        dbSet1.Add(m);
                                    }
                                }
                                else
                                {
                                    Spm_TracesInfo m = new Spm_TracesInfo()
                                    {
                                        Id            = ResultHelper.NewId,
                                        ExInfoId      = exInfo.Id,
                                        AcceptTime    = item.Date,
                                        AcceptStation = item.StatusDescription + ";" + item.Details,
                                    };
                                    dbSet1.Add(m);
                                }
                            }
                        }
                        dbContext.SaveChanges();
                    }
                }
            }
        }
Esempio n. 6
0
        public void Execute(IJobExecutionContext context)
        {
            using (DBContainer dbContext = new DBContainer())
            {
                DbSet <Spm_ExpressInfo> dbSet0 = dbContext.Set <Spm_ExpressInfo>();
                DbSet <Spm_TracesInfo>  dbSet1 = dbContext.Set <Spm_TracesInfo>();
                KdApiSearchHelper       search = new KdApiSearchHelper();
                DateTime searchTime0           = DateTime.Now.AddDays(-3);
                DateTime searchTime1           = DateTime.Now.AddDays(-14);
                DateTime searchTime            = DateTime.Now.AddDays(-1);
                DateTime searchTime2           = DateTime.Now.AddDays(-14);
                //DateTime searchTime = DateTime.Now.AddDays(-15);
                //DateTime searchTime2 = DateTime.Now.AddDays(-16);
                //spmContainer
                //var eiContainer = dbSet0.Where(e => e.ShipperCode != "HHTT:天天快递" && !e.ShipperCode.Contains("LK:") && (e.ActualShipDateTime < searchTime && e.ActualShipDateTime > searchTime2 && (e.State == "0" || e.State == "900")));
                var eiContainer = dbSet0.Where(e => e.ShipperCode != "HHTT:天天快递" && !e.ShipperCode.Contains("LK:") && ((e.ActualShipDateTime <searchTime && e.ActualShipDateTime> searchTime2 && (e.State == "0" || e.State == "900")) || (e.ActualShipDateTime <searchTime0 && e.ActualShipDateTime> searchTime1 && (e.State == "2"))));
                //var eiContainer = dbSet0.Where(e => e.ShipperCode != "HHTT:天天快递" && !e.ShipperCode.Contains("LK:") && ((e.ActualShipDateTime < searchTime && e.ActualShipDateTime > searchTime2 && (e.State == "0" || e.State == "900")) || (e.ActualShipDateTime < searchTime0 && e.ActualShipDateTime > searchTime1 && (e.State == "2"))));
                //var eiContainer = dbSet0.Where(e => e.TrackingNumber == "884997150832865860" || e.TrackingNumber == "884997154424198193" || e.TrackingNumber == "884997139039592133" || e.TrackingNumber == "884997158451108294");
                int count = eiContainer.Count();
                List <Spm_TracesInfo>  addList    = new List <Spm_TracesInfo>();
                List <Spm_ExpressInfo> modifyList = new List <Spm_ExpressInfo>();
                List <Spm_TracesInfo>  traceList  = dbSet1.ToList();

                ParallelOptions parallelOptions = new ParallelOptions();
                parallelOptions.MaxDegreeOfParallelism = 6;

                Parallel.ForEach(eiContainer, parallelOptions, item =>
                {
                    //foreach (var item in eiContainer) {
                    try
                    {
                        Apps.Models.Common.KdSearchModel result = JsonConvert.DeserializeObject <Apps.Models.Common.KdSearchModel>(search.getOrderTracesByJson(item.TrackingNumber, item.ShipperCode.Split(':')[0]));
                        if (result.Success)
                        {
                            //Spm_ExpressInfo exInfo = dbContext.Set<Spm_ExpressInfo>().Where(e=>e.TrackingNumber == item.TrackingNumber).FirstOrDefault();

                            modifyList.Add(new Spm_ExpressInfo()
                            {
                                Id = item.Id, State = result.State
                            });
                            //if (exInfo != null)
                            //{
                            //exInfo.State = result.State;
                            //    exInfo.EBusinessID = result.EBusinessID;
                            //    exInfo.OrderCode = result.OrderCode;
                            //    exInfo.Reason = result.Reason;
                            //    exInfo.Success = result.Success;

                            //dbContext.Entry<Spm_ExpressInfo>(exInfo).State = EntityState.Modified;

                            if (result.Traces.Count() > 0)
                            {
                                List <Spm_TracesInfo> ti = traceList.Where(t => t.ExInfoId == item.Id).OrderByDescending(a => a.AcceptTime).ToList();
                                //List<Spm_TracesInfoModel> ti = serviceSession.Spm_TracesInfo.GetList(t => t.ExInfoId == exInfo.Id).OrderByDescending(a => a.AcceptTime).ToList();
                                foreach (var tc in result.Traces)
                                {
                                    if (ti.Count() > 0)
                                    {
                                        if ((tc.AcceptTime > ti.First().AcceptTime))
                                        {
                                            Spm_TracesInfo m = new Spm_TracesInfo()
                                            {
                                                Id            = ResultHelper.NewId,
                                                ExInfoId      = item.Id,
                                                AcceptTime    = tc.AcceptTime,
                                                AcceptStation = tc.AcceptStation,
                                            };
                                            addList.Add(m);
                                            //dbContext.Entry<Spm_TracesInfo>(m).State = EntityState.Added;
                                        }
                                    }
                                    else
                                    {
                                        Spm_TracesInfo m = new Spm_TracesInfo()
                                        {
                                            Id            = ResultHelper.NewId,
                                            ExInfoId      = item.Id,
                                            AcceptTime    = tc.AcceptTime,
                                            AcceptStation = tc.AcceptStation,
                                        };
                                        addList.Add(m);
                                        //dbContext.Entry<Spm_TracesInfo>(m).State = EntityState.Added;
                                    }
                                }
                            }
                        }
                        //}
                    }
                    catch
                    {
                    }
                });
                if (modifyList.Count() > 0)
                {
                    foreach (var item in modifyList)
                    {
                        dbSet0.Where(e => e.Id == item.Id).First().State = item.State;
                    }
                }
                if (addList.Count() > 0)
                {
                    dbSet1.AddRange(addList);
                }
                dbContext.SaveChanges();
                //dbContext.SaveChanges();
            }
        }
Esempio n. 7
0
        public void Execute(IJobExecutionContext context)
        {
            using (DBContainer dbContext = new DBContainer())
            {
                DbSet <Spm_ExpressInfo> dbSet0 = dbContext.Set <Spm_ExpressInfo>();
                DbSet <Spm_TracesInfo>  dbSet1 = dbContext.Set <Spm_TracesInfo>();
                DbSet <Spm_LastTime>    dbSet2 = dbContext.Set <Spm_LastTime>();
                DateTime time0 = DateTime.Now.AddDays(-7);

                Spm_LastTime sl    = dbSet2.Find("Kd100");
                DateTime     time1 = (DateTime)sl.ActualShipDateTime;
                if (sl.Kd100Flag == 0)
                {
                    sl.Kd100Flag = 1;
                }
                else
                {
                    sl.Kd100Flag = 0;
                    time0        = time1;
                }
                //time0 = sl.Kd100Flag == 0 ? time0 : time1;
                //int num = (int)sl.Kd100Flag;
                //if (num < 1980)
                //{
                //    sl.Kd100Flag = num + 495;
                //}
                //else {
                //    num = 0;
                //    sl.Kd100Flag = 495;
                //}


                List <Spm_ExpressInfo> eiContainer = dbSet0.Where(e => e.ShipperCode == "HHTT:天天快递" && e.ActualShipDateTime >= time0 && (e.State == "900" || e.State == "0" || e.State == "1" || e.State == "2")).OrderBy(e => e.ActualShipDateTime).Take(950).ToList();
                sl.ActualShipDateTime = eiContainer.Last().ActualShipDateTime;
                int count = eiContainer.Count();
                foreach (var item in eiContainer)
                {
                    try
                    {
                        Kd100Model result = JsonConvert.DeserializeObject <Apps.Models.Common.Kd100Model>(Kd100Helper.orderTracesSubByJson("tiantian", item.TrackingNumber));
                        if (result.status == 1)
                        {
                            switch (result.state)
                            {
                            case 0:
                            case 5: item.State = "2"; break;

                            case 1: item.State = "1"; break;

                            case 3: item.State = "3"; break;

                            case 2:
                            case 4:
                            case 6: item.State = "4"; break;

                            default:
                                break;
                            }

                            if (result.data.Count > 0)
                            {
                                IQueryable <Spm_TracesInfo> ti = dbSet1.Where(t => t.ExInfoId == item.Id).OrderByDescending(a => a.AcceptTime);
                                foreach (var tc in result.data)
                                {
                                    if (ti.Count() > 0)
                                    {
                                        if ((tc.time > ti.First().AcceptTime))
                                        {
                                            Spm_TracesInfo m = new Spm_TracesInfo()
                                            {
                                                Id            = ResultHelper.NewId,
                                                ExInfoId      = item.Id,
                                                AcceptTime    = tc.time,
                                                AcceptStation = tc.context,
                                            };
                                            dbSet1.Add(m);
                                        }
                                    }
                                    else
                                    {
                                        Spm_TracesInfo m = new Spm_TracesInfo()
                                        {
                                            Id            = ResultHelper.NewId,
                                            ExInfoId      = item.Id,
                                            AcceptTime    = tc.time,
                                            AcceptStation = tc.context,
                                        };
                                        dbSet1.Add(m);
                                    }
                                }
                            }
                        }
                        else
                        {
                            //int r = result.status;
                        }
                        Thread.Sleep(300);
                    }
                    catch (Exception e)
                    {
                        Thread.Sleep(300);
                        string ex = e.Message;
                        continue;
                    }
                }

                dbContext.SaveChanges();
            }
        }
Esempio n. 8
0
        // POST: api/ExpressInfo
        public Root Post([FromBody] Datas model)
        {
            if (model.RequestData != null)
            {
                var requestData = JsonConvert.DeserializeObject <RequestData>(model.RequestData);

                if (requestData.Data.Count() > 0)
                {
                    //Apps.IService.IServiceSession serviceSession = OpeCur.ServiceSession;

                    using (DBContainer dbContext = new DBContainer())
                    {
                        DbSet <Spm_ExpressInfo> dbSet0 = dbContext.Set <Spm_ExpressInfo>();
                        DbSet <Spm_TracesInfo>  dbSet1 = dbContext.Set <Spm_TracesInfo>();

                        DateTime pushTime = requestData.PushTime;
                        //ValidationErrors error = new ValidationErrors();
                        foreach (var item in requestData.Data)
                        {
                            Spm_ExpressInfo exInfo = dbSet0.Where(o => o.TrackingNumber == item.LogisticCode).FirstOrDefault();
                            //var exInfo = serviceSession.Spm_ExpressInfo.GetList(o => o.TrackingNumber == item.LogisticCode).FirstOrDefault();
                            //if (exInfo == null)
                            //{
                            //    string newId = ResultHelper.NewId;
                            //    Spm_ExpressInfoModel eModel = new Spm_ExpressInfoModel()
                            //    {
                            //        Id = newId,
                            //        TrackingNumber = item.LogisticCode,
                            //        State = item.State,
                            //        ShipperCode = item.ShipperCode,
                            //        CallBack = item.CallBack,
                            //        EBusinessID = item.EBusinessID,
                            //        OrderCode = item.OrderCode,
                            //        Reason = item.Reason,
                            //        Success = item.Success,
                            //        PushTime = pushTime,
                            //    };
                            //    serviceSession.Spm_ExpressInfo.Create(ref error, eModel);

                            //    if (item.Traces.Count() > 0)
                            //    {

                            //        List<Spm_TracesInfoModel> ti = serviceSession.Spm_TracesInfo.GetList(t => t.ExInfoId == newId).OrderByDescending(a => a.AcceptTime).ToList();
                            //        foreach (var tc in item.Traces)
                            //        {
                            //            if (ti.Count > 0)
                            //            {
                            //                if ((tc.AcceptTime > ti.First().AcceptTime))
                            //                {
                            //                    Spm_TracesInfoModel m = new Spm_TracesInfoModel()
                            //                    {
                            //                        Id = ResultHelper.NewId,
                            //                        ExInfoId = newId,
                            //                        AcceptTime = tc.AcceptTime,
                            //                        AcceptStation = tc.AcceptStation,
                            //                    };
                            //                    serviceSession.Spm_TracesInfo.Create(ref error, m);
                            //                }
                            //            }
                            //            else
                            //            {
                            //                Spm_TracesInfoModel m = new Spm_TracesInfoModel()
                            //                {
                            //                    Id = ResultHelper.NewId,
                            //                    ExInfoId = newId,
                            //                    AcceptTime = tc.AcceptTime,
                            //                    AcceptStation = tc.AcceptStation,
                            //                };
                            //                serviceSession.Spm_TracesInfo.Create(ref error, m);
                            //            }
                            //        }
                            //    }
                            //}
                            if (exInfo != null)
                            {
                                //Spm_ExpressInfoModel eModel = new Spm_ExpressInfoModel()
                                //{
                                //    Id = exInfo.Id,
                                //    State = item.State,

                                //    //ShipperCode = item.ShipperCode,
                                //    CallBack = item.CallBack,
                                //    EBusinessID = item.EBusinessID,
                                //    OrderCode = item.OrderCode,
                                //    Reason = item.Reason,
                                //    Success = item.Success,
                                //    PushTime = pushTime,
                                //};

                                exInfo.State       = item.State;
                                exInfo.CallBack    = item.CallBack;
                                exInfo.EBusinessID = item.EBusinessID;
                                exInfo.OrderCode   = item.OrderCode;
                                exInfo.Reason      = item.Reason;
                                exInfo.Success     = item.Success;
                                exInfo.PushTime    = pushTime;


                                //if (exInfo.ShipperCode.IsNullOrEmpty())
                                //{
                                //    exInfo.ShipperCode = item.ShipperCode;
                                //serviceSession.Spm_ExpressInfo.Modify(ref error, eModel, "State", "CallBack", "ShipperCode", "EBusinessID", "OrderCode", "Reason", "Success", "PushTime");
                                //}
                                //else {
                                //    serviceSession.Spm_ExpressInfo.Modify(ref error, eModel, "State", "CallBack", "EBusinessID", "OrderCode", "Reason", "Success", "PushTime");
                                //}

                                dbContext.Entry <Spm_ExpressInfo>(exInfo).State = EntityState.Modified;

                                if (item.Traces.Count() > 0)
                                {
                                    IQueryable <Spm_TracesInfo> ti = dbSet1.Where(t => t.ExInfoId == exInfo.Id).OrderByDescending(a => a.AcceptTime);
                                    //List<Spm_TracesInfoModel> ti = serviceSession.Spm_TracesInfo.GetList(t => t.ExInfoId == exInfo.Id).OrderByDescending(a => a.AcceptTime).ToList();
                                    foreach (var tc in item.Traces)
                                    {
                                        if (ti.Count() > 0)
                                        {
                                            if ((tc.AcceptTime > ti.First().AcceptTime))
                                            {
                                                Spm_TracesInfo m = new Spm_TracesInfo()
                                                {
                                                    Id            = ResultHelper.NewId,
                                                    ExInfoId      = exInfo.Id,
                                                    AcceptTime    = tc.AcceptTime,
                                                    AcceptStation = tc.AcceptStation,
                                                };
                                                //dbContext.Entry<Spm_TracesInfo>(m).State = EntityState.Added;
                                                dbSet1.Add(m);
                                                //serviceSession.Spm_TracesInfo.Create(ref error, m);
                                            }
                                        }
                                        else
                                        {
                                            Spm_TracesInfo m = new Spm_TracesInfo()
                                            {
                                                Id            = ResultHelper.NewId,
                                                ExInfoId      = exInfo.Id,
                                                AcceptTime    = tc.AcceptTime,
                                                AcceptStation = tc.AcceptStation,
                                            };
                                            //dbContext.Entry<Spm_TracesInfo>(m).State = EntityState.Added;
                                            dbSet1.Add(m);
                                            //serviceSession.Spm_TracesInfo.Create(ref error, m);
                                        }
                                    }
                                }
                            }
                            //serviceSession.SaveChange();
                        }
                        if (dbContext.SaveChanges() >= 0)
                        {
                            return(new Root()
                            {
                                EBusinessID = "1281577",
                                UpdateTime = "",
                                Success = true,
                                Reason = "",
                            });
                        }
                        else
                        {
                            return(new Root()
                            {
                                EBusinessID = "1281577",
                                UpdateTime = DateTime.Now.ToString(),
                                Success = false,
                                Reason = "获取数据失败",
                            });
                        }
                    }
                }
            }


            Root root = new Root()
            {
                EBusinessID = "1281577",
                UpdateTime  = "",
                Success     = true,
                Reason      = "",
            };

            return(root);
        }