|
|
using System;
|
|
|
using System.Data;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Text;
|
|
|
using DSWeb.MvcShipping.Models.MsOpSeai;
|
|
|
using Microsoft.Practices.EnterpriseLibrary.Data;
|
|
|
using DSWeb.EntityDA;
|
|
|
using DSWeb.Areas.CommMng.Models;
|
|
|
using HcUtility.Comm;
|
|
|
using System.Data.SqlClient;
|
|
|
using DSWeb.DataAccess;
|
|
|
using HcUtility.Core;
|
|
|
using System.IO;
|
|
|
using DSWeb.Areas.CommMng.DAL;
|
|
|
using DSWeb.MvcShipping.Models.FtpSet;
|
|
|
using DSWeb.MvcShipping.DAL.MsCodeCtnEdi;
|
|
|
using DSWeb.MvcShipping.Models.MsOpSeaeToSeai;
|
|
|
using DSWeb.MvcShipping.DAL.MsSysParamSet;
|
|
|
using Terminal_CDMA;
|
|
|
using System.Data.Common;
|
|
|
using DSWeb.MvcShipping.Models.CompanyDef;
|
|
|
using DSWeb.MvcShipping.Models.MsOpApply;
|
|
|
using Attribute = com.sun.tools.javac.code.Attribute;
|
|
|
|
|
|
using DSWeb.MvcShipping.Models.WMSNew;
|
|
|
using DSWeb.MvcShipping.DAL.MsSysBillNoSet;
|
|
|
|
|
|
namespace DSWeb.MvcShipping.DAL.MsOpSeaiDAL
|
|
|
{
|
|
|
public class MsOpSeaiDAL
|
|
|
{
|
|
|
#region 查询
|
|
|
static public List<MsOpSeai> GetDataList(string strCondition, string userid, string usercode, string companyid,string sort = null)
|
|
|
{
|
|
|
var rangstr = GetRangDAStr("index", userid, usercode, companyid);
|
|
|
if (!string.IsNullOrEmpty(rangstr))
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strCondition = strCondition + " and " + rangstr;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strCondition = rangstr;
|
|
|
}
|
|
|
}
|
|
|
//
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("SELECT VW_OP_SEAI.*");
|
|
|
strSql.Append(",0 as FENPIAO ,(SELECT TOP 1 BLSTATUS FROM op_blissue WHERE BSNO=VW_OP_SEAI.BSNO) BLISSUESTATUS ");
|
|
|
strSql.Append(",dbo.F_GetBillDrFeeStatus(VW_OP_SEAI.BSNO) DRFEESTATUS");
|
|
|
strSql.Append(",dbo.F_GetBillCrFeeStatus(VW_OP_SEAI.BSNO) CRFEESTATUS");
|
|
|
strSql.Append(",I.TTLDR,I.TTLINVDR,I.TTLDUIDR");
|
|
|
strSql.Append(",(SELECT COUNT(*) FROM OP_APPLY WHERE MASTERNO=VW_OP_SEAI.BSNO) as APPLYCOUNT ");
|
|
|
strSql.Append(",(SELECT COUNT(*) FROM OP_AMEND WHERE PARENTID=VW_OP_SEAI.BSNO) as AMENDCOUNT ");
|
|
|
strSql.Append(",(SELECT SUM(CTNNUM) FROM OP_CTN WHERE BSNO=VW_OP_SEAI.BSNO) as CTNNUM ");
|
|
|
strSql.Append(",(SELECT COUNT(DISTINCT CNTRNO) FROM wms_in WHERE ISNULL(CNTRNO,'')<>'' AND ASSOCIATEDNO=VW_OP_SEAI.BSNO) as WMSCTNNUM ");
|
|
|
strSql.Append(",(select TOP 1 COLOR FROM code_op_status_detail WITH(NOLOCK) WHERE OPSTATUS =VW_OP_SEAI.OPSTATUS) as OPSTATUSCOLOR ");
|
|
|
strSql.Append(",v.CHANGEDOCSTATUS,v.CUSTOMSSTATUS,v.CANGDANSTATUS");
|
|
|
|
|
|
|
|
|
|
|
|
//strSql.Append(",(CASE FEESTATUS WHEN 1 THEN '锁定' else '' end) as FEESTATUSREF ");
|
|
|
|
|
|
strSql.Append(" from VW_OP_SEAI LEFT JOIN v_op_gain_dr_INV I ON (I.BSNO=VW_OP_SEAI.BSNO) ");
|
|
|
|
|
|
strSql.Append(" left join (select bsno, sum(case when[status] = '换单' then 1 else 0 end) CHANGEDOCSTATUS, sum(case when [status] = '海关放行' then 1 else 0 end) CUSTOMSSTATUS");
|
|
|
strSql.Append(", sum(case when [status] = '舱单' then 1 else 0 end) CANGDANSTATUS from op_status WITH (NOLOCK) GROUP BY BSNO) as v on(v.bsno = VW_OP_SEAI.BSNO) ");
|
|
|
|
|
|
|
|
|
strSql.Append(" where VW_OP_SEAI.MASTERNO=VW_OP_SEAI.BSNO ");
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strSql.Append(" AND EXISTS ( select 1 from VW_OP_SEAI B WHERE VW_OP_SEAI.BSNO=B.MASTERNO AND " + strCondition + " )");
|
|
|
}
|
|
|
//
|
|
|
var sortstring = DatasetSort.Getsortstring(sort);
|
|
|
if (!string.IsNullOrEmpty(sortstring))
|
|
|
{
|
|
|
strSql.Append(" order by " + sortstring);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
var SeaeDefaultSort = MsSysParamSetDAL.GetData("PARAMNAME='SeaiDefaultSort'");
|
|
|
if (SeaeDefaultSort.PARAMVALUE != "")
|
|
|
strSql.Append(" order by " + SeaeDefaultSort.PARAMVALUE);
|
|
|
else
|
|
|
strSql.Append(" order by ETD desc,MBLNO,BSDATE desc");
|
|
|
}
|
|
|
return SetData(strSql);
|
|
|
}
|
|
|
|
|
|
static public List<MsOpSeai> GetDataList(int start, int limit, string strCondition, string userid, string usercode, string companyid, string sort = null)
|
|
|
{
|
|
|
var rangstr = GetRangDAStr("index", userid, usercode, companyid);
|
|
|
if (!string.IsNullOrEmpty(rangstr))
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strCondition = strCondition + " and " + rangstr;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strCondition = rangstr;
|
|
|
}
|
|
|
}
|
|
|
//
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(@"SELECT * from (SELECT row_number() over (");
|
|
|
|
|
|
var sortstring = DatasetSort.Getsortstring(sort);
|
|
|
if (!string.IsNullOrEmpty(sortstring))
|
|
|
{
|
|
|
if (sortstring.ToUpper().IndexOf("DRFEESTATUS") >= 0)
|
|
|
strSql.Append(" order by " + sortstring.Replace("DRFEESTATUS", " dbo.F_GetBillDrFeeStatus(VW_OP_SEAI.BSNO) "));
|
|
|
else if (sortstring.ToUpper().IndexOf("CRFEESTATUS") >= 0)
|
|
|
strSql.Append(" order by " + sortstring.Replace("CRFEESTATUS", " dbo.F_GetBillCrFeeStatus(VW_OP_SEAI.BSNO) "));
|
|
|
else if (sortstring.ToUpper().IndexOf("AMEND") >= 0)
|
|
|
strSql.Append(" order by " + sortstring.Replace("AMEND", " CASE WHEN (SELECT COUNT(*) FROM OP_AMEND WHERE PARENTID=VW_OP_SEAI.BSNO)>0 THEN 1 ELSE 0 END "));
|
|
|
else if (sortstring.ToUpper().IndexOf("DRINVSTATUS") >= 0)
|
|
|
strSql.Append(" order by " + sortstring.Replace("DRINVSTATUS", " CASE WHEN ISNULL(I.TTLINVDR,0)=0 THEN '未开票' ELSE CASE WHEN ISNULL(I.TTLINVDR,0)=ISNULL(I.TTLDR,0) THEN '已开票' ELSE '部分开票' END END "));
|
|
|
else if (sortstring.ToUpper().IndexOf("DRDUISTATUS") >= 0)
|
|
|
strSql.Append(" order by " + sortstring.Replace("DRDUISTATUS", " CASE WHEN ISNULL(I.TTLDUIDR,0)=0 THEN '未对账' ELSE CASE WHEN ISNULL(I.TTLDUIDR,0)=ISNULL(I.TTLDR,0) THEN '已对账' ELSE '部分对账' END END "));
|
|
|
else
|
|
|
{
|
|
|
strSql.Append(" order by " + sortstring);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
var SeaeDefaultSort = MsSysParamSetDAL.GetData("PARAMNAME='SeaiDefaultSort'");
|
|
|
if (SeaeDefaultSort.PARAMVALUE != "")
|
|
|
strSql.Append(" order by " + SeaeDefaultSort.PARAMVALUE );
|
|
|
else
|
|
|
strSql.Append(" order by ETD desc,MBLNO,BSDATE desc");
|
|
|
}
|
|
|
|
|
|
strSql.Append(@") as num , ");
|
|
|
|
|
|
strSql.Append(" VW_OP_SEAI.*");
|
|
|
strSql.Append(",0 as FENPIAO,(SELECT TOP 1 BLSTATUS FROM op_blissue WHERE BSNO=VW_OP_SEAI.BSNO) BLISSUESTATUS ");
|
|
|
strSql.Append(",dbo.F_GetBillDrFeeStatus(VW_OP_SEAI.BSNO) DRFEESTATUS");
|
|
|
strSql.Append(",dbo.F_GetBillCrFeeStatus(VW_OP_SEAI.BSNO) CRFEESTATUS");
|
|
|
strSql.Append(",I.TTLDR,I.TTLINVDR,I.TTLDUIDR");
|
|
|
strSql.Append(",(SELECT COUNT(*) FROM OP_APPLY WHERE MASTERNO=VW_OP_SEAI.BSNO) as APPLYCOUNT ");
|
|
|
strSql.Append(",(SELECT COUNT(*) FROM OP_AMEND WHERE PARENTID=VW_OP_SEAI.BSNO) as AMENDCOUNT ");
|
|
|
strSql.Append(",(SELECT SUM(CTNNUM) FROM OP_CTN WHERE BSNO=VW_OP_SEAI.BSNO) as CTNNUM ");
|
|
|
strSql.Append(",(SELECT COUNT(DISTINCT CNTRNO) FROM wms_in WHERE ISNULL(CNTRNO,'')<>'' AND ASSOCIATEDNO=VW_OP_SEAI.BSNO) as WMSCTNNUM ");
|
|
|
strSql.Append(",(select TOP 1 COLOR FROM code_op_status_detail WITH(NOLOCK) WHERE OPSTATUS =VW_OP_SEAI.OPSTATUS) as OPSTATUSCOLOR ");
|
|
|
strSql.Append(",v.CHANGEDOCSTATUS,v.CUSTOMSSTATUS,v.CANGDANSTATUS");
|
|
|
|
|
|
//strSql.Append(",dbo.trimdate(DEST_RTCNT_TIME) DEST_RTCNT_TIME ");
|
|
|
|
|
|
strSql.Append(" from VW_OP_SEAI LEFT JOIN v_op_gain_dr_INV I ON (I.BSNO=VW_OP_SEAI.BSNO) ");
|
|
|
|
|
|
strSql.Append(" left join (select bsno, sum(case when[status] = '换单' then 1 else 0 end) CHANGEDOCSTATUS, sum(case when [status] = '海关放行' then 1 else 0 end) CUSTOMSSTATUS");
|
|
|
strSql.Append(", sum(case when [status] = '舱单' then 1 else 0 end) CANGDANSTATUS from op_status WITH (NOLOCK) GROUP BY BSNO) as v on(v.bsno = VW_OP_SEAI.BSNO) ");
|
|
|
|
|
|
|
|
|
strSql.Append(" where VW_OP_SEAI.MASTERNO=VW_OP_SEAI.BSNO ");
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strSql.Append(" AND EXISTS ( select 1 from VW_OP_SEAI B WHERE VW_OP_SEAI.BSNO=B.MASTERNO AND " + strCondition + " )");
|
|
|
}
|
|
|
//
|
|
|
strSql.Append(@")as t ");
|
|
|
strSql.Append(string.Format("where t.num>{0} and t.num<={1} order by t.num ", start, start + limit)); //
|
|
|
|
|
|
return SetData(strSql);
|
|
|
}
|
|
|
|
|
|
public static int getTotalCount(string strCondition, string userid, string usercode, string companyid)
|
|
|
{
|
|
|
var rangstr = GetRangDAStr("index", userid, usercode, companyid);
|
|
|
if (!string.IsNullOrEmpty(rangstr))
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strCondition = strCondition + " and " + rangstr;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strCondition = rangstr;
|
|
|
}
|
|
|
}
|
|
|
StringBuilder strSql = new StringBuilder();
|
|
|
strSql.Append("select count(*) ");
|
|
|
strSql.Append(" from VW_OP_SEAI ");
|
|
|
strSql.Append(" LEFT JOIN v_op_gain_dr_INV I ON (I.BSNO=VW_OP_SEAI.BSNO) where VW_OP_SEAI.MASTERNO=VW_OP_SEAI.BSNO ");
|
|
|
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strSql.Append(" AND EXISTS ( select 1 from VW_OP_SEAI B WHERE VW_OP_SEAI.BSNO=B.MASTERNO AND " + strCondition + " )");
|
|
|
}
|
|
|
int cnt = 0;
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
cnt = Convert.ToInt32(reader[0]);
|
|
|
}
|
|
|
}
|
|
|
return cnt;
|
|
|
}
|
|
|
|
|
|
|
|
|
static public List<MsOpSeai> GetSaleDataList(string strCondition, string username, string companyid, string sort = null,string userid="")
|
|
|
{
|
|
|
var rangstr = GetSaleRangDAStr("index", userid, username, companyid);
|
|
|
if (!string.IsNullOrEmpty(rangstr))
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strCondition = strCondition + " and " + rangstr;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strCondition = rangstr;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("SELECT B.*");
|
|
|
strSql.Append(",0 as FENPIAO,(SELECT TOP 1 BLSTATUS FROM op_blissue WHERE BSNO=B.BSNO) BLISSUESTATUS ");
|
|
|
strSql.Append(",dbo.F_GetBillDrFeeStatus(B.BSNO) DRFEESTATUS");
|
|
|
strSql.Append(",dbo.F_GetBillCrFeeStatus(B.BSNO) CRFEESTATUS");
|
|
|
strSql.Append(",I.TTLDR,I.TTLINVDR,I.TTLDUIDR,0 APPLYCOUNT,0 AMENDCOUNT ");
|
|
|
strSql.Append(",0 as CTNNUM ");
|
|
|
strSql.Append(",0 as WMSCTNNUM ");
|
|
|
strSql.Append(",'' as OPSTATUSCOLOR ");
|
|
|
strSql.Append(",0 CHANGEDOCSTATUS,0 CUSTOMSSTATUS,0 CANGDANSTATUS");
|
|
|
|
|
|
strSql.Append(" from VW_OP_SEAI B LEFT JOIN v_op_gain_dr_INV I ON (I.BSNO=B.BSNO) ");
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strSql.Append(" where " + strCondition);
|
|
|
}
|
|
|
|
|
|
|
|
|
var sortstring = DatasetSort.Getsortstring(sort);
|
|
|
if (!string.IsNullOrEmpty(sortstring))
|
|
|
{
|
|
|
strSql.Append(" order by " + sortstring);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
var SeaeDefaultSort = MsSysParamSetDAL.GetData("PARAMNAME='SeaiDefaultSort'");
|
|
|
if (SeaeDefaultSort.PARAMVALUE != "")
|
|
|
strSql.Append(" order by " + SeaeDefaultSort.PARAMVALUE);
|
|
|
else
|
|
|
strSql.Append(" order by ETD desc,MBLNO,BSDATE desc");
|
|
|
}
|
|
|
return SetData(strSql);
|
|
|
}
|
|
|
|
|
|
#region 更改单
|
|
|
|
|
|
static public List<MsOpSeai> GetAmendDataList(int start, int limit, string strCondition, string userid, string usercode, string companyid, string sort = null, string load = null)
|
|
|
{
|
|
|
var rangstr = GetRangDAStr("index", userid, usercode, companyid);
|
|
|
if (!string.IsNullOrEmpty(rangstr))
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strCondition = strCondition + " and " + rangstr;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strCondition = rangstr;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
|
|
|
strSql.Append(@"SELECT * from (SELECT row_number() over (");
|
|
|
|
|
|
var sortstring = DatasetSort.Getsortstring(sort);
|
|
|
if (!string.IsNullOrEmpty(sortstring))
|
|
|
{
|
|
|
|
|
|
strSql.Append(" order by " + sortstring);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strSql.Append(" order by BSDATE desc");
|
|
|
}
|
|
|
strSql.Append(@") as num , ");
|
|
|
|
|
|
strSql.Append(" B.*");
|
|
|
strSql.Append(",0 as FENPIAO ,(SELECT TOP 1 BLSTATUS FROM op_blissue WHERE BSNO=B.BSNO) BLISSUESTATUS ");
|
|
|
strSql.Append(",dbo.F_GetBillDrFeeStatus(B.BSNO) DRFEESTATUS");
|
|
|
strSql.Append(",dbo.F_GetBillCrFeeStatus(B.BSNO) CRFEESTATUS");
|
|
|
strSql.Append(",0 APPLYCOUNT ");
|
|
|
strSql.Append(",0 AMENDCOUNT ");
|
|
|
strSql.Append(",0 as CTNNUM ");
|
|
|
strSql.Append(",0 as WMSCTNNUM ");
|
|
|
strSql.Append(",'' as OPSTATUSCOLOR ");
|
|
|
strSql.Append(",0 CHANGEDOCSTATUS,0 CUSTOMSSTATUS,0 CANGDANSTATUS");
|
|
|
|
|
|
strSql.Append(" FROM VW_OP_SEAI_AMEND B ");
|
|
|
|
|
|
|
|
|
strSql.Append(" WHERE B.BSSTATUS IS NOT NULL ");
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strSql.Append(" AND " + strCondition);
|
|
|
}
|
|
|
|
|
|
strSql.Append(@")as t ");
|
|
|
strSql.Append(string.Format("where t.num>={0} and t.num<={1} order by t.num", start, start + limit)); //
|
|
|
|
|
|
return SetData(strSql);
|
|
|
}
|
|
|
|
|
|
public static int getAmendTotalCount(string strCondition, string userid, string usercode, string companyid)
|
|
|
{
|
|
|
var rangstr = GetRangDAStr("index", userid, usercode, companyid);
|
|
|
if (!string.IsNullOrEmpty(rangstr))
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strCondition = strCondition + " and " + rangstr;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strCondition = rangstr;
|
|
|
}
|
|
|
}
|
|
|
StringBuilder strSql = new StringBuilder();
|
|
|
strSql.Append("select count(*) ");
|
|
|
strSql.Append(" from VW_OP_SEAI_AMEND B ");
|
|
|
|
|
|
strSql.Append(" WHERE B.BSSTATUS IS NOT NULL ");
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strSql.Append(" AND " + strCondition);
|
|
|
}
|
|
|
int cnt = 0;
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
cnt = Convert.ToInt32(reader[0]);
|
|
|
}
|
|
|
}
|
|
|
return cnt;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
static public DBResult GetAmendDataStr(string strCondition, string userid, string usercode, string companyid, string sort = null, string load = null)
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
var rangstr = GetRangDAStr("index", userid, usercode, companyid);
|
|
|
if (!string.IsNullOrEmpty(rangstr))
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strCondition = strCondition + " and " + rangstr;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strCondition = rangstr;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
|
|
|
|
|
|
strSql.Append("SELECT VW_OP_SEAI_AMEND.*");
|
|
|
strSql.Append(",0 as FENPIAO,'' BLISSUESTATUS ");
|
|
|
strSql.Append(",dbo.F_GetBillDrFeeStatus(VW_OP_SEAI.BSNO) DRFEESTATUS");
|
|
|
strSql.Append(",dbo.F_GetBillCrFeeStatus(VW_OP_SEAI.BSNO) CRFEESTATUS");
|
|
|
strSql.Append(",(SELECT COUNT(*) FROM OP_APPLY WHERE MASTERNO=VW_OP_SEAI.BSNO) as APPLYCOUNT ");
|
|
|
strSql.Append(",(SELECT COUNT(*) FROM OP_AMEND WHERE PARENTID=VW_OP_SEAI.BSNO) as AMENDCOUNT ");
|
|
|
strSql.Append(" FROM VW_OP_SEAI_AMEND B ");
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strSql.Append(" where " + strCondition);
|
|
|
}
|
|
|
|
|
|
var sortstring = DatasetSort.Getsortstring(sort);
|
|
|
if (!string.IsNullOrEmpty(sortstring))
|
|
|
{
|
|
|
strSql.Append(" order by " + sortstring);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strSql.Append(" order by BSDATE desc");
|
|
|
}
|
|
|
|
|
|
result.Data = strSql.ToString();
|
|
|
result.Message = strCondition;
|
|
|
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static public List<MsOpSeai> GetFenList(string strCondition, string userid, string usercode, string companyid, string sort = null)
|
|
|
{
|
|
|
var rangstr = GetRangDAStr("index", userid, usercode, companyid);
|
|
|
if (!string.IsNullOrEmpty(rangstr))
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strCondition = strCondition + " and " + rangstr;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strCondition = rangstr;
|
|
|
}
|
|
|
}
|
|
|
//
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("SELECT *");
|
|
|
strSql.Append(",0 as FENPIAO,(SELECT TOP 1 BLSTATUS FROM op_blissue WHERE BSNO=B.BSNO) BLISSUESTATUS ");
|
|
|
strSql.Append(",dbo.F_GetBillDrFeeStatus(B.BSNO) DRFEESTATUS");
|
|
|
strSql.Append(",dbo.F_GetBillCrFeeStatus(B.BSNO) CRFEESTATUS,0 TTLDR,0 TTLINVDR,0 TTLDUIDR,0 APPLYCOUNT,0 AMENDCOUNT");
|
|
|
strSql.Append(",0 as CTNNUM ");
|
|
|
strSql.Append(",0 as WMSCTNNUM ");
|
|
|
strSql.Append(",'' as OPSTATUSCOLOR ");
|
|
|
strSql.Append(",0 CHANGEDOCSTATUS,0 CUSTOMSSTATUS,0 CANGDANSTATUS");
|
|
|
|
|
|
//strSql.Append(",(CASE FEESTATUS WHEN 1 THEN '锁定' else '' end) as FEESTATUSREF ");
|
|
|
strSql.Append(" from VW_OP_SEAI B where 1=1 ");
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strSql.Append(" and " + strCondition);
|
|
|
}
|
|
|
//
|
|
|
var sortstring = DatasetSort.Getsortstring(sort);
|
|
|
if (!string.IsNullOrEmpty(sortstring))
|
|
|
{
|
|
|
strSql.Append(" order by " + sortstring);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strSql.Append(" order by BSDATE desc");
|
|
|
}
|
|
|
return SetData(strSql);
|
|
|
}
|
|
|
|
|
|
static public string GetDataListStr(string strCondition, string userid, string usercode, string companyid, string sort = null)
|
|
|
{
|
|
|
var rangstr = GetRangDAStr("index", userid, usercode, companyid);
|
|
|
if (!string.IsNullOrEmpty(rangstr))
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strCondition = strCondition + " and " + rangstr;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strCondition = rangstr;
|
|
|
}
|
|
|
}
|
|
|
//
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("SELECT * ");
|
|
|
strSql.Append(",CASE WHEN ISNULL(TTLINVDR,0)=0 THEN '未开票' WHEN ISNULL(TTLINVDR,0)=ISNULL(TTLDR,0) THEN '已开票' WHEN ISNULL(TTLINVDR,0)!=ISNULL(TTLDR,0) THEN '部分开票' END DRINVSTATUS ");
|
|
|
strSql.Append(",CASE WHEN ISNULL(TTLDUIDR,0)=0 THEN '未对账' WHEN ISNULL(TTLDUIDR,0)=ISNULL(TTLDR,0) THEN '已对账' WHEN ISNULL(TTLDUIDR,0)!=ISNULL(TTLDR,0) THEN '部分对账' END DRDUISTATUS ");
|
|
|
strSql.Append(",APPLYCOUNT ISAPPLY,AMENDCOUNT AMEND from (");
|
|
|
strSql.Append("SELECT ");
|
|
|
strSql.Append(" VW_OP_SEAI.*");
|
|
|
strSql.Append(",0 as FENPIAO,(SELECT TOP 1 BLSTATUS FROM op_blissue WHERE BSNO=VW_OP_SEAI.BSNO) BLISSUESTATUS ");
|
|
|
strSql.Append(",dbo.F_GetBillDrFeeStatus(VW_OP_SEAI.BSNO) DRFEESTATUS");
|
|
|
strSql.Append(",dbo.F_GetBillCrFeeStatus(VW_OP_SEAI.BSNO) CRFEESTATUS");
|
|
|
strSql.Append(",I.TTLDR,I.TTLINVDR,I.TTLDUIDR");
|
|
|
strSql.Append(",(SELECT COUNT(*) FROM OP_APPLY WHERE MASTERNO=VW_OP_SEAI.BSNO) as APPLYCOUNT ");
|
|
|
strSql.Append(",(SELECT COUNT(*) FROM OP_AMEND WHERE PARENTID=VW_OP_SEAI.BSNO) as AMENDCOUNT ");
|
|
|
strSql.Append(",(SELECT SUM(CTNNUM) FROM OP_CTN WHERE BSNO=VW_OP_SEAI.BSNO) as CTNNUM ");
|
|
|
strSql.Append(",(SELECT COUNT(DISTINCT CNTRNO) FROM wms_in WHERE ISNULL(CNTRNO,'')<>'' AND ASSOCIATEDNO=VW_OP_SEAI.BSNO) as WMSCTNNUM ");
|
|
|
strSql.Append(",(select TOP 1 COLOR FROM code_op_status_detail WITH(NOLOCK) WHERE OPSTATUS =VW_OP_SEAI.OPSTATUS) as OPSTATUSCOLOR ");
|
|
|
strSql.Append(",v.CHANGEDOCSTATUS,v.CUSTOMSSTATUS,v.CANGDANSTATUS");
|
|
|
|
|
|
//strSql.Append(",dbo.trimdate(DEST_RTCNT_TIME) DEST_RTCNT_TIME ");
|
|
|
|
|
|
strSql.Append(" from VW_OP_SEAI LEFT JOIN v_op_gain_dr_INV I ON (I.BSNO=VW_OP_SEAI.BSNO) ");
|
|
|
|
|
|
strSql.Append(" left join (select bsno, sum(case when[status] = '换单' then 1 else 0 end) CHANGEDOCSTATUS, sum(case when [status] = '海关放行' then 1 else 0 end) CUSTOMSSTATUS");
|
|
|
strSql.Append(", sum(case when [status] = '舱单' then 1 else 0 end) CANGDANSTATUS from op_status WITH (NOLOCK) GROUP BY BSNO) as v on(v.bsno = VW_OP_SEAI.BSNO) ");
|
|
|
|
|
|
|
|
|
strSql.Append(" where VW_OP_SEAI.MASTERNO=VW_OP_SEAI.BSNO ");
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strSql.Append(" AND EXISTS ( select 1 from VW_OP_SEAI B WHERE VW_OP_SEAI.BSNO=B.MASTERNO AND " + strCondition + " )");
|
|
|
}
|
|
|
strSql.Append(" ) as T ");
|
|
|
//
|
|
|
var sortstring = DatasetSort.Getsortstring(sort);
|
|
|
if (!string.IsNullOrEmpty(sortstring))
|
|
|
{
|
|
|
strSql.Append(" order by " + sortstring);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strSql.Append(" order by BSDATE desc");
|
|
|
}
|
|
|
return strSql.ToString();
|
|
|
}
|
|
|
|
|
|
static public MsOpSeai GetData(string condition)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("SELECT B.*,'' BLISSUESTATUS");
|
|
|
strSql.Append(",(SELECT COUNT(*) FROM OP_SEAI WHERE BSNO<>MASTERNO AND MASTERNO=B.BSNO) as FENPIAO ");
|
|
|
strSql.Append(",'' DRFEESTATUS");
|
|
|
strSql.Append(",'' CRFEESTATUS,0 TTLDR,0 TTLINVDR,0 TTLDUIDR,0 APPLYCOUNT,0 AMENDCOUNT");
|
|
|
strSql.Append(",0 as CTNNUM ");
|
|
|
strSql.Append(",0 as WMSCTNNUM ");
|
|
|
strSql.Append(",(select top 1 COUNTRYID from code_country where B.COUNTRYOFORIGIN=COUNTRY) as COUNTRYID ");
|
|
|
strSql.Append(",'' as OPSTATUSCOLOR ");
|
|
|
strSql.Append(",0 CHANGEDOCSTATUS,0 CUSTOMSSTATUS,0 CANGDANSTATUS");
|
|
|
|
|
|
//strSql.Append(",(CASE FEESTATUS WHEN 1 THEN '锁定' else '未锁定' end) as FEESTATUSREF ");
|
|
|
strSql.Append(" from VW_OP_SEAI B where 1=1 ");
|
|
|
if (!string.IsNullOrEmpty(condition))
|
|
|
{
|
|
|
strSql.Append(" and " + condition);
|
|
|
}
|
|
|
var list=SetData(strSql);
|
|
|
if (list.Count > 0)
|
|
|
return list[0];
|
|
|
return new MsOpSeai();
|
|
|
}
|
|
|
|
|
|
static public CountryModel GetCountryModelData(string condition)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("SELECT B.*,'' BLISSUESTATUS");
|
|
|
strSql.Append(",(SELECT COUNT(*) FROM OP_SEAI WHERE BSNO<>MASTERNO AND MASTERNO=B.BSNO) as FENPIAO ");
|
|
|
strSql.Append(",'' DRFEESTATUS");
|
|
|
strSql.Append(",'' CRFEESTATUS,0 TTLDR,0 TTLINVDR,0 APPLYCOUNT,0 AMENDCOUNT");
|
|
|
strSql.Append(",0 as CTNNUM ");
|
|
|
strSql.Append(",0 as WMSCTNNUM ");
|
|
|
strSql.Append(",(select COUNTRYID from code_country where B.COUNTRYOFORIGIN=COUNTRY) as COUNTRYID ");
|
|
|
|
|
|
//strSql.Append(",(CASE FEESTATUS WHEN 1 THEN '锁定' else '未锁定' end) as FEESTATUSREF ");
|
|
|
strSql.Append(" from VW_OP_SEAI B where BSNO not like 'topseailcl%'");
|
|
|
if (!string.IsNullOrEmpty(condition))
|
|
|
{
|
|
|
strSql.Append(" and " + condition);
|
|
|
}
|
|
|
var countrydata = new CountryModel();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
countrydata.country = (reader["COUNTRYOFORIGIN"] == null? "": Convert.ToString(reader["COUNTRYOFORIGIN"]));
|
|
|
countrydata.countryid = (reader["COUNTRYID"] == null? "": Convert.ToString(reader["COUNTRYID"]));
|
|
|
}
|
|
|
}
|
|
|
return countrydata;
|
|
|
}
|
|
|
|
|
|
private static List<MsOpSeai> SetData(StringBuilder strSql)
|
|
|
{
|
|
|
var headList = new List<MsOpSeai>();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
MsOpSeai data = new MsOpSeai();
|
|
|
#region Set DB data to Object
|
|
|
data.BillFeeStatus = Convert.ToString(reader["BillFeeStatus"]);
|
|
|
//if (data.BSDATE != null)
|
|
|
// data.BSDATE = Convert.ToDateTime(reader["BSDATE"]);// 接单日期
|
|
|
data.BSNO = (reader["BSNO"] == null ? "" : Convert.ToString(reader["BSNO"]));//业务编号
|
|
|
data.ORDERTYPE = (reader["ORDERTYPE"] == null ? "" : Convert.ToString(reader["ORDERTYPE"]));//委托方式
|
|
|
data.MASTERNO = (reader["MASTERNO"] == null ? "" : Convert.ToString(reader["MASTERNO"]));//主编号
|
|
|
data.CUSTNO = (reader["CUSTNO"] == null ? "" : Convert.ToString(reader["CUSTNO"]));//委托编号
|
|
|
data.MBLNO = (reader["MBLNO"] == null ? "" : Convert.ToString(reader["MBLNO"]));//主提单号
|
|
|
data.HBLNO = (reader["HBLNO"] == null ? "" : Convert.ToString(reader["HBLNO"]));//分提单号
|
|
|
data.APPLYNO = Convert.ToString(reader["APPLYNO"]);//放箱申请单号
|
|
|
if (reader["AMENDCOUNT"] != DBNull.Value)
|
|
|
data.AMEND = Convert.ToString(reader["AMENDCOUNT"]);//是否有更改单
|
|
|
data.DRFEESTATUS = getfeestatus(Convert.ToString(reader["DRFEESTATUS"]));
|
|
|
data.CRFEESTATUS = getfeestatus(Convert.ToString(reader["CRFEESTATUS"]));
|
|
|
data.BSSTATUS = ((reader["BSSTATUS"] == null || reader["BSSTATUS"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["BSSTATUS"]));//业务状态
|
|
|
data.FEESTATUS = ((reader["FEESTATUS"] == null || reader["FEESTATUS"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["FEESTATUS"]));//费用状态
|
|
|
data.BSSTATUSREF = (reader["BSSTATUSREF"] == null ? "" : Convert.ToString(reader["BSSTATUSREF"]));//业务状态
|
|
|
data.FEESTATUSREF = (reader["FEESTATUSREF"] == null ? "" : Convert.ToString(reader["FEESTATUSREF"]));//费用状态
|
|
|
data.BSDATE = ((reader["BSDATE"] == null || reader["BSDATE"].ToString().Trim().IndexOf("0001")>-1 || reader["BSDATE"].ToString().Trim().IndexOf("1900")>-1) ? "" : Convert.ToString(reader["BSDATE"]));//接单日期
|
|
|
data.ACCDATE = (reader["ACCDATE"] == null ? "" : Convert.ToString(reader["ACCDATE"]));//会计期间
|
|
|
data.CUSTOMERNAME = (reader["CUSTOMERNAME"] == null ? "" : Convert.ToString(reader["CUSTOMERNAME"]));//委托单位
|
|
|
data.BSSOURCE = (reader["BSSOURCE"] == null ? "" : Convert.ToString(reader["BSSOURCE"]));//业务来源
|
|
|
data.BSSOURCEDETAIL = (reader["BSSOURCEDETAIL"] == null ? "" : Convert.ToString(reader["BSSOURCEDETAIL"]));//来源明细
|
|
|
data.INPUTBY = (reader["INPUTBY"] == null ? "" : Convert.ToString(reader["INPUTBY"]));//录入人
|
|
|
data.OP = (reader["OP"] == null ? "" : Convert.ToString(reader["OP"]));//操作员
|
|
|
data.CUSTSERVICE = (reader["CUSTSERVICE"] == null ? "" : Convert.ToString(reader["CUSTSERVICE"]));//客服员
|
|
|
data.FRCUSTSERVICE = (reader["FRCUSTSERVICE"] == null ? "" : Convert.ToString(reader["FRCUSTSERVICE"]));//客服员
|
|
|
data.SALE = (reader["SALE"] == null ? "" : Convert.ToString(reader["SALE"]));//揽货人
|
|
|
data.CORPID = (reader["CORPID"] == null ? "" : Convert.ToString(reader["CORPID"]));//分公司代码
|
|
|
data.SALEDEPT = (reader["SALEDEPT"] == null ? "" : Convert.ToString(reader["SALEDEPT"]));//所属部门
|
|
|
data.CREATETIME = ((reader["CREATETIME"] == null || reader["CREATETIME"].ToString().Trim().IndexOf("0001") > -1 || reader["CREATETIME"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["CREATETIME"]));//创建时间
|
|
|
data.VESSEL = (reader["VESSEL"] == null ? "" : Convert.ToString(reader["VESSEL"]));//船名
|
|
|
data.VOYNO = (reader["VOYNO"] == null ? "" : Convert.ToString(reader["VOYNO"]));//航次
|
|
|
data.ETD = ((reader["ETD"] == null || reader["ETD"].ToString().Trim().IndexOf("0001") > -1 || reader["ETD"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["ETD"]));//到港日期
|
|
|
data.PORTLOADID = (reader["PORTLOADID"] == null ? "" : Convert.ToString(reader["PORTLOADID"]));//装货港代码
|
|
|
data.PORTLOAD = (reader["PORTLOAD"] == null ? "" : Convert.ToString(reader["PORTLOAD"]));//装货港
|
|
|
data.PORTDISCHARGEID = (reader["PORTDISCHARGEID"] == null ? "" : Convert.ToString(reader["PORTDISCHARGEID"]));//卸货港代码
|
|
|
data.PORTDISCHARGE = (reader["PORTDISCHARGE"] == null ? "" : Convert.ToString(reader["PORTDISCHARGE"]));//卸货港
|
|
|
data.CNTRNO = ((reader["CNTRNO"] == null || reader["CNTRNO"].ToString().Trim() == "") ? "" : Convert.ToString(reader["CNTRNO"]));//集装箱大写
|
|
|
data.CNTR1 = ((reader["CNTR1"] == null || reader["CNTR1"].ToString().Trim() == "") ? 0 : Convert.ToInt32(reader["CNTR1"]));//箱型1
|
|
|
data.CNTR2 = ((reader["CNTR2"] == null || reader["CNTR2"].ToString().Trim() == "") ? 0 : Convert.ToInt32(reader["CNTR2"]));//箱型2
|
|
|
data.CNTR3 = ((reader["CNTR3"] == null || reader["CNTR3"].ToString().Trim() == "") ? 0 : Convert.ToInt32(reader["CNTR3"]));//箱型3
|
|
|
data.CNTR4 = ((reader["CNTR4"] == null || reader["CNTR4"].ToString().Trim() == "") ? 0 : Convert.ToInt32(reader["CNTR4"]));//箱型4
|
|
|
data.CNTR5 = ((reader["CNTR5"] == null || reader["CNTR5"].ToString().Trim() == "") ? 0 : Convert.ToInt32(reader["CNTR5"]));//箱型5
|
|
|
data.CNTR6 = ((reader["CNTR6"] == null || reader["CNTR6"].ToString().Trim() == "") ? 0 : Convert.ToInt32(reader["CNTR6"]));//箱型6
|
|
|
data.CNTR7 = ((reader["CNTR7"] == null || reader["CNTR7"].ToString().Trim() == "") ? 0 : Convert.ToInt32(reader["CNTR7"]));//箱型7
|
|
|
data.CNTR8 = ((reader["CNTR8"] == null || reader["CNTR8"].ToString().Trim() == "") ? 0 : Convert.ToInt32(reader["CNTR8"]));//箱型8
|
|
|
data.CNTR9 = ((reader["CNTR9"] == null || reader["CNTR9"].ToString().Trim() == "") ? 0 : Convert.ToInt32(reader["CNTR9"]));//箱型9
|
|
|
data.CNTR10 = ((reader["CNTR10"] == null || reader["CNTR10"].ToString().Trim() == "") ? 0 : Convert.ToInt32(reader["CNTR10"]));//箱型10
|
|
|
data.OTCNTR = ((reader["OTCNTR"] == null || reader["OTCNTR"].ToString().Trim() == "") ? 0 : Convert.ToInt32(reader["OTCNTR"]));//其他箱型
|
|
|
data.TEU = ((reader["TEU"] == null || reader["TEU"].ToString().Trim() == "") ? 0 : Convert.ToInt32(reader["TEU"]));//箱TEU
|
|
|
data.CNTRTOTAL = (reader["CNTRTOTAL"] == null ? "" : Convert.ToString(reader["CNTRTOTAL"]));//集装箱全部内容
|
|
|
data.GOODSNAME = (reader["GOODSNAME"] == null ? "" : Convert.ToString(reader["GOODSNAME"]));//品名
|
|
|
data.COUNTRYOFORIGIN = (reader["COUNTRYOFORIGIN"] == null ? "" : Convert.ToString(reader["COUNTRYOFORIGIN"]));//原产地
|
|
|
data.NUMBERPLATE = (reader["NUMBERPLATE"] == null ? "" : Convert.ToString(reader["NUMBERPLATE"]));//牌号
|
|
|
data.CONTRACTNO = (reader["CONTRACTNO"] == null ? "" : Convert.ToString(reader["CONTRACTNO"]));//合同号
|
|
|
data.UNITS = (reader["UNITS"] == null ? "" : Convert.ToString(reader["UNITS"]));//单位
|
|
|
data.BALES = (reader["BALES"] == null ? "" : Convert.ToString(reader["BALES"]));//包装(散货/托盘)数
|
|
|
data.KGS = ((reader["KGS"] == null || reader["KGS"].ToString().Trim() == "") ? 0 : Convert.ToDecimal(reader["KGS"]));//毛重
|
|
|
data.NETWEIGHT = ((reader["NETWEIGHT"] == null || reader["NETWEIGHT"].ToString().Trim() == "") ? 0 : Convert.ToDecimal(reader["NETWEIGHT"]));//净重
|
|
|
data.MT = ((reader["MT"] == null || reader["MT"].ToString().Trim() == "") ? 0 : Convert.ToDecimal(reader["MT"]));//净重和毛重哪一个数大,则存哪一个
|
|
|
data.CUSTOMSER = (reader["CUSTOMSER"] == null ? "" : Convert.ToString(reader["CUSTOMSER"]));//报关行
|
|
|
data.ENTERP = (reader["ENTERP"] == null ? "" : Convert.ToString(reader["ENTERP"]));//经营单位
|
|
|
data.CUSTOMNO = (reader["CUSTOMNO"] == null ? "" : Convert.ToString(reader["CUSTOMNO"]));//报关单号
|
|
|
// data.CUSTOMDATE = ((reader["CUSTOMDATE"] == null || reader["CUSTOMDATE"].ToString().Trim().IndexOf("0001") > -1 || reader["CUSTOMDATE"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["CUSTOMDATE"]));//通关日期
|
|
|
data.INSPECTION = (reader["INSPECTION"] == null ? "" : Convert.ToString(reader["INSPECTION"]));//报检
|
|
|
data.INSPECTIONNO = (reader["INSPECTIONNO"] == null ? "" : Convert.ToString(reader["INSPECTIONNO"]));//报检单号
|
|
|
data.INSPECTIONDATE = ((reader["INSPECTIONDATE"] == null || reader["INSPECTIONDATE"].ToString().Trim().IndexOf("0001") > -1 || reader["INSPECTIONDATE"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["INSPECTIONDATE"]));//报检日期
|
|
|
data.FBP = ((reader["FBP"] == null || reader["FBP"].ToString().Trim() == "") ? 0 : Convert.ToInt32(reader["FBP"]));//免箱期
|
|
|
data.BMDDATE = ((reader["BMDDATE"] == null || reader["BMDDATE"].ToString().Trim().IndexOf("0001") > -1 || reader["BMDDATE"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["BMDDATE"]));//箱使到期日期
|
|
|
data.MDTDATE = ((reader["MDTDATE"] == null || reader["MDTDATE"].ToString().Trim().IndexOf("0001") > -1 || reader["MDTDATE"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["MDTDATE"]));//搬倒日期
|
|
|
data.UNITOFWEIGHT = (reader["UNITOFWEIGHT"] == null ? "" : Convert.ToString(reader["UNITOFWEIGHT"]));//计费单位
|
|
|
data.PKGS = ((reader["PKGS"] == null || reader["PKGS"].ToString().Trim() == "") ? 0 : Convert.ToInt32(reader["PKGS"]));//件数
|
|
|
data.ISVOU = ((reader["ISVOU"] == null || reader["ISVOU"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["ISVOU"]));//是否生成凭证
|
|
|
data.VOUNO = (reader["VOUNO"] == null ? "" : Convert.ToString(reader["VOUNO"]));//凭证号
|
|
|
data.KINDPKGS = (reader["KINDPKGS"] == null ? "" : Convert.ToString(reader["KINDPKGS"]));//件数包装
|
|
|
data.TRADINGAGENCY = (reader["TRADINGAGENCY"] == null ? "" : Convert.ToString(reader["TRADINGAGENCY"]));//贸易代理
|
|
|
data.TRADETYPE = (reader["TRADETYPE"] == null ? "" : Convert.ToString(reader["TRADETYPE"]));//贸易方式
|
|
|
data.TRADETERM = Convert.ToString(reader["TRADETERM"]);//贸易条款
|
|
|
data.GOODSTYPENAME = (reader["GOODSTYPENAME"] == null ? "" : Convert.ToString(reader["GOODSTYPENAME"]));//品名类型名称
|
|
|
data.SHOWNAME = (reader["SHOWNAME"] == null ? "" : Convert.ToString(reader["SHOWNAME"]));//委托单位联系人
|
|
|
data.EMAIL = (reader["EMAIL"] == null ? "" : Convert.ToString(reader["EMAIL"]));//委托单位EMAIL
|
|
|
data.TEL = (reader["TEL"] == null ? "" : Convert.ToString(reader["TEL"]));//委托单位TEL
|
|
|
data.FAX = (reader["FAX"] == null ? "" : Convert.ToString(reader["FAX"]));//委托单位FAX
|
|
|
data.TARRIFSPAIEDTIEM = ((reader["TARRIFSPAIEDTIEM"] == null || reader["TARRIFSPAIEDTIEM"].ToString().Trim().IndexOf("0001") > -1 || reader["TARRIFSPAIEDTIEM"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["TARRIFSPAIEDTIEM"]));//交关税时间
|
|
|
data.APPROVENO = (reader["APPROVENO"] == null ? "" : Convert.ToString(reader["APPROVENO"]));//审批单号
|
|
|
data.REMARK = (reader["REMARK"] == null ? "" : Convert.ToString(reader["REMARK"]));//备注
|
|
|
data.REMARK2 = (reader["REMARK2"] == null ? "" : Convert.ToString(reader["REMARK2"]));//备注
|
|
|
data.YARD = (reader["YARD"] == null ? "" : Convert.ToString(reader["YARD"]));//场站/靠泊码头
|
|
|
data.STORAGENAME = (reader["STORAGENAME"] == null ? "" : Convert.ToString(reader["STORAGENAME"]));//仓库名称
|
|
|
data.GRADE = (reader["GRADE"] == null ? "" : Convert.ToString(reader["GRADE"]));//品位
|
|
|
data.NOR = ((reader["NOR"] == null || reader["NOR"].ToString().Trim().IndexOf("0001") > -1 || reader["NOR"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["NOR"]));//具体到时间
|
|
|
data.ISFORCEDTODESPATCH = (reader["ISFORCEDTODESPATCH"] == null ? false : Convert.ToBoolean(reader["ISFORCEDTODESPATCH"]));//强制速遣费(是否缴纳)
|
|
|
data.BSKGS = ((reader["BSKGS"] == null || reader["BSKGS"].ToString().Trim() == "") ? 0 : Convert.ToDecimal(reader["BSKGS"]));//提单吨数
|
|
|
data.ACTUALKGS = ((reader["ACTUALKGS"] == null || reader["ACTUALKGS"].ToString().Trim() == "") ? 0 : Convert.ToDecimal(reader["ACTUALKGS"]));//实际发货吨数
|
|
|
data.DRAFTKGS = ((reader["DRAFTKGS"] == null || reader["DRAFTKGS"].ToString().Trim() == "") ? 0 : Convert.ToDecimal(reader["DRAFTKGS"]));//水尺数
|
|
|
data.WHARFSKGS = ((reader["WHARFSKGS"] == null || reader["WHARFSKGS"].ToString().Trim() == "") ? 0 : Convert.ToDecimal(reader["WHARFSKGS"]));//码头数
|
|
|
data.WMSINKGS = ((reader["WMSINKGS"] == null || reader["WMSINKGS"].ToString().Trim() == "") ? 0 : Convert.ToDecimal(reader["WMSINKGS"]));//入库数
|
|
|
data.WMSOUTKGS = ((reader["WMSOUTKGS"] == null || reader["WMSOUTKGS"].ToString().Trim() == "") ? 0 : Convert.ToDecimal(reader["WMSOUTKGS"]));//出库数
|
|
|
data.DIFFERENCEKGS = ((reader["DIFFERENCEKGS"] == null || reader["DIFFERENCEKGS"].ToString().Trim() == "") ? 0 : Convert.ToDecimal(reader["DIFFERENCEKGS"]));//(水尺数-出库数
|
|
|
data.WATERCONTENT = (reader["WATERCONTENT"] == null ? "" : Convert.ToString(reader["WATERCONTENT"]));//水含量
|
|
|
data.WATERDENSITY = (reader["WATERDENSITY"] == null ? "" : Convert.ToString(reader["WATERDENSITY"]));//水密度
|
|
|
data.BLTYPE = (reader["BLTYPE"] == null ? "" : Convert.ToString(reader["BLTYPE"]));//装运方式
|
|
|
data.CBM = ((reader["CBM"] == null || reader["CBM"].ToString().Trim() == "") ? 0 : Convert.ToDecimal(reader["CBM"]));//立方数/尺码
|
|
|
data.IMPORTVALUE = ((reader["IMPORTVALUE"] == null || reader["IMPORTVALUE"].ToString().Trim() == "") ? 0 : Convert.ToDecimal(reader["IMPORTVALUE"]));//货值
|
|
|
data.UNITPRICE = ((reader["UNITPRICE"] == null || reader["UNITPRICE"].ToString().Trim() == "") ? 0 : Convert.ToDecimal(reader["UNITPRICE"]));//单价
|
|
|
data.CURRENCY = (reader["CURRENCY"] == null ? "" : Convert.ToString(reader["CURRENCY"]));//币别
|
|
|
// data.UPDATETIME = ((reader["UPDATETIME"] == null || reader["UPDATETIME"].ToString().Trim().IndexOf("0001") > -1 || reader["UPDATETIME"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["UPDATETIME"]));//申报日期
|
|
|
data.PARENTID = (reader["PARENTID"] == null ? "" : Convert.ToString(reader["PARENTID"]));//父公司GID
|
|
|
data.LEVELS = ((reader["LEVELS"] == null || reader["LEVELS"].ToString().Trim() == "") ? 0 : Convert.ToInt32(reader["LEVELS"]));//分单等级
|
|
|
data.BSTYPE = (reader["BSTYPE"] == null ? "" : Convert.ToString(reader["BSTYPE"]));//单据类型
|
|
|
data.WMSTYPE = (reader["WMSTYPE"] == null ? "" : Convert.ToString(reader["WMSTYPE"]));//仓储类型
|
|
|
data.CNTRSEALNO = (reader["CNTRSEALNO"] == null ? "" : Convert.ToString(reader["CNTRSEALNO"]));//箱号封号
|
|
|
data.CARRIER = (reader["CARRIER"] == null ? "" : Convert.ToString(reader["CARRIER"]));//船公司
|
|
|
data.TRUCKER = (reader["TRUCKER"] == null ? "" : Convert.ToString(reader["TRUCKER"]));//承运车队
|
|
|
data.CUSTOMSNUM = ((reader["CUSTOMSNUM"] == null || reader["CUSTOMSNUM"].ToString().Trim() == "") ? 0 : Convert.ToInt32(reader["CUSTOMSNUM"]));//报关票数
|
|
|
if (reader["PRERECORD"] != DBNull.Value)
|
|
|
data.PRERECORD = Convert.ToInt32(reader["PRERECORD"]);//报关票数
|
|
|
data.NOPKGS = (reader["NOPKGS"] == null ? "" : Convert.ToString(reader["NOPKGS"]));//件数包装
|
|
|
data.GROSSWEIGHT = (reader["GROSSWEIGHT"] == null ? "" : Convert.ToString(reader["GROSSWEIGHT"]));//货物毛重
|
|
|
data.MEASUREMENT = (reader["MEASUREMENT"] == null ? "" : Convert.ToString(reader["MEASUREMENT"]));//货物尺码
|
|
|
data.DESCRIPTION = (reader["DESCRIPTION"] == null ? "" : Convert.ToString(reader["DESCRIPTION"]));//货物描述
|
|
|
data.TOTALNO = (reader["TOTALNO"] == null ? "" : Convert.ToString(reader["TOTALNO"]));//件数大写
|
|
|
data.TRANSNO = (reader["TRANSNO"] == null ? "" : Convert.ToString(reader["TRANSNO"]));//运单号
|
|
|
data.SHIPPERID = (reader["SHIPPERID"] == null ? "" : Convert.ToString(reader["SHIPPERID"]));//发货人
|
|
|
data.CONSIGNEEID = (reader["CONSIGNEEID"] == null ? "" : Convert.ToString(reader["CONSIGNEEID"]));//收货人
|
|
|
data.NOTIFYPARTYID = (reader["NOTIFYPARTYID"] == null ? "" : Convert.ToString(reader["NOTIFYPARTYID"]));//通知人
|
|
|
data.SHIPPER = (reader["SHIPPER"] == null ? "" : Convert.ToString(reader["SHIPPER"]));//发货人内容
|
|
|
data.CONSIGNEE = (reader["CONSIGNEE"] == null ? "" : Convert.ToString(reader["CONSIGNEE"]));//收货人内容
|
|
|
data.NOTIFYPARTY = (reader["NOTIFYPARTY"] == null ? "" : Convert.ToString(reader["NOTIFYPARTY"]));//通知人内容
|
|
|
data.MSHIPPERID = Convert.ToString(reader["MSHIPPERID"]);//发货人
|
|
|
data.MCONSIGNEEID = Convert.ToString(reader["MCONSIGNEEID"]);//收货人
|
|
|
data.MNOTIFYPARTYID = Convert.ToString(reader["MNOTIFYPARTYID"]);//通知人
|
|
|
data.MSHIPPER = Convert.ToString(reader["MSHIPPER"]).Replace(@"\\\\", "\n").Replace(@"^", "\'");//发货人内容
|
|
|
data.MCONSIGNEE = Convert.ToString(reader["MCONSIGNEE"]).Replace(@"\\\\", "\n").Replace(@"^", "\'");//收货人内容
|
|
|
data.MNOTIFYPARTY = Convert.ToString(reader["MNOTIFYPARTY"]).Replace(@"\\\\", "\n").Replace(@"^", "\'");//通知人内容
|
|
|
data.AGENTID = (reader["AGENTID"] == null ? "" : Convert.ToString(reader["AGENTID"]));//国外代理
|
|
|
data.AGENT = (reader["AGENT"] == null ? "" : Convert.ToString(reader["AGENT"]));//国外代理内容
|
|
|
data.CLOSINGDATE = ((reader["CLOSINGDATE"] == null || reader["CLOSINGDATE"].ToString().Trim().IndexOf("0001") > -1 || reader["CLOSINGDATE"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["CLOSINGDATE"]));//截港日期
|
|
|
data.PlACERECEIPT = (reader["PlACERECEIPT"] == null ? "" : Convert.ToString(reader["PlACERECEIPT"]));//收货地
|
|
|
data.PLACEDELIVERYID = (reader["PLACEDELIVERYID"] == null ? "" : Convert.ToString(reader["PLACEDELIVERYID"]));//交货地代码
|
|
|
data.PLACEDELIVERY = (reader["PLACEDELIVERY"] == null ? "" : Convert.ToString(reader["PLACEDELIVERY"]));//交货地
|
|
|
data.DESTINATIONID = (reader["DESTINATIONID"] == null ? "" : Convert.ToString(reader["DESTINATIONID"]));//目的地代码
|
|
|
data.DESTINATION = (reader["DESTINATION"] == null ? "" : Convert.ToString(reader["DESTINATION"]));//目的地
|
|
|
data.NOBILL = (reader["NOBILL"] == null ? "" : Convert.ToString(reader["NOBILL"]));//提单份数
|
|
|
data.ISSUETYPE = (reader["ISSUETYPE"] == null ? "" : Convert.ToString(reader["ISSUETYPE"]));//签单方式
|
|
|
data.ISSUEDATE = ((reader["ISSUEDATE"] == null || reader["ISSUEDATE"].ToString().Trim().IndexOf("0001") > -1 || reader["ISSUEDATE"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["ISSUEDATE"]));//签单日期
|
|
|
data.ISSUEPLACE = (reader["ISSUEPLACE"] == null ? "" : Convert.ToString(reader["ISSUEPLACE"]));//签单地点
|
|
|
data.BLFRT = (reader["BLFRT"] == null ? "" : Convert.ToString(reader["BLFRT"]));//付费方式
|
|
|
data.PREPARDAT = (reader["PREPARDAT"] == null ? "" : Convert.ToString(reader["PREPARDAT"]));//预付地点
|
|
|
data.PAYABLEAT = (reader["PAYABLEAT"] == null ? "" : Convert.ToString(reader["PAYABLEAT"]));//到付地点
|
|
|
data.SERVICE = (reader["SERVICE"] == null ? "" : Convert.ToString(reader["SERVICE"]));//运输条款
|
|
|
data.MARKS = (reader["MARKS"] == null ? "" : Convert.ToString(reader["MARKS"]));//唛头
|
|
|
data.LANE = (reader["LANE"] == null ? "" : Convert.ToString(reader["LANE"]));//航线
|
|
|
data.FORWARDER = (reader["FORWARDER"] == null ? "" : Convert.ToString(reader["FORWARDER"]));//订舱公司
|
|
|
data.INVNO = (reader["INVNO"] == null ? "" : Convert.ToString(reader["INVNO"]));//发票号
|
|
|
data.CARGOID = (reader["CARGOID"] == null ? "" : Convert.ToString(reader["CARGOID"]));//货物标识
|
|
|
data.DCLASS = (reader["DCLASS"] == null ? "" : Convert.ToString(reader["DCLASS"]));//危险品分类/等级
|
|
|
data.DUNNO = (reader["DUNNO"] == null ? "" : Convert.ToString(reader["DUNNO"]));//危险品编号
|
|
|
data.REEFERF = (reader["REEFERF"] == null ? "" : Convert.ToString(reader["REEFERF"]));//冷藏通风量
|
|
|
data.TEMPID = (reader["TEMPID"] == null ? "" : Convert.ToString(reader["TEMPID"]));//温度单位
|
|
|
data.TEMPSET = (reader["TEMPSET"] == null ? "" : Convert.ToString(reader["TEMPSET"]));//设置温度
|
|
|
data.TEMPMAX = (reader["TEMPMAX"] == null ? "" : Convert.ToString(reader["TEMPMAX"]));//最高温度
|
|
|
data.TEMPMIN = (reader["TEMPMIN"] == null ? "" : Convert.ToString(reader["TEMPMIN"]));//最低温度
|
|
|
data.ORDTYPE = (reader["ORDTYPE"] == null ? "" : Convert.ToString(reader["ORDTYPE"]));//订舱类型
|
|
|
data.ORDERNO = (reader["ORDERNO"] == null ? "" : Convert.ToString(reader["ORDERNO"]));//订舱编号
|
|
|
data.INSURANCEER = (reader["INSURANCEER"] == null ? "" : Convert.ToString(reader["INSURANCEER"]));//保险人
|
|
|
data.INSURANCENO = (reader["INSURANCENO"] == null ? "" : Convert.ToString(reader["INSURANCENO"]));//保险单号
|
|
|
data.INAMOUT = ((reader["INAMOUT"] == null || reader["INAMOUT"].ToString().Trim() == "") ? 0 : Convert.ToDecimal(reader["INAMOUT"]));//保险金额
|
|
|
data.STATUS1 = ((reader["STATUS1"] == null || reader["STATUS1"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["STATUS1"]));//状态1
|
|
|
data.STATUS2 = ((reader["STATUS2"] == null || reader["STATUS2"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["STATUS2"]));//状态2
|
|
|
data.STATUS3 = ((reader["STATUS3"] == null || reader["STATUS3"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["STATUS3"]));//状态3
|
|
|
data.STATUS4 = ((reader["STATUS4"] == null || reader["STATUS4"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["STATUS4"]));//状态4
|
|
|
data.STATUS5 = ((reader["STATUS5"] == null || reader["STATUS5"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["STATUS5"]));//状态5
|
|
|
data.ISFUMIGATION = ((reader["ISFUMIGATION"] == null || reader["ISFUMIGATION"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["ISFUMIGATION"]));//熏蒸
|
|
|
data.ISSTORAGE = ((reader["ISSTORAGE"] == null || reader["ISSTORAGE"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["ISSTORAGE"]));//仓储
|
|
|
data.ISLAND = ((reader["ISLAND"] == null || reader["ISLAND"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["ISLAND"]));//陆运
|
|
|
data.ISCUSTOMS = ((reader["ISCUSTOMS"] == null || reader["ISCUSTOMS"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["ISCUSTOMS"]));//报关
|
|
|
data.ISINSPECTION = ((reader["ISINSPECTION"] == null || reader["ISINSPECTION"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["ISINSPECTION"]));//报检
|
|
|
data.ISBOOKING = ((reader["ISBOOKING"] == null || reader["ISBOOKING"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["ISBOOKING"]));//订舱
|
|
|
data.ISAGENT = ((reader["ISAGENT"] == null || reader["ISAGENT"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["ISAGENT"]));//使用代理
|
|
|
data.ISHBLNO = ((reader["ISHBLNO"] == null || reader["ISHBLNO"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["ISHBLNO"]));//分单签单
|
|
|
data.SERVICE9 = ((reader["SERVICE9"] == null || reader["SERVICE9"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["SERVICE9"]));//服务项目9
|
|
|
data.SERVICE10 = ((reader["SERVICE10"] == null || reader["SERVICE10"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["SERVICE10"]));//服务项目10
|
|
|
data.DOC = (reader["DOC"] == null ? "" : Convert.ToString(reader["DOC"]));//单证
|
|
|
data.PACKINGTYPE = (reader["PACKINGTYPE"] == null ? "" : Convert.ToString(reader["PACKINGTYPE"]));//装箱类型
|
|
|
data.WAREHOUSE = (reader["WAREHOUSE"] == null ? "" : Convert.ToString(reader["WAREHOUSE"]));//仓库
|
|
|
data.CLOSEDOCDATE = ((reader["CLOSEDOCDATE"] == null || reader["CLOSEDOCDATE"].ToString().Trim().IndexOf("0001") > -1 || reader["CLOSEDOCDATE"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["CLOSEDOCDATE"]));//截单日期
|
|
|
data.INTOPORTDATE = ((reader["INTOPORTDATE"] == null || reader["INTOPORTDATE"].ToString().Trim().IndexOf("0001") > -1 || reader["INTOPORTDATE"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["INTOPORTDATE"]));//集港日期
|
|
|
data.MBLFRT = (reader["MBLFRT"] == null ? "" : Convert.ToString(reader["MBLFRT"]));//MBL付费方式
|
|
|
data.STLNAME = (reader["STLNAME"] == null ? "" : Convert.ToString(reader["STLNAME"]));//结算方式
|
|
|
data.STLDATE = ((reader["STLDATE"] == null || reader["STLDATE"].ToString().Trim().IndexOf("0001") > -1 || reader["STLDATE"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["STLDATE"]));//结算时间
|
|
|
data.OPERATORCODE = (reader["OPERATORCODE"] == null ? "" : Convert.ToString(reader["OPERATORCODE"]));//客户操作代码
|
|
|
data.OPERATOR = (reader["OPERATOR"] == null ? "" : Convert.ToString(reader["OPERATOR"]));//客户操作名称
|
|
|
data.OPERATOREMAIL = (reader["OPERATOREMAIL"] == null ? "" : Convert.ToString(reader["OPERATOREMAIL"]));//操作电子邮箱
|
|
|
data.OPERATORTEL = (reader["OPERATORTEL"] == null ? "" : Convert.ToString(reader["OPERATORTEL"]));//操作电话
|
|
|
data.OPERATORFAX = (reader["OPERATORFAX"] == null ? "" : Convert.ToString(reader["OPERATORFAX"]));//操作传真
|
|
|
data.FINANCIALSTAFFCODE = (reader["FINANCIALSTAFFCODE"] == null ? "" : Convert.ToString(reader["FINANCIALSTAFFCODE"]));//客户财务代码
|
|
|
data.FINANCIALSTAFF = (reader["FINANCIALSTAFF"] == null ? "" : Convert.ToString(reader["FINANCIALSTAFF"]));//客户财务名称
|
|
|
data.FINANCIALSTAFFEMAIL = (reader["FINANCIALSTAFFEMAIL"] == null ? "" : Convert.ToString(reader["FINANCIALSTAFFEMAIL"]));//财务电子邮箱
|
|
|
data.FINANCIALSTAFFTEL = (reader["FINANCIALSTAFFTEL"] == null ? "" : Convert.ToString(reader["FINANCIALSTAFFTEL"]));//财务电话
|
|
|
data.FINANCIALSTAFFFAX = (reader["FINANCIALSTAFFFAX"] == null ? "" : Convert.ToString(reader["FINANCIALSTAFFFAX"]));//财务传真
|
|
|
data.SOURCECODE = (reader["SOURCECODE"] == null ? "" : Convert.ToString(reader["SOURCECODE"]));//集装箱(器)来源代码
|
|
|
data.ISCONTAINERSOC = ((reader["ISCONTAINERSOC"] == null || reader["ISCONTAINERSOC"].ToString().Trim() == "") ? false : Convert.ToBoolean(reader["ISCONTAINERSOC"]));//货主箱标志,是否自有箱
|
|
|
data.DPAGE = (reader["DPAGE"] == null ? "" : Convert.ToString(reader["DPAGE"]));//危险品页号
|
|
|
data.DLABEL = (reader["DLABEL"] == null ? "" : Convert.ToString(reader["DLABEL"]));//危险品标签
|
|
|
data.LINKMAN = (reader["LINKMAN"] == null ? "" : Convert.ToString(reader["LINKMAN"]));//危险品联系人
|
|
|
data.VESSELID = (reader["VESSELID"] == null ? "" : Convert.ToString(reader["VESSELID"]));//船舶呼号
|
|
|
data.ISSUEPLACEID = (reader["ISSUEPLACEID"] == null ? "" : Convert.ToString(reader["ISSUEPLACEID"]));//提单签发地代码
|
|
|
data.OPSTATUS = (reader["OPSTATUS"] == null ? "" : Convert.ToString(reader["OPSTATUS"]));//船舶呼号
|
|
|
if (reader["CHANGEDOCDATE"] != DBNull.Value)
|
|
|
data.CHANGEDOCDATE = Convert.ToDateTime(reader["CHANGEDOCDATE"]).ToString("yyyy-MM-dd HH:mm:ss");//
|
|
|
if (reader["CUSTOMDATE"] != DBNull.Value)
|
|
|
data.CUSTOMDATE = Convert.ToDateTime(reader["CUSTOMDATE"]).ToString("yyyy-MM-dd HH:mm:ss");//
|
|
|
if (reader["UPDATETIME"] != DBNull.Value)
|
|
|
data.UPDATETIME = Convert.ToDateTime(reader["UPDATETIME"]).ToString("yyyy-MM-dd HH:mm:ss");//
|
|
|
|
|
|
if (Convert.ToString(reader["BLTYPE"]) == "拼箱主票")
|
|
|
data.FENPIAO = "1";//件数
|
|
|
else
|
|
|
data.FENPIAO = "0";//件数
|
|
|
data.INSPECTSERVICE = Convert.ToString(reader["INSPECTSERVICE"]);//经营单位代码
|
|
|
if (reader["ISMOREGOOD"] != DBNull.Value)
|
|
|
data.ISMOREGOOD = Convert.ToBoolean(reader["ISMOREGOOD"]);//多品名
|
|
|
data.ISPRINTPR = Convert.ToString(reader["ISPRINTPR"]);
|
|
|
decimal ttldr = 0;
|
|
|
if (reader["TTLDR"] != DBNull.Value)
|
|
|
ttldr = Convert.ToDecimal(reader["TTLDR"]);
|
|
|
decimal ttlinvdr = 0;
|
|
|
if (reader["TTLDR"] != DBNull.Value)
|
|
|
ttlinvdr = Convert.ToDecimal(reader["TTLINVDR"]);
|
|
|
if (ttlinvdr == 0) data.DRINVSTATUS = "未开票";
|
|
|
else if (ttlinvdr == ttldr) data.DRINVSTATUS = "已开票";
|
|
|
else if (ttlinvdr != ttldr) data.DRINVSTATUS = "部分开票";
|
|
|
decimal ttlduidr = 0;
|
|
|
if (reader["TTLDUIDR"] != DBNull.Value)
|
|
|
ttlduidr = Convert.ToDecimal(reader["TTLDUIDR"]);
|
|
|
if (ttlduidr == 0) data.DRDUISTATUS = "未对账";
|
|
|
else if (ttlduidr == ttldr) data.DRDUISTATUS = "已对账";
|
|
|
else if (ttlduidr != ttldr) data.DRDUISTATUS = "部分对账";
|
|
|
|
|
|
if (reader["ETA"] != DBNull.Value)
|
|
|
data.ETA = Convert.ToDateTime(reader["ETA"]).ToString("yyyy-MM-dd");//到港日期
|
|
|
if (reader["APPLYCOUNT"] != DBNull.Value)
|
|
|
data.ISAPPLY = Convert.ToString(reader["APPLYCOUNT"]);//是否生成报关
|
|
|
data.TRANSKINDPKGS = Convert.ToString(reader["TRANSKINDPKGS"]);
|
|
|
data.SHIPAGENCY = Convert.ToString(reader["SHIPAGENCY"]);
|
|
|
data.ISBONDED = Convert.ToString(reader["ISBONDED"]);//是否保税业务
|
|
|
if (data.ISBONDED == "") data.ISBONDED = "0";
|
|
|
|
|
|
//需求编号:SR2017071700004
|
|
|
if (reader["SJYHDATE"] == null || reader["SJYHDATE"].ToString().Trim().IndexOf("0001") > -1 || reader["SJYHDATE"].ToString().Trim().IndexOf("1900") > -1 || reader["SJYHDATE"].ToString().Trim() == "")
|
|
|
{
|
|
|
data.SJYHDATE = "";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
data.SJYHDATE = Convert.ToDateTime(reader["SJYHDATE"]).ToString("yyyy-MM-dd");
|
|
|
}
|
|
|
if (reader["YaXiangDate"] == null || reader["YaXiangDate"].ToString().Trim().IndexOf("0001") > -1 || reader["YaXiangDate"].ToString().Trim().IndexOf("1900") > -1 || reader["YaXiangDate"].ToString().Trim()=="")
|
|
|
{
|
|
|
data.YaXiangDate = "";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
data.YaXiangDate = Convert.ToDateTime(reader["YaXiangDate"]).ToString("yyyy-MM-dd");
|
|
|
}
|
|
|
data.SJCYXL = Convert.ToString(reader["SJCYXL"]);
|
|
|
data.YaXiangDiDian = Convert.ToString(reader["YaXiangDiDian"]);
|
|
|
data.YaXiangJinE = Convert.ToDecimal(reader["YaXiangJinE"]);
|
|
|
data.MaTou = Convert.ToString(reader["MaTou"]);
|
|
|
data.BLISSUESTATUS = Convert.ToString(reader["BLISSUESTATUS"]);// 费用状态
|
|
|
data.SALECORPID = Convert.ToString(reader["SALECORPID"]);// 费用状态
|
|
|
data.SALECORP = Convert.ToString(reader["SALECORP"]);// 费用状态
|
|
|
if (reader["CTNNUM"] != DBNull.Value)
|
|
|
data.CTNNUM = Convert.ToInt32(reader["CTNNUM"]);
|
|
|
if (reader["WMSCTNNUM"] != DBNull.Value)
|
|
|
data.WMSCTNNUM = Convert.ToInt32(reader["WMSCTNNUM"]);
|
|
|
|
|
|
data.SHIPPERCODE = Convert.ToString(reader["SHIPPERCODE"]);//
|
|
|
data.SHIPPERCOUNTRY = Convert.ToString(reader["SHIPPERCOUNTRY"]);//
|
|
|
data.SHIPPERATTN = Convert.ToString(reader["SHIPPERATTN"]);//
|
|
|
data.SHIPPERTEL = Convert.ToString(reader["SHIPPERTEL"]);//
|
|
|
data.SHIPPEREMAIL = Convert.ToString(reader["SHIPPEREMAIL"]);//
|
|
|
|
|
|
data.CONSIGNEECODE = Convert.ToString(reader["CONSIGNEECODE"]);//
|
|
|
data.CONSIGNEECOUNTRY = Convert.ToString(reader["CONSIGNEECOUNTRY"]);//
|
|
|
data.CONSIGNEEATTN = Convert.ToString(reader["CONSIGNEEATTN"]);//
|
|
|
data.CONSIGNEETEL = Convert.ToString(reader["CONSIGNEETEL"]);//
|
|
|
data.CONSIGNEEEMAIL = Convert.ToString(reader["CONSIGNEEEMAIL"]);//
|
|
|
|
|
|
data.NOTIFYPARTYCODE = Convert.ToString(reader["NOTIFYPARTYCODE"]);//
|
|
|
data.NOTIFYPARTYCOUNTRY = Convert.ToString(reader["NOTIFYPARTYCOUNTRY"]);//
|
|
|
data.NOTIFYPARTYATTN = Convert.ToString(reader["NOTIFYPARTYATTN"]);//
|
|
|
data.NOTIFYPARTYTEL = Convert.ToString(reader["NOTIFYPARTYTEL"]);//
|
|
|
data.NOTIFYPARTYEMAIL = Convert.ToString(reader["NOTIFYPARTYEMAIL"]);//
|
|
|
//data.SJLCEVALIDITY = ((reader["SJLCEVALIDITY"] == null || reader["SJLCEVALIDITY"].ToString().Trim().IndexOf("0001") > -1 || reader["SJLCEVALIDITY"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["SJLCEVALIDITY"]));//商检证书有效期
|
|
|
if (reader["SJLCEVALIDITY"] == null || reader["SJLCEVALIDITY"].ToString().Trim().IndexOf("0001") > -1 || reader["SJLCEVALIDITY"].ToString().Trim().IndexOf("1900") > -1 || reader["SJLCEVALIDITY"].ToString().Trim() == "")
|
|
|
{
|
|
|
data.SJLCEVALIDITY = "";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
data.SJLCEVALIDITY = Convert.ToDateTime(reader["SJLCEVALIDITY"]).ToString("yyyy-MM-dd");
|
|
|
}
|
|
|
if (reader["TIHUOTIME"] != DBNull.Value)
|
|
|
data.TIHUOTIME = Convert.ToDateTime(reader["TIHUOTIME"]).ToString("yyyy-MM-dd HH:mm:ss");//提货时间
|
|
|
if (BasicDataRefDAL.ReadFieldExist(reader, "DEST_RTCNT_TIME")) {
|
|
|
data.DEST_RTCNT_TIME = Convert.ToString(reader["DEST_RTCNT_TIME"]);
|
|
|
}
|
|
|
data.OPSTATUSCOLOR = Convert.ToString(reader["OPSTATUSCOLOR"]);//
|
|
|
if (reader["HGCYDATE"] != DBNull.Value)
|
|
|
data.HGCYDATE = Convert.ToDateTime(reader["HGCYDATE"]).ToString("yyyy-MM-dd");//
|
|
|
if (reader["CONTRACTDATE"] != DBNull.Value)
|
|
|
data.CONTRACTDATE = Convert.ToDateTime(reader["CONTRACTDATE"]).ToString("yyyy-MM-dd");//
|
|
|
data.HGCYXL = Convert.ToString(reader["HGCYXL"]);//
|
|
|
data.TARIFFS = Convert.ToString(reader["TARIFFS"]);//
|
|
|
data.VAT = Convert.ToString(reader["VAT"]);//
|
|
|
data.MARGIN = Convert.ToString(reader["MARGIN"]);//
|
|
|
if (reader["CHANGEDOCSTATUS"] != DBNull.Value)
|
|
|
data.CHANGEDOCSTATUS = Convert.ToInt32(reader["CHANGEDOCSTATUS"]);
|
|
|
if (reader["CUSTOMSSTATUS"] != DBNull.Value)
|
|
|
data.CUSTOMSSTATUS = Convert.ToInt32(reader["CUSTOMSSTATUS"]);
|
|
|
if (reader["CANGDANSTATUS"] != DBNull.Value)
|
|
|
data.CANGDANSTATUS = Convert.ToInt32(reader["CANGDANSTATUS"]);
|
|
|
data.MDESCRIPTION = Convert.ToString(reader["MDESCRIPTION"]);
|
|
|
#endregion
|
|
|
headList.Add(data);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return headList;
|
|
|
}
|
|
|
|
|
|
public static string getfeestatus(string feestatusint)
|
|
|
{
|
|
|
var result = "";
|
|
|
if (feestatusint == "0:")
|
|
|
{
|
|
|
return "审核通过";
|
|
|
}
|
|
|
else if (feestatusint == "1:")
|
|
|
{
|
|
|
return "录入状态";
|
|
|
}
|
|
|
else if (feestatusint == "2:")
|
|
|
{
|
|
|
return "提交审核";
|
|
|
}
|
|
|
else if (feestatusint == "8:")
|
|
|
{
|
|
|
return "部分结算";
|
|
|
}
|
|
|
else if (feestatusint == "9:")
|
|
|
{
|
|
|
return "结算完毕";
|
|
|
}
|
|
|
else if (feestatusint == "")
|
|
|
{
|
|
|
return "未录入";
|
|
|
}
|
|
|
else if (feestatusint == "3:")
|
|
|
{
|
|
|
return "申请修改";
|
|
|
}
|
|
|
else if (feestatusint == "4:")
|
|
|
{
|
|
|
return "申请删除";
|
|
|
}
|
|
|
else if (feestatusint == "6:")
|
|
|
{
|
|
|
return "驳回提交";
|
|
|
}
|
|
|
else if (feestatusint == "7:")
|
|
|
{
|
|
|
return "驳回申请";
|
|
|
}
|
|
|
else if (feestatusint.IndexOf("9:") > -1)
|
|
|
{
|
|
|
return "部分结算";
|
|
|
}
|
|
|
else if (feestatusint.IndexOf("8:") > -1)
|
|
|
{
|
|
|
return "部分结算";
|
|
|
}
|
|
|
else if (feestatusint.IndexOf("0:") > -1)
|
|
|
{
|
|
|
return "部分审核";
|
|
|
}
|
|
|
else if (feestatusint.IndexOf("2:") > -1)
|
|
|
{
|
|
|
return "部分提交";
|
|
|
}
|
|
|
else if (feestatusint.IndexOf("6:") > -1)
|
|
|
{
|
|
|
return "驳回提交";
|
|
|
}
|
|
|
else if (feestatusint.IndexOf("7:") > -1)
|
|
|
{
|
|
|
return "驳回申请";
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region 明细表
|
|
|
static public List<MsOpSeaiDetail> GetBodyList(string strCondition)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("SELECT [CTN_ID],[BSNO],isnull(CTNCODE,1) as [CTNCODE],[SIZE],[CTN],[CTNNUM],[TEU],[CTNALL],[CNTRNO],[SEALNO],[PKGS],[KGS],[CBM],[REMARK],[KINDPKGS],[TAREWEIGHT],[GOODSNAME],MTMC,convert(varchar(100),SJRGSJ,20) AS SJRGSJ,convert(varchar(100),SJCGSJ,20) AS SJCGSJ");
|
|
|
strSql.Append(" ,AREANAME,ISWMS,convert(char(10),WMSDATE,20) AS WMSDATE,TRUCKER,TRUCKNO,TRUCKFEE,FREESTORAGEDAY,STORAGEDAY,STORAGEPRICE,STORAGEFEE,FREECTNDAY,CTNDAY,CTNPRICE,CTNFEE,CTNSTATUS,ISTEMP,TiXiangShiJian from op_ctn");
|
|
|
|
|
|
//if (strCondition.Trim() != String.Empty)
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strSql.Append(" where " + strCondition);
|
|
|
}
|
|
|
strSql.Append(" order by BSNO,CTNCODE,CTNALL");
|
|
|
return SetBodyData(strSql);
|
|
|
}
|
|
|
|
|
|
private static List<MsOpSeaiDetail> SetBodyData(StringBuilder strSql)
|
|
|
{
|
|
|
var bodyList = new List<MsOpSeaiDetail>();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
MsOpSeaiDetail data = new MsOpSeaiDetail();
|
|
|
#region Set DB data to Object
|
|
|
data.CTN_ID = Convert.ToString(reader["CTN_ID"]);//编号
|
|
|
data.BSNO = Convert.ToString(reader["BSNO"]);//业务编号
|
|
|
data.CTNCODE = Convert.ToString(reader["CTNCODE"]);//箱型代码
|
|
|
data.SIZE = Convert.ToString(reader["SIZE"]);//尺寸
|
|
|
data.CTN = Convert.ToString(reader["CTN"]);//箱型
|
|
|
data.CTNNUM = Convert.ToInt32(reader["CTNNUM"]);//箱量
|
|
|
data.TEU = Convert.ToInt32(reader["TEU"]);//TEU
|
|
|
data.CTNALL = Convert.ToString(reader["CTNALL"]);//表现形式
|
|
|
data.CNTRNO = Convert.ToString(reader["CNTRNO"]);//箱号
|
|
|
data.SEALNO = Convert.ToString(reader["SEALNO"]);//封号
|
|
|
if (reader["PKGS"] != DBNull.Value)
|
|
|
data.PKGS = Convert.ToInt32(reader["PKGS"]);//件数
|
|
|
if (reader["KGS"] != DBNull.Value)
|
|
|
data.KGS = Convert.ToDecimal(reader["KGS"]);//重量(货重)
|
|
|
if (reader["CBM"] != DBNull.Value)
|
|
|
data.CBM = Convert.ToDecimal(reader["CBM"]);//尺码
|
|
|
data.REMARK = Convert.ToString(reader["REMARK"]);//备注
|
|
|
data.KINDPKGS = Convert.ToString(reader["KINDPKGS"]);//包装类型
|
|
|
if (reader["TAREWEIGHT"] != DBNull.Value)
|
|
|
data.TAREWEIGHT = Convert.ToDecimal(reader["TAREWEIGHT"]);//箱皮重
|
|
|
data.GOODSNAME = Convert.ToString(reader["GOODSNAME"]);//品名
|
|
|
data.TRUCKER = Convert.ToString(reader["TRUCKER"]);
|
|
|
data.TRUCKNO = Convert.ToString(reader["TRUCKNO"]);
|
|
|
if (reader["FREECTNDAY"] != DBNull.Value)
|
|
|
data.FREECTNDAY = Convert.ToString(reader["FREECTNDAY"]);
|
|
|
if (reader["CTNDAY"] != DBNull.Value)
|
|
|
data.CTNDAY = Convert.ToString(reader["CTNDAY"]);
|
|
|
if (reader["TRUCKFEE"] != DBNull.Value)
|
|
|
data.TRUCKFEE = Convert.ToString(reader["TRUCKFEE"]);
|
|
|
if (reader["CTNPRICE"] != DBNull.Value)
|
|
|
data.CTNPRICE = Convert.ToString(reader["CTNPRICE"]);
|
|
|
if (reader["CTNFEE"] != DBNull.Value)
|
|
|
data.CTNFEE = Convert.ToString(reader["CTNFEE"]);
|
|
|
data.CTNSTATUS = Convert.ToString(reader["CTNSTATUS"]);//包装类型
|
|
|
if (reader["MTMC"] != DBNull.Value)
|
|
|
data.MTMC = Convert.ToString(reader["MTMC"]);
|
|
|
data.SJRGSJ = ((reader["SJRGSJ"] == null || reader["SJRGSJ"].ToString().Trim().IndexOf("0001") > -1 || reader["SJRGSJ"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["SJRGSJ"]));
|
|
|
data.SJCGSJ = ((reader["SJCGSJ"] == null || reader["SJCGSJ"].ToString().Trim().IndexOf("0001") > -1 || reader["SJCGSJ"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["SJCGSJ"]));
|
|
|
data.WMSDATE = ((reader["WMSDATE"] == null || reader["WMSDATE"].ToString().Trim().IndexOf("0001") > -1 || reader["WMSDATE"].ToString().Trim().IndexOf("1900") > -1) ? "" : Convert.ToString(reader["WMSDATE"]));
|
|
|
if (reader["ISWMS"] != DBNull.Value)
|
|
|
data.ISWMS = Convert.ToString(reader["ISWMS"]);
|
|
|
if (reader["AREANAME"] != DBNull.Value)
|
|
|
data.AREANAME = Convert.ToString(reader["AREANAME"]);
|
|
|
|
|
|
data.ISTEMP = Convert.ToString(reader["ISTEMP"]);
|
|
|
data.TIXIANGSHIJIAN = Convert.ToString(reader["TiXiangShiJian"]);
|
|
|
#endregion
|
|
|
bodyList.Add(data);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return bodyList;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region Excel导入数据
|
|
|
|
|
|
//更新集装箱件数重量入库时间
|
|
|
public static DBResult UpdateCtrnDetail( List<MsOpSeaiDetail> bodyList)
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (var conn = db.CreateConnection())
|
|
|
{
|
|
|
conn.Open();
|
|
|
var tran = conn.BeginTransaction();
|
|
|
try
|
|
|
{
|
|
|
if (bodyList != null)
|
|
|
{
|
|
|
foreach (var enumValue in bodyList)
|
|
|
{
|
|
|
{
|
|
|
var cmdUpdate = db.GetSqlStringCommand(@"update op_ctn set PKGS='" + enumValue.PKGS + "',KGS=" + enumValue.KGS + ",WMSDATE='" + enumValue.WMSDATE + "',AREANAME='" + enumValue.AREANAME + "' "
|
|
|
+ " where BSNO='" + enumValue.BSNO + "' AND CTN_ID='" + enumValue.CTN_ID + "'");
|
|
|
db.ExecuteNonQuery(cmdUpdate, tran);
|
|
|
}
|
|
|
//n++;
|
|
|
}
|
|
|
}
|
|
|
//
|
|
|
tran.Commit();
|
|
|
}
|
|
|
catch (Exception ee)
|
|
|
{
|
|
|
tran.Rollback();
|
|
|
result.Success = false;
|
|
|
result.Message = "保存出现错误,请重试或联系系统管理员";
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
result.Success = true;
|
|
|
result.Message = "保存成功" + result.Message;
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
//更新集装箱入库状态
|
|
|
public static DBResult UpdateCtrnWMSState(List<MsOpSeaiDetail> bodyList)
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
if (bodyList.Count == 0)
|
|
|
return result;
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (var conn = db.CreateConnection())
|
|
|
{
|
|
|
conn.Open();
|
|
|
var tran = conn.BeginTransaction();
|
|
|
try
|
|
|
{
|
|
|
if (bodyList != null)
|
|
|
{
|
|
|
foreach (var enumValue in bodyList)
|
|
|
{
|
|
|
{
|
|
|
var cmdUpdate = db.GetSqlStringCommand(@"update op_ctn set ISWMS='" + enumValue.ISWMS + "' "
|
|
|
+ " where BSNO='" + enumValue.BSNO + "' AND CTN_ID='" + enumValue.CTN_ID + "'");
|
|
|
db.ExecuteNonQuery(cmdUpdate, tran);
|
|
|
}
|
|
|
//n++;
|
|
|
}
|
|
|
}
|
|
|
//
|
|
|
tran.Commit();
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
tran.Rollback();
|
|
|
result.Success = false;
|
|
|
result.Message = "保存出现错误,请重试或联系系统管理员";
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
result.Success = true;
|
|
|
result.Message = "保存成功" + result.Message;
|
|
|
return result;
|
|
|
}
|
|
|
//生产入库单
|
|
|
|
|
|
/// <summary>
|
|
|
/// 当前有多少入库单号
|
|
|
/// </summary>
|
|
|
/// <param name="bsno"></param>
|
|
|
/// <returns></returns>
|
|
|
public static int CtrnToWMS_DATENUM(string bsno)
|
|
|
{
|
|
|
int num = 0;
|
|
|
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
|
|
|
DataSet ds = T_ALL_DA.GetAllSQL("select distinct(wmsdate) from op_ctn where bsno = '"+bsno+"' and (ISWMS = '0' or ISWMS is null)");
|
|
|
if (ds != null)
|
|
|
{
|
|
|
num = ds.Tables[0].Rows.Count;
|
|
|
}
|
|
|
|
|
|
return num;
|
|
|
}
|
|
|
static public List<MsOpSeaiDetail> CtrnToWMS_List(string strCondition)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("SELECT [CTN_ID],[BSNO],isnull(CTNCODE,1) as [CTNCODE],[SIZE],[CTN],[CTNNUM],[TEU],[CTNALL],[CNTRNO],[SEALNO],[PKGS],[KGS],[CBM],[REMARK],[KINDPKGS],[TAREWEIGHT],[GOODSNAME],MTMC,convert(varchar(100),SJRGSJ,20) AS SJRGSJ,convert(varchar(100),SJCGSJ,20) AS SJCGSJ");
|
|
|
strSql.Append(" ,ISWMS,convert(varchar(100),WMSDATE,120) AS WMSDATE,TRUCKER,TRUCKNO,TRUCKFEE,FREESTORAGEDAY,STORAGEDAY,STORAGEPRICE,STORAGEFEE,FREECTNDAY,CTNDAY,CTNPRICE,CTNFEE,CTNSTATUS,TiXiangShiJian ");
|
|
|
strSql.Append(" FROM (SELECT *, Row_Number() OVER (partition by wmsdate ORDER BY cntrno desc) rownum FROM op_ctn) t");
|
|
|
//if (strCondition.Trim() != String.Empty)
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strSql.Append(" where " + strCondition);
|
|
|
}
|
|
|
strSql.Append(" order by BSNO,CTNCODE,CTNALL");
|
|
|
return SetBodyData(strSql);
|
|
|
}
|
|
|
|
|
|
public static DBResult CtrnToWMS(List<MsOpSeaiDetail> ctrnList,string companyID)
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (var conn = db.CreateConnection())
|
|
|
{
|
|
|
conn.Open();
|
|
|
var tran = conn.BeginTransaction();
|
|
|
try
|
|
|
{
|
|
|
if (ctrnList != null)
|
|
|
{
|
|
|
foreach (var enumValue in ctrnList)
|
|
|
{
|
|
|
{
|
|
|
if (enumValue.ISWMS == "0")
|
|
|
{
|
|
|
WMSNew wms = new WMSNew();
|
|
|
wms.GID = "Wms" + Guid.NewGuid().ToString().Replace("-", ""); ;//获取管理费单号
|
|
|
wms.WMSDATE = enumValue.WMSDATE;
|
|
|
wms.ACCDATE = enumValue.WMSDATE.Substring(0, 7);
|
|
|
var billnoset = MsSysBillNoSetDAL.GetData("OPLBNAME='仓储入库'", companyID);
|
|
|
wms.WMSNO = MsSysBillNoSetDAL.GetBillNo(billnoset, enumValue.WMSDATE.ToString().Trim(), wms.ACCDATE.ToString().Trim());
|
|
|
enumValue.ISWMS = "1";
|
|
|
|
|
|
}
|
|
|
|
|
|
// var cmdUpdate = db.GetSqlStringCommand(@"update op_ctn set PKGS='" + enumValue.PKGS + "',KGS=" + enumValue.KGS + ",WMSDATE='" + enumValue.SJCGSJ + "' "
|
|
|
// + " where BSNO='" + enumValue.BSNO + "' AND CTN_ID='" + enumValue.CTN_ID + "'");
|
|
|
// db.ExecuteNonQuery(cmdUpdate, tran);
|
|
|
}
|
|
|
//n++;
|
|
|
}
|
|
|
}
|
|
|
//
|
|
|
tran.Commit();
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
tran.Rollback();
|
|
|
result.Success = false;
|
|
|
result.Message = "入库保存保存出现错误,请重试或联系系统管理员";
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
result.Success = true;
|
|
|
result.Message = "入库成功" + result.Message;
|
|
|
return result;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 保存明细
|
|
|
public static DBResult SaveDetail(MsOpSeai headData, List<MsOpSeaiDetail> bodyList, string userid)
|
|
|
{
|
|
|
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_ctn (CTN_ID,BSNO,CTNCODE,SIZE,CTN,CTNNUM,TEU,CTNALL,CNTRNO,SEALNO,PKGS,KGS,CBM,REMARK,KINDPKGS,TAREWEIGHT,GOODSNAME) values (newid(),@BSNO,@CTNCODE,@SIZE,@CTN,@CTNNUM,@TEU,@CTNALL,@CNTRNO,@SEALNO,@PKGS,@KGS,@CBM,@REMARK,@KINDPKGS,@TAREWEIGHT,@GOODSNAME) ");
|
|
|
|
|
|
//var cmdUpdate = db.GetSqlStringCommand(@"update op_ctn set CTNCODE=@CTNCODE,SIZE=@SIZE,CTN=@CTN,CTNNUM=@CTNNUM,TEU=@TEU,CTNALL=@CTNALL,CNTRNO=@CNTRNO,SEALNO=@SEALNO,PKGS=@PKGS,KGS=@KGS,CBM=@CBM,REMARK=@REMARK,KINDPKGS=@KINDPKGS,TAREWEIGHT=@TAREWEIGHT where BSNO=@BSNO AND CTN_ID=@CTN_ID ");
|
|
|
|
|
|
if (bodyList != null)
|
|
|
{
|
|
|
//int n = 1;
|
|
|
//int ln = bodyList.Count;
|
|
|
foreach (var enumValue in bodyList)
|
|
|
{
|
|
|
var SIZE = enumValue.CTNALL.ToString().Trim().Substring(0, 2);
|
|
|
string CTN = enumValue.CTNALL.ToString().Trim().Substring(2);
|
|
|
int TEU = enumValue.CTNNUM;
|
|
|
var iTEU = enumValue.CTNALL.ToString().Trim().Substring(0, 1);
|
|
|
if (iTEU == "4")
|
|
|
{
|
|
|
TEU = TEU * 2;
|
|
|
}
|
|
|
else if (iTEU == "L")
|
|
|
{
|
|
|
TEU = 0;
|
|
|
}
|
|
|
if (enumValue.TRUCKFEE == "") enumValue.TRUCKFEE = "0";
|
|
|
if (enumValue.FREECTNDAY == "") enumValue.FREECTNDAY = "0";
|
|
|
if (enumValue.CTNDAY == "") enumValue.CTNDAY = "0";
|
|
|
if (enumValue.CTNPRICE == "") enumValue.CTNPRICE = "0";
|
|
|
if (enumValue.CTNFEE == "") enumValue.CTNFEE = "0";
|
|
|
|
|
|
if (enumValue.CTN_ID == "*")
|
|
|
{
|
|
|
var cmdInsert = db.GetSqlStringCommand(@"insert into op_ctn (CTN_ID,BSNO,CTNCODE,[SIZE],CTN,CTNNUM,TEU,CTNALL,CNTRNO,SEALNO,PKGS,KGS,CBM,REMARK,KINDPKGS,TAREWEIGHT,GOODSNAME,TRUCKER,TRUCKNO,TRUCKFEE,FREECTNDAY,CTNDAY,CTNPRICE,CTNFEE,CTNSTATUS,MTMC,SJRGSJ,SJCGSJ,WMSDATE,AREANAME,ISTEMP,TIXIANGSHIJIAN) values (newid(),'"
|
|
|
+ headData.BSNO + "','" + enumValue.CTNCODE + "','" + SIZE + "','" + CTN + "'," + enumValue.CTNNUM + "," + TEU + ",'" + enumValue.CTNALL + "','" + enumValue.CNTRNO + "','" + enumValue.SEALNO + "','" + enumValue.PKGS + "'," + enumValue.KGS
|
|
|
+ "," + enumValue.CBM + ",'" + enumValue.REMARK + "','" + enumValue.KINDPKGS + "'," + enumValue.TAREWEIGHT + ",'" + enumValue.GOODSNAME + "','" + enumValue.TRUCKER + "','" + enumValue.TRUCKNO + "'," + enumValue.TRUCKFEE
|
|
|
+ "," + enumValue.FREECTNDAY + "," + enumValue.CTNDAY + "," + enumValue.CTNPRICE + "," + enumValue.CTNFEE + ",'" + enumValue.CTNSTATUS + "','" + enumValue.MTMC + "','" + enumValue.SJRGSJ + "','" + enumValue.SJCGSJ + "','" + enumValue.WMSDATE + "','"+enumValue.AREANAME+ "','" + enumValue.ISTEMP + "','" + enumValue.TIXIANGSHIJIAN + "')");
|
|
|
db.ExecuteNonQuery(cmdInsert, tran);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
var cmdUpdate = db.GetSqlStringCommand(@"update op_ctn set CTNCODE='"+enumValue.CTNCODE+"',[SIZE]='"+SIZE+"',CTN='"+CTN+"',CTNNUM="+enumValue.CTNNUM+",TEU="+TEU+",CTNALL='"+enumValue.CTNALL+"',CNTRNO='"+enumValue.CNTRNO
|
|
|
+ "',SEALNO='" + enumValue.SEALNO + "',PKGS='" + enumValue.PKGS + "',KGS=" + enumValue.KGS + ",CBM=" + enumValue.CBM + ",REMARK='" + enumValue.REMARK + "',KINDPKGS='" + enumValue.KINDPKGS + "',TAREWEIGHT=" + enumValue.TAREWEIGHT
|
|
|
+ ",TRUCKER='" + enumValue.TRUCKER + "',TRUCKNO='" + enumValue.TRUCKNO + "',TRUCKFEE=" + enumValue.TRUCKFEE + ",FREECTNDAY=" + enumValue.FREECTNDAY + ",CTNDAY=" + enumValue.CTNDAY + ",CTNPRICE=" + enumValue.CTNPRICE + ",CTNFEE=" + enumValue.CTNFEE + ",CTNSTATUS='" + enumValue.CTNSTATUS + "',MTMC='" + enumValue.MTMC + "',SJRGSJ='" + enumValue.SJRGSJ + "',SJCGSJ='" + enumValue.SJCGSJ + "',WMSDATE='" + enumValue.WMSDATE + "',AREANAME='" + enumValue.AREANAME + "',ISTEMP='" + enumValue.ISTEMP + "',TIXIANGSHIJIAN='"+ enumValue.TIXIANGSHIJIAN + "' "
|
|
|
+ " where BSNO='"+enumValue.BSNO+"' AND CTN_ID='"+enumValue.CTN_ID+"'");
|
|
|
db.ExecuteNonQuery(cmdUpdate, tran);
|
|
|
}
|
|
|
//n++;
|
|
|
}
|
|
|
}
|
|
|
//
|
|
|
tran.Commit();
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
tran.Rollback();
|
|
|
result.Success = false;
|
|
|
result.Message = "保存出现错误,请重试或联系系统管理员";
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
//
|
|
|
getCNTRTOTAL(headData.BSNO, "op_seai");
|
|
|
//
|
|
|
result.Success = true;
|
|
|
result.Message = "保存成功" + result.Message;
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//合计当前业务的集装箱信息,更新op_seai中的CNTRTOTAL,CNTRSEALNO两个字段
|
|
|
public static void getCNTRTOTAL(string strBSNO, string bstype)
|
|
|
{
|
|
|
int iTEU = 0;
|
|
|
string strCNTRTOTAL = "";
|
|
|
string strCNTRNO = "";
|
|
|
string str = "";
|
|
|
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
|
|
|
DataSet dsDisp = T_ALL_DA.GetAllSQL("select * from code_ctn_disp");// where CORPID = '" + strCORPID + "'";
|
|
|
DataSet ds = T_ALL_DA.GetAllSQL("select * from op_ctn where BSNO='" + strBSNO.Trim() + "'");
|
|
|
str = "update " + bstype + " set CNTR1=0,CNTR2=0,CNTR3=0,CNTR4=0,CNTR5=0,CNTR6=0,CNTR7=0,CNTR8=0,CNTR9=0,CNTR10=0,OTCNTR=0 where BSNO='" + strBSNO + "'";
|
|
|
bool bl3 = T_ALL_DA.GetExecuteSqlCommand(str);
|
|
|
if (ds != null)
|
|
|
{
|
|
|
if (ds.Tables[0].Rows.Count > 0)
|
|
|
{
|
|
|
foreach (DataTable myTable in ds.Tables)
|
|
|
{
|
|
|
foreach (DataRow myRow in myTable.Rows)//遍历表
|
|
|
{
|
|
|
strCNTRNO += myRow["CNTRNO"].ToString().Trim() + "/" + myRow["SEALNO"].ToString().Trim() + "/" + myRow["CTNALL"].ToString().Trim() + "\r\n";
|
|
|
iTEU += int.Parse(myRow["TEU"].ToString().Trim());
|
|
|
}
|
|
|
}
|
|
|
//
|
|
|
|
|
|
//
|
|
|
str = "select CTNALL,sum(CTNNUM) as hj from op_ctn where BSNO='" + strBSNO.Trim() + "' group by CTNALL order by CTNALL";
|
|
|
ds = T_ALL_DA.GetAllSQL(str);
|
|
|
foreach (DataTable myTable in ds.Tables)
|
|
|
{
|
|
|
foreach (DataRow myRow in myTable.Rows)//遍历表
|
|
|
{
|
|
|
strCNTRTOTAL += myRow["CTNALL"].ToString().Trim() + "*" + myRow["hj"].ToString().Trim() + " / ";
|
|
|
//
|
|
|
if (dsDisp == null)
|
|
|
{
|
|
|
string sHJ = T_ALL_DA.GetStrSQL("hj", "select sum(CTNNUM) as hj from op_ctn where BSNO='" + strBSNO.Trim() + "'");
|
|
|
str = "update " + bstype + " set OTCNTR=OTCNTR+" + myRow["hj"].ToString().Trim() + " where BSNO='" + strBSNO + "'";
|
|
|
bool bl2 = T_ALL_DA.GetExecuteSqlCommand(str);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
int j = 0;
|
|
|
for (int i = 1; i < 11; i++)
|
|
|
{
|
|
|
if (dsDisp.Tables[0].Rows[0][i].ToString().Trim().Equals(myRow["CTNALL"].ToString().Trim()))
|
|
|
{
|
|
|
str = "update " + bstype + " set CNTR" + i + "=CNTR" + i + "+" + myRow["hj"].ToString().Trim() + " where BSNO='" + strBSNO + "'";
|
|
|
j = j + 1;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if (j == 0)
|
|
|
{
|
|
|
str = "update " + bstype + " set OTCNTR=OTCNTR+" + myRow["hj"].ToString().Trim() + " where BSNO='" + strBSNO + "'";
|
|
|
}
|
|
|
bool bl2 = T_ALL_DA.GetExecuteSqlCommand(str);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
strCNTRTOTAL = strCNTRTOTAL.Trim().Substring(0, strCNTRTOTAL.Trim().Length - 1);
|
|
|
}
|
|
|
}
|
|
|
str = "update op_seai set CNTRTOTAL='" + strCNTRTOTAL + "',CNTRSEALNO='" + strCNTRNO + "',TEU=" + iTEU + " where BSNO='" + strBSNO.Trim() + "'";
|
|
|
bool bl = T_ALL_DA.GetExecuteSqlCommand(str);
|
|
|
}
|
|
|
|
|
|
//判断单号是否重复
|
|
|
static public int GetRdCount(string strCondition)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("SELECT Count(BSNO) AS CT from op_seai");
|
|
|
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;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
public static DBResult SaveGoodsDetail(MsOpSeai headData, List<MsOpApplyDetail> bodyList, string userid)
|
|
|
{
|
|
|
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_apply_detail (BSNO, SerialNo,GOODSCODE,GOODSNAME,PKGS,PRICE,TOTAL,CURRENCY,Remark,WMSNO,WMSIN_GID,GOODSMODEL,GOODSSTANDARD,GOODSNUM,PICINO,PONO,KGS,KINDPKGS)
|
|
|
values (@BSNO, @SerialNo, @GOODSCODE, @GOODSNAME,@PKGS, @PRICE, @TOTAL, @CURRENCY,@Remark,@WMSNO,@WMSIN_GID,@GOODSMODEL,@GOODSSTANDARD,@GOODSNUM,@PICINO,@PONO,@KGS,@KINDPKGS) ");
|
|
|
|
|
|
var cmdUpdate =
|
|
|
db.GetSqlStringCommand(
|
|
|
@"update op_apply_detail set GOODSCODE=@GOODSCODE,GOODSNAME=@GOODSNAME,PKGS=@PKGS,PRICE=@PRICE,TOTAL=@TOTAL,CURRENCY=@CURRENCY,Remark=@Remark
|
|
|
,WMSNO=@WMSNO,WMSIN_GID=@WMSIN_GID,GOODSMODEL=@GOODSMODEL,GOODSSTANDARD=@GOODSSTANDARD,GOODSNUM=@GOODSNUM,PICINO=@PICINO,PONO=@PONO,KGS=@KGS,KINDPKGS=@KINDPKGS where BSNO=@BSNO AND SerialNo=@SerialNo ");
|
|
|
var StrSerialNo = "(1000";
|
|
|
|
|
|
if (bodyList != null)
|
|
|
{
|
|
|
foreach (var enumValue in bodyList)
|
|
|
{
|
|
|
|
|
|
StrSerialNo = StrSerialNo + "," + Convert.ToString(enumValue.SerialNo);
|
|
|
if (enumValue.BsNo == "*")
|
|
|
{
|
|
|
cmdInsert.Parameters.Clear();
|
|
|
db.AddInParameter(cmdInsert, "@BSNO", DbType.String, headData.BSNO);
|
|
|
db.AddInParameter(cmdInsert, "@SerialNo", DbType.Int32, enumValue.SerialNo);
|
|
|
db.AddInParameter(cmdInsert, "@GOODSCODE", DbType.String, enumValue.GoodsCode);
|
|
|
db.AddInParameter(cmdInsert, "@GOODSNAME", DbType.String, enumValue.GoodsName);
|
|
|
db.AddInParameter(cmdInsert, "@PKGS", DbType.Decimal, enumValue.Pkgs);
|
|
|
db.AddInParameter(cmdInsert, "@PRICE", DbType.Decimal, enumValue.Price);
|
|
|
db.AddInParameter(cmdInsert, "@TOTAL", DbType.Decimal, enumValue.Total);
|
|
|
db.AddInParameter(cmdInsert, "@CURRENCY", DbType.String, enumValue.Currency);
|
|
|
db.AddInParameter(cmdInsert, "@Remark", DbType.String, enumValue.Remark);
|
|
|
db.AddInParameter(cmdInsert, "@WMSIN_GID", DbType.String, enumValue.WMSIN_GID);
|
|
|
db.AddInParameter(cmdInsert, "@WMSNO", DbType.String, enumValue.WMSNO);
|
|
|
db.AddInParameter(cmdInsert, "@GOODSMODEL", DbType.String, enumValue.GOODSMODEL);
|
|
|
db.AddInParameter(cmdInsert, "@GOODSSTANDARD", DbType.String, enumValue.GOODSSTANDARD);
|
|
|
db.AddInParameter(cmdInsert, "@GOODSNUM", DbType.Decimal, enumValue.GOODSNUM);
|
|
|
db.AddInParameter(cmdInsert, "@PICINO", DbType.String, enumValue.PICINO);
|
|
|
db.AddInParameter(cmdInsert, "@PONO", DbType.String, enumValue.PONO);
|
|
|
if (enumValue.KGS=="")
|
|
|
db.AddInParameter(cmdInsert, "@KGS", DbType.String, "0");
|
|
|
else
|
|
|
db.AddInParameter(cmdInsert, "@KGS", DbType.String, enumValue.KGS);
|
|
|
db.AddInParameter(cmdInsert, "@KINDPKGS", DbType.String, enumValue.KINDPKGS);
|
|
|
|
|
|
db.ExecuteNonQuery(cmdInsert, tran);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
|
|
|
cmdUpdate.Parameters.Clear();
|
|
|
db.AddInParameter(cmdUpdate, "@BSNO", DbType.String, headData.BSNO);
|
|
|
db.AddInParameter(cmdUpdate, "@SerialNo", DbType.Int32, enumValue.SerialNo);
|
|
|
db.AddInParameter(cmdUpdate, "@GOODSCODE", DbType.String, enumValue.GoodsCode);
|
|
|
db.AddInParameter(cmdUpdate, "@GOODSNAME", DbType.String, enumValue.GoodsName);
|
|
|
db.AddInParameter(cmdUpdate, "@PKGS", DbType.Decimal, enumValue.Pkgs);
|
|
|
db.AddInParameter(cmdUpdate, "@PRICE", DbType.Decimal, enumValue.Price);
|
|
|
db.AddInParameter(cmdUpdate, "@TOTAL", DbType.Decimal, enumValue.Total);
|
|
|
db.AddInParameter(cmdUpdate, "@CURRENCY", DbType.String, enumValue.Currency);
|
|
|
db.AddInParameter(cmdUpdate, "@Remark", DbType.String, enumValue.Remark);
|
|
|
db.AddInParameter(cmdUpdate, "@WMSNO", DbType.String, enumValue.WMSNO);
|
|
|
db.AddInParameter(cmdUpdate, "@WMSIN_GID", DbType.String, enumValue.WMSIN_GID);
|
|
|
db.AddInParameter(cmdUpdate, "@GOODSMODEL", DbType.String, enumValue.GOODSMODEL);
|
|
|
db.AddInParameter(cmdUpdate, "@GOODSSTANDARD", DbType.String, enumValue.GOODSSTANDARD);
|
|
|
db.AddInParameter(cmdUpdate, "@GOODSNUM", DbType.Decimal, enumValue.GOODSNUM);
|
|
|
db.AddInParameter(cmdUpdate, "@PICINO", DbType.String, enumValue.PICINO);
|
|
|
db.AddInParameter(cmdUpdate, "@PONO", DbType.String, enumValue.PONO);
|
|
|
if (enumValue.KGS == "")
|
|
|
db.AddInParameter(cmdUpdate, "@KGS", DbType.String, "0");
|
|
|
else
|
|
|
db.AddInParameter(cmdUpdate, "@KGS", DbType.String, enumValue.KGS);
|
|
|
db.AddInParameter(cmdUpdate, "@KINDPKGS", DbType.String, enumValue.KINDPKGS);
|
|
|
db.ExecuteNonQuery(cmdUpdate, tran);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
StrSerialNo = StrSerialNo + ")";
|
|
|
var cmdDelete = db.GetSqlStringCommand("delete from op_apply_detail where BSNO='" + headData.BSNO + "' and SerialNo not in " + StrSerialNo);
|
|
|
db.ExecuteNonQuery(cmdDelete, tran);
|
|
|
|
|
|
|
|
|
tran.Commit();
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
tran.Rollback();
|
|
|
|
|
|
result.Success = false;
|
|
|
result.Message = "保存出现错误,请重试或联系系统管理员";
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
result.Success = true;
|
|
|
result.Message = "保存成功" + result.Message;
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public static bool GetPONOCount(string BSNO,string PONO)
|
|
|
{
|
|
|
var isfee = false;
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("Select count(*) as count ");
|
|
|
strSql.Append(" from op_apply_detail ");
|
|
|
strSql.Append(" where BSNO<>'" + BSNO + "' AND PONO='"+ PONO + "'");
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
var evData = Convert.ToInt32(reader["count"]);
|
|
|
if (evData > 0) { isfee = true; };
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return isfee;
|
|
|
}
|
|
|
|
|
|
|
|
|
#region 删除
|
|
|
public static DBResult DeleteDetail(MsOpSeai headData)
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (var conn = db.CreateConnection())
|
|
|
{
|
|
|
conn.Open();
|
|
|
var tran = conn.BeginTransaction();
|
|
|
try
|
|
|
{
|
|
|
var cmdDelete = db.GetSqlStringCommand("delete from op_Seai_detail where BSNO='" + headData.BSNO + "'");
|
|
|
db.ExecuteNonQuery(cmdDelete, tran);
|
|
|
|
|
|
cmdDelete = db.GetSqlStringCommand("delete from op_Seai_service where BSNO='" + headData.BSNO + "'");
|
|
|
db.ExecuteNonQuery(cmdDelete, tran);
|
|
|
|
|
|
cmdDelete = db.GetSqlStringCommand("delete from op_Seai_service_detail where BSNO='" + headData.BSNO + "'");
|
|
|
db.ExecuteNonQuery(cmdDelete, tran);
|
|
|
|
|
|
cmdDelete = db.GetSqlStringCommand("delete from OP_SEAETOSEAI where SEAIBSNO='" + headData.BSNO + "'");
|
|
|
db.ExecuteNonQuery(cmdDelete, tran);
|
|
|
|
|
|
tran.Commit();
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
tran.Rollback();
|
|
|
|
|
|
result.Success = false;
|
|
|
result.Message = "删除出现错误,请重试或联系系统管理员";
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
result.Success = true;
|
|
|
result.Message = "操作成功";
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public static DBResult DeleteDetail2(MsOpSeaiDetail headData)
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (var conn = db.CreateConnection())
|
|
|
{
|
|
|
conn.Open();
|
|
|
var tran = conn.BeginTransaction();
|
|
|
try
|
|
|
{
|
|
|
var cmdDelete = db.GetSqlStringCommand("delete from op_ctn where CTN_ID='" + headData.CTN_ID + "'");
|
|
|
db.ExecuteNonQuery(cmdDelete, tran);
|
|
|
tran.Commit();
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
tran.Rollback();
|
|
|
result.Success = false;
|
|
|
result.Message = "删除出现错误,请重试或联系系统管理员";
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
//
|
|
|
getCNTRTOTAL(headData.BSNO, "op_seai");
|
|
|
//
|
|
|
result.Success = true;
|
|
|
result.Message = "操作成功";
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region EDI引入
|
|
|
|
|
|
public static string GetPosString(string str, int pos, bool isnum = false)
|
|
|
{
|
|
|
var result = "";
|
|
|
if (isnum) result = "0";
|
|
|
var j = 0;
|
|
|
if (str.IndexOf(":") == -1) return result;
|
|
|
str=str.Replace("??", "?").Replace("?:", "^").Replace("?'", "'").Replace("?+", "+");
|
|
|
for (int i = 1; i < pos; i++)
|
|
|
{
|
|
|
if (str.IndexOf(":") == -1) return result;
|
|
|
if (str.IndexOf(":") != -1)
|
|
|
{
|
|
|
j = str.IndexOf(":");
|
|
|
str = str.Substring(j + 1, str.Length - j - 1);
|
|
|
}
|
|
|
}
|
|
|
j = str.IndexOf(":");
|
|
|
|
|
|
if (j != -1)
|
|
|
{
|
|
|
str = str.Substring(0, j);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (str.Length != 0)
|
|
|
str = str.Substring(0, str.Length - 1);
|
|
|
}
|
|
|
|
|
|
result = str.Replace("^", ":");
|
|
|
if (isnum)
|
|
|
{
|
|
|
if (result == "")
|
|
|
result = "0";
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
|
|
|
}
|
|
|
|
|
|
public static string GetDateString(string str)
|
|
|
{
|
|
|
var result = "";
|
|
|
if (str.Length != 8) return result;
|
|
|
|
|
|
return str.Substring(0, 4) + "-" + str.Substring(4, 2) + "-" + str.Substring(6, 2);
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
public static List<MsOpSeai> ImportEdiList(string filename, string userid, string usercode, string companyid)
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
var headList = new List<MsOpSeai>();
|
|
|
try
|
|
|
{
|
|
|
FileStream fs = new FileStream(filename, FileMode.Open);
|
|
|
|
|
|
StreamReader sr = new StreamReader(fs, System.Text.Encoding.GetEncoding("gb2312"));
|
|
|
|
|
|
string line;
|
|
|
var head = "";
|
|
|
var Corps = "";
|
|
|
var VslID = "";
|
|
|
var Vessel = "";
|
|
|
var VoyNo = "";
|
|
|
var etd = "";
|
|
|
var eta = "";
|
|
|
var Carrier = "";
|
|
|
var headData = new MsOpSeai();
|
|
|
var strtmp = "";
|
|
|
var BSNO = "";
|
|
|
var addbill = false;
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (var conn = db.CreateConnection())
|
|
|
{
|
|
|
|
|
|
|
|
|
while ((line = sr.ReadLine()) != null&&line!="")
|
|
|
{
|
|
|
head = line.Substring(0, 2);
|
|
|
if (head == "00")
|
|
|
{
|
|
|
Corps = GetPosString(line, 5);
|
|
|
}
|
|
|
if (head == "10")
|
|
|
{
|
|
|
VslID = GetPosString(line, 2);
|
|
|
Vessel = GetPosString(line, 3);
|
|
|
VoyNo = GetPosString(line, 5);
|
|
|
etd = GetPosString(line, 8);
|
|
|
eta = GetPosString(line, 9);
|
|
|
}
|
|
|
if (head == "11")
|
|
|
{
|
|
|
Carrier = GetPosString(line, 2);
|
|
|
}
|
|
|
if (head == "12")
|
|
|
{
|
|
|
|
|
|
|
|
|
headData = new MsOpSeai();
|
|
|
BSNO = "topseai" + Guid.NewGuid().ToString();
|
|
|
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
|
|
|
string rq = T_ALL_DA.GetStrSQL("rq", "select getdate() as rq");
|
|
|
string sYear = DateTime.Parse(rq).Year.ToString();
|
|
|
string sMonth = DateTime.Parse(rq).ToString("MM");
|
|
|
headData.ACCDATE = sYear + "-" + sMonth;
|
|
|
headData.BSDATE = rq;
|
|
|
|
|
|
headData.BSNO = BSNO;
|
|
|
headData.MASTERNO = BSNO;
|
|
|
var isuse = MsBaseInfoDAL.MsBaseInfoDAL.GetRuleUse("委托编号", "2");
|
|
|
if (isuse)
|
|
|
{
|
|
|
headData.CUSTNO =getCodeRule("委托编号", "CUSTNO", headData.BSDATE.ToString().Trim(), headData.ACCDATE.ToString().Trim(), userid, companyid);
|
|
|
}
|
|
|
headData.CORPID = companyid;
|
|
|
|
|
|
headData.INPUTBY = usercode;
|
|
|
headData.OP = usercode;
|
|
|
headData.BSDATE = DateTime.Now.ToString();
|
|
|
headData.CREATETIME = DateTime.Now.ToString();
|
|
|
headData.BSSTATUS = false;
|
|
|
headData.FEESTATUS = false;
|
|
|
headData.DbOperationType = DbOperationType.DbotIns;
|
|
|
headData.CUSTOMERNAME = Corps;
|
|
|
headData.VESSEL = Vessel;
|
|
|
headData.VOYNO = VoyNo;
|
|
|
headData.MBLNO = GetPosString(line, 2);
|
|
|
if (eta != "")
|
|
|
headData.ETD = GetDateString(eta);
|
|
|
if (etd != "")
|
|
|
headData.ETA = GetDateString(etd);
|
|
|
headData.PORTLOADID = GetPosString(line, 8);
|
|
|
headData.PORTLOAD = GetPosString(line, 9);
|
|
|
headData.SERVICE = GetPosString(line, 10);
|
|
|
strtmp = GetPosString(line, 11);
|
|
|
if (strtmp == "P")
|
|
|
headData.BLFRT = "FREIGHT PREPAID";
|
|
|
else
|
|
|
headData.BLFRT = "FREIGHT COLLECT";
|
|
|
|
|
|
var ct = MsOpSeaiDAL.GetRdCount("BSNO<>'" + headData.BSNO + "' AND MBLNO='" + headData.MBLNO + "' and CORPID='" + companyid + "'");
|
|
|
if (ct == 0)
|
|
|
{
|
|
|
addbill = true;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
if (head == "13")
|
|
|
{
|
|
|
headData.PORTDISCHARGEID = GetPosString(line, 4);
|
|
|
headData.PORTDISCHARGE = GetPosString(line, 5);
|
|
|
headData.DESTINATIONID = GetPosString(line, 6);
|
|
|
headData.DESTINATION = GetPosString(line, 7);
|
|
|
|
|
|
}
|
|
|
if (head == "16")
|
|
|
{
|
|
|
strtmp = GetPosString(line, 3);
|
|
|
if (strtmp != "")
|
|
|
if (headData.SHIPPER == "")
|
|
|
headData.SHIPPER = strtmp;
|
|
|
else
|
|
|
headData.SHIPPER = headData.SHIPPER + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 4);
|
|
|
if (strtmp != "")
|
|
|
if (headData.SHIPPER == "")
|
|
|
headData.SHIPPER = strtmp;
|
|
|
else
|
|
|
headData.SHIPPER = headData.SHIPPER + Environment.NewLine + strtmp;
|
|
|
|
|
|
strtmp = GetPosString(line, 5);
|
|
|
if (strtmp != "")
|
|
|
if (headData.SHIPPER == "")
|
|
|
headData.SHIPPER = strtmp;
|
|
|
else
|
|
|
headData.SHIPPER = headData.SHIPPER + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 6);
|
|
|
if (strtmp != "")
|
|
|
if (headData.SHIPPER == "")
|
|
|
headData.SHIPPER = strtmp;
|
|
|
else
|
|
|
headData.SHIPPER = headData.SHIPPER + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 7);
|
|
|
if (strtmp != "")
|
|
|
if (headData.SHIPPER == "")
|
|
|
headData.SHIPPER = strtmp;
|
|
|
else
|
|
|
headData.SHIPPER = headData.SHIPPER + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 8);
|
|
|
if (strtmp != "")
|
|
|
if (headData.SHIPPER == "")
|
|
|
headData.SHIPPER = strtmp;
|
|
|
else
|
|
|
headData.SHIPPER = headData.SHIPPER + Environment.NewLine + strtmp;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (head == "17")
|
|
|
{
|
|
|
strtmp = GetPosString(line, 3);
|
|
|
if (strtmp != "")
|
|
|
if (headData.CONSIGNEE == "")
|
|
|
headData.CONSIGNEE = strtmp;
|
|
|
else
|
|
|
headData.CONSIGNEE = headData.CONSIGNEE + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 4);
|
|
|
if (strtmp != "")
|
|
|
if (headData.CONSIGNEE == "")
|
|
|
headData.CONSIGNEE = strtmp;
|
|
|
else
|
|
|
headData.CONSIGNEE = headData.CONSIGNEE + Environment.NewLine + strtmp;
|
|
|
|
|
|
strtmp = GetPosString(line, 5);
|
|
|
if (strtmp != "")
|
|
|
if (headData.CONSIGNEE == "")
|
|
|
headData.CONSIGNEE = strtmp;
|
|
|
else
|
|
|
headData.CONSIGNEE = headData.CONSIGNEE + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 6);
|
|
|
if (strtmp != "")
|
|
|
if (headData.CONSIGNEE == "")
|
|
|
headData.CONSIGNEE = strtmp;
|
|
|
else
|
|
|
headData.CONSIGNEE = headData.CONSIGNEE + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 7);
|
|
|
if (strtmp != "")
|
|
|
if (headData.CONSIGNEE == "")
|
|
|
headData.CONSIGNEE = strtmp;
|
|
|
else
|
|
|
headData.CONSIGNEE = headData.CONSIGNEE + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 8);
|
|
|
if (strtmp != "")
|
|
|
if (headData.CONSIGNEE == "")
|
|
|
headData.CONSIGNEE = strtmp;
|
|
|
else
|
|
|
headData.CONSIGNEE = headData.CONSIGNEE + Environment.NewLine + strtmp;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (head == "18")
|
|
|
{
|
|
|
strtmp = GetPosString(line, 3);
|
|
|
if (strtmp != "")
|
|
|
if (headData.NOTIFYPARTY == "")
|
|
|
headData.NOTIFYPARTY = strtmp;
|
|
|
else
|
|
|
headData.NOTIFYPARTY = headData.NOTIFYPARTY + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 4);
|
|
|
if (strtmp != "")
|
|
|
if (headData.NOTIFYPARTY == "")
|
|
|
headData.NOTIFYPARTY = strtmp;
|
|
|
else
|
|
|
headData.NOTIFYPARTY = headData.NOTIFYPARTY + Environment.NewLine + strtmp;
|
|
|
|
|
|
strtmp = GetPosString(line, 5);
|
|
|
if (strtmp != "")
|
|
|
if (headData.NOTIFYPARTY == "")
|
|
|
headData.NOTIFYPARTY = strtmp;
|
|
|
else
|
|
|
headData.NOTIFYPARTY = headData.NOTIFYPARTY + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 6);
|
|
|
if (strtmp != "")
|
|
|
if (headData.NOTIFYPARTY == "")
|
|
|
headData.NOTIFYPARTY = strtmp;
|
|
|
else
|
|
|
headData.NOTIFYPARTY = headData.NOTIFYPARTY + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 7);
|
|
|
if (strtmp != "")
|
|
|
if (headData.NOTIFYPARTY == "")
|
|
|
headData.NOTIFYPARTY = strtmp;
|
|
|
else
|
|
|
headData.NOTIFYPARTY = headData.NOTIFYPARTY + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 8);
|
|
|
if (strtmp != "")
|
|
|
if (headData.NOTIFYPARTY == "")
|
|
|
headData.NOTIFYPARTY = strtmp;
|
|
|
else
|
|
|
headData.NOTIFYPARTY = headData.NOTIFYPARTY + Environment.NewLine + strtmp;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (head == "19")
|
|
|
{
|
|
|
strtmp = GetPosString(line, 3);
|
|
|
if (strtmp != "")
|
|
|
if (headData.AGENT == "")
|
|
|
headData.AGENT = strtmp;
|
|
|
else
|
|
|
headData.AGENT = headData.AGENT + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 4);
|
|
|
if (strtmp != "")
|
|
|
if (headData.AGENT == "")
|
|
|
headData.AGENT = strtmp;
|
|
|
else
|
|
|
headData.AGENT = headData.AGENT + Environment.NewLine + strtmp;
|
|
|
|
|
|
strtmp = GetPosString(line, 5);
|
|
|
if (strtmp != "")
|
|
|
if (headData.AGENT == "")
|
|
|
headData.AGENT = strtmp;
|
|
|
else
|
|
|
headData.AGENT = headData.AGENT + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 6);
|
|
|
if (strtmp != "")
|
|
|
if (headData.AGENT == "")
|
|
|
headData.AGENT = strtmp;
|
|
|
else
|
|
|
headData.AGENT = headData.AGENT + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 7);
|
|
|
if (strtmp != "")
|
|
|
if (headData.AGENT == "")
|
|
|
headData.AGENT = strtmp;
|
|
|
else
|
|
|
headData.AGENT = headData.AGENT + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 8);
|
|
|
if (strtmp != "")
|
|
|
if (headData.AGENT == "")
|
|
|
headData.AGENT = strtmp;
|
|
|
else
|
|
|
headData.AGENT = headData.AGENT + Environment.NewLine + strtmp;
|
|
|
|
|
|
}
|
|
|
if (head == "41")
|
|
|
{
|
|
|
headData.PKGS = Convert.ToInt32(GetPosString(line, 4, true));
|
|
|
headData.KINDPKGS = GetPosString(line, 6);
|
|
|
headData.KGS = Convert.ToDecimal(GetPosString(line, 7, true));
|
|
|
headData.CBM = Convert.ToDecimal(GetPosString(line, 9, true));
|
|
|
headData.NOPKGS = Convert.ToInt32(GetPosString(line, 4, true)).ToString() + GetPosString(line, 6);
|
|
|
headData.GROSSWEIGHT = Convert.ToDecimal(GetPosString(line, 7, true)).ToString() + "KGS";
|
|
|
headData.MEASUREMENT = Convert.ToDecimal(GetPosString(line, 9, true)).ToString() + "CBM";
|
|
|
}
|
|
|
|
|
|
if (head == "44")
|
|
|
{
|
|
|
strtmp = GetPosString(line, 2);
|
|
|
if (strtmp != "")
|
|
|
if (headData.MARKS == "")
|
|
|
headData.MARKS = strtmp;
|
|
|
else
|
|
|
headData.MARKS = headData.MARKS + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 3);
|
|
|
if (strtmp != "")
|
|
|
if (headData.MARKS == "")
|
|
|
headData.MARKS = strtmp;
|
|
|
else
|
|
|
headData.MARKS = headData.MARKS + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 4);
|
|
|
if (strtmp != "")
|
|
|
if (headData.MARKS == "")
|
|
|
headData.MARKS = strtmp;
|
|
|
else
|
|
|
headData.MARKS = headData.MARKS + Environment.NewLine + strtmp;
|
|
|
|
|
|
strtmp = GetPosString(line, 5);
|
|
|
if (strtmp != "")
|
|
|
if (headData.MARKS == "")
|
|
|
headData.MARKS = strtmp;
|
|
|
else
|
|
|
headData.MARKS = headData.MARKS + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 6);
|
|
|
if (strtmp != "")
|
|
|
if (headData.MARKS == "")
|
|
|
headData.MARKS = strtmp;
|
|
|
else
|
|
|
headData.MARKS = headData.MARKS + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 7);
|
|
|
if (strtmp != "")
|
|
|
if (headData.MARKS == "")
|
|
|
headData.MARKS = strtmp;
|
|
|
else
|
|
|
headData.MARKS = headData.MARKS + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 8);
|
|
|
if (strtmp != "")
|
|
|
if (headData.MARKS == "")
|
|
|
headData.MARKS = strtmp;
|
|
|
else
|
|
|
headData.MARKS = headData.MARKS + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 9);
|
|
|
if (strtmp != "")
|
|
|
if (headData.MARKS == "")
|
|
|
headData.MARKS = strtmp;
|
|
|
else
|
|
|
headData.MARKS = headData.MARKS + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 10);
|
|
|
if (strtmp != "")
|
|
|
if (headData.MARKS == "")
|
|
|
headData.MARKS = strtmp;
|
|
|
else
|
|
|
headData.MARKS = headData.MARKS + Environment.NewLine + strtmp;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (head == "47")
|
|
|
{
|
|
|
strtmp = GetPosString(line, 2);
|
|
|
if (strtmp != "")
|
|
|
if (headData.DESCRIPTION == "")
|
|
|
headData.DESCRIPTION = strtmp;
|
|
|
else
|
|
|
headData.DESCRIPTION = headData.DESCRIPTION + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 3);
|
|
|
if (strtmp != "")
|
|
|
if (headData.DESCRIPTION == "")
|
|
|
headData.DESCRIPTION = strtmp;
|
|
|
else
|
|
|
headData.DESCRIPTION = headData.DESCRIPTION + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 4);
|
|
|
if (strtmp != "")
|
|
|
if (headData.DESCRIPTION == "")
|
|
|
headData.DESCRIPTION = strtmp;
|
|
|
else
|
|
|
headData.DESCRIPTION = headData.DESCRIPTION + Environment.NewLine + strtmp;
|
|
|
|
|
|
strtmp = GetPosString(line, 5);
|
|
|
if (strtmp != "")
|
|
|
if (headData.DESCRIPTION == "")
|
|
|
headData.DESCRIPTION = strtmp;
|
|
|
else
|
|
|
headData.DESCRIPTION = headData.DESCRIPTION + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 6);
|
|
|
if (strtmp != "")
|
|
|
if (headData.DESCRIPTION == "")
|
|
|
headData.DESCRIPTION = strtmp;
|
|
|
else
|
|
|
headData.DESCRIPTION = headData.DESCRIPTION + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 7);
|
|
|
if (strtmp != "")
|
|
|
if (headData.DESCRIPTION == "")
|
|
|
headData.DESCRIPTION = strtmp;
|
|
|
else
|
|
|
headData.DESCRIPTION = headData.DESCRIPTION + Environment.NewLine + strtmp;
|
|
|
strtmp = GetPosString(line, 8);
|
|
|
if (strtmp != "")
|
|
|
if (headData.DESCRIPTION == "")
|
|
|
headData.DESCRIPTION = strtmp;
|
|
|
else
|
|
|
headData.DESCRIPTION = headData.DESCRIPTION + Environment.NewLine + strtmp;
|
|
|
|
|
|
|
|
|
}
|
|
|
if (head == "51")
|
|
|
{
|
|
|
if (addbill)
|
|
|
{
|
|
|
var modb = new ModelObjectDB();
|
|
|
modb.Save(headData);
|
|
|
headList.Add(headData);
|
|
|
addbill = false;
|
|
|
}
|
|
|
|
|
|
var ctncode = BasicDataRefDAL.GetCodeCtnList("EDICODE='" + GetPosString(line, 5) + "'",false);
|
|
|
if (ctncode.Count== 0)
|
|
|
ctncode = BasicDataRefDAL.GetCodeCtnList("CTN='" + GetPosString(line, 5) + "'",false);
|
|
|
if (ctncode.Count != 0)
|
|
|
{
|
|
|
var teu = 0;
|
|
|
if (ctncode[0].CTN.IndexOf("2") != -1) teu = 1; else teu = 2;
|
|
|
var cmdInsert = db.GetSqlStringCommand(@"insert into op_ctn (CTN_ID,BSNO,CTNCODE,[SIZE],CTN,CTNNUM,TEU,CTNALL,CNTRNO,SEALNO,PKGS,KGS,CBM,CTNSTATUS) values (newid(),'" + BSNO + "','" + ctncode[0].CTNID + "','" + ctncode[0].CTNSIZE + "','" + ctncode[0].CTNTYPE + "'," + 1 + "," + teu.ToString() + ",'" + ctncode[0].CTN + "','" + GetPosString(line, 3) + "','" + GetPosString(line, 4) + "'," + GetPosString(line, 7, true) + "," + GetPosString(line, 8, true) + "," + GetPosString(line, 10, true) + ",'" + GetPosString(line, 6) + "')");
|
|
|
db.ExecuteNonQuery(cmdInsert);
|
|
|
getCNTRTOTAL(BSNO, "op_seai");
|
|
|
}
|
|
|
else {
|
|
|
var ctncode2 = MsCodeCtnEdiDAL.GetData("EDICODE='" + GetPosString(line, 5) + "'");
|
|
|
ctncode = BasicDataRefDAL.GetCodeCtnList("CTN='" + ctncode2.CTN+ "'",false);
|
|
|
if (ctncode.Count != 0)
|
|
|
{
|
|
|
var teu = 0;
|
|
|
if (ctncode[0].CTN.IndexOf("2") != -1) teu = 1; else teu = 2;
|
|
|
var cmdInsert = db.GetSqlStringCommand(@"insert into op_ctn (CTN_ID,BSNO,CTNCODE,[SIZE],CTN,CTNNUM,TEU,CTNALL,CNTRNO,SEALNO,PKGS,KGS,CBM,CTNSTATUS) values (newid(),'" + BSNO + "','" + ctncode[0].CTNID + "','" + ctncode[0].CTNSIZE + "','" + ctncode[0].CTNTYPE + "'," + 1 + "," + teu.ToString() + ",'" + ctncode[0].CTN + "','" + GetPosString(line, 3) + "','" + GetPosString(line, 4) + "'," + GetPosString(line, 7, true) + "," + GetPosString(line, 8, true) + "," + GetPosString(line, 10, true) + ",'" + GetPosString(line, 6) + "')");
|
|
|
db.ExecuteNonQuery(cmdInsert);
|
|
|
getCNTRTOTAL(BSNO, "op_seai");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//result.Data = headList;
|
|
|
//result.Success = true;
|
|
|
//result.Message = "导入成功";
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
|
|
|
//result.Success = false;
|
|
|
//result.Message = "导入错误,请重试或联系系统管理员";
|
|
|
|
|
|
//return result;
|
|
|
}
|
|
|
|
|
|
return headList;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region EDI导出
|
|
|
#region 基础函数
|
|
|
public static DBResult FtpFile(string filename, CodeFtpSet ftpset)
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
|
|
|
try
|
|
|
{
|
|
|
FTPDA FTPDA = new FTPDA();
|
|
|
FTPDA.ErrorMsg = "";
|
|
|
FTPDA.Uri = new Uri("ftp://" + ftpset.SERVERIP + "/");
|
|
|
|
|
|
FTPDA.DirectoryPath = ftpset.FOLDERNAME.Replace("/", "//");
|
|
|
FTPDA.UserName = ftpset.USERNAME;
|
|
|
FTPDA.Password = ftpset.PASSWORD;
|
|
|
FTPDA.UploadFile(filename);
|
|
|
result.Success = true;
|
|
|
result.Message = "上传成功" + result.Message;
|
|
|
return result;
|
|
|
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
result.Success = false;
|
|
|
result.Message = "上传出现错误,请重试或联系系统管理员";
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
public static DBResult SFtpFile(string filename, CodeFtpSet ftpset)
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
|
|
|
try
|
|
|
{
|
|
|
SFTPHelper sftp = new SFTPHelper(ftpset.SERVERIP, ftpset.CARRIERID, ftpset.USERNAME, ftpset.PASSWORD);
|
|
|
sftp.Connect();
|
|
|
sftp.Put(filename, ftpset.FOLDERNAME);
|
|
|
sftp.Disconnect();
|
|
|
|
|
|
result.Success = true;
|
|
|
result.Message = "上传成功" + result.Message;
|
|
|
return result;
|
|
|
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
result.Success = false;
|
|
|
result.Message = "上传出现错误,请重试或联系系统管理员";
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
static public string GetPackageEDICode(string Package)
|
|
|
{
|
|
|
string EDICODE = "";
|
|
|
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("select EDICODE from CODE_PACKAGE where PKGS='" + Package + "'");
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
EDICODE = Convert.ToString(reader["EDICODE"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return EDICODE;
|
|
|
|
|
|
}
|
|
|
|
|
|
static public string GetCtnEDICode(string Ctn)
|
|
|
{
|
|
|
string EDICODE = "";
|
|
|
Ctn = Ctn.Replace("'", "''");
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("select EDICODE from code_ctn where CTN='" + Ctn + "'");
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
EDICODE = Convert.ToString(reader["EDICODE"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return EDICODE;
|
|
|
|
|
|
}
|
|
|
static public decimal GetCtnWeight(string Ctn)
|
|
|
{
|
|
|
decimal CTNWEIGHT = 0;
|
|
|
Ctn = Ctn.Replace("'", "''");
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("select CTNWEIGHT from code_ctn where CTN='" + Ctn + "'");
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
CTNWEIGHT = Convert.ToDecimal(reader["CTNWEIGHT"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return CTNWEIGHT;
|
|
|
|
|
|
}
|
|
|
|
|
|
static public string GetFrtEDICode(string FRT)
|
|
|
{
|
|
|
string EDICODE = "P";
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("select EDICODE from code_frt where FRT='" + FRT + "'");
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
EDICODE = Convert.ToString(reader["EDICODE"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return EDICODE;
|
|
|
|
|
|
}
|
|
|
|
|
|
static public string GetLaneEDICode(string lane)
|
|
|
{
|
|
|
string EDICODE = "";
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("select EDICODE from code_lanes where lane='" + lane + "'");
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
EDICODE = Convert.ToString(reader["EDICODE"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return EDICODE;
|
|
|
|
|
|
}
|
|
|
|
|
|
public static CompanyDef GetCompanyDef(string companyid)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("SELECT GID,[CORPID],[PORTLOADID],[PORTLOAD],[BLFRT],[SERVICE],[KGS],[ISADVANCE],[ISCGOL],[AFRCARRIERID],[AFRAGENTID],[AFRETDTIME] from subcomp_seae_def");
|
|
|
strSql.Append(" Where CORPID='" + companyid + "'");
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
var evList = new List<CompanyDef>();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
var evData = new CompanyDef();
|
|
|
evData.GID = Convert.ToString(reader["GID"]);
|
|
|
evData.CORPID = Convert.ToString(reader["CORPID"]);
|
|
|
evData.PORTLOADID = Convert.ToString(reader["PORTLOADID"]);
|
|
|
evData.PORTLOAD = Convert.ToString(reader["PORTLOAD"]);
|
|
|
evData.BLFRT = Convert.ToString(reader["BLFRT"]);
|
|
|
evData.AFRCARRIERID = Convert.ToString(reader["AFRCARRIERID"]);
|
|
|
evData.AFRAGENTID = Convert.ToString(reader["AFRAGENTID"]);
|
|
|
evData.AFRETDTIME = Convert.ToString(reader["AFRETDTIME"]);
|
|
|
|
|
|
evList.Add(evData);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
|
|
|
if (evList.Count > 0)
|
|
|
return evList[0];
|
|
|
return new CompanyDef();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
public static string formatEdiStr(string str)
|
|
|
{
|
|
|
return str.Replace("?", "??").Replace(":", "?:").Replace("+", "?+").Replace(";", "?;");
|
|
|
}
|
|
|
|
|
|
public static List<System.String> formatlengthStr(string str, int length)
|
|
|
{
|
|
|
str = str.Replace("\r\n", "\\");
|
|
|
str = str.Replace("\n", "\\");
|
|
|
str = str.Replace("\r", " ");
|
|
|
|
|
|
|
|
|
string[] StrList = str.Split('\\');
|
|
|
var strtemp = "";
|
|
|
var strnewline = "";
|
|
|
var strtempnewline = "";
|
|
|
char[] spstring = { ' ', ';', ',', '.', ':', '/', '(', ')', '?', '+', '-' };
|
|
|
List<System.String> DestList = new List<System.String>();
|
|
|
for (var i = 0; i <= StrList.Length - 1; i++)
|
|
|
{
|
|
|
if (StrList[i].Length <= length) DestList.Add(StrList[i]);
|
|
|
else
|
|
|
{
|
|
|
strtemp = StrList[i] + " ";
|
|
|
strtempnewline = "";
|
|
|
strnewline = "";
|
|
|
for (var j = 0; j < strtemp.Length; j++)
|
|
|
{
|
|
|
strtempnewline = strtempnewline + strtemp[j];
|
|
|
if (strtemp[j] == ' ' || strtemp[j] == ':' || strtemp[j] == ',' || strtemp[j] == '.' || strtemp[j] == ':' || strtemp[j] == '/'
|
|
|
|| strtemp[j] == '?' || strtemp[j] == ')' || strtemp[j] == '}' || strtemp[j] == '+' || strtemp[j] == '-')
|
|
|
{
|
|
|
if ((strnewline.Length + strtempnewline.Length) <= length)
|
|
|
strnewline = strnewline + strtempnewline;
|
|
|
else
|
|
|
{
|
|
|
DestList.Add(strnewline);
|
|
|
strnewline = strtempnewline;
|
|
|
|
|
|
}
|
|
|
|
|
|
strtempnewline = "";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
if (strnewline.Trim() != "")
|
|
|
DestList.Add(strnewline);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return DestList;
|
|
|
}
|
|
|
|
|
|
public static string formatListStr(List<System.String> DestList, int lineCount)
|
|
|
{
|
|
|
var result = "";
|
|
|
for (var i = 0; i < lineCount; i++)
|
|
|
{
|
|
|
if (DestList.Count > i)
|
|
|
{
|
|
|
result = result + DestList[i];
|
|
|
}
|
|
|
if (i != (lineCount - 1))
|
|
|
result = result + ":";
|
|
|
|
|
|
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public static bool IsChinese(char c)
|
|
|
{
|
|
|
return (int)c > 0x80;
|
|
|
}
|
|
|
public static bool StringIsChinese(string str)
|
|
|
{
|
|
|
var result = false;
|
|
|
for (int i = 1; i < str.Length; i++)
|
|
|
{
|
|
|
if (IsChinese(str[i]))
|
|
|
{
|
|
|
result = true;
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public static string GetDateStr(string datestr, string dateformat)
|
|
|
{
|
|
|
var result = "";
|
|
|
|
|
|
if (datestr == null || datestr == "")
|
|
|
{
|
|
|
result = "";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
result = Convert.ToDateTime(datestr).ToString(dateformat);
|
|
|
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
|
|
|
}
|
|
|
|
|
|
static public string GetCustEdi(string Cust)
|
|
|
{
|
|
|
string EDICODE = "";
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("select EDICODE from info_client WHERE SHORTNAME='" + Cust + "'");
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
EDICODE = Convert.ToString(reader["EDICODE"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
if (EDICODE == null) EDICODE = "";
|
|
|
return EDICODE;
|
|
|
}
|
|
|
|
|
|
static public string GetVESSELID(string VESSEL)
|
|
|
{
|
|
|
string VESSELID = "";
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("select top 1 EDICODE from code_vessel WHERE VESSEL='" + VESSEL + "'");
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
VESSELID = Convert.ToString(reader["EDICODE"]);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
if (VESSELID == null) VESSELID = "";
|
|
|
return VESSELID;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
/// <param name="str">要处理的数据</param>
|
|
|
/// <param name="length">每行长度</param>
|
|
|
/// <param name="sMBLNO">主提单号</param>
|
|
|
/// <param name="sType">数据类型(例如:发货人内容、货描等)</param>
|
|
|
/// <param name="rowNum">限制录入的行数(“0”代表不限制)</param>
|
|
|
/// <param name="sSymbol">限录后多出的放到货描中的数据的连接符(例如:“*”发货人内容、“**”收件人等)</param>
|
|
|
/// <returns></returns>
|
|
|
public static System.String formatlengthError(string str, int length, string sMBLNO, string sType, int rowNum, string sSymbol, bool isHuoMiao)
|
|
|
{
|
|
|
string error = "";
|
|
|
string Shipping = formatEdiStr(str);
|
|
|
string[] argAGENT = Shipping.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
if (argAGENT.Length > 0)
|
|
|
{
|
|
|
if (argAGENT.Length == 1)
|
|
|
{
|
|
|
argAGENT = Shipping.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
if (argAGENT.Length > 0)
|
|
|
{
|
|
|
if (argAGENT.Length > rowNum && rowNum != 0)
|
|
|
{
|
|
|
if (isHuoMiao)
|
|
|
{
|
|
|
error = error + "<br />提单号:" + sMBLNO + " " + sType + " 不允许录入超过" + rowNum + "行数据!";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
error = error + "<br />提单号:" + sMBLNO + " " + sType + " 不允许录入超过" + rowNum + "行数据,多余信息请已“" + sSymbol + "”号开头放到货物描述中!(例如:“货描内容" + sSymbol + "超出部分”)";
|
|
|
}
|
|
|
}
|
|
|
for (int j = 0; j < argAGENT.Length; j++)
|
|
|
{
|
|
|
//List<System.String> AgentList = formatlengthStr(argAGENT[j].ToString(), 35);
|
|
|
if (argAGENT[j].ToString().Length > length)
|
|
|
{
|
|
|
error = error + "<br />提单号:" + sMBLNO + " " + sType + " 第" + (j + 1) + "行超过" + length + "个字符";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (argAGENT.Length > rowNum && rowNum != 0)
|
|
|
{
|
|
|
if (isHuoMiao)
|
|
|
{
|
|
|
error = error + "<br />提单号:" + sMBLNO + " " + sType + " 不允许录入超过" + rowNum + "行数据!";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
error = error + "<br />提单号:" + sMBLNO + " " + sType + " 不允许录入超过" + rowNum + "行数据,多余信息请已“" + sSymbol + "”号开头放到货物描述中!(例如:“货描内容" + sSymbol + "超出部分”)";
|
|
|
}
|
|
|
}
|
|
|
for (int j = 0; j < argAGENT.Length; j++)
|
|
|
{
|
|
|
//List<System.String> AgentList = formatlengthStr(argAGENT[j].ToString(), 35);
|
|
|
if (argAGENT[j].ToString().Length > length)
|
|
|
{
|
|
|
error = error + "<br />提单号:" + sMBLNO + " " + sType + " 第" + (j + 1) + "行超过" + length + "个字符";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return error;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 接口函数
|
|
|
public static string IsCreateEdi(List<MsOpSeai> headData, string type, string filetype, string filerole, string carrier)
|
|
|
{
|
|
|
var error = "";
|
|
|
if (type == "WDSEAIEDI")
|
|
|
{
|
|
|
error = IsCreateEdiWD(headData, type, filetype, filerole);
|
|
|
}
|
|
|
if(type == "IFTMBF")
|
|
|
{
|
|
|
if (carrier.Trim() == "NBCDI")//宁波船代(NBCD)
|
|
|
{
|
|
|
error = IsCreateEdiNBCDI(headData, type, filerole);
|
|
|
}
|
|
|
else if (carrier.Trim() == "SHCDI")//上海船代(SHCD)
|
|
|
{
|
|
|
error = IsCreateEdiSHCDI(headData, type, filerole);
|
|
|
}
|
|
|
}
|
|
|
return error;
|
|
|
}
|
|
|
|
|
|
public static string IsCreateEdiDHL(List<MsOpSeai> headData, string filerole)
|
|
|
{
|
|
|
var error = "";
|
|
|
foreach (var bill in headData)
|
|
|
{
|
|
|
if (bill.HBLNO == null || bill.HBLNO == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + ",分提单号不能为空"; }
|
|
|
|
|
|
|
|
|
if (filerole == "DOS") {
|
|
|
if (bill.CHANGEDOCDATE == null || bill.CHANGEDOCDATE == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "换单日期不能为空"; }
|
|
|
}
|
|
|
if (filerole == "CLS")
|
|
|
{
|
|
|
if (bill.CUSTOMDATE == null || bill.CUSTOMDATE == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + " 通关日期不能为空"; }
|
|
|
}
|
|
|
if (filerole == "GOU")
|
|
|
{
|
|
|
if (bill.TIHUOTIME == null || bill.TIHUOTIME == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + " 提货时间不能为空"; }
|
|
|
}
|
|
|
}
|
|
|
return error;
|
|
|
}
|
|
|
|
|
|
|
|
|
public static string IsCreateEdiWD(List<MsOpSeai> headData, string type, string filetype, string filerole)
|
|
|
{
|
|
|
var error = "";
|
|
|
foreach (var bill in headData)
|
|
|
{
|
|
|
if (bill.MBLNO == null || bill.MBLNO == "")
|
|
|
{ error += "<br />主提单号不能为空"; }
|
|
|
|
|
|
if (bill.VESSEL == null || bill.VESSEL == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "船名不能为空"; }
|
|
|
else
|
|
|
{
|
|
|
if (GetVESSELID(bill.VESSEL) == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "的船名" + bill.VESSEL + "的船舶呼号不能为空"; }
|
|
|
}
|
|
|
if (bill.VOYNO == null || bill.VOYNO == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "航次不能为空"; }
|
|
|
|
|
|
if (bill.CARRIER == null || bill.CARRIER == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "船公司不能为空"; }
|
|
|
if (GetCustEdi(bill.CARRIER) == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "的船公司" + bill.CARRIER + "的EDI代码不能为空"; }
|
|
|
|
|
|
if (bill.ETA == null || bill.ETA == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "开船日期不能为空"; }
|
|
|
if (bill.ETD == null || bill.ETD == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "到港日期不能为空"; }
|
|
|
|
|
|
if (bill.PORTLOADID == null || bill.PORTLOADID == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "卸货港代码不能为空"; }
|
|
|
if (bill.PORTLOAD == null || bill.PORTLOAD == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "卸货港不能为空"; }
|
|
|
|
|
|
if (bill.PORTDISCHARGEID == null || bill.PORTDISCHARGEID == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "装货港代码不能为空"; }
|
|
|
if (bill.PORTDISCHARGE == null || bill.PORTDISCHARGE == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "装货港不能为空"; }
|
|
|
|
|
|
if (bill.PLACEDELIVERYID == null || bill.PLACEDELIVERYID == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "交货地代码不能为空"; }
|
|
|
if (bill.PLACEDELIVERY == null || bill.PLACEDELIVERY == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "交货地不能为空"; }
|
|
|
|
|
|
if (bill.DESTINATION == null || bill.DESTINATION == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "目的港代码不能为空"; }
|
|
|
|
|
|
if (bill.KINDPKGS == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "包装不能为空"; }
|
|
|
|
|
|
if (GetPackageEDICode(bill.KINDPKGS).Trim() == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "包装EDI代码不能为空"; }
|
|
|
|
|
|
if (bill.DESCRIPTION == null || bill.DESCRIPTION == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "货物描述不能为空"; }
|
|
|
|
|
|
if (bill.MARKS == null || bill.MARKS == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "货物唛头不能为空"; }
|
|
|
|
|
|
if (bill.PKGS == 0)
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "货物件数不能为空"; }
|
|
|
|
|
|
if (bill.SERVICE == null || bill.SERVICE == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "运输条款不能为空"; }
|
|
|
|
|
|
if (bill.BLFRT == null || bill.BLFRT == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "付费方式不能为空"; }
|
|
|
|
|
|
if (bill.CARGOID == null || bill.CARGOID == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "货物标示不能为空"; }
|
|
|
else
|
|
|
{
|
|
|
if (bill.CARGOID == "D")
|
|
|
{
|
|
|
if (bill.DCLASS == null || bill.DCLASS == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "危险品分类不能为空"; }
|
|
|
|
|
|
if (bill.DPAGE == null || bill.DPAGE == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "危险品页号不能为空"; }
|
|
|
|
|
|
if (bill.DUNNO == null || bill.DUNNO == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "危险品编号不能为空"; }
|
|
|
|
|
|
if (bill.DLABEL == null || bill.DLABEL == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "危险品标签不能为空"; }
|
|
|
}
|
|
|
if (bill.CARGOID == "R")
|
|
|
{
|
|
|
if (bill.TEMPSET == null || bill.TEMPSET == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "设置温度不能为空"; }
|
|
|
|
|
|
if (bill.TEMPID == null || bill.TEMPID == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "温度计量单位不能为空"; }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
var ctnlist = GetBodyList("BSNO='" + bill.BSNO + "'");
|
|
|
if (ctnlist.Count == 0) { error += "<br />提单号:" + bill.MBLNO + "集装箱信息不能为空"; }
|
|
|
else
|
|
|
{
|
|
|
foreach (var ctn in ctnlist)
|
|
|
{
|
|
|
if (ctn.CNTRNO == null || ctn.CNTRNO == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "箱号不能为空"; }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (StringIsChinese(bill.MARKS))
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "唛头含有中文或双字节字符"; }
|
|
|
if (StringIsChinese(bill.DESCRIPTION))
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "货物描述含有中文或双字节字符"; }
|
|
|
|
|
|
#region 发货人
|
|
|
if (bill.SHIPPER == "")
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 发货人不能为空";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (StringIsChinese(bill.SHIPPER))
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 发货人含有中文或双字节字符";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
error += formatlengthError(bill.SHIPPER, 35, bill.MBLNO, "发货人", 5, "*", false);
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 收货人
|
|
|
if (bill.CONSIGNEE == "")
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 收货人不能为空";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (StringIsChinese(bill.CONSIGNEE))
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 收货人含有中文或双字节字符";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
error += formatlengthError(bill.CONSIGNEE, 35, bill.MBLNO, "收货人", 5, "**", false);
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 通知人
|
|
|
if (bill.NOTIFYPARTY == "")
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 通知人不能为空";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (StringIsChinese(bill.NOTIFYPARTY))
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 通知人含有中文或双字节字符";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
error += formatlengthError(bill.NOTIFYPARTY, 35, bill.MBLNO, "通知人", 5, "***", false);
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 唛头
|
|
|
if (bill.MARKS == "")
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 唛头不能为空";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (StringIsChinese(bill.MARKS))
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 唛头含有中文或双字节字符";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
error += formatlengthError(bill.MARKS, 35, bill.MBLNO, "唛头", 10, "", false);
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 货物描述
|
|
|
if (bill.DESCRIPTION == "")
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 货物描述不能为空";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (StringIsChinese(bill.DESCRIPTION))
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 货物描述含有中文或双字节字符";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
error += formatlengthError(bill.DESCRIPTION, 35, bill.MBLNO, "货物描述", 10, "", true);
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
}
|
|
|
return error;
|
|
|
}
|
|
|
|
|
|
public static string CreateEdi(List<MsOpSeai> headData, string usercode, string path, string mblno, string filerole, CodeFtpSet ftpset, string type, int isbill, int isnotctn, string carrier, string filetype)
|
|
|
{
|
|
|
var result = "";
|
|
|
if (type == "WDSEAIEDI")
|
|
|
{
|
|
|
result = CreateEdiWD(headData, usercode, path, mblno, filerole, ftpset, type, isbill, isnotctn);
|
|
|
}
|
|
|
if (type == "IFTMBF")
|
|
|
{
|
|
|
if (carrier.Trim() == "NBCDI")//宁波船代(NBCDI)
|
|
|
{
|
|
|
result = CreateEdiIFTMBF2(headData, usercode, path, mblno, filerole, ftpset, type);
|
|
|
}
|
|
|
else if (carrier.Trim() == "SHCDI")//上海船代(SHCDI)
|
|
|
{
|
|
|
result = CreateEdiIFTMBF(headData, usercode, path, mblno, filerole, ftpset, type);
|
|
|
}
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 外代EDI
|
|
|
public static string CreateEdiWD(List<MsOpSeai> headData, string usercode, string path, string mblno, string filerole, CodeFtpSet ftpset, string type, int isbill, int isnotctn)
|
|
|
{
|
|
|
string filename = path + "\\" + mblno + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".txt";
|
|
|
if (System.IO.File.Exists(filename))
|
|
|
{
|
|
|
System.IO.File.Delete(filename);
|
|
|
}
|
|
|
FileStream f = new FileStream(filename, FileMode.Create);
|
|
|
StreamWriter r = new StreamWriter(f);
|
|
|
|
|
|
var icount = 0;
|
|
|
filerole = "9C";
|
|
|
r.WriteLine("00:IFCSUM:MANIFEST:" + filerole + ":" + ftpset.SENDCODE + ":" + ftpset.RECEIVECODE + ":" + DateTime.Now.ToString("yyMMddHHmm"));
|
|
|
|
|
|
foreach (var bill in headData)
|
|
|
{
|
|
|
r.WriteLine("10::" + bill.VESSEL + "::" + bill.VOYNO + "::" + bill.LANE + ":" + GetDateStr(bill.ETA, "yyyyMMdd") + ":" + GetDateStr(bill.ETD, "yyyyMMdd") + ":::::" + bill.TEU.ToString() + ":");
|
|
|
r.WriteLine("11:" + ftpset.SENDCODE + ":" + bill.CARRIER);
|
|
|
|
|
|
var xtype = "P";
|
|
|
if (bill.BLFRT.IndexOf("FREIGHT COLLECT") >= 0)
|
|
|
xtype = "C";
|
|
|
|
|
|
r.WriteLine("12:" + bill.MBLNO.Trim() + "::::::" + bill.PORTLOADID + ":" + bill.PORTLOAD + ":" + bill.SERVICE + ":" + xtype + "::::::");
|
|
|
r.WriteLine("13:" + bill.PORTDISCHARGEID + ":" + bill.PORTDISCHARGE + ":" + bill.DESTINATIONID + ":" + bill.DESTINATION + "::::" + bill.ISSUEPLACE + "::");
|
|
|
|
|
|
var Shipping = "";
|
|
|
Shipping = formatEdiStr(bill.SHIPPER);
|
|
|
List<System.String> ShippingList = formatlengthStr(Shipping, 35);
|
|
|
|
|
|
if (ShippingList.Count != 0)
|
|
|
{
|
|
|
r.WriteLine("16::" + formatListStr(ShippingList, 6));
|
|
|
|
|
|
}
|
|
|
|
|
|
Shipping = formatEdiStr(bill.CONSIGNEE);
|
|
|
ShippingList = formatlengthStr(Shipping, 35);
|
|
|
|
|
|
if (ShippingList.Count != 0)
|
|
|
{
|
|
|
r.WriteLine("17::" + formatListStr(ShippingList, 6));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
Shipping = formatEdiStr(bill.NOTIFYPARTY);
|
|
|
ShippingList = formatlengthStr(Shipping, 35);
|
|
|
|
|
|
if (ShippingList.Count != 0)
|
|
|
{
|
|
|
r.WriteLine("18::" + formatListStr(ShippingList, 6));
|
|
|
|
|
|
}
|
|
|
Shipping = formatEdiStr(bill.AGENT);
|
|
|
ShippingList = formatlengthStr(Shipping, 35);
|
|
|
|
|
|
if (ShippingList.Count != 0)
|
|
|
{
|
|
|
r.WriteLine("19::" + formatListStr(ShippingList, 6));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
var cargoid = bill.CARGOID;
|
|
|
if (cargoid == "") cargoid = "S";
|
|
|
|
|
|
|
|
|
r.WriteLine("41:1:0:" + bill.PKGS.ToString() + "::" + bill.KINDPKGS + ":"
|
|
|
+ bill.KGS.ToString() + "::" + bill.CBM.ToString());
|
|
|
|
|
|
icount = icount + 10;
|
|
|
|
|
|
r.WriteLine("43::" + bill.DCLASS + ":none:" + bill.DUNNO + ":none:::::::::");
|
|
|
icount = icount + 1;
|
|
|
|
|
|
|
|
|
Shipping = formatEdiStr(bill.MARKS);
|
|
|
ShippingList = formatlengthStr(Shipping, 300);
|
|
|
|
|
|
if (ShippingList.Count != 0)
|
|
|
{
|
|
|
r.WriteLine("44:" + formatListStr(ShippingList, 5));
|
|
|
icount = icount + 1;
|
|
|
}
|
|
|
|
|
|
Shipping = formatEdiStr(bill.DESCRIPTION);
|
|
|
ShippingList = formatlengthStr(Shipping, 300);
|
|
|
|
|
|
var m = 1;
|
|
|
var strtemp = "";
|
|
|
if (ShippingList.Count != 0)
|
|
|
{
|
|
|
|
|
|
for (var i = 0; i < ShippingList.Count; i++)
|
|
|
{
|
|
|
if (m <= 5)
|
|
|
{
|
|
|
if (m == 1) strtemp = "47:" + ShippingList[i] + ":";
|
|
|
else
|
|
|
{
|
|
|
if (m == 5)
|
|
|
strtemp = strtemp + ShippingList[i];
|
|
|
else
|
|
|
strtemp = strtemp + ShippingList[i] + ":";
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
m = 1;
|
|
|
r.WriteLine(strtemp);
|
|
|
strtemp = "47:" + ShippingList[i] + ":";
|
|
|
icount = icount + 1;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (strtemp != "")
|
|
|
{
|
|
|
r.WriteLine(strtemp);
|
|
|
icount = icount + 1;
|
|
|
};
|
|
|
|
|
|
if (isnotctn == 1)
|
|
|
{
|
|
|
r.WriteLine("51:001:::::::::::::::");
|
|
|
icount = icount + 1;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
var ctnlist = GetBodyList("BSNO='" + bill.BSNO + "'");
|
|
|
foreach (var ctn in ctnlist)
|
|
|
{
|
|
|
r.WriteLine("51:001:" + ctn.CNTRNO + ":" + ctn.SEALNO + ":" + ctn.SIZE.ToString() + ctn.CTN + ":F:" + ctn.PKGS.ToString()
|
|
|
+ ":" + ctn.KGS.ToString() + ":");
|
|
|
icount = icount + 1;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
icount = icount + 1;
|
|
|
r.WriteLine("99:" + icount.ToString());
|
|
|
r.Close();
|
|
|
f.Close();
|
|
|
return filename;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 外代EDI
|
|
|
|
|
|
public static string CreateEdiDHL(MsOpSeai headData, string usercode, string path, string mblno, string filerole, CodeFtpSet ftpset)
|
|
|
{
|
|
|
string filename = path + "\\" + mblno + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".XML";
|
|
|
if (System.IO.File.Exists(filename))
|
|
|
{
|
|
|
System.IO.File.Delete(filename);
|
|
|
}
|
|
|
FileStream f = new FileStream(filename, FileMode.Create);
|
|
|
StreamWriter r = new StreamWriter(f);
|
|
|
|
|
|
r.WriteLine("<?xml version=\"1.0\"?>");
|
|
|
r.WriteLine("<ns:ExtractAction xmlns:ns=\"http://dgff.dhl.com/cdm/5\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://dgff.dhl.com/cdm/5\">");
|
|
|
r.WriteLine("<ns:Action cdmversion=\"5.18\">");
|
|
|
r.WriteLine("<ns:ChangeStatus>");
|
|
|
r.WriteLine("<ns:Reason>");
|
|
|
r.WriteLine("<ns:ID>" + filerole + "</ns:ID>");
|
|
|
r.WriteLine("</ns:Reason>");
|
|
|
r.WriteLine("</ns:ChangeStatus>");
|
|
|
r.WriteLine("<ns:Origin>");
|
|
|
r.WriteLine("<ns:Sender>");
|
|
|
r.WriteLine("<ns:ID>"+ftpset.SENDCODE+"</ns:ID>");
|
|
|
r.WriteLine("</ns:Sender>");
|
|
|
r.WriteLine("</ns:Origin>");
|
|
|
|
|
|
r.WriteLine("<ns:Destination>");
|
|
|
r.WriteLine("<ns:Recipient>");
|
|
|
r.WriteLine("<ns:ID>ESP</ns:ID>");
|
|
|
r.WriteLine("</ns:Recipient>");
|
|
|
r.WriteLine("</ns:Destination>");
|
|
|
|
|
|
r.WriteLine("<ns:Audit>");
|
|
|
r.WriteLine("<ns:MessageID>" + Guid.NewGuid().ToString() + "</ns:MessageID>");
|
|
|
r.WriteLine("<ns:CreationDateTime>" + DateTime.Now.ToString("yyyy-MM-dd") + "T" + DateTime.Now.ToString("HH:mm:ss") + "+08:00</ns:CreationDateTime>");
|
|
|
r.WriteLine("</ns:Audit>");
|
|
|
|
|
|
r.WriteLine("<ns:MessageAttribute>");
|
|
|
r.WriteLine("<ns:Attribute key=\"MessageType\">Simple</ns:Attribute>");
|
|
|
r.WriteLine("</ns:MessageAttribute>");
|
|
|
|
|
|
r.WriteLine("</ns:Action>");
|
|
|
r.WriteLine("<ns:Extract>");
|
|
|
r.WriteLine("<ns:Event ns:refid=\"EV1\">");
|
|
|
r.WriteLine("<ns:Identification>");
|
|
|
r.WriteLine("<ns:ID>" + filerole + "</ns:ID>");
|
|
|
r.WriteLine("</ns:Identification>");
|
|
|
r.WriteLine("<ns:References>");
|
|
|
r.WriteLine("<ns:Reference ns:type=\"HBN\">" + headData.HBLNO + "</ns:Reference>");
|
|
|
r.WriteLine("</ns:References>");
|
|
|
if (filerole == "DOS")
|
|
|
{
|
|
|
r.WriteLine("<ns:EventDateTime>" + Convert.ToDateTime(headData.CHANGEDOCDATE).ToString("yyyy-MM-dd") + "T" + Convert.ToDateTime(headData.CHANGEDOCDATE).ToString("HH:mm:ss") + "+08:00</ns:EventDateTime>");
|
|
|
}
|
|
|
else if (filerole == "CLC")
|
|
|
{
|
|
|
r.WriteLine("<ns:EventDateTime>" + Convert.ToDateTime(headData.CUSTOMDATE).ToString("yyyy-MM-dd") + "T" + Convert.ToDateTime(headData.CUSTOMDATE).ToString("HH:mm:ss") + "+08:00</ns:EventDateTime>");
|
|
|
}
|
|
|
else if (filerole == "GOU")
|
|
|
{
|
|
|
r.WriteLine("<ns:EventDateTime>" + Convert.ToDateTime(headData.TIHUOTIME).ToString("yyyy-MM-dd") + "T" + Convert.ToDateTime(headData.TIHUOTIME).ToString("HH:mm:ss") + "+08:00</ns:EventDateTime>");
|
|
|
}
|
|
|
r.WriteLine("<ns:Note ns:qualifier=\"Remarks\"></ns:Note>");
|
|
|
if (filerole == "DOS")
|
|
|
{
|
|
|
r.WriteLine("<ns:Note ns:qualifier=\"SignatoryName\">" + ftpset.SENDNAME + "</ns:Note>");
|
|
|
}
|
|
|
r.WriteLine("</ns:Event>");
|
|
|
r.WriteLine("</ns:Extract>");
|
|
|
|
|
|
r.WriteLine("</ns:ExtractAction>");
|
|
|
|
|
|
|
|
|
r.Close();
|
|
|
f.Close();
|
|
|
return filename;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
#region IFTMBF V2.0 上海船代(SHCDI)
|
|
|
public static string IsCreateEdiSHCDI(List<MsOpSeai> headData, string type, string filerole)
|
|
|
{
|
|
|
var error = "";
|
|
|
foreach (var bill in headData)
|
|
|
{
|
|
|
if (bill.MBLNO == null || bill.MBLNO == "")
|
|
|
{ error += "<br />主提单号不能为空"; }
|
|
|
|
|
|
if (bill.VESSEL == null || bill.VESSEL == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "船名不能为空"; }
|
|
|
else
|
|
|
{
|
|
|
if (GetVESSELID(bill.VESSEL) == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "的船名" + bill.VESSEL + "的船舶呼号不能为空"; }
|
|
|
}
|
|
|
if (bill.VOYNO == null || bill.VOYNO == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "航次不能为空"; }
|
|
|
|
|
|
if (bill.CARRIER == null || bill.CARRIER == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "船公司不能为空"; }
|
|
|
if (GetCustEdi(bill.CARRIER) == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "的船公司" + bill.CARRIER + "的EDI代码不能为空"; }
|
|
|
|
|
|
if (bill.ETA == null || bill.ETA == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "开船日期不能为空"; }
|
|
|
if (bill.ETD == null || bill.ETD == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "到港日期不能为空"; }
|
|
|
|
|
|
if (bill.PORTLOADID == null || bill.PORTLOADID == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "卸货港代码不能为空"; }
|
|
|
if (bill.PORTLOAD == null || bill.PORTLOAD == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "卸货港不能为空"; }
|
|
|
|
|
|
if (bill.PORTDISCHARGEID == null || bill.PORTDISCHARGEID == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "装货港代码不能为空"; }
|
|
|
if (bill.PORTDISCHARGE == null || bill.PORTDISCHARGE == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "装货港不能为空"; }
|
|
|
|
|
|
if (bill.PLACEDELIVERYID == null || bill.PLACEDELIVERYID == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "交货地代码不能为空"; }
|
|
|
if (bill.PLACEDELIVERY == null || bill.PLACEDELIVERY == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "交货地不能为空"; }
|
|
|
|
|
|
if (bill.DESTINATION == null || bill.DESTINATION == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "目的港代码不能为空"; }
|
|
|
|
|
|
if (bill.KINDPKGS == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "包装不能为空"; }
|
|
|
|
|
|
if (GetPackageEDICode(bill.KINDPKGS).Trim() == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "包装EDI代码不能为空"; }
|
|
|
|
|
|
if (bill.DESCRIPTION == null || bill.DESCRIPTION == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "货物描述不能为空"; }
|
|
|
|
|
|
if (bill.MARKS == null || bill.MARKS == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "货物唛头不能为空"; }
|
|
|
|
|
|
if (bill.PKGS == 0)
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "货物件数不能为空"; }
|
|
|
|
|
|
if (bill.SERVICE == null || bill.SERVICE == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "运输条款不能为空"; }
|
|
|
|
|
|
if (bill.BLFRT == null || bill.BLFRT == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "付费方式不能为空"; }
|
|
|
|
|
|
if (bill.CARGOID == null || bill.CARGOID == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "货物标示不能为空"; }
|
|
|
else
|
|
|
{
|
|
|
if (bill.CARGOID == "D")
|
|
|
{
|
|
|
if (bill.DCLASS == null || bill.DCLASS == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "危险品分类不能为空"; }
|
|
|
|
|
|
if (bill.DPAGE == null || bill.DPAGE == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "危险品页号不能为空"; }
|
|
|
|
|
|
if (bill.DUNNO == null || bill.DUNNO == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "危险品编号不能为空"; }
|
|
|
|
|
|
if (bill.DLABEL == null || bill.DLABEL == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "危险品标签不能为空"; }
|
|
|
}
|
|
|
if (bill.CARGOID == "R")
|
|
|
{
|
|
|
if (bill.TEMPSET == null || bill.TEMPSET == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "设置温度不能为空"; }
|
|
|
|
|
|
if (bill.TEMPID == null || bill.TEMPID == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "温度计量单位不能为空"; }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
var ctnlist = GetBodyList("BSNO='" + bill.BSNO + "'");
|
|
|
if (ctnlist.Count == 0) { error += "<br />提单号:" + bill.MBLNO + "集装箱信息不能为空"; }
|
|
|
else
|
|
|
{
|
|
|
foreach (var ctn in ctnlist)
|
|
|
{
|
|
|
if (ctn.CNTRNO == null || ctn.CNTRNO == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "箱号不能为空"; }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
#region 发货人
|
|
|
if (bill.SHIPPER == "")
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 发货人不能为空";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (StringIsChinese(bill.SHIPPER))
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 发货人含有中文或双字节字符";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
// error += formatlengthError(bill.SHIPPER, 35, bill.MBLNO, "发货人", 2, "*", false);
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 收货人
|
|
|
if (bill.CONSIGNEE == "")
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 收货人不能为空";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (StringIsChinese(bill.CONSIGNEE))
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 收货人含有中文或双字节字符";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
// error += formatlengthError(bill.CONSIGNEE, 35, bill.MBLNO, "收货人", 2, "**", false);
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 通知人
|
|
|
if (bill.NOTIFYPARTY == "")
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 通知人不能为空";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (StringIsChinese(bill.NOTIFYPARTY))
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 通知人含有中文或双字节字符";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
// error += formatlengthError(bill.NOTIFYPARTY, 35, bill.MBLNO, "通知人", 2, "***", false);
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 唛头
|
|
|
if (bill.MARKS == "")
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 唛头不能为空";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (StringIsChinese(bill.MARKS))
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 唛头含有中文或双字节字符";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
// error += formatlengthError(bill.MARKS, 35, bill.MBLNO, "唛头", 90, "", false);
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 货物描述
|
|
|
if (bill.DESCRIPTION == "")
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 货物描述不能为空";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (StringIsChinese(bill.DESCRIPTION))
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 货物描述含有中文或双字节字符";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
// error += formatlengthError(bill.DESCRIPTION, 70, bill.MBLNO, "货物描述", 45, "", true);
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
}
|
|
|
return error;
|
|
|
}
|
|
|
|
|
|
public static string CreateEdiIFTMBF(List<MsOpSeai> headData, string usercode, string path, string mblno, string filerole, CodeFtpSet ftpset, string type)
|
|
|
{
|
|
|
string filename = path + "\\" + mblno + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".txt";
|
|
|
if (System.IO.File.Exists(filename))
|
|
|
{
|
|
|
System.IO.File.Delete(filename);
|
|
|
}
|
|
|
FileStream f = new FileStream(filename, FileMode.Create);
|
|
|
StreamWriter r = new StreamWriter(f, Encoding.Default);
|
|
|
|
|
|
var icount = 0;
|
|
|
r.WriteLine("00:IFCTST:MANIFEST:" + filerole + ":" + ftpset.SENDCODE + ":" + ftpset.RECEIVECODE + ":" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ":1.0'");
|
|
|
icount++;
|
|
|
|
|
|
foreach (var bill in headData)
|
|
|
{
|
|
|
#region 10/11 船舶有关的基本信息
|
|
|
r.WriteLine("10:" + GetVESSELID(bill.VESSEL) //2
|
|
|
+ ":" + bill.VESSEL//3
|
|
|
+ ":"//4 舶国籍代码
|
|
|
+ ":" + bill.VOYNO//5
|
|
|
+ ":"//6航线代码
|
|
|
+ ":"//7航线
|
|
|
+ ":" + GetDateStr(bill.ETD, "yyyyMMdd")//8 ETD ARRIVED DATE 预计到达日期CCYYMMDD
|
|
|
+ ":" + GetDateStr(bill.ETA, "yyyyMMddHHmm") + "086"//9 SAILING DATE (Vessel departure date &time) 离港日期(船舶启运日期和时间) 9(15) YYYYMMDDhhmmZZZ,固定长度,ZZZ为时区086,填写运输工具境外预计启运时间
|
|
|
+ ":" + bill.PORTLOADID//10 DEPART PORT CODE(Vessel off-border custom code) 离港地点代码(船舶离境地海关代码) X(11) 进口:填写货物境外离境地港口代码,参照代码表UN009(5位UN目的地代码);
|
|
|
+ ":" + bill.PORTLOAD//11 DEPART PORT 离港地点 X(35)
|
|
|
+ ":"//12 NEXT CALLING PORT 下一挂港代码 X(5)
|
|
|
+ ":"//13 NEXT CALLING PORT 下一挂港 X(35)
|
|
|
+ ":" + bill.TEU.ToString()//14 CONTAINER COUNT 集装箱箱数 9(10)
|
|
|
+ ":1"//15 Mode/type of means of transport crossing the border, coded 运输方式代码 X(4) "1=海上运输
|
|
|
//2=铁路运输
|
|
|
//3=公路运输
|
|
|
//4=航空运输
|
|
|
//5=邮政运输
|
|
|
//6=多式联运
|
|
|
//7=管道运输
|
|
|
//8=内河运输
|
|
|
//9=未知的运输方式"
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
|
|
|
r.WriteLine("11"
|
|
|
+ ":" + GetCustEdi(bill.CARRIER)//2 SHIPPING LINE CODE 船公司(承运人)代码 X(17) 填写在直属海关备案的承运人编码;承运人可以使用本公司的国际通用代码(比如英文缩写等),但不得出现除“-”、“/”,“_”、“ ”之外的符号,且这四种符号合计只能出现一次
|
|
|
+ ":"+ bill.CARRIER//3 SHIPPING LINE 船公司(承运人) X(35)
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
#endregion
|
|
|
|
|
|
#region 12 提单的第一个记录
|
|
|
var xtype = "PP";
|
|
|
if (bill.BLFRT.IndexOf("COLLECT") >= 0)
|
|
|
xtype = "CC";
|
|
|
|
|
|
r.WriteLine("12"
|
|
|
+ ":" + bill.MBLNO// 2 B/L NO. 总提运单号 X(35) (Master B/L) M
|
|
|
+ ":"// 3 PRE. VESSEL CODE 前程运输船名代码 X(9) C
|
|
|
+ ":"// 4 PRE. VESSEL 前程运输船名 X(35) C
|
|
|
+ ":"// 5 PRE. VOYAGE 前程运输航次 X(6) C
|
|
|
+ ":" + bill.PORTLOADID// 6 PLACE CODE OF RECEIPT 收货地代码(货物托运地或者国家代码) X(11) "填写货物托运地点或国家、地区代码,货物托运的地点是指货物交付给承运人的地点;进口:参照代码表:UN009(5位UN目的地代码);" O
|
|
|
+ ":" + bill.PORTLOAD// 7 PLACE OF RECEIPT 收货地名称 X(70) 收货地点代码和收货地点名称可任填其一 O
|
|
|
+ ":" + bill.PORTLOADID// 8 LOAD PORT CODE 装货港代码 X(25) "进口:指进境货物进入中国关境前最后一个装载进境运输工具的地点,参照代码表:UN009(5位UN目的地代码);该数据项仅允许3、5、8、9、10、11、16位数据" M
|
|
|
+ ":" + bill.PORTLOAD// 9 LOAD PORT 装货港 X(35) C
|
|
|
+ ":" + bill.SERVICE// 10 B/L CY-CFS ITEM 运输条款 X(5) M
|
|
|
+ ":" + xtype// 11 PREPAID OR COLLECT 付款方式(运费支付方法代码) X(3) "CC:Collect到付,PP:Prepaid only预付" M
|
|
|
+ ":" + GetDateStr(bill.ETA, "yyyyMMddHHmm") + "086"// 12 Consignment loading date 货物装船时间 9(15) "YYYYMMDDhhmmZZZ,固定长度,ZZZ为时区086,北京时间,进口:填写境外计划装载时间" M
|
|
|
//+ ":" 13 QUARANTINE CODING 检疫代码 X(1) C
|
|
|
//+ ":" 14 DATE OF ISSUE 签发日期 9(8) CCYYMMDD C
|
|
|
//+ ":" 15 CURRENCY 币种(金额类型代码) X(3) 填写“托运货物价值”数据项填写的金额数值对应的货币代码,参照代码表:CN025 C
|
|
|
//+ ":" 16 EXCHANGE RATE 汇率 9(5). 9999 C
|
|
|
//+ ":" 17 Associated transport document number 分提运单号 X(35) 由无船承运人承运的货物或集运分拨货物(Consolidation Cargo)必须填写分提单号(House B/L),分提运单在一个船次中不能重复。填写内容必须由大写字母与数字组成,不得出现除“_”、“*”、“/”之外的其他特殊字符,特殊字符在分提运单号中最多出现一次,并不得作为分提运单号开头和结尾。 O
|
|
|
//+ ":" 18 Total number of packages 托运货物总件数 9(8) "填写全部托运货物的包装件数(和提运单一致);无法填报件数的裸装散货填“1”" M
|
|
|
//+ ":" 19 Type of packages identification 包装种类代码 X(2) 填写提运单的托运货物件数所对应的包装种类代码,参照代码表:CN005 O
|
|
|
//+ ":" 20 Total gross weight 货物总毛重 9(14,4) 单位:千克;填写提运单货物毛重,包括货物包装但不包括承运人设备重量,最大长度:10位整数,精确到小数点后4位。 M
|
|
|
//+ ":" 21 Cube 货物体积 9(6).999 单位:立方米,填写货物实际体积,不包括包装和运输设备 O
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
#endregion
|
|
|
|
|
|
#region 13 提单的地点信息
|
|
|
r.WriteLine("13"
|
|
|
+ ":" + bill.PORTDISCHARGEID// 2 DISCHARGE PORT CODE 卸货地代码 X(25) 进口:是指进境货物从进境运输工具卸载的地点,填写5位国内港口代码(代码表:CN003)(必填)和4位海关关区代码(代码表:CC011)(选填)(中间以“/”分隔)。如果舱单申报人填报关区代码,就将舱单分配给相应的海关;如果不填报关区代码,用港口代码对应关区代码转换。如果一个港口对应多个关区,待确定具体的关区代码后,才允许报关; M
|
|
|
+ ":" + bill.PORTDISCHARGE// 3 DISCHARGE PORT 卸货港 X(35) C
|
|
|
+ ":" + bill.PLACEDELIVERYID// 4 PLACE CODE OF DELIVERY 交货地代码 X(11) "对应海关的收货地点字段,是指承运人与收货人交接货物的地点代码;不允许出现斜杠,进口:参照代码表:UN001;" C
|
|
|
+ ":" + bill.PLACEDELIVERY// 5 PLACE OF DELIVERY 交货地 X(70) 交货地点代码和交货地点名称可任填其一 C
|
|
|
+ ":"// 6 TRANSFER PORT CODE 中转港代码 X(5) C
|
|
|
+ ":"// 7 TRANSFER PORT 中转港 X(35) C
|
|
|
+ ":"// 8 PLACE CODE OF B/L ISSUE 提单签发地代码 X(5) 使用5位UN目的地代码 C
|
|
|
+ ":"// 9 PLACE OF B/L ISSUE 提单签发地 X(35) C
|
|
|
+ ":"// 10 TRANSFER FLAG 中转标志 X(2) "10=国内中转统码
|
|
|
//11=国内水路中转
|
|
|
//12=国内公路中转
|
|
|
//13=国内铁路中转
|
|
|
//21=国际水水中转
|
|
|
//30=内贸本地
|
|
|
//31=内贸中转" C
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
var strtemp = "";
|
|
|
var Shipping = "";
|
|
|
#region 16 发货人
|
|
|
Shipping = formatEdiStr(bill.SHIPPER);
|
|
|
//Shipping = Shipping.Replace("\n", "\\");
|
|
|
//Shipping = Shipping.Replace("\r", "");
|
|
|
//string[] ShippingList = Shipping.Split('\\');
|
|
|
//strtemp = "16"
|
|
|
//+ ":" //
|
|
|
//+ ":" + ShippingList[0];
|
|
|
//if (ShippingList.Length >= 2) strtemp = strtemp + ' ' + ShippingList[1];
|
|
|
//strtemp = strtemp + "'";
|
|
|
//r.WriteLine(strtemp);
|
|
|
|
|
|
List<System.String> ShippingList = formatlengthStr(Shipping, 100);
|
|
|
|
|
|
if (ShippingList.Count != 0 && Shipping.Length > 0)
|
|
|
{
|
|
|
r.WriteLine("16:" + formatListStr(ShippingList, 12) + "'");
|
|
|
|
|
|
}
|
|
|
|
|
|
icount++;
|
|
|
#endregion
|
|
|
|
|
|
#region 17 收货人
|
|
|
Shipping = formatEdiStr(bill.CONSIGNEE);
|
|
|
//Shipping = Shipping.Replace("\n", "\\");
|
|
|
//Shipping = Shipping.Replace("\r", "");
|
|
|
//string[] ConsigneeList = Shipping.Split('\\');
|
|
|
//strtemp = "17"
|
|
|
//+ ":" //
|
|
|
//+ ":" + ConsigneeList[0];
|
|
|
//if (ConsigneeList.Length >= 2) strtemp = strtemp + ' ' + ConsigneeList[1];
|
|
|
//strtemp = strtemp + "'";
|
|
|
|
|
|
//r.WriteLine(strtemp);
|
|
|
|
|
|
ShippingList = formatlengthStr(Shipping, 100);
|
|
|
|
|
|
if (ShippingList.Count != 0 && Shipping.Length > 0)
|
|
|
{
|
|
|
r.WriteLine("17:" + formatListStr(ShippingList, 16) + "'");
|
|
|
|
|
|
}
|
|
|
|
|
|
icount++;
|
|
|
#endregion
|
|
|
|
|
|
#region 18 通知人
|
|
|
Shipping = formatEdiStr(bill.NOTIFYPARTY);
|
|
|
//Shipping = Shipping.Replace("\n", "\\");
|
|
|
//Shipping = Shipping.Replace("\r", "");
|
|
|
//string[] NotifypartyList = Shipping.Split('\\');
|
|
|
//strtemp = "18"
|
|
|
//+ ":" //
|
|
|
//+ ":" + NotifypartyList[0];
|
|
|
//if (NotifypartyList.Length >= 2) strtemp = strtemp +' '+ NotifypartyList[1];
|
|
|
//strtemp = strtemp + "'";
|
|
|
|
|
|
//r.WriteLine(strtemp);
|
|
|
|
|
|
ShippingList = formatlengthStr(Shipping, 100);
|
|
|
|
|
|
if (ShippingList.Count != 0 && Shipping.Length > 0)
|
|
|
{
|
|
|
r.WriteLine("18:" + formatListStr(ShippingList, 11) + "'");
|
|
|
|
|
|
}
|
|
|
|
|
|
icount++;
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region 41 货物信息
|
|
|
r.WriteLine("41"
|
|
|
+ ":1" //2 CARGO SEQUENCE NO. 货物序号 X(5) 填写提单中的货物顺序号,每票提运单中的不同商品从“1”开始按顺序填写,舱单变更时原序号不得变更,只能出现数字和字母 M
|
|
|
+ ":" //3 CARGO CODE 货类代码 X(8) C
|
|
|
+ ":" + bill.PKGS //4 NUMBERS OF PACKAGES 货物件数 9(8) 填写本项货物的包装数量,包装以不再拆解为准;散货时, 件数=“1” M
|
|
|
+ ":" + GetPackageEDICode(bill.KINDPKGS).Trim() //5 PACKAGES KIND CODE 包装类型代码 X(2) 参照代码表CN005,只能填写数字或字母 M
|
|
|
+ ":" + bill.KINDPKGS //6 PACKAGES KIND 包装类型 X(35) C
|
|
|
+ ":" + Math.Round(bill.KGS, 4) //7 CARGO GROSS WEIGHT 货毛重 9(14,4) 单位:千克;最大长度:10位整数,精确到小数点后4位。 M
|
|
|
+ ":" + Math.Round(bill.NETWEIGHT, 3) //8 CARGO NET WEIGHT 货净重 9(10). 999 单位:KG,千克;整数位最多10位,小数位最多3位 C
|
|
|
+ ":" + Math.Round(bill.CBM, 3) //9 CARGO MEASUREMENT 货尺码 9(5). 999 单位:M3,立方米 C
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
#endregion
|
|
|
|
|
|
#region 43 危险品和冷藏信息
|
|
|
var cargoid = bill.CARGOID;
|
|
|
if (cargoid == "" || cargoid == " ") cargoid = "S";
|
|
|
if (cargoid == "D")
|
|
|
{
|
|
|
r.WriteLine("43"
|
|
|
+ ":" + bill.DCLASS //2 CLASS 危险品分类 X(5) O
|
|
|
+ ":" + bill.DPAGE //3 PAGE 危险品页号 X(7) O
|
|
|
+ ":" + bill.DUNNO //4 UNDG NO. 联合国危险品编号 9(4) 参照代码表CN032,由4位数字和大写字母组成 O
|
|
|
+ ":" + bill.DLABEL //5 LABEL 危险品标签 X(32) O
|
|
|
+ ":" //6 FLASH POINT 危险货物闪点 X(5) 摄氏 C
|
|
|
+ ":" //7 EMS NO. 船运危险品应急措施号 X(6) C
|
|
|
+ ":" //8 MFAG NO. 医疗急救指南号 X(4) C
|
|
|
+ ":" //9 EMERGENCY CONTACT 应急联系 X(35) C
|
|
|
+ ":" //10 TEMPERATURE ID 温度计量单位 X(1) C = 摄氏 F = 华氏 O
|
|
|
+ ":" //11 TEMPERATURE SETTING 设置温度 X(5) O
|
|
|
+ ":" //12 MIN. TEMPERATURE 冷藏最低温度 X(5) C
|
|
|
+ ":" //13 MAX. TEMPERATURE 冷藏最高温度 X(5) C
|
|
|
+ ":" //注: 温度中,除正(+)负(-)号及小数点外,最多只能三位数字。
|
|
|
+ ":" // 若是危险品箱,则字段2、3、4、5为必填;若是冷藏箱,则字段10、11为必填。
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
}
|
|
|
else if (cargoid == "R")
|
|
|
{
|
|
|
string sTEMPID = "C";
|
|
|
if(bill.TEMPID.IndexOf("F")>-1 || bill.TEMPID.IndexOf("华")>-1)
|
|
|
{
|
|
|
sTEMPID = "F";
|
|
|
}
|
|
|
r.WriteLine("43"
|
|
|
+ ":" //2 CLASS 危险品分类 X(5) O
|
|
|
+ ":" //3 PAGE 危险品页号 X(7) O
|
|
|
+ ":" //4 UNDG NO. 联合国危险品编号 9(4) 参照代码表CN032,由4位数字和大写字母组成 O
|
|
|
+ ":" //5 LABEL 危险品标签 X(32) O
|
|
|
+ ":" //6 FLASH POINT 危险货物闪点 X(5) 摄氏 C
|
|
|
+ ":" //7 EMS NO. 船运危险品应急措施号 X(6) C
|
|
|
+ ":" //8 MFAG NO. 医疗急救指南号 X(4) C
|
|
|
+ ":" //9 EMERGENCY CONTACT 应急联系 X(35) C
|
|
|
+ ":" + sTEMPID //10 TEMPERATURE ID 温度计量单位 X(1) C = 摄氏 F = 华氏 O
|
|
|
+ ":" + bill.TEMPSET //11 TEMPERATURE SETTING 设置温度 X(5) O
|
|
|
+ ":" //12 MIN. TEMPERATURE 冷藏最低温度 X(5) C
|
|
|
+ ":" //13 MAX. TEMPERATURE 冷藏最高温度 X(5) C
|
|
|
+ ":" //注: 温度中,除正(+)负(-)号及小数点外,最多只能三位数字。
|
|
|
+ ":" // 若是危险品箱,则字段2、3、4、5为必填;若是冷藏箱,则字段10、11为必填。
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 44 唛头
|
|
|
//2 MARKS 唛头 X(512) 填写运输包装的标志及代码(唛头)M。每条记录44允许有10项,每项长度为35;该记录一次最多允许重复9次
|
|
|
var m = 1;//项,允许有10项
|
|
|
var iLine = 0;//行,最多允许重复9次
|
|
|
strtemp = "";
|
|
|
Shipping = formatEdiStr(bill.MARKS);
|
|
|
List<System.String> ShippingListName = formatlengthStr(Shipping, 35);
|
|
|
if (ShippingListName.Count != 0)
|
|
|
{
|
|
|
for (var i = 0; i < ShippingListName.Count; i++)
|
|
|
{
|
|
|
if (iLine > 9)
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
if (m <= 10)
|
|
|
{
|
|
|
if (m == 1)
|
|
|
{
|
|
|
strtemp = "44:" + ShippingListName[i] + ":";
|
|
|
iLine++;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (m == 10)
|
|
|
strtemp += ShippingListName[i];
|
|
|
else
|
|
|
strtemp += ShippingListName[i] + ":";
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
m = 1;
|
|
|
r.WriteLine(strtemp + "'");
|
|
|
strtemp = "44:" + ShippingListName[i] + ":";
|
|
|
icount++;
|
|
|
iLine++;
|
|
|
}
|
|
|
m++;
|
|
|
}
|
|
|
if (strtemp != "")
|
|
|
{
|
|
|
r.WriteLine(strtemp + "'");
|
|
|
icount++;
|
|
|
};
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 47 货物描述
|
|
|
//2 CARGO DESCRIPTION 货物描述 X(256) 填写足以鉴别货物的性质的简明描述 M。每条记录47允许有5项,每项长度为70;该记录一次最多允许重复9次
|
|
|
m = 1;//项,允许有5项
|
|
|
iLine = 0;//行,最多允许重复9次
|
|
|
strtemp = "";
|
|
|
Shipping = formatEdiStr(bill.DESCRIPTION);
|
|
|
List<System.String> ListName = formatlengthStr(Shipping, 70);
|
|
|
if (ListName.Count != 0)
|
|
|
{
|
|
|
for (var i = 0; i < ListName.Count; i++)
|
|
|
{
|
|
|
if (iLine > 9)
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
if (m <= 9)
|
|
|
{
|
|
|
if (m == 1)
|
|
|
{
|
|
|
strtemp = "47:" + ListName[i] + ":";
|
|
|
iLine++;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (m == 9)
|
|
|
strtemp += ListName[i];
|
|
|
else
|
|
|
strtemp += ListName[i] + ":";
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
m = 1;
|
|
|
r.WriteLine(strtemp + "'");
|
|
|
strtemp = "47:" + ListName[i] + ":";
|
|
|
icount++;
|
|
|
iLine++;
|
|
|
}
|
|
|
m++;
|
|
|
}
|
|
|
if (strtemp != "")
|
|
|
{
|
|
|
r.WriteLine(strtemp + "'");
|
|
|
icount++;
|
|
|
};
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 51/52 集装箱
|
|
|
var ctndetaillist = GetBodyList("BSNO='" + bill.BSNO + "'");
|
|
|
foreach (var ctn in ctndetaillist)
|
|
|
{
|
|
|
if (ctn.CNTRNO != "")
|
|
|
{
|
|
|
r.WriteLine("51"
|
|
|
+ ":"//2 CARGO SEQUENCE NO. 货物序号 9(3) 此字段无意义 M
|
|
|
+ ":" + ctn.CNTRNO//3 CTN. NO. 箱号 X(17) "由4个字母即货主编码、6位数字序列号以及1位检测数字组成。填写内容必须由大写字母与数字组成,可以出现一次中划线。非集装箱货没有箱号的情况下填写:0000" M 测试数据不能超过12位
|
|
|
+ ":" + ctn.SEALNO//4 SEAL NO. 主铅封号 X(30) 机械封志且封志人为CA C 铅封号以52记录为准
|
|
|
+ ":" + GetCtnEDICode(ctn.CTNALL)//5 CTN. SIZE & TYPE 集装箱尺寸类型 X(4) "使用UN95码,非集装箱货填写:0000" M
|
|
|
+ ":8"//6 ctn.CTNSTATUS 箱状态(重箱或者空箱标识代码) X(1)
|
|
|
//1=货物多于1/4容量
|
|
|
//2=货物多于1/2容量
|
|
|
//3=货物多于3/4容量
|
|
|
//4=空箱
|
|
|
//5=重箱
|
|
|
//6=满箱
|
|
|
//7=拼箱
|
|
|
//8=整箱
|
|
|
//非集装箱货填写:5=重箱" M
|
|
|
+ ":" + ctn.PKGS//7 CTN. NUMBERS OF PACKAGES 箱内货物件数 9(6) 按实填写 M
|
|
|
+ ":" + Math.Round(ctn.KGS, 3)//8 NET WEIGHT 箱内货重 9(5). 999 按实填写 M
|
|
|
+ ":" + Math.Round(ctn.TAREWEIGHT, 3)//9 TARE WEIGHT 箱皮重 9(5). 999 非集装箱货填写:0 M
|
|
|
+ ":" + Math.Round(ctn.CBM, 3)//10 CTN. CARGO MEASUREMENT 箱内货物尺码 9(5) . 999 C
|
|
|
//+ ":"11 Over Length Front 前超 9(4) CM,厘米 C
|
|
|
//+ ":"12 Over Length Back 后超 9(4) CM,厘米 C
|
|
|
//+ ":"13 Over Width Left 左超 9(4) CM,厘米 C
|
|
|
//+ ":"14 Over Width Right 右超 9(4) CM,厘米 C
|
|
|
//+ ":"15 Over Height 超高 9(4) CM,厘米 C
|
|
|
//+ ":"16 STOWAGE LOCATION 贝位 9(7) C
|
|
|
//+ ":"17 Container supplier type, coded 集装箱来源代码 9(2)
|
|
|
//1=货主自备箱
|
|
|
//2=承运人提供箱
|
|
|
//3=拼箱人提供箱
|
|
|
//4=拆箱人提供箱
|
|
|
//5=第三方提供箱" O
|
|
|
//注: 此记录反应的是该提单在该箱下的信息
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
|
|
|
r.WriteLine("52"
|
|
|
+ ":" + ctn.SEALNO// 2 SEAL NO 封志号 X(30) 对于特种箱不能施封,但属于重箱的封志号码填写“0000”。如:框架箱、开顶箱、油罐箱 M 测试数据不能超过10位
|
|
|
+ ":M"// 3 SEAL KIND,CODE 封志类型 X(1) "M=机械封志、E=电子封志,只有特种箱不能施封可不填" O
|
|
|
+ ":CA"// 4 SEALER,CODE 施加封志人 X(2) "AA=拼箱人
|
|
|
//AB=未知
|
|
|
//AC=检疫
|
|
|
//CA=承运人
|
|
|
//CU=海关
|
|
|
//SH=发货人
|
|
|
//TO=码头
|
|
|
//只有特种箱不能施封可不填" O
|
|
|
// 注: 第一条出现的记录为主铅封信息
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
}
|
|
|
icount++;
|
|
|
r.WriteLine("99:" + icount.ToString() + "'");//包括;头、尾记录
|
|
|
r.Close();
|
|
|
f.Close();
|
|
|
return filename;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region IFTMBF V2.0 宁波船代(NBCD)
|
|
|
public static string IsCreateEdiNBCDI(List<MsOpSeai> headData, string type, string filerole)
|
|
|
{
|
|
|
var error = "";
|
|
|
foreach (var bill in headData)
|
|
|
{
|
|
|
if (bill.MBLNO == null || bill.MBLNO == "")
|
|
|
{ error += "<br />主提单号不能为空"; }
|
|
|
|
|
|
if (bill.VESSEL == null || bill.VESSEL == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "船名不能为空"; }
|
|
|
else
|
|
|
{
|
|
|
if (GetVESSELID(bill.VESSEL) == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "的船名" + bill.VESSEL + "的船舶呼号不能为空"; }
|
|
|
}
|
|
|
if (bill.VOYNO == null || bill.VOYNO == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "航次不能为空"; }
|
|
|
|
|
|
if (bill.CARRIER == null || bill.CARRIER == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "船公司不能为空"; }
|
|
|
if (GetCustEdi(bill.CARRIER) == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "的船公司" + bill.CARRIER + "的EDI代码不能为空"; }
|
|
|
|
|
|
if (bill.ETA == null || bill.ETA == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "开船日期不能为空"; }
|
|
|
if (bill.ETD == null || bill.ETD == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "到港日期不能为空"; }
|
|
|
|
|
|
if (bill.PORTLOADID == null || bill.PORTLOADID == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "卸货港代码不能为空"; }
|
|
|
if (bill.PORTLOAD == null || bill.PORTLOAD == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "卸货港不能为空"; }
|
|
|
|
|
|
if (bill.PORTDISCHARGEID == null || bill.PORTDISCHARGEID == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "装货港代码不能为空"; }
|
|
|
if (bill.PORTDISCHARGE == null || bill.PORTDISCHARGE == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "装货港不能为空"; }
|
|
|
|
|
|
if (bill.PLACEDELIVERYID == null || bill.PLACEDELIVERYID == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "交货地代码不能为空"; }
|
|
|
if (bill.PLACEDELIVERY == null || bill.PLACEDELIVERY == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "交货地不能为空"; }
|
|
|
|
|
|
if (bill.DESTINATION == null || bill.DESTINATION == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "目的港代码不能为空"; }
|
|
|
|
|
|
if (bill.KINDPKGS == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "包装不能为空"; }
|
|
|
|
|
|
if (GetPackageEDICode(bill.KINDPKGS).Trim() == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "包装EDI代码不能为空"; }
|
|
|
|
|
|
if (bill.DESCRIPTION == null || bill.DESCRIPTION == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "货物描述不能为空"; }
|
|
|
|
|
|
if (bill.MARKS == null || bill.MARKS == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "货物唛头不能为空"; }
|
|
|
|
|
|
if (bill.PKGS == 0)
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "货物件数不能为空"; }
|
|
|
|
|
|
if (bill.SERVICE == null || bill.SERVICE == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "运输条款不能为空"; }
|
|
|
|
|
|
if (bill.BLFRT == null || bill.BLFRT == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "付费方式不能为空"; }
|
|
|
|
|
|
if (bill.CARGOID == null || bill.CARGOID == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "货物标示不能为空"; }
|
|
|
else
|
|
|
{
|
|
|
if (bill.CARGOID == "D")
|
|
|
{
|
|
|
if (bill.DCLASS == null || bill.DCLASS == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "危险品分类不能为空"; }
|
|
|
|
|
|
if (bill.DPAGE == null || bill.DPAGE == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "危险品页号不能为空"; }
|
|
|
|
|
|
if (bill.DUNNO == null || bill.DUNNO == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "危险品编号不能为空"; }
|
|
|
|
|
|
if (bill.DLABEL == null || bill.DLABEL == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "危险品标签不能为空"; }
|
|
|
}
|
|
|
if (bill.CARGOID == "R")
|
|
|
{
|
|
|
if (bill.TEMPSET == null || bill.TEMPSET == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "设置温度不能为空"; }
|
|
|
|
|
|
if (bill.TEMPID == null || bill.TEMPID == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "温度计量单位不能为空"; }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
var ctnlist = GetBodyList("BSNO='" + bill.BSNO + "'");
|
|
|
if (ctnlist.Count == 0) { error += "<br />提单号:" + bill.MBLNO + "集装箱信息不能为空"; }
|
|
|
else
|
|
|
{
|
|
|
foreach (var ctn in ctnlist)
|
|
|
{
|
|
|
if (ctn.CNTRNO == null || ctn.CNTRNO == "")
|
|
|
{ error += "<br />提单号:" + bill.MBLNO + "箱号不能为空"; }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//#region 发货人
|
|
|
//if (bill.SHIPPER == "")
|
|
|
//{
|
|
|
// error = error + "<br />提单号:" + bill.MBLNO + " 发货人不能为空";
|
|
|
//}
|
|
|
//else
|
|
|
//{
|
|
|
// if (StringIsChinese(bill.SHIPPER))
|
|
|
// {
|
|
|
// error = error + "<br />提单号:" + bill.MBLNO + " 发货人含有中文或双字节字符";
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// error += formatlengthError(bill.SHIPPER, 35, bill.MBLNO, "发货人", 5, "*", false);
|
|
|
// }
|
|
|
//}
|
|
|
//#endregion
|
|
|
|
|
|
//#region 收货人
|
|
|
//if (bill.CONSIGNEE == "")
|
|
|
//{
|
|
|
// error = error + "<br />提单号:" + bill.MBLNO + " 收货人不能为空";
|
|
|
//}
|
|
|
//else
|
|
|
//{
|
|
|
// if (StringIsChinese(bill.CONSIGNEE))
|
|
|
// {
|
|
|
// error = error + "<br />提单号:" + bill.MBLNO + " 收货人含有中文或双字节字符";
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// error += formatlengthError(bill.CONSIGNEE, 35, bill.MBLNO, "收货人", 5, "**", false);
|
|
|
// }
|
|
|
//}
|
|
|
//#endregion
|
|
|
|
|
|
//#region 通知人
|
|
|
//if (bill.NOTIFYPARTY == "")
|
|
|
//{
|
|
|
// error = error + "<br />提单号:" + bill.MBLNO + " 通知人不能为空";
|
|
|
//}
|
|
|
//else
|
|
|
//{
|
|
|
// if (StringIsChinese(bill.NOTIFYPARTY))
|
|
|
// {
|
|
|
// error = error + "<br />提单号:" + bill.MBLNO + " 通知人含有中文或双字节字符";
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// error += formatlengthError(bill.NOTIFYPARTY, 35, bill.MBLNO, "通知人", 5, "***", false);
|
|
|
// }
|
|
|
//}
|
|
|
//#endregion
|
|
|
|
|
|
#region 唛头
|
|
|
if (bill.MARKS == "")
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 唛头不能为空";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (StringIsChinese(bill.MARKS))
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 唛头含有中文或双字节字符";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
error += formatlengthError(bill.MARKS, 35, bill.MBLNO, "唛头", 10, "", false);
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 货物描述
|
|
|
if (bill.DESCRIPTION == "")
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 货物描述不能为空";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (StringIsChinese(bill.DESCRIPTION))
|
|
|
{
|
|
|
error = error + "<br />提单号:" + bill.MBLNO + " 货物描述含有中文或双字节字符";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
error += formatlengthError(bill.DESCRIPTION, 35, bill.MBLNO, "货物描述", 10, "", true);
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
}
|
|
|
return error;
|
|
|
}
|
|
|
|
|
|
public static string CreateEdiIFTMBF2(List<MsOpSeai> headData, string usercode, string path, string mblno, string filerole, CodeFtpSet ftpset, string type)
|
|
|
{
|
|
|
string filename = path + "\\" + mblno + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".txt";
|
|
|
if (System.IO.File.Exists(filename))
|
|
|
{
|
|
|
System.IO.File.Delete(filename);
|
|
|
}
|
|
|
FileStream f = new FileStream(filename, FileMode.Create);
|
|
|
StreamWriter r = new StreamWriter(f, Encoding.Default);
|
|
|
|
|
|
var icount = 0;
|
|
|
// r.WriteLine("00:IFCSUM:MANIFEST:" + filerole + ":" + ftpset.SENDCODE + ":" + ftpset.RECEIVECODE + ":" + DateTime.Now.ToString("yyMMddHHmm") + ":" + headData[0].PORTLOADID + ":" + headData[0].PORTDISCHARGEID + "'");
|
|
|
r.WriteLine("00:IFCTST:MANIFEST:" + filerole + ":" + ftpset.SENDCODE + ":" + ftpset.RECEIVECODE + ":" + DateTime.Now.ToString("yyMMddHHmm") + ":1.0'");
|
|
|
icount++;
|
|
|
|
|
|
foreach (var bill in headData)
|
|
|
{
|
|
|
#region 10/11 描述船舶有关的基本数据项目
|
|
|
r.WriteLine("10"
|
|
|
+ ":" + GetVESSELID(bill.VESSEL)//2 VESSEL CODE 船名代码 X(9) C/M
|
|
|
+ ":" + bill.VESSEL//3 VESSEL 船名 X(35) M/C
|
|
|
+ ":"//4 NATIONALITY CODE 舶国籍代码 X(2) C
|
|
|
+ ":" + bill.VOYNO//5 VOYAGE 航次 X(6) M
|
|
|
+ ":"//6 TRADE CODE 航线代码 X(10) C
|
|
|
+ ":"//7 TRADE 航线 X(35) C
|
|
|
+ ":" + GetDateStr(bill.ETD, "yyyyMMdd")//8 ETD ARRIVED DATE 预计到达日期 9(8) CCYYMMDD C
|
|
|
+ ":" + GetDateStr(bill.ETA, "yyyyMMdd")//9 SAILING DATE 离港日期 9(8) CCYYMMDD M
|
|
|
+ ":" + bill.PORTLOADID//10 DEPART PORT CODE 离港地点代码 X(5) M/C
|
|
|
+ ":" + bill.PORTLOAD//11 DEPART PORT 离港地点 X(35) C/M
|
|
|
+ ":"//12 NEXT CALLING PORT CODE 下一挂港代码 X(5) M/C
|
|
|
+ ":"//13 NEXT CALLING PORT 下一挂港 X(35) C/M
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
|
|
|
r.WriteLine("11"
|
|
|
+ ":" + GetCustEdi(bill.CARRIER)//2 SHIPPING LINE CODE 船公司(承运人)代码 X(13) C/M
|
|
|
+ ":" + bill.CARRIER//3 SHIPPING LINE 船公司(承运人) X(35) M/C
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
#endregion
|
|
|
|
|
|
#region 12 提单的第一个记录
|
|
|
var xtype = "P";
|
|
|
if (bill.BLFRT.IndexOf("COLLECT") >= 0)
|
|
|
xtype = "C";
|
|
|
|
|
|
r.WriteLine("12"
|
|
|
+ ":" + bill.MBLNO// 2 B/L NO. 提单号 X(20) M
|
|
|
+ ":"//3 PRE. VESSEL CODE 前程运输船名代码 X(7) C
|
|
|
+ ":"//4 PRE. VESSEL 前程运输船名 X(35) C
|
|
|
+ ":"//5 PRE. VOYAGE 前程运输航次 X(6) C
|
|
|
+ ":" + bill.PORTLOADID//6 PLACE CODE OF RECEIPT 收货地代码 X(5) C
|
|
|
+ ":" + bill.PORTLOAD//7 PLACE OF RECEIPT 收货地 X70) C
|
|
|
+ ":" + bill.PORTLOADID//8 LOAD PORT CODE 装货港代码 X(5) M/C
|
|
|
+ ":" + bill.PORTLOAD//9 LOAD PORT 装货港 X(35) C/M
|
|
|
+ ":" + bill.SERVICE//10 DELIVERY TERM 运输条款 X(9) C
|
|
|
+ ":" + xtype//11 PREPAID OR COLLECT 付款方式 X(1) P=预付 C=到付 F=免费 M
|
|
|
+ ":" + GetDateStr(bill.ETA, "yyyyMMdd")//12 LOAD DATE 装货日期 9(8) CCYYMMDD M
|
|
|
//+ ":"13 QUARANTINE CODING 检疫代码 X(1) C
|
|
|
//+ ":"14 DATE OF ISSUE 签发日期 9(8) C
|
|
|
//+ ":"15 CURRENCY 币种 X(3) C
|
|
|
//+ ":"16 EXCHANGE RATE 汇率 9(5) v9999 C
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
#endregion
|
|
|
|
|
|
#region 13 提单的地点信息
|
|
|
r.WriteLine("13"
|
|
|
+ ":" + bill.PORTDISCHARGEID//2 DISCHARGE PORT CODE 卸货港代码 X(5) M/C
|
|
|
+ ":" + bill.PORTDISCHARGE//3 DISCHARGE PORT 卸货港 X(35) C/M
|
|
|
+ ":" + bill.PLACEDELIVERYID//4 PLACE CODE OF DELIVERY 交货地代码 X(5) C
|
|
|
+ ":" + bill.PLACEDELIVERY//5 PLACE OF DELIVERY 交货地 X(70) C
|
|
|
+ ":"//6 TRANSFER PORT CODE 中转港代码 X(5) C
|
|
|
+ ":"//7 TRANSFER PORT 中转港 X(35) C
|
|
|
+ ":"//8 PLACE CODE OF B/L ISSUE 提单签发地代码 X(5) C
|
|
|
+ ":"//9 PLACE OF B/L ISSUE 提单签发地 X(35) C
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
#endregion
|
|
|
|
|
|
var Shipping = "";
|
|
|
#region 16 发货人
|
|
|
Shipping = formatEdiStr(bill.SHIPPER);
|
|
|
List<System.String> ShippingList = formatlengthStr(Shipping, 70);
|
|
|
if (ShippingList.Count != 0)
|
|
|
{
|
|
|
for (int i = 0; i < ShippingList.Count; i++)
|
|
|
{
|
|
|
if (i == 0) Shipping = "16:" + ShippingList[0] + ":";
|
|
|
if (i == 1) Shipping = Shipping + ShippingList[i];
|
|
|
if (i == 2 || i == 3) Shipping = Shipping + ":" + ShippingList[i];
|
|
|
if (i >= 4 && ShippingList.Count > 5)
|
|
|
{
|
|
|
if (i == 4)
|
|
|
{
|
|
|
if (ShippingList[i].Length > 70)
|
|
|
{
|
|
|
Shipping = Shipping + ":" + ShippingList[i].Substring(0, 70);
|
|
|
}
|
|
|
else
|
|
|
Shipping = Shipping + ":" + ShippingList[i];
|
|
|
}
|
|
|
else Shipping = Shipping + ":" + ShippingList[i];
|
|
|
}
|
|
|
else
|
|
|
if (i == 4) Shipping = Shipping + ":" + ShippingList[i];
|
|
|
}
|
|
|
}
|
|
|
if (Shipping != "")
|
|
|
{
|
|
|
r.WriteLine(Shipping + "'");
|
|
|
icount++;
|
|
|
};
|
|
|
#endregion
|
|
|
|
|
|
#region 17 收货人
|
|
|
Shipping = formatEdiStr(bill.CONSIGNEE);
|
|
|
List<System.String> ShippingList2 = formatlengthStr(Shipping, 70);
|
|
|
if (ShippingList2.Count != 0)
|
|
|
{
|
|
|
for (int i = 0; i < ShippingList2.Count; i++)
|
|
|
{
|
|
|
if (i == 0) Shipping = "17:" + ShippingList2[0] + ":";
|
|
|
if (i == 1) Shipping = Shipping + ShippingList2[i];
|
|
|
if (i == 2 || i == 3) Shipping = Shipping + ":" + ShippingList2[i];
|
|
|
if (i >= 4 && ShippingList2.Count > 5)
|
|
|
{
|
|
|
if (i == 4)
|
|
|
{
|
|
|
if (ShippingList2[i].Length > 70)
|
|
|
{
|
|
|
Shipping = Shipping + ":" + ShippingList2[i].Substring(0, 70);
|
|
|
}
|
|
|
else
|
|
|
Shipping = Shipping + ":" + ShippingList2[i];
|
|
|
} else Shipping = Shipping + ":" + ShippingList2[i];
|
|
|
}
|
|
|
else
|
|
|
if (i == 4) Shipping = Shipping + ":" + ShippingList2[i];
|
|
|
}
|
|
|
}
|
|
|
if (Shipping != "")
|
|
|
{
|
|
|
r.WriteLine(Shipping + "'");
|
|
|
icount++;
|
|
|
};
|
|
|
#endregion
|
|
|
|
|
|
#region 18 通知人
|
|
|
Shipping = formatEdiStr(bill.NOTIFYPARTY);
|
|
|
List<System.String> ShippingList3 = formatlengthStr(Shipping, 70);
|
|
|
if (ShippingList3.Count != 0)
|
|
|
{
|
|
|
for (int i = 0; i < ShippingList3.Count; i++)
|
|
|
{
|
|
|
if (i == 0) Shipping = "18:" + ShippingList3[0] + ":";
|
|
|
if (i == 1) Shipping = Shipping + ShippingList3[i];
|
|
|
if (i == 2 || i == 3) Shipping = Shipping + ":" + ShippingList3[i];
|
|
|
if (i >= 4 && ShippingList3.Count > 5)
|
|
|
{
|
|
|
if (i == 4)
|
|
|
{
|
|
|
if (ShippingList3[i].Length > 70)
|
|
|
{
|
|
|
Shipping = Shipping + ":" + ShippingList3[i].Substring(0, 70);
|
|
|
}
|
|
|
else
|
|
|
Shipping = Shipping + ":" + ShippingList3[i];
|
|
|
} else Shipping = Shipping + ":" + ShippingList3[i];
|
|
|
}
|
|
|
else
|
|
|
if (i == 4) Shipping = Shipping + ":" + ShippingList3[i];
|
|
|
}
|
|
|
}
|
|
|
if (Shipping != "")
|
|
|
{
|
|
|
r.WriteLine(Shipping + "'");
|
|
|
icount++;
|
|
|
};
|
|
|
#endregion
|
|
|
|
|
|
#region 41 货物信息
|
|
|
r.WriteLine("41"
|
|
|
+ ":1" //2 CARGO SEQUENCE NO. 货物序号 9(3) M
|
|
|
+ ":" //3 CARGO CODE 货类代码 X(8) C
|
|
|
+ ":" + bill.PKGS //4 NUMBERS OF PACKAGES 件数 9(6) M
|
|
|
+ ":" + GetPackageEDICode(bill.KINDPKGS).Trim() //5 PACKAGES KIND CODE包装类型代码 X(2) M/C
|
|
|
+ ":" + bill.KINDPKGS //6 PACKAGES KIND 包装类型 X(35) C/M
|
|
|
+ ":" + Math.Round(bill.KGS, 1) //7 CARGO GROSS WEIGHT 货毛重 9(5)V9 千克 C
|
|
|
+ ":" + Math.Round(bill.NETWEIGHT, 1) //8 CARGO NET WEIGHT 货净重 9(5)V9 千克 C
|
|
|
+ ":" + Math.Round(bill.CBM, 3) //9 CARGO MEASUREMENT 货尺码 9(5) V999 立方米 C
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
#endregion
|
|
|
|
|
|
#region 43 危险品和冷藏信息
|
|
|
var cargoid = bill.CARGOID;
|
|
|
if (cargoid == "" || cargoid == " ") cargoid = "S";
|
|
|
if (cargoid == "D")
|
|
|
{
|
|
|
r.WriteLine("43"
|
|
|
+ ":" + bill.DCLASS //2 CLASS 危险品分类 X(5) M
|
|
|
+ ":" + bill.DPAGE//3 PAGE 危险品页号 X(7) M
|
|
|
+ ":" + bill.DUNNO//4 UNDG NO. 联合国危险品编号 X(4) C
|
|
|
+ ":" + bill.DLABEL//5 LABEL (1-3) 危险品标签 X(32) C
|
|
|
+ ":"//6 FLASH POINT 危险货物闪点 X(5) 摄氏 C
|
|
|
+ ":"//7 EMS NO. 船运危险品应急措施号 X(6) C
|
|
|
+ ":"//8 MFAG NO. 医疗急救指南号 X(4) C
|
|
|
+ ":"//9 EMERGENCY CONTACT 应急联系 X(35) C
|
|
|
+ ":"//10 TEMPERATURE ID 温度计量单位 X(1) C = 摄氏 F = 华氏 C
|
|
|
+ ":"//11 TEMPERATURE SETTING 设置温度 X(5) 见注 C
|
|
|
+ ":"//12 MIN. TEMPERATURE 冷藏最低温度 X(5) C
|
|
|
+ ":"//13 MAX. TEMPERATURE 冷藏最高温度 X(5) C
|
|
|
//注:第一位放正(+)负(-)号,后四位放温度数。
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
}
|
|
|
else if (cargoid == "R")
|
|
|
{
|
|
|
string sTEMPID = "C";
|
|
|
if (bill.TEMPID.IndexOf("F") > -1 || bill.TEMPID.IndexOf("华") > -1)
|
|
|
{
|
|
|
sTEMPID = "F";
|
|
|
}
|
|
|
r.WriteLine("43"
|
|
|
+ ":" //2 CLASS 危险品分类 X(5) M
|
|
|
+ ":"//3 PAGE 危险品页号 X(7) M
|
|
|
+ ":"//4 UNDG NO. 联合国危险品编号 X(4) C
|
|
|
+ ":"//5 LABEL (1-3) 危险品标签 X(32) C
|
|
|
+ ":"//6 FLASH POINT 危险货物闪点 X(5) 摄氏 C
|
|
|
+ ":"//7 EMS NO. 船运危险品应急措施号 X(6) C
|
|
|
+ ":"//8 MFAG NO. 医疗急救指南号 X(4) C
|
|
|
+ ":"//9 EMERGENCY CONTACT 应急联系 X(35) C
|
|
|
+ ":" + sTEMPID//10 TEMPERATURE ID 温度计量单位 X(1) C = 摄氏 F = 华氏 C
|
|
|
+ ":" + bill.TEMPSET//11 TEMPERATURE SETTING 设置温度 X(5) 见注 C
|
|
|
+ ":"//12 MIN. TEMPERATURE 冷藏最低温度 X(5) C
|
|
|
+ ":"//13 MAX. TEMPERATURE 冷藏最高温度 X(5) C
|
|
|
//注:第一位放正(+)负(-)号,后四位放温度数。
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 44 唛头
|
|
|
//2 MARKS 唛头 X(512) 填写运输包装的标志及代码(唛头)M。每条记录44允许有5项,每项长度为35;该记录一次最多允许重复2次
|
|
|
var m = 1;//项,允许有5项
|
|
|
var iLine = 0;//行,最多允许重复2次
|
|
|
var strtemp = "";
|
|
|
Shipping = formatEdiStr(bill.MARKS);
|
|
|
List<System.String> ShippingListName = formatlengthStr(Shipping, 35);
|
|
|
if (ShippingListName.Count != 0)
|
|
|
{
|
|
|
for (var i = 0; i < ShippingListName.Count; i++)
|
|
|
{
|
|
|
if (iLine > 2)
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
if (m <= 5)
|
|
|
{
|
|
|
if (m == 1)
|
|
|
{
|
|
|
strtemp = "44:" + ShippingListName[i] + ":";
|
|
|
iLine++;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (m == 5)
|
|
|
strtemp += ShippingListName[i];
|
|
|
else
|
|
|
strtemp += ShippingListName[i] + ":";
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
m = 1;
|
|
|
r.WriteLine(strtemp + "'");
|
|
|
strtemp = "44:" + ShippingListName[i] + ":";
|
|
|
icount++;
|
|
|
iLine++;
|
|
|
}
|
|
|
m++;
|
|
|
}
|
|
|
if (strtemp != "")
|
|
|
{
|
|
|
r.WriteLine(strtemp + "'");
|
|
|
icount++;
|
|
|
};
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 47 货物描述
|
|
|
//2 CARGO DESCRIPTION 货物描述 X(256) 填写足以鉴别货物的性质的简明描述 M。每条记录47允许有5项,每项长度为35;该记录一次最多允许重复2次
|
|
|
m = 1;//项,允许有5项
|
|
|
iLine = 0;//行,最多允许重复2次
|
|
|
strtemp = "";
|
|
|
Shipping = formatEdiStr(bill.DESCRIPTION);
|
|
|
List<System.String> ListName = formatlengthStr(Shipping, 35);
|
|
|
if (ListName.Count != 0)
|
|
|
{
|
|
|
for (var i = 0; i < ListName.Count; i++)
|
|
|
{
|
|
|
if (iLine > 2)
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
if (m <= 5)
|
|
|
{
|
|
|
if (m == 1)
|
|
|
{
|
|
|
strtemp = "47:" + ListName[i] + ":";
|
|
|
iLine++;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (m == 5)
|
|
|
strtemp += ListName[i];
|
|
|
else
|
|
|
strtemp += ListName[i] + ":";
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
m = 1;
|
|
|
r.WriteLine(strtemp + "'");
|
|
|
strtemp = "47:" + ListName[i] + ":";
|
|
|
icount++;
|
|
|
iLine++;
|
|
|
}
|
|
|
m++;
|
|
|
}
|
|
|
if (strtemp != "")
|
|
|
{
|
|
|
r.WriteLine(strtemp + "'");
|
|
|
icount++;
|
|
|
};
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 51 集装箱
|
|
|
var ctndetaillist = GetBodyList("BSNO='" + bill.BSNO + "'");
|
|
|
foreach (var ctn in ctndetaillist)
|
|
|
{
|
|
|
if (ctn.CNTRNO != "")
|
|
|
{
|
|
|
r.WriteLine("51"
|
|
|
+ ":"//2 CARGO SEQUENCE NO. 货物序号 9(3) M
|
|
|
+ ":" + ctn.CNTRNO//3 CTN. NO. 箱号 X(12) M
|
|
|
+ ":" + ctn.SEALNO//4 SEAL NO. 铅封号 X(10) M
|
|
|
+ ":" + GetCtnEDICode(ctn.CTNALL)//5 CTN. SIZE & TYPE 集装箱尺寸类型 X(4) M
|
|
|
+ ":F"//6 CTN. STATUS 箱状态 X(1) E=空 F=整 L=拼 M
|
|
|
+ ":" + ctn.PKGS//7 CTN. NUMBERS OF PACKAGES 箱内货物件数 9(6) M
|
|
|
+ ":" + Math.Round(ctn.KGS, 1)//8 NET WEIGHT 箱内货重 9(5)V9 是该类货的箱内货重 M
|
|
|
+ ":" + Math.Round(ctn.TAREWEIGHT, 1)//9 TARE WEIGHT 箱皮重 9(5)V9 M
|
|
|
+ ":" + Math.Round(ctn.CBM, 3)//10 CTN.CARGO MEASUREMENT 箱内货物尺码 9(5)V999 C
|
|
|
//+ ":"11 OVER LENGTH FRONT 前超 X(4) 厘米 C
|
|
|
//+ ":"12 OVER LENGTH BACK 后超 X(4) 厘米 C
|
|
|
//+ ":"13 OVER WIDTH LEFT 左超 X(4) 厘米 C
|
|
|
//+ ":"14 OVER WIDTH RIGHT 右超 X(4) 厘米 C
|
|
|
//+ ":"15 OVER HEIGHT 超高 X(4) 厘米 C
|
|
|
//+ ":"16 STOWAGE LOCATION 贝位 9(7) C
|
|
|
+ "'");
|
|
|
icount++;
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
}
|
|
|
icount++;
|
|
|
r.WriteLine("99:" + icount.ToString() + "'");
|
|
|
r.Close();
|
|
|
f.Close();
|
|
|
return filename;
|
|
|
}
|
|
|
#endregion
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
#region 舱单申报
|
|
|
|
|
|
public static DBResult CreateCustomList(List<MsOpSeai> billList, string type, string userid, string usercode, string companyid)
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
var companydef = GetCompanyDef(companyid);
|
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (var conn = db.CreateConnection())
|
|
|
{
|
|
|
conn.Open();
|
|
|
var tran = conn.BeginTransaction();
|
|
|
|
|
|
try
|
|
|
{
|
|
|
|
|
|
foreach (var bill in billList)
|
|
|
{
|
|
|
if (bill.BLTYPE == "拼箱主票")
|
|
|
{
|
|
|
CreateCustomdb(bill, db, tran, type, companydef, usercode, companyid);
|
|
|
var billfenlist = GetFenList(" MASTERNO<>BSNO AND MASTERNO='" + bill.BSNO + "'", userid, usercode, companyid);
|
|
|
if (billfenlist.Count > 0)
|
|
|
{
|
|
|
foreach (var billfen in billfenlist)
|
|
|
{
|
|
|
CreateCustomdb(billfen, db, tran, type, companydef, usercode, companyid);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
else
|
|
|
CreateCustomdb(bill, db, tran, type, companydef, usercode, companyid);
|
|
|
|
|
|
}
|
|
|
|
|
|
result = new DBResult();
|
|
|
result.Success = true;
|
|
|
result.Message = "生成成功";
|
|
|
tran.Commit();
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
tran.Rollback();
|
|
|
|
|
|
result.Success = false;
|
|
|
result.Message = "生成错误,请重试或联系系统管理员";
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
static public DBResult CreateCustomdb(MsOpSeai bill, Database db, DbTransaction tran, string type, CompanyDef companydef, string usercode, string companyid)
|
|
|
{
|
|
|
var result = new DBResult();
|
|
|
try
|
|
|
{
|
|
|
|
|
|
var cmdInsert =
|
|
|
db.GetSqlStringCommand(
|
|
|
@"INSERT INTO op_seae_edi([MFNO],[BSNO],[MASTERNO],[EDITYPE],[EDISTATUS],[INPUTBY],[INPUTDATE],[CUSTNO],[MBLNO],[HBLNO],SHIPPERCODE
|
|
|
,[SHIPPERNAME],[SHIPPERADDR1],[SHIPPERADDR2],[SHIPPERADDR3],[SHIPPERCITY],[SHIPPERPROVINCE],[SHIPPERPOSTCODE]
|
|
|
,[SHIPPERCOUNTRY],[SHIPPERATTN],[SHIPPERTEL],[SHIPPEREMAIL],[CONSIGNEECODE],[CONSIGNEENAME],[CONSIGNEEADDR1],[CONSIGNEEADDR2],[CONSIGNEEADDR3]
|
|
|
,[CONSIGNEECITY],[CONSIGNEEPROVINCE],[CONSIGNEEPOSTCODE],[CONSIGNEECOUNTRY],[CONSIGNEEATTN],[CONSIGNEETEL],[CONSIGNEEEMAIL]
|
|
|
,[NOTIFYPARTYCODE],[NOTIFYPARTYNAME],[NOTIFYPARTYADDR1],[NOTIFYPARTYADDR2],[NOTIFYPARTYADDR3],[NOTIFYPARTYCITY],[NOTIFYPARTYPROVINCE]
|
|
|
,[NOTIFYPARTYPOSTCODE],[NOTIFYPARTYCOUNTRY],[NOTIFYPARTYATTN],[NOTIFYPARTYTEL],[NOTIFYPARTYEMAIL],[SHIPPER],[CONSIGNEE],[NOTIFYPARTY]
|
|
|
,[VESSEL],[VOYNO],[ETD],[PORTLOADID],[PORTLOAD],[PORTDISCHARGEID],[PORTDISCHARGE],[PLACEDELIVERYID],[PLACEDELIVERY]
|
|
|
,[DESTINATIONID],[DESTINATION],[SERVICE],[MARKS],[DESCRIPTION],[PKGS],[KINDPKGS],[KGS],[CBM],[CARGOID],[DCLASS]
|
|
|
,[DUNNO],[REEFERF],[TEMPID],[TEMPSET],[TEMPMAX],[TEMPMIN],[SHIPIMO],[CARRIERID],[ORDERNO]
|
|
|
,[FILEROLE],[PACKINGTYPE],[TRANSTYPE],[FILETYPE],[ISLASTHBL],[BLFRT],[ISSUEPLACE],YARD,CARRIER,ETA
|
|
|
,[AGENTID],[CORPID])
|
|
|
VALUES
|
|
|
(@MFNO,@BSNO,@MASTERNO,@EDITYPE,@EDISTATUS,@INPUTBY,@INPUTDATE,@CUSTNO,@MBLNO,@HBLNO,@SHIPPERCODE
|
|
|
,@SHIPPERNAME,@SHIPPERADDR1,@SHIPPERADDR2,@SHIPPERADDR3,@SHIPPERCITY,@SHIPPERPROVINCE,@SHIPPERPOSTCODE
|
|
|
,@SHIPPERCOUNTRY,@SHIPPERATTN,@SHIPPERTEL,@SHIPPEREMAIL,@CONSIGNEECODE,@CONSIGNEENAME,@CONSIGNEEADDR1,@CONSIGNEEADDR2,@CONSIGNEEADDR3
|
|
|
,@CONSIGNEECITY,@CONSIGNEEPROVINCE,@CONSIGNEEPOSTCODE,@CONSIGNEECOUNTRY,@CONSIGNEEATTN,@CONSIGNEETEL,@CONSIGNEEEMAIL
|
|
|
,@NOTIFYPARTYCODE,@NOTIFYPARTYNAME,@NOTIFYPARTYADDR1,@NOTIFYPARTYADDR2,@NOTIFYPARTYADDR3,@NOTIFYPARTYCITY,@NOTIFYPARTYPROVINCE
|
|
|
,@NOTIFYPARTYPOSTCODE,@NOTIFYPARTYCOUNTRY,@NOTIFYPARTYATTN,@NOTIFYPARTYTEL,@NOTIFYPARTYEMAIL,@SHIPPER,@CONSIGNEE,@NOTIFYPARTY
|
|
|
,@VESSEL,@VOYNO,@ETD,@PORTLOADID,@PORTLOAD,@PORTDISCHARGEID,@PORTDISCHARGE,@PLACEDELIVERYID,@PLACEDELIVERY
|
|
|
,@DESTINATIONID,@DESTINATION,@SERVICE,@MARKS,@DESCRIPTION,@PKGS,@KINDPKGS,@KGS,@CBM,@CARGOID,@DCLASS
|
|
|
,@DUNNO,@REEFERF,@TEMPID,@TEMPSET,@TEMPMAX,@TEMPMIN,@SHIPIMO,@CARRIERID,@ORDERNO
|
|
|
,@FILEROLE,@PACKINGTYPE,@TRANSTYPE,@FILETYPE,@ISLASTHBL,@BLFRT,@ISSUEPLACE,@YARD,@CARRIER,@ETA
|
|
|
,@AGENTID,@CORPID) ");
|
|
|
|
|
|
var MFNO = Guid.NewGuid().ToString();
|
|
|
cmdInsert.Parameters.Clear();
|
|
|
db.AddInParameter(cmdInsert, "@MFNO", DbType.String, MFNO);
|
|
|
db.AddInParameter(cmdInsert, "@BSNO", DbType.String, bill.BSNO);
|
|
|
db.AddInParameter(cmdInsert, "@MASTERNO", DbType.String, bill.MASTERNO);
|
|
|
db.AddInParameter(cmdInsert, "@EDITYPE", DbType.String, "CN");
|
|
|
db.AddInParameter(cmdInsert, "@FILETYPE", DbType.String, "House");
|
|
|
db.AddInParameter(cmdInsert, "@EDISTATUS", DbType.String, "未发送");
|
|
|
db.AddInParameter(cmdInsert, "@INPUTBY", DbType.String, usercode);
|
|
|
db.AddInParameter(cmdInsert, "@INPUTDATE", DbType.DateTime, DateTime.Now);
|
|
|
db.AddInParameter(cmdInsert, "@CUSTNO", DbType.String, bill.CUSTNO);
|
|
|
db.AddInParameter(cmdInsert, "@MBLNO", DbType.String, bill.MBLNO);
|
|
|
db.AddInParameter(cmdInsert, "@HBLNO", DbType.String, bill.HBLNO);
|
|
|
db.AddInParameter(cmdInsert, "@YARD", DbType.String, bill.YARD);
|
|
|
db.AddInParameter(cmdInsert, "@CARRIER", DbType.String, bill.CARRIER);
|
|
|
var Shipping = bill.SHIPPER;
|
|
|
Shipping = Shipping.Replace("\n", "\\");
|
|
|
Shipping = Shipping.Replace("\r", " ");
|
|
|
string[] ShippingList = Shipping.Split('\\');
|
|
|
|
|
|
db.AddInParameter(cmdInsert, "@SHIPPERCODE", DbType.String, bill.SHIPPERCODE);
|
|
|
if (ShippingList.Length != 0) { db.AddInParameter(cmdInsert, "@SHIPPERNAME", DbType.String, ShippingList[0]); } else { db.AddInParameter(cmdInsert, "@SHIPPERNAME", DbType.String, ""); }
|
|
|
if (ShippingList.Length >= 2) { db.AddInParameter(cmdInsert, "@SHIPPERADDR1", DbType.String, ShippingList[1]); } else { db.AddInParameter(cmdInsert, "@SHIPPERADDR1", DbType.String,""); }
|
|
|
if (ShippingList.Length >= 3) { db.AddInParameter(cmdInsert, "@SHIPPERADDR2", DbType.String, ShippingList[2]); } else { db.AddInParameter(cmdInsert, "@SHIPPERADDR2", DbType.String, ""); }
|
|
|
if (ShippingList.Length >= 4) { db.AddInParameter(cmdInsert, "@SHIPPERADDR3", DbType.String, ShippingList[3]); } else { db.AddInParameter(cmdInsert, "@SHIPPERADDR3", DbType.String, ""); }
|
|
|
var portload = bill.PORTLOAD;
|
|
|
if (portload.Length > 30) portload = portload.Substring(0, 30);
|
|
|
db.AddInParameter(cmdInsert, "@SHIPPERCITY", DbType.String, portload);
|
|
|
db.AddInParameter(cmdInsert, "@SHIPPERPROVINCE", DbType.String,"");
|
|
|
db.AddInParameter(cmdInsert, "@SHIPPERPOSTCODE", DbType.String,"");
|
|
|
db.AddInParameter(cmdInsert, "@SHIPPERCOUNTRY", DbType.String, bill.SHIPPERCOUNTRY);
|
|
|
db.AddInParameter(cmdInsert, "@SHIPPERATTN", DbType.String, bill.SHIPPERATTN);
|
|
|
db.AddInParameter(cmdInsert, "@SHIPPERTEL", DbType.String, bill.SHIPPERTEL);
|
|
|
db.AddInParameter(cmdInsert, "@SHIPPEREMAIL", DbType.String, bill.SHIPPEREMAIL);
|
|
|
|
|
|
|
|
|
db.AddInParameter(cmdInsert, "@CONSIGNEECODE", DbType.String, bill.CONSIGNEECODE);
|
|
|
Shipping = bill.CONSIGNEE;
|
|
|
Shipping = Shipping.Replace("\n", "\\");
|
|
|
Shipping = Shipping.Replace("\r", " ");
|
|
|
ShippingList = Shipping.Split('\\');
|
|
|
if (ShippingList.Length != 0) { db.AddInParameter(cmdInsert, "@CONSIGNEENAME", DbType.String, ShippingList[0]); } else { db.AddInParameter(cmdInsert, "@CONSIGNEENAME", DbType.String, ""); }
|
|
|
if (ShippingList.Length >= 2) { db.AddInParameter(cmdInsert, "@CONSIGNEEADDR1", DbType.String, ShippingList[1]); } else { db.AddInParameter(cmdInsert, "@CONSIGNEEADDR1", DbType.String,""); }
|
|
|
if (ShippingList.Length >= 3) { db.AddInParameter(cmdInsert, "@CONSIGNEEADDR2", DbType.String, ShippingList[2]); } else { db.AddInParameter(cmdInsert, "@CONSIGNEEADDR2", DbType.String, ""); }
|
|
|
if (ShippingList.Length >= 4) { db.AddInParameter(cmdInsert, "@CONSIGNEEADDR3", DbType.String, ShippingList[3]); } else { db.AddInParameter(cmdInsert, "@CONSIGNEEADDR3", DbType.String, ""); }
|
|
|
portload = bill.PORTDISCHARGE;
|
|
|
if (portload.Length > 30) portload = portload.Substring(0, 30);
|
|
|
db.AddInParameter(cmdInsert, "@CONSIGNEECITY", DbType.String, portload);
|
|
|
|
|
|
db.AddInParameter(cmdInsert, "@CONSIGNEEPROVINCE", DbType.String,"");
|
|
|
db.AddInParameter(cmdInsert, "@CONSIGNEEPOSTCODE", DbType.String,"");
|
|
|
db.AddInParameter(cmdInsert, "@CONSIGNEECOUNTRY", DbType.String, bill.CONSIGNEECOUNTRY);
|
|
|
db.AddInParameter(cmdInsert, "@CONSIGNEEATTN", DbType.String, bill.CONSIGNEEATTN);
|
|
|
db.AddInParameter(cmdInsert, "@CONSIGNEETEL", DbType.String, bill.CONSIGNEETEL);
|
|
|
db.AddInParameter(cmdInsert, "@CONSIGNEEEMAIL", DbType.String, bill.CONSIGNEEEMAIL);
|
|
|
db.AddInParameter(cmdInsert, "@NOTIFYPARTYCODE", DbType.String, bill.NOTIFYPARTYCODE);
|
|
|
Shipping = bill.NOTIFYPARTY;
|
|
|
Shipping = Shipping.Replace("\n", "\\");
|
|
|
Shipping = Shipping.Replace("\r", " ");
|
|
|
ShippingList = Shipping.Split('\\');
|
|
|
if (ShippingList.Length != 0) { db.AddInParameter(cmdInsert, "@NOTIFYPARTYNAME", DbType.String, ShippingList[0]); } else { db.AddInParameter(cmdInsert, "@NOTIFYPARTYNAME", DbType.String, ""); }
|
|
|
if (ShippingList.Length >= 2) { db.AddInParameter(cmdInsert, "@NOTIFYPARTYADDR1", DbType.String, ShippingList[1]); } else { db.AddInParameter(cmdInsert, "@NOTIFYPARTYADDR1", DbType.String,""); }
|
|
|
if (ShippingList.Length >= 3) { db.AddInParameter(cmdInsert, "@NOTIFYPARTYADDR2", DbType.String, ShippingList[2]); } else { db.AddInParameter(cmdInsert, "@NOTIFYPARTYADDR2", DbType.String, ""); }
|
|
|
if (ShippingList.Length >= 4) { db.AddInParameter(cmdInsert, "@NOTIFYPARTYADDR3", DbType.String, ShippingList[3]); } else { db.AddInParameter(cmdInsert, "@NOTIFYPARTYADDR3", DbType.String, ""); }
|
|
|
db.AddInParameter(cmdInsert, "@NOTIFYPARTYCITY", DbType.String,"");
|
|
|
db.AddInParameter(cmdInsert, "@NOTIFYPARTYPROVINCE", DbType.String,"");
|
|
|
db.AddInParameter(cmdInsert, "@NOTIFYPARTYPOSTCODE", DbType.String,"");
|
|
|
|
|
|
db.AddInParameter(cmdInsert, "@NOTIFYPARTYCOUNTRY", DbType.String, bill.NOTIFYPARTYCOUNTRY);
|
|
|
db.AddInParameter(cmdInsert, "@NOTIFYPARTYATTN", DbType.String, bill.NOTIFYPARTYATTN);
|
|
|
db.AddInParameter(cmdInsert, "@NOTIFYPARTYTEL", DbType.String, bill.NOTIFYPARTYTEL);
|
|
|
db.AddInParameter(cmdInsert, "@NOTIFYPARTYEMAIL", DbType.String, bill.NOTIFYPARTYEMAIL);
|
|
|
|
|
|
|
|
|
db.AddInParameter(cmdInsert, "@SHIPPER", DbType.String, bill.SHIPPER);
|
|
|
db.AddInParameter(cmdInsert, "@CONSIGNEE", DbType.String, bill.CONSIGNEE);
|
|
|
db.AddInParameter(cmdInsert, "@NOTIFYPARTY", DbType.String, bill.NOTIFYPARTY);
|
|
|
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, "@ETA", DbType.String, bill.ETA);
|
|
|
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, "@DESTINATIONID", DbType.String, bill.DESTINATIONID);
|
|
|
db.AddInParameter(cmdInsert, "@DESTINATION", DbType.String, bill.DESTINATION);
|
|
|
db.AddInParameter(cmdInsert, "@PLACEDELIVERYID", DbType.String, bill.PORTLOADID);
|
|
|
db.AddInParameter(cmdInsert, "@PLACEDELIVERY", DbType.String, bill.PORTLOAD);
|
|
|
db.AddInParameter(cmdInsert, "@SERVICE", DbType.String, bill.SERVICE);
|
|
|
db.AddInParameter(cmdInsert, "@MARKS", DbType.String, bill.MARKS);
|
|
|
db.AddInParameter(cmdInsert, "@DESCRIPTION", DbType.String, bill.DESCRIPTION);
|
|
|
db.AddInParameter(cmdInsert, "@PKGS", DbType.Int16, bill.PKGS);
|
|
|
db.AddInParameter(cmdInsert, "@KINDPKGS", DbType.String, bill.KINDPKGS);
|
|
|
db.AddInParameter(cmdInsert, "@KGS", DbType.Decimal, bill.KGS);
|
|
|
db.AddInParameter(cmdInsert, "@CBM", DbType.Decimal, 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, "@TEMPMAX", DbType.String, bill.TEMPMAX);
|
|
|
db.AddInParameter(cmdInsert, "@TEMPMIN", DbType.String, bill.TEMPMIN);
|
|
|
db.AddInParameter(cmdInsert, "@SHIPIMO", DbType.String, GetVESSELID(bill.VESSEL));
|
|
|
db.AddInParameter(cmdInsert, "@ORDERNO", DbType.String, bill.ORDERNO);
|
|
|
db.AddInParameter(cmdInsert, "@FILEROLE", DbType.String, "9");
|
|
|
if (bill.BLTYPE == "拼箱分票" || bill.BLTYPE == "拼箱单票")
|
|
|
{
|
|
|
db.AddInParameter(cmdInsert, "@PACKINGTYPE", DbType.String, "拼箱");
|
|
|
db.AddInParameter(cmdInsert, "@ISLASTHBL", DbType.Boolean, false);
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
db.AddInParameter(cmdInsert, "@PACKINGTYPE", DbType.String, "整箱");
|
|
|
db.AddInParameter(cmdInsert, "@ISLASTHBL", DbType.Boolean, true);
|
|
|
|
|
|
}
|
|
|
db.AddInParameter(cmdInsert, "@TRANSTYPE", DbType.String, "PortToPort");
|
|
|
db.AddInParameter(cmdInsert, "@BLFRT", DbType.String, bill.BLFRT);
|
|
|
db.AddInParameter(cmdInsert, "@ISSUEPLACE", DbType.String, bill.ISSUEPLACE);
|
|
|
|
|
|
if (type == "2")
|
|
|
{
|
|
|
|
|
|
if (companydef.AFRCARRIERID == "")
|
|
|
{
|
|
|
db.AddInParameter(cmdInsert, "@CARRIERID", DbType.String, GetCustEdi(bill.CARRIER));
|
|
|
db.AddInParameter(cmdInsert, "@AGENTID", DbType.String, "");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
db.AddInParameter(cmdInsert, "@CARRIERID", DbType.String, companydef.AFRCARRIERID);
|
|
|
db.AddInParameter(cmdInsert, "@AGENTID", DbType.String, companydef.AFRAGENTID);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
db.AddInParameter(cmdInsert, "@CARRIERID", DbType.String, GetCustEdi(bill.CARRIER));
|
|
|
db.AddInParameter(cmdInsert, "@AGENTID", DbType.String, "");
|
|
|
}
|
|
|
|
|
|
db.AddInParameter(cmdInsert, "@CORPID", DbType.String, companyid);
|
|
|
|
|
|
db.ExecuteNonQuery(cmdInsert, tran);
|
|
|
|
|
|
var ctnlist = new List<MsOpSeaiDetail>();
|
|
|
ctnlist = GetBodyList(" BSNO='" + bill.BSNO + "'");
|
|
|
if (ctnlist.Count > 0)
|
|
|
{
|
|
|
foreach (var ctn in ctnlist)
|
|
|
{
|
|
|
var ctnid = Guid.NewGuid().ToString();
|
|
|
var cmdInsertCtn = db.GetSqlStringCommand(@"insert into op_seae_edi_ctn (CTN_ID,MFNO,CTNCODE,[SIZE],CTN,CTNNUM,TEU,CTNALL,CNTRNO,SEALNO,PKGS,KGS,CBM,KINDPKGS,MARKS,DESCRIPTION,CTNOWNER) values ('" + ctnid + "','"
|
|
|
+ MFNO + "','" + 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 + "','" + bill.MARKS.Replace("'", "''") + "','" + bill.DESCRIPTION.Replace("'", "''") + "','Carrier')");
|
|
|
db.ExecuteNonQuery(cmdInsertCtn, tran);
|
|
|
var cmdInsertCtnDetail = db.GetSqlStringCommand(@"insert into op_seae_edi_ctndetail (GID,MFNO,CTN_ID,PKGS,KGS,CBM,KINDPKGS) values (newid(),'"
|
|
|
+ MFNO + "','" + ctnid + "'," + ctn.PKGS + "," + ctn.KGS + ","
|
|
|
+ ctn.CBM + ",'" + ctn.KINDPKGS + "')");
|
|
|
db.ExecuteNonQuery(cmdInsertCtnDetail, tran);
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
result = new DBResult();
|
|
|
result.Success = true;
|
|
|
result.Data = MFNO;
|
|
|
result.Message = "生成成功";
|
|
|
//tran.Commit();
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
//tran.Rollback();
|
|
|
result.Success = false;
|
|
|
result.Message = "生成错误,请重试或联系系统管理员";
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
#region 编码生成
|
|
|
public static String getCodeRule(string strRULENAME, string strfield, string strETD, string strACCDATE, string strUserID, string strCompanyID)
|
|
|
{
|
|
|
//调用编码规则
|
|
|
if (strETD.Trim().IndexOf("0001") > -1)
|
|
|
{
|
|
|
strETD = "";
|
|
|
}
|
|
|
string strRULEYEAR = "";
|
|
|
string strRULECONTENT = "";
|
|
|
string strCODENAME = "";
|
|
|
string strDEPTNO = "";
|
|
|
string strRULENOLENGTH = "";
|
|
|
int iRULENOLENGTH = 0;
|
|
|
int inum = 0;
|
|
|
string strCONTENT = "";
|
|
|
T_ALL_DA T_ALL_DA = new T_ALL_DA();
|
|
|
//
|
|
|
DataSet ds = T_ALL_DA.GetAllSQL("select * from code_rule where RULENAME='" + strRULENAME.Trim() + "' and RULETYPE=2");
|
|
|
if (ds != null)
|
|
|
{
|
|
|
if (ds.Tables[0].Rows.Count > 0)
|
|
|
{
|
|
|
if (ds.Tables[0].Rows[0]["ISSTARTUSING"].ToString().Trim().Equals("True"))
|
|
|
{
|
|
|
if (ds.Tables[0].Rows[0]["RULEDATE"].ToString().Trim().Equals("业务日期"))
|
|
|
{
|
|
|
if (strETD.Trim() == "")
|
|
|
{
|
|
|
return "";
|
|
|
}
|
|
|
DateTime dETD = System.Convert.ToDateTime(strETD.Trim());
|
|
|
if (ds.Tables[0].Rows[0]["ISCLEAREDINEARLY"].ToString().Trim().Equals("True"))
|
|
|
{
|
|
|
if (ds.Tables[0].Rows[0]["RULEYEAR"].ToString().Trim() == "4")
|
|
|
{
|
|
|
strRULEYEAR = dETD.ToString("yyyy") + dETD.ToString("MM");
|
|
|
}
|
|
|
else if (ds.Tables[0].Rows[0]["RULEYEAR"].ToString().Trim() == "2")
|
|
|
{
|
|
|
strRULEYEAR = dETD.ToString("yy") + dETD.ToString("MM");
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (ds.Tables[0].Rows[0]["RULEYEAR"].ToString().Trim() == "4")
|
|
|
{
|
|
|
strRULEYEAR = dETD.ToString("yyyy");
|
|
|
}
|
|
|
else if (ds.Tables[0].Rows[0]["RULEYEAR"].ToString().Trim() == "2")
|
|
|
{
|
|
|
strRULEYEAR = dETD.ToString("yy");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else if (ds.Tables[0].Rows[0]["RULEDATE"].ToString().Trim().Equals("会计期间"))
|
|
|
{
|
|
|
if (strACCDATE.Trim() == "")
|
|
|
{
|
|
|
return "";
|
|
|
}
|
|
|
DateTime dACCDATE = System.Convert.ToDateTime(strACCDATE.Trim() + "-01");
|
|
|
if (ds.Tables[0].Rows[0]["ISCLEAREDINEARLY"].ToString().Trim().Equals("True"))
|
|
|
{
|
|
|
if (ds.Tables[0].Rows[0]["RULEYEAR"].ToString().Trim() == "4")
|
|
|
{
|
|
|
strRULEYEAR = dACCDATE.ToString("yyyy") + dACCDATE.ToString("MM");
|
|
|
}
|
|
|
else if (ds.Tables[0].Rows[0]["RULEYEAR"].ToString().Trim() == "2")
|
|
|
{
|
|
|
strRULEYEAR = dACCDATE.ToString("yy") + dACCDATE.ToString("MM");
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (ds.Tables[0].Rows[0]["RULEYEAR"].ToString().Trim() == "4")
|
|
|
{
|
|
|
strRULEYEAR = dACCDATE.ToString("yyyy");
|
|
|
}
|
|
|
else if (ds.Tables[0].Rows[0]["RULEYEAR"].ToString().Trim() == "2")
|
|
|
{
|
|
|
strRULEYEAR = dACCDATE.ToString("yy");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else if (ds.Tables[0].Rows[0]["RULEDATE"].ToString().Trim().Equals("自然月份"))
|
|
|
{
|
|
|
DateTime fwqdate = System.Convert.ToDateTime(T_ALL_DA.GetStrSQL("fwqdate", "select fwqdate=getdate()"));
|
|
|
if (ds.Tables[0].Rows[0]["ISCLEAREDINEARLY"].ToString().Trim().Equals("True"))
|
|
|
{
|
|
|
if (ds.Tables[0].Rows[0]["RULEYEAR"].ToString().Trim() == "4")
|
|
|
{
|
|
|
strRULEYEAR = fwqdate.ToString("yyyy") + fwqdate.ToString("MM");
|
|
|
}
|
|
|
else if (ds.Tables[0].Rows[0]["RULEYEAR"].ToString().Trim() == "2")
|
|
|
{
|
|
|
strRULEYEAR = fwqdate.ToString("yy") + fwqdate.ToString("MM");
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (ds.Tables[0].Rows[0]["RULEYEAR"].ToString().Trim() == "4")
|
|
|
{
|
|
|
strRULEYEAR = fwqdate.ToString("yyyy");
|
|
|
}
|
|
|
else if (ds.Tables[0].Rows[0]["RULEYEAR"].ToString().Trim() == "2")
|
|
|
{
|
|
|
strRULEYEAR = fwqdate.ToString("yy");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//
|
|
|
if (ds.Tables[0].Rows[0]["ISCOMPANY"].ToString().Trim().Equals("True"))
|
|
|
{
|
|
|
strCODENAME = T_ALL_DA.GetStrSQL("CODENAME", "select CODENAME from [company] where GID=(select top 1 COMPANYID from user_company where USERID='" + strUserID.Trim() + "')");
|
|
|
}
|
|
|
if (ds.Tables[0].Rows[0]["ISDEPT"].ToString().Trim().Equals("True"))
|
|
|
{
|
|
|
strDEPTNO = T_ALL_DA.GetStrSQL("DEPTNO", "select DEPTNO from [sys_dept] where LINKID=(select top 1 COMPANYID from user_company where USERID='" + strUserID.Trim() + "')");
|
|
|
}
|
|
|
strRULECONTENT = ds.Tables[0].Rows[0]["RULECONTENT"].ToString().Trim();
|
|
|
strRULECONTENT = strRULECONTENT.Replace("《COMPANY》", strCODENAME);
|
|
|
strRULECONTENT = strRULECONTENT.Replace("《DEPT》", strDEPTNO);
|
|
|
//
|
|
|
iRULENOLENGTH = int.Parse(ds.Tables[0].Rows[0]["RULENOLENGTH"].ToString().Trim());
|
|
|
strCONTENT = strRULECONTENT + strRULEYEAR;
|
|
|
//获取分公司的票号头字符
|
|
|
string tempBANKSHEAD = T_ALL_DA.GetStrSQL("BANKSHEAD", "SELECT TOP 1 BANKSHEAD FROM company WHERE GID='" + strCompanyID.Trim() + "'");
|
|
|
strCONTENT = tempBANKSHEAD + strCONTENT;
|
|
|
//
|
|
|
strRULENOLENGTH = T_ALL_DA.GetStrSQL(strfield, "select top 1 " + strfield + " from [op_Seai] where " + strfield + " like '" + strCONTENT.Trim() + "%' order by " + strfield + " DESC");
|
|
|
if (strRULENOLENGTH == "")
|
|
|
{
|
|
|
strRULENOLENGTH = "1";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strRULENOLENGTH = strRULENOLENGTH.Replace(strCONTENT.Trim(), "");
|
|
|
inum = int.Parse(strRULENOLENGTH.Trim());
|
|
|
inum = inum + 1;
|
|
|
strRULENOLENGTH = inum.ToString();
|
|
|
}
|
|
|
int j = iRULENOLENGTH - strRULENOLENGTH.Length;
|
|
|
for (int i = 1; i <= j; i++)
|
|
|
{
|
|
|
strRULENOLENGTH = "0" + strRULENOLENGTH;
|
|
|
}
|
|
|
//
|
|
|
strCONTENT = strCONTENT + strRULENOLENGTH;
|
|
|
return strCONTENT;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return "";
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 判断是否有费用
|
|
|
public static bool GetFeeCount(string BSNO)
|
|
|
{
|
|
|
var isfee = false;
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("Select count(*) as count ");
|
|
|
strSql.Append(" from ch_fee ");
|
|
|
strSql.Append(" where BSNO='" + BSNO+"'");
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
var evData = Convert.ToInt32(reader["count"]);
|
|
|
if (evData > 0) { isfee = true; };
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return isfee;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 委托业务费用加锁
|
|
|
/// <summary>
|
|
|
/// 委托业务费用加锁
|
|
|
/// </summary>
|
|
|
/// <param name="tempBSNO">委托业务编号</param>
|
|
|
/// <returns>值等于1表示加锁成功 值不等于1表示加锁失败</returns>
|
|
|
public static int LockFeeStatus(string tempBSNO)
|
|
|
{
|
|
|
int iResult = 0;
|
|
|
|
|
|
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
SqlParameter[] parms = new SqlParameter[] {
|
|
|
new SqlParameter("@BSNO",SqlDbType.VarChar,100)
|
|
|
};
|
|
|
|
|
|
parms[0].Value = tempBSNO;
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, "UPDATE op_Seai SET FEESTATUS = 1 WHERE BSNO = @BSNO", parms);
|
|
|
|
|
|
sqlTran.Commit();
|
|
|
iResult = 1;//状态为1表示更新成功
|
|
|
}
|
|
|
catch (Exception execError)
|
|
|
{
|
|
|
iResult = -1;//有异常,更新失败
|
|
|
sqlTran.Rollback();
|
|
|
iResult = -2;//更新异常,事务已回滚成功
|
|
|
throw execError;
|
|
|
}
|
|
|
finally
|
|
|
{
|
|
|
SqlHelper.CloseConnection();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return iResult;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 委托业务费用解锁
|
|
|
/// <summary>
|
|
|
/// 委托业务费用解锁
|
|
|
/// </summary>
|
|
|
/// <param name="tempBSNO">委托业务编号</param>
|
|
|
/// <returns>值等于1表示解锁成功 值不等于1表示解锁失败</returns>
|
|
|
public static int UnLockFeeStatus(string tempBSNO)
|
|
|
{
|
|
|
int iResult = 0;
|
|
|
|
|
|
using (SqlTransaction sqlTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
SqlParameter[] parms = new SqlParameter[] {
|
|
|
new SqlParameter("@BSNO",SqlDbType.VarChar,100)
|
|
|
};
|
|
|
|
|
|
parms[0].Value = tempBSNO;
|
|
|
SqlHelper.ExecuteNonQuery(sqlTran, CommandType.Text, "UPDATE op_Seai SET FEESTATUS =0 WHERE BSNO = @BSNO", parms);
|
|
|
|
|
|
sqlTran.Commit();
|
|
|
iResult = 1;//状态为1表示更新成功
|
|
|
}
|
|
|
catch (Exception execError)
|
|
|
{
|
|
|
iResult = -1;//有异常,更新失败
|
|
|
sqlTran.Rollback();
|
|
|
iResult = -2;//更新异常,事务已回滚成功
|
|
|
throw execError;
|
|
|
}
|
|
|
finally
|
|
|
{
|
|
|
SqlHelper.CloseConnection();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return iResult;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 海运进口生成需引入业务
|
|
|
|
|
|
static public List<MsOpSeaeToSeai> GetImpDataList(int start, int limit, string strCondition, string userid, string usercode, string companyid, string sort = null)
|
|
|
{
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append(@"SELECT * from (SELECT row_number() over (");
|
|
|
|
|
|
var sortstring = DatasetSort.Getsortstring(sort);
|
|
|
if (!string.IsNullOrEmpty(sortstring))
|
|
|
{
|
|
|
strSql.Append(" order by " + sortstring);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
strSql.Append(" order by INPUTTIME desc,ETD desc");
|
|
|
}
|
|
|
|
|
|
strSql.Append(@") as num , ");
|
|
|
|
|
|
strSql.Append(" T.GID,T.BSNO,T.SEAIOP,T.SEAIBSNO,T.SUBCOMPANYID,dbo.GetISIMP(T.BSNO,T.GID) ISIMP,T.IMPTIME,T.INPUTBY,T.INPUTTIME");
|
|
|
strSql.Append(",S.MBLNO,S.HBLNO,S.CUSTNO,S.CUSTOMERNAME,S.BLTYPE,");
|
|
|
strSql.Append("S.SHIPPER,S.CONSIGNEE,S.NOTIFYPARTY,S.VESSEL,S.VOYNO,S.ETD,S.CLOSINGDATE,S.ETA,S.ATD,");
|
|
|
strSql.Append("S.PlACERECEIPT,S.PORTLOADID,S.PORTLOAD,S.PORTDISCHARGEID,S.PORTDISCHARGE,S.PLACEDELIVERYID,S.PLACEDELIVERY,S.DESTINATIONID,S.DESTINATION,S.COPYNOBILL,");
|
|
|
strSql.Append("S.NOBILL,S.ISSUETYPE,S.ISSUEDATE,S.ISSUEPLACE,S.BLFRT,S.PREPARDAT,S.PAYABLEAT,S.[SERVICE],S.MARKS,S.NOPKGS,S.[DESCRIPTION],S.GOODSNAME,");
|
|
|
strSql.Append("S.GROSSWEIGHT,S.MEASUREMENT,S.PKGS,S.KINDPKGS,S.KGS,S.CBM,");
|
|
|
strSql.Append("S.CARGOID,S.DCLASS,S.DUNNO,S.DPAGE,S.DLABEL,S.LINKMAN,");
|
|
|
strSql.Append("S.REEFERF,S.TEMPID,S.TEMPSET,S.TEMPMAX,S.TEMPMIN,S.HUMIDITY,S.HSCODE");
|
|
|
strSql.Append(",(select ShowName from [user] where GID=T.INPUTBY) as INPUTBYREF,(SELECT TOP 1 CUSTNO FROM OP_SEAI WHERE BSNO=T.SEAIBSNO) SEAICUSTNO ");
|
|
|
strSql.Append(",(select ENNAME from [company] where GID=S.CORPID) as CORP,S.CORPID ");
|
|
|
strSql.Append(" from OP_SEAETOSEAI T LEFT JOIN OP_SEAE S ON (S.BSNO=T.BSNO) ");
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strSql.Append(" WHERE " + strCondition + " ");
|
|
|
}
|
|
|
//
|
|
|
strSql.Append(@")as t ");
|
|
|
strSql.Append(string.Format("where t.num>={0} and t.num<={1} ", start, start + limit)); //
|
|
|
|
|
|
return SetImpData(strSql);
|
|
|
}
|
|
|
|
|
|
public static int getImpTotalCount(string strCondition, string userid, string usercode, string companyid)
|
|
|
{
|
|
|
|
|
|
StringBuilder strSql = new StringBuilder();
|
|
|
strSql.Append("select count(*) ");
|
|
|
strSql.Append(" from OP_SEAETOSEAI ");
|
|
|
strSql.Append(" I LEFT JOIN OP_SEAE S ON (S.BSNO=I.BSNO) ");
|
|
|
|
|
|
if (!string.IsNullOrEmpty(strCondition))
|
|
|
{
|
|
|
strSql.Append(" WHERE " + strCondition + " ");
|
|
|
}
|
|
|
int cnt = 0;
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
cnt = Convert.ToInt32(reader[0]);
|
|
|
}
|
|
|
}
|
|
|
return cnt;
|
|
|
}
|
|
|
|
|
|
private static List<MsOpSeaeToSeai> SetImpData(StringBuilder strSql)
|
|
|
{
|
|
|
var headList = new List<MsOpSeaeToSeai>();
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
MsOpSeaeToSeai data = new MsOpSeaeToSeai();
|
|
|
#region Set DB data to Object
|
|
|
data.GID = Convert.ToString(reader["GID"]);//业务编号
|
|
|
data.BSNO = Convert.ToString(reader["BSNO"]);//业务编号
|
|
|
data.SEAIOP = Convert.ToString(reader["SEAIOP"]);//委托方式
|
|
|
data.SEAIBSNO = Convert.ToString(reader["SEAIBSNO"]);//主编号
|
|
|
data.CUSTNO = Convert.ToString(reader["CUSTNO"]);//委托编号
|
|
|
data.SEAICUSTNO = Convert.ToString(reader["SEAICUSTNO"]);//委托编号
|
|
|
data.MBLNO = Convert.ToString(reader["MBLNO"]);//主提单号
|
|
|
data.HBLNO = Convert.ToString(reader["HBLNO"]);//分提单号
|
|
|
data.SUBCOMPANYID = Convert.ToString(reader["SUBCOMPANYID"]);//放箱申请单号
|
|
|
if (reader["ISIMP"] != DBNull.Value)
|
|
|
data.ISIMP = Convert.ToString(reader["ISIMP"]);//是否引入
|
|
|
|
|
|
if (reader["ETD"] != DBNull.Value)
|
|
|
data.ETD = Convert.ToDateTime(reader["ETD"]).ToString("yyyy-MM-dd");//引入时间
|
|
|
|
|
|
|
|
|
data.INPUTBYREF = Convert.ToString(reader["INPUTBYREF"]);// 费用状态
|
|
|
if (reader["INPUTTIME"] != DBNull.Value)
|
|
|
data.INPUTTIME = Convert.ToDateTime(reader["INPUTTIME"]).ToString("yyyy-MM-dd HH:mm:ss");//录入日期
|
|
|
|
|
|
data.CUSTOMERNAME = Convert.ToString(reader["CUSTOMERNAME"]);//委托单位
|
|
|
|
|
|
data.INPUTBY = Convert.ToString(reader["INPUTBY"]);//录入人
|
|
|
data.CORPID = Convert.ToString(reader["CORPID"]);//分公司代码
|
|
|
data.VESSEL = Convert.ToString(reader["VESSEL"]);//船名
|
|
|
data.VOYNO = Convert.ToString(reader["VOYNO"]);//航次
|
|
|
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");//到港日期
|
|
|
|
|
|
data.PORTLOADID = Convert.ToString(reader["PORTLOADID"]);//装货港代码
|
|
|
data.PORTLOAD = Convert.ToString(reader["PORTLOAD"]);//装货港
|
|
|
data.PORTDISCHARGEID = Convert.ToString(reader["PORTDISCHARGEID"]);//卸货港代码
|
|
|
data.PORTDISCHARGE = Convert.ToString(reader["PORTDISCHARGE"]);//卸货港
|
|
|
data.GOODSNAME = Convert.ToString(reader["GOODSNAME"]);//品名
|
|
|
if (reader["KGS"] != DBNull.Value)
|
|
|
data.KGS = Convert.ToDecimal(reader["KGS"]);//毛重
|
|
|
if (reader["PKGS"] != DBNull.Value)
|
|
|
data.PKGS = Convert.ToInt32(reader["PKGS"]);//件数
|
|
|
data.KINDPKGS = Convert.ToString(reader["KINDPKGS"]);//件数包装
|
|
|
data.BLTYPE = Convert.ToString(reader["BLTYPE"]);//装运方式
|
|
|
if (reader["CBM"] != DBNull.Value)
|
|
|
data.CBM = Convert.ToDecimal(reader["CBM"]);//立方数/尺码
|
|
|
data.NOPKGS = Convert.ToString(reader["NOPKGS"]);//件数包装
|
|
|
if (reader["GROSSWEIGHT"] != DBNull.Value)
|
|
|
data.GROSSWEIGHT = Convert.ToString(reader["GROSSWEIGHT"]);//货物毛重
|
|
|
if (reader["MEASUREMENT"] != DBNull.Value)
|
|
|
data.MEASUREMENT = Convert.ToString(reader["MEASUREMENT"]);//货物尺码
|
|
|
data.DESCRIPTION = Convert.ToString(reader["DESCRIPTION"]);//货物描述
|
|
|
data.SHIPPER = Convert.ToString(reader["SHIPPER"]).Replace(@"\\\\", "\n").Replace(@"^", "\'");//发货人内容
|
|
|
data.CONSIGNEE = Convert.ToString(reader["CONSIGNEE"]).Replace(@"\\\\", "\n").Replace(@"^", "\'");//收货人内容
|
|
|
data.NOTIFYPARTY = Convert.ToString(reader["NOTIFYPARTY"]).Replace(@"\\\\", "\n").Replace(@"^", "\'");//通知人内容
|
|
|
if (reader["ETA"] != DBNull.Value)
|
|
|
data.ETA = Convert.ToDateTime(reader["ETA"]).ToString("yyyy-MM-dd");//预抵日期
|
|
|
data.PLACERECEIPT = Convert.ToString(reader["PlACERECEIPT"]);//收货地
|
|
|
data.PLACEDELIVERYID = Convert.ToString(reader["PLACEDELIVERYID"]);//交货地代码
|
|
|
data.PLACEDELIVERY = Convert.ToString(reader["PLACEDELIVERY"]);//交货地
|
|
|
data.DESTINATIONID = Convert.ToString(reader["DESTINATIONID"]);//目的地代码
|
|
|
data.DESTINATION = Convert.ToString(reader["DESTINATION"]);//目的地
|
|
|
data.NOBILL = Convert.ToString(reader["NOBILL"]);//提单份数
|
|
|
data.COPYNOBILL = Convert.ToString(reader["COPYNOBILL"]);//提单份数
|
|
|
data.ISSUETYPE = Convert.ToString(reader["ISSUETYPE"]);//签单方式
|
|
|
if (reader["ISSUEDATE"] != DBNull.Value)
|
|
|
data.ISSUEDATE = Convert.ToDateTime(reader["ISSUEDATE"]).ToString("yyyy-MM-dd");//预抵日期
|
|
|
data.ISSUEPLACE = Convert.ToString(reader["ISSUEPLACE"]);//签单地点
|
|
|
data.BLFRT = Convert.ToString(reader["BLFRT"]);//付费方式
|
|
|
data.PREPARDAT = Convert.ToString(reader["PREPARDAT"]);//预付地点
|
|
|
data.PAYABLEAT = Convert.ToString(reader["PAYABLEAT"]);//到付地点
|
|
|
data.SERVICE = Convert.ToString(reader["SERVICE"]);//运输条款
|
|
|
data.MARKS = Convert.ToString(reader["MARKS"]);//唛头
|
|
|
data.CARGOID = Convert.ToString(reader["CARGOID"]);//货物标识
|
|
|
data.DCLASS = Convert.ToString(reader["DCLASS"]);//危险品分类/等级
|
|
|
data.DUNNO = Convert.ToString(reader["DUNNO"]);//危险品编号
|
|
|
data.REEFERF = Convert.ToString(reader["REEFERF"]);//冷藏通风量
|
|
|
data.TEMPID = Convert.ToString(reader["TEMPID"]);//温度单位
|
|
|
data.TEMPSET = Convert.ToString(reader["TEMPSET"]);//设置温度
|
|
|
data.TEMPMAX = Convert.ToString(reader["TEMPMAX"]);//最高温度
|
|
|
data.TEMPMIN = Convert.ToString(reader["TEMPMIN"]);//最低温度
|
|
|
data.HUMIDITY = Convert.ToString(reader["HUMIDITY"]);//湿度
|
|
|
data.DPAGE = Convert.ToString(reader["DPAGE"]);//危险品页号
|
|
|
data.DLABEL = Convert.ToString(reader["DLABEL"]);//危险品标签
|
|
|
data.LINKMAN = Convert.ToString(reader["LINKMAN"]);//危险品联系人
|
|
|
data.HSCODE = Convert.ToString(reader["HSCODE"]);//HS编码
|
|
|
#endregion
|
|
|
headList.Add(data);
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
return headList;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
#region 权限范围
|
|
|
public static string GetRangDAStr(string tb, string userid, string username, string companyid)
|
|
|
{
|
|
|
string str = "";
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("SELECT ");
|
|
|
strSql.Append(" VISIBLERANGE,OPERATERANGE,AUTHORITYID,VSSQL ");
|
|
|
strSql.Append(" from VW_User_Authority ");
|
|
|
strSql.Append(" where [NAME]='modSeaImportList' and USERID='" + userid + "' and ISDELETE=0");
|
|
|
|
|
|
string visiblerange = "4";
|
|
|
string operaterange = "4";
|
|
|
string AUTHORITYID = "";
|
|
|
string VSSQL = "";
|
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
visiblerange = Convert.ToString(reader["VISIBLERANGE"]);
|
|
|
operaterange = Convert.ToString(reader["OPERATERANGE"]);
|
|
|
AUTHORITYID = Convert.ToString(reader["AUTHORITYID"]);
|
|
|
VSSQL = Convert.ToString(reader["VSSQL"]);
|
|
|
|
|
|
break;
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
if (visiblerange == "4")
|
|
|
{
|
|
|
str = " (OP='" + username + "' OR SALE='" + username + "' OR INPUTBY='" + username + "' or CUSTSERVICE='" + username + "' OR FRCUSTSERVICE='" + username + "' OR DOC='" + username + "')";
|
|
|
}
|
|
|
else if (visiblerange == "3")
|
|
|
{
|
|
|
str = " (OP='" + username + "' OR SALE='" + username + "' OR INPUTBY='" + username + "' or CUSTSERVICE='" + username + "' OR FRCUSTSERVICE='" + username + "' OR DOC='" + username + "')";
|
|
|
|
|
|
}
|
|
|
else if (visiblerange == "2")
|
|
|
{
|
|
|
var rangeDa = new RangeDA();
|
|
|
var deptid = rangeDa.GetDEPTGID(userid);
|
|
|
str = " (OP in (select showname from vw_user where deptgid='" + deptid + "') OR SALE in (select showname from vw_user where deptgid='" + deptid + "') OR CUSTSERVICE in (select showname from vw_user where deptgid='" + deptid + "') "
|
|
|
+ " OR DOC in (select showname from vw_user where deptgid='" + deptid + "') OR FRCUSTSERVICE in (select showname from vw_user where deptgid='" + deptid + "') OR INPUTBY in (select showname from vw_user where deptgid='" + deptid + "'))";
|
|
|
}
|
|
|
else if (visiblerange == "1")
|
|
|
{
|
|
|
str = " (UPPER(B.Corpid)='" + companyid + "' or B.SALECORPID='" + companyid + "') ";
|
|
|
}
|
|
|
else if (visiblerange == "5")
|
|
|
{
|
|
|
if (tb == "index")
|
|
|
{
|
|
|
var userstr = new StringBuilder();
|
|
|
userstr.Append(" select COMPANYID from user_authority_range_company where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1");
|
|
|
Database userdb = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString()))
|
|
|
{
|
|
|
str = "";
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
if (str == "")
|
|
|
{
|
|
|
str = " (B.Corpid='" + Convert.ToString(reader["COMPANYID"]) + "' or B.SALECORPID='" + Convert.ToString(reader["COMPANYID"]) + "' ";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
str = str + " or B.Corpid='" + Convert.ToString(reader["COMPANYID"]) + "' or B.SALECORPID='" + Convert.ToString(reader["COMPANYID"]) + "'";
|
|
|
};
|
|
|
}
|
|
|
str = str + ")";
|
|
|
reader.Close();
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
str = " (UPPER(B.Corpid)='" + companyid + "' or B.SALECORPID='" + companyid + "') ";
|
|
|
}
|
|
|
|
|
|
}
|
|
|
else if (visiblerange == "6")
|
|
|
{
|
|
|
if (tb == "index")
|
|
|
{
|
|
|
var opstr = "";
|
|
|
var userstr = new StringBuilder();
|
|
|
userstr.Append(" select OPID,(select SHOWNAME from [user] where GID=user_authority_range_op.OPID) SHOWNAME from user_authority_range_op where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1");
|
|
|
Database userdb = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString()))
|
|
|
{
|
|
|
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
|
|
|
|
|
|
if (opstr == "")
|
|
|
{
|
|
|
opstr = " ('" + Convert.ToString(reader["SHOWNAME"]) + "'";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
opstr = opstr + ",'" + Convert.ToString(reader["SHOWNAME"]) + "'";
|
|
|
};
|
|
|
}
|
|
|
|
|
|
if (opstr != "") opstr = opstr + ")";
|
|
|
reader.Close();
|
|
|
}
|
|
|
if (opstr == "") opstr = "('" + username + "')";
|
|
|
str = " (OP in " + opstr + " or SALE in " + opstr + " or CUSTSERVICE IN " + opstr + " or DOC IN " + opstr + " or FRCUSTSERVICE IN " + opstr + " or INPUTBY IN " + opstr + ")";
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
str = " (UPPER(B.Corpid)='" + companyid + "' or B.SALECORPID='" + companyid + "') ";
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (visiblerange == "0")
|
|
|
{
|
|
|
str = " 1=1 ";
|
|
|
}
|
|
|
VSSQL = VSSQL.Trim();
|
|
|
if (!string.IsNullOrEmpty(VSSQL))
|
|
|
{
|
|
|
|
|
|
if (!string.IsNullOrEmpty(str))
|
|
|
{
|
|
|
str = str + " and (" + VSSQL + ") ";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
str = " (" + VSSQL + ") ";
|
|
|
}
|
|
|
|
|
|
}
|
|
|
return str;
|
|
|
}
|
|
|
|
|
|
public static string GetSaleRangDAStr(string tb, string userid, string username, string companyid)
|
|
|
{
|
|
|
string str = "";
|
|
|
var strSql = new StringBuilder();
|
|
|
strSql.Append("SELECT ");
|
|
|
strSql.Append(" VISIBLERANGE,OPERATERANGE,AUTHORITYID,VSSQL ");
|
|
|
strSql.Append(" from VW_User_Authority ");
|
|
|
strSql.Append(" where [NAME]='modSeaiSaleList' and USERID='" + userid + "' and ISDELETE=0");
|
|
|
|
|
|
string visiblerange = "4";
|
|
|
string operaterange = "4";
|
|
|
string AUTHORITYID = "";
|
|
|
string VSSQL = "";
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
|
|
|
|
|
|
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
|
|
|
{
|
|
|
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
visiblerange = Convert.ToString(reader["VISIBLERANGE"]);
|
|
|
operaterange = Convert.ToString(reader["OPERATERANGE"]);
|
|
|
AUTHORITYID = Convert.ToString(reader["AUTHORITYID"]);
|
|
|
VSSQL = Convert.ToString(reader["VSSQL"]);
|
|
|
break;
|
|
|
}
|
|
|
reader.Close();
|
|
|
}
|
|
|
if (visiblerange == "4")
|
|
|
{
|
|
|
str = " SALE='" + username + "' ";
|
|
|
}
|
|
|
else if (visiblerange == "3")
|
|
|
{
|
|
|
|
|
|
str = " SALE='" + username + "' ";
|
|
|
|
|
|
}
|
|
|
else if (visiblerange == "2")
|
|
|
{
|
|
|
if (tb == "index")
|
|
|
{
|
|
|
var rangeDa = new RangeDA();
|
|
|
var deptname = rangeDa.GetDEPTNAME(userid);
|
|
|
var userstr = new StringBuilder();
|
|
|
userstr.Append(" select SHOWNAME from [user] where GID in (select USERID from user_company where COMPANYID='" + companyid + "') and GID in (select userid from user_baseinfo where DEPTNAME='" + deptname + "')");
|
|
|
Database userdb = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString()))
|
|
|
{
|
|
|
str = "";
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
if (str == "")
|
|
|
{
|
|
|
str = " (SALE='" + Convert.ToString(reader["SHOWNAME"]) + "'";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
str = str + " OR SALE='" + Convert.ToString(reader["SHOWNAME"]) + "'";
|
|
|
};
|
|
|
}
|
|
|
str = str + ")";
|
|
|
reader.Close();
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
str = " UPPER(Corpid)='" + companyid + "'";
|
|
|
}
|
|
|
|
|
|
}
|
|
|
else if (visiblerange == "5")
|
|
|
{
|
|
|
if (tb == "index")
|
|
|
{
|
|
|
var userstr = new StringBuilder();
|
|
|
userstr.Append(" select COMPANYID from user_authority_range_company where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1");
|
|
|
Database userdb = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString()))
|
|
|
{
|
|
|
str = "";
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
if (str == "")
|
|
|
{
|
|
|
str = " (B.Corpid='" + Convert.ToString(reader["COMPANYID"]) + "' or B.SALECORPID='" + Convert.ToString(reader["COMPANYID"]) + "' ";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
str = str + " or B.Corpid='" + Convert.ToString(reader["COMPANYID"]) + "' or B.SALECORPID='" + Convert.ToString(reader["COMPANYID"]) + "'";
|
|
|
};
|
|
|
}
|
|
|
str = str + ")";
|
|
|
reader.Close();
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
str = " UPPER(Corpid)='" + companyid + "'";
|
|
|
}
|
|
|
|
|
|
}
|
|
|
else if (visiblerange == "6")
|
|
|
{
|
|
|
if (tb == "index")
|
|
|
{
|
|
|
var opstr = "";
|
|
|
var userstr = new StringBuilder();
|
|
|
userstr.Append(" select OPID,(select SHOWNAME from [user] where GID=user_authority_range_op.OPID) SHOWNAME from user_authority_range_op where userid='" + userid + "' and AUTHORITYID='" + AUTHORITYID + "' and VISIBLERANGE=1");
|
|
|
Database userdb = DatabaseFactory.CreateDatabase();
|
|
|
using (IDataReader reader = userdb.ExecuteReader(CommandType.Text, userstr.ToString()))
|
|
|
{
|
|
|
|
|
|
while (reader.Read())
|
|
|
{
|
|
|
|
|
|
|
|
|
if (opstr == "")
|
|
|
{
|
|
|
opstr = " ('" + Convert.ToString(reader["SHOWNAME"]) + "'";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
opstr = opstr + ",'" + Convert.ToString(reader["SHOWNAME"]) + "'";
|
|
|
};
|
|
|
}
|
|
|
|
|
|
if (opstr != "") opstr = opstr + ")";
|
|
|
reader.Close();
|
|
|
}
|
|
|
if (opstr == "") opstr = "('" + username + "')";
|
|
|
str = " (SALE in " + opstr + ")";
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
str = " UPPER(Corpid)='" + companyid + "'";
|
|
|
}
|
|
|
|
|
|
}
|
|
|
else if (visiblerange == "1")
|
|
|
{
|
|
|
str = " (UPPER(B.Corpid)='" + companyid + "' or B.SALECORPID='" + companyid + "') ";
|
|
|
}
|
|
|
else if (visiblerange == "0")
|
|
|
{
|
|
|
str = " 1=1 ";
|
|
|
}
|
|
|
VSSQL = VSSQL.Trim();
|
|
|
if (!string.IsNullOrEmpty(VSSQL))
|
|
|
{
|
|
|
|
|
|
if (!string.IsNullOrEmpty(str))
|
|
|
{
|
|
|
str = str + " and (" + VSSQL + ") ";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
str = " (" + VSSQL + ") ";
|
|
|
}
|
|
|
|
|
|
}
|
|
|
return str;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
}
|
|
|
}
|