using log4net; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Quartz; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Text; using DSWeb.Common; using JobAutoCreateFee.Model; using System.Security.Policy; using System.Xml.Linq; using System.Diagnostics.Eventing.Reader; namespace JobCreateFee { public class JobD7CoscoFee : IJob { private ILog log = LogManager.GetLogger(typeof(JobD7CoscoFee)); public void Execute(IJobExecutionContext context) { log.Debug($"Execute开始"); try { string connStr = context.JobDetail.JobDataMap.GetString("ConnectString"); string reqUrl = context.JobDetail.JobDataMap.GetString("CoscoReqFeeUrl"); string UserKey = context.JobDetail.JobDataMap.GetString("UserKey"); string UserSecret = context.JobDetail.JobDataMap.GetString("UserSecret"); string WebAccount = context.JobDetail.JobDataMap.GetString("WebAccount"); string WebPassword = context.JobDetail.JobDataMap.GetString("WebPassword"); string CompanyCode = context.JobDetail.JobDataMap.GetString("CompanyCode"); string BsSql = context.JobDetail.JobDataMap.GetString("BsSql"); string FEECUSTNAME = context.JobDetail.JobDataMap.GetString("FEECUSTNAME"); string ENTEROPERATOR = context.JobDetail.JobDataMap.GetString("ENTEROPERATOR"); string FEESTATUS = context.JobDetail.JobDataMap.GetString("FEESTATUS"); int reqTimeout = Convert.ToInt32(context.JobDetail.JobDataMap.GetString("RequestTimeout")); long ts = DataTableToJsonHelper.ConvertDateTimeToInt(DateTime.Now); log.Debug($"获取数据"); using (SqlConnection dbcon = new SqlConnection(connStr)) { var strSql = new StringBuilder(); strSql.Append(BsSql); SqlCommand cmd = new SqlCommand(); cmd.CommandText = strSql.ToString(); cmd.CommandTimeout = 120000; //要加这一句 cmd.Connection = dbcon; SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataTable table = new DataTable(); adapter.Fill(table); var feebacklist = new List(); if (table.Rows.Count > 0) { log.Debug($"数据{table.Rows.Count}条"); var FeeTemplateDetailList = GetFeeTemplate(FEECUSTNAME, dbcon); foreach (DataRow row in table.Rows) { var MBLNO = row["MBLNO"].ToString(); var BSNO = row["BSNO"].ToString(); var ETD = row["ETD"].ToString(); if (!string.IsNullOrEmpty(MBLNO) && MBLNO.Length > 4) { MBLNO = MBLNO.Substring(4); } var JsonCoscoFeeSend = new JsonCoscoFeeSend(); JsonCoscoFeeSend.userKey = UserKey; JsonCoscoFeeSend.userSecret = UserSecret; JsonCoscoFeeSend.companyCode = CompanyCode; JsonCoscoFeeSend.webAccount = WebAccount; JsonCoscoFeeSend.webPassword = WebPassword; JsonCoscoFeeSend.bno = MBLNO; JsonCoscoFeeSend.summaryFlag = false; var sendstr = JsonConvert.SerializeObject(JsonCoscoFeeSend); log.Debug($"发送包:{sendstr}"); //发送请求数据 string rtn = WebRequestHelper.DoPost(reqUrl, sendstr, reqTimeout * 1000); log.Debug($"数据返回:{rtn}"); var objRtn = JsonConvert.DeserializeAnonymousType(rtn, new { code = "", msg = "" }); if (objRtn.code=="200") { var objreturn= JsonConvert.DeserializeObject(rtn); var returnlist = objreturn.data; if (returnlist != null && returnlist.Count != 0) { var feelist = new List(); var unitlist = GetFeeUnit(BSNO, dbcon); var isctnnum = 1; var findunitlist = unitlist.FindAll(x=>x.ISCTN); if (findunitlist != null && findunitlist.Count >= 2) { isctnnum = 2; } string sql = ""; try { foreach (var returndata in returnlist) { if (!GETINVNOISUSE(BSNO, returndata.itemUuid, dbcon)) { if (Convert.ToDecimal(returndata.totalAmount.Trim())!=0) { var price = returndata.totalAmount; if (price == "") price = "0"; var curr = returndata.currencyUnit; if (curr == "CNY") curr = "RMB"; var FEENAME = GETFEENAME(returndata.feeName.Replace("'", "").Replace(",", "").Replace(".", ""), dbcon, curr); decimal exrate = 1; var AMOUNT = returndata.totalAmount; var COUNT = "1"; if (curr != "RMB") { exrate = GetUsdExrate(dbcon, curr, ETD); } price = price.Replace(",", ""); if (string.IsNullOrEmpty(FEENAME)) { var feeback = new feeback(); feeback.ReceiveId = returndata.bno; feeback.Success = false; feeback.Reason = $"提单号:{MBLNO},编号:{BSNO},费用名称:{returndata.feeName} 未匹配"; feebacklist.Add(feeback); log.Debug($"提单号:{MBLNO},编号:{BSNO},费用名称:{returndata.feeName} 未匹配"); } else { bool isadd = false; var FindFeeTemplateDetailList = FeeTemplateDetailList.FindAll(x=>x.FEENAME==FEENAME); if (FindFeeTemplateDetailList != null&& FindFeeTemplateDetailList.Count!=0) { foreach (var FeeTemplateDetail in FindFeeTemplateDetailList) { if (FeeTemplateDetail.ISCTN) { var addfeelist = new List(); decimal ttlamount = 0; if (isctnnum != 2) { var unit = unitlist.Find(x => x.UNIT == FeeTemplateDetail.UNIT); if (unit != null) { var newfee = new MsChFee(); newfee.FA_ID = returndata.itemUuid; newfee.Currency = curr; newfee.CustomerName = FEECUSTNAME; newfee.BSNO = BSNO; newfee.ExChangerate = exrate; newfee.FeeName = FEENAME; newfee.Quantity = unit.QUANTITY; newfee.Unit = FeeTemplateDetail.UNIT; if (FeeTemplateDetail.UNITPRICE == 0) { newfee.UnitPrice = Convert.ToDecimal(returndata.totalAmount) / newfee.Quantity; } else { newfee.UnitPrice = FeeTemplateDetail.UNITPRICE; } newfee.Amount = Convert.ToDecimal(returndata.totalAmount); newfee.FeeEName = returndata.feeName.Replace("'", "").Replace(",", "").Replace(".", ""); // addfeelist.Add(newfee); ttlamount = ttlamount + newfee.Amount; feelist.Add(newfee); isadd = true; } } else { log.Debug($"提单号:{MBLNO},编号:{BSNO},费用名称:{returndata.feeName} 存在多箱型无法匹配"); } //} //if (ttlamount == Convert.ToDecimal(returndata.totalAmount)) //{ //} //else //{ // var feeback = new feeback(); // feeback.ReceiveId = returndata.bno; // feeback.Success = false; // feeback.Reason = $"提单号:{MBLNO},编号:{BS.BSNO},费用金额:{ttlamount} 未匹配{returndata.totalAmount}"; // feebacklist.Add(feeback); // log.Debug($"提单号:{MBLNO},编号:{BS.BSNO},费用金额:{ttlamount} 未匹配{returndata.totalAmount}"); //} } else { var newfee = new MsChFee(); newfee.FA_ID = returndata.itemUuid; newfee.Currency = curr; newfee.CustomerName = FEECUSTNAME; newfee.BSNO = BSNO; newfee.ExChangerate = exrate; newfee.FeeName = FEENAME; newfee.Quantity = 1; newfee.Unit = FeeTemplateDetail.UNIT; newfee.UnitPrice = Convert.ToDecimal(returndata.totalAmount); newfee.Amount = Convert.ToDecimal(returndata.totalAmount); newfee.FeeEName = returndata.feeName.Replace("'", "").Replace(",", "").Replace(".", ""); feelist.Add(newfee); isadd = true; } } } else { var newfee = new MsChFee(); newfee.FA_ID = returndata.itemUuid; newfee.Currency = curr; newfee.CustomerName = FEECUSTNAME; newfee.BSNO = BSNO; newfee.ExChangerate = exrate; newfee.FeeName = FEENAME; newfee.Quantity = 1; newfee.Unit = "票"; newfee.UnitPrice =Convert.ToDecimal(returndata.totalAmount); newfee.Amount= Convert.ToDecimal(returndata.totalAmount); newfee.FeeEName = returndata.feeName.Replace("'", "").Replace(",", "").Replace(".", ""); feelist.Add(newfee); isadd = true; } if (!isadd) { var feeback = new feeback(); feeback.ReceiveId = returndata.bno; feeback.Success = false; feeback.Reason = $"提单号:{MBLNO},编号:{BSNO},费用名称:{returndata.feeName} 金额:{returndata.totalAmount}未匹配添加"; feebacklist.Add(feeback); log.Debug($"提单号:{MBLNO},编号:{BSNO},费用名称:{returndata.feeName} 金额:{returndata.totalAmount} 未匹配添加"); } } } } } } catch (Exception e) { log.Debug($"记录插入错误:{e.Message}" + sql); } try { if (feelist != null && feelist.Count != 0) { dbcon.Open(); foreach (var fee in feelist) { sql = "INSERT INTO ch_fee(GID, BSNO, FEETYPE, FEENAME,CUSTOMERTYPE, CUSTOMERNAME, UNIT, UNITPRICE, QUANTITY, AMOUNT, CURRENCY,"; sql = sql + "EXCHANGERATE, REASON, REMARK, COMMISSIONRATE,ENTEROPERATOR, ENTERDATE,ISOPEN, ISADVANCEDPAY, SORT, FEESTATUS, FEEFRT,CARGO_GID,"; sql = sql + "TAXRATE,NOTAXAMOUNT,ACCTAXRATE,LINENUM,TAXUNITPRICE,MODIFIEDUSER,MODIFIEDTIME,WMSOUTBSNO,PREAMOUNT,ISINVOICE,INPUTMODE,LOCALCURR,MANAGER,ISACC,FEEDESCRIPTION,DELIVERYNO,SETTLEMENT,INVOICE,ORDERAMOUNT,ORDERINVOICE,ORDERSETTLEMENT,ORDERINVSETTLEMENT)"; sql = sql + "VALUES "; sql = sql + "('" + Guid.NewGuid().ToString() + "','" + fee.BSNO + "',2,'" + fee.FeeName + "','船公司','" + fee.CustomerName + "','" + fee.Unit + "'"; sql = sql + "," + fee.UnitPrice + "," + fee.Quantity + "," + fee.Amount + ",'" + fee.Currency + "'," + fee.ExChangerate + ",'','',0"; sql = sql + ",'" + ENTEROPERATOR + "',GETDATE(),0,0,10," + FEESTATUS + ",'',''"; sql = sql + ",0," + fee.Amount + ",0,0," + fee.UnitPrice + ",'" + ENTEROPERATOR + "',GETDATE(),'',0,0,'COSCO账单回写','RMB','',0,'" + fee.FeeEName + "'"; sql = sql + ",'" + fee.FA_ID + "',0,0,0,0,0,0)"; // log.Debug($"更新语句:{sql}"); SqlCommand cmd2 = new SqlCommand(sql, dbcon); cmd2.ExecuteNonQuery(); } dbcon.Close(); } } catch (Exception ex) { log.Debug($"插入费用出错:{ex.Message+sql}"); } } } else { log.Debug($"数据返回错误:{rtn}"); } } } } } catch (Exception ex) { log.Error(ex.Message); log.Error(ex.StackTrace); } } static public D7OPSEAE GETBSNO(string MBLNO, SqlConnection dbcon,string BsSql) { var OPSEAE = new D7OPSEAE(); var strSql = new StringBuilder(); strSql.Append("SELECT BSNO,BSSTATUS,FEESTATUS,ETD from op_seae where BSNO='" + MBLNO + "' and ISNULL(ISCANCEL,'')<>'1'"); if (!string.IsNullOrEmpty(BsSql)) strSql.Append(" and "+BsSql); SqlDataAdapter adapter = new SqlDataAdapter(strSql.ToString(), dbcon); DataTable table = new DataTable(); adapter.Fill(table); var BSNO = ""; if (table.Rows.Count > 0) { foreach (DataRow row in table.Rows) { OPSEAE.BSNO = row["BSNO"].ToString(); OPSEAE.FEESTATUS = Convert.ToBoolean(row["FEESTATUS"].ToString()); OPSEAE.BSSTATUS = Convert.ToBoolean(row["BSSTATUS"].ToString()); OPSEAE.ETD = Convert.ToString(row["ETD"].ToString()); } } return OPSEAE; } static public bool GETINVNOISUSE(string BSNO,string INVNO, SqlConnection dbcon) { var result = false; var strSql = new StringBuilder(); strSql.Append("SELECT COUNT(1) CT from ch_fee where BSNO='" + BSNO + "' AND DELIVERYNO='" + INVNO + "'"); SqlDataAdapter adapter = new SqlDataAdapter(strSql.ToString(), dbcon); DataTable table = new DataTable(); adapter.Fill(table); if (table.Rows.Count > 0) { foreach (DataRow row in table.Rows) { if (Convert.ToInt32(row["CT"].ToString()) != 0) result = true; } } return result; } static public List GetFeeTemplate(string FA_ID, SqlConnection dbcon) { var headList = new List(); var strSql = new StringBuilder(); strSql.Append("SELECT GID,TEMPLATEID,FEENAME,CUSTOMERNAME,CLIENT,UNIT"); strSql.Append(",CURRENCY,UNITPRICE,REMARK,SORT,CREATEUSER,CREATETIME,EXCHANGERATE,ISCTN,TAXRATE,TAXUNITPRICE,TAX,ACCTAXRATE"); strSql.Append(",(select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=96201 and EnumValueID=code_fee_templatedetail_auto.CLIENT) as CLIENTREF"); strSql.Append(",(case ISCTN when 1 then '是' else '否' end) as ISCTNREF,ISINVOICE,ISADVANCEDPAY,FEEFRT,SALECORP,FEEDESCRIPTION,UNITPRICEDESCRPTION "); strSql.Append(" from code_fee_templatedetail_auto WHERE CUSTOMERNAME='" + FA_ID + "'"); strSql.Append(" order by SORT "); SqlDataAdapter adapter = new SqlDataAdapter(strSql.ToString(), dbcon); DataTable table = new DataTable(); adapter.Fill(table); if (table.Rows.Count > 0) { foreach (DataRow row in table.Rows) { var data = new CodeFeeTemplateDetailAuto(); data.GID = Convert.ToString(row["GID"]); data.TEMPLATEID = Convert.ToString(row["TEMPLATEID"]); if (row["UNITPRICE"] != DBNull.Value) data.UNITPRICE = Convert.ToDecimal(row["UNITPRICE"]); if (row["EXCHANGERATE"] != DBNull.Value) data.EXCHANGERATE = Convert.ToDecimal(row["EXCHANGERATE"]); if (row["TAXRATE"] != DBNull.Value) data.TAXRATE = Convert.ToDecimal(row["TAXRATE"]); if (row["TAX"] != DBNull.Value) data.TAX = Convert.ToDecimal(row["TAX"]); data.FEENAME = Convert.ToString(row["FEENAME"]); data.FEEDESCRIPTION = Convert.ToString(row["FEEDESCRIPTION"]); data.CUSTOMERNAME = Convert.ToString(row["CUSTOMERNAME"]); if (row["CLIENT"] != DBNull.Value) data.CLIENT = Convert.ToString(row["CLIENT"]); data.CLIENTREF = Convert.ToString(row["CLIENTREF"]); data.UNIT = Convert.ToString(row["UNIT"]); data.CURRENCY = Convert.ToString(row["CURRENCY"]); data.REMARK = Convert.ToString(row["REMARK"]); if (row["SORT"] != DBNull.Value) data.SORT = Convert.ToInt16(row["SORT"]); data.FEEFRT = Convert.ToString(row["FEEFRT"]); data.CREATEUSER = Convert.ToString(row["CREATEUSER"]); data.CREATETIME = Convert.ToString(row["CREATETIME"]); if (row["ISCTN"] != DBNull.Value) data.ISCTN = Convert.ToBoolean(row["ISCTN"]); data.ISCTNREF = Convert.ToString(row["ISCTNREF"]); if (row["ISINVOICE"] != DBNull.Value) data.ISINVOICE = Convert.ToBoolean(row["ISINVOICE"]); if (row["ISADVANCEDPAY"] != DBNull.Value) data.ISADVANCEDPAY = Convert.ToBoolean(row["ISADVANCEDPAY"]); data.SALECORP = Convert.ToString(row["SALECORP"]); if (row["TAXUNITPRICE"] != DBNull.Value) data.TAXUNITPRICE = Convert.ToDecimal(row["TAXUNITPRICE"]); if (row["ACCTAXRATE"] != DBNull.Value) data.ACCTAXRATE = Convert.ToDecimal(row["ACCTAXRATE"]); data.UNITPRICEDESCRPTION = Convert.ToString(row["UNITPRICEDESCRPTION"]); headList.Add(data); } } return headList; } static public List GetFeeUnit(string bsno, SqlConnection dbcon) { var strSql = new StringBuilder(); if (!string.IsNullOrEmpty(bsno)) { strSql.Append("SELECT PKGS,KGS,CBM,KGS AS NETWEIGHT,"); strSql.Append("'' as SIZE,'' AS CTN,0 AS CTNNUM,0 AS TEU,'' AS CTNALL"); strSql.Append(" from op_seae "); strSql.Append(" where bsno='" + bsno + "'"); strSql.Append(" union "); strSql.Append("SELECT 0 AS PKGS,0 AS KGS,0 AS CBM,0 AS NETWEIGHT,"); strSql.Append("P.SIZE,P.CTN,SUM(P.CTNNUM) AS CTNNUM,SUM(P.TEU) AS TEU,P.CTNALL"); strSql.Append(" from OP_CTN P "); strSql.Append(" where p.bsno='" + bsno + "'"); strSql.Append(" GROUP BY P.SIZE,P.CTN,P.CTNALL order by PKGS desc"); } else { strSql.Append("SELECT top 1 1 PKGS,0 KGS,0 CBM,0 AS NETWEIGHT,"); strSql.Append("'' as SIZE,'' AS CTN,0 AS CTNNUM,0 AS TEU,'' AS CTNALL"); strSql.Append(" from op_seae "); strSql.Append(" union "); strSql.Append("SELECT distinct 0 AS PKGS,0 AS KGS,0 AS CBM,0 AS NETWEIGHT,"); strSql.Append("P.SIZE,P.CTN,0 AS CTNNUM,0 AS TEU,P.CTNALL"); strSql.Append(" from OP_CTN P "); } return SetSeaeCtnUnitData(strSql, dbcon); } private static List SetSeaeCtnUnitData(StringBuilder strSql,SqlConnection dbcon) { var bodyList = new List(); decimal TEUNUM; TEUNUM = 0; decimal PKGS; PKGS = 0; decimal KGS; KGS = 0; decimal CBM; CBM = 0; decimal NETWEIGHT = 0; decimal CTNNUM; CTNNUM = 0; int isfirst = 0; SqlDataAdapter adapter = new SqlDataAdapter(strSql.ToString(), dbcon); DataTable table = new DataTable(); adapter.Fill(table); if (table.Rows.Count > 0) { foreach (DataRow row in table.Rows) { #region Set DB data to Object if (isfirst == 0) { var data = new MsFeeUnitD7(); data.SUNIT = "P-单票"; data.UNIT = "单票"; data.QUANTITY = 1; data.ISCTN = false; bodyList.Add(data); if (row["PKGS"] != DBNull.Value) PKGS = Convert.ToDecimal(row["PKGS"]); if (row["KGS"] != DBNull.Value) KGS = Convert.ToDecimal(row["KGS"]); if (row["CBM"] != DBNull.Value) CBM = Convert.ToDecimal(row["CBM"]); if (row["NETWEIGHT"] != DBNull.Value) NETWEIGHT = Convert.ToDecimal(row["NETWEIGHT"]); var kgsdata = new MsFeeUnitD7(); kgsdata.SUNIT = "Z-重量"; kgsdata.UNIT = "重量"; kgsdata.QUANTITY = KGS; kgsdata.ISCTN = false; bodyList.Add(kgsdata); var cbmdata = new MsFeeUnitD7(); cbmdata.SUNIT = "C-尺码"; cbmdata.UNIT = "尺码"; cbmdata.QUANTITY = CBM; cbmdata.ISCTN = false; bodyList.Add(cbmdata); var pkgsdata = new MsFeeUnitD7(); pkgsdata.SUNIT = "J-件数"; pkgsdata.UNIT = "件数"; pkgsdata.QUANTITY = PKGS; pkgsdata.ISCTN = false; bodyList.Add(pkgsdata); var netkgsdata = new MsFeeUnitD7(); netkgsdata.SUNIT = "N-净重"; netkgsdata.UNIT = "净重"; netkgsdata.QUANTITY = NETWEIGHT; netkgsdata.ISCTN = false; bodyList.Add(netkgsdata); var Bdata = new MsFeeUnitD7(); Bdata.SUNIT = "B-BILL"; Bdata.UNIT = "BILL"; Bdata.QUANTITY = 1; Bdata.ISCTN = false; bodyList.Add(Bdata); var ton = KGS / 1000; if (ton > CBM) { var jfd = Math.Round(KGS / 1000, 3, MidpointRounding.AwayFromZero); if (jfd < 1) jfd = 1; var feetondata = new MsFeeUnitD7(); feetondata.SUNIT = "JF-计费吨"; feetondata.UNIT = "计费吨"; feetondata.QUANTITY = jfd; feetondata.ISCTN = false; bodyList.Add(feetondata); } else { var jfd = CBM; if (jfd < 1) jfd = 1; var feetondata = new MsFeeUnitD7(); feetondata.SUNIT = "JF-计费吨"; feetondata.UNIT = "计费吨"; feetondata.QUANTITY = jfd; feetondata.ISCTN = false; bodyList.Add(feetondata); } var jzton = Math.Round(NETWEIGHT / 1000, 3, MidpointRounding.AwayFromZero); var feejztondata = new MsFeeUnitD7(); feejztondata.SUNIT = "JZD-净重吨"; feejztondata.UNIT = "净重吨"; feejztondata.QUANTITY = jzton; feejztondata.ISCTN = false; bodyList.Add(feejztondata); } if (Convert.ToString(row["CTNALL"]) != "") { var ctndata = new MsFeeUnitD7(); ctndata.SUNIT = Convert.ToString(row["CTNALL"]); ctndata.UNIT = Convert.ToString(row["CTNALL"]); if (row["CTNNUM"] != DBNull.Value) ctndata.QUANTITY = Convert.ToDecimal(row["CTNNUM"]); CTNNUM = CTNNUM + ctndata.QUANTITY; if (row["TEU"] != DBNull.Value) TEUNUM = TEUNUM + Convert.ToDecimal(row["TEU"]); ctndata.ISCTN = true; bodyList.Add(ctndata); } isfirst = isfirst + 1; #endregion } var teudata = new MsFeeUnitD7(); teudata.SUNIT = "TEU"; teudata.UNIT = "TEU"; teudata.QUANTITY = TEUNUM; teudata.ISCTN = false; bodyList.Add(teudata); var ctnalldata = new MsFeeUnitD7(); ctnalldata.SUNIT = "自然箱"; ctnalldata.UNIT = "自然箱"; ctnalldata.QUANTITY = CTNNUM; ctnalldata.ISCTN = false; bodyList.Add(ctnalldata); var data9 = new MsFeeUnitD7(); data9.SUNIT = "T-天"; data9.UNIT = "天"; data9.QUANTITY = 0; data9.ISCTN = false; bodyList.Add(data9); var data10 = new MsFeeUnitD7(); data10.SUNIT = "G-个"; data10.UNIT = "个"; data10.QUANTITY = 0; data10.ISCTN = false; bodyList.Add(data10); var data11 = new MsFeeUnitD7(); data11.SUNIT = "S-小时"; data11.UNIT = "小时"; data11.QUANTITY = 0; data11.ISCTN = false; bodyList.Add(data11); var data12 = new MsFeeUnitD7(); data12.SUNIT = "S-票"; data12.UNIT = "票"; data12.QUANTITY = 0; data12.ISCTN = false; bodyList.Add(data12); var data13 = new MsFeeUnitD7(); data13.SUNIT = "D-吨"; data13.UNIT = "吨"; data13.QUANTITY = 0; data13.ISCTN = false; bodyList.Add(data13); } return bodyList; } static public string GETUNIT(string UNIT,string CTNALL) { var BSNO = UNIT; if (BSNO == "FIX") BSNO = "单票"; if (BSNO == "UNI") BSNO = CTNALL; return BSNO.Replace("'", "''"); } static public string GETFEENAME(string FEECODE, SqlConnection dbcon, string curr) { var strSql = new StringBuilder(); strSql.Append("select top 1 [FEENAME] from code_fee_edi where [FEEENAME]='" + FEECODE + "'"); SqlDataAdapter adapter = new SqlDataAdapter(strSql.ToString(), dbcon); DataTable table = new DataTable(); adapter.Fill(table); var FEENAME = ""; if (table.Rows.Count > 0) { foreach (DataRow row in table.Rows) { FEENAME = row["FEENAME"].ToString(); } } if (string.IsNullOrEmpty(FEENAME)) { //if (curr == "USD") //{ // FEENAME = "海运费"; //} else FEENAME =""; } return FEENAME; } static public List GetFeeList(string constr, SqlConnection dbcon) { var feelist = new List(); var strSql = new StringBuilder(); strSql.Append("select GID,BSNO from ch_fee where " + constr); SqlDataAdapter adapter = new SqlDataAdapter(strSql.ToString(), dbcon); DataTable table = new DataTable(); adapter.Fill(table); if (table.Rows.Count > 0) { foreach (DataRow row in table.Rows) { var fee = new jffee(); fee.ch_id = row["GID"].ToString(); fee.bsno = row["BSNO"].ToString(); feelist.Add(fee); } } return feelist; } static public decimal GetUsdExrate(SqlConnection dbcon,string curr,string ETD) { decimal usdexrate = 0; var startdate = ETD; if (string.IsNullOrEmpty(startdate)) startdate = DateTime.Now.ToString("yyyy-MM-dd"); if (curr == "USD") { var strSql = new StringBuilder(); strSql.Append("select VALUE from currency_exchange where STARTTIME<='"+ startdate + "' and ENDTIME>='"+ startdate + "'"); strSql.Append(" and CURRENCYID in (select GID from code_currency where CODENAME='"+curr+"') "); SqlDataAdapter adapter = new SqlDataAdapter(strSql.ToString(), dbcon); DataTable table = new DataTable(); adapter.Fill(table); if (table.Rows.Count > 0) { foreach (DataRow row in table.Rows) { usdexrate = Convert.ToDecimal(row["VALUE"].ToString()); } } } if (usdexrate == 0) { SqlDataAdapter adapter2 = new SqlDataAdapter("select DEFAULTRATE from code_currency where CODENAME='" + curr + "'", dbcon); DataTable table2 = new DataTable(); adapter2.Fill(table2); if (table2.Rows.Count > 0) { foreach (DataRow row in table2.Rows) { usdexrate = Convert.ToDecimal(row["DEFAULTRATE"].ToString()); } } } return usdexrate; } } public class JsonCoscoFeeSend { public string userKey { get; set; } public string userSecret { get; set; } public string webAccount { get; set; } public string webPassword { get; set; } public string bno { get; set; } public string companyCode { get; set; } public bool summaryFlag { get; set; } } public class JsonCoscoFeeRec { public string bno { get; set; } public string companyName { get; set; } public string feeName { get; set; } public string currencyUnit { get; set; } public string totalAmount { get; set; } public string notInvoicedAmount { get; set; } public string notPaymentAmount { get; set; } public string tradeType { get; set; } public string departureDate { get; set; } public string feeConfirmDate { get; set; } public string itemUuid { get; set; } } public class JsonCoscoRec { public string code { get; set; } public string msg { get; set; } public List data { get; set; } } //public class JsonFeeResponse //{ // public string ReceiveId { get; set; } // public string MBLNO { get; set; } // public string INVOICE_NO { get; set; } // public string CANCEL_NO { get; set; } // public string TOTAL_AMOUNT { get; set; } // public List DATA { get; set; } //} //public class DJYFEE //{ // public string FEECODE { get; set; } // public string AMOUNT { get; set; } // public string AMOUNT_USD { get; set; } // public string CURRENCY { get; set; } // public string CTNALL { get; set; } // public string TAX { get; set; } // public string COUNT { get; set; } // public string UNIT { get; set; } // public string RATE { get; set; } //} //public class feeback //{ // public string ReceiveId { get; set; } // public bool Success { get; set; } // public string Reason { get; set; } //} //public class jffee //{ // public string ch_id { get; set; } // public string bsno { get; set; } //} }