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); }
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; }
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); }
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); } }
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(); } } } }
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(); } }
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(); } }
// 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); }