|
|
|
@ -0,0 +1,675 @@
|
|
|
|
|
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 JobD6CoscoFee : IJob
|
|
|
|
|
{
|
|
|
|
|
private ILog log = LogManager.GetLogger(typeof(JobD6CoscoFee));
|
|
|
|
|
|
|
|
|
|
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<feeback>();
|
|
|
|
|
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<JsonCoscoRec>(rtn);
|
|
|
|
|
|
|
|
|
|
var returnlist = objreturn.data;
|
|
|
|
|
if (returnlist != null && returnlist.Count != 0)
|
|
|
|
|
{
|
|
|
|
|
var feelist = new List<MsChFee>();
|
|
|
|
|
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 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 t_ch_fee where 编号='" + BSNO + "' AND 船公司发票号='" + 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<CodeFeeTemplateDetailAuto> GetFeeTemplate(string FA_ID, SqlConnection dbcon)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var headList = new List<CodeFeeTemplateDetailAuto>();
|
|
|
|
|
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<MsFeeUnit> GetFeeUnit(string BSNO, SqlConnection dbcon)
|
|
|
|
|
{
|
|
|
|
|
decimal TEUNUM;
|
|
|
|
|
TEUNUM = 0;
|
|
|
|
|
decimal PKGS;
|
|
|
|
|
PKGS = 0;
|
|
|
|
|
decimal KGS;
|
|
|
|
|
KGS = 0;
|
|
|
|
|
decimal CBM;
|
|
|
|
|
CBM = 0;
|
|
|
|
|
decimal NETWEIGHT = 0;
|
|
|
|
|
decimal CTNNUM;
|
|
|
|
|
CTNNUM = 0;
|
|
|
|
|
|
|
|
|
|
var headList = new List<MsFeeUnit>();
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
|
|
strSql.Append("SELECT NO,PKGS,KGS,CBM,NETWEIGHT,CDP,FCDP,CTNALL,CTNNUM,TEU,0 提箱小票数");
|
|
|
|
|
|
|
|
|
|
strSql.Append(",0 超额小票数");
|
|
|
|
|
strSql.Append(",0 不超额小票数 FROM (");
|
|
|
|
|
|
|
|
|
|
strSql.Append("SELECT '1' as NO,件数 PKGS,重量 KGS,尺码 CBM,重量 AS NETWEIGHT,0 CDP,");
|
|
|
|
|
strSql.Append("0 FCDP,");
|
|
|
|
|
strSql.Append("'' as CTNALL,0 AS CTNNUM,0 AS TEU,0 提箱小票数 ");
|
|
|
|
|
strSql.Append(",isnull((select sum(数量) from t_op_ctn where 编号=t_op_seae.编号),0) 总箱数 ");
|
|
|
|
|
// strSql.Append(",isnull((select sum(ctnrCount) from t_op_txxp_log where 编号=t_op_seae.编号),0)-isnull((select sum(数量) from t_op_ctn where 编号=t_op_seae.编号),0) 超额小票数 ");
|
|
|
|
|
|
|
|
|
|
strSql.Append(" from t_op_seae ");
|
|
|
|
|
strSql.Append(" where 编号='" + BSNO + "'");
|
|
|
|
|
strSql.Append(") AS T ");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
strSql.Append(" union ");
|
|
|
|
|
strSql.Append("SELECT '2' AS NO,0 AS PKGS,0 AS KGS,0 AS CBM,0 AS NETWEIGHT,0 AS CDP,0 AS FCDP,");
|
|
|
|
|
strSql.Append("P.表现形式 CTNALL,SUM(P.数量) AS CTNNUM,SUM(P.TEU) AS TEU,0 提箱小票数,0 超额小票数,0 不超额小票数");
|
|
|
|
|
strSql.Append(" from t_op_ctn P ");
|
|
|
|
|
strSql.Append(" where p.编号='" + BSNO + "'");
|
|
|
|
|
strSql.Append(" GROUP BY P.表现形式 order by PKGS desc");
|
|
|
|
|
|
|
|
|
|
SqlDataAdapter adapter = new SqlDataAdapter(strSql.ToString(), dbcon);
|
|
|
|
|
DataTable table = new DataTable();
|
|
|
|
|
adapter.Fill(table);
|
|
|
|
|
|
|
|
|
|
var isfirst = 0;
|
|
|
|
|
if (table.Rows.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (DataRow row in table.Rows)
|
|
|
|
|
{
|
|
|
|
|
if (row["NO"].ToString() == "1")
|
|
|
|
|
{
|
|
|
|
|
var data = new MsFeeUnit();
|
|
|
|
|
data.FEEUNIT = "单票";
|
|
|
|
|
data.FEEQUANTITY = 1;
|
|
|
|
|
data.ISCTN = false;
|
|
|
|
|
headList.Add(data);
|
|
|
|
|
if (!string.IsNullOrEmpty(row["PKGS"].ToString()))
|
|
|
|
|
PKGS = Convert.ToDecimal(row["PKGS"].ToString());
|
|
|
|
|
if (!string.IsNullOrEmpty(row["KGS"].ToString()))
|
|
|
|
|
KGS = Convert.ToDecimal(row["KGS"].ToString());
|
|
|
|
|
if (!string.IsNullOrEmpty(row["CBM"].ToString()))
|
|
|
|
|
CBM = Convert.ToDecimal(row["CBM"].ToString());
|
|
|
|
|
if (!string.IsNullOrEmpty(row["NETWEIGHT"].ToString()))
|
|
|
|
|
NETWEIGHT = Convert.ToDecimal(row["NETWEIGHT"].ToString());
|
|
|
|
|
var data2 = new MsFeeUnit();
|
|
|
|
|
data2.FEEUNIT = "重量";
|
|
|
|
|
data2.FEEQUANTITY = KGS;
|
|
|
|
|
data2.ISCTN = false;
|
|
|
|
|
headList.Add(data2);
|
|
|
|
|
var data3 = new MsFeeUnit();
|
|
|
|
|
data3.FEEUNIT = "尺码";
|
|
|
|
|
data3.FEEQUANTITY = CBM;
|
|
|
|
|
data3.ISCTN = false;
|
|
|
|
|
headList.Add(data3);
|
|
|
|
|
var data4 = new MsFeeUnit();
|
|
|
|
|
data4.FEEUNIT = "件数";
|
|
|
|
|
data4.FEEQUANTITY = PKGS;
|
|
|
|
|
data4.ISCTN = false;
|
|
|
|
|
headList.Add(data4);
|
|
|
|
|
var data5 = new MsFeeUnit();
|
|
|
|
|
data5.FEEUNIT = "舱单票数";
|
|
|
|
|
data5.FEEQUANTITY = Convert.ToInt32(row["CDP"].ToString());
|
|
|
|
|
data5.ISCTN = false;
|
|
|
|
|
headList.Add(data5);
|
|
|
|
|
var data6 = new MsFeeUnit();
|
|
|
|
|
data6.FEEUNIT = "舱单分票";
|
|
|
|
|
data6.FEEQUANTITY = Convert.ToInt32(row["FCDP"].ToString());
|
|
|
|
|
data6.ISCTN = false;
|
|
|
|
|
headList.Add(data6);
|
|
|
|
|
var txxpdata = new MsFeeUnit();
|
|
|
|
|
txxpdata.FEEUNIT = "提箱小票数";
|
|
|
|
|
txxpdata.FEEQUANTITY = Convert.ToInt32(row["提箱小票数"].ToString());
|
|
|
|
|
txxpdata.ISCTN = false;
|
|
|
|
|
headList.Add(txxpdata);
|
|
|
|
|
var txxpdata2 = new MsFeeUnit();
|
|
|
|
|
txxpdata2.FEEUNIT = "超额小票数";
|
|
|
|
|
txxpdata2.FEEQUANTITY = Convert.ToInt32(row["超额小票数"].ToString());
|
|
|
|
|
txxpdata2.ISCTN = false;
|
|
|
|
|
headList.Add(txxpdata2);
|
|
|
|
|
if (Convert.ToInt32(row["不超额小票数"].ToString()) > 0)
|
|
|
|
|
{
|
|
|
|
|
var txxpdata3 = new MsFeeUnit();
|
|
|
|
|
txxpdata3.FEEUNIT = "不超额小票数";
|
|
|
|
|
txxpdata3.FEEQUANTITY = Convert.ToInt32(row["不超额小票数"].ToString());
|
|
|
|
|
txxpdata3.ISCTN = false;
|
|
|
|
|
headList.Add(txxpdata3);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//var txxpdata3 = new MsFeeUnit();
|
|
|
|
|
//txxpdata3.FEEUNIT = "不超额小票数";
|
|
|
|
|
//txxpdata3.FEEQUANTITY = Convert.ToInt32(row["不超额小票数"].ToString());
|
|
|
|
|
//headList.Add(txxpdata3);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (row["CTNALL"].ToString() != "")
|
|
|
|
|
{
|
|
|
|
|
var ctndata = new MsFeeUnit();
|
|
|
|
|
ctndata.FEEUNIT = row["CTNALL"].ToString();
|
|
|
|
|
if (!string.IsNullOrEmpty(row["CTNNUM"].ToString()))
|
|
|
|
|
ctndata.FEEQUANTITY = Convert.ToDecimal(row["CTNNUM"].ToString());
|
|
|
|
|
CTNNUM = CTNNUM + ctndata.FEEQUANTITY;
|
|
|
|
|
if (!string.IsNullOrEmpty(row["TEU"].ToString()))
|
|
|
|
|
TEUNUM = TEUNUM + Convert.ToDecimal(row["TEU"].ToString());
|
|
|
|
|
ctndata.ISCTN = true;
|
|
|
|
|
headList.Add(ctndata);
|
|
|
|
|
}
|
|
|
|
|
isfirst = 1;
|
|
|
|
|
}
|
|
|
|
|
var teudata = new MsFeeUnit();
|
|
|
|
|
teudata.FEEUNIT = "TEU";
|
|
|
|
|
teudata.FEEQUANTITY = TEUNUM;
|
|
|
|
|
teudata.ISCTN = false;
|
|
|
|
|
headList.Add(teudata);
|
|
|
|
|
var ctnalldata = new MsFeeUnit();
|
|
|
|
|
ctnalldata.FEEUNIT = "箱数";
|
|
|
|
|
ctnalldata.FEEQUANTITY = CTNNUM;
|
|
|
|
|
ctnalldata.FEEQUANTITY = CTNNUM;
|
|
|
|
|
.ISCTN = false;
|
|
|
|
|
headList.Add(ctnalldata);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return headList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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<jffee> GetFeeList(string constr, SqlConnection dbcon) {
|
|
|
|
|
var feelist = new List<jffee>();
|
|
|
|
|
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 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<DJYFEE> 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; }
|
|
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|