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.

1296 lines
76 KiB
C#

using System;
using System.Data;
using System.Collections.Generic;
using System.Text;
using Microsoft.Practices.EnterpriseLibrary.Data;
using DSWeb.Areas.CommMng.Models;
using DSWeb.Areas.Dispatch.Models;
using HcUtility.Comm;
using System.Configuration;
using DSWeb.MvcShipping.Models.MsOpSeaeEdi;
using System.Data.Common;
namespace DSWeb.Dispatch.DAL
{
public class MsOpSeaeDAL
{
#region 查询
static public List<OpSeaeModel> GetSaleDataList(string shortName, string condition = null, string sort = null, string order = null, bool hasNoFee = true)
{
var strSql = new StringBuilder();
strSql.AppendLine("SELECT BSNO,VESSEL,VOYNO,MBLNO,INVNO,ETD,ATD,CNTRTOTAL,KGS,YARD,CNTRSEALNO,CUSTOMNO,");
strSql.AppendLine("(SELECT dbo.Fun_JoinFactoryAddr(S.BSNO)) FACTORYADDR,");
strSql.AppendLine("ISNULL((SELECT TOP 1 CARGODATE FROM OP_LETTER_TRUCK WHERE BSNO=S.BSNO ORDER BY TRUCKDATE DESC),'') CARGODATE,");
strSql.AppendLine("(SELECT COMPTIME FROM OP_STATUS WHERE BSNO=S.BSNO AND ISCOMP=1 and [status]='重箱返场') STA_ZXFC,");
strSql.AppendLine("(SELECT COMPTIME FROM OP_STATUS WHERE BSNO=S.BSNO AND ISCOMP=1 and [status]='海关放行') STA_HGFX,");
strSql.AppendLine("(SELECT SUM(AMOUNT) FROM CH_FEE WHERE FEETYPE=1 AND FEESTATUS IN (0,8,9) AND CUSTOMERNAME=S.CUSTOMERNAME AND BSNO=S.BSNO AND CURRENCY='RMB') AMOUNT_RMB,");
strSql.AppendLine("(SELECT SUM(AMOUNT) FROM CH_FEE WHERE FEETYPE=1 AND FEESTATUS IN (0,8,9) AND CUSTOMERNAME=S.CUSTOMERNAME AND BSNO=S.BSNO AND CURRENCY='USD') AMOUNT_USD");
strSql.AppendLine("FROM OP_SEAE S");
strSql.AppendLine($"WHERE CUSTOMERNAME='{shortName}'");
if (!hasNoFee)
{
strSql.AppendLine("AND (SELECT COUNT(1) FROM CH_FEE WHERE FEETYPE=1 AND FEESTATUS IN (0,8,9) AND CUSTOMERNAME=S.CUSTOMERNAME AND BSNO=S.BSNO)>0");
}
if (!string.IsNullOrWhiteSpace(condition))
{
var obj = new { VESSEL = "", VOYNO = "", MBLNO = "", INVNO = "", BSNO = "" };
var jsonObj = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(condition, obj);
if (!string.IsNullOrWhiteSpace(jsonObj.VESSEL))
{
strSql.Append($" and VESSEL like '%{jsonObj.VESSEL.Replace("'", "")}%'");
}
if (!string.IsNullOrWhiteSpace(jsonObj.VOYNO))
{
strSql.Append($" and VOYNO like '%{jsonObj.VOYNO.Replace("'", "")}%'");
}
if (!string.IsNullOrWhiteSpace(jsonObj.MBLNO))
{
strSql.Append($" and MBLNO='{jsonObj.MBLNO.Replace("'", "")}'");
}
if (!string.IsNullOrWhiteSpace(jsonObj.INVNO))
{
strSql.Append($" and INVNO='{jsonObj.INVNO.Replace("'", "")}'");
}
if (!string.IsNullOrWhiteSpace(jsonObj.BSNO))
{
strSql.Append($" and BSNO='{jsonObj.BSNO.Replace("'", "")}'");
}
}
if (!string.IsNullOrEmpty(sort))
{
strSql.AppendLine($" order by {sort} {(string.IsNullOrWhiteSpace(order) ? string.Empty : order)}");
}
else
{
strSql.AppendLine(" order by BSDATE desc");
}
return SetData(strSql);
}
private static List<OpSeaeModel> SetData(StringBuilder strSql)
{
var headList = new List<OpSeaeModel>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
OpSeaeModel data = new OpSeaeModel();
#region Set DB data to Object
data.BSNO = Convert.ToString(reader["BSNO"]);
data.VESSEL = Convert.ToString(reader["VESSEL"]);
data.VOYNO = Convert.ToString(reader["VOYNO"]);
data.MBLNO = Convert.ToString(reader["MBLNO"]);
data.INVNO = Convert.ToString(reader["INVNO"]);
data.CNTRTOTAL = Convert.ToString(reader["CNTRTOTAL"]);
data.KGS = Convert.ToString(reader["KGS"]);
data.YARD = Convert.ToString(reader["YARD"]);
data.CNTRSEALNO = Convert.ToString(reader["CNTRSEALNO"]);
data.CUSTOMNO = Convert.ToString(reader["CUSTOMNO"]);
data.FACTORYADDR = Convert.ToString(reader["FACTORYADDR"]);
data.CARGODATE = Convert.ToString(reader["CARGODATE"]);
if (reader["STA_ZXFC"] != DBNull.Value)
data.STA_ZXFC = Convert.ToString(reader["STA_ZXFC"]);
if (reader["STA_HGFX"] != DBNull.Value)
data.STA_HGFX = Convert.ToString(reader["STA_HGFX"]);
if (reader["ETD"] != DBNull.Value)
data.ETD = Convert.ToDateTime(reader["ETD"]).ToString("yyyy-MM-dd");
if (reader["ATD"] != DBNull.Value)
data.ATD = Convert.ToDateTime(reader["ATD"]).ToString("yyyy-MM-dd");
if (reader["AMOUNT_RMB"] != DBNull.Value)
data.AMOUNT_RMB = Convert.ToDecimal(reader["AMOUNT_RMB"]);
if (reader["AMOUNT_USD"] != DBNull.Value)
data.AMOUNT_USD = Convert.ToDecimal(reader["AMOUNT_USD"]);
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
public static DBResult SaveDetail(OrderImportData headData, List<order_prodata> bodyList)
{
var result = new DBResult();
var GID = Guid.NewGuid().ToString();
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var cmdInsertMaster =
db.GetSqlStringCommand(
@"insert into order_import (GID,outer_orderid,order_source,province,city,district,address,name,identity_name,identity_no,phone,tel,postcode,freight,order_total,exp_code,exp_no,order_time,add_time,notify_url,remark)
values (@GID,@outer_orderid,@order_source,@province,@city,@district,@address,@name,@identity_name,@identity_no,@phone,
@tel,@postcode,@freight,@order_total,@exp_code,@exp_no,@order_time,@add_time,@notify_url,@remark) ");
var cmdInsert =
db.GetSqlStringCommand(
@"insert into order_import_detail ([GID],[PGID],[outer_sku],[sku],[name],[price],[num],[unit],[total])
values (@GID,@PGID,@outer_sku,@sku,@name,@price,@num,@unit,@total) ");
cmdInsertMaster.Parameters.Clear();
db.AddInParameter(cmdInsertMaster, "@GID", DbType.String, GID);
db.AddInParameter(cmdInsertMaster, "@outer_orderid", DbType.String, headData.outer_orderid);
db.AddInParameter(cmdInsertMaster, "@order_source", DbType.String, headData.order_source);
db.AddInParameter(cmdInsertMaster, "@province", DbType.String, headData.province);
db.AddInParameter(cmdInsertMaster, "@city", DbType.String, headData.city);
db.AddInParameter(cmdInsertMaster, "@district", DbType.String, headData.district);
db.AddInParameter(cmdInsertMaster, "@address", DbType.String, headData.address);
db.AddInParameter(cmdInsertMaster, "@name", DbType.String, headData.name);
db.AddInParameter(cmdInsertMaster, "@identity_name", DbType.String, headData.identity_name);
db.AddInParameter(cmdInsertMaster, "@identity_no", DbType.String, headData.identity_no);
db.AddInParameter(cmdInsertMaster, "@phone", DbType.String, headData.phone);
db.AddInParameter(cmdInsertMaster, "@tel", DbType.String, headData.tel);
db.AddInParameter(cmdInsertMaster, "@postcode", DbType.String, headData.postcode);
db.AddInParameter(cmdInsertMaster, "@freight", DbType.String, headData.freight);
db.AddInParameter(cmdInsertMaster, "@order_total", DbType.String, headData.order_total);
db.AddInParameter(cmdInsertMaster, "@exp_code", DbType.String, headData.exp_code);
db.AddInParameter(cmdInsertMaster, "@exp_no", DbType.String, headData.exp_no);
db.AddInParameter(cmdInsertMaster, "@order_time", DbType.String, headData.order_time);
db.AddInParameter(cmdInsertMaster, "@add_time", DbType.String, headData.add_time);
db.AddInParameter(cmdInsertMaster, "@notify_url", DbType.String, headData.notify_url);
db.AddInParameter(cmdInsertMaster, "@remark", DbType.String, headData.remark);
db.ExecuteNonQuery(cmdInsertMaster, tran);
if (bodyList != null)
{
foreach (var enumValue in bodyList)
{
cmdInsert.Parameters.Clear();
db.AddInParameter(cmdInsert, "@GID", DbType.String, Guid.NewGuid().ToString());
db.AddInParameter(cmdInsert, "@PGID", DbType.String, GID);
db.AddInParameter(cmdInsert, "@outer_sku", DbType.String, enumValue.outer_sku);
db.AddInParameter(cmdInsert, "@sku", DbType.String, enumValue.sku);
db.AddInParameter(cmdInsert, "@name", DbType.String, enumValue.name);
db.AddInParameter(cmdInsert, "@price", DbType.String, enumValue.price);
db.AddInParameter(cmdInsert, "@num", DbType.String, enumValue.num);
db.AddInParameter(cmdInsert, "@unit", DbType.String, enumValue.unit);
db.AddInParameter(cmdInsert, "@total", DbType.String, enumValue.total);
db.ExecuteNonQuery(cmdInsert, tran);
}
}
tran.Commit();
}
catch (Exception)
{
tran.Rollback();
result.Success = false;
result.Message = "保存出现错误,请重试或联系系统管理员";
return result;
}
}
result.Success = true;
result.Message = GID;
return result;
}
public static List<codectn> GetCodectns()
{
var headList = new List<codectn>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, "select [代码] CTNID,[箱型] CTNTYPE,[尺寸] CTNSIZE,[表现形式] CTNALL FROM t_code_ctn"))
{
while (reader.Read())
{
codectn data = new codectn();
#region Set DB data to Object
data.CTNID = Convert.ToString(reader["CTNID"]);
data.CTNSIZE = Convert.ToString(reader["CTNSIZE"]);
data.CTNTYPE = Convert.ToString(reader["CTNTYPE"]);
data.CTNALL = Convert.ToString(reader["CTNALL"]);
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
public static DBResult SaveSeaiData(MsOpSeai headData, List<CtnDetail> ctnbodyList, List<MsChFee> feebodyList,bool isupdate,string lbsno)
{
var result = new DBResult();
var GID = Guid.NewGuid().ToString();
var CTNCODELIST = GetCodectns();
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var bsno = Get_id();
if (isupdate) bsno = lbsno;
var orderinputby = ConfigurationManager.AppSettings["orderinputby"];
var ordercompany = ConfigurationManager.AppSettings["ordercompany"];
if (!string.IsNullOrEmpty(headData.OP)) orderinputby = headData.OP;
var cmdInsertMaster = db.GetSqlStringCommand(
@"insert into t_op_seai (编号,主编号,业务编号,主提单号,会计期间,进口日期,财务,财务凭证,录入人,录入日期,分部名称,操作员,业务来源,装运方式,业务类型,委托单位,业务状态,费用状态,主提单标准,分提单标准,委托标准,报关标准,报检标准
,船名,航次,发货人代码,货物名称,合同号,手册号,船公司,件数,重量,委托编号,场站,商品编码,集装箱,许可证号,揽货人,操作部门,销售部门,客服员,箱TEU,箱型1,箱型2,箱型3,箱型4,箱型5,箱型6,箱型7,箱型8,箱型9,封帐前状态)
values (@BSNO,@MBSNO,@YWBSNO,@MBLNO,null,@ETA,0,'','" + orderinputby + "',GETDATE(),'"+ ordercompany + "','" + orderinputby + "','Sales','整箱','普通货',@customername,'接受委托','录入状态','" + bsno+ "','" + bsno + "','" + bsno + "','" + bsno + "','" + bsno
+ "',@VESSEL,@VOYNO,@SHIPPER,@DESCRIPTION,@CONTRACTNO,@BOOKNO,@CARRIER,@PKGS,@KGS,@CUSTNO,@YARD,@HSCODE,@CNTRSTR,@LICENSENO,'郑彬','销售操作组','销售部','" + orderinputby + "',@TEU,@CTN1,@CTN2,@CTN3,@CTN4,@CTN5,@CTN6,@CTN7,@CTN8,@CTN9,'接受委托') ");
var cmdInsertMasterUpdate = db.GetSqlStringCommand(
@"update t_op_seai SET 进口日期=@ETA,委托单位=@customername,船名=@VESSEL,航次=@VOYNO,发货人代码=@SHIPPER,货物名称=@DESCRIPTION,合同号=@CONTRACTNO,手册号=@BOOKNO,船公司=@CARRIER
,件数=@PKGS,重量=@KGS,委托编号=@CUSTNO,场站=@YARD,商品编码=@HSCODE,集装箱=@CNTRSTR,许可证号=@LICENSENO,箱TEU=@TEU,箱型1=@CTN1,箱型2=@CTN2,箱型3=@CTN3,箱型4=@CTN4,箱型5=@CTN5,箱型6=@CTN6,箱型7=@CTN7,箱型8=@CTN8,箱型9=@CTN9 WHERE 编号=@BSNO ");
var cmdInsert =
db.GetSqlStringCommand(
@"insert into t_op_ctn ([编号],[代码],[尺寸],[箱型],[数量],[TEU],[表现形式])
values (@BSNO,@CTNID,@CTNSIZE,@CTNTYPE,@CTNNUM,@TEU,@CTNALL) ");
var cmdInsertFee =
db.GetSqlStringCommand(
@"insert into t_ch_fee ([类型],[费用状态],[编号],[费用名称],[客户名称],[标准],[单价],[数量],[金额],[币别],[汇率],[结算金额],[开票金额],[录入人],[录入日期],
[是否对帐],[冲抵金额],[机密],[是否复核],[是否垫付],[申请金额],[不开发票],[系统费用],[申请开票],[第三方金额],[不含税价],[税率],[税额],[财务对帐],结算单位,费用英文名称)
values (@FEETYPE,'录入状态',@BSNO,@FEENAME,@CUSTOMERNAME,'单票',@UNITPRICE,@QUANTITY,@AMOUNT,@CURRENCY,@EXCHANGERATE,0,0,'" + orderinputby + "',GETDATE()," +
"0,0,0,0,0,0,0,0,0,0,@NOTAXUNITPRICE,0,0,0,'船公司',@RATE) ");
if (isupdate) {
db.ExecuteNonQuery(tran,CommandType.Text, "delete from t_op_ctn where 编号='"+bsno+ "' ");
}
var CNTRSTR = "";
int ctnteusum = 0;
int ctn1 = 0;
int ctn2 = 0;
int ctn3 = 0;
int ctn4 = 0;
int ctn5 = 0;
int ctn6 = 0;
int ctn7 = 0;
int ctn8 = 0;
int ctn9 = 0;
int ctn10 = 0;
if (ctnbodyList != null)
{
foreach (var enumValue in ctnbodyList)
{
CTNCODELIST.ForEach(i =>
{
if (i.CTNALL.Replace("'","") == enumValue.CTNALL.Replace("'", ""))
{
var ctnteu = 1;
cmdInsert.Parameters.Clear();
db.AddInParameter(cmdInsert, "@BSNO", DbType.String, bsno);
db.AddInParameter(cmdInsert, "@CTNID", DbType.String, i.CTNID);
db.AddInParameter(cmdInsert, "@CTNSIZE", DbType.String, i.CTNSIZE);
db.AddInParameter(cmdInsert, "@CTNTYPE", DbType.String, i.CTNTYPE);
db.AddInParameter(cmdInsert, "@CTNNUM", DbType.String, enumValue.CTNNUM);
if (i.CTNSIZE.IndexOf("40") >= 0 || i.CTNSIZE.IndexOf("45") >= 0 || i.CTNSIZE.IndexOf("53") >= 0) ctnteu = 2;
db.AddInParameter(cmdInsert, "@TEU", DbType.String, enumValue.CTNNUM * ctnteu);
db.AddInParameter(cmdInsert, "@CTNALL", DbType.String, enumValue.CTNALL);
db.ExecuteNonQuery(cmdInsert, tran);
if (CNTRSTR=="")
CNTRSTR = enumValue.CTNALL+"*"+ enumValue.CTNNUM.ToString();
else CNTRSTR = CNTRSTR+" "+ enumValue.CTNALL + "*" + enumValue.CTNNUM.ToString();
ctnteusum = ctnteusum+ctnteu;
if (i.CTNALL == "20'GP") ctn1 = ctn1 + enumValue.CTNNUM;
if (i.CTNALL == "20'RF") ctn2 = ctn2 + enumValue.CTNNUM;
if (i.CTNALL == "40'GP") ctn3 = ctn3 + enumValue.CTNNUM;
if (i.CTNALL == "40'RF") ctn4 = ctn4+ enumValue.CTNNUM;
if (i.CTNALL == "40'RH") ctn5 = ctn5 + enumValue.CTNNUM;
if (i.CTNALL == "45'HC") ctn6 = ctn6 + enumValue.CTNNUM;
if (i.CTNALL == "40'HC") ctn7 = ctn7 + enumValue.CTNNUM;
if (i.CTNALL == "53'HQ") ctn8 = ctn8 + enumValue.CTNNUM;
if (i.CTNALL == "40'FR") ctn9 = ctn9 + enumValue.CTNNUM;
}
});
}
}
if (isupdate)
{
cmdInsertMasterUpdate.Parameters.Clear();
db.AddInParameter(cmdInsertMasterUpdate, "@ETA", DbType.String, headData.ETA);
db.AddInParameter(cmdInsertMasterUpdate, "@customername", DbType.String, headData.CUSTOMERNAME);
db.AddInParameter(cmdInsertMasterUpdate, "@VESSEL", DbType.String, headData.VESSEL);
db.AddInParameter(cmdInsertMasterUpdate, "@VOYNO", DbType.String, headData.VOYNO);
db.AddInParameter(cmdInsertMasterUpdate, "@SHIPPER", DbType.String, headData.SHIPPER);
db.AddInParameter(cmdInsertMasterUpdate, "@DESCRIPTION", DbType.String, headData.DESCRIPTION);
db.AddInParameter(cmdInsertMasterUpdate, "@CONTRACTNO", DbType.String, headData.CONTRACTNO);
db.AddInParameter(cmdInsertMasterUpdate, "@BOOKNO", DbType.String, headData.BOOKNO);
db.AddInParameter(cmdInsertMasterUpdate, "@CARRIER", DbType.String, headData.CARRIER);
db.AddInParameter(cmdInsertMasterUpdate, "@PKGS", DbType.String, headData.PKGS);
db.AddInParameter(cmdInsertMasterUpdate, "@KGS", DbType.String, headData.KGS);
db.AddInParameter(cmdInsertMasterUpdate, "@CUSTNO", DbType.String, headData.CUSTNO);
db.AddInParameter(cmdInsertMasterUpdate, "@YARD", DbType.String, headData.YARD);
db.AddInParameter(cmdInsertMasterUpdate, "@HSCODE", DbType.String, headData.HSCODE);
db.AddInParameter(cmdInsertMasterUpdate, "@CNTRSTR", DbType.String, CNTRSTR);
db.AddInParameter(cmdInsertMasterUpdate, "@LICENSENO", DbType.String, headData.LICENSENO);
db.AddInParameter(cmdInsertMasterUpdate, "@TEU", DbType.Int32, ctnteusum);
db.AddInParameter(cmdInsertMasterUpdate, "@CTN1", DbType.Int32, ctn1);
db.AddInParameter(cmdInsertMasterUpdate, "@CTN2", DbType.Int32, ctn2);
db.AddInParameter(cmdInsertMasterUpdate, "@CTN3", DbType.Int32, ctn3);
db.AddInParameter(cmdInsertMasterUpdate, "@CTN4", DbType.Int32, ctn4);
db.AddInParameter(cmdInsertMasterUpdate, "@CTN5", DbType.Int32, ctn5);
db.AddInParameter(cmdInsertMasterUpdate, "@CTN6", DbType.Int32, ctn6);
db.AddInParameter(cmdInsertMasterUpdate, "@CTN7", DbType.Int32, ctn7);
db.AddInParameter(cmdInsertMasterUpdate, "@CTN8", DbType.Int32, ctn8);
db.AddInParameter(cmdInsertMasterUpdate, "@CTN9", DbType.Int32, ctn9);
db.AddInParameter(cmdInsertMasterUpdate, "@BSNO", DbType.String, bsno);
db.ExecuteNonQuery(cmdInsertMasterUpdate, tran);
}
else
{
var ywno = GetBsNo();
cmdInsertMaster.Parameters.Clear();
db.AddInParameter(cmdInsertMaster, "@BSNO", DbType.String, bsno);
db.AddInParameter(cmdInsertMaster, "@MBSNO", DbType.String, bsno);
db.AddInParameter(cmdInsertMaster, "@YWBSNO", DbType.String, ywno);
db.AddInParameter(cmdInsertMaster, "@MBLNO", DbType.String, headData.MBLNO);
// db.AddInParameter(cmdInsertMaster, "@ACCDATE", DbType.String,"");
db.AddInParameter(cmdInsertMaster, "@ETA", DbType.String, headData.ETA);
db.AddInParameter(cmdInsertMaster, "@customername", DbType.String, headData.CUSTOMERNAME);
db.AddInParameter(cmdInsertMaster, "@VESSEL", DbType.String, headData.VESSEL);
db.AddInParameter(cmdInsertMaster, "@VOYNO", DbType.String, headData.VOYNO);
db.AddInParameter(cmdInsertMaster, "@SHIPPER", DbType.String, headData.SHIPPER);
db.AddInParameter(cmdInsertMaster, "@DESCRIPTION", DbType.String, headData.DESCRIPTION);
db.AddInParameter(cmdInsertMaster, "@CONTRACTNO", DbType.String, headData.CONTRACTNO);
db.AddInParameter(cmdInsertMaster, "@BOOKNO", DbType.String, headData.BOOKNO);
db.AddInParameter(cmdInsertMaster, "@CARRIER", DbType.String, headData.CARRIER);
db.AddInParameter(cmdInsertMaster, "@PKGS", DbType.String, headData.PKGS);
db.AddInParameter(cmdInsertMaster, "@KGS", DbType.String, headData.KGS);
db.AddInParameter(cmdInsertMaster, "@CUSTNO", DbType.String, headData.CUSTNO);
db.AddInParameter(cmdInsertMaster, "@YARD", DbType.String, headData.YARD);
db.AddInParameter(cmdInsertMaster, "@HSCODE", DbType.String, headData.HSCODE);
db.AddInParameter(cmdInsertMaster, "@CNTRSTR", DbType.String, CNTRSTR);
db.AddInParameter(cmdInsertMaster, "@TEU", DbType.Int32, ctnteusum);
db.AddInParameter(cmdInsertMaster, "@CTN1", DbType.Int32, ctn1);
db.AddInParameter(cmdInsertMaster, "@CTN2", DbType.Int32, ctn2);
db.AddInParameter(cmdInsertMaster, "@CTN3", DbType.Int32, ctn3);
db.AddInParameter(cmdInsertMaster, "@CTN4", DbType.Int32, ctn4);
db.AddInParameter(cmdInsertMaster, "@CTN5", DbType.Int32, ctn5);
db.AddInParameter(cmdInsertMaster, "@CTN6", DbType.Int32, ctn6);
db.AddInParameter(cmdInsertMaster, "@CTN7", DbType.Int32, ctn7);
db.AddInParameter(cmdInsertMaster, "@CTN8", DbType.Int32, ctn8);
db.AddInParameter(cmdInsertMaster, "@CTN9", DbType.Int32, ctn9);
db.AddInParameter(cmdInsertMaster, "@LICENSENO", DbType.String, headData.LICENSENO);
db.ExecuteNonQuery(cmdInsertMaster, tran);
}
if (feebodyList != null)
{
foreach (var enumValue in feebodyList)
{
var rate = GetFeeRate("中文名='" + enumValue.FEENAME + "'");
cmdInsertFee.Parameters.Clear();
db.AddInParameter(cmdInsertFee, "@FEETYPE", DbType.String, enumValue.FEETYPE);
db.AddInParameter(cmdInsertFee, "@BSNO", DbType.String, bsno);
db.AddInParameter(cmdInsertFee, "@FEENAME", DbType.String, enumValue.FEENAME);
db.AddInParameter(cmdInsertFee, "@CUSTOMERNAME", DbType.String, enumValue.CUSTOMERNAME);
//db.AddInParameter(cmdInsertFee, "@UNIT", DbType.String, enumValue.UNIT);
db.AddInParameter(cmdInsertFee, "@UNITPRICE", DbType.String, enumValue.UNITPRICE);
db.AddInParameter(cmdInsertFee, "@QUANTITY", DbType.String, enumValue.QUANTITY);
db.AddInParameter(cmdInsertFee, "@AMOUNT", DbType.String, enumValue.AMOUNT);
db.AddInParameter(cmdInsertFee, "@CURRENCY", DbType.String, enumValue.CURRENCY);
db.AddInParameter(cmdInsertFee, "@EXCHANGERATE", DbType.String, enumValue.EXCHANGERATE);
db.AddInParameter(cmdInsertFee, "@NOTAXUNITPRICE", DbType.String, enumValue.UNITPRICE);
db.AddInParameter(cmdInsertFee, "@RATE", DbType.String, rate);
db.ExecuteNonQuery(cmdInsertFee, tran);
}
}
tran.Commit();
}
catch (Exception e)
{
tran.Rollback();
result.Success = false;
result.Message =e.Message;
return result;
}
}
result.Success = true;
result.Message = GID;
return result;
}
public static DBResult UpdateSeaeTraceData(List<MsOpSeaeTrace> bodyList)
{
var result = new DBResult();
var GID = Guid.NewGuid().ToString();
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
var cmdInsertTrace = db.GetSqlStringCommand(
@"insert into t_op_seae_trace ([编号],[提箱],[重箱返场日期],[装船],[开航],[中转抵港1],[中转卸载1],[中转装船1],[中转开航1],[中转抵港2]
,[中转卸载2],[中转装船2],[中转开航2],[中转抵港3],[中转卸载3],[中转装船3],[中转开航3],[抵港],[卸载],[船东放货],[提货],[返空],预警提醒,[录入时间],[更新时间],ETA)
values (@BSNO,@TX,@FC,@ZC,@KAIHANG,@ZZDG1,@ZZXZ1,@ZZZC1,@ZZKH1,@ZZDG2,@ZZXZ2,@ZZZC2,@ZZKH2,@ZZDG3,@ZZXZ3,@ZZZC3,@ZZKH3,@DG,@XZ,@FH,@TH,@FK,@YJXX,@INPUTDATE,@UPDATE,@ETA) ");
var cmdInsertTraceCtn = db.GetSqlStringCommand(
@"insert into t_op_seae_trace_ctn ([编号],[箱号],[提箱时间],[返场时间],[提货时间],[返空时间],[录入时间],[更新时间])
values (@BSNO,@CNTRNO,@TX,@FC,@TH,@FK,@INPUTDATE,@UPDATE) ");
// var cmdUpdateTrace = db.GetSqlStringCommand(
// @"update t_op_seae_trace SET 提箱=@TX,重箱返场日期=@FC,装船=@ZC,开航=@KAIHANG,中转抵港1=@ZZDG1,中转卸载1=@ZZXZ1,中转装船1=@ZZZC1,中转开航1=@ZZKH1,
//中转抵港2=@ZZDG2,中转卸载2=@ZZXZ2,中转装船2=@ZZZC2,中转开航2=@ZZKH2,中转抵港3=@ZZDG3,中转卸载3=@ZZXZ3,中转装船3=@ZZZC3,中转开航3=@ZZKH3,[抵港]=@DG,[卸载]=@XZ,[船东放货]=@FH,[提货]=@TH,[返空]=@FK
//,[更新时间]=@UPDATE WHERE TR_ID=@TRID ");
try
{
if (bodyList != null)
{
foreach (var enumValue in bodyList)
{
var constr = "";
if (!string.IsNullOrEmpty(enumValue.TMblno))
{
constr = "t_op_seae.真提单号 = '" + enumValue.TMblno + "'";
}
else {
constr = "t_op_seae.主提单号 = '" + enumValue.Mblno + "'";
}
var optrace = GetSeaeTrace(constr, db, tran);
if (!string.IsNullOrEmpty(optrace.BSNO))
{
if (string.IsNullOrEmpty(optrace.TRID))
{
cmdInsertTrace.Parameters.Clear();
db.AddInParameter(cmdInsertTrace, "@BSNO", DbType.String, optrace.BSNO);
db.AddInParameter(cmdInsertTrace, "@TX", DbType.String, enumValue.PortloadCtnDate);
db.AddInParameter(cmdInsertTrace, "@FC", DbType.String, enumValue.PortloadRtYard);
db.AddInParameter(cmdInsertTrace, "@ZC", DbType.String, enumValue.PortloadShipment);
db.AddInParameter(cmdInsertTrace, "@KAIHANG", DbType.String, enumValue.PortloadOnBoard);
db.AddInParameter(cmdInsertTrace, "@ZZDG1", DbType.String, enumValue.Transport1Arrival);
db.AddInParameter(cmdInsertTrace, "@ZZXZ1", DbType.String, enumValue.Transport1Unload);
db.AddInParameter(cmdInsertTrace, "@ZZZC1", DbType.String, enumValue.Transport1Shipment);
db.AddInParameter(cmdInsertTrace, "@ZZKH1", DbType.String, enumValue.Transport1OnBoard);
db.AddInParameter(cmdInsertTrace, "@ZZDG2", DbType.String, enumValue.Transport2Arrival);
db.AddInParameter(cmdInsertTrace, "@ZZXZ2", DbType.String, enumValue.Transport2Unload);
db.AddInParameter(cmdInsertTrace, "@ZZZC2", DbType.String, enumValue.Transport2Shipment);
db.AddInParameter(cmdInsertTrace, "@ZZKH2", DbType.String, enumValue.Transport2OnBoard);
db.AddInParameter(cmdInsertTrace, "@ZZDG3", DbType.String, enumValue.Transport3Arrival);
db.AddInParameter(cmdInsertTrace, "@ZZXZ3", DbType.String, enumValue.Transport3Unload);
db.AddInParameter(cmdInsertTrace, "@ZZZC3", DbType.String, enumValue.Transport3Shipment);
db.AddInParameter(cmdInsertTrace, "@ZZKH3", DbType.String, enumValue.Transport3OnBoard);
db.AddInParameter(cmdInsertTrace, "@DG", DbType.String, enumValue.PortDischargeArrival);
db.AddInParameter(cmdInsertTrace, "@XZ", DbType.String, enumValue.PortDischargeUnload);
db.AddInParameter(cmdInsertTrace, "@FH", DbType.String, enumValue.PortDischargeCarrierRelease);
db.AddInParameter(cmdInsertTrace, "@TH", DbType.String, enumValue.PortDischargeDelivery);
db.AddInParameter(cmdInsertTrace, "@FK", DbType.String, enumValue.PortDischargeRtCtn);
db.AddInParameter(cmdInsertTrace, "@YJXX", DbType.String, enumValue.WarningMsg);
db.AddInParameter(cmdInsertTrace, "@INPUTDATE", DbType.String, DateTime.Now.ToString("yyyy-MM-dd hh:MM:ss"));
db.AddInParameter(cmdInsertTrace, "@UPDATE", DbType.String, DateTime.Now.ToString("yyyy-MM-dd hh:MM:ss"));
db.AddInParameter(cmdInsertTrace, "@ETA", DbType.String, enumValue.Eta);
db.ExecuteNonQuery(cmdInsertTrace, tran);
if (enumValue.CntrList != null)
{
foreach (var item in enumValue.CntrList)
{
cmdInsertTraceCtn.Parameters.Clear();
db.AddInParameter(cmdInsertTraceCtn, "@BSNO", DbType.String, optrace.BSNO);
db.AddInParameter(cmdInsertTraceCtn, "@CNTRNO", DbType.String, item.CntrNo);
db.AddInParameter(cmdInsertTraceCtn, "@TX", DbType.String, item.PortloadCtnDate);
db.AddInParameter(cmdInsertTraceCtn, "@FC", DbType.String, item.PortloadRtYard);
db.AddInParameter(cmdInsertTraceCtn, "@TH", DbType.String, item.PortDischargeDelivery);
db.AddInParameter(cmdInsertTraceCtn, "@FK", DbType.String, item.PortDischargeRtCtn);
db.AddInParameter(cmdInsertTraceCtn, "@INPUTDATE", DbType.String, DateTime.Now.ToString("yyyy-MM-dd hh:MM:ss"));
db.AddInParameter(cmdInsertTraceCtn, "@UPDATE", DbType.String, DateTime.Now.ToString("yyyy-MM-dd hh:MM:ss"));
db.ExecuteNonQuery(cmdInsertTraceCtn, tran);
}
}
}
else
{
var strSql = new StringBuilder();
strSql.Append("update t_op_seae_trace SET [更新时间]=@UPDATE ");
if (!string.IsNullOrEmpty(enumValue.PortloadCtnDate))
{
strSql.Append(",提箱=@TX");
}
if (!string.IsNullOrEmpty(enumValue.PortloadRtYard))
{
strSql.Append(",重箱返场日期=@FC");
}
if (!string.IsNullOrEmpty(enumValue.PortloadShipment))
{
strSql.Append(",装船=@ZC");
}
if (!string.IsNullOrEmpty(enumValue.PortloadOnBoard))
{
strSql.Append(",开航=@KAIHANG");
}
if (!string.IsNullOrEmpty(enumValue.Transport1Arrival))
{
strSql.Append(",中转抵港1=@ZZDG1");
}
if (!string.IsNullOrEmpty(enumValue.Transport1Unload))
{
strSql.Append(",中转卸载1=@ZZXZ1");
}
if (!string.IsNullOrEmpty(enumValue.Transport1Shipment))
{
strSql.Append(",中转装船1=@ZZZC1");
}
if (!string.IsNullOrEmpty(enumValue.Transport1OnBoard))
{
strSql.Append(",中转开航1=@ZZKH1");
}
if (!string.IsNullOrEmpty(enumValue.Transport2Arrival))
{
strSql.Append(",中转抵港2=@ZZDG2");
}
if (!string.IsNullOrEmpty(enumValue.Transport2Unload))
{
strSql.Append(",中转卸载2=@ZZXZ2");
}
if (!string.IsNullOrEmpty(enumValue.Transport2Shipment))
{
strSql.Append(",中转装船2=@ZZZC2");
}
if (!string.IsNullOrEmpty(enumValue.Transport2OnBoard))
{
strSql.Append(",中转开航2=@ZZKH2");
}
if (!string.IsNullOrEmpty(enumValue.Transport3Arrival))
{
strSql.Append(",中转抵港3=@ZZDG3");
}
if (!string.IsNullOrEmpty(enumValue.Transport3Unload))
{
strSql.Append(",中转卸载3=@ZZXZ3");
}
if (!string.IsNullOrEmpty(enumValue.Transport3Shipment))
{
strSql.Append(",中转装船3=@ZZZC3");
}
if (!string.IsNullOrEmpty(enumValue.Transport3OnBoard))
{
strSql.Append(",中转开航3=@ZZKH3");
}
if (!string.IsNullOrEmpty(enumValue.PortDischargeArrival))
{
strSql.Append(",[抵港]=@DG");
}
if (!string.IsNullOrEmpty(enumValue.PortDischargeUnload))
{
strSql.Append(",[卸载]=@XZ");
}
if (!string.IsNullOrEmpty(enumValue.PortDischargeCarrierRelease))
{
strSql.Append(",[船东放货]=@FH");
}
if (!string.IsNullOrEmpty(enumValue.PortDischargeDelivery))
{
strSql.Append(",[提货]=@TH");
}
if (!string.IsNullOrEmpty(enumValue.PortDischargeRtCtn))
{
strSql.Append(",[返空]=@FK");
}
if (!string.IsNullOrEmpty(enumValue.WarningMsg))
{
strSql.Append(",预警提醒=@YJXX");
}
if (!string.IsNullOrEmpty(enumValue.Eta))
{
strSql.Append(",ETA=@ETA");
}
strSql.Append(" WHERE TR_ID=@TRID");
var cmdUpdateTrace =
db.GetSqlStringCommand(strSql.ToString());
cmdUpdateTrace.Parameters.Clear();
db.AddInParameter(cmdUpdateTrace, "@UPDATE", DbType.String, DateTime.Now.ToString("yyyy-MM-dd hh:MM:ss"));
if (!string.IsNullOrEmpty(enumValue.PortloadCtnDate))
{
db.AddInParameter(cmdUpdateTrace, "@TX", DbType.String, enumValue.PortloadCtnDate);
}
if (!string.IsNullOrEmpty(enumValue.PortloadRtYard)) {
db.AddInParameter(cmdUpdateTrace, "@FC", DbType.String, enumValue.PortloadRtYard);
}
if (!string.IsNullOrEmpty(enumValue.PortloadShipment)) {
db.AddInParameter(cmdUpdateTrace, "@ZC", DbType.String, enumValue.PortloadShipment);
}
if (!string.IsNullOrEmpty(enumValue.PortloadOnBoard))
{
db.AddInParameter(cmdUpdateTrace, "@KAIHANG", DbType.String, enumValue.PortloadOnBoard);
}
if (!string.IsNullOrEmpty(enumValue.Transport1Arrival))
{
db.AddInParameter(cmdUpdateTrace, "@ZZDG1", DbType.String, enumValue.Transport1Arrival);
}
if (!string.IsNullOrEmpty(enumValue.Transport1Unload))
{
db.AddInParameter(cmdUpdateTrace, "@ZZXZ1", DbType.String, enumValue.Transport1Unload);
}
if (!string.IsNullOrEmpty(enumValue.Transport1Shipment))
{
db.AddInParameter(cmdUpdateTrace, "@ZZZC1", DbType.String, enumValue.Transport1Shipment);
}
if (!string.IsNullOrEmpty(enumValue.Transport1OnBoard))
{
db.AddInParameter(cmdUpdateTrace, "@ZZKH1", DbType.String, enumValue.Transport1OnBoard);
}
if (!string.IsNullOrEmpty(enumValue.Transport2Arrival))
{
db.AddInParameter(cmdUpdateTrace, "@ZZDG2", DbType.String, enumValue.Transport2Arrival);
}
if (!string.IsNullOrEmpty(enumValue.Transport2Unload))
{
db.AddInParameter(cmdUpdateTrace, "@ZZXZ2", DbType.String, enumValue.Transport2Unload);
}
if (!string.IsNullOrEmpty(enumValue.Transport2Shipment))
{
db.AddInParameter(cmdUpdateTrace, "@ZZZC2", DbType.String, enumValue.Transport2Shipment);
}
if (!string.IsNullOrEmpty(enumValue.Transport2OnBoard))
{
db.AddInParameter(cmdUpdateTrace, "@ZZKH2", DbType.String, enumValue.Transport2OnBoard);
}
if (!string.IsNullOrEmpty(enumValue.Transport3Arrival))
{
db.AddInParameter(cmdUpdateTrace, "@ZZDG3", DbType.String, enumValue.Transport3Arrival);
}
if (!string.IsNullOrEmpty(enumValue.Transport3Unload))
{
db.AddInParameter(cmdUpdateTrace, "@ZZXZ3", DbType.String, enumValue.Transport3Unload);
}
if (!string.IsNullOrEmpty(enumValue.Transport3Shipment))
{
db.AddInParameter(cmdUpdateTrace, "@ZZZC3", DbType.String, enumValue.Transport3Shipment);
}
if (!string.IsNullOrEmpty(enumValue.Transport3OnBoard))
{
db.AddInParameter(cmdUpdateTrace, "@ZZKH3", DbType.String, enumValue.Transport3OnBoard);
}
if (!string.IsNullOrEmpty(enumValue.PortDischargeArrival))
{
db.AddInParameter(cmdUpdateTrace, "@DG", DbType.String, enumValue.PortDischargeArrival);
}
if (!string.IsNullOrEmpty(enumValue.PortDischargeUnload))
{
db.AddInParameter(cmdUpdateTrace, "@XZ", DbType.String, enumValue.PortDischargeUnload);
}
if (!string.IsNullOrEmpty(enumValue.PortDischargeCarrierRelease))
{
db.AddInParameter(cmdUpdateTrace, "@FH", DbType.String, enumValue.PortDischargeCarrierRelease);
}
if (!string.IsNullOrEmpty(enumValue.PortDischargeDelivery))
{
db.AddInParameter(cmdUpdateTrace, "@TH", DbType.String, enumValue.PortDischargeDelivery);
}
if (!string.IsNullOrEmpty(enumValue.PortDischargeRtCtn))
{
db.AddInParameter(cmdUpdateTrace, "@FK", DbType.String, enumValue.PortDischargeRtCtn);
}
if (!string.IsNullOrEmpty(enumValue.WarningMsg))
{
db.AddInParameter(cmdUpdateTrace, "@YJXX", DbType.String, enumValue.WarningMsg);
}
if (!string.IsNullOrEmpty(enumValue.Eta))
{
db.AddInParameter(cmdUpdateTrace, "@ETA", DbType.String, enumValue.Eta);
}
db.AddInParameter(cmdUpdateTrace, "@TRID", DbType.String, optrace.TRID);
db.ExecuteNonQuery(cmdUpdateTrace, tran);
if (enumValue.CntrList != null)
{
foreach (var item in enumValue.CntrList)
{
var optraceCtn = GetSeaeTraceCtn("编号='" + optrace.BSNO + "' and 箱号='" + item.CntrNo + "'", db, tran);
if (string.IsNullOrEmpty(optraceCtn.TRID))
{
cmdInsertTraceCtn.Parameters.Clear();
db.AddInParameter(cmdInsertTraceCtn, "@BSNO", DbType.String, optrace.BSNO);
db.AddInParameter(cmdInsertTraceCtn, "@CNTRNO", DbType.String, item.CntrNo);
db.AddInParameter(cmdInsertTraceCtn, "@TX", DbType.String, item.PortloadCtnDate);
db.AddInParameter(cmdInsertTraceCtn, "@FC", DbType.String, item.PortloadRtYard);
db.AddInParameter(cmdInsertTraceCtn, "@TH", DbType.String, item.PortDischargeDelivery);
db.AddInParameter(cmdInsertTraceCtn, "@FK", DbType.String, item.PortDischargeRtCtn);
db.AddInParameter(cmdInsertTraceCtn, "@INPUTDATE", DbType.String, DateTime.Now.ToString("yyyy-MM-dd hh:MM:ss"));
db.AddInParameter(cmdInsertTraceCtn, "@UPDATE", DbType.String, DateTime.Now.ToString("yyyy-MM-dd hh:MM:ss"));
db.ExecuteNonQuery(cmdInsertTraceCtn, tran);
}
else
{
var strSqlCtn = new StringBuilder();
strSqlCtn.Append("update t_op_seae_trace_ctn SET [更新时间]=@UPDATE ");
if (!string.IsNullOrEmpty(item.PortloadCtnDate))
{
strSqlCtn.Append(",提箱时间=@TX");
}
if (!string.IsNullOrEmpty(item.PortloadRtYard))
{
strSqlCtn.Append(",返场时间=@FC");
}
if (!string.IsNullOrEmpty(item.PortDischargeDelivery))
{
strSqlCtn.Append(",[提货时间]=@TH");
}
if (!string.IsNullOrEmpty(item.PortDischargeRtCtn))
{
strSqlCtn.Append(",[返空时间]=@FK");
}
strSqlCtn.Append(" WHERE TRCTN_ID=@TRID");
var cmdUpdateTraceCtn =
db.GetSqlStringCommand(strSqlCtn.ToString());
cmdUpdateTraceCtn.Parameters.Clear();
db.AddInParameter(cmdUpdateTraceCtn, "@UPDATE", DbType.String, DateTime.Now.ToString("yyyy-MM-dd hh:MM:ss"));
if (!string.IsNullOrEmpty(item.PortloadCtnDate))
{
db.AddInParameter(cmdUpdateTraceCtn, "@TX", DbType.String, item.PortloadCtnDate);
}
if (!string.IsNullOrEmpty(item.PortloadRtYard))
{
db.AddInParameter(cmdUpdateTraceCtn, "@FC", DbType.String, item.PortloadRtYard);
}
if (!string.IsNullOrEmpty(item.PortDischargeDelivery))
{
db.AddInParameter(cmdUpdateTraceCtn, "@TH", DbType.String, item.PortDischargeDelivery);
}
if (!string.IsNullOrEmpty(item.PortDischargeRtCtn))
{
db.AddInParameter(cmdUpdateTraceCtn, "@FK", DbType.String, item.PortDischargeRtCtn);
}
db.AddInParameter(cmdUpdateTraceCtn, "@TRID", DbType.String, optraceCtn.TRID);
db.ExecuteNonQuery(cmdUpdateTraceCtn, tran);
}
}
}
//if (!string.IsNullOrEmpty(enumValue.PortloadOnBoard))
//{
// if (!string.IsNullOrEmpty(enumValue.Eta))
// {
// var cmdUpdateETD =
// db.GetSqlStringCommand(" update t_op_seae set ETD='" + Convert.ToDateTime(enumValue.PortloadOnBoard).ToString("yyyy-MM-dd hh:MM:ss") + "',预抵日期='" + Convert.ToDateTime(enumValue.PortloadOnBoard).ToString("yyyy-MM-dd hh:MM:ss") + "',ETA='" + Convert.ToDateTime(enumValue.Eta).ToString("yyyy-MM-dd hh:MM:ss") + "' where 编号='" + optrace.BSNO + "'");
// db.ExecuteNonQuery(cmdUpdateETD, tran);
// }
// else
// {
// var cmdUpdateETD =
// db.GetSqlStringCommand(" update t_op_seae set ETD='" + Convert.ToDateTime(enumValue.PortloadOnBoard).ToString("yyyy-MM-dd hh:MM:ss") + "',预抵日期='" + Convert.ToDateTime(enumValue.PortloadOnBoard).ToString("yyyy-MM-dd hh:MM:ss") + "' where 编号='" + optrace.BSNO + "'");
// db.ExecuteNonQuery(cmdUpdateETD, tran);
// }
//}
//else
if(!string.IsNullOrEmpty(enumValue.Eta))
{
var cmdUpdateETD =
db.GetSqlStringCommand(" update t_op_seae set ETA='" + Convert.ToDateTime(enumValue.Eta).ToString("yyyy-MM-dd hh:MM:ss") + "' where 编号='" + optrace.BSNO + "'");
db.ExecuteNonQuery(cmdUpdateETD, tran);
}
}
}
}
}
tran.Commit();
}
catch (Exception e)
{
tran.Rollback();
result.Success = false;
result.Message = e.Message;
return result;
}
}
result.Success = true;
result.Message = GID;
return result;
}
static public MsOpSeaeTraceBsNo GetSeaeTrace(string strCondition,Database db, DbTransaction tran)
{
var strSql = new StringBuilder();
strSql.Append("SELECT top 1 t_op_seae.编号 BSNO,t_op_seae_trace.TR_ID from t_op_seae (NOLOCK) left join t_op_seae_trace on (t_op_seae_trace.编号=t_op_seae.编号) ");
if (strCondition.Trim() != String.Empty)
{
strSql.Append(" where " + strCondition);
}
var headData = new MsOpSeaeTraceBsNo();
using (IDataReader reader = db.ExecuteReader(tran,CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
headData.TRID = Convert.ToString(reader["TR_ID"]);
headData.BSNO = Convert.ToString(reader["BSNO"]);
}
reader.Close();
}
return headData;
}
static public MsOpSeaeTraceBsNo GetSeaeTraceCtn(string strCondition, Database db, DbTransaction tran)
{
var strSql = new StringBuilder();
strSql.Append("SELECT top 1 TRCTN_ID from t_op_seae_trace_ctn (NOLOCK) ");
if (strCondition.Trim() != String.Empty)
{
strSql.Append(" where " + strCondition);
}
var headData = new MsOpSeaeTraceBsNo();
using (IDataReader reader = db.ExecuteReader(tran, CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
headData.TRID = Convert.ToString(reader["TRCTN_ID"]);
}
reader.Close();
}
return headData;
}
public static DBResult UpdateVgmStatus(VgmStatus VgmStatus)
{
var result = new DBResult();
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
//if (ctnbodyList != null)
//{
// foreach (var enumValue in ctnbodyList)
// {
// if (string.IsNullOrEmpty(enumValue.BSNO))
// {
// if (!string.IsNullOrEmpty(enumValue.MBLNO))
// {
// var VGMSTATUS = "update t_op_seae SET 1=1";
// if (!string.IsNullOrEmpty(enumValue.VGMSTATUS)) VGMSTATUS = VGMSTATUS + ",VGM状态='" + enumValue.VGMSTATUS + "'";
// if (!string.IsNullOrEmpty(enumValue.VGMURL)) VGMSTATUS = VGMSTATUS + ",VGMURL='" + enumValue.VGMURL + "'";
// VGMSTATUS = VGMSTATUS + " 主提单号='" + enumValue.MBLNO + "'";
// db.ExecuteNonQuery(tran, CommandType.Text, VGMSTATUS);
// }
// }
// else
// {
var VGMSTATUS = "update t_op_seae SET 业务编号=业务编号";
if (!string.IsNullOrEmpty(VgmStatus.status)) VGMSTATUS = VGMSTATUS + ",VGM状态='"+ VgmStatus.status + "'";
if (!string.IsNullOrEmpty(VgmStatus.vgmLink)) VGMSTATUS = VGMSTATUS + ",VGMURL='" + VgmStatus.vgmLink + "'";
VGMSTATUS = VGMSTATUS + " WHERE 业务编号='" + VgmStatus.bsno+ "'";
db.ExecuteNonQuery(tran, CommandType.Text, VGMSTATUS);
// }
// }
//}
tran.Commit();
}
catch (Exception e)
{
tran.Rollback();
result.Success = false;
result.Message = e.Message;
return result;
}
}
result.Success = true;
result.Message ="";
return result;
}
public static DBResult UpdateYardStatus(YardStatus VgmStatus)
{
var result = new DBResult();
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var VGMSTATUS = "update t_op_seae SET 业务编号=业务编号";
if (VgmStatus.status) VGMSTATUS = VGMSTATUS + ",核对提单=1";
else VGMSTATUS = VGMSTATUS + ",核对提单=0";
VGMSTATUS = VGMSTATUS + " WHERE 业务编号='" + VgmStatus.bsno + "'";
db.ExecuteNonQuery(tran, CommandType.Text, VGMSTATUS);
tran.Commit();
}
catch (Exception e)
{
tran.Rollback();
result.Success = false;
result.Message = e.Message;
return result;
}
}
result.Success = true;
result.Message = "";
return result;
}
public static DBResult ImportCdData(MsOpSeaeEdi bill)
{
var result = new DBResult();
Database db = DatabaseFactory.CreateDatabase();
using (var conn = db.CreateConnection())
{
conn.Open();
var tran = conn.BeginTransaction();
try
{
var cmdInsert =
db.GetSqlStringCommand(
@"INSERT INTO op_seae_edi(编号,主编号,EDI类型,EDI状态,录入人,录入日期,业务编号,主提单号,分提单号,发货人企业代码
,发货人名称,发货人地址1,发货人地址2,发货人国家代码,发货人电话,收货人企业代码,收货人名称,收货人地址1,收货人地址2
,收货人国家代码,收货人电话,通知人企业代码,通知人名称,通知人地址1,通知人地址2,通知人国家代码,通知人电话
,船名,航次,开船日期,装港代码,装货港,卸货代码,卸货港,交货代码,交货地点
,目的代码,目的地,运输条款,唛头,货物描述,件数,包装,重量,尺码,货物标识,危险品分类
,危险品编号,冷藏通风量,温度单位,设置温度,船舶IMO,船公司代码,装运类型,付费方式,场站,船公司,预抵日期,船代,委托发送方
,单价,应收,备注,危险品联系人,危险品电话,是否冻代干)
VALUES
(@BSNO,@MASTERNO,@EDITYPE,@EDISTATUS,@INPUTBY,@INPUTDATE,@CUSTNO,@MBLNO,@HBLNO,@SHIPPERCODE
,@SHIPPERNAME,@SHIPPERADDR1,@SHIPPERADDR2,@SHIPPERCOUNTRY,@SHIPPERTEL,@CONSIGNEECODE,@CONSIGNEENAME,@CONSIGNEEADDR1,@CONSIGNEEADDR2
,@CONSIGNEECOUNTRY,@CONSIGNEETEL,@NOTIFYPARTYCODE,@NOTIFYPARTYNAME,@NOTIFYPARTYADDR1,@NOTIFYPARTYADDR2,@NOTIFYPARTYCOUNTRY,@NOTIFYPARTYTEL
,@VESSEL,@VOYNO,@ETD,@PORTLOADID,@PORTLOAD,@PORTDISCHARGEID,@PORTDISCHARGE,@PLACEDELIVERYID,@PLACEDELIVERY
,@DESTINATIONID,@DESTINATION,@SERVICE,@MARKS,@DESCRIPTION,@PKGS,@KINDPKGS,@KGS,@CBM,@CARGOID,@DCLASS
,@DUNNO,@REEFERF,@TEMPID,@TEMPSET,@SHIPIMO,@CARRIERID,@TRANSTYPE,@BLFRT,@YARD,@CARRIER,@ETA,@FORWARDER,@CUSTOMERNAME
,@PRICE,@DRAMOUNT,@REMARK,@DATTN,@DTEL,@ISNOR) ");
var orderinputby = ConfigurationManager.AppSettings["orderinputby"];
//if (MsOpSeaeEdiList != null)
//{
// foreach (var bill in MsOpSeaeEdiList)
// {
var bsno = Get_id();
cmdInsert.Parameters.Clear();
db.AddInParameter(cmdInsert, "@BSNO", DbType.String, bsno);
db.AddInParameter(cmdInsert, "@MASTERNO", DbType.String, bsno);
db.AddInParameter(cmdInsert, "@EDITYPE", DbType.String, "CN");
db.AddInParameter(cmdInsert, "@EDISTATUS", DbType.String, "未发送");
db.AddInParameter(cmdInsert, "@INPUTBY", DbType.String, orderinputby);
db.AddInParameter(cmdInsert, "@INPUTDATE", DbType.DateTime, DateTime.Now);
db.AddInParameter(cmdInsert, "@CUSTNO", DbType.String, bsno);
db.AddInParameter(cmdInsert, "@MBLNO", DbType.String, bill.MBLNO);
db.AddInParameter(cmdInsert, "@HBLNO", DbType.String, bill.HBLNO);
db.AddInParameter(cmdInsert, "@SHIPPERCODE", DbType.String, bill.LeiXingFa+"+"+bill.SHIPPERCODE);
db.AddInParameter(cmdInsert, "@SHIPPERNAME", DbType.String, bill.SHIPPERNAME);
db.AddInParameter(cmdInsert, "@SHIPPERADDR1", DbType.String, bill.SHIPPERADDR1);
db.AddInParameter(cmdInsert, "@SHIPPERADDR2", DbType.String, bill.SHIPPERADDR2);
db.AddInParameter(cmdInsert, "@SHIPPERCOUNTRY", DbType.String, bill.SHIPPERCOUNTRY);
db.AddInParameter(cmdInsert, "@SHIPPERTEL", DbType.String, bill.SHIPPERTEL);
db.AddInParameter(cmdInsert, "@CONSIGNEECODE", DbType.String, bill.LeiXingShou + "+" + bill.CONSIGNEECODE);
db.AddInParameter(cmdInsert, "@CONSIGNEENAME", DbType.String, bill.CONSIGNEENAME);
db.AddInParameter(cmdInsert, "@CONSIGNEEADDR1", DbType.String, bill.CONSIGNEEADDR1);
db.AddInParameter(cmdInsert, "@CONSIGNEEADDR2", DbType.String, bill.CONSIGNEEADDR2);
db.AddInParameter(cmdInsert, "@CONSIGNEECOUNTRY", DbType.String, bill.CONSIGNEECOUNTRY);
db.AddInParameter(cmdInsert, "@CONSIGNEETEL", DbType.String, bill.CONSIGNEETEL);
db.AddInParameter(cmdInsert, "@NOTIFYPARTYCODE", DbType.String, bill.LeiXingShou + "+" + bill.NOTIFYPARTYCODE);
db.AddInParameter(cmdInsert, "@NOTIFYPARTYNAME", DbType.String, bill.NOTIFYPARTYNAME);
db.AddInParameter(cmdInsert, "@NOTIFYPARTYADDR1", DbType.String, bill.NOTIFYPARTYADDR1);
db.AddInParameter(cmdInsert, "@NOTIFYPARTYADDR2", DbType.String, bill.NOTIFYPARTYADDR2);
db.AddInParameter(cmdInsert, "@NOTIFYPARTYCOUNTRY", DbType.String, bill.NOTIFYPARTYCOUNTRY);
db.AddInParameter(cmdInsert, "@NOTIFYPARTYTEL", DbType.String, bill.NOTIFYPARTYTEL);
db.AddInParameter(cmdInsert, "@VESSEL", DbType.String, bill.VESSEL);
db.AddInParameter(cmdInsert, "@VOYNO", DbType.String, bill.VOYNO);
db.AddInParameter(cmdInsert, "@ETD", DbType.String, bill.ETD);
db.AddInParameter(cmdInsert, "@PORTLOADID", DbType.String, bill.PORTLOADID);
db.AddInParameter(cmdInsert, "@PORTLOAD", DbType.String, bill.PORTLOAD);
db.AddInParameter(cmdInsert, "@PORTDISCHARGEID", DbType.String, bill.PORTDISCHARGEID);
db.AddInParameter(cmdInsert, "@PORTDISCHARGE", DbType.String, bill.PORTDISCHARGE);
db.AddInParameter(cmdInsert, "@PLACEDELIVERYID", DbType.String, bill.PLACEDELIVERYID);
db.AddInParameter(cmdInsert, "@PLACEDELIVERY", DbType.String, bill.PLACEDELIVERY);
db.AddInParameter(cmdInsert, "@DESTINATIONID", DbType.String, bill.DESTINATIONID);
db.AddInParameter(cmdInsert, "@DESTINATION", DbType.String, bill.DESTINATION);
db.AddInParameter(cmdInsert, "@SERVICE", DbType.String, bill.SERVICE);
db.AddInParameter(cmdInsert, "@MARKS", DbType.String, bill.MARKS);
db.AddInParameter(cmdInsert, "@PKGS", DbType.String, bill.PKGS);
db.AddInParameter(cmdInsert, "@KINDPKGS", DbType.String, bill.KINDPKGS);
db.AddInParameter(cmdInsert, "@KGS", DbType.String, bill.KGS);
db.AddInParameter(cmdInsert, "@CBM", DbType.String, bill.CBM);
db.AddInParameter(cmdInsert, "@CARGOID", DbType.String, bill.CARGOID);
db.AddInParameter(cmdInsert, "@DCLASS", DbType.String, bill.DCLASS);
db.AddInParameter(cmdInsert, "@DUNNO", DbType.String, bill.DUNNO);
db.AddInParameter(cmdInsert, "@REEFERF", DbType.String, bill.REEFERF);
db.AddInParameter(cmdInsert, "@TEMPID", DbType.String, bill.TEMPID);
db.AddInParameter(cmdInsert, "@TEMPSET", DbType.String, bill.TEMPSET);
db.AddInParameter(cmdInsert, "@SHIPIMO", DbType.String, bill.SHIPIMO);
db.AddInParameter(cmdInsert, "@CARRIERID", DbType.String, bill.CARRIERID);
db.AddInParameter(cmdInsert, "@TRANSTYPE", DbType.String, bill.TRANSTYPE);
db.AddInParameter(cmdInsert, "@BLFRT", DbType.String, bill.BLFRT);
db.AddInParameter(cmdInsert, "@YARD", DbType.String, bill.YARD);
db.AddInParameter(cmdInsert, "@CARRIER", DbType.String, bill.CARRIER);
db.AddInParameter(cmdInsert, "@ETA", DbType.String, bill.ETA);
db.AddInParameter(cmdInsert, "@FORWARDER", DbType.String, bill.FORWARDER);
db.AddInParameter(cmdInsert, "@CUSTOMERNAME", DbType.String, bill.WeiTuoFaSongFang);
db.AddInParameter(cmdInsert, "@PRICE", DbType.String, bill.PRICE);
db.AddInParameter(cmdInsert, "@DRAMOUNT", DbType.String, bill.DRAMOUNT);
db.AddInParameter(cmdInsert, "@REMARK", DbType.String, bill.SENDREMARK);
db.AddInParameter(cmdInsert, "@DATTN", DbType.String, bill.DATTN);
db.AddInParameter(cmdInsert, "@DTEL", DbType.String, bill.DTEL);
db.AddInParameter(cmdInsert, "@ISNOR", DbType.Boolean, bill.ISNOR);
db.ExecuteNonQuery(cmdInsert, tran);
if (bill.CTNLIST != null) {
foreach (var ctn in bill.CTNLIST)
{
var cmdInsertCtn = db.GetSqlStringCommand(@"insert into t_op_ctn_edi (编号,代码,尺寸,箱型,数量,TEU,表现形式,箱号,封号,件数,重量,尺码,包装,重箱整箱标志,施封人) values ('" + bsno + "','"
+ ctn.CTNCODE + "','" + ctn.SIZE + "','" + ctn.CTN + "'," + ctn.CTNNUM + "," + ctn.TEU + ",'" + ctn.CTNALL.Replace("'", "''") + "','" + ctn.CNTRNO + "','" + ctn.SEALNO + "','" + ctn.PKGS + "'," + ctn.KGS + ","
+ ctn.CBM + ",'" + ctn.KINDPKGS + "','" + ctn.ZhongKongBiaoShi + "','" + ctn.ShiFengRen+ "')");
db.ExecuteNonQuery(cmdInsertCtn, tran);
}
}
// }
//}
tran.Commit();
}
catch (Exception e)
{
tran.Rollback();
result.Success = false;
result.Message = e.Message;
return result;
}
}
result.Success = true;
result.Message = "";
return result;
}
public static string Get_id()
{
Database db = DatabaseFactory.CreateDatabase();
var cmd = db.GetStoredProcCommand("p_id");
db.AddOutParameter(cmd, "@str", DbType.String, 12);
db.ExecuteNonQuery(cmd);
return Convert.ToString(db.GetParameterValue(cmd, "@str"));
}
public static string GetBsNo()
{
Database db = DatabaseFactory.CreateDatabase();
var cmd = db.GetStoredProcCommand("p_no_get");
db.AddInParameter(cmd, "@Code", DbType.String,"SI"+DateTime.Now.ToString("yyyyMM"));
db.AddOutParameter(cmd, "@Num", DbType.String, 12);
db.ExecuteNonQuery(cmd);
return Convert.ToString(db.GetParameterValue(cmd, "@Num"));
}
static public int GetSeaiRdCount(string strCondition)
{
var strSql = new StringBuilder();
strSql.Append("SELECT Count(*) AS CT from t_op_seai (NOLOCK) ");
if (strCondition.Trim() != String.Empty)
{
strSql.Append(" where " + strCondition);
}
var ct = 0;
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
ct = Convert.ToInt16(reader["CT"]);
}
reader.Close();
}
return ct;
}
static public string GetSeaiBSNO(string strCondition)
{
var strSql = new StringBuilder();
strSql.Append("SELECT 编号 BSNO from t_op_seai (NOLOCK) ");
if (strCondition.Trim() != String.Empty)
{
strSql.Append(" where " + strCondition);
}
var BSNO="";
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
BSNO= Convert.ToString(reader["BSNO"]);
}
reader.Close();
}
return BSNO;
}
static public string GetFeeRate(string strCondition)
{
var strSql = new StringBuilder();
strSql.Append("SELECT 英文名 RATE from t_code_fee (NOLOCK) ");
if (strCondition.Trim() != String.Empty)
{
strSql.Append(" where " + strCondition);
}
var BSNO = "";
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
BSNO = Convert.ToString(reader["RATE"]);
}
reader.Close();
}
return BSNO;
}
public static OpSeaeModel GetOneByBSNO(string bsno)
{
var strSql = new StringBuilder();
strSql.AppendLine("SELECT BSNO,VESSEL,VOYNO,MBLNO,INVNO,ETD,ATD,CNTRTOTAL,KGS,YARD,CNTRSEALNO,CUSTOMNO,");
strSql.AppendLine("(SELECT dbo.Fun_JoinFactoryAddr(S.BSNO)) FACTORYADDR,");
strSql.AppendLine("ISNULL((SELECT TOP 1 CARGODATE FROM OP_LETTER_TRUCK WHERE BSNO=S.BSNO ORDER BY TRUCKDATE DESC),'') CARGODATE,");
strSql.AppendLine("(SELECT COMPTIME FROM OP_STATUS WHERE BSNO=S.BSNO AND ISCOMP=1 and [status]='重箱返场') STA_ZXFC,");
strSql.AppendLine("(SELECT COMPTIME FROM OP_STATUS WHERE BSNO=S.BSNO AND ISCOMP=1 and [status]='海关放行') STA_HGFX");
strSql.AppendLine("FROM OP_SEAE S");
strSql.AppendLine($"WHERE BSNO='{bsno}'");
var list = SetData(strSql);
if (list.Count > 0)
{
return list[0];
}
return null;
}
}
}