You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DS7/JobAutoCreateFee/JobGetMhData.cs

312 lines
19 KiB
C#

using log4net;
using Newtonsoft.Json;
using Quartz;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using JobAutoCreateFee.Model;
namespace JobCreateFee
{
public class JobGetMhData : IJob
{
private ILog log = LogManager.GetLogger(typeof(JobGetMhData));
public void Execute(IJobExecutionContext context)
{
string connStr = context.JobDetail.JobDataMap.GetString("ConnectString");
string MhconnStr = context.JobDetail.JobDataMap.GetString("MhConnectString");
string D6querySql = context.JobDetail.JobDataMap.GetString("D6QuerySql");
using (SqlConnection dbcon = new SqlConnection(connStr))
{
var strSql = new StringBuilder();
strSql.Append(D6querySql);
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 CtnCodeList = GetCtnCodeList(dbcon);
var ServiceCodeList = GetServiceCodeList(dbcon);
var FrtCodeList = GetFrtCodeList(dbcon);
if (table.Rows.Count > 0)
{
foreach (DataRow row in table.Rows)
{
var MBLNO = row["主提单号"].ToString();
var BSNO = row["编号"].ToString();
var BSTYPE = row["BSTYPE"].ToString();
if (!string.IsNullOrEmpty(MBLNO))
{
using (SqlConnection dbmh = new SqlConnection(MhconnStr))
{
var strSqlMh = new StringBuilder();
strSqlMh.Append("exec spGetBookingId '"+ MBLNO + "' ");
SqlCommand cmdMh = new SqlCommand();
cmdMh.CommandText = strSqlMh.ToString();
cmdMh.CommandTimeout = 120000; //要加这一句
cmdMh.Connection = dbmh;
SqlDataAdapter adapterMh = new SqlDataAdapter(cmdMh);
DataTable tableMh = new DataTable();
adapterMh.Fill(tableMh);
var BOOKID = "";
if (tableMh.Rows.Count > 0)
{
foreach (DataRow rowmh in tableMh.Rows)
{
BOOKID=rowmh["BookingId"].ToString();
}
}
if (!string.IsNullOrEmpty(BOOKID)) {
var strSqlMhData = new StringBuilder();
strSqlMhData.Append("exec sp_Rpt_GetBooking " + BOOKID + " ");
SqlCommand cmdMhData = new SqlCommand();
cmdMhData.CommandText = strSqlMhData.ToString();
cmdMhData.CommandTimeout = 120000; //要加这一句
cmdMhData.Connection = dbmh;
SqlDataAdapter adapterMhData = new SqlDataAdapter(cmdMhData);
DataTable tableMhData = new DataTable();
adapterMhData.Fill(tableMhData);
if (tableMhData.Rows.Count > 0)
{
var i = 1;
var cargoid = "S";
Int32 pkgs = 0;
decimal kgs= 0;
decimal cbm= 0;
string ServiceContract = "";
string Comment = "";
string Vessel = "";
string Voyage = "";
string POL = "";
string POD = "";
string TermsCode = "";
string PaymentTypeDescription = "";
string ShipperDescription = "";
string MarksNumbers = "";
string HarmonizedCode = "";
string PackageType = "";
string SHIPPER = "";
string CONSIGNEE = "";
string NOTIFYPARTY = "";
foreach (DataRow rowmhdata in tableMhData.Rows)
{
if (i == 1)
{
var isnotref = rowmhdata["IsNonOperReefer"].ToString();
if (isnotref == "0") cargoid = "R";
pkgs = pkgs + Convert.ToInt32(rowmhdata["Quantity"]);
cbm = cbm + Convert.ToDecimal(rowmhdata["Measurement"]);
kgs = kgs + Convert.ToDecimal(rowmhdata["Weight"]);
ServiceContract= rowmhdata["ServiceContract"].ToString();
Comment = rowmhdata["Comment"].ToString();
Vessel = rowmhdata["Vessel"].ToString();
Voyage = rowmhdata["Voyage"].ToString();
POL = rowmhdata["POL"].ToString();
POD = rowmhdata["POD"].ToString();
TermsCode = rowmhdata["TermsCode"].ToString();
var ServiceCode=ServiceCodeList.Find(x => x.EDICODE == TermsCode);
if (ServiceCode != null) TermsCode = ServiceCode.SERVICE;
PaymentTypeDescription = rowmhdata["PaymentTypeDescription"].ToString();
var FrtCode = FrtCodeList.Find(x => x.EDICODE == PaymentTypeDescription);
if (FrtCode != null) PaymentTypeDescription = FrtCode.FRT;
ShipperDescription = rowmhdata["ShipperDescription"].ToString();
MarksNumbers = rowmhdata["MarksNumbers"].ToString();
HarmonizedCode = rowmhdata["HarmonizedCode"].ToString();
PackageType = rowmhdata["PackageType"].ToString();
SHIPPER= rowmhdata["BLShipper"].ToString()+ Environment.NewLine + rowmhdata["BLShipperAddress"].ToString();
if (string.IsNullOrEmpty(rowmhdata["BLShipperContact"].ToString())) SHIPPER = SHIPPER + Environment.NewLine + rowmhdata["BLShipperContact"].ToString();
CONSIGNEE = rowmhdata["BLConsignee"].ToString() + Environment.NewLine + rowmhdata["BLConsigneeAddress"].ToString();
if (string.IsNullOrEmpty(rowmhdata["BLConsigneeContact"].ToString())) CONSIGNEE = CONSIGNEE + Environment.NewLine + rowmhdata["BLConsigneeContact"].ToString();
NOTIFYPARTY = rowmhdata["BLNotify1"].ToString();
if (string.IsNullOrEmpty(rowmhdata["BLNotify1Address"].ToString())) NOTIFYPARTY = NOTIFYPARTY + Environment.NewLine + rowmhdata["BLNotify1Address"].ToString();
if (string.IsNullOrEmpty(rowmhdata["BLNotify1Contact"].ToString())) NOTIFYPARTY = NOTIFYPARTY + Environment.NewLine + rowmhdata["BLNotify1Contact"].ToString();
}
var ContainerNumber = rowmhdata["ContainerNumber"].ToString();
var SealNumber = rowmhdata["SealNumber"].ToString();
var ContainerTypeCode= rowmhdata["ContainerTypeCode"].ToString();
var CtnsCount= rowmhdata["CtnsCount"].ToString();
var CtnCode = CtnCodeList.Find(x => x.EDICODE == ContainerTypeCode);
var TEU = 0;
if (ContainerTypeCode.IndexOf("20") > 0) {
TEU = 2 *Convert.ToInt32(CtnsCount);
}
if (CtnCode != null)
{
if (BSTYPE == "分单")
{
dbcon.Open();
var cmdInsertCtnSQL = "insert into t_op_ctn_fendan (AS_ID,代码,尺寸,箱型,数量,TEU,表现形式,箱号,封号,件数,包装,重量,尺码) values ("
+ "'" + BSNO + "','" + CtnCode.CTNCODE + "','" + CtnCode.CTNSIZE + "','" + CtnCode.CTNTYPE + "'," + CtnsCount + "," + TEU.ToString() + ",'" + CtnCode.CTNALL.Replace("'", "''") + "','" + ContainerNumber + "','" + SealNumber + "','" + Convert.ToString(rowmhdata["Quantity"]) + "','" + PackageType + "'," + Convert.ToString(rowmhdata["Weight"]) + "," + Convert.ToString(rowmhdata["Measurement"]) + " )";
SqlCommand cmdInsertCtn = new SqlCommand(cmdInsertCtnSQL, dbcon);
cmdInsertCtn.ExecuteNonQuery();
dbcon.Close();
}
else
{
dbcon.Open();
var cmdInsertCtnSQL = "insert into t_op_ctn (编号,代码,尺寸,箱型,数量,TEU,表现形式,箱号,封号,件数,包装,重量,尺码) values ("
+ "'" + BSNO + "','" + CtnCode.CTNCODE + "','" + CtnCode.CTNSIZE + "','" + CtnCode.CTNTYPE + "'," + CtnsCount + "," + TEU.ToString() + ",'" + CtnCode.CTNALL.Replace("'", "''") + "','" + ContainerNumber + "','" + SealNumber + "','" + Convert.ToString(rowmhdata["Quantity"]) + "','" + PackageType + "'," + Convert.ToString(rowmhdata["Weight"]) + "," + Convert.ToString(rowmhdata["Measurement"]) + " )";
SqlCommand cmdInsertCtn = new SqlCommand(cmdInsertCtnSQL, dbcon);
cmdInsertCtn.ExecuteNonQuery();
dbcon.Close();
}
}
i = i + 1;
}
var strSqlUpdateD6 = new StringBuilder();
if (BSTYPE == "分单")
{
strSqlUpdateD6.Append("update t_op_seae_assistant set 运费协议号=@ServiceContract,备注=@Comment,船名=@Vessel,航次=@Voyage,装货港=@POL");
strSqlUpdateD6.Append(",卸货港=@POD,运输条款=@TermsCode,付费方式=@PaymentTypeDescription,货物描述=@ShipperDescription,唛头=@MarksNumbers");
strSqlUpdateD6.Append(",件数=@PKGS,重量=@KGS,尺码=@CBM,运输方式=@HarmonizedCode,包装=@PackageType,件数包装=@PKGSKIND,货物重量=@GOODKGS,货物尺码=@GOODCBM");
strSqlUpdateD6.Append(",发货人代码=@SHIPPER,收货人代码=@CONSIGNEE,通知人代码=@NOTIFYPARTY where AS_ID='" + BSNO + "'");
}
else
{
strSqlUpdateD6.Append("update t_op_seae set 运费协议号=@ServiceContract,备注=@Comment,船名=@Vessel,航次=@Voyage,装货港=@POL");
strSqlUpdateD6.Append(",卸货港=@POD,运输条款=@TermsCode,付费方式=@PaymentTypeDescription,货物描述=@ShipperDescription,唛头=@MarksNumbers");
strSqlUpdateD6.Append(",件数=@PKGS,重量=@KGS,尺码=@CBM,运输方式=@HarmonizedCode,包装=@PackageType,件数包装=@PKGSKIND,货物重量=@GOODKGS,货物尺码=@GOODCBM");
strSqlUpdateD6.Append(",发货人代码=@SHIPPER,收货人代码=@CONSIGNEE,通知人代码=@NOTIFYPARTY where 编号='" + BSNO + "'");
}
dbcon.Open();
SqlCommand cmdUpdateD6 = new SqlCommand(strSqlUpdateD6.ToString(), dbcon);
cmdUpdateD6.Parameters.AddWithValue("@ServiceContract", ServiceContract);
cmdUpdateD6.Parameters.AddWithValue("@Comment", Comment);
cmdUpdateD6.Parameters.AddWithValue("@Vessel", Vessel);
cmdUpdateD6.Parameters.AddWithValue("@Voyage", Voyage);
cmdUpdateD6.Parameters.AddWithValue("@POL", POL);
cmdUpdateD6.Parameters.AddWithValue("@POD", POD);
cmdUpdateD6.Parameters.AddWithValue("@TermsCode", TermsCode);
cmdUpdateD6.Parameters.AddWithValue("@PaymentTypeDescription", PaymentTypeDescription);
cmdUpdateD6.Parameters.AddWithValue("@ShipperDescription", ShipperDescription);
cmdUpdateD6.Parameters.AddWithValue("@MarksNumbers", MarksNumbers);
cmdUpdateD6.Parameters.AddWithValue("@PKGS", pkgs);
cmdUpdateD6.Parameters.AddWithValue("@KGS", kgs);
cmdUpdateD6.Parameters.AddWithValue("@CBM", cbm);
cmdUpdateD6.Parameters.AddWithValue("@HarmonizedCode", HarmonizedCode);
cmdUpdateD6.Parameters.AddWithValue("@PackageType", PackageType);
cmdUpdateD6.Parameters.AddWithValue("@PKGSKIND", pkgs.ToString()+ PackageType);
cmdUpdateD6.Parameters.AddWithValue("@GOODKGS", kgs.ToString()+"KGS");
cmdUpdateD6.Parameters.AddWithValue("@GOODCBM", cbm.ToString()+"CBM");
cmdUpdateD6.Parameters.AddWithValue("@SHIPPER", SHIPPER);
cmdUpdateD6.Parameters.AddWithValue("@CONSIGNEE", CONSIGNEE);
cmdUpdateD6.Parameters.AddWithValue("@NOTIFYPARTY", NOTIFYPARTY);
cmdUpdateD6.ExecuteNonQuery();
dbcon.Close();
}
}
}
}
}
}
}
}
public static List<CtnTypeCode> GetCtnCodeList(SqlConnection dbcon)
{
var strSql = new StringBuilder();
strSql.Append("Select [代码],[箱型],[尺寸],[表现形式],MHEDI代码 ");
strSql.Append(" from t_code_ctn ");
var evList = new List<CtnTypeCode>();
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 evData = new CtnTypeCode();
evData.CTNCODE = Convert.ToString(row["代码"]);
evData.CTNTYPE = Convert.ToString(row["箱型"]);
evData.CTNSIZE= Convert.ToString(row["尺寸"]);
evData.CTNALL= Convert.ToString(row["表现形式"]);
evData.EDICODE = Convert.ToString(row["MHEDI代码"]);
evList.Add(evData);
}
}
return evList;
}
public static List<ServiceCode> GetServiceCodeList(SqlConnection dbcon)
{
var strSql = new StringBuilder();
strSql.Append("Select 运输条款,MHEDI代码 ");
strSql.Append(" from t_code_items ");
var evList = new List<ServiceCode>();
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 evData = new ServiceCode();
evData.SERVICE = Convert.ToString(row["运输条款"]);
evData.EDICODE = Convert.ToString(row["MHEDI代码"]);
evList.Add(evData);
}
}
return evList;
}
public static List<FrtCode> GetFrtCodeList(SqlConnection dbcon)
{
var strSql = new StringBuilder();
strSql.Append("Select 付费方式,MHEDI代码 ");
strSql.Append(" from t_code_free ");
var evList = new List<FrtCode>();
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 evData = new FrtCode();
evData.FRT = Convert.ToString(row["付费方式"]);
evData.EDICODE = Convert.ToString(row["MHEDI代码"]);
evList.Add(evData);
}
}
return evList;
}
}
}