/// <summary> /// 获取需要提交到顺丰的运单 /// </summary> /// <returns></returns> public static List <string> GetNlPostWayBillNumberList() { DbUtility dbUtility = new SqlDbUtility(_lmsCon); DataTable dt = dbUtility.ExecuteData("exec P_GetNlPostWayBillNumberList N'" + _NLPOSTShippingMethodID + "',N'" + SubmitStatus + "'"); var list = new List <string>(); if (dt != null && dt.Rows.Count > 0) { Log.Info("LMS获取需要提交到顺丰的运单总数是" + dt.Rows.Count); for (int i = 0; i < dt.Rows.Count; i++) { for (int j = 0; j < dt.Columns.Count; j++) { if (dt.Columns[j].ColumnName != "WayBillNumber") { continue; } if (!string.IsNullOrWhiteSpace(dt.Rows[i][j].ToString())) { list.Add(dt.Rows[i][j].ToString().Trim()); } } } } Log.Info("LMS获取需要提交到顺丰的运单完毕!"); return(list); }
/// <summary> /// 修改B2CPreAlertLogs /// </summary> /// <param name="model"></param> public static void UpdateB2CPreAlertLogs(B2CPreAlertLog model) { string sql = ""; if (model.Status == 2) { sql = @"UPDATE dbo.B2CPreAlertLogs SET ShippingMethod='" + model.ShippingMethod + "',PreAlertID='" + model.PreAlertID + @"',Status=2 ,PreAlertBatchNo='" + model.PreAlertBatchNo + @"',LastUpdatedOn=GETDATE(),LastUpdatedBy='system' WHERE WayBillNumber='" + model.WayBillNumber + "' AND PreAlertBatchNo IS NULL"; } else if (model.Status == 3) { sql = @"UPDATE dbo.B2CPreAlertLogs SET ShippingMethod='" + model.ShippingMethod + "',ErrorMsg=N'" + model.ErrorMsg.Replace("/r/n", "").StripXML() + "',ErrorCode='" + model.ErrorCode + "',ErrorDetails=N'" + model.ErrorDetails.Replace("/r/n", "").StripXML() + @"',Status=3 ,PreAlertBatchNo='" + model.PreAlertBatchNo + @"',LastUpdatedOn=GETDATE(),LastUpdatedBy='system' WHERE WayBillNumber='" + model.WayBillNumber + "'"; } if (sql.Length > 0) { try { DbUtility dbUtility = new SqlDbUtility(_lmsCon); dbUtility.ExecuteNonQuery(sql); } catch (Exception ex) { Log.Exception(ex); } } }
/// <summary> /// 获取需要提交到顺E宝的运单 /// --已提交或者已收货 /// </summary> /// <returns></returns> public static List <string> GetLithuaniaWayBillNumberList() { var shippingMethodId = _LithuaniaShippingMethodID.Replace(",", "','"); string sql = @"SELECT WayBillNumber FROM dbo.WayBillInfos w WHERE InShippingMethodID IN('" + shippingMethodId + @"') AND Status IN(3,4) AND w.IsHold=0 AND NOT EXISTS ( SELECT 1 FROM LithuaniaInfos n WHERE w.WayBillNumber = n.WayBillNumber )"; DbUtility dbUtility = new SqlDbUtility(_lmsCon); DataTable dt = dbUtility.ExecuteData(sql); var list = new List <string>(); if (dt != null && dt.Rows.Count > 0) { Log.Info("LMS获取需要提交到顺E宝的运单总数是" + dt.Rows.Count); for (int i = 0; i < dt.Rows.Count; i++) { for (int j = 0; j < dt.Columns.Count; j++) { if (dt.Columns[j].ColumnName != "WayBillNumber") { continue; } if (!string.IsNullOrWhiteSpace(dt.Rows[i][j].ToString())) { list.Add(dt.Rows[i][j].ToString().Trim()); } } } } Log.Info("LMS获取需要提交到顺E宝的运单完毕!"); return(list); }
/// <summary> /// 根据单号获取跟踪信息 /// </summary> /// <param name="orderNumber"></param> /// <returns></returns> public static bool GetTrackInfo(string orderNumber) { Log.Info("本次获取单号为:{0}".FormatWith(orderNumber)); var result = B2CController.GetTrackInfoXmlByNumber(orderNumber); try { DbUtility dbUtility = new SqlDbUtility(TrackCon); string obj = dbUtility.ExecuteScalar( "exec P_ImportB2CTrackInfo {0},{1}", orderNumber, result).ToString(); var issuccess = obj == "1"; if (issuccess) { Log.Info("本次获取单号为:{0} 插入数据库成功!".FormatWith(orderNumber)); } else { Log.Error("本次获取单号为:{0} 插入数据库失败!".FormatWith(orderNumber)); } return(issuccess); } catch (Exception ex) { Log.Exception(ex); } return(false); }
/// <summary> /// 获取B2C跟新信息插入数据库按时间点 /// </summary> public static bool GetTrackInfo() { var intervalHours = -1 * (IntervalHours + 4);//加4小时,是防止漏抓取B2C跟踪信息 var datetime = long.Parse(DateTime.UtcNow.AddHours(intervalHours).ToString("yyyyMMddHH") + "0000"); Log.Info("本次获取UTC时间点为:{0}".FormatWith(datetime)); var result = B2CController.GetTrackInfoXmlByTime(datetime); try { DbUtility dbUtility = new SqlDbUtility(TrackCon); string obj = dbUtility.ExecuteScalar( "exec P_ImportB2CTrackInfo {0},{1}", datetime.ToString(), result).ToString(); var issuccess = obj == "1"; if (issuccess) { Log.Info("本次获取UTC时间点为:{0} 插入数据库成功!".FormatWith(datetime)); } else { Log.Error("本次获取UTC时间点为:{0} 插入数据库失败!".FormatWith(datetime)); } return(issuccess); } catch (Exception ex) { Log.Exception(ex); } return(false); }
const int errortype = 2; //-运费接口错误 /// <summary> /// 获取需要更新的运单 /// </summary> /// <returns></returns> public static List <VenderInfoPackageRequest> GetUpdatePriceWayBillList(string lastUpdateTime) { DbUtility dbUtility = new SqlDbUtility(_lmsCon); DataTable dt = dbUtility.ExecuteData("exec P_GetBatchFreightCostWayBillNumberList N'" + _status + "',N'" + lastUpdateTime + "'"); var list = new List <VenderInfoPackageRequest>(); if (dt != null && dt.Rows.Count > 0) { Log.Info("LMS需要更新成本价运单总数是" + dt.Rows.Count); for (int i = 0; i < dt.Rows.Count; i++) { var v = new VenderInfoPackageRequest(); for (int j = 0; j < dt.Columns.Count; j++) { switch (dt.Columns[j].ColumnName) { case "VenderCode": v.VenderCode = dt.Rows[i][j].ToString(); break; case "CountryCode": v.CountryCode = dt.Rows[i][j].ToString(); break; case "WayBillNumber": v.WayBillNumber = dt.Rows[i][j].ToString(); break; case "PackageRequest": if (string.IsNullOrWhiteSpace(dt.Rows[i][j].ToString())) { continue; } v.Packages = SerializeUtil.DeserializeFromXml <List <VenderPackageRequest> >(dt.Rows[i][j].ToString()); break; case "OutShippingMethodID": v.ShippingMethodId = Int32.Parse(dt.Rows[i][j].ToString()); break; case "GoodsTypeID": v.ShippingTypeId = Int32.Parse(dt.Rows[i][j].ToString()); break; case "CustomerID": v.CustomerId = Guid.Parse(dt.Rows[i][j].ToString()); break; case "EnableTariffPrepay": v.EnableTariffPrepay = bool.Parse(dt.Rows[i][j].ToString()); break; } } list.Add(v); } } Log.Info("LMS需要更新成本价运单获取完毕!"); return(list); }
/// <summary> /// 获取欧洲专线平邮需要自定义跟踪信息的单号 /// </summary> /// <returns></returns> public static List <B2CForeCastLogs> GetB2CForeCastLogs() { Log.Info("开始获取欧洲专线平邮需要自定义跟踪信息的单号"); string sql = @"WITH kk AS ( SELECT WayBillNumber,EventLocation,EventContent FROM dbo.B2CForeCastLogs WHERE IsOkJob=4 ), ll AS ( SELECT b.WayBillNumber,b.EventDate FROM dbo.B2CForeCastLogs b WHERE EXISTS(SELECT 1 FROM kk WHERE kk.WayBillNumber=b.WayBillNumber) AND EventCode=10 ),hh AS ( SELECT WayBillNumber FROM B2CForeCastLogs d WHERE EXISTS(SELECT 1 FROM kk WHERE kk.WayBillNumber=d.WayBillNumber) AND EventCode=11 ) SELECT kk.WayBillNumber,kk.EventLocation,ll.EventDate,kk.EventContent FROM kk LEFT JOIN ll ON ll.WayBillNumber = kk.WayBillNumber WHERE ll.EventDate IS NOT NULL AND NOT EXISTS(SELECT 1 FROM hh WHERE hh.WayBillNumber=kk.WayBillNumber)" ; DbUtility dbUtility = new SqlDbUtility(_TrackCon); var list = new List <B2CForeCastLogs>(); DataTable dt = dbUtility.ExecuteData(sql); if (dt != null && dt.Rows.Count > 0) { Log.Info("获取欧洲专线平邮需要自定义跟踪信息的单号记录总数是" + dt.Rows.Count); for (int i = 0; i < dt.Rows.Count; i++) { var v = new B2CForeCastLogs(); for (int j = 0; j < dt.Columns.Count; j++) { switch (dt.Columns[j].ColumnName) { case "WayBillNumber": v.WayBillNumber = dt.Rows[i][j].ToString(); break; case "EventLocation": v.EventLocation = dt.Rows[i][j].ToString(); break; case "EventDate": v.EventDate = DateTime.Parse(dt.Rows[i][j].ToString()); break; case "EventContent": v.EventContent = dt.Rows[i][j].ToString(); break; } } list.Add(v); } } Log.Info("完成获取欧洲专线平邮需要自定义跟踪信息的单号"); return(list); }
/// <summary> /// 外部跟踪信息插入B2C预报记录表 /// </summary> public static bool OutInsertB2CForeCastLogs() { Log.Info("LMS开始把外部跟踪信息插入B2C预报记录"); DbUtility dbUtility = new SqlDbUtility(_TrackCon); var obj = dbUtility.ExecuteScalar("exec P_InsertB2CForeCastLogs"); Log.Info("LMS完成把外部跟踪信息插入B2C预报记录"); return(obj.ToString() == "1"); }
/// <summary> /// 插入B2C预报记录表 /// </summary> /// <param name="totalPackageNumber">总包号</param> /// <param name="registeredShippingMethodId">欧洲专线挂号运输方式ID</param> /// <param name="mailShippingMethodId">欧洲专线平邮运输方式ID</param> public static void InsertB2CForeCastLogs(string totalPackageNumber, int registeredShippingMethodId, int mailShippingMethodId) { Log.Info("LMS开始插入总包号为:{0} 的B2C预报记录".FormatWith(totalPackageNumber)); DbUtility dbUtility = new SqlDbUtility(_lmsCon); dbUtility.ExecuteNonQuery("exec P_TotalPackageNumberCreatedLog {0},{1},{2}", totalPackageNumber, registeredShippingMethodId, mailShippingMethodId); Log.Info("LMS完成插入总包号为:{0} 的B2C预报记录".FormatWith(totalPackageNumber)); }
/// <summary> /// 获取需要生成出账单的账单号 /// </summary> /// <returns></returns> public static List <ReceivingBill> GetCreateOutBillList() { DbUtility dbUtility = new SqlDbUtility(_lmsCon); DataTable dt = dbUtility.ExecuteData("select ReceivingBillID,CustomerCode,CustomerName,ReceivingBillDate,ReceivingBillAuditor,BillStartTime,BillEndTime,ISNULL(Search,0) Search from ReceivingBills where Status=1"); var list = new List <ReceivingBill>(); if (dt != null && dt.Rows.Count > 0) { Log.Info("LMS需要生成账单的账单号总数是" + dt.Rows.Count); for (int i = 0; i < dt.Rows.Count; i++) { var v = new ReceivingBill(); for (int j = 0; j < dt.Columns.Count; j++) { switch (dt.Columns[j].ColumnName) { case "ReceivingBillID": v.ReceivingBillID = dt.Rows[i][j].ToString(); break; case "CustomerCode": v.CustomerCode = dt.Rows[i][j].ToString(); break; case "CustomerName": v.CustomerName = dt.Rows[i][j].ToString(); break; case "ReceivingBillDate": v.ReceivingBillDate = dt.Rows[i][j].ToString(); break; case "ReceivingBillAuditor": v.ReceivingBillAuditor = dt.Rows[i][j].ToString(); break; case "BillStartTime": v.BillStartTime = dt.Rows[i][j].ToString(); break; case "BillEndTime": v.BillEndTime = dt.Rows[i][j].ToString(); break; case "Search": v.Search = Int32.Parse(dt.Rows[i][j].ToString()); break; } } list.Add(v); } } Log.Info("LMS需要生成账单的账单号获取完毕!"); return(list); }
/// <summary> /// 提交顺丰错误 /// </summary> /// <param name="wayBillNumber">运单号</param> /// <param name="failureMessage">错误原因</param> public static bool SubmitFailure(string wayBillNumber, string failureMessage) { Log.Info("运单号{0}提交顺丰失败,原因:{1}".FormatWith(wayBillNumber, failureMessage)); if (string.IsNullOrWhiteSpace(wayBillNumber)) { return(false); } DbUtility dbUtility = new SqlDbUtility(_lmsCon); var obj = dbUtility.ExecuteScalar("exec P_CreateNlPostAbnormalWayBill {0},{1}", wayBillNumber, failureMessage); return(obj.ToString() == "1"); }
/// <summary> /// 当配置 /// </summary> /// <param name="model"></param> public static void InTotalPackageTraceInfo(TotalPackageTraceInfoModel model) { Log.Info("LMS开始插入总包号为:{0} 的总包号跟踪信息,事件码:{1}".FormatWith(model.TotalPackageNumber, model.TraceEventCode)); DbUtility dbUtility = new SqlDbUtility(_lmsCon); dbUtility.ExecuteNonQuery(@"INSERT INTO TotalPackageTraceInfos ([TotalPackageNumber],[TraceEventCode],[TraceEventTime],[TraceEventAddress] ,[CreatedBy],[LastUpdatedBy],[TraceEventContent]) VALUES({0},{1},{2},{3},{4},{5},{6})", model.TotalPackageNumber, model.TraceEventCode, model.TraceEventTime, model.TraceEventAddress, model.CreatedBy, model.CreatedBy, ""); Log.Info("LMS完成插入总包号为:{0} 的总包号跟踪信息,事件码:{1}".FormatWith(model.TotalPackageNumber, model.TraceEventCode)); }
/// <summary> /// 获取需要运行增加跟踪信息的总单号 /// </summary> /// <returns></returns> public static List <TotalPackageTraceInfoModel> GetTotalPackageTraceInfo() { DbUtility dbUtility = new SqlDbUtility(_lmsCon); DataTable dt = dbUtility.ExecuteData( @" select ID,TotalPackageNumber,TraceEventCode,TraceEventTime,TraceEventAddress,CreatedBy from TotalPackageTraceInfos tp where IsJob=0 and TraceEventTime<=GETDATE() AND EXISTS(SELECT 1 FROM TotalPackageInfos ti WHERE ti.TotalPackageNumber=tp.TotalPackageNumber AND ti.CreatedOn>'" + StartDate + "')"); var list = new List <TotalPackageTraceInfoModel>(); if (dt != null && dt.Rows.Count > 0) { Log.Info("LMS总包号编辑时间记录总数是" + dt.Rows.Count); for (int i = 0; i < dt.Rows.Count; i++) { var v = new TotalPackageTraceInfoModel(); for (int j = 0; j < dt.Columns.Count; j++) { switch (dt.Columns[j].ColumnName) { case "TotalPackageNumber": v.TotalPackageNumber = dt.Rows[i][j].ToString(); break; case "TraceEventCode": v.TraceEventCode = Int32.Parse(dt.Rows[i][j].ToString()); break; case "TraceEventTime": v.TraceEventTime = DateTime.Parse(dt.Rows[i][j].ToString()); break; case "TraceEventAddress": v.TraceEventAddress = dt.Rows[i][j].ToString(); break; case "CreatedBy": v.CreatedBy = dt.Rows[i][j].ToString(); break; case "ID": v.ID = Int32.Parse(dt.Rows[i][j].ToString()); break; } } list.Add(v); } } Log.Info("LMS总包号编辑时间记录获取完毕!"); return(list); }
/// <summary> /// 同步运输方式 /// </summary> /// <param name="shippingMethodId"></param> /// <param name="shippingMethodTypeId"></param> /// <param name="enabled"></param> public static void SynchronousShippingMethod(int shippingMethodId, int shippingMethodTypeId, bool enabled) { Log.Info(string.Format("开始同步运输方式ID:{0}", shippingMethodId)); try { DbUtility dbUtility = new SqlDbUtility(_lmsCon); dbUtility.ExecuteNonQuery("exec P_SynchronousShippingMethod {0},{1},{2}", shippingMethodId, shippingMethodTypeId, enabled?1:0); } catch (Exception ex) { Log.Exception(ex); } Log.Info(string.Format("完成同步运输方式ID:{0}", shippingMethodId)); }
/// <summary> /// 修改运单表没有指定发货渠道的荷兰小包 /// </summary> /// <returns></returns> public static void UpdateOutShippingMethod() { Log.Info("开始指定顺丰荷兰小包出仓渠道"); string sql = @"UPDATE w SET w.OutShippingMethodID='" + _NLPOSTShippingMethodID + @"',w.VenderCode='" + _NLPOSTVenderCode + @"', w.LastUpdatedOn=GETDATE(),w.LastUpdatedBy='system' FROM dbo.WayBillInfos w WHERE w.VenderCode IS NULL AND OutShippingMethodID IS NULL AND EXISTS( SELECT 1 FROM dbo.NetherlandsParcelResponses n WHERE w.WayBillNumber=n.WayBillNumber AND n.Status=2)" ; DbUtility dbUtility = new SqlDbUtility(_lmsCon); dbUtility.ExecuteNonQuery(sql); Log.Info("完成指定顺丰荷兰小包出仓渠道"); }
/// <summary> /// 修改运单表没有指定发货渠道的俄罗斯 /// </summary> public static void UpdateOutShippingMethod() { Log.Info("开始指定顺E宝出仓渠道"); string sql = @"UPDATE w SET w.OutShippingMethodID=w.InShippingMethodID,w.VenderCode='" + _LithuaniaVenderCode + @"', w.LastUpdatedOn=GETDATE(),w.LastUpdatedBy='system' FROM dbo.WayBillInfos w WHERE w.VenderCode IS NULL AND OutShippingMethodID IS NULL AND EXISTS( SELECT 1 FROM dbo.LithuaniaInfos n WHERE w.WayBillNumber=n.WayBillNumber AND n.Status=2)" ; DbUtility dbUtility = new SqlDbUtility(_lmsCon); dbUtility.ExecuteNonQuery(sql); Log.Info("完成指定顺E宝出仓渠道"); }
/// <summary> /// B2CForeCastLogs外部信息插入LMS的InTrackingLogInfos /// </summary> public static void TrackInfoInsertLms() { Log.Info("开始插入LMS的InTrackingLogInfos"); try { DbUtility dbUtility = new SqlDbUtility(TrackCon); dbUtility.ExecuteNonQuery("P_B2CInsertLMSInTrackingLogInfos"); } catch (Exception ee) { Log.Exception(ee); } Log.Info("完成插入LMS的InTrackingLogInfos"); }
/// <summary> /// 插入备份数据库 /// </summary> /// <param name="bill"></param> /// <param name="list"></param> /// <returns></returns> public static bool InsertBackUp(ReceivingBill bill, List <BillModel> list) { var result = false; Log.Info("LMS开始插入备份数据库账单号为:{0}".FormatWith(bill.ReceivingBillID)); const string insertReceivingBills = @"INSERT INTO [LMS_DB_Financial].[dbo].[ReceivingBills] ([ReceivingBillID],[CustomerCode],[CustomerName] ,[ReceivingBillDate],[ReceivingBillAuditor],[BillStartTime],[BillEndTime]) VALUES({0},{1},{2},{3},{4},{5},{6})"; const string insertReceivingBillInfos = @"INSERT INTO [ReceivingBillInfos] ([WayBillNumber],[ReceivingBillID],[CustomerOrderNumber],[CustomerName] ,[CustomerCode],[ReceivingDate],[TrackingNumber],[CountryName] ,[ShippingMethodName],[SettleWeight],[Weight],[PackageNumber] ,[FeeDetail],[TotalFee]) VALUES({0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13})"; const string xml = "<FeeDetails><Freight>{0}</Freight><FuelCharge>{1}</FuelCharge><Register>{2}</Register><Surcharge>{3}</Surcharge><TariffPrepayFee>{4}</TariffPrepayFee><SpecialFee>{5}</SpecialFee><RemoteAreaFee>{6}</RemoteAreaFee></FeeDetails>"; try { DbUtility dbUtility = new SqlDbUtility(_lmsfinCon); using (var transaction = new TransactionScope()) { dbUtility.ExecuteNonQuery(insertReceivingBills, bill.ReceivingBillID, bill.CustomerCode, bill.CustomerName, bill.ReceivingBillDate, bill.ReceivingBillAuditor, bill.BillStartTime, bill.BillEndTime); list.ForEach( p => dbUtility.ExecuteNonQuery(insertReceivingBillInfos, p.WayBillNumber, bill.ReceivingBillID, p.CustomerOrderNumber, bill.CustomerName, bill.CustomerCode, p.InStorageCreatedOn, p.TrackingNumber, p.ChineseName, p.InShippingMethodName, p.SettleWeight, p.Weight, p.CountNumber, xml.FormatWith(p.Freight, p.FuelCharge, p.Register, p.Surcharge, p.TariffPrepayFee, p.SpecialFee, p.RemoteAreaFee), p.Freight + p.FuelCharge + p.Register + p.Surcharge + p.TariffPrepayFee + p.SpecialFee)); transaction.Complete(); } result = true; } catch (Exception ex) { Log.Exception(ex); } Log.Info("LMS完成插入备份数据库账单号为:{0}".FormatWith(bill.ReceivingBillID)); return(result); }
/// <summary> /// 获取批次号 /// </summary> /// <returns></returns> public static string GetSequenceNumber() { try { DbUtility dbUtility = new SqlDbUtility(_lmsCon); object obj = dbUtility.ExecuteScalar("exec P_CreateSequenceNumber N'EU',N'1'"); if (obj != null) { return(obj.ToString()); } } catch (Exception ex) { Log.Exception(ex); } return(string.Empty); }
/// <summary> /// 插入内部跟踪信息 /// </summary> /// <param name="model"></param> public static bool InsertInTrackingLogInfo(TotalPackageTraceInfoModel model, string shippingMethodConfig) { var result = false; Log.Info("LMS开始插入总包号为:{0} 的内部信息".FormatWith(model.TotalPackageNumber)); DbUtility dbUtility = new SqlDbUtility(_lmsCon); var obj = dbUtility.ExecuteScalar("exec P_TotalPackageNumberJob {0},{1}", model.ID, shippingMethodConfig); if (obj != null && obj.ToString() == "1") { dbUtility.ExecuteNonQuery( "UPDATE TotalPackageTraceInfos SET IsJob=1,LastUpdatedOn=GETDATE() WHERE ID={0}", model.ID); result = true; } Log.Info("LMS完成插入总包号为:{0} 的内部信息".FormatWith(model.TotalPackageNumber)); return(result); }
/// <summary> /// 提交顺E宝成功 /// </summary> /// <param name="model"></param> /// <returns></returns> public static bool SubmitSuccess(SfOrderResponse model) { Log.Info("运单号{0},提交顺E宝成功".FormatWith(model.OrderId)); if (model == null) { return(false); } if (model.OrderId.IsNullOrWhiteSpace()) { return(false); } DbUtility dbUtility = new SqlDbUtility(_lmsCon); var obj = dbUtility.ExecuteScalar("exec P_CreateLithuaniaSuccessWayBill {0},{1},{2},{3},{4},{5},{6},{7},{8},{9}", model.OrderId, _LithuaniaVenderCode, model.MailNo, model.OriginCode ?? "", model.DestCode ?? "", model.AgentMailNo ?? "", model.Remark ?? "", 2, model.FilterResult ?? "", model.TrackNumber ?? ""); return(obj.ToString() == "1"); }
/// <summary> /// 更新错误日记 /// </summary> /// <param name="waybillnumber"></param> /// <param name="errorbody"></param> public static void UpdateJobErrorLog(string waybillnumber, string errorbody) { try { var iscorrect = 0; if (string.IsNullOrWhiteSpace(errorbody)) { iscorrect = 1; } DbUtility dbUtility = new SqlDbUtility(_lmsCon); dbUtility.ExecuteNonQuery("exec P_JobErrorLog {0},{1},{2},{3},{4},{5}", waybillnumber, jobtype, errortype, errorbody ?? "", "system", iscorrect); } catch (Exception ex) { Log.Exception(ex); } }
/// <summary> /// 提交顺丰成功 /// </summary> /// <param name="model"></param> /// <returns></returns> public static bool SubmitSuccess(NetherlandsParcelModel model) { Log.Info("运单号{0},提交顺丰成功".FormatWith(model.WayBillNumber)); if (model == null) { return(false); } if (model.WayBillNumber.IsNullOrWhiteSpace()) { return(false); } model.Status = 2; DbUtility dbUtility = new SqlDbUtility(_lmsCon); var obj = dbUtility.ExecuteScalar("exec P_CreateNlPostSuccessWayBill {0},{1},{2},{3},{4},{5},{6},{7},{8}", model.WayBillNumber, Int32.Parse(_NLPOSTShippingMethodID), _NLPOSTVenderCode, model.MailNo, model.OriginCode ?? "", model.DestCode ?? "", model.AgentMailNo, model.Remark ?? "", model.Status); return(obj.ToString() == "1"); }
/// <summary> /// 修改已生成订单状态 /// </summary> /// <param name="receivingBillId"></param> /// <returns></returns> public static bool UpdateReceivingBillStatus(string receivingBillId) { Log.Info("LMS开始修改账单号为:{0}出账单状态".FormatWith(receivingBillId)); var result = false; try { DbUtility dbUtility = new SqlDbUtility(_lmsCon); int obj = dbUtility.ExecuteNonQuery("update ReceivingBills set Status=2 where ReceivingBillID='" + receivingBillId + "' and Status=1"); result = obj > 0; } catch (Exception ex) { Log.Exception(ex); } Log.Info("LMS完成修改账单号为:{0}出账单状态".FormatWith(receivingBillId)); return(result); }
/// <summary> /// 更新欧洲专线平邮自定义跟踪信息单号的状态为完成 /// </summary> public static void UpdateCustomeIsOkJob() { Log.Info("开始更新欧洲专线平邮自定义跟踪信息单号的状态为完成"); string sql = @"WITH kk AS ( SELECT WayBillNumber,IsOkJob,LastUpdatedOn FROM dbo.B2CForeCastLogs WHERE IsOkJob=4 ),hh AS ( SELECT WayBillNumber FROM B2CForeCastLogs d WHERE EXISTS(SELECT 1 FROM kk WHERE kk.WayBillNumber=d.WayBillNumber) AND EventCode=11 ) UPDATE kk SET IsOkJob=1,LastUpdatedOn=GETDATE() FROM kk WHERE EXISTS(SELECT 1 FROM hh WHERE hh.WayBillNumber=kk.WayBillNumber)" ; DbUtility dbUtility = new SqlDbUtility(_TrackCon); dbUtility.ExecuteNonQuery(sql); Log.Info("完成更新欧洲专线平邮自定义跟踪信息单号的状态为完成"); }
/// <summary> /// 获取需要提交到B2C的运单号 /// </summary> /// <returns></returns> public static List <string> GetSubmitWayBillNumber() { var list = new List <string>(); try { string sql = @"SELECT WayBillNumber FROM dbo.B2CPreAlertLogs WHERE Status=1"; DbUtility dbUtility = new SqlDbUtility(_lmsCon); DataTable dt = dbUtility.ExecuteData(sql); if (dt != null && dt.Rows.Count > 0) { Log.Info("LMS获取需要提交到B2C的运单总数是" + dt.Rows.Count); for (int i = 0; i < dt.Rows.Count; i++) { for (int j = 0; j < dt.Columns.Count; j++) { if (dt.Columns[j].ColumnName != "WayBillNumber") { continue; } if (!string.IsNullOrWhiteSpace(dt.Rows[i][j].ToString())) { list.Add(dt.Rows[i][j].ToString().Trim()); } } } } Log.Info("LMS获取需要提交到B2C的运单完毕!"); } catch (Exception ex) { Log.Exception(ex); } return(list); }
internal SqlServerExpressionParser( SqlDbUtility dbUtility ) { _dbUtility = dbUtility; }
/// <summary> /// 根据出账单号获取账单信息 /// </summary> /// <param name="receivingBillId"></param> /// <returns></returns> public static List <BillModel> GetExportReceivingBill(string receivingBillId) { Log.Info("LMS开始获取账单号为:{0}的账单信息".FormatWith(receivingBillId)); DbUtility dbUtility = new SqlDbUtility(_lmsCon); DataTable dt = dbUtility.ExecuteData("exec P_ExportReceivingBill N'" + receivingBillId + "'"); var list = new List <BillModel>(); if (dt != null && dt.Rows.Count > 0) { Log.Info("LMS开始获取账单号为:{0}的账单信息总数是{1}".FormatWith(receivingBillId, dt.Rows.Count)); for (int i = 0; i < dt.Rows.Count; i++) { var v = new BillModel(); for (int j = 0; j < dt.Columns.Count; j++) { switch (dt.Columns[j].ColumnName) { case "ReceivingExpenseId": v.ReceivingExpenseId = Int32.Parse(dt.Rows[i][j].ToString()); break; case "CustomerOrderNumber": v.CustomerOrderNumber = dt.Rows[i][j].ToString(); break; case "WayBillNumber": v.WayBillNumber = dt.Rows[i][j].ToString(); break; case "CreatedOn": v.CreatedOn = DateTime.Parse(dt.Rows[i][j].ToString()); break; case "InStorageCreatedOn": v.InStorageCreatedOn = DateTime.Parse(dt.Rows[i][j].ToString()); break; case "TrackingNumber": v.TrackingNumber = dt.Rows[i][j].ToString(); break; case "ChineseName": v.ChineseName = dt.Rows[i][j].ToString(); break; case "InShippingMethodName": v.InShippingMethodName = dt.Rows[i][j].ToString(); break; case "InShippingMethodId": v.InShippingMethodId = Int32.Parse(dt.Rows[i][j].ToString()); break; case "InStorageID": v.InStorageID = dt.Rows[i][j].ToString(); break; case "SettleWeight": v.SettleWeight = decimal.Parse(dt.Rows[i][j].ToString()); break; case "Weight": v.Weight = decimal.Parse(dt.Rows[i][j].ToString()); break; case "CountNumber": v.CountNumber = Int32.Parse(dt.Rows[i][j].ToString()); break; case "Freight": v.Freight = decimal.Parse(dt.Rows[i][j].ToString()); break; case "FuelCharge": v.FuelCharge = decimal.Parse(dt.Rows[i][j].ToString()); break; case "Register": v.Register = decimal.Parse(dt.Rows[i][j].ToString()); break; case "Surcharge": v.Surcharge = decimal.Parse(dt.Rows[i][j].ToString()); break; case "TariffPrepayFee": v.TariffPrepayFee = decimal.Parse(dt.Rows[i][j].ToString()); break; case "SpecialFee": v.SpecialFee = decimal.Parse(dt.Rows[i][j].ToString()); break; case "RemoteAreaFee": v.RemoteAreaFee = decimal.Parse(dt.Rows[i][j].ToString()); break; } } list.Add(v); } } Log.Info("LMS完成获取账单号为:{0}的账单信息".FormatWith(receivingBillId)); return(list); }
/// <summary> /// 插入客户资金记录表 /// </summary> /// <param name="bill"></param> /// <param name="list"></param> /// <returns></returns> public static bool CreateCustomerAmountRecords(ReceivingBill bill, List <BillModel> list) { var result = false; Log.Info("LMS开始插入客户资金记录客户为:{1},账单号为:{0}".FormatWith(bill.ReceivingBillID, bill.CustomerCode)); try { DbUtility dbUtility = new SqlDbUtility(_lmsCon); using (var transaction = new TransactionScope()) { list.ForEach(p => { object obj; if (p.Freight > 0) { obj = dbUtility.ExecuteScalar( "Exec P_JobCustomerAmountRecord {0},{1},{2},{3},{4},{5},{6},{7}", bill.CustomerCode, p.WayBillNumber, p.InStorageID, 2, 3, p.Freight, "运单号:{0}扣运费".FormatWith(p.WayBillNumber), "system"); if (obj.ToString() != "1") { throw new ArgumentException("该运单号\"{0}\"生成运费扣费记录失败!".FormatWith(p.WayBillNumber)); } } else if (p.Freight < 0) { obj = dbUtility.ExecuteScalar( "Exec P_JobCustomerAmountRecord {0},{1},{2},{3},{4},{5},{6},{7}", bill.CustomerCode, p.WayBillNumber, p.InStorageID, 3, 3, p.Freight * -1, "运单号:{0}退运费".FormatWith(p.WayBillNumber), "system"); if (obj.ToString() != "1") { throw new ArgumentException("该运单号\"{0}\"生成运费退费记录失败!".FormatWith(p.WayBillNumber)); } } if (p.Register > 0) { obj = dbUtility.ExecuteScalar( "Exec P_JobCustomerAmountRecord {0},{1},{2},{3},{4},{5},{6},{7}", bill.CustomerCode, p.WayBillNumber, p.InStorageID, 2, 4, p.Register, "运单号:{0}扣挂号费".FormatWith(p.WayBillNumber), "system"); if (obj.ToString() != "1") { throw new ArgumentException("该运单号\"{0}\"生成挂号费扣费记录失败!".FormatWith(p.WayBillNumber)); } } else if (p.Register < 0) { obj = dbUtility.ExecuteScalar( "Exec P_JobCustomerAmountRecord {0},{1},{2},{3},{4},{5},{6},{7}", bill.CustomerCode, p.WayBillNumber, p.InStorageID, 3, 4, p.Register * -1, "运单号:{0}退挂号费".FormatWith(p.WayBillNumber), "system"); if (obj.ToString() != "1") { throw new ArgumentException("该运单号\"{0}\"生成挂号费退费记录失败!".FormatWith(p.WayBillNumber)); } } if (p.FuelCharge > 0) { obj = dbUtility.ExecuteScalar( "Exec P_JobCustomerAmountRecord {0},{1},{2},{3},{4},{5},{6},{7}", bill.CustomerCode, p.WayBillNumber, p.InStorageID, 2, 5, p.FuelCharge, "运单号:{0}扣燃油费".FormatWith(p.WayBillNumber), "system"); if (obj.ToString() != "1") { throw new ArgumentException("该运单号\"{0}\"生成燃油费扣费记录失败!".FormatWith(p.WayBillNumber)); } } else if (p.FuelCharge < 0) { obj = dbUtility.ExecuteScalar( "Exec P_JobCustomerAmountRecord {0},{1},{2},{3},{4},{5},{6},{7}", bill.CustomerCode, p.WayBillNumber, p.InStorageID, 3, 5, p.FuelCharge * -1, "运单号:{0}退燃油费".FormatWith(p.WayBillNumber), "system"); if (obj.ToString() != "1") { throw new ArgumentException("该运单号\"{0}\"生成燃油费退费记录失败!".FormatWith(p.WayBillNumber)); } } if (p.Surcharge + p.SpecialFee > 0) { obj = dbUtility.ExecuteScalar( "Exec P_JobCustomerAmountRecord {0},{1},{2},{3},{4},{5},{6},{7}", bill.CustomerCode, p.WayBillNumber, p.InStorageID, 2, 2, p.Surcharge + p.SpecialFee, "运单号:{0}扣附加费".FormatWith(p.WayBillNumber), "system"); if (obj.ToString() != "1") { throw new ArgumentException("该运单号\"{0}\"生成附加费扣费记录失败!".FormatWith(p.WayBillNumber)); } } else if (p.Surcharge + p.SpecialFee < 0) { obj = dbUtility.ExecuteScalar( "Exec P_JobCustomerAmountRecord {0},{1},{2},{3},{4},{5},{6},{7}", bill.CustomerCode, p.WayBillNumber, p.InStorageID, 3, 2, (p.Surcharge + p.SpecialFee) * -1, "运单号:{0}退附加费".FormatWith(p.WayBillNumber), "system"); if (obj.ToString() != "1") { throw new ArgumentException("该运单号\"{0}\"生成附加费退费记录失败!".FormatWith(p.WayBillNumber)); } } if (p.TariffPrepayFee > 0) { obj = dbUtility.ExecuteScalar( "Exec P_JobCustomerAmountRecord {0},{1},{2},{3},{4},{5},{6},{7}", bill.CustomerCode, p.WayBillNumber, p.InStorageID, 2, 6, p.TariffPrepayFee, "运单号:{0}扣关税预付服务费".FormatWith(p.WayBillNumber), "system"); if (obj.ToString() != "1") { throw new ArgumentException("该运单号\"{0}\"生成关税预付服务费扣费记录失败!".FormatWith(p.WayBillNumber)); } } else if (p.TariffPrepayFee < 0) { obj = dbUtility.ExecuteScalar( "Exec P_JobCustomerAmountRecord {0},{1},{2},{3},{4},{5},{6},{7}", bill.CustomerCode, p.WayBillNumber, p.InStorageID, 3, 6, p.TariffPrepayFee * -1, "运单号:{0}退关税预付服务费".FormatWith(p.WayBillNumber), "system"); if (obj.ToString() != "1") { throw new ArgumentException("该运单号\"{0}\"生成关税预付服务费退费记录失败!".FormatWith(p.WayBillNumber)); } } if (p.RemoteAreaFee > 0) { obj = dbUtility.ExecuteScalar( "Exec P_JobCustomerAmountRecord {0},{1},{2},{3},{4},{5},{6},{7}", bill.CustomerCode, p.WayBillNumber, p.InStorageID, 2, 12, p.RemoteAreaFee, "运单号:{0}扣偏远附加服务费".FormatWith(p.WayBillNumber), "system"); if (obj.ToString() != "1") { throw new ArgumentException("该运单号\"{0}\"生成偏远附加服务费扣费记录失败!".FormatWith(p.WayBillNumber)); } } else if (p.RemoteAreaFee < 0) { obj = dbUtility.ExecuteScalar( "Exec P_JobCustomerAmountRecord {0},{1},{2},{3},{4},{5},{6},{7}", bill.CustomerCode, p.WayBillNumber, p.InStorageID, 3, 12, p.RemoteAreaFee * -1, "运单号:{0}退偏远附加服务费".FormatWith(p.WayBillNumber), "system"); if (obj.ToString() != "1") { throw new ArgumentException("该运单号\"{0}\"生成偏远附加服务费退费记录失败!".FormatWith(p.WayBillNumber)); } } //if (p.SpecialFee <= 0) return; //obj = // dbUtility.ExecuteScalar( // "Exec P_JobCustomerAmountRecord {0},{1},{2},{3},{4},{5},{6},{7}", // bill.CustomerCode, // p.WayBillNumber, p.InStorageID, 2, 7, p.SpecialFee, // "运单号:{0}扣特殊费".FormatWith(p.WayBillNumber), "system"); //if (obj.ToString() != "1") //{ // throw new ArgumentException("该运单号\"{0}\"生成特殊费扣费记录失败!".FormatWith(p.WayBillNumber)); //} }); dbUtility.ExecuteNonQuery("update ReceivingBills set Search=100 where ReceivingBillID='" + bill.ReceivingBillID + "' and Status=1");//限制重复扣费 transaction.Complete(); } result = true; } catch (Exception ex) { Log.Exception(ex); } Log.Info("LMS完成插入客户资金记录客户为:{1},账单号为:{0}".FormatWith(bill.ReceivingBillID, bill.CustomerCode)); return(result); }
static void Main( string[] args ) { var dbUtility = new SqlDbUtility( "Data Source=113.98.255.70,130;Initial Catalog=TEST_FOCALPRICE_DB;Persist Security Info=True;User ID=focal_db;Password=focal_db?;Pooling=True" ); var result = dbUtility.Entities<P>( "SELECT ProductName, UnitPrice FROM Products WHERE SKU LIKE 'EP%'" ); }
/// <summary> /// 查询该运单号的数据 /// </summary> /// <param name="wayBillNumber"></param> /// <returns></returns> public static WayBillInfoModel GetWayBillInfoModel(string wayBillNumber) { Log.Info("开始获取运单号为{0}的数据".FormatWith(wayBillNumber)); var model = new WayBillInfoModel(); string sql = @"SELECT w.WayBillNumber,w.CustomerOrderNumber, ISNULL(s.ShippingFirstName,'')+' '+ ISNULL(s.ShippingLastName,'') ConsigneeName,w.OutShippingMethodID ShippingMethodID ,ISNULL(s.ShippingCompany,'') ShippingCompany,s.ShippingAddress,s.ShippingCity,s.ShippingState,s.ShippingZip,s.ShippingPhone,c.ThreeLetterISOCode CountryCode, ISNULL(w.Weight,0) Weight,ISNULL(w.Length,1) Length,ISNULL(w.Width,1) Width,ISNULL(w.Height,1) Height FROM dbo.WayBillInfos w LEFT JOIN dbo.ShippingInfos s ON s.ShippingInfoID = w.ShippingInfoID LEFT JOIN dbo.Countries c ON c.CountryCode = w.CountryCode WHERE w.WayBillNumber='" + wayBillNumber + "'"; try { DbUtility dbUtility = new SqlDbUtility(_lmsCon); DataTable dt = dbUtility.ExecuteData(sql); if (dt == null || dt.Rows.Count == 0) { return(null); } for (int j = 0; j < dt.Columns.Count; j++) { switch (dt.Columns[j].ColumnName) { case "WayBillNumber": model.WayBillNumber = dt.Rows[0][j].ToString(); break; case "CustomerOrderNumber": model.CustomerOrderNumber = dt.Rows[0][j].ToString(); break; case "ConsigneeName": model.ConsigneeName = dt.Rows[0][j].ToString(); break; case "ShippingCompany": model.CompanyName = dt.Rows[0][j].ToString(); break; case "ShippingAddress": model.Street = dt.Rows[0][j].ToString(); break; case "ShippingCity": model.CityOrTown = dt.Rows[0][j].ToString(); break; case "ShippingState": model.StateOrProvince = dt.Rows[0][j].ToString(); break; case "ShippingZip": model.ZIPCode = dt.Rows[0][j].ToString(); break; case "ShippingPhone": model.PhoneNumber = dt.Rows[0][j].ToString(); break; case "CountryCode": model.CountryCode = dt.Rows[0][j].ToString(); break; case "Weight": model.Weight = decimal.Parse(dt.Rows[0][j].ToString()); break; case "Length": model.Length = decimal.Parse(dt.Rows[0][j].ToString()); break; case "Width": model.Width = decimal.Parse(dt.Rows[0][j].ToString()); break; case "Height": model.Height = decimal.Parse(dt.Rows[0][j].ToString()); break; case "ShippingMethodID": model.ShippingMethodID = Int32.Parse(dt.Rows[0][j].ToString()); break; //case "ApplicationInfos": // model.ApplicationInfos = SerializeUtil.DeserializeFromXml<List<ApplicationInfoModel>>(dt.Rows[0][j].ToString()); // break; } } sql = @"SELECT ISNULL(a.Remark,'') SKUCode,a.ApplicationName SKUDescription,a.HSCode, ISNULL(a.Qty,1) Quantity,ISNULL(a.UnitPrice,0)*ISNULL(a.Qty,1) Price,a.ProductUrl ImageUrl FROM dbo.ApplicationInfos a WHERE a.WayBillNumber='" + wayBillNumber + "' AND a.IsDelete=0"; DataTable adt = dbUtility.ExecuteData(sql); if (adt != null || adt.Rows.Count > 0) { for (int i = 0; i < adt.Rows.Count; i++) { var app = new ApplicationInfoModel(); for (int j = 0; j < adt.Columns.Count; j++) { switch (adt.Columns[j].ColumnName) { case "SKUCode": app.SKUCode = adt.Rows[i][j].ToString(); break; case "SKUDescription": app.SKUDescription = adt.Rows[i][j].ToString(); break; case "HSCode": app.HSCode = adt.Rows[i][j].ToString(); break; case "Quantity": app.Quantity = Int32.Parse(adt.Rows[i][j].ToString()); break; case "Price": app.Price = decimal.Parse(adt.Rows[i][j].ToString()); break; case "ImageUrl": app.ImageUrl = adt.Rows[i][j].ToString(); break; } } model.ApplicationInfos.Add(app); } } } catch (Exception ex) { Log.Exception(ex); } Log.Info("完成获取运单号为{0}的数据".FormatWith(wayBillNumber)); return(model); }
/// <summary> /// 获取配置 /// </summary> /// <returns></returns> public static Dictionary <int, List <ShippingMethodConfig> > GetShippingMethodConfig(List <ShippingMethodModel> list) { var dictionary = new Dictionary <int, List <ShippingMethodConfig> >(); //var list = GetShippingMethodsByIds(); if (list.Any()) { DbUtility dbUtility = new SqlDbUtility(_lmsCon); var obj = dbUtility.ExecuteScalar("select ConfigurationValue from SystemConfigurations where ConfigurationKey='" + _EUDD + "'"); if (obj != null) { TextReader tr = new StringReader(obj.ToString()); var xml = XDocument.Load(tr); var text = from t in xml.Descendants("ShippingMethod") select new { ShippingMethodCode = t.Element("ShippingMethodCode").Value, Events = t.Elements("Event").ToList() }; if (text.Any()) { foreach (var s in text) { if (s.Events.Any()) { var shippingmentod = list.SingleOrDefault(p => p.Code == s.ShippingMethodCode); if (shippingmentod != null && shippingmentod.ShippingMethodId > 0) { foreach (var x in s.Events) { int eventCode = Int32.Parse(x.Element("EventCode").Value); var config = new List <ShippingMethodConfig>(); var element = x.Elements().Where(e => e.Attributes().Any(p => p.Name == "CountryCode")); if (element.Any()) { var a = element.Select(e => e.Attribute("CountryCode").Value).Distinct(); config.AddRange(a.Select(c => new ShippingMethodConfig() { CountryCode = c, EventContent = element.SingleOrDefault(e => e.Attribute("CountryCode").Value == c && e.Name == "EventContent").Value, ShippingMethodId = shippingmentod.ShippingMethodId, Address = element.SingleOrDefault(e => e.Attribute("CountryCode").Value == c && e.Name == "EventAddress").Value, OffsetHours = Int32.Parse(element.SingleOrDefault(e => e.Attribute("CountryCode").Value == c && e.Name == "EventAddress").Attribute("OffsetHours").Value), AddHours = Int32.Parse(element.SingleOrDefault(e => e.Attribute("CountryCode").Value == c && e.Name == "EventAddress").Attribute("AddHours").Value) })); } var other = x.Elements().Where(e => e.Attributes().All(p => p.Name != "CountryCode") && e.Name != "EventCode"); config.Add(new ShippingMethodConfig() { CountryCode = "Other", EventContent = other.SingleOrDefault(e => e.Name == "EventContent").Value, ShippingMethodId = shippingmentod.ShippingMethodId, Address = other.SingleOrDefault(e => e.Name == "EventAddress").Value, OffsetHours = Int32.Parse(other.SingleOrDefault(e => e.Name == "EventAddress").Attribute("OffsetHours").Value), AddHours = Int32.Parse(other.SingleOrDefault(e => e.Name == "EventAddress").Attribute("AddHours") != null?other.SingleOrDefault(e => e.Name == "EventAddress").Attribute("AddHours").Value:"0") }); if (dictionary.ContainsKey(eventCode)) { dictionary[eventCode].AddRange(config); } else { dictionary.Add(eventCode, config); } } } } } } } } return(dictionary); }