using DS.Module.Core ;
using DS.WMS.Core.Op.Dtos ;
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Runtime.InteropServices ;
using System.Text ;
using System.Threading.Tasks ;
namespace DS.WMS.Core.Op.EDI
{
/// <summary>
/// INTTRA 订舱、截单帮助类
/// </summary>
public class InttraEdiHelper
{
public InttraEdiHelper ( )
{
}
#region 基本函数
public static string GetCarrierName ( string str )
{
if ( str = = "MAEU" ) return "MAERSK LINE" ;
if ( str = = "MCCQ" ) return "MCC TRANSPORT SINGAPORE" ;
if ( str = = "ANNU" ) return "ANL CONTAINER LINE" ;
if ( str = = "CMDU" ) return "CMA CGM" ;
if ( str = = "CHNL" ) return "CNC" ;
if ( str = = "HLCU" ) return "HAPAG-LLOYD" ;
if ( str = = "SUDU" ) return "HAMBURG" ;
if ( str = = "MSCU" ) return "MSC" ;
if ( str = = "DAAE" ) return "DELMAS" ;
if ( str = = "UASC" ) return "UASC" ;
if ( str = = "COSU" ) return "COSCO" ;
if ( str = = "OOLU" ) return "OOCL" ;
else return "" ;
}
public static string GetBillNum ( string str )
{
if ( str = = "ZERO" ) return "0" ;
if ( str = = "ONE" ) return "1" ;
if ( str = = "TWO" ) return "2" ;
if ( str = = "THREE" ) return "3" ;
if ( str = = "FOUR" ) return "4" ;
if ( str = = "FIVE" ) return "5" ;
if ( str = = "SIX" ) return "6" ;
if ( str = = "SERVEN" ) return "7" ;
if ( str = = "EIGHT" ) return "8" ;
if ( str = = "NINE" ) return "9" ;
if ( str = = "TEN" ) return "10" ;
else return "" ;
}
public static string GetBillNum2 ( string str )
{
if ( str = = "ZERO" ) return "00" ;
if ( str = = "ONE" ) return "01" ;
if ( str = = "TWO" ) return "02" ;
if ( str = = "THREE" ) return "03" ;
if ( str = = "FOUR" ) return "04" ;
if ( str = = "FIVE" ) return "05" ;
if ( str = = "SIX" ) return "06" ;
if ( str = = "SERVEN" ) return "07" ;
if ( str = = "EIGHT" ) return "08" ;
if ( str = = "NINE" ) return "09" ;
if ( str = = "TEN" ) return "10" ;
else return "" ;
}
#region 判断中文字符
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 ;
}
}
for ( int i = 0 ; i < str . Length ; i + + )
{
string stemp = str . Substring ( i , 1 ) ;
int ilen = System . Text . Encoding . Default . GetByteCount ( stemp ) ;
if ( ilen = = 2 )
{
result = true ;
return result ;
}
}
return result ;
}
# endregion
#region 文本字段判断每行是否符合
/// <summary>
/// edi 文本格式处理判断( 例如: 1行35个字符不超过5行)
/// </summary>
/// <param name="fileType">文件类型( 例如: txt、xml) </param>
/// <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 fileType , string str , int length , string sMBLNO , string sType , int rowNum , string sSymbol , bool isHuoMiao )
{
string error = "" ;
string Shipping = str ;
if ( fileType = = "txt" )
{
Shipping = formatEdiStr ( "txt" , str ) ;
}
else if ( fileType = = "xml" )
{
Shipping = formatEdiStr ( "txt" , str ) ;
}
string [ ] argAGENT = Shipping . Split ( new string [ ] { "\r\n" } , StringSplitOptions . None ) ;
if ( argAGENT . Length > 0 )
{
if ( argAGENT . Length = = 1 )
{
argAGENT = Shipping . Split ( new string [ ] { "\n" } , StringSplitOptions . None ) ;
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 字符转义
/// <summary>
/// 各种文本转义字符
/// </summary>
/// <param name="fileType">文件类型( 例如: txt、xml) </param>
/// <param name="str">文本字符串</param>
/// <returns></returns>
public static string formatEdiStr ( string fileType , string str )
{
if ( str = = null )
str = string . Empty ;
if ( fileType = = "txt" )
{
return str . Replace ( "?" , "??" ) . Replace ( ":" , "?:" ) . Replace ( "+" , "?+" ) . Replace ( "'" , "?'" ) ;
}
else if ( fileType = = "xml" )
{
return str . Replace ( "&" , "&" ) . Replace ( "<" , "<" ) . Replace ( ">" , ">" ) . Replace ( "\"" , """ ) . Replace ( "'" , "'" ) ;
}
else if ( fileType = = "sitc" )
{
return str . Replace ( "?" , "??" ) . Replace ( ":" , "?:" ) . Replace ( "'" , "?'" ) ;
}
else
{
return str ;
}
}
# endregion
#region 格式化每行
public static List < System . String > formatlengthStr ( string str , int length , bool formatstr = false , bool nodelsp = false )
{
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 )
{
if ( formatstr )
DestList . Add ( formatEdiStr ( "txt" , StrList [ i ] ) ) ;
else
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
{
if ( formatstr )
DestList . Add ( formatEdiStr ( "txt" , strnewline ) ) ;
else
DestList . Add ( strnewline ) ;
strnewline = strtempnewline ;
}
strtempnewline = "" ;
}
}
if ( nodelsp )
{
if ( formatstr )
DestList . Add ( formatEdiStr ( "txt" , strnewline ) ) ;
else DestList . Add ( strnewline ) ;
}
else if ( strnewline . Trim ( ) ! = "" )
{
if ( formatstr )
DestList . Add ( formatEdiStr ( "txt" , strnewline ) ) ;
else DestList . Add ( strnewline ) ;
}
}
}
return DestList ;
}
# endregion
# endregion
#region 检查
public static string IsCreateINTTR ( EDIBaseModel InttrEdi )
{
var error = "" ;
if ( string . IsNullOrEmpty ( InttrEdi . SENDCODE ) )
{ error = error + "<br />发送方代码不能为空" ; }
if ( string . IsNullOrEmpty ( InttrEdi . SENDNAME ) )
{ error = error + "<br />发送方名称不能为空" ; }
if ( string . IsNullOrEmpty ( InttrEdi . RECEIVECODE ) )
{ error = error + "<br />接收方代码不能为空" ; }
if ( InttrEdi . filetype = = "B" )
{
//if (InttrEdi.UseForWarderCode)
//{
// if (string.IsNullOrEmpty(InttrEdi.ForWarderCode))
// { error = error + "<br />货代代码不能为空"; }
// if (string.IsNullOrEmpty(InttrEdi.ForWarderName))
// { error = error + "<br />货代称呼不能为空"; }
//}
}
foreach ( var headData in InttrEdi . BSLIST )
{
if ( InttrEdi . filetype = = "B" )
{
if ( InttrEdi . UseForWarderCode )
{
if ( string . IsNullOrEmpty ( headData . ORDERNO ) )
{ error = error + "<br />订舱编号不能为空" ; }
}
}
if ( headData . CARRIERID ! = "YML" )
{
if ( string . IsNullOrEmpty ( headData . OpEName ) )
{ error = error + "<br />操作的英文名不能为空" ; }
if ( string . IsNullOrEmpty ( headData . OpTel ) )
{ error = error + "<br />操作的电话不能为空" ; }
if ( string . IsNullOrEmpty ( headData . OpEmail ) )
{ error = error + "<br />操作的邮箱不能为空" ; }
}
//截单时必需校验提单号, 订舱时CMA可以不校验提单号必填
if ( InttrEdi . filetype = = "E" | | ( InttrEdi . filetype = = "B" & & ( headData . CARRIEREDICODE ! = "HLCU" & & headData . CARRIEREDICODE ! = "CMDU" & & headData . CARRIEREDICODE ! = "CHNL" & & headData . CARRIEREDICODE ! = "MAEU" ) ) )
{
if ( string . IsNullOrEmpty ( headData . MBLNO ) )
{ error = error + "<br />主提单号不能为空" ; }
}
if ( string . IsNullOrEmpty ( headData . BLFRT ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 付费方式不能为空" ; }
if ( string . IsNullOrEmpty ( headData . SERVICE ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 运输条款不能为空" ; }
if ( string . IsNullOrEmpty ( headData . CONTRACTNO ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 运费协议号不能为空" ; }
if ( string . IsNullOrEmpty ( headData . CARGOID ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 货物标识不能为空" ; }
if ( headData . CARGOID = = "D" | | headData . SERVICE = = "DOOR-DOOR" | | headData . SERVICE = = "DOOR-CY" | | headData . SERVICE = = "CY-DOOR" )
{
if ( headData . CARRIERID ! = "YML" )
{
if ( string . IsNullOrEmpty ( headData . EDIATTN ) )
{ error = error + "<br />EDI信息联系人不能为空" ; }
if ( string . IsNullOrEmpty ( headData . EDIATTNTEL ) )
{ error = error + "<br />EDI信息联系人电话不能为空" ; }
if ( string . IsNullOrEmpty ( headData . EDIATTNEMAIL ) )
{ error = error + "<br />EDI信息联系人邮箱不能为空" ; }
}
}
if ( InttrEdi . filetype = = "E" )
{
if ( string . IsNullOrEmpty ( headData . VESSEL ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 船名不能为空" ; }
if ( string . IsNullOrEmpty ( headData . VOYNO ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 航次不能为空" ; }
}
if ( InttrEdi . filetype = = "E" )
{
if ( headData . SIREMARK . IndexOf ( "PLEASE BOOK OCEAN CARRIER" ) > - 1 | | headData . SIREMARK . ToString ( ) . Trim ( ) = = "" )
{
if ( headData . CARRIEREDICODE = = "COSU" )
{
error = error + "<br />提单号:" + headData . MBLNO + " 请在SI备注中输入:COSCO 销售的营销代码(此代码船公司会直接提供)" ;
}
else
{
//if (carrier != "YML")
//error = error + "<br />提单号:" + bill.MBLNO + " EDI备注中不能为空";
}
}
else
{
if ( StringIsChinese ( headData . SIREMARK ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " SI备注中含有中文或双字节字符" ;
}
}
}
else
{
if ( ! string . IsNullOrWhiteSpace ( headData . EDIREMARK ) & & ( headData . EDIREMARK . IndexOf ( "PLEASE BOOK OCEAN CARRIER" ) > - 1 | | headData . EDIREMARK . ToString ( ) . Trim ( ) = = "" ) )
{
if ( headData . CARRIEREDICODE = = "COSU" )
{
error = error + "<br />提单号:" + headData . MBLNO + " 请在EDI备注中输入:COSCO 销售的营销代码(此代码船公司会直接提供)" ;
}
else
{
//if (carrier != "YML")
//error = error + "<br />提单号:" + bill.MBLNO + " EDI备注中不能为空";
}
}
else
{
if ( ! string . IsNullOrWhiteSpace ( headData . EDIREMARK ) & & StringIsChinese ( headData . EDIREMARK ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " EDI备注中含有中文或双字节字符" ;
}
}
}
//if (string.IsNullOrEmpty(headData.CARRIER))
//{ error = error + "<br />提单号:" + headData.MBLNO + " 船公司不能为空"; }
if ( string . IsNullOrEmpty ( headData . CARRIEREDICODE ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 船公司EDI代码不能为空" ; }
//CMA 订舱时,发货人可以不填
if ( InttrEdi . filetype . Equals ( "B" , StringComparison . OrdinalIgnoreCase ) & & headData . CARRIEREDICODE . Equals ( "CMDU" , StringComparison . OrdinalIgnoreCase ) )
{
if ( ! string . IsNullOrWhiteSpace ( headData . SHIPPER ) )
{
if ( StringIsChinese ( headData . SHIPPER ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " 发货人含有中文或双字节字符" ;
}
else
{
if ( headData . CARRIEREDICODE = = "HLCU" )
{
error + = formatlengthError ( "txt" , headData . SHIPPER , 35 , headData . MBLNO , "发货人" , 6 , "-" , false ) ;
}
else
{
error + = formatlengthError ( "txt" , headData . SHIPPER , 35 , headData . MBLNO , "发货人" , 6 , "*" , false ) ;
}
}
}
}
else
{
if ( string . IsNullOrEmpty ( headData . SHIPPER ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " 发货人不能为空" ;
}
else
{
if ( StringIsChinese ( headData . SHIPPER ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " 发货人含有中文或双字节字符" ;
}
else
{
if ( headData . CARRIEREDICODE = = "HLCU" )
{
error + = formatlengthError ( "txt" , headData . SHIPPER , 35 , headData . MBLNO , "发货人" , 6 , "-" , false ) ;
}
else
{
error + = formatlengthError ( "txt" , headData . SHIPPER , 35 , headData . MBLNO , "发货人" , 6 , "*" , false ) ;
}
}
}
}
//}
//CMA 订舱时,收货人可以不填
if ( InttrEdi . filetype . Equals ( "B" , StringComparison . OrdinalIgnoreCase ) & & headData . CARRIEREDICODE . Equals ( "CMDU" , StringComparison . OrdinalIgnoreCase ) )
{
if ( ! string . IsNullOrWhiteSpace ( headData . CONSIGNEE ) )
{
if ( StringIsChinese ( headData . CONSIGNEE ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " 收货人含有中文或双字节字符" ;
}
else
{
if ( headData . CARRIEREDICODE = = "HLCU" )
{
error + = formatlengthError ( "txt" , headData . CONSIGNEE , 35 , headData . MBLNO , "收货人" , 6 , "--" , false ) ;
}
else
{
error + = formatlengthError ( "txt" , headData . CONSIGNEE , 35 , headData . MBLNO , "收货人" , 6 , "**" , false ) ;
}
}
}
}
else
{
if ( string . IsNullOrEmpty ( headData . CONSIGNEE ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " 收货人不能为空" ;
}
else
{
if ( StringIsChinese ( headData . CONSIGNEE ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " 收货人含有中文或双字节字符" ;
}
else
{
if ( headData . CARRIEREDICODE = = "HLCU" )
{
error + = formatlengthError ( "txt" , headData . CONSIGNEE , 35 , headData . MBLNO , "收货人" , 6 , "--" , false ) ;
}
else
{
error + = formatlengthError ( "txt" , headData . CONSIGNEE , 35 , headData . MBLNO , "收货人" , 6 , "**" , false ) ;
}
}
}
}
if ( headData . SERVICE = = "CY-DOOR" )
{
if ( string . IsNullOrEmpty ( headData . CONSIGNEEDOORADDR ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " 运输条款为:CY-DOOR, EDI信息中的DOOR地址不能为空" ;
}
else
{
if ( StringIsChinese ( headData . CONSIGNEEDOORADDR ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " DOOR地址含有中文或双字节字符" ;
}
}
}
if ( headData . SERVICE = = "DOOR-CY" )
{
if ( string . IsNullOrEmpty ( headData . SHIPPERDOORADDR ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " 运输条款为:DOOR-CY, EDI信息中的联系人地址不能为空" ;
}
else
{
if ( StringIsChinese ( headData . SHIPPERDOORADDR ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " 联系人地址含有中文或双字节字符" ;
}
}
}
//CMA 订舱时,通知人可以不填
if ( InttrEdi . filetype . Equals ( "B" , StringComparison . OrdinalIgnoreCase ) & & headData . CARRIEREDICODE . Equals ( "CMDU" , StringComparison . OrdinalIgnoreCase ) )
{
if ( ! string . IsNullOrWhiteSpace ( headData . NOTIFYPARTY ) )
{
if ( StringIsChinese ( headData . NOTIFYPARTY ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " 通知人含有中文或双字节字符" ;
}
else
{
if ( headData . CARRIEREDICODE = = "HLCU" )
{
error + = formatlengthError ( "txt" , headData . NOTIFYPARTY , 35 , headData . MBLNO , "通知人" , 6 , "---" , false ) ;
}
else
{
error + = formatlengthError ( "txt" , headData . NOTIFYPARTY , 35 , headData . MBLNO , "通知人" , 6 , "***" , false ) ;
}
}
}
}
else
{
if ( string . IsNullOrEmpty ( headData . NOTIFYPARTY ) )
{
//CMA 订舱时可以不填通知人
if ( headData . CARRIEREDICODE ! = "CMDU" )
{
error = error + "<br />提单号:" + headData . MBLNO + " 通知人不能为空" ;
}
}
else
{
if ( StringIsChinese ( headData . NOTIFYPARTY ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " 通知人含有中文或双字节字符" ;
}
else
{
if ( headData . CARRIEREDICODE = = "HLCU" )
{
error + = formatlengthError ( "txt" , headData . NOTIFYPARTY , 35 , headData . MBLNO , "通知人" , 6 , "---" , false ) ;
}
else
{
error + = formatlengthError ( "txt" , headData . NOTIFYPARTY , 35 , headData . MBLNO , "通知人" , 6 , "***" , false ) ;
}
}
}
}
if ( ! string . IsNullOrEmpty ( headData . NOTIFYPARTY2 ) )
{
error + = formatlengthError ( "txt" , headData . NOTIFYPARTY2 , 35 , headData . MBLNO , "第二通知人" , 5 , "" , false ) ;
}
if ( string . IsNullOrEmpty ( headData . MARKS ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " 唛头不能为空" ;
}
else
{
if ( StringIsChinese ( headData . MARKS ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " 唛头含有中文或双字节字符" ;
}
else
{
error + = formatlengthError ( "txt" , headData . MARKS , 35 , headData . MBLNO , "唛头" , 0 , "" , false ) ;
}
}
if ( string . IsNullOrEmpty ( headData . DESCRIPTION ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " 货物描述不能为空" ;
}
else
{
if ( StringIsChinese ( headData . DESCRIPTION ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " 货物描述含有中文或双字节字符" ;
}
else
{
//error += formatlengthError("txt", bill.DESCRIPTION, 35, bill.MBLNO, "货物描述", 0, "");
}
}
if ( string . IsNullOrEmpty ( headData . PORTLOADID ) | | headData . PORTLOADID . Length ! = 5 )
{ error = error + "<br />提单号:" + headData . MBLNO + " 装货港代码不能为空或录入不正确(必须是5位代码)" ; }
if ( string . IsNullOrEmpty ( headData . PORTLOAD ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 装货港不能为空" ; }
if ( string . IsNullOrEmpty ( headData . ETD ) )
{
error = error + "<br />提单号:" + headData . MBLNO + " 开船日期不能为空" ;
return error ;
}
if ( string . IsNullOrEmpty ( headData . PORTDISCHARGEID ) | | headData . PORTDISCHARGEID . Length ! = 5 )
{ error = error + "<br />提单号:" + headData . MBLNO + " 卸货港代码不能为空或录入不正确(必须是5位代码)" ; }
if ( string . IsNullOrEmpty ( headData . PORTDISCHARGE ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 卸货港不能为空" ; }
if ( string . IsNullOrEmpty ( headData . DESTINATION ) )
{
if ( string . IsNullOrEmpty ( headData . DESTINATIONID ) | | headData . DESTINATIONID . Length ! = 5 )
{ error = error + "<br />提单号:" + headData . MBLNO + " 目的地代码不能为空或录入不正确(必须是5位代码)" ; }
}
if ( string . IsNullOrEmpty ( headData . KINDPKGS_EDI_CODE ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 包装EDI代码不能为空" ; }
//CMA 订舱可以不填件数
if ( ! ( InttrEdi . filetype . Equals ( "B" , StringComparison . OrdinalIgnoreCase ) & & headData . CARRIEREDICODE . Equals ( "CMDU" , StringComparison . OrdinalIgnoreCase ) ) )
{
if ( headData . PKGS = = 0 )
{ error = error + "<br />提单号:" + headData . MBLNO + " 件数不能为0" ; }
}
if ( headData . KGS = = 0 )
{ error = error + "<br />提单号:" + headData . MBLNO + " 毛重不能为0" ; }
//CMA 订舱可以不填尺码
if ( ! ( InttrEdi . filetype . Equals ( "B" , StringComparison . OrdinalIgnoreCase ) & & headData . CARRIEREDICODE . Equals ( "CMDU" , StringComparison . OrdinalIgnoreCase ) ) )
{
if ( headData . CBM = = 0 )
{ error = error + "<br />提单号:" + headData . MBLNO + " 尺码不能为0" ; }
}
if ( headData . CARGOID = = "D" )
{
if ( string . IsNullOrEmpty ( headData . DCLASS ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 危险品分类不能为空" ; }
if ( string . IsNullOrEmpty ( headData . DUNNO ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 危险品编号不能为空" ; }
}
if ( headData . CARGOID = = "R" )
{
if ( headData . TEMPSET = = null | | headData . TEMPSET = = "" )
{ error = error + "<br />提单号:" + headData . MBLNO + " 设置温度不能为空" ; }
if ( headData . REEFERF = = null | | headData . REEFERF = = "" )
{ error = error + "<br />提单号:" + headData . MBLNO + " 通风度不能为空" ; }
}
if ( headData . BLFRT ! = null & & headData . BLFRT . IndexOf ( "PREPAID" ) > = 0 )
{
if ( string . IsNullOrEmpty ( headData . PREPARDAT ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 预付地点不能为空" ; }
if ( string . IsNullOrEmpty ( headData . PREPARDATID ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 预付地点EDI代码不能为空" ; }
}
else if ( headData . BLFRT ! = null & & headData . BLFRT . IndexOf ( "COLLECT" ) > = 0 )
{
if ( string . IsNullOrEmpty ( headData . PAYABLEAT ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 到付地点不能为空" ; }
if ( string . IsNullOrEmpty ( headData . PAYABLEATID ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 到付地点EDI代码不能为空" ; }
}
if ( InttrEdi . filetype = = "E" )
{
if ( string . IsNullOrEmpty ( headData . ISSUEPLACEID ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 签单地点或到签单地点EDI代码不能为空" ; }
}
var ctnlist = headData . CTNLIST ;
if ( ctnlist . Count = = 0 ) { error = error + "<br />提单号:" + headData . MBLNO + " 集装箱信息不能为空" ; } ;
if ( InttrEdi . filetype = = "E" )
{
#region 集装箱判断检查
if ( ctnlist . Count ! = 0 )
{
Decimal dlPKGS = 0 ;
Decimal dlKGS = 0 ;
Decimal dlCBM = 0 ;
foreach ( var ctn in ctnlist )
{
if ( string . IsNullOrEmpty ( ctn . CTNALLCODE ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 集装箱箱型EDI代码不能为空" ; }
if ( string . IsNullOrEmpty ( ctn . CNTRNO ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 箱号不能为空" ; }
if ( string . IsNullOrEmpty ( ctn . SEALNO ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 封号不能为空" ; }
if ( headData . BYCOUNTRY = = "BRAZIL" )
{
// 20240402 if (string.IsNullOrEmpty(ctn.TAREWEIGHT) || Convert.ToDecimal(ctn.TAREWEIGHT) == 0)
if ( ctn . TAREWEIGHT = = 0 )
{ error = error + "<br />提单号:" + headData . MBLNO + " 箱皮重不能为空" ; }
}
if ( ctn . KINDPKGS ! = headData . KINDPKGS )
{ error = error + "<br />提单号:" + headData . MBLNO + " 中的包装类型与集装箱的包装类型不同" ; }
dlPKGS + = Convert . ToDecimal ( ctn . PKGS ) ;
dlKGS + = Convert . ToDecimal ( ctn . KGS ) ;
dlCBM + = Convert . ToDecimal ( ctn . CBM ) ;
}
if ( dlPKGS ! = Convert . ToDecimal ( headData . PKGS ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 集装箱件数合计数必须等于委托单总件数" ; }
if ( dlKGS ! = Convert . ToDecimal ( headData . KGS ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 集装箱重量合计数必须等于委托单总重量数" ; }
if ( dlCBM ! = Convert . ToDecimal ( headData . CBM ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 集装箱尺码合计数必须等于委托单总尺码数" ; }
}
if ( headData . CTNGOODSLIST ! = null & & headData . CTNGOODSLIST . Count > 0 )
{
foreach ( var ctn in ctnlist )
{
var isfind = false ;
Int32 ctngoodssumpkgs = 0 ;
decimal ctngoodssumkgs = 0 ;
decimal ctngoodssumcbm = 0 ;
headData . CTNGOODSLIST . ForEach ( i = >
{
if ( i . CNTRNO = = ctn . CNTRNO )
{
isfind = true ;
ctngoodssumpkgs = ctngoodssumpkgs + i . PKGS ;
ctngoodssumkgs = ctngoodssumkgs + i . KGS ;
ctngoodssumcbm = ctngoodssumcbm + i . CBM ;
}
} ) ;
if ( ! isfind )
{
error = error + "<br />提单号:" + headData . MBLNO + "的“" + ctn . CNTRNO + "”未添加分箱明细!" ;
}
else
{
if ( ctngoodssumpkgs ! = Convert . ToDecimal ( ctn . PKGS ) )
{ error = error + "<br />提单号:" + headData . MBLNO + ",箱号:" + ctn . CNTRNO + " 分箱明细件数合计数不等于集装箱件数" ; }
if ( ctngoodssumkgs ! = Convert . ToDecimal ( ctn . KGS ) )
{ error = error + "<br />提单号:" + headData . MBLNO + ",箱号:" + ctn . CNTRNO + " 分箱明细毛重合计数不等于集装箱毛重" ; }
if ( ctngoodssumcbm ! = Convert . ToDecimal ( ctn . CBM ) )
{ error = error + "<br />提单号:" + headData . MBLNO + ",箱号:" + ctn . CNTRNO + " 分箱明细尺码合计数不等于集装箱毛重" ; }
}
}
foreach ( var ctngood in headData . CTNGOODSLIST )
{
if ( string . IsNullOrEmpty ( ctngood . KINDPKGS ) )
{ error = error + "<br />提单号:" + headData . MBLNO + ",箱号:" + ctngood . CNTRNO + " 中的分箱明细包装类型不能为空" ; }
if ( string . IsNullOrEmpty ( ctngood . DESCRIPTION ) )
{ error = error + "<br />提单号:" + headData . MBLNO + ",箱号:" + ctngood . CNTRNO + " 中的分箱货物描述不能为空" ; }
else
{
error + = formatlengthError ( "txt" , ctngood . DESCRIPTION , 70 , headData . MBLNO , "的“" + ctngood . CNTRNO + "”箱号的分箱货物描述" , 0 , "" , false ) ;
}
//if (string.IsNullOrEmpty(ctngood.HSCODE))
//{ error = error + "<br />提单号:" + headData.MBLNO + ",箱号:" + ctngood.CNTRNO + " 中的分箱HS编码不能为空"; }
if ( string . IsNullOrEmpty ( ctngood . KINDPKGS_EDI_CODE ) )
{ error = error + "<br />提单号:" + headData . MBLNO + ",箱号:" + ctngood . CNTRNO + " 中的分箱明细包装类型代码不能为空" ; }
}
}
# endregion
if ( headData . BYCOUNTRY = = "USA" )
{
if ( string . IsNullOrEmpty ( headData . CONSIGNEEPOSTCODE ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 收货人邮编不能为空" ; }
if ( string . IsNullOrEmpty ( headData . NOTIFYPARTYPOSTCODE ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 通知人邮编不能为空" ; }
}
else if ( headData . BYCOUNTRY = = "CANADA" )
{
if ( string . IsNullOrEmpty ( headData . CONSIGNEEPOSTCODE ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 收货人邮编不能为空" ; }
}
else if ( headData . BYCOUNTRY = = "BRAZIL" )
{
if ( string . IsNullOrEmpty ( headData . CONSIGNEECOUNTRY ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 收货人国家代码不能为空" ; }
if ( string . IsNullOrEmpty ( headData . CONSIGNEETAXNO ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 收货人税号不能为空" ; }
if ( string . IsNullOrEmpty ( headData . NOTIFYPARTYCOUNTRY ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 通知人国家代码不能为空" ; }
if ( string . IsNullOrEmpty ( headData . NOTIFYPARTYTAXNO ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 通知人税号不能为空" ; }
if ( string . IsNullOrEmpty ( headData . GOODSNCM ) )
{ error = error + "<br />提单号:" + headData . MBLNO + " 货物NCM编码不能为空" ; }
}
}
}
return error ;
}
# endregion
#region 订舱
public static EdiDataResult CreateEdiINTTR ( EDIBaseModel InttrEdi )
{
var result = new EdiDataResult { Succeeded = false } ;
string filename = InttrEdi . filerpath + "\\" + InttrEdi . BSLIST [ 0 ] . MBLNO + DateTime . Now . ToString ( "yyyyMMddHHmmssfff" ) + ".txt" ;
//如果是部署linux需要修改路径
if ( RuntimeInformation . IsOSPlatform ( OSPlatform . Linux ) )
filename = filename . Replace ( "\\" , "/" ) ;
//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 ;
var bsno = "" ;
foreach ( var bill in InttrEdi . BSLIST )
{
bsno = bill . ORDERNO ;
r . WriteLine ( "UNB+UNOC:2+" + InttrEdi . SENDCODE + "SO:ZZZ+" + InttrEdi . RECEIVECODE + ":ZZZ+" + DateTime . Now . ToString ( "yyMMdd:HHmm" ) + "+" + bill . ORDERNO + "'" ) ;
r . WriteLine ( "UNH+" + bill . ORDERNO + "+IFTMIN:D:99B:UN'" ) ;
icount = icount + 2 ;
if ( bill . CARRIEREDICODE = = "HLCU" | | bill . CARRIEREDICODE = = "CMDU" | | bill . CARRIEREDICODE = = "CHNL" | | ( bill . CARRIEREDICODE = = "MAEU" & & string . IsNullOrWhiteSpace ( bill . MBLNO ) ) )
{
if ( InttrEdi . filerole = = "9" )
r . WriteLine ( "BGM+335+" + bill . ORDERNO + "SO+9'" ) ;
else if ( InttrEdi . filerole = = "1" )
r . WriteLine ( "BGM+335+" + bill . ORDERNO + "SO+1'" ) ;
else
r . WriteLine ( "BGM+335+" + bill . ORDERNO + "SO+5'" ) ;
}
else
{
if ( InttrEdi . filerole = = "9" )
r . WriteLine ( "BGM+335+" + bill . MBLNO + "SO+9'" ) ;
else if ( InttrEdi . filerole = = "1" )
r . WriteLine ( "BGM+335+" + bill . ORDERNO + "SO+1'" ) ;
else
r . WriteLine ( "BGM+335+" + bill . MBLNO + "SO+5'" ) ;
}
r . WriteLine ( "DTM+137:" + DateTime . Now . ToString ( "yyyyMMddHHmm" ) + ":203'" ) ;
icount = icount + 2 ;
if ( bill . SERVICEEDICODE . ToUpper ( ) = = "DOOR-DOOR" )
{
r . WriteLine ( "TSR+27+2'" ) ;
}
else if ( bill . SERVICEEDICODE . ToUpper ( ) = = "DOOR-CY" )
{
r . WriteLine ( "TSR+28+2'" ) ;
}
else if ( bill . SERVICEEDICODE . ToUpper ( ) = = "CY-DOOR" )
{
r . WriteLine ( "TSR+29+2'" ) ;
}
else
{
r . WriteLine ( "TSR+30+2'" ) ;
}
//2024-05-22 少了一行计数追加上 JHQ
//icount = icount + 1;
var str_pay = "" ;
if ( bill . BLFRT . IndexOf ( "PREPAID" ) > = 0 )
str_pay = bill . PREPARDAT ;
if ( bill . BLFRT . IndexOf ( "COLLECT" ) > = 0 )
str_pay = bill . PAYABLEAT ;
/ * 2024 - 04 - 08 JHQ 参 考 东 胜 去 掉 了
if ( bill . CARRIEREDICODE = = "HLCU" )
{
r . WriteLine ( "FTX+AAI+++" + bill . BLFRT + " Payable at " + str_pay + " " + bill . SERVICE + " " + bill . CONTRACTNO + " "
+ bill . PKGS . ToString ( ) + bill . KINDPKGS + " " + formatEdiStr ( "txt" , bill . EDIREMARK . Replace ( "\r\n" , " " ) . Replace ( "\n" , " " ) . Replace ( "\r" , " " ) ) + "'" ) ;
}
else if ( bill . CARRIEREDICODE = = "COSU" )
{
r . WriteLine ( "FTX+AAI+++" + bill . BLFRT + " Payable at " + str_pay + " " + formatEdiStr ( "txt" , bill . EDIREMARK . Replace ( "\r\n" , " " ) . Replace ( "\n" , " " ) . Replace ( "\r" , " " ) ) + "'" ) ;
}
else
{
r . WriteLine ( "FTX+AAI+++" + bill . BLFRT + " Payable at " + str_pay + " " + bill . SERVICE + " "
+ bill . PKGS . ToString ( ) + bill . KINDPKGS + " " + formatEdiStr ( "txt" , bill . EDIREMARK . Replace ( "\r\n" , " " ) . Replace ( "\n" , " " ) . Replace ( "\r" , " " ) ) + "'" ) ;
}
icount = icount + 2 ;
* /
icount = icount + 1 ;
var Shipping = "" ;
Shipping = formatEdiStr ( "txt" , bill . EDIREMARK ) ;
Shipping = Shipping . Replace ( "\n" , "\\" ) ;
Shipping = Shipping . Replace ( "\r" , " " ) ;
string [ ] EdiRemarkList = Shipping . Split ( '\\' ) ;
if ( EdiRemarkList . Length ! = 0 )
{
for ( var i = 0 ; i < EdiRemarkList . Length ; i + + )
{
r . WriteLine ( "FTX+AAI+++" + EdiRemarkList [ i ] + "'" ) ;
icount = icount + 1 ;
}
}
/*件重尺*/
r . WriteLine ( "CNT+7:" + Math . Round ( bill . KGS , 3 ) + ":KGM'" ) ; //按照四舍五入的国际标准
r . WriteLine ( "CNT+11:" + bill . PKGS . ToString ( ) + "'" ) ;
r . WriteLine ( "CNT+15:" + Math . Round ( bill . CBM , 3 ) + ":MTQ'" ) ;
icount = icount + 3 ;
//2024-04-08 这里看2.0文档显示不使用 CNT
if ( bill . CARRIEREDICODE = = "UASC" )
{
if ( bill . CTNLIST . Count > 0 )
{
var ctnnum = 0 ;
foreach ( var ctn in bill . CTNLIST )
{
ctnnum = ctnnum + ctn . CTNNUM ;
}
r . WriteLine ( "CNT+16:" + ctnnum . ToString ( ) + "'" ) ;
icount = icount + 1 ;
}
}
if ( bill . BLFRT = = "FREIGHT COLLECT" )
{
if ( ! string . IsNullOrWhiteSpace ( bill . PAYABLEAT ) )
{
r . WriteLine ( "LOC+57+" + bill . PREPARDATID + "::6:" + bill . PAYABLEAT + "'" ) ;
icount = icount + 1 ;
}
}
else
{
r . WriteLine ( "LOC+57+" + bill . PREPARDATID + "::6:" + bill . PREPARDAT + "'" ) ;
icount = icount + 1 ;
}
if ( bill . CARRIEREDICODE = = "ANNU" | | bill . CARRIEREDICODE = = "CMDU" | | bill . CARRIEREDICODE = = "CHNL" )
{
r . WriteLine ( "RFF+FF:" + bill . ORDERNO . Trim ( ) + "'" ) ;
icount = icount + 1 ;
}
else
{
if ( InttrEdi . UseForWarderCode )
{
r . WriteLine ( "RFF+FF:" + bill . ORDERNO . Trim ( ) + "'" ) ;
r . WriteLine ( "RFF+ON:" + bill . ORDERNO . Trim ( ) + "'" ) ;
icount = icount + 2 ;
}
else
{
if ( bill . ORDERNO . Trim ( ) ! = "" )
{
r . WriteLine ( "RFF+FF:" + bill . ORDERNO . Trim ( ) + "'" ) ;
r . WriteLine ( "RFF+ON:" + bill . ORDERNO . Trim ( ) + "'" ) ;
icount = icount + 2 ;
}
}
}
if ( bill . CARRIEREDICODE ! = "COSU" & & ! string . IsNullOrWhiteSpace ( bill . MBLNO ) )
{
if ( bill . CARRIEREDICODE = = "HLCU" )
{
//r.WriteLine("RFF+ON:" + bill.CUSTNO + "'");
r . WriteLine ( "RFF+BM:" + bill . MBLNO + "'" ) ;
}
else
{
r . WriteLine ( "RFF+BN:" + bill . MBLNO + "'" ) ;
r . WriteLine ( "RFF+BM:" + bill . MBLNO + "'" ) ;
}
icount = icount + 2 ;
}
r . WriteLine ( "RFF+CT:" + bill . CONTRACTNO + "'" ) ;
if ( bill . BLFRT . IndexOf ( "PREPAID" ) > = 0 )
r . WriteLine ( "CPI+4++P'" ) ;
else if ( bill . BLFRT . IndexOf ( "COLLECT" ) > = 0 )
r . WriteLine ( "CPI+4++C'" ) ;
else
r . WriteLine ( "CPI+4++B'" ) ;
icount = icount + 2 ;
var voyno = "" ;
if ( ! string . IsNullOrEmpty ( bill . NVOYNO ) ) voyno = bill . NVOYNO ; else voyno = bill . VOYNO ;
if ( voyno . IndexOf ( "." ) > = 0 )
voyno = voyno . Substring ( voyno . IndexOf ( "." ) + 1 , voyno . Length - voyno . IndexOf ( "." ) - 1 ) ;
r . WriteLine ( "TDT+20+" + voyno + "+1++" + bill . CARRIEREDICODE + "+++:::" + bill . VESSEL + "'" ) ;
r . WriteLine ( "LOC+9+" + bill . PORTLOADID + ":139:6:" + bill . PORTLOAD + "'" ) ;
r . WriteLine ( "DTM+133:" + Convert . ToDateTime ( bill . ETD ) . ToString ( "yyyyMMdd" ) + ":102'" ) ; //yyyyMMddHHmm
if ( ! string . IsNullOrEmpty ( bill . PLACERECEIPTID ) )
r . WriteLine ( "LOC+88+" + bill . PLACERECEIPTID + ":139:6:" + bill . PLACERECEIPT + "'" ) ;
else
r . WriteLine ( "LOC+88+" + bill . PORTLOADID + ":139:6:" + bill . PORTLOAD + "'" ) ;
r . WriteLine ( "LOC+11+" + bill . PORTDISCHARGEID + ":139:6:" + bill . PORTDISCHARGE + "'" ) ;
icount = icount + 5 ;
if ( ! string . IsNullOrWhiteSpace ( bill . DESTINATIONID ) )
{
r . WriteLine ( "LOC+7+" + bill . DESTINATIONID + ":139:6:" + bill . DESTINATION + "'" ) ;
icount = icount + 1 ;
}
//处理发货人
Shipping = string . Empty ;
var DescriptionShipper = string . Empty ;
Shipping = formatEdiStr ( "txt" , bill . SHIPPER ) ;
List < System . String > ShippingList = formatlengthStr ( Shipping , 35 ) ;
if ( ShippingList . Count ! = 0 & & Shipping . Length > 0 )
{
for ( var i = 0 ; i < ShippingList . Count ; i + + )
{
if ( i = = 0 ) Shipping = "NAD+CZ+++" + 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 > 34 )
{
Shipping = Shipping + ":" + ShippingList [ i ] . Substring ( 0 , 34 ) ;
DescriptionShipper = ShippingList [ i ] . Substring ( 34 ) ;
}
else
Shipping = Shipping + ":" + ShippingList [ i ] ;
if ( bill . CARRIEREDICODE = = "HLCU" )
{
Shipping = Shipping + "-" ;
DescriptionShipper = "-" + DescriptionShipper ;
}
else
{
Shipping = Shipping + "*" ;
DescriptionShipper = "*" + DescriptionShipper ;
}
}
else if ( i > 4 )
{
DescriptionShipper = DescriptionShipper + " " + ShippingList [ i ] ;
}
}
else
if ( i = = 4 ) Shipping = Shipping + ":" + ShippingList [ i ] ;
}
}
r . WriteLine ( Shipping + "'" ) ;
icount = icount + 1 ;
Shipping = formatEdiStr ( "txt" , bill . CONSIGNEE ) ;
ShippingList = formatlengthStr ( Shipping , 35 ) ;
var DescriptionConsignee = "" ;
if ( ShippingList . Count ! = 0 & & Shipping . Length > 0 )
{
for ( var i = 0 ; i < ShippingList . Count ; i + + )
{
if ( i = = 0 ) Shipping = "NAD+CN+++" + 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 > 33 )
{
Shipping = Shipping + ":" + ShippingList [ i ] . Substring ( 0 , 33 ) ;
DescriptionConsignee = ShippingList [ i ] . Substring ( 33 ) ;
}
else
Shipping = Shipping + ":" + ShippingList [ i ] ;
if ( bill . CARRIEREDICODE = = "HLCU" )
{
Shipping = Shipping + "--" ;
DescriptionConsignee = "--" + DescriptionConsignee ;
}
else
{
Shipping = Shipping + "**" ;
DescriptionConsignee = "**" + DescriptionConsignee ;
}
}
else if ( i > 4 )
{
DescriptionConsignee = DescriptionConsignee + " " + ShippingList [ i ] ;
}
}
else
if ( i = = 4 ) Shipping = Shipping + ":" + ShippingList [ i ] ;
}
}
if ( bill . BYCOUNTRY = = "USA" )
{
Shipping = Shipping + "+++" + bill . CONSIGNEEPOSTCODE ;
r . WriteLine ( Shipping + "'" ) ;
}
else if ( bill . BYCOUNTRY = = "CANADA" )
{
Shipping = Shipping + "+++" + bill . CONSIGNEEPOSTCODE + "+CA" ;
r . WriteLine ( Shipping + "'" ) ;
}
else if ( bill . BYCOUNTRY = = "BRAZIL" )
{
Shipping = Shipping + "++++" + bill . CONSIGNEECOUNTRY ;
r . WriteLine ( Shipping + "'" ) ;
r . WriteLine ( "RFF+GN:" + bill . CONSIGNEETAXNO + "'" ) ;
icount = icount + 1 ;
}
else r . WriteLine ( Shipping + "'" ) ;
icount = icount + 1 ;
Shipping = formatEdiStr ( "txt" , bill . NOTIFYPARTY ) ;
ShippingList = formatlengthStr ( Shipping , 35 ) ;
var DescriptionNotifyparty = "" ;
if ( ShippingList . Count ! = 0 & & Shipping . Length > 0 )
{
for ( var i = 0 ; i < ShippingList . Count ; i + + )
{
if ( i = = 0 ) Shipping = "NAD+NI+++" + 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 > 32 )
{
Shipping = Shipping + ":" + ShippingList [ i ] . Substring ( 0 , 32 ) ;
DescriptionNotifyparty = ShippingList [ i ] . Substring ( 32 ) ;
}
else
Shipping = Shipping + ":" + ShippingList [ i ] ;
if ( bill . CARRIEREDICODE = = "HLCU" )
{
Shipping = Shipping + "---" ;
DescriptionNotifyparty = "---" + DescriptionNotifyparty ;
}
else
{
Shipping = Shipping + "***" ;
DescriptionNotifyparty = "***" + DescriptionNotifyparty ;
}
}
else if ( i > 4 )
{
DescriptionNotifyparty = DescriptionNotifyparty + " " + ShippingList [ i ] ;
}
}
else
if ( i = = 4 ) Shipping = Shipping + ":" + ShippingList [ i ] ;
}
}
if ( bill . BYCOUNTRY = = "USA" )
{
Shipping = Shipping + "+++" + bill . NOTIFYPARTYPOSTCODE ;
r . WriteLine ( Shipping + "'" ) ;
}
else if ( bill . BYCOUNTRY = = "BRAZIL" )
{
if ( ! string . IsNullOrWhiteSpace ( bill . NOTIFYPARTYCOUNTRY ) )
Shipping = Shipping + "++++" + bill . NOTIFYPARTYCOUNTRY ;
r . WriteLine ( Shipping + "'" ) ;
if ( ! string . IsNullOrWhiteSpace ( bill . NOTIFYPARTYTAXNO ) )
{
r . WriteLine ( "RFF+GN:" + bill . NOTIFYPARTYTAXNO + "'" ) ;
icount = icount + 1 ;
}
}
else r . WriteLine ( Shipping + "'" ) ;
icount = icount + 1 ;
r . WriteLine ( "NAD+CA+" + bill . CARRIEREDICODE + ":160:86++" + GetCarrierName ( bill . CARRIEREDICODE ) + "'" ) ;
icount = icount + 1 ;
if ( bill . SERVICEEDICODE = = "DOOR-DOOR" )
{
Shipping = formatEdiStr ( "txt" , bill . SHIPPER ) ;
ShippingList = formatlengthStr ( Shipping , 35 ) ;
if ( ShippingList . Count ! = 0 & & Shipping . Length > 0 )
{
for ( var i = 0 ; i < ShippingList . Count ; i + + )
{
if ( i = = 0 ) Shipping = "NAD+SF+++" + ShippingList [ 0 ] + "+" ;
if ( i = = 1 ) Shipping = Shipping + ShippingList [ i ] ;
if ( i > = 2 ) Shipping = Shipping + ":" + ShippingList [ i ] ;
}
}
r . WriteLine ( Shipping + "'" ) ;
r . WriteLine ( "CTA+IC+:" + bill . EDIATTN + "'" ) ;
r . WriteLine ( "COM+" + bill . EDIATTNTEL + ":TE'" ) ;
r . WriteLine ( "COM+" + bill . EDIATTNEMAIL + ":EM'" ) ;
icount = icount + 4 ;
Shipping = formatEdiStr ( "txt" , bill . CONSIGNEE ) ;
if ( Shipping . ToUpper ( ) . IndexOf ( "TO ORDER" ) > = 0 | | Shipping . ToUpper ( ) . IndexOf ( "SAME AS" ) > = 0 )
Shipping = formatEdiStr ( "txt" , bill . NOTIFYPARTY ) ;
ShippingList = formatlengthStr ( Shipping , 35 ) ;
if ( ShippingList . Count ! = 0 & & Shipping . Length > 0 )
{
for ( var i = 0 ; i < ShippingList . Count ; i + + )
{
if ( i = = 0 ) Shipping = "NAD+ST+++" + ShippingList [ 0 ] + "+" ;
if ( i = = 1 ) Shipping = Shipping + ShippingList [ i ] ;
if ( i > = 2 ) Shipping = Shipping + ":" + ShippingList [ i ] ;
}
}
r . WriteLine ( Shipping + "'" ) ;
r . WriteLine ( "CTA+IC+:" + bill . EDIATTN + "'" ) ;
r . WriteLine ( "COM+" + bill . EDIATTNTEL + ":TE'" ) ;
r . WriteLine ( "COM+" + bill . EDIATTNEMAIL + ":EM'" ) ;
icount = icount + 4 ;
}
if ( bill . SERVICE = = "DOOR-CY" )
{
Shipping = formatEdiStr ( "txt" , bill . SHIPPERDOORADDR ) ;
ShippingList = formatlengthStr ( Shipping , 35 ) ;
if ( ShippingList . Count ! = 0 & & Shipping . Length > 0 )
{
for ( var i = 0 ; i < ShippingList . Count ; i + + )
{
if ( i = = 0 ) Shipping = "NAD+SF+++" + ShippingList [ 0 ] + "+" ;
if ( i = = 1 ) Shipping = Shipping + ShippingList [ i ] ;
if ( i > = 2 ) Shipping = Shipping + ":" + ShippingList [ i ] ;
}
}
r . WriteLine ( Shipping + "'" ) ;
r . WriteLine ( "CTA+IC+:" + bill . EDIATTN + "'" ) ;
r . WriteLine ( "COM+" + bill . EDIATTNTEL + ":TE'" ) ;
r . WriteLine ( "COM+" + bill . EDIATTNEMAIL + ":EM'" ) ;
icount = icount + 4 ;
}
if ( bill . SERVICE = = "CY-DOOR" )
{
Shipping = formatEdiStr ( "txt" , bill . CONSIGNEEDOORADDR ) ;
ShippingList = formatlengthStr ( Shipping , 35 ) ;
if ( ShippingList . Count ! = 0 & & Shipping . Length > 0 )
{
for ( var i = 0 ; i < ShippingList . Count ; i + + )
{
if ( i = = 0 ) Shipping = "NAD+ST+++" + ShippingList [ 0 ] + "+" ;
if ( i = = 1 ) Shipping = Shipping + ShippingList [ i ] ;
if ( i > = 2 ) Shipping = Shipping + ":" + ShippingList [ i ] ;
}
}
r . WriteLine ( Shipping + "'" ) ;
r . WriteLine ( "CTA+IC+:" + bill . EDIATTN + "'" ) ;
r . WriteLine ( "COM+" + bill . EDIATTNTEL + ":TE'" ) ;
r . WriteLine ( "COM+" + bill . EDIATTNEMAIL + ":EM'" ) ;
icount = icount + 4 ;
}
if ( ! string . IsNullOrWhiteSpace ( bill . WEITUO ) )
{
if ( bill . WEITUO . Length > 35 )
r . WriteLine ( "NAD+FC+++" + formatEdiStr ( "txt" , bill . WEITUO . Substring ( 0 , 35 ) ) + "+" + formatEdiStr ( "txt" , bill . WEITUO . Substring ( 35 ) ) + "'" ) ;
else
r . WriteLine ( "NAD+FC+++" + formatEdiStr ( "txt" , bill . WEITUO ) + "'" ) ;
icount = icount + 1 ;
}
else
{
if ( InttrEdi . UseForWarderCode )
{
r . WriteLine ( "NAD+FW+" + InttrEdi . ForWarderCode + ":160:86++" + InttrEdi . ForWarderName + "'" ) ;
icount = icount + 1 ;
}
else
{
if ( InttrEdi . SENDNAME . Length > 35 )
r . WriteLine ( "NAD+FW+" + InttrEdi . SENDCODE + ":160:86++" + InttrEdi . SENDNAME . Substring ( 0 , 35 ) + "+" + InttrEdi . SENDNAME . Substring ( 35 ) + "'" ) ;
else
r . WriteLine ( "NAD+FW+" + InttrEdi . SENDCODE + ":160:86++" + InttrEdi . SENDNAME + "'" ) ;
icount = icount + 1 ;
}
}
if ( InttrEdi . SENDNAME . Length > 35 )
r . WriteLine ( "NAD+HI+" + InttrEdi . SENDCODE + ":160:86++" + InttrEdi . SENDNAME . Substring ( 0 , 35 ) + "+" + InttrEdi . SENDNAME . Substring ( 35 ) + "'" ) ;
else
r . WriteLine ( "NAD+HI+" + InttrEdi . SENDCODE + ":160:86++" + InttrEdi . SENDNAME + "'" ) ;
//r.WriteLine("CTA+IC+:" +billams.ATTN+ "'");
//r.WriteLine("COM+" +billams.ATTNTEL+ ":TE'");
//r.WriteLine("COM+" + billams.ATTNEMAIL + ":EM'");
r . WriteLine ( "CTA+IC+:" + bill . OpEName + "'" ) ;
r . WriteLine ( "COM+" + bill . OpTel + ":TE'" ) ;
r . WriteLine ( "COM+" + bill . OpEmail + ":EM'" ) ;
r . WriteLine ( "NAD+MR+++" + InttrEdi . SENDNAME + "'" ) ;
//r.WriteLine("CTA+NT+:" +billams.ATTN+ "'");
//r.WriteLine("COM+" + billams.ATTNEMAIL + ":EM'");
r . WriteLine ( "CTA+NT+:" + bill . OpEName + "'" ) ;
r . WriteLine ( "COM+" + bill . OpEmail + ":EM'" ) ;
r . WriteLine ( "GID+1+" + bill . PKGS . ToString ( ) + ":" + bill . KINDPKGS_EDI_CODE + "::6:" + bill . KINDPKGS + "'" ) ;
icount = icount + 8 ;
if ( ! string . IsNullOrWhiteSpace ( bill . HSCODE ) )
{
r . WriteLine ( "PIA+5+" + bill . HSCODE + ":HS'" ) ;
icount = icount + 1 ;
}
Shipping = formatEdiStr ( "txt" , bill . DESCRIPTION ) ;
Shipping = Shipping . Replace ( "\n" , "\\" ) ;
Shipping = Shipping . Replace ( "\r" , " " ) ;
string [ ] DescriptionList = Shipping . Split ( '\\' ) ;
if ( DescriptionList . Length ! = 0 )
{
for ( var i = 0 ; i < DescriptionList . Length ; i + + )
{
r . WriteLine ( "FTX+AAA+++" + DescriptionList [ i ] + "'" ) ;
icount = icount + 1 ;
}
}
if ( ! string . IsNullOrWhiteSpace ( DescriptionShipper ) )
{
r . WriteLine ( "FTX+AAA+++" + DescriptionShipper + "'" ) ;
icount = icount + 1 ;
}
if ( ! string . IsNullOrWhiteSpace ( DescriptionConsignee ) )
{
r . WriteLine ( "FTX+AAA+++" + DescriptionConsignee + "'" ) ;
icount = icount + 1 ;
}
if ( ! string . IsNullOrWhiteSpace ( DescriptionNotifyparty ) )
{
r . WriteLine ( "FTX+AAA+++" + DescriptionNotifyparty + "'" ) ;
icount = icount + 1 ;
}
r . WriteLine ( "MEA+AAE+WT+KGM:" + Math . Round ( bill . KGS , 3 ) + "'" ) ;
r . WriteLine ( "MEA+AAE+AAW+MTQ:" + Math . Round ( bill . CBM , 3 ) + "'" ) ;
icount = icount + 2 ;
Shipping = formatEdiStr ( "txt" , bill . MARKS ) ;
Shipping = Shipping . Replace ( "\n" , "\\" ) ;
Shipping = Shipping . Replace ( "\r" , " " ) ;
string [ ] MarksList = Shipping . Split ( '\\' ) ;
if ( MarksList . Length ! = 0 )
{
for ( var i = 0 ; i < MarksList . Length ; i + + )
{
r . WriteLine ( "PCI++" + MarksList [ i ] + "'" ) ;
icount = icount + 1 ;
}
}
//危险品
if ( bill . CARGOID = = "D" )
{
r . WriteLine ( "DGS+IMD+" + bill . DCLASS + "+" + bill . DUNNO + "'" ) ;
r . WriteLine ( "CTA+HG+:" + bill . EDIATTN + "'" ) ;
r . WriteLine ( "COM+" + bill . EDIATTNTEL + ":TE'" ) ;
icount = icount + 3 ;
}
var ctnsumlist = new List < SeaExportCtnEDIBaseModel > ( ) ;
foreach ( var ctn in bill . CTNLIST )
{
var isfind = false ;
ctnsumlist . ForEach ( i = >
{
if ( i . CTNALLCODE = = ctn . CTNALLCODE )
{
i . CTNNUM = i . CTNNUM + ctn . CTNNUM ;
isfind = true ;
}
} ) ;
if ( ! isfind )
{
var ctnnum = new SeaExportCtnEDIBaseModel ( ) ;
ctnnum . CTNALLCODE = ctn . CTNALLCODE ;
ctnnum . CTNNUM = ctn . CTNNUM ;
ctnsumlist . Add ( ctnnum ) ;
}
}
foreach ( var ctn in ctnsumlist )
{
if ( bill . ISCONTAINERSOC )
r . WriteLine ( "EQD+CN++" + ctn . CTNALLCODE + "+1'" ) ;
else
r . WriteLine ( "EQD+CN++" + ctn . CTNALLCODE + "+2'" ) ;
r . WriteLine ( "EQN+" + ctn . CTNNUM . ToString ( ) + "'" ) ;
icount = icount + 2 ;
if ( bill . CARGOID = = "R" )
{
if ( ! string . IsNullOrWhiteSpace ( bill . REEFERF ) )
r . WriteLine ( "MEA+AAE+AAS+CBM:" + bill . REEFERF + "'" ) ;
if ( ! string . IsNullOrWhiteSpace ( bill . HUMIDITY ) )
r . WriteLine ( "MEA+AAE+AAO+HMD:" + bill . HUMIDITY + "'" ) ;
//温度这里如果是带小数点的值,会导致错误,这里需要慎重
var tempset = bill . TEMPSET ;
if ( ! string . IsNullOrWhiteSpace ( tempset ) )
{
var fuhao = "" ;
if ( tempset . IndexOf ( "-" ) = = 0 )
{
fuhao = "-" ;
tempset = tempset . Replace ( "-" , "" ) ;
}
if ( tempset . Length < 3 )
{
for ( int i = 0 ; i < 3 - tempset . Length + 1 ; i + + )
{
tempset = "0" + tempset ;
}
}
tempset = fuhao + tempset ;
}
else
{
tempset = "000" ;
}
r . WriteLine ( "TMP+2+" + tempset + ":CEL'" ) ;
icount = icount + 2 ;
}
if ( bill . IsNORCtn & & bill . TEMPSET . Equals ( "999" ) )
{
var tempset = bill . TEMPSET ;
r . WriteLine ( "MEA+AAE+AAS+CBM:" + bill . REEFERF + "'" ) ;
r . WriteLine ( "TMP+2+" + tempset + ":CEL'" ) ;
icount = icount + 2 ;
}
}
}
r . WriteLine ( "UNT+" + icount . ToString ( ) + "+" + bsno + "'" ) ;
r . WriteLine ( "UNZ+" + InttrEdi . BSLIST . Count . ToString ( ) + "+" + bsno + "'" ) ;
r . Close ( ) ;
f . Close ( ) ;
result . Succeeded = true ;
result . ExtraData1 = filename ;
return result ;
}
# endregion
#region 确认
public static EdiDataResult CreateEdiINTTRSI ( EDIBaseModel InttrEdi )
{
var result = new EdiDataResult { Succeeded = false } ;
string filename = InttrEdi . filerpath + "\\" + InttrEdi . BSLIST [ 0 ] . MBLNO + DateTime . Now . ToString ( "yyyyMMddHHmmssfff" ) + ".txt" ;
//如果是部署linux需要修改路径
if ( RuntimeInformation . IsOSPlatform ( OSPlatform . Linux ) )
filename = filename . Replace ( "\\" , "/" ) ;
//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 ;
var bsno = "" ;
foreach ( var bill in InttrEdi . BSLIST )
{
bsno = bill . ORDERNO ;
r . WriteLine ( "UNB+UNOC:2+" + InttrEdi . SENDCODE + ":ZZZ+" + InttrEdi . RECEIVECODE + ":ZZZ+" + DateTime . Now . ToString ( "yyMMdd:HHmm" ) + "+" + bill . ORDERNO + "'" ) ;
r . WriteLine ( "UNH+" + bill . ORDERNO + "+IFTMIN:D:99B:UN'" ) ;
if ( InttrEdi . filerole = = "9" )
r . WriteLine ( "BGM+340+" + bill . MBLNO + "+9'" ) ;
else
r . WriteLine ( "BGM+340+" + bill . MBLNO + "+5'" ) ;
if ( bill . SERVICEEDICODE . ToUpper ( ) = = "DOOR-DOOR" )
{
r . WriteLine ( "TSR+27+2'" ) ;
}
else if ( bill . SERVICEEDICODE . ToUpper ( ) = = "DOOR-CY" )
{
r . WriteLine ( "TSR+28+2'" ) ;
}
else if ( bill . SERVICEEDICODE . ToUpper ( ) = = "CY-DOOR" )
{
r . WriteLine ( "TSR+29+2'" ) ;
}
else
{
r . WriteLine ( "TSR+30+2'" ) ;
}
var str_pay = "" ;
if ( bill . BLFRTEDICODE . IndexOf ( "PREPAID" ) > = 0 )
str_pay = bill . PREPARDAT ;
if ( bill . BLFRTEDICODE . IndexOf ( "COLLECT" ) > = 0 )
str_pay = bill . PAYABLEAT ;
/ *
r . WriteLine ( "FTX+AAI+++" + bill . BLFRTEDICODE + " Payable at " + str_pay + " " + bill . SERVICEEDICODE + " "
+ bill . PKGS . ToString ( ) + bill . KINDPKGS + "'" ) ;
icount = icount + 5 ;
* /
icount = icount + 3 ;
var Shipping = "" ;
Shipping = formatEdiStr ( "txt" , bill . SIREMARK ) ;
Shipping = Shipping . Replace ( "\n" , "\\" ) ;
Shipping = Shipping . Replace ( "\r" , " " ) ;
string [ ] EdiRemarkList = Shipping . Split ( '\\' ) ;
if ( EdiRemarkList . Length ! = 0 )
{
for ( var i = 0 ; i < EdiRemarkList . Length ; i + + )
{
r . WriteLine ( "FTX+AAI+++" + EdiRemarkList [ i ] + "'" ) ;
icount = icount + 1 ;
}
}
if ( bill . BYCOUNTRY = = "USA" )
{
if ( bill . SCACCODE ! = "" )
r . WriteLine ( "FTX+CCI++MFS+1:US:" + bill . SCACCODE + "'" ) ;
else
r . WriteLine ( "FTX+CCI++MFS+5:US'" ) ;
icount = icount + 1 ;
}
else if ( bill . BYCOUNTRY = = "CANADA" )
{
if ( bill . SCACCODE ! = "" )
r . WriteLine ( "FTX+CCI++MFS+1:CA:" + bill . SCACCODE + "'" ) ;
else
r . WriteLine ( "FTX+CCI++MFS+5:CA'" ) ;
icount = icount + 1 ;
}
r . WriteLine ( "CNT+7:" + Math . Round ( bill . KGS , 3 ) + ":KGM'" ) ;
r . WriteLine ( "CNT+11:" + bill . PKGS . ToString ( ) + "'" ) ;
r . WriteLine ( "CNT+15:" + Math . Round ( bill . CBM , 3 ) + ":MTQ'" ) ;
icount = icount + 3 ;
if ( bill . CARRIEREDICODE = = "UASC" )
{
if ( bill . CTNLIST . Count > 0 )
{
var ctnnum = 0 ;
foreach ( var ctn in bill . CTNLIST )
{
ctnnum = ctnnum + ctn . CTNNUM ;
}
r . WriteLine ( "CNT+16:" + ctnnum . ToString ( ) + "'" ) ;
icount = icount + 1 ;
}
}
if ( bill . BLFRT = = "FREIGHT COLLECT" )
{
if ( bill . PAYABLEAT ! = "" )
{
r . WriteLine ( "LOC+57+" + bill . PREPARDATID + "::6:" + bill . PAYABLEAT + "'" ) ;
icount = icount + 1 ;
}
}
else
{
r . WriteLine ( "LOC+57+" + bill . PREPARDATID + "::6:" + bill . PREPARDAT + "'" ) ;
icount = icount + 1 ;
}
r . WriteLine ( "LOC+73+" + bill . ISSUEPLACEID + "::6:" + bill . ISSUEPLACE + "'" ) ;
icount = icount + 1 ;
if ( bill . CARRIEREDICODE = = "MASK" )
{
Shipping = formatEdiStr ( "txt" , bill . BSNOLIST ) ;
Shipping = Shipping . Replace ( "\n" , "\\" ) ;
Shipping = Shipping . Replace ( "\r" , " " ) ;
EdiRemarkList = Shipping . Split ( '\\' ) ;
if ( EdiRemarkList . Length ! = 0 )
{
for ( var i = 0 ; i < EdiRemarkList . Length ; i + + )
{
r . WriteLine ( "RFF+BN:" + EdiRemarkList [ i ] + "'" ) ;
icount = icount + 1 ;
}
}
else
{
//if (billams.ORDERNO != "")
// r.WriteLine("RFF+BN:" + billams.ORDERNO + "'");
//else
r . WriteLine ( "RFF+BN:" + bill . MBLNO + "'" ) ;
icount = icount + 1 ;
}
}
else
{
//if (billams.ORDERNO != "")
// r.WriteLine("RFF+BN:" + billams.ORDERNO + "'");
//else
r . WriteLine ( "RFF+BN:" + bill . MBLNO + "'" ) ;
icount = icount + 1 ;
}
r . WriteLine ( "RFF+BM:" + bill . MBLNO + "'" ) ;
r . WriteLine ( "RFF+CT:" + bill . CONTRACTNO + "'" ) ;
icount = icount + 2 ;
if ( bill . CARRIEREDICODE = = "UASC" )
{
r . WriteLine ( "RFF+SI:" + bill . ORDERNO + "'" ) ;
icount = icount + 1 ;
}
if ( bill . BYCOUNTRY = = "USA" )
{
r . WriteLine ( "REF+TN:" + bill . ITNCODE + "'" ) ;
icount = icount + 1 ;
}
if ( bill . BLFRT . IndexOf ( "PREPAID" ) > = 0 )
r . WriteLine ( "CPI+4++P'" ) ;
else if ( bill . BLFRT . IndexOf ( "COLLECT" ) > = 0 )
r . WriteLine ( "CPI+4++C'" ) ;
else
r . WriteLine ( "CPI+4++B'" ) ;
icount = icount + 1 ;
var voyno = "" ;
if ( bill . VOYNO . IndexOf ( "." ) > = 0 )
{
voyno = bill . VOYNO . Substring ( bill . VOYNO . IndexOf ( "." ) + 1 , bill . VOYNO . Length - bill . VOYNO . IndexOf ( "." ) - 1 ) ;
}
else
{
voyno = bill . VOYNO ;
}
r . WriteLine ( "TDT+20+" + voyno + "+1++" + bill . CARRIEREDICODE + "+++:::" + bill . VESSEL + "'" ) ;
r . WriteLine ( "LOC+9+" + bill . PORTLOADID + ":139:6:" + bill . PORTLOAD + "'" ) ;
r . WriteLine ( "LOC+88+" + bill . PORTLOADID + ":139:6:" + bill . PORTLOAD + "'" ) ;
r . WriteLine ( "LOC+11+" + bill . PORTDISCHARGEID + ":139:6:" + bill . PORTDISCHARGE + "'" ) ;
icount = icount + 4 ;
if ( ! string . IsNullOrWhiteSpace ( bill . DESTINATION ) )
{
r . WriteLine ( "LOC+7+" + bill . DESTINATIONID + ":139:6:" + bill . DESTINATION + "'" ) ;
icount = icount + 1 ;
}
var DescriptionShipper = "" ;
Shipping = formatEdiStr ( "txt" , bill . SHIPPER ) ;
List < System . String > ShippingList = formatlengthStr ( Shipping , 35 ) ;
if ( ShippingList . Count ! = 0 & & Shipping . Length > 0 )
{
for ( var i = 0 ; i < ShippingList . Count ; i + + )
{
if ( i = = 0 ) Shipping = "NAD+CZ+++" + 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 > 34 )
{
Shipping = Shipping + ":" + ShippingList [ i ] . Substring ( 0 , 34 ) ;
DescriptionShipper = ShippingList [ i ] . Substring ( 34 ) ;
}
else
Shipping = Shipping + ":" + ShippingList [ i ] ;
if ( bill . CARRIEREDICODE = = "HLCU" )
{
Shipping = Shipping + "-" ;
DescriptionShipper = "-" + DescriptionShipper ;
}
else
{
Shipping = Shipping + "*" ;
DescriptionShipper = "*" + DescriptionShipper ;
}
}
else if ( i > 4 )
{
DescriptionShipper = DescriptionShipper + " " + ShippingList [ i ] ;
}
}
else
if ( i = = 4 ) Shipping = Shipping + ":" + ShippingList [ i ] ;
}
}
r . WriteLine ( Shipping + "'" ) ;
icount = icount + 1 ;
Shipping = formatEdiStr ( "txt" , bill . CONSIGNEE ) ;
ShippingList = formatlengthStr ( Shipping , 35 ) ;
var DescriptionConsignee = "" ;
if ( ShippingList . Count ! = 0 & & Shipping . Length > 0 )
{
for ( var i = 0 ; i < ShippingList . Count ; i + + )
{
if ( i = = 0 ) Shipping = "NAD+CN+++" + 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 > 33 )
{
Shipping = Shipping + ":" + ShippingList [ i ] . Substring ( 0 , 33 ) ;
DescriptionConsignee = ShippingList [ i ] . Substring ( 33 ) ;
}
else
Shipping = Shipping + ":" + ShippingList [ i ] ;
if ( bill . CARRIEREDICODE = = "HLCU" )
{
Shipping = Shipping + "--" ;
DescriptionConsignee = "--" + DescriptionConsignee ;
}
else
{
Shipping = Shipping + "**" ;
DescriptionConsignee = "**" + DescriptionConsignee ;
}
}
else if ( i > 4 )
{
DescriptionConsignee = DescriptionConsignee + " " + ShippingList [ i ] ;
}
}
else
if ( i = = 4 ) Shipping = Shipping + ":" + ShippingList [ i ] ;
}
}
if ( bill . BYCOUNTRY = = "USA" )
{
Shipping = Shipping + "+++" + bill . CONSIGNEEPOSTCODE ;
r . WriteLine ( Shipping + "'" ) ;
}
else if ( bill . BYCOUNTRY = = "CANADA" )
{
Shipping = Shipping + "+++" + bill . CONSIGNEEPOSTCODE + "+CA" ;
r . WriteLine ( Shipping + "'" ) ;
}
else if ( bill . BYCOUNTRY = = "BRAZIL" )
{
Shipping = Shipping + "++++" + bill . CONSIGNEECOUNTRY ;
r . WriteLine ( Shipping + "'" ) ;
r . WriteLine ( "RFF+GN:" + bill . CONSIGNEETAXNO + "'" ) ;
icount = icount + 1 ;
}
else r . WriteLine ( Shipping + "'" ) ;
icount = icount + 1 ;
/ * 2024 - 04 - 08 JHQ 看 文 档 2.0 应 该 没 有 这 段 代 码 了
if ( ! string . IsNullOrEmpty ( bill . WEITUO ) )
{
if ( bill . WEITUO . Length > 35 )
r . WriteLine ( "NAD+FW+++" + formatEdiStr ( "txt" , bill . WEITUO . Substring ( 0 , 35 ) ) + "+" + formatEdiStr ( "txt" , bill . WEITUO . Substring ( 35 ) ) + "'" ) ;
else
r . WriteLine ( "NAD+FW+++" + formatEdiStr ( "txt" , bill . WEITUO ) + "'" ) ;
}
else
{
if ( InttrEdi . UseForWarderCode )
{
r . WriteLine ( "NAD+FW+" + InttrEdi . ForWarderCode + ":160:86++" + InttrEdi . ForWarderName + "'" ) ;
icount + + ;
}
else
{
if ( InttrEdi . SENDNAME . Length > 35 )
r . WriteLine ( "NAD+FW+" + InttrEdi . SENDCODE + ":160:86++" + InttrEdi . SENDNAME . Substring ( 0 , 35 ) + "+" + InttrEdi . SENDNAME . Substring ( 35 ) + "'" ) ;
else
r . WriteLine ( "NAD+FW+" + InttrEdi . SENDCODE + ":160:86++" + InttrEdi . SENDNAME + "'" ) ;
}
}
icount + + ;
* /
Shipping = formatEdiStr ( "txt" , bill . NOTIFYPARTY ) ;
ShippingList = formatlengthStr ( Shipping , 35 ) ;
var DescriptionNotifyparty = "" ;
if ( ShippingList . Count ! = 0 & & Shipping . Length > 0 )
{
for ( var i = 0 ; i < ShippingList . Count ; i + + )
{
if ( i = = 0 ) Shipping = "NAD+NI+++" + 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 > 32 )
{
Shipping = Shipping + ":" + ShippingList [ i ] . Substring ( 0 , 32 ) ;
DescriptionNotifyparty = ShippingList [ i ] . Substring ( 32 ) ;
}
else
Shipping = Shipping + ":" + ShippingList [ i ] ;
if ( bill . CARRIEREDICODE = = "HLCU" )
{
Shipping = Shipping + "---" ;
DescriptionNotifyparty = "---" + DescriptionNotifyparty ;
}
else
{
Shipping = Shipping + "***" ;
DescriptionNotifyparty = "***" + DescriptionNotifyparty ;
}
}
else if ( i > 4 )
{
DescriptionNotifyparty = DescriptionNotifyparty + " " + ShippingList [ i ] ;
}
}
else
if ( i = = 4 ) Shipping = Shipping + ":" + ShippingList [ i ] ;
}
}
if ( bill . BYCOUNTRY = = "USA" )
{
Shipping = Shipping + "+++" + bill . NOTIFYPARTYPOSTCODE ;
r . WriteLine ( Shipping + "'" ) ;
}
else if ( bill . BYCOUNTRY = = "BRAZIL" )
{
if ( bill . NOTIFYPARTYCOUNTRY ! = "" )
Shipping = Shipping + "++++" + bill . NOTIFYPARTYCOUNTRY ;
r . WriteLine ( Shipping + "'" ) ;
if ( bill . NOTIFYPARTYTAXNO ! = "" )
{
r . WriteLine ( "RFF+GN:" + bill . NOTIFYPARTYTAXNO + "'" ) ;
icount = icount + 1 ;
}
}
else r . WriteLine ( Shipping + "'" ) ;
icount = icount + 1 ;
/ * 2024 - 04 - 08 JHQ 参 考 文 档 2.0 去 掉 了
Shipping = formatEdiStr ( "txt" , bill . NOTIFYPARTY2 ) ;
ShippingList = formatlengthStr ( Shipping , 35 ) ;
if ( ShippingList . Count ! = 0 & & Shipping . Length > 0 )
{
for ( var i = 0 ; i < ShippingList . Count ; i + + )
{
if ( i = = 0 ) Shipping = "NAD+N1+++" + ShippingList [ 0 ] + "+" ;
if ( i = = 1 ) Shipping = Shipping + ShippingList [ i ] ;
if ( i = = 2 | | i = = 3 ) Shipping = Shipping + ":" + ShippingList [ i ] ;
if ( i = = 4 ) Shipping = Shipping + ":" + ShippingList [ i ] ;
}
r . WriteLine ( Shipping + "'" ) ;
}
* /
r . WriteLine ( "NAD+CA+" + bill . CARRIEREDICODE + ":160:86++" + GetCarrierName ( bill . CARRIEREDICODE ) + "'" ) ;
icount = icount + 1 ;
if ( InttrEdi . SENDNAME . Length > 35 )
r . WriteLine ( "NAD+HI+" + InttrEdi . SENDCODE + ":160:86++" + InttrEdi . SENDNAME . Substring ( 0 , 35 ) + "+" + InttrEdi . SENDNAME . Substring ( 35 ) + "'" ) ;
else
r . WriteLine ( "NAD+HI+" + InttrEdi . SENDCODE + ":160:86++" + InttrEdi . SENDNAME + "'" ) ;
r . WriteLine ( "CTA+IC+:" + bill . EDIATTN + "'" ) ;
r . WriteLine ( "COM+" + bill . EDIATTNTEL + ":TE'" ) ;
r . WriteLine ( "COM+" + bill . EDIATTNEMAIL + ":EM'" ) ;
icount = icount + 5 ;
var copynum = GetBillNum ( bill . COPYNOBILL ) ;
//正本
if ( bill . ISSUETYPE . Equals ( "ORIGINAL" , StringComparison . OrdinalIgnoreCase ) )
{
r . WriteLine ( "DOC+706+++" + GetBillNum ( bill . NOBILL ) + "'" ) ;
icount = icount + 1 ;
if ( copynum ! = "" )
{
r . WriteLine ( "DOC+707+++" + copynum + "'" ) ;
icount = icount + 1 ;
}
}
else if ( bill . ISSUETYPE . Equals ( "SEAWAY BILL" , StringComparison . OrdinalIgnoreCase ) | | bill . ISSUETYPE = = "海运单" | | bill . ISSUETYPE . ToUpper ( ) = = "SEAWAY" | | bill . ISSUETYPE . ToUpper ( ) = = "SEAWAY BILL" | | bill . ISSUETYPE . ToUpper ( ) = = "WAYBILL" | | bill . ISSUETYPE . ToUpper ( ) = = "SWB正本"
| | bill . ISSUETYPE . ToUpper ( ) = = "SWB无正本" )
{
//海运单
r . WriteLine ( "DOC+710+++" + GetBillNum ( bill . NOBILL ) + "'" ) ;
icount = icount + 1 ;
}
else if ( bill . ISSUETYPE . Equals ( "TELEX" , StringComparison . OrdinalIgnoreCase ) | | bill . ISSUETYPE . ToUpper ( ) = = "BILL COPY" | | bill . ISSUETYPE = = "电放" )
{
//电放
r . WriteLine ( "DOC+706+++" + GetBillNum ( bill . NOBILL ) + "'" ) ;
icount = icount + 1 ;
if ( copynum ! = "" )
{
r . WriteLine ( "DOC+707+++" + copynum + "'" ) ;
icount = icount + 1 ;
}
}
else if ( bill . ISSUETYPE = = "正副本" )
{
r . WriteLine ( "DOC+706+++" + GetBillNum ( bill . NOBILL ) + "'" ) ;
icount = icount + 1 ;
if ( copynum ! = "" )
{
r . WriteLine ( "DOC+707+++" + copynum + "'" ) ;
icount = icount + 1 ;
}
}
else if ( bill . ISSUETYPE . ToUpper ( ) = = "HOUSE BILL" )
{
r . WriteLine ( "DOC+714+++" + GetBillNum ( bill . NOBILL ) + "'" ) ;
icount = icount + 1 ;
}
//判断集装箱是否包含分箱明细
if ( bill . CTNGOODSLIST = = null | | bill . CTNGOODSLIST . Count = = 0 )
{
#region 取委托单货描、唛头信息
r . WriteLine ( "GID+1+" + bill . PKGS . ToString ( ) + ":" + bill . KINDPKGS_EDI_CODE + "::6:" + bill . KINDPKGS + "'" ) ;
icount = icount + 1 ;
if ( bill . HSCODE ! = "" )
{
r . WriteLine ( "PIA+5+" + bill . HSCODE + ":HS'" ) ;
icount = icount + 1 ;
}
Shipping = formatEdiStr ( "txt" , bill . DESCRIPTION ) ;
Shipping = Shipping . Replace ( "\n" , "\\" ) ;
Shipping = Shipping . Replace ( "\r" , " " ) ;
string [ ] DescriptionList = Shipping . Split ( '\\' ) ;
if ( DescriptionList . Length ! = 0 )
{
for ( var i = 0 ; i < DescriptionList . Length ; i + + )
{
//if (DescriptionList[i] != "")
//{
r . WriteLine ( "FTX+AAA+++" + DescriptionList [ i ] + "'" ) ;
icount = icount + 1 ;
//}
}
}
if ( DescriptionShipper ! = "" )
{
r . WriteLine ( "FTX+AAA+++" + DescriptionShipper + "'" ) ;
icount = icount + 1 ;
}
if ( DescriptionConsignee ! = "" )
{
r . WriteLine ( "FTX+AAA+++" + DescriptionConsignee + "'" ) ;
icount = icount + 1 ;
}
if ( DescriptionNotifyparty ! = "" )
{
r . WriteLine ( "FTX+AAA+++" + DescriptionNotifyparty + "'" ) ;
icount = icount + 1 ;
}
r . WriteLine ( "MEA+AAE+WT+KGM:" + Math . Round ( bill . KGS , 3 ) + "'" ) ;
r . WriteLine ( "MEA+AAE+AAW+MTQ:" + Math . Round ( bill . CBM , 3 ) + "'" ) ;
icount = icount + 2 ;
if ( ! string . IsNullOrEmpty ( bill . GOODSNCM ) )
{
r . WriteLine ( "RFF+ABT:" + bill . GOODSNCM + "'" ) ;
icount = icount + 1 ;
}
Shipping = formatEdiStr ( "txt" , bill . MARKS ) ;
Shipping = Shipping . Replace ( "\n" , "\\" ) ;
Shipping = Shipping . Replace ( "\r" , " " ) ;
string [ ] MarksList = Shipping . Split ( '\\' ) ;
if ( MarksList . Length ! = 0 )
{
for ( var i = 0 ; i < MarksList . Length ; i + + )
{
//if (MarksList[i] != "")
//{
r . WriteLine ( "PCI++" + MarksList [ i ] + "'" ) ;
icount = icount + 1 ;
//}
}
}
foreach ( var ctn in bill . CTNLIST )
{
r . WriteLine ( "SGP+" + ctn . CNTRNO + "+" + ctn . PKGS . ToString ( ) + "'" ) ;
r . WriteLine ( "MEA+AAE+WT+KGM:" + Math . Round ( ctn . KGS , 3 ) + "'" ) ;
r . WriteLine ( "MEA+AAE+AAW+MTQ:" + Math . Round ( ctn . CBM , 3 ) + "'" ) ;
icount = icount + 3 ;
}
# endregion
}
else
{
if ( bill . CARRIEREDICODE = = "UASC" | | bill . CARRIEREDICODE = = "HLCU" | | bill . CARRIEREDICODE = = "CMDU" )
{
#region 取集装箱分箱_货描、唛头信息
if ( bill . CTNGOODSLIST ! = null )
{
if ( bill . CTNGOODSLIST . Count > 0 )
{
var i = 0 ;
foreach ( var ctngood in bill . CTNGOODSLIST )
{
//GID+1+400:CT::6:CARTONS'
r . WriteLine ( "GID+" + ( i + 1 ) + "+" + ctngood . PKGS . ToString ( ) + ":" + ctngood . KINDPKGS_EDI_CODE + "::6:" + ctngood . KINDPKGS + "'" ) ;
icount + + ;
//PIA+5+HS_CODE1:HS'
r . WriteLine ( "PIA+5+" + ctngood . HSCODE + ":HS'" ) ;
icount + + ;
//FTX+AAA+++MATERIAL 1'
//FTX+AAA+++HS-NO 39023012'
Shipping = formatEdiStr ( "txt" , ctngood . DESCRIPTION ) ;
Shipping = Shipping . Replace ( "\n" , "\\" ) ;
Shipping = Shipping . Replace ( "\r" , " " ) ;
string [ ] DescriptionList = Shipping . Split ( '\\' ) ;
if ( DescriptionList . Length ! = 0 )
{
for ( var j = 0 ; j < DescriptionList . Length ; j + + )
{
r . WriteLine ( "FTX+AAA+++" + DescriptionList [ j ] + "'" ) ;
icount + + ;
}
}
//MEA+AAE+WT+KGM:3000'
//MEA+AAE+AAW+MTQ:110.11'
r . WriteLine ( "MEA+AAE+WT+KGM:" + Math . Round ( ctngood . KGS , 3 ) + "'" ) ;
icount + + ;
r . WriteLine ( "MEA+AAE+AAW+MTQ:" + Math . Round ( ctngood . CBM , 3 ) + "'" ) ;
icount + + ;
//PCI++MARKS AND NUMBERS:FOR MATERIAL 1: OUR PONUMBER: PO_123456'
//if (isbill != 1)
//{
// Shipping = formatEdiStr("txt", bill.MARKS);
//}
//else
//{
Shipping = formatEdiStr ( "txt" , ctngood . MARKS ) ;
//}
if ( string . IsNullOrEmpty ( ctngood . MARKS ) ) Shipping = formatEdiStr ( "txt" , bill . MARKS ) ;
Shipping = Shipping . Replace ( "\n" , "\\" ) ;
Shipping = Shipping . Replace ( "\r" , " " ) ;
string [ ] MarksList = Shipping . Split ( '\\' ) ;
if ( MarksList . Length ! = 0 )
{
for ( var j = 0 ; j < MarksList . Length ; j + + )
{
r . WriteLine ( "PCI++" + MarksList [ j ] + "'" ) ;
icount + + ;
}
}
if ( ! string . IsNullOrEmpty ( bill . GOODSNCM ) )
{
r . WriteLine ( "RFF+ABT:" + bill . GOODSNCM + "'" ) ;
icount + + ;
}
/ /
//SGP+MSCU1234567+100'
r . WriteLine ( "SGP+" + ctngood . CNTRNO + "+" + ctngood . PKGS . ToString ( ) + "'" ) ;
//MEA+AAE+WT+KGM:1000'
r . WriteLine ( "MEA+AAE+WT+KGM:" + Math . Round ( ctngood . KGS , 3 ) + "'" ) ;
//MEA+AAE+AAW+MTQ:50.11'
r . WriteLine ( "MEA+AAE+AAW+MTQ:" + Math . Round ( ctngood . CBM , 3 ) + "'" ) ;
icount = icount + 3 ;
i = i + 1 ;
}
}
}
# endregion
}
else
{
#region 取集装箱分箱_货描、唛头信息
var ctngoodssumlist = new List < SeaExportCtnDetailEDIBaseModel > ( ) ;
foreach ( var ctn in bill . CTNGOODSLIST )
{
var isfind = false ;
ctngoodssumlist . ForEach ( i = >
{
if ( i . HSCODE = = ctn . HSCODE & & i . KINDPKGS = = ctn . KINDPKGS & & i . DESCRIPTION = = ctn . DESCRIPTION & & i . MARKS = = ctn . MARKS )
{
i . PKGS = i . PKGS + ctn . PKGS ;
i . KGS = i . KGS + ctn . KGS ;
i . CBM = i . CBM + ctn . CBM ;
isfind = true ;
}
} ) ;
if ( ! isfind )
{
var ctnnum = new SeaExportCtnDetailEDIBaseModel ( ) ;
ctnnum . HSCODE = ctn . HSCODE ;
ctnnum . KINDPKGS = ctn . KINDPKGS ;
ctnnum . KINDPKGS_EDI_CODE = ctn . KINDPKGS_EDI_CODE ;
ctnnum . DESCRIPTION = ctn . DESCRIPTION ;
ctnnum . MARKS = ctn . MARKS ;
ctnnum . PKGS = ctn . PKGS ;
ctnnum . KGS = ctn . KGS ;
ctnnum . CBM = ctn . CBM ;
ctngoodssumlist . Add ( ctnnum ) ;
}
}
if ( ctngoodssumlist ! = null )
{
if ( ctngoodssumlist . Count > 0 )
{
var goodct = 0 ;
foreach ( var ctngoodsum in ctngoodssumlist )
{
//GID+1+400:CT::6:CARTONS'
r . WriteLine ( "GID+" + ( goodct + 1 ) + "+" + ctngoodsum . PKGS . ToString ( ) + ":" + ctngoodsum . KINDPKGS_EDI_CODE + "::6:" + ctngoodsum . KINDPKGS + "'" ) ;
icount + + ;
//PIA+5+HS_CODE1:HS'
r . WriteLine ( "PIA+5+" + ctngoodsum . HSCODE + ":HS'" ) ;
icount + + ;
//FTX+AAA+++MATERIAL 1'
//FTX+AAA+++HS-NO 39023012'
Shipping = formatEdiStr ( "txt" , ctngoodsum . DESCRIPTION ) ;
Shipping = Shipping . Replace ( "\n" , "\\" ) ;
Shipping = Shipping . Replace ( "\r" , " " ) ;
string [ ] DescriptionList = Shipping . Split ( '\\' ) ;
if ( DescriptionList . Length ! = 0 )
{
for ( var j = 0 ; j < DescriptionList . Length ; j + + )
{
r . WriteLine ( "FTX+AAA+++" + DescriptionList [ j ] + "'" ) ;
icount + + ;
}
}
//MEA+AAE+WT+KGM:3000'
//MEA+AAE+AAW+MTQ:110.11'
r . WriteLine ( "MEA+AAE+WT+KGM:" + Math . Round ( Convert . ToDecimal ( ctngoodsum . KGS ) , 3 ) + "'" ) ;
icount + + ;
r . WriteLine ( "MEA+AAE+AAW+MTQ:" + Math . Round ( Convert . ToDecimal ( ctngoodsum . CBM ) , 3 ) + "'" ) ;
icount + + ;
//PCI++MARKS AND NUMBERS:FOR MATERIAL 1: OUR PONUMBER: PO_123456'
//if (isbill != 1)
//{
// Shipping = formatEdiStr("txt", bill.MARKS);
//}
//else
//{
Shipping = formatEdiStr ( "txt" , ctngoodsum . MARKS ) ;
//}
if ( ctngoodsum . MARKS = = "" ) Shipping = formatEdiStr ( "txt" , bill . MARKS ) ;
Shipping = Shipping . Replace ( "\n" , "\\" ) ;
Shipping = Shipping . Replace ( "\r" , " " ) ;
string [ ] MarksList = Shipping . Split ( '\\' ) ;
if ( MarksList . Length ! = 0 )
{
for ( var j = 0 ; j < MarksList . Length ; j + + )
{
r . WriteLine ( "PCI++" + MarksList [ j ] + "'" ) ;
icount + + ;
}
}
if ( ! string . IsNullOrEmpty ( bill . GOODSNCM ) )
{
r . WriteLine ( "RFF+ABT:" + bill . GOODSNCM + "'" ) ;
icount + + ;
}
goodct = goodct + 1 ;
bill . CTNGOODSLIST . ForEach ( i = >
{
if ( i . HSCODE = = ctngoodsum . HSCODE & & i . KINDPKGS = = ctngoodsum . KINDPKGS & & i . DESCRIPTION = = ctngoodsum . DESCRIPTION & & i . MARKS = = ctngoodsum . MARKS )
{
//SGP+MSCU1234567+100'
r . WriteLine ( "SGP+" + i . CNTRNO + "+" + i . PKGS . ToString ( ) + "'" ) ;
//MEA+AAE+WT+KGM:1000'
r . WriteLine ( "MEA+AAE+WT+KGM:" + Math . Round ( Convert . ToDecimal ( i . KGS ) , 3 ) + "'" ) ;
//MEA+AAE+AAW+MTQ:50.11'
r . WriteLine ( "MEA+AAE+AAW+MTQ:" + Math . Round ( Convert . ToDecimal ( i . CBM ) , 3 ) + "'" ) ;
icount = icount + 3 ;
}
} ) ;
}
}
}
# endregion
}
}
if ( bill . CARGOID = = "D" )
{
r . WriteLine ( "DGS+IMD+" + bill . DCLASS + "+" + bill . DUNNO + "'" ) ;
r . WriteLine ( "CTA+HG+:" + bill . EDIATTN + "'" ) ;
r . WriteLine ( "COM+" + bill . EDIATTNTEL + ":TE'" ) ;
icount = icount + 3 ;
}
#region 集装箱 主箱循环
foreach ( var ctn in bill . CTNLIST )
{
if ( bill . ISCONTAINERSOC )
r . WriteLine ( "EQD+CN+" + ctn . CNTRNO + "+" + ctn . CTNALLCODE + "+1'" ) ;
else
r . WriteLine ( "EQD+CN+" + ctn . CNTRNO + "+" + ctn . CTNALLCODE + "+2'" ) ;
r . WriteLine ( "MEA+AAE+WT+KGM:" + Math . Round ( ctn . KGS , 3 ) + "'" ) ;
r . WriteLine ( "MEA+AAE+AAW+MTQ:" + Math . Round ( ctn . CBM , 3 ) + "'" ) ;
icount = icount + 3 ;
if ( bill . CARGOID = = "R" )
{
if ( bill . REEFERF ! = "" )
{
r . WriteLine ( "MEA+AAE+AAS+CBM:" + bill . REEFERF + "'" ) ;
icount = icount + 1 ;
}
}
r . WriteLine ( "SEL+" + ctn . SEALNO + "+CA'" ) ;
icount = icount + 1 ;
if ( bill . CARGOID = = "R" )
{
r . WriteLine ( "TMP+2+" + bill . TEMPSET + ":CEL'" ) ;
icount = icount + 1 ;
}
}
# endregion
}
r . WriteLine ( "UNT+" + icount . ToString ( ) + "+" + bsno + "'" ) ;
r . WriteLine ( "UNZ+" + InttrEdi . BSLIST . Count . ToString ( ) + "+" + bsno + "'" ) ;
r . Close ( ) ;
f . Close ( ) ;
result . Succeeded = true ;
result . ExtraData1 = filename ;
return result ;
}
# endregion
}
}