using DSWeb.Common.DB ;
using DSWeb.Common.Extentions ;
using DSWeb.Common.Helper ;
using FluentFTP.Helpers ;
using ICSharpCode.SharpZipLib.BZip2 ;
using JobReqWebData ;
using log4net ;
using Newtonsoft.Json ;
using Newtonsoft.Json.Linq ;
using Quartz ;
using Quartz.Impl ;
using Quartz.Util ;
using RabbitMQ.Client ;
using RabbitMQ.Client.Events ;
using System ;
using System.Collections.Generic ;
using System.ComponentModel ;
using System.Configuration ;
using System.Data ;
using System.Data.Entity.Migrations ;
using System.Data.SqlClient ;
using System.IO ;
using System.Linq ;
using System.Net.NetworkInformation ;
using System.Security.Policy ;
using System.Text ;
using System.Text.RegularExpressions ;
using System.Threading.Tasks ;
using System.Xml.Linq ;
using Topshelf ;
using static DSWeb . Service . Output . DS7 . DS7Service ;
using static System . Data . Entity . Infrastructure . Design . Executor ;
namespace DSWeb.Service.Output.DS7
{
public class DS7Service : ServiceControl
{
private const string ExchangeName = "output" ;
private static ILog logger = LogManager . GetLogger ( "DS7Service" ) ;
//private const string QueuePrefixCangDan = "djy.output.cangdan.ds7.";
//private const string QueuePrefixBaoguan = "djy.output.baoguan.ds7.";
//private const string QueuePrefixBG = "djy.output.baoguan.bg.ds7.";
private const string QueuePrefix_DingCang = "djy.output.dingcang.ds6." ;
private const string QueuePrefix_Del = "djy.output.dingcang.ds6_delete." ;
private const string QueuePrefix_Letter_RH = "djy.output.dingcang.ds6_fangcang." ;
private const string QueuePrefix_Letter_PC = "djy.output.booktruck.ds6." ;
/// <summary>
/// 在大简云的公司ID
/// </summary>
private static string CompanyId = ConfigurationManager . AppSettings [ "CompanyId" ] . ToLower ( ) ;
//private static string Corpid = ConfigurationManager.AppSettings["Corpid"];
//private static string DS7ConnStr = ConfigurationManager.ConnectionStrings["DongShengDB"].ConnectionString;
private static string DS6ConnStr = ConfigurationManager . ConnectionStrings [ "DS6DB" ] . ConnectionString ;
private string RecMqUri = ConfigurationManager . AppSettings [ "ReceiveMQUri" ] ;
private string 消 费 数 据 = ConfigurationManager . AppSettings [ "USEDATA" ] ;
//private string FeeInputUserId = ConfigurationManager.AppSettings["FeeInputUserId"];
//private static string UserNameStr = ConfigurationManager.AppSettings["UserNameStr"];
private IConnection mqConn ;
private IConnection mqConn2 ;
private IConnection mqConn3 ;
private IConnection mqConn4 ;
//费用相关配置
//private static string FeePayName = ConfigurationManager.AppSettings["FeePayName"];
//private static string FeePayCustomer = ConfigurationManager.AppSettings["FeePayCustomer"];
//private static string FeePayCustomerType = ConfigurationManager.AppSettings["FeePayCustomerType"];
//private static decimal FeePayPrice = Convert.ToDecimal(ConfigurationManager.AppSettings["FeePayPrice"]);
//private static string FeePayMyshippingName = ConfigurationManager.AppSettings["FeePayMyshippingName"];
//private static string FeePayMyshippingCustomer = ConfigurationManager.AppSettings["FeePayMyshippingCustomer"];
//private static decimal FeePayMyshippingPrice = Convert.ToDecimal(ConfigurationManager.AppSettings["FeePayMyshippingPrice"]);
//private static string FeeShouName = ConfigurationManager.AppSettings["FeeShouName"];
private CommonDataContext dS7Data = new CommonDataContext ( ) ;
public List < string > usernamelist = new List < string > ( ) ;
/// <summary>
/// 压缩
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static string Compress ( string input )
{
string result = string . Empty ;
byte [ ] buffer = Encoding . UTF8 . GetBytes ( input ) ;
using ( MemoryStream outputStream = new MemoryStream ( ) )
{
using ( BZip2OutputStream zipStream = new BZip2OutputStream ( outputStream ) )
{
zipStream . Write ( buffer , 0 , buffer . Length ) ;
zipStream . Close ( ) ;
}
return Convert . ToBase64String ( outputStream . ToArray ( ) ) ;
}
}
/// <summary>
/// 解压缩
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static string Decompress ( string input )
{
string result = string . Empty ;
byte [ ] buffer = Convert . FromBase64String ( input ) ;
using ( Stream inputStream = new MemoryStream ( buffer ) )
{
BZip2InputStream zipStream = new BZip2InputStream ( inputStream ) ;
using ( StreamReader reader = new StreamReader ( zipStream , Encoding . UTF8 ) )
{
//输出
result = reader . ReadToEnd ( ) ;
}
}
return result ;
}
public bool Start ( HostControl hostControl )
{
// 开始具体的业务逻辑
logger . Debug ( "开始运行" ) ;
dS7Data . Database . Log = ( x = > { logger . Debug ( x ) ; } ) ;
//测试时为false
var 消 费 队 列 数 据 = ( 消 费 数 据 = = "true" ) ;
//if (!string.IsNullOrWhiteSpace(UserNameStr)) {
// usernamelist = UserNameStr.Split(',').ToList() ;
//}
try
{
//测试数据
#region 测试文本
/ * 测 试 时 前 面 增 加 两 个 注 释 号
var testjson = @"[{""Id"":433214387101766,""BSNO"":""SE2023070266"",""BSSTATUS"":null,""BSSTATUSNAME"":""申请箱使"",""BSDATE"":""1899-12-30T00:00:00"",""MBLNO"":"""",""HBLNO"":"""",""BOOKINGNO"":""433214387101765"",""CONTRACTNO"":"""",""SERVICECONTRACTNO"":null,""SHIPPERID"":null,""CONSIGNEEID"":null,""NOTIFYPARTYID"":null,""SHIPPER"":""LAIWU TAIFENG FOODS CO., LTD \r\nKOUZHEN TOWN,LAIWU DISTRICT,\r\nJINAN CITY, SHANDONG PROVINCE, CHINA"",""CONSIGNEE"":""HEIWADO SDN BHD\r\nLOT 4998, BATU 5 ?, JALAN MERU, 41050 KLANG,\r\nSELANGOR DARUL EHSAN, MALAYSIA.\r\n(TEL : 603-51618298/9 FAX : 603-51618286 邮箱F11@ECONSAVE.COM.MY 非必要不显示)"",""NOTIFYPARTY"":""SAME AS CONSIGNEE"",""NOTIFYPARTY2"":"""",""YARDID"":"""",""YARD"":""港联欣场站"",""VESSELID"":null,""VESSEL"":"""",""VOYNO"":"""",""VOYNOINNER"":"""",""ETD"":""2023-07-14T00:00:00"",""ATD"":null,""CLOSINGDATE"":null,""CLOSEDOCDATE"":null,""CLOSEVGMDATE"":null,""ETA"":null,""PLACERECEIPTID"":"""",""PLACERECEIPT"":"""",""PORTLOADID"":""CNTAO"",""PORTLOAD"":""QINGDAO,CHINA"",""PORTDISCHARGEID"":""IDBLW"",""PORTDISCHARGE"":""BELAWAN"",""PLACEDELIVERYID"":"""",""PLACEDELIVERY"":"""",""DESTINATIONID"":""IDBLW"",""DESTINATION"":""BELAWAN"",""NOBILL"":"""",""COPYNOBILL"":"""",""ISSUETYPE"":""开船即电放"",""ISSUEDATE"":null,""ISSUEPLACEID"":"""",""ISSUEPLACE"":""QINGDAO,CHINA"",""BLFRT"":""FREIGHT PREPAID"",""PREPARDAT"":""QINGDAO,CHINA"",""PAYABLEAT"":"""",""SERVICE"":"""",""MARKS"":""N/M"",""HSCODE"":""070320"",""DESCRIPTION"":""FRESH GARLIC\nTEMP:-1'C\nVENT:10CBM/H\nSHIPPED ON BOARD\nFREIGHT PREPAID\nH.S.CODE:070320"",""PKGS"":1934,""KINDPKGS"":""BAGS"",""KGS"":87000.00000,""CBM"":150.0000,""TOTALNO"":""SAY:THREE THOUSAND EIGHT HUNDRED AND SIXTY-EIGHT BAGS ONLY."",""CNTRTOTAL"":""40RH*3"",""CARRIERID"":""WHL"",""CARRIER"":""万海"",""CARGOID"":""R"",""DCLASS"":"""",""DUNNO"":"""",""DPAGE"":"""",""DLABEL"":"""",""LINKMAN"":"""",""TEMPID"":""C"",""TEMPSET"":"""",""REEFERF"":"""",""HUMIDITY"":"""",""TEMPMIN"":"""",""TEMPMAX"":"""",""ISCONTAINERSOC"":false,""SOREMARK"":"""",""SIREMARK"":"""",""YARDREMARK"":"""",""COMPID"":"""",""COMPNAME"":""中集世联达领鲜物流科技(山东)有限公司"",""SHIPPERNAME"":null,""SHIPPERADDR1"":null,""SHIPPERADDR2"":null,""SHIPPERADDR3"":null,""SHIPPERCITY"":null,""SHIPPERPROVINCE"":null,""SHIPPERPOSTCODE"":null,""SHIPPERCOUNTRY"":null,""SHIPPERATTN"":null,""SHIPPERTEL"":null,""CONSIGNEENAME"":null,""CONSIGNEEADDR1"":null,""CONSIGNEEADDR2"":null,""CONSIGNEEADDR3"":null,""CONSIGNEECITY"":null,""CONSIGNEEPROVINCE"":null,""CONSIGNEEPOSTCODE"":null,""CONSIGNEERCOUNTRY"":null,""CONSIGNEEATTN"":null,""CONSIGNEETEL"":null,""NOTIFYPARTYNAME"":null,""NOTIFYPARTYADDR1"":null,""NOTIFYPARTYADDR2"":null,""NOTIFYPARTYADDR3"":null,""NOTIFYPARTYCITY"":null,""NOTIFYPARTYPROVINCE"":null,""NOTIFYPARTYPOSTCODE"":null,""NOTIFYPARTYCOUNTRY"":null,""NOTIFYPARTYATTN"":null,""NOTIFYPARTYTEL"":null,""PONO"":"""",""OPID"":""356029268668485"",""DOCID"":""398916891234373"",""OP"":""周鹏"",""DOC"":""吕晓静"",""SALEID"":""386902674714693"",""SALE"":""公司"",""CUSTSERVICEID"":""356029264511045"",""CUSTSERVICE"":""蓝贝贝"",""CUSTOMERNAME"":""泰丰三部-莱芜泰丰"",""FORWARDER"":""山东领鲜"",""SHIPAGENCY"":"""",""CUSTOMSER"":"""",""TRUCKER"":"""",""AGENTID"":"""",""CUSTOMERID"":0,""FORWARDERID"":""SDLX"",""SHIPAGENCYID"":"""",""CUSTOMSERID"":"""",""TRUCKERID"":"""",""AGENTNAME"":"""",""WEITUO"":"""",""CONSIGNEEDOORADDR"":"""",""SHIPPERDOORADDR"":"""",""SCACCODE"":"""",""ITNCODE"":"""",""PREPARDATID"":"""",""PAYABLEATID"":"""",""CUSTNO"":"""",""TRANSPORTID"":"""",""TRANSPORT"":"""",""THIRDPAYADDR"":"""",""YARDCONTRACT"":"""",""YARDCONTRACTTEL"":"""",""YARDCONTRACTEMAIL"":"""",""FEESELF"":false,""LANECODE"":"""",""LANENAME"":""CI2"",""FREIGHTPAYER"":"""",""GOODSCODE"":""070320"",""GOODSNAME"":"""",""PKGSTOTAL"":"""",""KGSTOTAL"":"""",""CBMTOTAL"":"""",""ROUTEID"":"""",""ROUTE"":""周鹏 "",""Warehouse"":"""",""WarehouseID"":"""",""EPCode"":"""",""LineName"":""印尼"",""DZRemark"":"""",""CZRemark"":""蒜""," "TMBL
byte [ ] byteArray = System . Text . Encoding . Default . GetBytes ( testjson ) ;
var strBody = Encoding . UTF8 . GetString ( byteArray . ToArray ( ) ) ;
DingCangToDS6 ( JArray . Parse ( strBody ) ) ;
//*/
/ * 测 试 时 前 面 增 加 两 个 注 释 号
///433483922997318
var testjson = @"{""TenantId"":349708986646597,""BookingId"":434937889853510,""ToName"":"""",""Attn"":"""",""AttnTel"":"""",""AttnMail"":"""",""AttnPhone"":"""",""FromName"":""王起凤"",""FromTel"":""0532-85888610"",""FromMail"":""OP76@hightrans.net"",""FromPhone"":""15689135576"",""Description"":""FRESH GARLIC\nTEMP:+2'C\nVENT:15CBM/H\nHS CODE:070320\n*TOWNSHIP,QI COUNTY,KAIFENG \nCITI,HENAN PROVINCE CHINA\n**KOTA JAKARTA SELATAN INDONESIA\nNPWP:63.317.411.5-013.000\nEMAIL:MICHAEL.DOCS@HSLBM.COM\nPHONE:021-7247500"",""CloseDocTime"":""2023-07-10T15:00:00"",""ClosingTime"":""2023-07-11T15:00:00"",""VgmTime"":""2023-07-10T15:00:00"",""Remark"":"""",""YARDID"":""CHANGRONG"",""YARD"":""长荣场站"",""YARDCONTRACT"":"""",""YARDCONTRACTTEL"":"""",""CreatedTime"":""2023-07-05T16:26:34.0043772+08:00"",""UpdatedTime"":null,""CreatedUserId"":356029265842245,""CreatedUserName"":""王起凤"",""UpdatedUserId"":null,""UpdatedUserName"":null,""IsDeleted"":false,""Id"":435734085566533}" ;
byte [ ] byteArray = System . Text . Encoding . Default . GetBytes ( testjson ) ;
var strBody = Encoding . UTF8 . GetString ( byteArray . ToArray ( ) ) ;
DS6OpLetter_RH ( strBody ) ;
//*/
# endregion
//测试删除
//DelToDS6("410977390837829,410261333442630,410590260686917");
//this.Stop(hostControl);
///* 测试时删去前面两个注释号
#region 订舱业务和删除订舱业务
ConnectionFactory factory = new ConnectionFactory ( ) ;
factory . Uri = new Uri ( RecMqUri ) ;
mqConn = factory . CreateConnection ( ) ;
IModel modelDingCang = mqConn . CreateModel ( ) ;
modelDingCang . ExchangeDeclare ( ExchangeName , ExchangeType . Direct ) ;
modelDingCang . QueueDeclare ( $"{QueuePrefix_DingCang}{CompanyId}" , false , false , false , null ) ;
var consumerDingCang = new EventingBasicConsumer ( modelDingCang ) ;
consumerDingCang . Received + = ( ch , ea ) = >
{
var body = ea . Body ;
var strBodyZip = Encoding . UTF8 . GetString ( body . ToArray ( ) ) ;
var strBody = Decompress ( strBodyZip ) ;
logger . Debug ( $"收到大简云订舱输出数据:{strBody}" ) ;
try
{
//导出到东胜6
//if(strBody.Contains("TAHT30633700"))
DingCangToDS6 ( JArray . Parse ( strBody ) ) ;
}
catch ( Exception ex )
{
var excep = ex ;
while ( excep ! = null )
{
logger . Error ( excep . Message ) ;
logger . Error ( excep . StackTrace ) ;
excep = excep . InnerException ;
}
}
} ;
//第二个参数控制【是否消费掉队列里的数据】
modelDingCang . BasicConsume ( $"{QueuePrefix_DingCang}{CompanyId}" , 消 费 队 列 数 据 , consumerDingCang ) ;
///删除
///删除改为通过接口调用方式
////ConnectionFactory factory2 = new ConnectionFactory();
////factory2.Uri = new Uri(RecMqUri);
////mqConn2 = factory2.CreateConnection();
////IModel modelDel = mqConn2.CreateModel();
////modelDel.ExchangeDeclare(ExchangeName, ExchangeType.Direct);
////modelDel.QueueDeclare($"{QueuePrefix_Del}{CompanyId}", false, false, false, null);
////var consumerDel = new EventingBasicConsumer(modelDel);
////consumerDel.Received += (ch, ea) =>
////{
//// var body = ea.Body;
//// var strBody = Encoding.UTF8.GetString(body.ToArray());
//// logger.Debug($"收到大简云删除订舱:{strBody}");
//// try
//// {
//// //导出到东胜6
//// DelToDS6(strBody);
//// }
//// catch (Exception ex)
//// {
//// var excep = ex;
//// while (excep != null)
//// {
//// logger.Error(excep.Message);
//// logger.Error(excep.StackTrace);
//// excep = excep.InnerException;
//// }
//// }
////};
//////第二个参数控制【是否消费掉队列里的数据】
////modelDel.BasicConsume($"{QueuePrefix_Del}{CompanyId}", 消费队列数据, consumerDel);
# endregion
///*
#region 业务函电 入货通知
ConnectionFactory factory3 = new ConnectionFactory ( ) ;
factory3 . Uri = new Uri ( RecMqUri ) ;
mqConn3 = factory3 . CreateConnection ( ) ;
IModel model_Letter_RH = mqConn3 . CreateModel ( ) ;
model_Letter_RH . ExchangeDeclare ( ExchangeName , ExchangeType . Direct ) ;
model_Letter_RH . QueueDeclare ( $"{QueuePrefix_Letter_RH}{CompanyId}" , false , false , false , null ) ;
var consumer_Letter_RH = new EventingBasicConsumer ( model_Letter_RH ) ;
consumer_Letter_RH . Received + = ( ch , ea ) = >
{
var body = ea . Body ;
var strBody = Encoding . UTF8 . GetString ( body . ToArray ( ) ) ;
logger . Debug ( $"收到大简云入货通知:{strBody}" ) ;
try
{
//导出到东胜6
DS6OpLetter_RH ( strBody ) ;
}
catch ( Exception ex )
{
var excep = ex ;
while ( excep ! = null )
{
logger . Error ( excep . Message ) ;
logger . Error ( excep . StackTrace ) ;
excep = excep . InnerException ;
}
}
} ;
//第二个参数控制【是否消费掉队列里的数据】
model_Letter_RH . BasicConsume ( $"{QueuePrefix_Letter_RH}{CompanyId}" , 消 费 队 列 数 据 , consumer_Letter_RH ) ;
# endregion
#region 业务函电 派车
ConnectionFactory factory4 = new ConnectionFactory ( ) ;
factory4 . Uri = new Uri ( RecMqUri ) ;
mqConn4 = factory4 . CreateConnection ( ) ;
IModel model_Letter_PC = mqConn4 . CreateModel ( ) ;
model_Letter_PC . ExchangeDeclare ( ExchangeName , ExchangeType . Direct ) ;
model_Letter_PC . QueueDeclare ( $"{QueuePrefix_Letter_PC}{CompanyId}" , false , false , false , null ) ;
var consumer_Letter_PC = new EventingBasicConsumer ( model_Letter_PC ) ;
consumer_Letter_PC . Received + = ( ch , ea ) = >
{
var body = ea . Body ;
var strBody = Encoding . UTF8 . GetString ( body . ToArray ( ) ) ;
logger . Debug ( $"收到大简云派车通知:{strBody}" ) ;
try
{
//导出到东胜6
DS6OpLetter_PC ( strBody ) ;
}
catch ( Exception ex )
{
var excep = ex ;
while ( excep ! = null )
{
logger . Error ( excep . Message ) ;
logger . Error ( excep . StackTrace ) ;
excep = excep . InnerException ;
}
}
} ;
//第二个参数控制【是否消费掉队列里的数据】
model_Letter_PC . BasicConsume ( $"{QueuePrefix_Letter_PC}{CompanyId}" , 消 费 队 列 数 据 , consumer_Letter_PC ) ;
# endregion
//*/
}
catch ( Exception e ) {
logger . Error ( e . Message ) ;
}
return true ;
}
public bool Stop ( HostControl hostControl )
{
// 结束
logger . Debug ( "停止运行" ) ;
//StdSchedulerFactory.GetDefaultScheduler().Shutdown();
mqConn . Close ( ) ;
mqConn2 . Close ( ) ;
mqConn3 . Close ( ) ;
mqConn4 . Close ( ) ;
return true ;
}
#region 舱单数据解析实体类
public class Ctnlist
{
/// <summary>
///
/// </summary>
public string ctn_id { get ; set ; }
/// <summary>
///
/// </summary>
public string MFNO { get ; set ; }
/// <summary>
///
/// </summary>
public string CTNCODE { get ; set ; }
/// <summary>
///
/// </summary>
public int? SIZE { get ; set ; }
/// <summary>
///
/// </summary>
public string CTN { get ; set ; }
/// <summary>
///
/// </summary>
public int? CTNNUM { get ; set ; }
/// <summary>
///
/// </summary>
public int? TEU { get ; set ; }
/// <summary>
///
/// </summary>
public string CTNALL { get ; set ; }
/// <summary>
///
/// </summary>
public string CNTRNO { get ; set ; }
/// <summary>
///
/// </summary>
public string SEALNO { get ; set ; }
/// <summary>
///
/// </summary>
public int? PKGS { get ; set ; }
/// <summary>
///
/// </summary>
public decimal? KGS { get ; set ; }
/// <summary>
///
/// </summary>
public decimal? CBM { get ; set ; }
/// <summary>
///
/// </summary>
public string KINDPKGS { get ; set ; }
/// <summary>
///
/// </summary>
public string DESCRIPTION { get ; set ; }
/// <summary>
///
/// </summary>
public string MARKS { get ; set ; }
/// <summary>
///
/// </summary>
public string PO { get ; set ; }
/// <summary>
///
/// </summary>
public string SKU { get ; set ; }
/// <summary>
///
/// </summary>
public string SKUDESCRIP { get ; set ; }
/// <summary>
///
/// </summary>
public string DUNNO { get ; set ; }
/// <summary>
///
/// </summary>
public string HTS { get ; set ; }
/// <summary>
///
/// </summary>
public string CTOFORIGIN { get ; set ; }
/// <summary>
///
/// </summary>
public decimal? GOODVALUE { get ; set ; }
/// <summary>
///
/// </summary>
public string CTNOWNER { get ; set ; }
/// <summary>
///
/// </summary>
public string ShiFengRen { get ; set ; }
/// <summary>
///
/// </summary>
public string LeiXingFa { get ; set ; }
/// <summary>
///
/// </summary>
public string LeiXingShou { get ; set ; }
/// <summary>
///
/// </summary>
public string LeiXingTong { get ; set ; }
/// <summary>
///
/// </summary>
public int ZhongKongBiaoShi { get ; set ; }
/// <summary>
///
/// </summary>
public string ChengZhongZhongLiang { get ; set ; }
/// <summary>
///
/// </summary>
public string ChengZhongFangShi { get ; set ; }
/// <summary>
///
/// </summary>
public string ChengZhongShiJian { get ; set ; }
/// <summary>
///
/// </summary>
public decimal? PIZHONG { get ; set ; }
/// <summary>
///
/// </summary>
public string APICTNID { get ; set ; }
/// <summary>
///
/// </summary>
public DateTime ? VGMCLOSETIME { get ; set ; }
}
public class OpSeaeEdi
{
/// <summary>
///
/// </summary>
public string MBLNO { get ; set ; }
/// <summary>
///
/// </summary>
public string HBLNO { get ; set ; }
/// <summary>
///
/// </summary>
public string CARRIERID { get ; set ; }
/// <summary>
///
/// </summary>
public string CARRIER { get ; set ; }
/// <summary>
///
/// </summary>
public string WeiTuoFaSongFang { get ; set ; }
/// <summary>
///
/// </summary>
public string DESTINATION { get ; set ; }
/// <summary>
///
/// </summary>
public string DESTINATIONID { get ; set ; }
/// <summary>
///
/// </summary>
public string PORTDISCHARGE { get ; set ; }
/// <summary>
///
/// </summary>
public string PORTDISCHARGEID { get ; set ; }
/// <summary>
///
/// </summary>
public DateTime ? ETD { get ; set ; }
/// <summary>
///
/// </summary>
public string CompId { get ; set ; }
/// <summary>
/// 东方海外物流(中国)有限公司青岛分公司
/// </summary>
public string CompName { get ; set ; }
/// <summary>
///
/// </summary>
public string MFNO { get ; set ; }
/// <summary>
///
/// </summary>
public string BSNO { get ; set ; }
/// <summary>
///
/// </summary>
public string MASTERNO { get ; set ; }
/// <summary>
///
/// </summary>
public string SHIPPERNAME { get ; set ; }
/// <summary>
///
/// </summary>
public string SHIPPERADDR1 { get ; set ; }
/// <summary>
///
/// </summary>
public string SHIPPERCOUNTRY { get ; set ; }
/// <summary>
///
/// </summary>
public string SHIPPERTEL { get ; set ; }
/// <summary>
///
/// </summary>
public string CONSIGNEENAME { get ; set ; }
/// <summary>
///
/// </summary>
public string CONSIGNEEADDR1 { get ; set ; }
/// <summary>
///
/// </summary>
public string CONSIGNEECOUNTRY { get ; set ; }
public string CONSIGNEETEL { get ; set ; }
public string NOTIFYPARTYNAME { get ; set ; }
public string NOTIFYPARTYADDR1 { get ; set ; }
/// <summary>
///
/// </summary>
public string NOTIFYPARTYCOUNTRY { get ; set ; }
/// <summary>
///
/// </summary>
public string NOTIFYPARTYTEL { get ; set ; }
/// <summary>
///
/// </summary>
public string SHIPPER { get ; set ; }
/// <summary>
///
/// </summary>
public string CONSIGNEE { get ; set ; }
/// <summary>
///
/// </summary>
public string NOTIFYPARTY { get ; set ; }
/// <summary>
///
/// </summary>
public string VESSEL { get ; set ; }
/// <summary>
///
/// </summary>
public string VOYNO { get ; set ; }
/// <summary>
///
/// </summary>
public string PORTLOADID { get ; set ; }
/// <summary>
///
/// </summary>
public string PORTLOAD { get ; set ; }
/// <summary>
///
/// </summary>
public string PLACEDELIVERYID { get ; set ; }
/// <summary>
///
/// </summary>
public string PLACEDELIVERY { get ; set ; }
/// <summary>
///
/// </summary>
public string SERVICE { get ; set ; }
/// <summary>
///
/// </summary>
public string MARKS { get ; set ; }
/// <summary>
///
/// </summary>
public string DESCRIPTION { get ; set ; }
/// <summary>
///
/// </summary>
public int? PKGS { get ; set ; }
/// <summary>
///
/// </summary>
public string KINDPKGS { get ; set ; }
/// <summary>
///
/// </summary>
public decimal? KGS { get ; set ; }
/// <summary>
///
/// </summary>
public decimal? CBM { get ; set ; }
/// <summary>
///
/// </summary>
public string CARGOID { get ; set ; }
/// <summary>
///
/// </summary>
public string DCLASS { get ; set ; }
/// <summary>
///
/// </summary>
public string DUNNO { get ; set ; }
/// <summary>
///
/// </summary>
public string REEFERF { get ; set ; }
/// <summary>
///
/// </summary>
public string TEMPID { get ; set ; }
/// <summary>
///
/// </summary>
public string TEMPSET { get ; set ; }
/// <summary>
///
/// </summary>
public string TEMPMAX { get ; set ; }
/// <summary>
///
/// </summary>
public string TEMPMIN { get ; set ; }
/// <summary>
///
/// </summary>
public string FREIGHTAGMNO { get ; set ; }
/// <summary>
///
/// </summary>
public string HUMIDITY { get ; set ; }
/// <summary>
///
/// </summary>
public string SHIPIMO { get ; set ; }
/// <summary>
///
/// </summary>
public DateTime ? ETA { get ; set ; }
/// <summary>
///
/// </summary>
public string BLFRT { get ; set ; }
/// <summary>
///
/// </summary>
public DateTime ? SENDTIME { get ; set ; }
/// <summary>
///
/// </summary>
public string YARD { get ; set ; }
/// <summary>
/// 外代
/// </summary>
public string FORWARDER { get ; set ; }
/// <summary>
///
/// </summary>
public List < Ctnlist > ctnlist { get ; set ; }
}
# endregion
/// <summary>
/// 舱单数据生成到OPOther版本的舱单业务中 经汉专用
/// </summary>
/// <param name="jarr"></param>
//public void CangdanDataToDS7_OPOther(JArray jarr)
//{
// try
// {
// var opUser = dS7Data.User.AsNoTracking().First(u => u.GID == FeeInputUserId);
// foreach (var item in jarr)
// {
// var obj = item as JObject;
// var itemstr = item.ToString();
// var _edi = JsonConvert.DeserializeObject<OpSeaeEdi>(itemstr);
// var MBLNO = obj.GetValue("MBLNO").ToString();
// var HBLNO = obj.GetValue("HBLNO").ToString();
// var CARRIERID = obj.GetValue("CARRIERID").ToString();
// var CARRIER = obj.GetValue("CARRIER").ToString();
// var WeiTuoFaSongFang = obj.GetValue("WeiTuoFaSongFang").ToString();
// var DESTINATION = obj.GetValue("DESTINATION").ToString();
// var DESTINATIONID = obj.GetValue("DESTINATIONID").ToString();
// var PORTDISCHARGE = obj.GetValue("PORTDISCHARGE").ToString();
// var PORTDISCHARGEID = obj.GetValue("PORTDISCHARGEID").ToString();
// var strETD = obj.GetValue("ETD").ToString();
// var ETD = Convert.ToDateTime(strETD);
// var CompId = obj.GetValue("CompId").ToString();
// var ORDERNO = obj.GetValue("ORDERNO").ToString();
// var 对账约号 = obj.GetValue("REMARKS").ToString();
// //看op_other当中有没有该业务主单 如无则增加
// var 主单mfno = "topother" + _edi.MFNO;
// if (!string.IsNullOrWhiteSpace(_edi.BSNO)) 主单mfno = "topother" + _edi.BSNO;
// op_other_md op_other = dS7Data.op_other.FirstOrDefault(x => x.BSNO == 主单mfno);
// var BSNO = "";
// var CUSTNOHEAD = "";
// var CUSTOMERNAME = "";
// var SOURCEOP = "";
// var 费用标准结算对象 = "";
// var 船代 = "";
// var custEdi = dS7Data.CodeCustEdi.AsNoTracking().FirstOrDefault(x => x.EDINAME == "DJY_OUTPUT" && x.EDICODE == WeiTuoFaSongFang);
// if (custEdi != null)
// {
// 费用标准结算对象 = custEdi.CUST;
// }
// var 船代Edi= dS7Data.CodeCustEdi.AsNoTracking().FirstOrDefault(x => x.EDINAME == "DJY_OUTPUT" && x.EDICODE == _edi.FORWARDER);
// if (船代Edi != null) {
// 船代 = 船代Edi.CUST;
// }
// //如果大简云业务中的【订舱编号】空着,则用大简云舱单界面的【委托发送方】 , 寻找EDI代码设置中的EDICODE =【委托发送方】 EDINAME = 大简云的客户 填入【委托单位】字段的内容
// //如果大简云业务中的【订舱编号】不为空, 录入的是"市场部/海运部,MKT1(英文逗号分割)"
// //根据【订舱编号】录入的"市场部/海运部"对应到东胜系统里的【委托单位】, 通过EDI代码设置中的EDICODE = 市场部 / 海运部 EDINAME = 大简云选择填入【委托单位】字段的内容
// //订舱编号里逗号后面的“MKT1”放到源操作SOURCEOP上
// //导入舱单时产生的舱单费
// //1 单价从cust_fee_templatedetail当中的舱单费选取
// //选取标准为: 根据大简云舱单界面的【委托发送方】, 寻找EDI代码设置中的EDICODE =【委托发送方】 EDINAME = 大简云的客户 , 用这个客户名称查询cust_fee_templatedetail当中的舱单费
// //2费用的结算对象 为这票业务在东胜系统中的委托单位
// if (string.IsNullOrWhiteSpace(ORDERNO))
// {
// //var custEdi = dS7Data.CodeCustEdi.AsNoTracking().FirstOrDefault(x => x.EDINAME == "DJY_OUTPUT" && x.EDICODE == WeiTuoFaSongFang);
// //if (custEdi != null)
// //{
// // CUSTOMERNAME = custEdi.CUST;
// //}
// CUSTOMERNAME = 费用标准结算对象;
// }
// else {
// ORDERNO=ORDERNO.Replace(", ", ",");
// var orderinfo = ORDERNO.Split(',').ToList();
// if (orderinfo.Count == 0) {
// orderinfo.Add("");
// orderinfo.Add("");
// }
// if (orderinfo.Count == 1)
// {
// orderinfo.Add("");
// }
// var cust = orderinfo[0];
// var custEdi2 = dS7Data.CodeCustEdi.AsNoTracking().FirstOrDefault(x => x.EDINAME == "DJY_OUTPUT" && x.EDICODE == cust);
// if (custEdi2 != null)
// {
// CUSTOMERNAME = custEdi2.CUST;
// }
// SOURCEOP = orderinfo[1];
// }
// var 委托单位 = dS7Data.info_client.FirstOrDefault(x => x.SHORTNAME == CUSTOMERNAME);
// if (op_other == null || op_other.BSNO == null || op_other.BSNO == "")
// {
// logger.Debug($"未找到委托数据:{MBLNO}");
// BSNO = 主单mfno;
// //件数 毛重 净重 尺码 sum
// var PKGS = 0;
// var KGS = 0M;
// var CBM = 0M;
// foreach (var ja in jarr)
// {
// var _edi2= JsonConvert.DeserializeObject<OpSeaeEdi>(ja.ToString());
// PKGS += _edi2.PKGS==null?0:(int)_edi2.PKGS;
// KGS += _edi2.KGS == null ? 0M : (decimal)_edi2.KGS;
// CBM += _edi2.CBM == null ? 0M : (decimal)_edi2.CBM;
// }
// var newrec = new op_other_md
// {
// BSNO = BSNO,
// OPLB = "op_other",
// OPLBNAME = "舱单申报",
// BSSTATUS = false,
// FEESTATUS = false,
// MBLNO = MBLNO,
// HBLNO = "",
// CUSTOMERNAME = 委托单位.SHORTNAME,
// //CUSTOMERNAME2 = WeiTuoFaSongFang,//20230313-大简云舱单界面的【委托发送方】录入东胜系统的实际客户,
// //CARRIER
// BSDATE = DateTime.Today,
// ACCDATE = DateTime.Now.ToString("yyyy-MM"),
// BSSOURCE = 委托单位.BSSOURCE,
// OP = opUser.SHOWNAME,
// CUSTSERVICE = opUser.SHOWNAME,
// SALE = opUser.SHOWNAME,
// CORPID = Corpid,
// ETD = ETD,//业务日期
// //SR2023011000005
// PORTLOAD = _edi.PORTLOAD,//装货港
// PORTDISCHARGE = _edi.PORTDISCHARGE,//卸货港
// PKGS = PKGS,
// KGS = KGS,
// NETWEIGHT = 0,
// CBM = CBM,
// //SOURCEOP = SOURCEOP,
// //SHIPAGENT = 船代
// };
// //,DUIYUEHAO = 对账约号
// //20230317 对账约号存于opLogic
// var cdc = new CommonDataContext();
// var dic = new Dictionary<string, string>
// {
// { "DUIYUEHAO",对账约号 }
// };
// SaveLogicInfo(BSNO, "舱单业务", dic);
// var billnoset = dS7Data.SysBillNoSet.AsNoTracking().FirstOrDefault(x => x.COMPANYID == Corpid && x.OPLBNAME == "舱单申报" && x.RULEBLNO == "委托编号");
// if (billnoset != null)
// newrec.CUSTNO = GetBillNo(billnoset, newrec.ETD.ToString(), newrec.ACCDATE, opname: opUser.SHOWNAME, corpid: Corpid);
// else
// {
// logger.Debug($"SysBillNoSet数据未找到, 无法生成编号: {MBLNO}");
// }
// dS7Data.op_other.Add(newrec);
// dS7Data.SaveChanges();
// op_other= dS7Data.op_other.FirstOrDefault(x => x.BSNO == 主单mfno);
// }
// else
// {
// logger.Debug($"委托数据已存在:{MBLNO}");
// BSNO = op_other.BSNO;
// CUSTNOHEAD = op_other.CUSTNO;
// }
// //看op_seae_edi当中有没有该业务 如无则增加
// var ediList = dS7Data.op_seae_edi.Where(x => x.BSNO == BSNO).ToList();
// if (!ediList.Exists(x => x.MBLNO == MBLNO && x.HBLNO == HBLNO))
// {
// var newedi = new op_seae_edi_md {
// MFNO = _edi.MFNO,
// BSNO = 主单mfno,
// MASTERNO = 主单mfno,
// CUSTNO = CUSTNOHEAD + (ediList.Count + 1).ToString(),
// MBLNO =_edi.MBLNO,
// HBLNO = _edi.HBLNO,
// CARRIERID = _edi.CARRIERID,
// CARRIER = _edi.CARRIER,
// //WeiTuoFaSongFang = _edi.WeiTuoFaSongFang,
// DESTINATION = _edi.DESTINATION,
// DESTINATIONID = _edi.DESTINATIONID,
// PORTDISCHARGE = _edi.PORTDISCHARGE,
// PORTDISCHARGEID = _edi.PORTDISCHARGEID,
// ETD = _edi.ETD,
// SHIPPERNAME = _edi.SHIPPERNAME,
// SHIPPERADDR1 = _edi.SHIPPERADDR1,
// SHIPPERCOUNTRY = _edi.SHIPPERCOUNTRY,
// SHIPPERTEL = _edi.SHIPPERTEL,
// CONSIGNEENAME = _edi.CONSIGNEENAME,
// CONSIGNEEADDR1 = _edi.CONSIGNEEADDR1,
// CONSIGNEECOUNTRY = _edi.CONSIGNEECOUNTRY,
// CONSIGNEETEL = _edi.CONSIGNEETEL,
// NOTIFYPARTYNAME = _edi.NOTIFYPARTYNAME,
// NOTIFYPARTYADDR1 = _edi.NOTIFYPARTYADDR1,
// NOTIFYPARTYCOUNTRY = _edi.NOTIFYPARTYCOUNTRY,
// NOTIFYPARTYTEL = _edi.NOTIFYPARTYTEL,
// SHIPPER = _edi.SHIPPER,
// CONSIGNEE = _edi.CONSIGNEE,
// NOTIFYPARTY = _edi.NOTIFYPARTY,
// VESSEL = _edi.VESSEL,
// VOYNO = _edi.VOYNO,
// PORTLOADID = _edi.PORTLOADID,
// PORTLOAD = _edi.PORTLOAD,
// PLACEDELIVERYID = _edi.PLACEDELIVERYID,
// PLACEDELIVERY = _edi.PLACEDELIVERY,
// SERVICE = _edi.SERVICE,
// MARKS = _edi.MARKS,
// DESCRIPTION = _edi.DESCRIPTION,
// PKGS = _edi.PKGS,
// KINDPKGS = _edi.KINDPKGS,
// KGS = _edi.KGS,
// CBM = _edi.CBM,
// CARGOID = _edi.CARGOID,
// DCLASS = _edi.DCLASS,
// DUNNO = _edi.DUNNO,
// REEFERF = _edi.REEFERF,
// TEMPID = _edi.TEMPID,
// TEMPSET = _edi.TEMPSET,
// TEMPMAX = _edi.TEMPMAX,
// TEMPMIN = _edi.TEMPMIN,
// FREIGHTAGMNO = _edi.FREIGHTAGMNO,
// HUMIDITY = _edi.HUMIDITY,
// SHIPIMO = _edi.SHIPIMO,
// ETA = _edi.ETA,
// BLFRT = _edi.BLFRT,
// SENDTIME = _edi.SENDTIME,
// YARD = _edi.YARD,
// FORWARDER = _edi.FORWARDER,
// CORPID= Corpid
// };
// dS7Data.op_seae_edi.Add(newedi);
// if (_edi.ctnlist != null && _edi.ctnlist.Count > 0) {
// foreach (var ctn in _edi.ctnlist) {
// var newctn = new op_seae_edi_ctn_md
// {
// ctn_id = Guid.NewGuid().ToString(),//ctn.ctn_id,
// MFNO = _edi.MFNO,
// CTNCODE = ctn.CTNCODE,
// CNTRNO= ctn.CNTRNO,
// SEALNO = ctn.SEALNO,
// SIZE = ctn.SIZE.ToString(),
// CTN = ctn.CTN,
// CTNNUM = ctn.CTNNUM,
// TEU = ctn.TEU,
// CTNALL = ctn.CTNALL,
// PKGS = ctn.PKGS,
// KGS = ctn.KGS,
// CBM = ctn.CBM,
// KINDPKGS = ctn.KINDPKGS,
// DESCRIPTION = ctn.DESCRIPTION,
// MARKS = ctn.MARKS,
// PO = ctn.PO,
// SKU = ctn.SKU,
// SKUDESCRIP = ctn.SKUDESCRIP,
// DUNNO = ctn.DUNNO,
// HTS = ctn.HTS,
// CTOFORIGIN = ctn.CTOFORIGIN,
// GOODVALUE = ctn.GOODVALUE,
// CTNOWNER = ctn.CTNOWNER
// };
// dS7Data.op_seae_edi_ctn.Add(newctn);
// }
// }
// dS7Data.SaveChanges();
// }
// //只要有对应的往来单位=委托发送方 主分单都产生相应的应收
// info_client_md infoClient = null;
// if (!string.IsNullOrEmpty(CUSTOMERNAME))
// {
// infoClient = dS7Data.info_client.AsNoTracking().FirstOrDefault(x => x.SHORTNAME == CUSTOMERNAME);
// if (infoClient != null)
// {
// op_other.SALE = infoClient.SALE; //揽货人赋值
// //查询配置,生成应收
// var fee = dS7Data.CustFeeTemplateDetail.AsNoTracking().FirstOrDefault(x => x.CUSTOMERNAME == 费用标准结算对象 && x.FEENAME == FeeShouName);
// if (fee == null) {
// fee = dS7Data.CustFeeTemplateDetail.AsNoTracking().FirstOrDefault(x => x.CUSTOMERNAME == 委托单位.SHORTNAME && x.FEENAME == FeeShouName);
// }
// if (fee != null )
// {
// var feeShou = new ch_fee_md();
// feeShou.GID = Guid.NewGuid().ToString().Replace("-", "");
// feeShou.BSNO = op_other.BSNO;
// feeShou.FEETYPE = 1;
// feeShou.FEENAME = FeeShouName;
// feeShou.CUSTOMERTYPE = "其他";
// feeShou.CUSTOMERNAME = infoClient.SHORTNAME;
// feeShou.UNIT = fee.UNIT;
// feeShou.UNITPRICE = fee.UNITPRICE;
// feeShou.QUANTITY = 1;
// feeShou.AMOUNT = fee.UNITPRICE;
// feeShou.EXCHANGERATE = 1;
// feeShou.CURRENCY = "RMB";
// feeShou.ENTEROPERATOR = FeeInputUserId;
// feeShou.ENTERDATE = DateTime.Now;
// feeShou.MODIFIEDUSER = FeeInputUserId;
// feeShou.MODIFIEDTIME = DateTime.Now;
// feeShou.LOCALCURR = feeShou.CURRENCY;
// feeShou.FEEDESCRIPTION = feeShou.FEENAME;
// feeShou.FEESTATUS = 0;//费用插入时状态为提交审核; 2021-12-8, 要求插入时状态改为录入状态: 1; 2021-12-9, 要求状态为审核通过状态: 0
// //2021-12-8, 下列字段不能为空, 写入默认值
// feeShou.SETTLEMENT = 0;
// feeShou.ORDERAMOUNT = 0;
// feeShou.ORDERINVOICE = 0;
// feeShou.ORDERINVSETTLEMENT = 0;
// feeShou.ORDERSETTLEMENT = 0;
// feeShou.INVOICE = 0;
// feeShou.TAXRATE = 0;
// feeShou.ISADVANCEDPAY = false;
// feeShou.ISINVOICE = false;
// feeShou.ISCRMORDERFEE = false;
// feeShou.TAXUNITPRICE = fee.UNITPRICE;//2021-12-29, 于菲: 同样赋值单价和金额
// feeShou.NOTAXAMOUNT = fee.UNITPRICE;//2021-12-29, 于菲: 同样赋值单价和金额
// //2021-12-9, 要求下列字段不能为空, 填写0或false
// feeShou.COMMISSIONRATE = 0;
// feeShou.AUDITSTATUS = 0;
// feeShou.LINENUM = 0;
// feeShou.ISDEBIT = false;
// feeShou.ISOPEN = false;
// feeShou.ACCTAXRATE = 0;
// feeShou.ISVOU = false;
// feeShou.TAX = 0;
// feeShou.PREAMOUNT = 0;
// feeShou.ISACC = false;
// feeShou.CUSTDUI = false;
// feeShou.BXGID = HBLNO;
// //2021-12-23: 分单号写入备注
// //if (!string.IsNullOrEmpty(HBLNO))
// //{
// // feeShou.REMARK += $" {HBLNO} ";
// //}
// dS7Data.ch_fee.Add(feeShou);
// }
// }
// }
// if (FeePayCustomerType == "船代") {
// //20230327 改为:
// //如应付对象类型为船代 则结算对象改为该业务的船代公司
// FeePayCustomer = 船代;
// }
// var 分单号 = HBLNO;
// if (string.IsNullOrWhiteSpace(HBLNO)) {
// 分单号 = MBLNO;
// }
// //应付
// if (string.IsNullOrEmpty(HBLNO) && FeePayPrice>0) //主单才插入船代费用
// {
// var feeFu = new ch_fee_md();
// feeFu.GID = Guid.NewGuid().ToString().Replace("-", "");
// feeFu.BSNO = op_other.BSNO;
// feeFu.FEETYPE = 2;
// feeFu.FEENAME = FeePayName;
// feeFu.CUSTOMERTYPE = FeePayCustomerType;
// feeFu.CUSTOMERNAME = FeePayCustomer;
// feeFu.UNIT = "票";
// feeFu.UNITPRICE = FeePayPrice;
// feeFu.QUANTITY = 1;
// feeFu.AMOUNT = FeePayPrice;
// feeFu.EXCHANGERATE = 1;
// feeFu.CURRENCY = "RMB";
// feeFu.ENTEROPERATOR = FeeInputUserId;
// feeFu.ENTERDATE = DateTime.Now;
// feeFu.MODIFIEDUSER = FeeInputUserId;
// feeFu.MODIFIEDTIME = DateTime.Now;
// feeFu.LOCALCURR = feeFu.CURRENCY;
// feeFu.FEEDESCRIPTION = feeFu.FEENAME;
// feeFu.FEESTATUS = 0;//费用插入时状态为提交审核; 2021-12-8, 要求插入时状态改为录入状态: 1; 2021-12-9, 要求状态为审核通过状态: 0
// //2021-12-8, 下列字段不能为空, 写入默认值
// feeFu.SETTLEMENT = 0;
// feeFu.ORDERAMOUNT = 0;
// feeFu.ORDERINVOICE = 0;
// feeFu.ORDERINVSETTLEMENT = 0;
// feeFu.ORDERSETTLEMENT = 0;
// feeFu.INVOICE = 0;
// feeFu.TAXRATE = 0;
// feeFu.ISADVANCEDPAY = false;
// feeFu.ISINVOICE = false;
// feeFu.ISCRMORDERFEE = false;
// feeFu.TAXUNITPRICE = FeePayPrice;
// feeFu.NOTAXAMOUNT = 0;
// //2021-12-9, 要求下列字段不能为空, 填写0或false
// feeFu.COMMISSIONRATE = 0;
// feeFu.AUDITSTATUS = 0;
// feeFu.LINENUM = 0;
// feeFu.ISDEBIT = false;
// feeFu.ISOPEN = false;
// feeFu.ACCTAXRATE = 0;
// feeFu.ISVOU = false;
// feeFu.TAX = 0;
// feeFu.PREAMOUNT = 0;
// feeFu.ISACC = false;
// feeFu.CUSTDUI = false;
// feeFu.BXGID = 分单号;
// dS7Data.ch_fee.Add(feeFu);
// dS7Data.SaveChanges();
// }
// if (FeePayMyshippingPrice > 0) {
// //不管主单分单都要付费给大简云
// var feeFuDJY = new ch_fee_md();
// feeFuDJY.GID = Guid.NewGuid().ToString().Replace("-", "");
// feeFuDJY.BSNO = op_other.BSNO;
// feeFuDJY.FEETYPE = 2;
// feeFuDJY.FEENAME = FeePayMyshippingName;
// feeFuDJY.CUSTOMERTYPE = "其他";
// feeFuDJY.CUSTOMERNAME = FeePayMyshippingCustomer;
// feeFuDJY.UNIT = "票";
// feeFuDJY.UNITPRICE = FeePayMyshippingPrice;
// feeFuDJY.QUANTITY = 1;
// feeFuDJY.AMOUNT = FeePayMyshippingPrice;
// feeFuDJY.EXCHANGERATE = 1;
// feeFuDJY.CURRENCY = "RMB";
// feeFuDJY.ENTEROPERATOR = FeeInputUserId;
// feeFuDJY.ENTERDATE = DateTime.Now;
// feeFuDJY.MODIFIEDUSER = FeeInputUserId;
// feeFuDJY.MODIFIEDTIME = DateTime.Now;
// feeFuDJY.LOCALCURR = feeFuDJY.CURRENCY;
// feeFuDJY.FEEDESCRIPTION = feeFuDJY.FEENAME;
// feeFuDJY.FEESTATUS = 0;//费用插入时状态为提交审核; 2021-12-8, 要求插入时状态改为录入状态: 1; 2021-12-9, 要求状态为审核通过状态: 0
// //2021-12-8, 下列字段不能为空, 写入默认值
// feeFuDJY.SETTLEMENT = 0;
// feeFuDJY.ORDERAMOUNT = 0;
// feeFuDJY.ORDERINVOICE = 0;
// feeFuDJY.ORDERINVSETTLEMENT = 0;
// feeFuDJY.ORDERSETTLEMENT = 0;
// feeFuDJY.INVOICE = 0;
// feeFuDJY.TAXRATE = 0;
// feeFuDJY.ISADVANCEDPAY = false;
// feeFuDJY.ISINVOICE = false;
// feeFuDJY.ISCRMORDERFEE = false;
// feeFuDJY.TAXUNITPRICE = FeePayMyshippingPrice;
// feeFuDJY.NOTAXAMOUNT = 0;
// //2021-12-9, 要求下列字段不能为空, 填写0或false
// feeFuDJY.COMMISSIONRATE = 0;
// feeFuDJY.AUDITSTATUS = 0;
// feeFuDJY.LINENUM = 0;
// feeFuDJY.ISDEBIT = false;
// feeFuDJY.ISOPEN = false;
// feeFuDJY.ACCTAXRATE = 0;
// feeFuDJY.ISVOU = false;
// feeFuDJY.TAX = 0;
// feeFuDJY.PREAMOUNT = 0;
// feeFuDJY.ISACC = false;
// feeFuDJY.CUSTDUI = false;
// feeFuDJY.BXGID = 分单号;
// dS7Data.ch_fee.Add(feeFuDJY);
// //dS7Data.Database.Log = (x => { logger.Debug(x); });
// dS7Data.SaveChanges();
// }
// }
// }
// catch (Exception e) {
// logger.Error($"导入舱单出错:{e}");
// }
//}
/// <summary>
/// 生成编号( 从东胜7移植并修改)
/// </summary>
/// <param name="billType"></param>
/// <param name="bsdate"></param>
/// <param name="accdate"></param>
/// <param name="dbname"></param>
/// <param name="opname"></param>
/// <param name="corpid"></param>
/// <param name="bshead"></param>
/// <returns></returns>
private string GetBillNo ( SysBillNoSet billType , string bsdate , string accdate , string dbname = "" , string opname = "" , string corpid = "" , string bshead = "" )
{
var orgCode = "" ;
var UserCode = "" ;
UserCode = GetUserCode ( opname , dbname ) ;
orgCode = GetCorpCode ( corpid , dbname ) ;
//List<SqlParameter> paramArray = new List<SqlParameter>();
//paramArray.Add(new SqlParameter("@ps_BillType", billType.BILLTYPE));
//paramArray.Add(new SqlParameter("@ps_OrgCode", orgCode));
//paramArray.Add(new SqlParameter("@ps_EmpCode", UserCode));
//paramArray.Add(new SqlParameter("@ps_bshead", bshead));
//if (billType.RULEDATETYPE == "业务日期")
// paramArray.Add(new SqlParameter("@ps_Date", bsdate));
//else if (billType.RULEDATETYPE == "会计期间" && accdate.Length == 7)
// paramArray.Add(new SqlParameter("@ps_Date", accdate + "-01"));
//else
// paramArray.Add(new SqlParameter("@ps_Date", accdate + ""));
//paramArray.Add(new SqlParameter("@ps_BillNo", 20));
//SqlParameter sqlParaOut = new SqlParameter("@ps_RefBillNo", SqlDbType.VarChar, 50);
//sqlParaOut.Direction = ParameterDirection.Output;
//paramArray.Add(sqlParaOut);
//dS7Data.Database.ExecuteSqlCommand("EXEC [sSysGetBillNo_new] @ps_BillType,@ps_OrgCode,@ps_EmpCode,@ps_bshead,@ps_Date,@ps_BillNo,@ps_RefBillNo output", paramArray.ToArray());
//ExecStoredProcedure("sSysGetBillNo_new", paramArray.ToArray());
var bsDate = string . Empty ;
if ( ! string . IsNullOrWhiteSpace ( bsdate ) )
bsdate = Convert . ToDateTime ( bsdate ) . ToString ( "yyyy-MM-dd" ) ;
if ( billType . RULEDATETYPE = = "业务日期" )
bsDate = bsdate ;
else if ( billType . RULEDATETYPE = = "会计期间" & & accdate . Length = = 7 )
bsDate = accdate + "-01" ;
else
bsDate = accdate ;
var cmd = $ @ "DECLARE @ps_BillNo varchar(20)
EXEC [ sSysGetBillNo_new ]
@ps_BillType = N ' { billType . BILLTYPE } ' ,
@ps_OrgCode = N ' { orgCode } ' ,
@ps_EmpCode = N ' { UserCode } ' ,
@ps_Date = N ' { bsDate } ' ,
@ps_bshead = N ' { bshead } ' ,
@ps_BillNo = @ps_BillNo OUTPUT ,
@ps_RefBillNo = N ' '
SELECT @ps_BillNo as N ' billno ' ";
return dS7Data . Database . SqlQuery < string > ( cmd ) . First ( ) ;
}
/// <summary>
/// 获取用户code( 参考东胜7修改)
/// </summary>
/// <param name="username"></param>
/// <param name="dbname"></param>
/// <returns></returns>
private string GetUserCode ( string username , string dbname = "" )
{
//string EDICODE = "";
//var strSql = new StringBuilder();
//strSql.Append("select CODENAME from [user] where SHOWNAME='" + username + "'");
//Database db = string.IsNullOrWhiteSpace(dbname) ? DatabaseFactory.CreateDatabase() : DatabaseFactory.CreateDatabase(dbname);
//using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
//{
// while (reader.Read())
// {
// EDICODE = Convert.ToString(reader["CODENAME"]);
// }
// reader.Close();
//}
//return EDICODE;
return dS7Data . Database . SqlQuery < string > ( "select CODENAME from [user] where SHOWNAME='" + username + "'" ) . FirstOrDefault ( ) ;
}
/// <summary>
/// 获取公司code( 参考东胜7修改)
/// </summary>
/// <param name="Corpid"></param>
/// <param name="dbname"></param>
/// <returns></returns>
private string GetCorpCode ( string Corpid , string dbname = "" )
{
//string EDICODE = "";
//var strSql = new StringBuilder();
//strSql.Append("select CODENAME from [company] where GID='" + Corpid + "'");
//Database db = string.IsNullOrWhiteSpace(dbname) ? DatabaseFactory.CreateDatabase() : DatabaseFactory.CreateDatabase(dbname);
//using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
//{
// while (reader.Read())
// {
// EDICODE = Convert.ToString(reader["CODENAME"]);
// }
// reader.Close();
//}
//return EDICODE;
return dS7Data . Database . SqlQuery < string > ( "select CODENAME from [company] where GID='" + Corpid + "'" ) . FirstOrDefault ( ) ;
}
public static int ExecStoredProcedure ( string procName , params SqlParameter [ ] parameters )
{
int rtn = 0 ;
using ( SqlConnection conn = new SqlConnection ( DS6ConnStr ) )
{
conn . Open ( ) ;
using ( SqlCommand cmd = conn . CreateCommand ( ) )
{
SqlTransaction st = conn . BeginTransaction ( ) ;
cmd . Transaction = st ;
try
{
cmd . CommandText = procName ;
cmd . CommandType = CommandType . StoredProcedure ;
cmd . Parameters . AddRange ( parameters ) ;
var rr = cmd . ExecuteScalar ( ) ;
st . Commit ( ) ;
return rtn ;
}
catch ( SqlException sqlex )
{
st . Rollback ( ) ;
throw sqlex ;
}
}
}
}
/// <summary>
/// 调用DS6的委托编号存储过程
///
/// </summary>
/// <param name="Code">SE加会计期间年月 共8位</param>
/// <returns></returns>
public static string DS6GetBSNO ( string Code )
{
//string strConnection = "user id=sa;password=sa;initial catalog=MyTest;Server=YHB;Connect Timeout=30";
using ( SqlConnection conn = new SqlConnection ( DS6ConnStr ) )
{
conn . Open ( ) ;
using ( SqlCommand sqlComm = conn . CreateCommand ( ) )
{
//设置要调用的存储过程的名称
sqlComm . CommandText = "p_no_get" ;
//指定SqlCommand对象传给数据库的是存储过程的名称而不是sql语句
sqlComm . CommandType = CommandType . StoredProcedure ;
SqlParameter username = sqlComm . Parameters . Add ( new SqlParameter ( "@Code" , SqlDbType . VarChar , 20 ) ) ;
//指明"@username"是输入参数
username . Direction = ParameterDirection . Input ;
//为“@username”参数赋值
username . Value = Code ;
SqlParameter Num = sqlComm . Parameters . Add ( new SqlParameter ( "@Num" , SqlDbType . VarChar , 20 ) ) ;
//指定"@password"为输出参数
Num . Direction = ParameterDirection . Output ;
//执行
sqlComm . ExecuteNonQuery ( ) ;
//得到输出参数的值,把赋值给name,注意,这里得到的是object类型的,要进行相应的类型轮换
string num = Convert . ToString ( sqlComm . Parameters [ "@Num" ] . Value ) ;
return num ;
//MessageBox.Show(passwrod);
}
}
return "" ;
}
#region 大简云通过消息队列发布的订舱数据, 保存至DS6 用于合川家业务从大简云发布的消息队列中解析至DS6数据库
public void DingCangToDS6 ( JArray jarr )
{
var itemstr = "" ;
decimal mark = 0.0 M ;
var errorobjstr = "" ;
try
{
DS6DataContext DS6Data = new DS6DataContext ( ) ;
foreach ( var item in jarr )
{
var obj = item as JObject ;
itemstr = item . ToString ( ) ;
var head = JsonConvert . DeserializeObject < DingCangHead > ( itemstr ) ;
//判断业务是否存在。判断依据为head.
//如果不存在 则新增
//如存在,则删除原有箱信息。
var currentBillList = DS6Data . t_op_seae . Where ( x = > x . DJYID = = head . Id ) . ToList ( ) ;
if ( currentBillList ! = null & & currentBillList . Count > 0 )
{
//更新当前业务
var updrec = currentBillList [ 0 ] ;
var headid = updrec . 编 号 ;
var newhead = head . GetOpseae ( ) ;
//过滤权限 20230421 正式使用后不做人员限制
//var cando = 人员是否具备权限(newhead.录入人, "776");
//if (!cando)
//{
// logger.Debug($"录入人无权限:{newhead.录入人}");
// continue;
//}
//ETD ATD 使用原有数据而不用大简云发布的信息覆盖(已取消)
//newhead.ETD = updrec.ETD;
//newhead.开船日期= updrec.开船日期;
newhead . 编 号 = updrec . 编 号 ;
newhead . 主 编 号 = updrec . 主 编 号 ;
//20230523 改为接收业务状态
//newhead.业务状态 = updrec.业务状态;
newhead . 费 用 状 态 = updrec . 费 用 状 态 ;
newhead . 主 提 单 标 准 = string . IsNullOrWhiteSpace ( head . mblno ) ? updrec . 编 号 : head . mblno ;
newhead . 报 关 标 准 = updrec . 报 关 标 准 ;
newhead . 报 检 标 准 = updrec . 报 检 标 准 ;
newhead . 分 提 单 标 准 = updrec . 分 提 单 标 准 ;
newhead . 核 销 标 准 = updrec . 核 销 标 准 ;
newhead . 委 托 标 准 = updrec . 委 托 标 准 ;
newhead . 业 务 编 号 = updrec . 业 务 编 号 ;
Set 头 表 箱 封 号 件 重 尺 ( ref newhead , head ) ;
DS6Data . t_op_seae . AddOrUpdate ( newhead ) ;
#region 箱信息
var Currctnlist = DS6Data . t_op_ctn . Where ( x = > x . 编 号 = = headid ) . ToList ( ) ;
var ctn_addlist = new List < t_op_ctn_md > ( ) ;
var ctn_updlist = new List < t_op_ctn_md > ( ) ;
var ctn_dellist = new List < t_op_ctn_md > ( ) ;
var newctnList = head . GetCtnList ( newhead . 编 号 ) ;
foreach ( var ctn in newctnList )
{
if ( Currctnlist . Exists ( x = > x . DJYCTNID = = ctn . DJYCTNID ) )
{
var currctn = Currctnlist . First ( x = > x . DJYCTNID = = ctn . DJYCTNID ) ;
DingCangHead . GetCtn ( ref currctn , ctn ) ;
ctn_updlist . Add ( currctn ) ;
}
else {
ctn_addlist . Add ( ctn ) ;
}
}
foreach ( var oldctn in Currctnlist )
{
if ( newctnList . Exists ( x = > x . DJYCTNID = = oldctn . DJYCTNID ) )
{
}
else
{
ctn_dellist . Add ( oldctn ) ;
}
}
if ( ctn_addlist . Count > 0 )
{
DS6Data . t_op_ctn . AddRange ( ctn_addlist ) ;
}
if ( ctn_updlist . Count > 0 )
{
foreach ( var updctn in ctn_updlist )
{
DS6Data . t_op_ctn . AddOrUpdate ( updctn ) ;
}
}
if ( ctn_dellist . Count > 0 )
{
DS6Data . t_op_ctn . RemoveRange ( ctn_dellist ) ;
}
# endregion
#region 提单信息
var amslist = DS6Data . t_op_ams . Where ( x = > x . 编 号 = = headid ) . ToList ( ) ;
DS6Data . t_op_ams . RemoveRange ( amslist ) ;
var newamslist = head . GetAmsList ( newhead ) ;
DS6Data . t_op_ams . AddRange ( newamslist ) ;
# endregion
#region 分单
//分单列表
var newassistantList = head . GetAssistantList ( newhead ) ;
var old_assistantList = DS6Data . t_op_seae_assistant . Where ( x = > x . 编 号 = = headid ) . ToList ( ) ;
var assistantUpdList = new List < t_op_seae_assistant_md > ( ) ;
var assistantAddList = new List < t_op_seae_assistant_md > ( ) ;
var assistantDelList = new List < t_op_seae_assistant_md > ( ) ;
//DS6Data.t_op_seae_assistant.RemoveRange(amslist);
foreach ( var assistant in newassistantList )
{
if ( old_assistantList . Exists ( x = > x . DJYCHILDRENID = = assistant . DJYCHILDRENID ) )
{
var curr = old_assistantList . First ( x = > x . DJYCHILDRENID = = assistant . DJYCHILDRENID ) ;
DingCangHead . GetAssistant ( ref curr , assistant ) ;
assistantUpdList . Add ( curr ) ;
}
else
{
assistantAddList . Add ( assistant ) ;
}
}
foreach ( var old in old_assistantList )
{
if ( newassistantList . Exists ( x = > x . DJYCHILDRENID = = old . DJYCHILDRENID ) )
{
}
else
{
assistantDelList . Add ( old ) ;
}
}
if ( assistantAddList . Count > 0 )
{
DS6Data . t_op_seae_assistant . AddRange ( assistantAddList ) ;
}
if ( assistantUpdList . Count > 0 )
{
foreach ( var upd in assistantUpdList )
{
DS6Data . t_op_seae_assistant . AddOrUpdate ( upd ) ;
}
}
if ( assistantDelList . Count > 0 )
{
DS6Data . t_op_seae_assistant . RemoveRange ( assistantDelList ) ;
}
# endregion
#region 业务状态
var Currstatuslist = DS6Data . t_op_state . Where ( x = > x . 编 号 = = headid ) . ToList ( ) ;
if ( Currstatuslist ! = null & & Currstatuslist . Count > 0 ) {
DS6Data . t_op_state . RemoveRange ( Currstatuslist ) ;
mark = 1.11 m ;
}
var statusList = head . GetOpStatus ( newhead ) ;
if ( statusList ! = null & & statusList . Count > 0 )
{
DS6Data . t_op_state . AddRange ( statusList ) ;
mark = 1.12 m ;
}
# endregion
mark = 1.2 m ;
var ob = new
{
head = newhead ,
ctnlist = ctn_addlist ,
amslist = newamslist ,
ass1 = assistantAddList ,
ass2 = assistantUpdList ,
ass3 = assistantDelList ,
} ;
errorobjstr = JsonConvert . SerializeObject ( ob ) ;
DS6Data . SaveChanges ( ) ;
}
else {
//新增业务
var newhead = head . GetOpseae ( ) ;
//过滤权限
//var cando = 人员是否具备权限(newhead.录入人, "776");
//if (!cando) continue;
var 编 号 = DS6Data . t_op_seae . Max ( m = > m . 编 号 ) ;
if ( 编 号 = = null ) 编 号 = "0" ;
var new 编 号 = ( int . Parse ( 编 号 ) + 1 ) . ToString ( ) . PadLeft ( 10 , ' ' ) ;
newhead . 编 号 = new 编 号 ;
newhead . 主 编 号 = new 编 号 ;
newhead . 主 提 单 标 准 = string . IsNullOrWhiteSpace ( head . mblno ) ? new 编 号 : head . mblno ;
newhead . 报 关 标 准 = new 编 号 ;
newhead . 报 检 标 准 = new 编 号 ;
newhead . 分 提 单 标 准 = new 编 号 ;
newhead . 核 销 标 准 = new 编 号 ;
newhead . 委 托 标 准 = new 编 号 ;
var 业 务 编 号 Code = "SE" + ( ( DateTime ) ( newhead . 会 计 期 间 ) ) . Year . ToString ( ) + ( ( DateTime ) ( newhead . 会 计 期 间 ) ) . Month . ToString ( ) . PadLeft ( 2 , '0' ) ;
newhead . 业 务 编 号 = DS6GetBSNO ( 业 务 编 号 Code ) ;
Set 头 表 箱 封 号 件 重 尺 ( ref newhead , head ) ;
DS6Data . t_op_seae . Add ( newhead ) ;
mark = 2.1 m ;
DS6Data . SaveChanges ( ) ;
newhead = DS6Data . t_op_seae . First ( x = > x . 业 务 编 号 = = newhead . 业 务 编 号 ) ;
var headid = newhead . 编 号 ;
var ctnlist = DS6Data . t_op_ctn . Where ( x = > x . 编 号 = = headid ) . ToList ( ) ;
if ( ctnlist ! = null & & ctnlist . Count > 0 )
DS6Data . t_op_ctn . RemoveRange ( ctnlist ) ;
var newctnList = head . GetCtnList ( newhead . 编 号 ) ;
DS6Data . t_op_ctn . AddRange ( newctnList ) ;
var amslist = DS6Data . t_op_ams . Where ( x = > x . 编 号 = = headid ) . ToList ( ) ;
DS6Data . t_op_ams . RemoveRange ( amslist ) ;
var newamslist = head . GetAmsList ( newhead ) ;
DS6Data . t_op_ams . AddRange ( newamslist ) ;
var old_assistantList = DS6Data . t_op_seae_assistant . Where ( x = > x . 编 号 = = headid ) . ToList ( ) ;
//var assistantUpdList = new List<t_op_seae_assistant_md>();
var assistantAddList = new List < t_op_seae_assistant_md > ( ) ;
var assistantDelList = new List < t_op_seae_assistant_md > ( ) ;
//DS6Data.t_op_seae_assistant.RemoveRange(amslist);
var newassistantList = head . GetAssistantList ( newhead ) ;
foreach ( var newassis in newassistantList )
{
if ( old_assistantList ! = null & & old_assistantList . Count > 0 )
{
foreach ( var oldassis in old_assistantList )
{
if ( newassis . BSNO = = oldassis . BSNO )
{
assistantDelList . Add ( oldassis ) ;
}
else
{
}
}
}
assistantAddList . Add ( newassis ) ;
}
if ( assistantDelList . Count > 0 )
DS6Data . t_op_seae_assistant . RemoveRange ( assistantDelList ) ;
//if (assistantUpdList.Count > 0)
//{
// foreach (var upd in assistantUpdList)
// DS6Data.t_op_seae_assistant.Add(upd);
//}
if ( assistantAddList . Count > 0 )
DS6Data . t_op_seae_assistant . AddRange ( assistantAddList ) ;
logger . Debug ( $"添加数据:{newhead}" ) ;
mark = 3.1 m ;
#region 业务状态
var Currstatuslist = DS6Data . t_op_state . Where ( x = > x . 编 号 = = headid ) . ToList ( ) ;
if ( Currstatuslist ! = null & & Currstatuslist . Count > 0 )
{
DS6Data . t_op_state . RemoveRange ( Currstatuslist ) ;
mark = 3.21 m ;
}
var statusList = head . GetOpStatus ( newhead ) ;
if ( statusList ! = null & & statusList . Count > 0 )
{
DS6Data . t_op_state . AddRange ( statusList ) ;
mark = 3.22 m ;
}
# endregion
mark = 3.3 m ;
DS6Data . SaveChanges ( ) ;
}
}
}
catch ( Exception e )
{
logger . Error ( $"导入订舱信息出错{mark}: {e}//{errorobjstr}" ) ;
}
}
public static void Set 头 表 箱 封 号 件 重 尺 ( ref t_op_seae_md newhead , DingCangHead head ) {
var ctnList = head . GetCtnList ( newhead . 编 号 ) ;
newhead . 箱 号 封 号 = "" ;
newhead . 件 数 包 装 = head . pkgs . ToString ( ) + head . kindpkgs ;
newhead . 货 物 重 量 = head . kgs . ToString ( ) + "KGS" ;
newhead . 货 物 尺 码 = head . cbm . ToString ( ) + "CBM" ;
if ( ctnList ! = null & & ctnList . Count > 0 ) {
foreach ( var ctn in ctnList )
{
if ( ! string . IsNullOrWhiteSpace ( ctn . 箱 号 ) | | ! string . IsNullOrWhiteSpace ( ctn . 封 号 ) )
{
if ( newhead . 箱 号 封 号 ! = "" ) newhead . 箱 号 封 号 + = "\r\n" ;
newhead . 箱 号 封 号 + = ( string . IsNullOrWhiteSpace ( ctn . 箱 号 ) ? "" : ctn . 箱 号 ) + ( string . IsNullOrWhiteSpace ( ctn . 封 号 ) ? "" : "/" + ctn . 封 号 ) ;
}
//if (ctn.件数 != null && ctn.件数 != 0 && !string.IsNullOrWhiteSpace(ctn.包装)) {
// if (newhead.件数包装 != "") newhead.件数包装 += "\r\n";
// newhead.件数包装 += ctn.件数.ToString() + ctn.包装;
//}
//if (ctn.重量 != null)// && ctn.重量 != 0
//{
// if (newhead.货物重量 != "") newhead.货物重量 += "\r\n";
// newhead.货物重量 += ctn.重量.ToString() + "KGS";
//}
//if (ctn.尺码 != null)//&& ctn.尺码 != 0
//{
// if (newhead.货物尺码 != "") newhead.货物尺码 += "\r\n";
// newhead.货物尺码 += ctn.尺码.ToString() + "CBM";
//}
}
}
}
public bool 人 员 是 否 具 备 权 限 ( string username , string 权 限 值 ) {
//SELECT [人员] FROM[dbo].[t_sys_code_emp] where 权限代码 = '776' and 是否可操作 = 1
/ *
var ds6 = new DS6DataContext ( ) ;
var _userinfo = ds6 . t_sys_code_emp . Where ( x = > x . 人 员 = = username & & x . 权 限 代 码 = = "776" & & x . 是 否 可 操 作 = = true ) . ToList ( ) ;
if ( _userinfo ! = null & & _userinfo . Count > 0 )
{
return true ;
}
else {
return false ;
} * /
//测试期逻辑 判断是否在配置文件字段中存在
if ( usernamelist . IndexOf ( username ) > = 0 ) {
return true ;
}
else
{
return false ;
}
}
public bool CanDelete ( t_op_seae_md opseae ) {
var ds6 = new DS6DataContext ( ) ;
var chfeeList = ds6 . t_ch_fee . Where ( x = > x . 编 号 = = opseae . 编 号 ) . ToList ( ) ;
if ( chfeeList = = null | | chfeeList . Count = = 0 )
{
return true ;
}
else {
return false ;
}
}
public void DelToDS6 ( string Ids )
{
//try
//{
DS6DataContext DS6Data = new DS6DataContext ( ) ;
List < string > IdList = Ids . Split ( ',' ) . ToList ( ) ;
foreach ( var id in IdList )
{
logger . Debug ( $"删除订舱信息: DJYID:{id}" ) ;
long idlong = Convert . ToInt64 ( id ) ;
var currentBillList = DS6Data . t_op_seae . Where ( x = > x . DJYID = = idlong ) . ToList ( ) ;
if ( currentBillList ! = null & & currentBillList . Count > 0 )
{
var delrec = currentBillList [ 0 ] ;
var headid = delrec . 编 号 ;
if ( ! CanDelete ( delrec ) )
{
return ;
}
logger . Debug ( $"删除订舱信息: delrec:{JsonConvert.SerializeObject(delrec)}" ) ;
DS6Data . t_op_seae . Remove ( delrec ) ;
var ctnlist = DS6Data . t_op_ctn . Where ( x = > x . 编 号 = = headid ) . ToList ( ) ;
if ( ctnlist . Count > 0 )
{
logger . Debug ( $"删除订舱信息: ctnlist:{JsonConvert.SerializeObject(ctnlist)}" ) ;
DS6Data . t_op_ctn . RemoveRange ( ctnlist ) ;
}
var amslist = DS6Data . t_op_ams . Where ( x = > x . 编 号 = = headid ) . ToList ( ) ;
if ( amslist . Count > 0 ) {
logger . Debug ( $"删除订舱信息: amslist:{JsonConvert.SerializeObject(amslist)}" ) ;
DS6Data . t_op_ams . RemoveRange ( amslist ) ;
}
var old_assistantList = DS6Data . t_op_seae_assistant . Where ( x = > x . 编 号 = = headid ) . ToList ( ) ;
if ( old_assistantList . Count > 0 ) {
logger . Debug ( $"删除订舱信息: old_assistantList:{JsonConvert.SerializeObject(old_assistantList)}" ) ;
DS6Data . t_op_seae_assistant . RemoveRange ( old_assistantList ) ;
}
logger . Debug ( $"删除订舱信息: DJYID:{id}" ) ;
DS6Data . SaveChanges ( ) ;
logger . Debug ( $"删除订舱信息: DJYID:OK" ) ;
}
}
//}
//catch (Exception e)
//{
// logger.Error($"删除订舱信息出错:{e}");
//}
}
# endregion
#region 处理业务函电
public void DS6OpLetter_RH ( string itemstr )
{
try
{
DS6DataContext DS6Data = new DS6DataContext ( ) ;
var rh = JsonConvert . DeserializeObject < 大 简 云 入 货 通 知 > ( itemstr ) ;
var letter = rh . GetLetter ( ) ;
letter . SaveLetter ( ) ;
}
catch ( Exception e )
{
logger . Error ( $"入货通知出错:{e}////" + itemstr ) ;
}
}
public void DS6OpLetter_PC ( string itemstr )
{
try
{
DS6DataContext DS6Data = new DS6DataContext ( ) ;
var rh = JsonConvert . DeserializeObject < 大 简 云 派 车 > ( itemstr ) ;
var letter = rh . GetLetter ( ) ;
letter . SaveLetter ( rh ) ;
}
catch ( Exception e )
{
logger . Error ( $"派车通知出错:{e}////" + itemstr ) ;
}
}
# endregion
#region 大简云订舱数据解析类
public class DingCangHead
{
public long Id { get ; set ; }
public string bsno { get ; set ; } //"string",
public string bsstatus { get ; set ; } //"string",
public string bsstatusname { get ; set ; } //"string",
public DateTime ? bsdate { get ; set ; } //"2023-03-30T03:12:51.033Z",
public string mblno { get ; set ; } //"string",
public string tmblno { get ; set ; } //"string",
public string hblno { get ; set ; } //"string",
public string bookingno { get ; set ; } //"string",
public string contractno { get ; set ; } //"string",
public string servicecontractno { get ; set ; } //"string",
public string shipperid { get ; set ; } //"string",
public string consigneeid { get ; set ; } //"string",
public string notifypartyid { get ; set ; } //"string",
public string shipper { get ; set ; } //"string",
public string consignee { get ; set ; } //"string",
public string notifyparty { get ; set ; } //"string",
public string notifypartY2 { get ; set ; } //"string",
public string foreignAgent { get ; set ; } //"string",
public string yardid { get ; set ; } //"string",
public string yard { get ; set ; } //"string",
public string vesselid { get ; set ; } //"string",
public string vessel { get ; set ; } //"string",
public string voyno { get ; set ; } //"string",
public string voynoinner { get ; set ; } //"string",
public DateTime ? etd { get ; set ; } //"2023-03-30T03:12:51.033Z",
/// <summary>
/// 云港通ETD( 爬取的ETD) 写入
/// </summary>
public DateTime ? YgtETD { get ; set ; } //"2023-03-30T03:12:51.033Z",
public DateTime ? atd { get ; set ; } //"2023-03-30T03:12:51.033Z",
public DateTime ? closingdate { get ; set ; } //"2023-03-30T03:12:51.033Z",
public DateTime ? closedocdate { get ; set ; } //"2023-03-30T03:12:51.033Z",
public DateTime ? closevgmdate { get ; set ; } //"2023-03-30T03:12:51.033Z",
public DateTime ? eta { get ; set ; } //"2023-03-30T03:12:51.033Z",
public string placereceiptid { get ; set ; } //"string",
public string placereceipt { get ; set ; } //"string",
public string portloadid { get ; set ; } //"string",
public string portload { get ; set ; } //"string",
public string portdischargeid { get ; set ; } //"string",
public string portdischarge { get ; set ; } //"string",
public string placedeliveryid { get ; set ; } //"string",
public string placedelivery { get ; set ; } //"string",
public string destinationid { get ; set ; } //"string",
public string destination { get ; set ; } //"string",
public string nobill { get ; set ; } //"string",
public string copynobill { get ; set ; } //"string",
public string issuetype { get ; set ; } //"string",
public DateTime ? issuedate { get ; set ; } //"2023-03-30T03:12:51.033Z",
public string issueplaceid { get ; set ; } //"string",
public string issueplace { get ; set ; } //"string",
public string blfrt { get ; set ; } //"string",
public string prepardat { get ; set ; } //"string",
public string payableat { get ; set ; } //"string",
public string service { get ; set ; } //"string",
public string marks { get ; set ; } //"string",
public string hscode { get ; set ; } //"string",
public string description { get ; set ; } //"string",
public int? pkgs { get ; set ; } = 0 ;
public string kindpkgs { get ; set ; } //"string",
public decimal? kgs { get ; set ; } = 0 ;
public decimal? cbm { get ; set ; } = 0 ;
public string totalno { get ; set ; } //"string",
public string cntrtotal { get ; set ; } //"string",
public string carrierid { get ; set ; } //"string",
public string carrier { get ; set ; } //"string",
public string cargoid { get ; set ; } //"string",
public string dclass { get ; set ; } //"string",
public string dunno { get ; set ; } //"string",
public string dpage { get ; set ; } //"string",
public string dlabel { get ; set ; } //"string",
public string linkman { get ; set ; } //"string",
public string tempid { get ; set ; } //"string",
public string tempset { get ; set ; } //"string",
public string reeferf { get ; set ; } //"string",
public string humidity { get ; set ; } //"string",
public string tempmin { get ; set ; } //"string",
public string tempmax { get ; set ; } //"string",
public bool? iscontainersoc { get ; set ; } //true,
public string soremark { get ; set ; } //"订舱备注",
public string siremark { get ; set ; } //"string",
public string yardremark { get ; set ; } //"string",
public string compid { get ; set ; } //"string",
public string compname { get ; set ; } //"string",
public string shippername { get ; set ; } //"string",
public string shipperaddR1 { get ; set ; } //"string",
public string shipperaddR2 { get ; set ; } //"string",
public string shipperaddR3 { get ; set ; } //"string",
public string shippercity { get ; set ; } //"string",
public string shipperprovince { get ; set ; } //"string",
public string shipperpostcode { get ; set ; } //"string",
public string shippercountry { get ; set ; } //"string",
public string shipperattn { get ; set ; } //"string",
public string shippertel { get ; set ; } //"string",
public string consigneename { get ; set ; } //"string",
public string consigneeaddR1 { get ; set ; } //"string",
public string consigneeaddR2 { get ; set ; } //"string",
public string consigneeaddR3 { get ; set ; } //"string",
public string consigneecity { get ; set ; } //"string",
public string consigneeprovince { get ; set ; } //"string",
public string consigneepostcode { get ; set ; } //"string",
public string consigneercountry { get ; set ; } //"string",
public string consigneeattn { get ; set ; } //"string",
public string consigneetel { get ; set ; } //"string",
public string notifypartyname { get ; set ; } //"string",
public string notifypartyaddR1 { get ; set ; } //"string",
public string notifypartyaddR2 { get ; set ; } //"string",
public string notifypartyaddR3 { get ; set ; } //"string",
public string notifypartycity { get ; set ; } //"string",
public string notifypartyprovince { get ; set ; } //"string",
public string notifypartypostcode { get ; set ; } //"string",
public string notifypartycountry { get ; set ; } //"string",
public string notifypartyattn { get ; set ; } //"string",
public string notifypartytel { get ; set ; } //"string",
public string pono { get ; set ; } //"string",
public string opid { get ; set ; } //"string",
public string docid { get ; set ; } //"string",
public string op { get ; set ; } //"string",
public string doc { get ; set ; } //"string",
public string saleid { get ; set ; } //"string",
public string sale { get ; set ; } //"string",
public string custserviceid { get ; set ; } //"string",
public string custservice { get ; set ; } //"string",
public string customername { get ; set ; } //"string",
public string thirdPay { get ; set ; } //"第三方 第三方付费",
public string forwarder { get ; set ; } //"string",
public string shipagency { get ; set ; } //"string",
public string customser { get ; set ; } //"string",
public string trucker { get ; set ; } //"string",
public string agentid { get ; set ; } //"string",
public long? customerid { get ; set ; } //= 0;
public string forwarderid { get ; set ; } //"string",
public string shipagencyid { get ; set ; } //"string",
public string customserid { get ; set ; } //"string",
public string truckerid { get ; set ; } //"string",
public string agentname { get ; set ; } //"string",
public string weituo { get ; set ; } //"string",
public string consigneedooraddr { get ; set ; } //"string",
public string shipperdooraddr { get ; set ; } //"string",
public string scaccode { get ; set ; } //"string",
public string itncode { get ; set ; } //"string",
public string prepardatid { get ; set ; } //"string",
public string payableatid { get ; set ; } //"string",
public string custno { get ; set ; } //"string",
public string transportid { get ; set ; } //"string",
public string transport { get ; set ; } //"string",
public string thirdpayaddr { get ; set ; } //"string",
public string yardcontract { get ; set ; } //"string",
public string yardcontracttel { get ; set ; } //"string",
public string yardcontractemail { get ; set ; } //"string",
public bool? feeself { get ; set ; } //true,
public string lanecode { get ; set ; } //"string",
public string lanename { get ; set ; } //"string",
public string freightpayer { get ; set ; } //"string",
public string goodscode { get ; set ; } //"string",
public string goodsname { get ; set ; } //"string",
public string pkgstotal { get ; set ; } //"string",
public string kgstotal { get ; set ; } //"string",
public string cbmtotal { get ; set ; } //"string",
public string routeid { get ; set ; } //"string",
public string route { get ; set ; } //"string",
public string warehouse { get ; set ; } //"string",
public string warehouseID { get ; set ; } //"string",
public string epCode { get ; set ; } //"string",
/// <summary>
/// 用户自定义航线
/// </summary>
public string lineName { get ; set ; } //"string",
public string dzRemark { get ; set ; } //"string",
public string czRemark { get ; set ; } //"string",
public string createdUserName { get ; set ; } //"string",
public string ZhanCangFlag { get ; set ; } = "" ; //"string",
public string SourceName { get ; set ; } = "" ; //"string",
//public string CtnDayNum { get; set; } = "";//箱使堆存 废弃
public string ShenQingXiangShi { get ; set ; } = "" ; //箱使堆存
public List < DingCangCtn > ctnInputs { get ; set ; }
public DingCangbookingEDIExt bookingEDIExt { get ; set ; }
/// <summary>
/// 原来使用DingCangTDXX
/// </summary>
public List < DingCangHead > childrens { get ; set ; }
public List < DingCanggoodsStatus > goodsStatus { get ; set ; }
class 箱 型 箱 量 item
{
public t_code_ctn_md 箱 型 { get ; set ; }
public int 箱 量 { get ; set ; } = 0 ;
public 箱 型 箱 量 item ( t_code_ctn_md _ 箱 型 , int _ 箱 量 )
{
箱 型 = _ 箱 型 ;
箱 量 = _ 箱 量 ;
}
}
class 箱 型 箱 量
{
public List < 箱 型 箱 量 item > 箱 型 箱 量 信 息 { get ; set ; }
public t_code_ctn_de_md 箱 型 对 应 { get ; set ; }
public 箱 型 箱 量 ( )
{
var ds6 = new DS6DataContext ( ) ;
箱 型 箱 量 信 息 = new List < 箱 型 箱 量 item > ( ) ;
箱 型 对 应 = ds6 . t_code_ctn_de . FirstOrDefault ( x = > x . id = = 1 ) ;
}
public void Add ( 箱 型 箱 量 item newitem )
{
if ( 箱 型 箱 量 信 息 . Exists ( x = > x . 箱 型 = = newitem . 箱 型 ) )
{
箱 型 箱 量 信 息 . First ( x = > x . 箱 型 = = newitem . 箱 型 ) . 箱 量 + = newitem . 箱 量 ;
}
else
{
箱 型 箱 量 信 息 . Add ( newitem ) ;
}
}
public string get 集 装 箱 ( )
{
var result = "" ;
foreach ( var item in 箱 型 箱 量 信 息 )
{
if ( result ! = "" ) result + = " " ;
result + = item . 箱 型 . 表 现 形 式 + "*" + item . 箱 量 . ToString ( ) ;
}
return result ;
}
public string get 计 费 标 准 ( )
{
var result = "" ;
foreach ( var item in 箱 型 箱 量 信 息 )
{
if ( result ! = "" ) result + = " " ;
result + = item . 箱 型 . 表 现 形 式 + "*" + item . 箱 量 . ToString ( ) + "-" + item . 箱 型 . 表 现 形 式 ;
}
return result ;
}
public string get 箱 数 大 写 ( )
{
var result = "SAY: " ;
foreach ( var item in 箱 型 箱 量 信 息 )
{
if ( result ! = "SAY: " ) result + = " AND " ;
result + = NumberToEnglishString ( item . 箱 量 ) . ToUpper ( ) + " (" + item . 箱 型 . 表 现 形 式 + "*" + item . 箱 量 . ToString ( ) + ")" ;
}
result + = " CONTAINER ONLY. " ;
return result ;
}
#region 箱型对应
public int get 箱 型 1 ( )
{
if ( string . IsNullOrWhiteSpace ( 箱 型 对 应 . 箱 型 1 ) ) return 0 ;
foreach ( var item in 箱 型 箱 量 信 息 )
{
if ( item . 箱 型 . 代 码 = = 箱 型 对 应 . 箱 型 1 ) return item . 箱 量 ;
}
return 0 ;
}
public int get 箱 型 2 ( )
{
if ( string . IsNullOrWhiteSpace ( 箱 型 对 应 . 箱 型 2 ) ) return 0 ;
foreach ( var item in 箱 型 箱 量 信 息 )
{
if ( item . 箱 型 . 代 码 = = 箱 型 对 应 . 箱 型 2 ) return item . 箱 量 ;
}
return 0 ;
}
public int get 箱 型 3 ( )
{
if ( string . IsNullOrWhiteSpace ( 箱 型 对 应 . 箱 型 3 ) ) return 0 ;
foreach ( var item in 箱 型 箱 量 信 息 )
{
if ( item . 箱 型 . 代 码 = = 箱 型 对 应 . 箱 型 3 ) return item . 箱 量 ;
}
return 0 ;
}
public int get 箱 型 4 ( )
{
if ( string . IsNullOrWhiteSpace ( 箱 型 对 应 . 箱 型 4 ) ) return 0 ;
foreach ( var item in 箱 型 箱 量 信 息 )
{
if ( item . 箱 型 . 代 码 = = 箱 型 对 应 . 箱 型 4 ) return item . 箱 量 ;
}
return 0 ;
}
public int get 箱 型 5 ( )
{
if ( string . IsNullOrWhiteSpace ( 箱 型 对 应 . 箱 型 5 ) ) return 0 ;
foreach ( var item in 箱 型 箱 量 信 息 )
{
if ( item . 箱 型 . 代 码 = = 箱 型 对 应 . 箱 型 5 ) return item . 箱 量 ;
}
return 0 ;
}
public int get 箱 型 6 ( )
{
if ( string . IsNullOrWhiteSpace ( 箱 型 对 应 . 箱 型 6 ) ) return 0 ;
foreach ( var item in 箱 型 箱 量 信 息 )
{
if ( item . 箱 型 . 代 码 = = 箱 型 对 应 . 箱 型 6 ) return item . 箱 量 ;
}
return 0 ;
}
public int get 箱 型 7 ( )
{
if ( string . IsNullOrWhiteSpace ( 箱 型 对 应 . 箱 型 7 ) ) return 0 ;
foreach ( var item in 箱 型 箱 量 信 息 )
{
if ( item . 箱 型 . 代 码 = = 箱 型 对 应 . 箱 型 7 ) return item . 箱 量 ;
}
return 0 ;
}
public int get 箱 型 8 ( )
{
if ( string . IsNullOrWhiteSpace ( 箱 型 对 应 . 箱 型 8 ) ) return 0 ;
foreach ( var item in 箱 型 箱 量 信 息 )
{
if ( item . 箱 型 . 代 码 = = 箱 型 对 应 . 箱 型 8 ) return item . 箱 量 ;
}
return 0 ;
}
public int get 箱 型 9 ( )
{
if ( string . IsNullOrWhiteSpace ( 箱 型 对 应 . 箱 型 9 ) ) return 0 ;
foreach ( var item in 箱 型 箱 量 信 息 )
{
if ( item . 箱 型 . 代 码 = = 箱 型 对 应 . 箱 型 9 ) return item . 箱 量 ;
}
return 0 ;
}
public int get 箱 型 10 ( )
{
if ( string . IsNullOrWhiteSpace ( 箱 型 对 应 . 箱 型 10 ) ) return 0 ;
foreach ( var item in 箱 型 箱 量 信 息 )
{
if ( item . 箱 型 . 代 码 = = 箱 型 对 应 . 箱 型 10 ) return item . 箱 量 ;
}
return 0 ;
}
# endregion
public int getTeu ( )
{
var result = 0 ;
foreach ( var item in 箱 型 箱 量 信 息 )
{
if ( item . 箱 型 . 尺 寸 = = "20" )
{
result + = 1 * item . 箱 量 ;
}
else
{
result + = 2 * item . 箱 量 ;
}
}
return result ;
}
}
public int get 周 次 ( DateTime ? etd ) {
try
{
DateTime dateTime = new DateTime ( ( ( DateTime ) etd ) . Year , 1 , 1 ) ;
TimeSpan ts1 = ( ( DateTime ) etd ) . Subtract ( dateTime ) . Duration ( ) ;
var days = ts1 . Days ;
var weeks = ( int ) ( Math . Ceiling ( days / 7.0 ) ) ;
return weeks ;
}
catch ( Exception e ) {
return 0 ;
}
}
//记录品名
public t_op_seae_md GetOpseae ( )
{
var weeks = get 周 次 ( etd ) ;
//20230410 根据箱信息重新计算 集装箱 和 箱数大写
var d6 = new DS6DataContext ( ) ;
var 箱 型 箱 量 = new 箱 型 箱 量 ( ) ;
if ( ctnInputs ! = null )
foreach ( var ctn in ctnInputs )
{
var 箱 型 infoList = d6 . t_code_ctn . Where ( x = > ( x . 尺 寸 + x . 箱 型 ) = = ctn . ctnall | | ( x . 尺 寸 + "'" + x . 箱 型 ) = = ctn . ctnall | | x . 表 现 形 式 = = ctn . ctnall ) . ToList ( ) ;
var 箱 型 info = new t_code_ctn_md ( ) ;
if ( 箱 型 infoList ! = null & & 箱 型 infoList . Count > 0 )
{
箱 型 info = 箱 型 infoList [ 0 ] ;
}
else
{
continue ;
}
箱 型 箱 量 . Add ( new 箱 型 箱 量 item ( 箱 型 info , ctn . ctnnum = = null ? 1 : ( int ) ctn . ctnnum ) ) ;
}
var 集 装 箱 = 箱 型 箱 量 . get 集 装 箱 ( ) ;
var 箱 数 大 写 = 箱 型 箱 量 . get 箱 数 大 写 ( ) ;
var 计 费 标 准 = 箱 型 箱 量 . get 计 费 标 准 ( ) ;
//处理货名
//HS编码 = hscode,
//货物名称 = bookingEDIExt.goodsName,
//货物描述 = description,
var 货 物 名 称 = "" ;
//var 当前货名 = d6.t_code_goods.Where(x => x.代码 == goodscode).ToList();
//if (当前货名 == null || 当前货名.Count == 0)
//{
// if(!string.IsNullOrWhiteSpace(goodscode)) {
// var newrec = new t_code_goods_md();
// newrec.代码 = SetLength(goodscode, 10);
// newrec.货物名称 = SetLength(goodsname, 100);
// 货物名称 = newrec.货物名称;
// newrec.货物描述 = SetLength(description, 600);
// newrec.商品编码 = SetLength(hscode, 10);
// d6.t_code_goods.Add(newrec);
// d6.SaveChanges();
// }
//}
//else
//{
// 货物名称 = 当前货名[0].货物名称;
//}
货 物 名 称 = dealGoodsinfo ( goodscode , goodsname , description , hscode ) ;
var _etd = new DateTime ( ) ;
var _eta = new DateTime ( ) ;
if ( etd ! = null ) _etd = new DateTime ( ( ( DateTime ) etd ) . Year , ( ( DateTime ) etd ) . Month , ( ( DateTime ) etd ) . Day ) ;
if ( eta ! = null ) _eta = new DateTime ( ( ( DateTime ) etd ) . Year , ( ( DateTime ) etd ) . Month , ( ( DateTime ) etd ) . Day ) ;
var 操 作 = op ;
var 操 作 部 门 名 称 = "" ;
var 操 作 部 门 = d6 . t_sys_employee . FirstOrDefault ( x = > x . 姓 名 = = 操 作 ) ;
if ( 操 作 部 门 ! = null ) 操 作 部 门 名 称 = 操 作 部 门 . 部 门 名 称 ;
var 销 售 = sale ;
var 销 售 部 门 名 称 = "" ;
var 销 售 部 门 = d6 . t_sys_employee . FirstOrDefault ( x = > x . 姓 名 = = 销 售 ) ;
if ( 销 售 部 门 ! = null ) 销 售 部 门 名 称 = 销 售 部 门 . 部 门 名 称 ;
//int? 申请箱使天数 = null;
DateTime now = DateTime . Now ;
DateTime today2 = new DateTime ( now . Year , now . Month , now . Day ) ;
var result = new t_op_seae_md
{
业 务 编 号 = bsno ,
业 务 状 态 = string . IsNullOrWhiteSpace ( bsstatusname ) ? "接受委托" : bsstatusname ,
费 用 状 态 = "录入状态" ,
会 计 期 间 = etd = = null ? today2 : etd ,
装 运 方 式 = "整票" ,
周 次 = weeks ,
录 入 日 期 = bsdate < new DateTime ( 2000 , 1 , 1 ) | | bsdate > new DateTime ( 2070 , 1 , 1 ) ? DateTime . Now : bsdate ,
主 提 单 号 = mblno ,
真 提 单 号 = tmblno ,
//主提单标准 = string.IsNullOrWhiteSpace( mblno)?,
分 提 单 号 = hblno ,
订 舱 序 列 号 = custno ,
运 费 协 议 号 = contractno ,
发 货 人 代 码 = 设 置 换 行 ( shipper ) ,
收 货 人 代 码 = 设 置 换 行 ( consignee ) ,
通 知 人 代 码 = 设 置 换 行 ( notifyparty ) ,
场 站 = yard ,
船 名 = vessel ,
航 次 = voynoinner ,
开 船 日 期 = SetDayMinute ( etd ) ,
ETD = SetDayMinute ( YgtETD ) ,
ETA = SetDayZero ( eta ) ,
预 抵 日 期 = SetDayMinute ( atd ) ,
截 港 日 期 = SetDayZero ( closingdate ) ,
装 港 代 码 = portloadid ,
装 货 港 = portload ,
卸 货 代 码 = portdischargeid ,
卸 货 港 = portdischarge ,
交 货 代 码 = placedeliveryid ,
交 货 地 点 = placedelivery ,
目 的 地 代 码 = destinationid ,
目 的 地 = destination ,
提 单 份 数 = nobill ,
副 本 提 单 份 数 = copynobill ,
签 单 方 式 = issuetype ,
签 单 日 期 = issuedate ,
签 单 地 点 = issueplace ,
付 费 方 式 = blfrt ,
预 付 地 点 = prepardat ,
到 付 地 点 = payableat ,
运 输 条 款 = service ,
唛 头 = marks ,
运 输 方 式 = service ,
HS 编 码 = hscode ,
货 物 名 称 = 货 物 名 称 ,
货 物 描 述 = 设 置 换 行 ( description ) ,
件 数 = pkgs ,
包 装 = kindpkgs ,
重 量 = kgs ,
尺 码 = cbm ,
件 数 大 写 = totalno ,
集 装 箱 = 集 装 箱 ,
箱 数 大 写 = 箱 数 大 写 ,
计 费 标 准 = 计 费 标 准 ,
船 公 司 = carrier ,
货 物 标 识 = cargoid ,
危 险 品 分 类 = dclass ,
危 险 品 编 号 = dunno ,
设 置 温 度 = tempset ,
冷 藏 通 风 量 = reeferf ,
最 低 温 度 = tempmin ,
最 高 温 度 = tempmax ,
是 否 自 有 箱 = iscontainersoc ,
EDI 备 注 = 设 置 换 行 ( soremark ) , //订舱备注
//分单列表 = 设置换行(soremark),
附 加 条 款 = 设 置 换 行 ( soremark ) ,
//全称= compname,
合 同 号 = pono ,
合 同 号 备 注 = pono ,
客 服 员 = custservice ,
操 作 员 = op ,
单 证 员 = doc ,
揽 货 人 = sale ,
航 线 操 作 = route ,
委 托 单 位 = customername ,
第 三 方 付 费 = thirdPay ,
报 关 行 = customser ,
承 运 车 队 = trucker ,
货 代 公 司 = forwarder , //大简云“订舱代理”, ds6界面的“订舱代理”, ds6数据库的货代
备 案 号 = lanename ,
航 线 = lineName ,
船 代 = shipagency ,
代 理 = agentname , //大简云“国外代理”, ds6界面的“代理”, ds6数据库的代理
其 他 备 注 = 设 置 换 行 ( dzRemark ) ,
是 否 占 舱 = ZhanCangFlag = = "是" ? "Y" : "N" ,
占 舱 备 注 = 设 置 换 行 ( czRemark ) ,
录 入 人 = createdUserName ,
订 舱 人 说 明 = ( bookingEDIExt = = null ) ? "" : 设 置 换 行 ( bookingEDIExt . orderRemark ) ,
DJYID = Id ,
通 知 到 港 = null ,
是 否 提 货 = null ,
是 否 提 交 VGM = null ,
是 否 提 交 舱 单 = null ,
是 否 装 载 放 行 = null ,
业 务 来 源 = SourceName ,
箱 使 堆 存 = 设 置 换 行 ( ShenQingXiangShi ) ,
总 价 = ( bookingEDIExt = = null ) ? "" : bookingEDIExt . kingTareweight = = null ? "" : bookingEDIExt . kingTareweight . ToString ( ) . Replace ( ".0" , "" ) ,
箱 TEU = 箱 型 箱 量 . getTeu ( ) ,
箱 型 1 = 箱 型 箱 量 . get 箱 型 1 ( ) ,
箱 型 2 = 箱 型 箱 量 . get 箱 型 2 ( ) ,
箱 型 3 = 箱 型 箱 量 . get 箱 型 3 ( ) ,
箱 型 4 = 箱 型 箱 量 . get 箱 型 4 ( ) ,
箱 型 5 = 箱 型 箱 量 . get 箱 型 5 ( ) ,
箱 型 6 = 箱 型 箱 量 . get 箱 型 6 ( ) ,
箱 型 7 = 箱 型 箱 量 . get 箱 型 7 ( ) ,
箱 型 8 = 箱 型 箱 量 . get 箱 型 8 ( ) ,
箱 型 9 = 箱 型 箱 量 . get 箱 型 9 ( ) ,
箱 型 10 = 箱 型 箱 量 . get 箱 型 10 ( ) ,
辅 助 字 段 一 = 设 置 换 行 ( bookingEDIExt = = null ? "" : bookingEDIExt . exRemark1 ) ,
辅 助 字 段 二 = 设 置 换 行 ( bookingEDIExt = = null ? "" : bookingEDIExt . exRemark2 ) ,
辅 助 字 段 三 = 设 置 换 行 ( bookingEDIExt = = null ? "" : bookingEDIExt . exRemark3 ) ,
辅 助 字 段 四 = 设 置 换 行 ( bookingEDIExt = = null ? "" : bookingEDIExt . exRemark4 ) ,
操 作 部 门 = 操 作 部 门 名 称 ,
销 售 部 门 = 销 售 部 门 名 称
} ;
if ( goodsStatus ! = null )
foreach ( var status in goodsStatus )
{
if ( status . statusName = = "通知到港" )
{
if ( status . finishTime ! = null )
result . 通 知 到 港 = true ;
}
if ( status . statusName = = "是否提货" )
{
if ( status . finishTime ! = null )
result . 是 否 提 货 = true ;
}
if ( status . statusName = = "提交VGM" )
{
if ( status . finishTime ! = null )
result . 是 否 提 交 VGM = true ;
}
if ( status . statusName = = "提交舱单" )
{
if ( status . finishTime ! = null )
result . 是 否 提 交 舱 单 = true ;
}
if ( status . statusName = = "装载放行" )
{
if ( status . finishTime ! = null )
result . 是 否 装 载 放 行 = true ;
}
}
#region 设定字符串长度 超长的截断
var lengthDic = new Dictionary < string , int >
{
{ "主提单号" , 20 } ,
{ "分提单号" , 20 } ,
{ "运费协议号" , 20 } ,
{ "委托编号" , 20 } ,
{ "装运方式" , 8 } ,
{ "委托单位" , 20 } ,
{ "发货人" , 20 } ,
{ "收货人" , 20 } ,
{ "通知人" , 20 } ,
{ "发货人代码" , 1000 } ,
{ "收货人代码" , 1000 } ,
{ "通知人代码" , 1000 } ,
{ "代理" , 20 } ,
{ "代理内容" , 1000 } ,
{ "场站" , 20 } ,
{ "船名" , 60 } ,
{ "航次" , 20 } ,
{ "起运港" , 60 } ,
{ "装货港" , 60 } ,
{ "装港代码" , 10 } ,
{ "卸货港" , 100 } ,
{ "卸货代码" , 10 } ,
{ "二程港口" , 60 } ,
{ "二程船名" , 60 } ,
{ "二程航次" , 20 } ,
{ "目的地" , 30 } ,
{ "交货地点" , 100 } ,
{ "交货代码" , 10 } ,
{ "提单份数" , 10 } ,
{ "签单方式" , 25 } ,
{ "签单地点" , 30 } ,
{ "付费方式" , 60 } ,
{ "预付地点" , 100 } ,
{ "到付地点" , 100 } ,
{ "运输条款" , 10 } ,
{ "唛头" , 800 } ,
{ "箱号封号" , 2000 } ,
{ "件数包装" , 600 } ,
{ "货物描述" , 1000 } ,
{ "货物名称" , 100 } ,
{ "货物重量" , 600 } ,
{ "货物尺码" , 600 } ,
{ "包装" , 60 } ,
{ "件数大写" , 100 } ,
{ "箱数大写" , 100 } ,
{ "集装箱" , 200 } ,
{ "录入人" , 12 } ,
{ "操作员" , 10 } ,
{ "揽货人" , 10 } ,
{ "客服员" , 10 } ,
{ "航线" , 30 } ,
{ "船公司" , 20 } ,
{ "货代公司" , 20 } ,
{ "备注" , 800 } ,
{ "报关行" , 20 } ,
{ "承运车队" , 20 } ,
{ "分单列表" , 600 } ,
{ "计费标准" , 1000 } ,
{ "报关员" , 10 } ,
{ "报关单号" , 20 } ,
{ "核销单号" , 50 } ,
{ "手册号" , 20 } ,
{ "经营单位" , 60 } ,
{ "单位代码" , 20 } ,
{ "合同号" , 50 } ,
{ "合同号备注" , 50 } ,
{ "报关备注" , 600 } ,
{ "危险品分类" , 5 } ,
{ "危险品编号" , 20 } ,
{ "冷藏通风量" , 12 } ,
{ "温度单位" , 1 } ,
{ "设置温度" , 16 } ,
{ "最低温度" , 5 } ,
{ "最高温度" , 5 } ,
{ "货物标识" , 1 } ,
{ "发票号" , 20 } ,
{ "商品编码" , 400 } ,
{ "销售部门" , 30 } ,
{ "操作部门" , 30 } ,
{ "业务来源" , 8 } ,
{ "英文船期" , 12 } ,
{ "三程港口" , 60 } ,
{ "三程船名" , 60 } ,
{ "三程航次" , 20 } ,
{ "辅助字段一" , 600 } ,
{ "辅助字段二" , 600 } ,
{ "辅助字段三" , 600 } ,
{ "辅助字段四" , 600 } ,
{ "主提单标准" , 30 } ,
{ "分提单标准" , 30 } ,
{ "委托标准" , 30 } ,
{ "财务凭证" , 30 } ,
{ "附加条款" , 600 } ,
{ "备案号" , 20 } ,
{ "运抵国" , 60 } ,
{ "境内货源地" , 60 } ,
{ "批准文号" , 20 } ,
{ "成交方式" , 20 } ,
{ "单价" , 100 } ,
{ "总价" , 100 } ,
{ "商品名称" , 400 } ,
{ "数量单位" , 400 } ,
{ "报检单号" , 20 } ,
{ "实验内容" , 100 } ,
{ "报关操作" , 10 } ,
{ "报检操作" , 10 } ,
{ "币制" , 100 } ,
{ "单证信息" , 100 } ,
{ "核销标准" , 20 } ,
{ "报关标准" , 20 } ,
{ "报检标准" , 20 } ,
{ "目的地代码" , 10 } ,
{ "包装代码" , 10 } ,
{ "发货人编号" , 10 } ,
{ "运输方式" , 10 } ,
{ "HS编码" , 30 } ,
{ "船代" , 20 } ,
{ "单证员" , 10 } ,
{ "箱使堆存" , 30 } ,
{ "EDI备注" , 1000 } ,
} ;
foreach ( var item in lengthDic )
{
try
{
var property = result . GetType ( ) . GetProperty ( item . Key ) ;
if ( property ! = null )
{
var _v = result . GetType ( ) . GetProperty ( item . Key ) . GetValue ( result ) ;
if ( _v ! = null )
{
var newvalue = SetLength ( _v . ToString ( ) , item . Value ) ;
result . GetType ( ) . GetProperty ( item . Key ) . SetValue ( result , newvalue ) ;
}
}
//var value = result.GetType().GetProperty(item.Key).GetValue(result).ToString();
//var newvalue = SetLength(value, item.Value);
//result.GetType().GetProperty(item.Key).SetValue(result, newvalue);
}
catch ( Exception e )
{
continue ;
}
}
# endregion
return result ;
}
public List < t_op_ctn_md > GetCtnList ( string 编 号 )
{
var result = new List < t_op_ctn_md > ( ) ;
if ( ctnInputs ! = null )
foreach ( var ctn in ctnInputs )
{
var d6 = new DS6DataContext ( ) ;
var 箱 型 infoList = d6 . t_code_ctn . Where ( x = >
( x . 尺 寸 + "'" + x . 箱 型 ) = = ctn . ctnall
| | ( x . 尺 寸 + x . 箱 型 ) = = ctn . ctnall
| | ( x . 尺 寸 + "'" + x . 箱 型 . Replace ( "OT" , "O/T" ) ) = = ctn . ctnall
| | ( x . 尺 寸 + x . 箱 型 . Replace ( "OT" , "O/T" ) ) = = ctn . ctnall
) . ToList ( ) ;
var 箱 型 info = new t_code_ctn_md ( ) ;
if ( 箱 型 infoList ! = null & & 箱 型 infoList . Count > 0 )
{
箱 型 info = 箱 型 infoList [ 0 ] ;
}
else
{
continue ;
}
var newctn = new t_op_ctn_md
{
代 码 = 箱 型 info . 代 码 ,
尺 寸 = 箱 型 info . 尺 寸 ,
箱 型 = 箱 型 info . 箱 型 ,
编 号 = 编 号 ,
表 现 形 式 = ctn . ctnall ,
数 量 = ctn . ctnnum ,
箱 号 = ctn . cntrno ,
封 号 = ctn . sealno ,
件 数 = ctn . pkgs ,
包 装 = ctn . kindpkgs ,
重 量 = ctn . kgs ,
尺 码 = ctn . cbm ,
皮 重 = ctn . tareweight ,
TEU = ( 箱 型 info . 尺 寸 = = "20" ? 1 * ctn . ctnnum : 2 * ctn . ctnnum ) ,
称 重 重 量 = ctn . weighkgs ,
DJYCTNID = ctn . id
} ;
result . Add ( newctn ) ;
}
return result ;
}
public string dealGoodsinfo ( string goodscode , string goodsname , string description , string hscode ) {
var result = "" ;
var d6 = new DS6DataContext ( ) ;
var 当 前 货 名 = d6 . t_code_goods . Where ( x = > x . 货 物 名 称 = = goodsname ) . ToList ( ) ;
if ( 当 前 货 名 = = null | | 当 前 货 名 . Count = = 0 )
{
if ( ! string . IsNullOrWhiteSpace ( goodsname ) )
{
var newrec = new t_code_goods_md ( ) ;
newrec . 代 码 = SetLength ( goodscode , 10 ) ;
newrec . 货 物 名 称 = SetLength ( goodsname , 100 ) ;
result = newrec . 货 物 名 称 ;
newrec . 货 物 描 述 = SetLength ( description , 600 ) ;
newrec . 商 品 编 码 = SetLength ( hscode , 10 ) ;
d6 . t_code_goods . Add ( newrec ) ;
d6 . SaveChanges ( ) ;
}
}
else
{
result = 当 前 货 名 [ 0 ] . 货 物 名 称 ;
}
return result ;
}
public static void GetCtn ( ref t_op_ctn_md curr , t_op_ctn_md ctn )
{
curr . 代 码 = ctn . 代 码 ;
curr . 尺 寸 = ctn . 尺 寸 ;
curr . 箱 型 = ctn . 箱 型 ;
//curr.编号 = head.编号,
curr . 表 现 形 式 = ctn . 表 现 形 式 ;
curr . 数 量 = ctn . 数 量 ;
curr . 箱 号 = ctn . 箱 号 ;
curr . 封 号 = ctn . 封 号 ;
curr . 件 数 = ctn . 件 数 ;
curr . 包 装 = ctn . 包 装 ;
curr . 重 量 = ctn . 重 量 ;
curr . 尺 码 = ctn . 尺 码 ;
curr . 皮 重 = ctn . 皮 重 ;
curr . TEU = ctn . TEU ;
curr . 称 重 重 量 = ctn . 称 重 重 量 ;
curr . DJYCTNID = ctn . DJYCTNID ;
}
public List < t_op_ams_md > GetAmsList ( t_op_seae_md head )
{
var result = new List < t_op_ams_md > ( ) ;
//foreach (var item in bookingEDIExt)
//{
var item = bookingEDIExt ;
if ( bookingEDIExt ! = null )
{
var newrec = new t_op_ams_md
{
编 号 = head . 编 号 ,
发 货 人 代 码 = SetLength ( item . shipperEdiCode , 10 ) ,
收 货 人 代 码 = SetLength ( item . consigneeEdiCode , 10 ) ,
销 售 代 码 = SetLength ( item . salerCode , 10 ) ,
危 险 品 联 系 人 = SetLength ( item . ediAttn , 30 ) ,
危 险 品 联 系 方 式 = SetLength ( item . ediAttnTel , 50 ) ,
欧 盟 HSCODE = SetLength ( item . ckhi , 100 ) ,
南 美 东 NCM = 设 置 换 行 ( SetLength ( item . cncm , 600 ) ) ,
巴 西 木 质 包 装 说 明 = 设 置 换 行 ( SetLength ( item . wncm , 300 ) ) ,
实 际 开 船 日 期 = head . 开 船 日 期 ,
HBL 发 送 方 式 = SetLength ( item . masterBolIndicator , 1 ) ,
ESL 航 线 代 码 = SetLength ( lanename , 20 )
} ;
//20230530 如果船公司不是太平PIL 则将部分字段设为空白
if ( head . 船 公 司 = = "PIL" ) {
newrec . HBL 发 送 方 式 = "" ;
newrec . 销 售 代 码 = "" ;
newrec . 实 际 开 船 日 期 = null ;
newrec . 南 美 东 NCM = "" ;
newrec . 巴 西 木 质 包 装 说 明 = "" ;
newrec . 欧 盟 HSCODE = "" ;
}
result . Add ( newrec ) ;
}
//}
return result ;
}
public List < t_op_seae_assistant_md > GetAssistantList ( t_op_seae_md head )
{
var result = new List < t_op_seae_assistant_md > ( ) ;
var d6 = new DS6DataContext ( ) ;
var 货 物 名 称 = "" ;
if ( childrens ! = null )
foreach ( var item in childrens )
{
var weeks = get 周 次 ( item . etd ) ;
var 箱 型 箱 量 = new 箱 型 箱 量 ( ) ;
var 箱 号 封 号 = "" ;
var 件 数 包 装 = item . pkgs . ToString ( ) + item . kindpkgs ;
var 货 物 重 量 = item . kgs . ToString ( ) + "KGS" ;
var 货 物 尺 码 = item . cbm . ToString ( ) + "CBM" ;
foreach ( var ctn in item . ctnInputs )
{
var 箱 型 infoList = d6 . t_code_ctn . Where ( x = >
( x . 尺 寸 + "'" + x . 箱 型 ) = = ctn . ctnall
| | ( x . 尺 寸 + x . 箱 型 ) = = ctn . ctnall
| | ( x . 尺 寸 + "'" + x . 箱 型 . Replace ( "OT" , "O/T" ) ) = = ctn . ctnall
| | ( x . 尺 寸 + x . 箱 型 . Replace ( "OT" , "O/T" ) ) = = ctn . ctnall
) . ToList ( ) ;
var 箱 型 info = new t_code_ctn_md ( ) ;
if ( 箱 型 infoList ! = null & & 箱 型 infoList . Count > 0 )
{
箱 型 info = 箱 型 infoList [ 0 ] ;
}
else
{
continue ;
}
箱 型 箱 量 . Add ( new 箱 型 箱 量 item ( 箱 型 info , ctn . ctnnum = = null ? 1 : ( int ) ctn . ctnnum ) ) ;
if ( ! string . IsNullOrWhiteSpace ( ctn . cntrno ) | | ! string . IsNullOrWhiteSpace ( ctn . sealno ) )
{
if ( 箱 号 封 号 ! = "" ) 箱 号 封 号 + = "\r\n" ;
箱 号 封 号 + = ( string . IsNullOrWhiteSpace ( ctn . cntrno ) ? "" : ctn . cntrno ) + ( string . IsNullOrWhiteSpace ( ctn . sealno ) ? "" : "/" + ctn . sealno ) ;
}
//if (ctn.pkgs != null && ctn.pkgs != 0 && !string.IsNullOrWhiteSpace(ctn.kindpkgs))
//{
// if (件数包装 != "") 件数包装 += "\r\n";
// 件数包装 += ctn.pkgs.ToString() + ctn.kindpkgs;
//}
//if (ctn.kgs != null)// && ctn.重量 != 0
//{
// if (货物重量 != "") 货物重量 += "\r\n";
// 货物重量 += ctn.kgs.ToString() + "KGS";
//}
//if (ctn.cbm != null)//&& ctn.尺码 != 0
//{
// if (货物尺码 != "") 货物尺码 += "\r\n";
// 货物尺码 += ctn.cbm.ToString() + "CBM";
//}
}
var 集 装 箱 = 箱 型 箱 量 . get 集 装 箱 ( ) ;
var 箱 数 大 写 = 箱 型 箱 量 . get 箱 数 大 写 ( ) ;
//var 当前货名 = new t_code_goods_md();
货 物 名 称 = dealGoodsinfo ( item . goodscode , item . goodsname , item . description , item . hscode ) ;
// var 当前货名 = d6.t_code_goods.Where(x => x.代码 == item.goodscode).ToList();
//if (当前货名 == null || 当前货名.Count == 0)
//{
// if (!string.IsNullOrWhiteSpace(item.goodscode))
// {
// var newcodegoods = new t_code_goods_md();
// newcodegoods.代码 = SetLength(item.goodscode, 10);
// newcodegoods.货物名称 = SetLength(item.goodsname, 100);
// 货物名称 = newcodegoods.货物名称;
// newcodegoods.货物描述 = SetLength(item.description, 600);
// newcodegoods.商品编码 = SetLength(item.hscode, 10);
// d6.t_code_goods.Add(newcodegoods);
// d6.SaveChanges();
// }
//}
//else
//{
// 货物名称 = 当前货名[0].货物名称;
//}
var newrec = new t_op_seae_assistant_md
{
编 号 = head . 编 号 ,
主 编 号 = head . 编 号 ,
DJYCHILDRENID = item . Id ,
BSNO = item . bsno ,
录 入 日 期 = item . bsdate ,
主 提 单 号 = item . mblno ,
分 提 单 号 = item . hblno ,
//订舱序列号 = item.bookingno,
发 货 人 代 码 = 设 置 换 行 ( item . shipper ) ,
收 货 人 代 码 = 设 置 换 行 ( item . consignee ) ,
通 知 人 代 码 = 设 置 换 行 ( item . notifyparty ) ,
//20230605
代 理 内 容 = 设 置 换 行 ( item . foreignAgent ) ,
提 单 份 数 = item . nobill ,
签 单 方 式 = item . issuetype ,
签 单 日 期 = item . issuedate ,
签 单 地 点 = item . issueplace ,
付 费 方 式 = item . blfrt ,
预 付 地 点 = item . prepardat ,
到 付 地 点 = item . payableat ,
运 输 条 款 = item . service ,
唛 头 = item . marks ,
运 输 方 式 = item . hscode ,
货 物 名 称 = 货 物 名 称 ,
货 物 描 述 = 设 置 换 行 ( item . description ) ,
件 数 = item . pkgs ,
包 装 = item . kindpkgs ,
重 量 = item . kgs ,
尺 码 = item . cbm ,
件 数 大 写 = item . totalno ,
集 装 箱 = item . cntrtotal ,
船 公 司 = item . carrier ,
货 物 标 识 = item . cargoid ,
危 险 品 分 类 = item . dclass ,
危 险 品 编 号 = item . dunno ,
设 置 温 度 = item . tempset ,
冷 藏 通 风 量 = item . reeferf ,
最 低 温 度 = item . tempmin ,
最 高 温 度 = item . tempmax ,
是 否 自 有 箱 = item . iscontainersoc ,
委 托 编 号 = item . pono ,
操 作 员 = item . op ,
揽 货 人 = item . sale ,
客 服 员 = item . custservice ,
//总价 = (item.bookingEDIExt == null) ? 0M : item.bookingEDIExt.kingTareweight == null ? 0M : item.bookingEDIExt.kingTareweight,
//预付地点= item.prepardatid,
//到付地点= item.payableatid,
周 次 = weeks ,
运 费 协 议 号 = item . contractno ,
场 站 = item . yard ,
船 名 = item . vessel ,
航 次 = item . voynoinner ,
开 船 日 期 = SetDayMinute ( item . etd ) ,
截 港 日 期 = SetDayZero ( item . closingdate ) ,
预 抵 日 期 = SetDayMinute ( item . eta ) ,
装 港 代 码 = item . portloadid ,
装 货 港 = item . portload ,
卸 货 代 码 = item . portdischargeid ,
卸 货 港 = item . portdischarge ,
交 货 代 码 = item . placedeliveryid ,
交 货 地 点 = item . placedelivery ,
目 的 地 代 码 = item . destinationid ,
目 的 地 = item . destination ,
//集装箱 = 集装箱,
箱 数 大 写 = 箱 数 大 写 ,
合 同 号 = item . pono ,
委 托 单 位 = item . customername ,
报 关 行 = item . customser ,
承 运 车 队 = item . trucker ,
货 代 公 司 = item . forwarder , //大简云“订舱代理”, ds6界面的“订舱代理”, ds6数据库的货代
备 案 号 = item . lanename ,
航 线 = item . lineName ,
代 理 = item . agentname , //大简云“国外代理”, ds6界面的“代理”, ds6数据库的代理
录 入 人 = createdUserName ,
箱 TEU = 箱 型 箱 量 . getTeu ( ) ,
箱 型 1 = 箱 型 箱 量 . get 箱 型 1 ( ) ,
箱 型 2 = 箱 型 箱 量 . get 箱 型 2 ( ) ,
箱 型 3 = 箱 型 箱 量 . get 箱 型 3 ( ) ,
箱 型 4 = 箱 型 箱 量 . get 箱 型 4 ( ) ,
箱 型 5 = 箱 型 箱 量 . get 箱 型 5 ( ) ,
箱 型 6 = 箱 型 箱 量 . get 箱 型 6 ( ) ,
箱 型 7 = 箱 型 箱 量 . get 箱 型 7 ( ) ,
箱 型 8 = 箱 型 箱 量 . get 箱 型 8 ( ) ,
箱 型 9 = 箱 型 箱 量 . get 箱 型 9 ( ) ,
箱 型 10 = 箱 型 箱 量 . get 箱 型 10 ( ) ,
辅 助 字 段 一 = 设 置 换 行 ( item . bookingEDIExt . exRemark1 ) ,
辅 助 字 段 二 = 设 置 换 行 ( item . bookingEDIExt . exRemark2 ) ,
辅 助 字 段 三 = 设 置 换 行 ( item . bookingEDIExt . exRemark3 ) ,
辅 助 字 段 四 = 设 置 换 行 ( item . bookingEDIExt . exRemark4 ) ,
箱 号 封 号 = 箱 号 封 号 ,
件 数 包 装 = 件 数 包 装 ,
货 物 重 量 = 货 物 重 量 ,
货 物 尺 码 = 货 物 尺 码
} ;
var lengthDic = new Dictionary < string , int >
{
{ "主提单号" , 20 } ,
{ "分提单号" , 20 } ,
{ "发货人代码" , 1000 } ,
{ "收货人代码" , 1000 } ,
{ "通知人代码" , 1000 } ,
{ "提单份数" , 10 } ,
{ "签单方式" , 10 } ,
{ "签单地点" , 30 } ,
{ "付费方式" , 60 } ,
{ "预付地点" , 100 } ,
{ "到付地点" , 100 } ,
{ "运输条款" , 10 } ,
{ "唛头" , 800 } ,
{ "运输方式" , 10 } ,
{ "HS编码" , 30 } ,
{ "货物描述" , 1000 } ,
//{"货物描述",1000},
{ "包装" , 60 } ,
{ "件数大写" , 100 } ,
{ "集装箱" , 200 } ,
{ "船公司" , 20 } ,
{ "货物标识" , 1 } ,
{ "危险品分类" , 5 } ,
{ "危险品编号" , 20 } ,
{ "设置温度" , 16 } ,
{ "冷藏通风量" , 12 } ,
{ "最低温度" , 5 } ,
{ "最高温度" , 5 } ,
{ "委托编号" , 20 } ,
{ "操作员" , 10 } ,
{ "揽货人" , 10 } ,
{ "客服员" , 10 } ,
{ "运费协议号" , 20 } ,
{ "场站" , 20 } ,
{ "船名" , 60 } ,
{ "航次" , 20 } ,
{ "装港代码" , 10 } ,
{ "装货港" , 60 } ,
{ "卸货代码" , 10 } ,
{ "卸货港" , 100 } ,
{ "交货代码" , 10 } ,
{ "交货地点" , 100 } ,
{ "目的地代码" , 10 } ,
{ "目的地" , 30 } ,
{ "合同号" , 50 } ,
{ "委托单位" , 20 } ,
{ "报关行" , 20 } ,
{ "承运车队" , 20 } ,
{ "货代公司" , 20 } ,
{ "备案号" , 20 } ,
{ "航线" , 30 } ,
{ "代理" , 20 } ,
{ "录入人" , 12 } ,
{ "辅助字段一" , 600 } ,
{ "辅助字段二" , 600 } ,
{ "辅助字段三" , 600 } ,
{ "辅助字段四" , 600 } ,
} ;
//Set分单箱封号件重尺(ref newrec, item);
foreach ( var _item in lengthDic )
{
try
{
var value = newrec . GetType ( ) . GetProperty ( _item . Key ) . GetValue ( newrec ) . ToString ( ) ;
var newvalue = SetLength ( value , _item . Value ) ;
newrec . GetType ( ) . GetProperty ( _item . Key ) . SetValue ( newrec , newvalue ) ;
}
catch ( Exception e )
{
continue ;
}
}
result . Add ( newrec ) ;
}
return result ;
}
public static void GetAssistant ( ref t_op_seae_assistant_md curr , t_op_seae_assistant_md item )
{
//curr.编号 = head.编号;
//curr.主编号 = item.编号;
curr . DJYCHILDRENID = item . DJYCHILDRENID ;
curr . BSNO = item . BSNO ;
curr . 录 入 日 期 = item . 录 入 日 期 ;
curr . 主 提 单 号 = item . 主 提 单 号 ;
curr . 分 提 单 号 = item . 分 提 单 号 ;
//订舱序列号 = item.bookingno;
curr . 发 货 人 代 码 = item . 发 货 人 代 码 ;
curr . 收 货 人 代 码 = item . 收 货 人 代 码 ;
curr . 通 知 人 代 码 = item . 通 知 人 代 码 ;
curr . 代 理 内 容 = item . 代 理 内 容 ;
curr . 提 单 份 数 = item . 提 单 份 数 ;
curr . 签 单 方 式 = item . 签 单 方 式 ;
curr . 签 单 日 期 = item . 签 单 日 期 ;
curr . 签 单 地 点 = item . 签 单 地 点 ;
curr . 付 费 方 式 = item . 付 费 方 式 ;
curr . 预 付 地 点 = item . 预 付 地 点 ;
curr . 到 付 地 点 = item . 到 付 地 点 ;
curr . 运 输 条 款 = item . 运 输 条 款 ;
curr . 唛 头 = item . 唛 头 ;
curr . 运 输 方 式 = item . 运 输 方 式 ;
curr . 货 物 名 称 = item . 货 物 名 称 ;
curr . 货 物 描 述 = item . 货 物 描 述 ;
curr . 件 数 = item . 件 数 ;
curr . 包 装 = item . 包 装 ;
curr . 重 量 = item . 重 量 ;
curr . 尺 码 = item . 尺 码 ;
curr . 件 数 大 写 = item . 件 数 大 写 ;
curr . 集 装 箱 = item . 集 装 箱 ;
curr . 船 公 司 = item . 船 公 司 ;
curr . 货 物 标 识 = item . 货 物 标 识 ;
curr . 危 险 品 分 类 = item . 危 险 品 分 类 ;
curr . 危 险 品 编 号 = item . 危 险 品 编 号 ;
curr . 设 置 温 度 = item . 设 置 温 度 ;
curr . 冷 藏 通 风 量 = item . 冷 藏 通 风 量 ;
curr . 最 低 温 度 = item . 最 低 温 度 ;
curr . 最 高 温 度 = item . 最 高 温 度 ;
curr . 是 否 自 有 箱 = item . 是 否 自 有 箱 ;
curr . 委 托 编 号 = item . 委 托 编 号 ;
curr . 操 作 员 = item . 操 作 员 ;
curr . 揽 货 人 = item . 揽 货 人 ;
curr . 客 服 员 = item . 客 服 员 ;
curr . 周 次 = item . 周 次 ;
curr . 运 费 协 议 号 = item . 运 费 协 议 号 ;
curr . 运 费 协 议 号 = item . 运 费 协 议 号 ;
curr . 场 站 = item . 场 站 ;
curr . 船 名 = item . 船 名 ;
curr . 航 次 = item . 航 次 ;
curr . 开 船 日 期 = item . 开 船 日 期 ;
curr . 截 港 日 期 = item . 截 港 日 期 ;
curr . 预 抵 日 期 = item . 预 抵 日 期 ;
curr . 装 港 代 码 = item . 装 港 代 码 ;
curr . 装 货 港 = item . 装 货 港 ;
curr . 卸 货 代 码 = item . 卸 货 代 码 ;
curr . 卸 货 港 = item . 卸 货 港 ;
curr . 交 货 代 码 = item . 交 货 代 码 ;
curr . 交 货 地 点 = item . 交 货 地 点 ;
curr . 目 的 地 代 码 = item . 目 的 地 代 码 ;
curr . 目 的 地 = item . 目 的 地 ;
curr . 箱 数 大 写 = item . 箱 数 大 写 ;
curr . 合 同 号 = item . 合 同 号 ;
curr . 委 托 单 位 = item . 委 托 单 位 ;
curr . 报 关 行 = item . 报 关 行 ;
curr . 承 运 车 队 = item . 承 运 车 队 ;
curr . 货 代 公 司 = item . 货 代 公 司 ;
curr . 备 案 号 = item . 备 案 号 ;
curr . 航 线 = item . 航 线 ;
curr . 代 理 = item . 代 理 ;
curr . 录 入 人 = item . 录 入 人 ;
curr . 箱 TEU = item . 箱 TEU ;
curr . 箱 型 1 = item . 箱 型 1 ;
curr . 箱 型 2 = item . 箱 型 2 ;
curr . 箱 型 3 = item . 箱 型 3 ;
curr . 箱 型 4 = item . 箱 型 4 ;
curr . 箱 型 5 = item . 箱 型 5 ;
curr . 箱 型 6 = item . 箱 型 6 ;
curr . 箱 型 7 = item . 箱 型 7 ;
curr . 箱 型 8 = item . 箱 型 8 ;
curr . 箱 型 9 = item . 箱 型 9 ;
curr . 箱 型 10 = item . 箱 型 10 ;
curr . 辅 助 字 段 一 = item . 辅 助 字 段 一 ;
curr . 辅 助 字 段 二 = item . 辅 助 字 段 二 ;
curr . 辅 助 字 段 三 = item . 辅 助 字 段 三 ;
curr . 辅 助 字 段 四 = item . 辅 助 字 段 四 ;
curr . 箱 号 封 号 = item . 箱 号 封 号 ;
curr . 件 数 包 装 = item . 件 数 包 装 ;
curr . 货 物 重 量 = item . 货 物 重 量 ;
curr . 货 物 尺 码 = item . 货 物 尺 码 ;
}
public List < t_op_state_md > GetOpStatus ( t_op_seae_md head ) {
var result = new List < t_op_state_md > ( ) ;
if ( goodsStatus ! = null & & goodsStatus . Count > 0 )
{
foreach ( var item in goodsStatus ) {
var status = new t_op_state_md ( ) {
编 号 = head . 编 号 ,
业 务 状 态 = item . statusName ,
是 否 完 成 = item . finishTime = = null ? false : true ,
完 成 时 间 = item . finishTime ,
完 成 人 = item . finishTime = = null ? null : head . 操 作 员 ,
备 注 = item . remark ,
录 入 人 = head . 操 作 员 ,
录 入 日 期 = item . finishTime = = null ? DateTime . Now : item . finishTime
} ;
result . Add ( status ) ;
}
var _order = 1 ;
foreach ( var item in result . OrderBy ( x = > x . 录 入 日 期 ) ) {
item . 顺 序 = _order ;
_order + + ;
}
}
return result ;
}
}
public class DingCangCtn {
public long? id { get ; set ; }
public long? billid { get ; set ; }
public string ctncode { get ; set ; } //"string",
public string ctnall { get ; set ; } //"string",
public int? ctnnum { get ; set ; } = 0 ;
public int? teu { get ; set ; } = 0 ;
public string cntrno { get ; set ; } //"string",
public string sealno { get ; set ; } //"string",
public int? pkgs { get ; set ; } = 0 ;
public string kindpkgs { get ; set ; } //"string",
public decimal? kgs { get ; set ; } = 0 M ;
public decimal? cbm { get ; set ; } = 0 M ;
public decimal? tareweight { get ; set ; } = 0 M ;
public string ctnstatus { get ; set ; } //"string",
public string weightype { get ; set ; } //"string",
public decimal? weighkgs { get ; set ; } = 0 M ;
public string weighattn { get ; set ; } //"string",
public string vgmconncom { get ; set ; } //"string",
public string weightel { get ; set ; } //"string",
public string weighdate { get ; set ; } //"string",
public string vgmaddr { get ; set ; } //"string",
public string vgmemail { get ; set ; } //"string",
public string remark { get ; set ; } //"string",
public List < DingCangCtnDetail > ctnDetailInputs { get ; set ; }
}
public class DingCangCtnDetail
{
public long? id { get ; set ; }
public string ctnid { get ; set ; }
public decimal? pkgs { get ; set ; } = 0 M ;
public string kindpkgs { get ; set ; } //"string",
public decimal? kgs { get ; set ; } = 0 M ;
public decimal? cbm { get ; set ; } = 0 M ;
public string hscode { get ; set ; } //"string",
public string marks { get ; set ; } //"string",
public string description { get ; set ; } //"string",
public string remark { get ; set ; }
}
public class DingCangbookingEDIExt {
public string weiTuoFang { get ; set ; } //"string",
public string sendCode { get ; set ; } //"string",
public string receiveCode { get ; set ; } //"string",
public string notifyCdoe { get ; set ; } //"string",
public string salerCode { get ; set ; } //"string",
public string masterBolIndicator { get ; set ; } //"string",
public string emanifestHbl { get ; set ; } //"string",
public string consigneeEdiCode { get ; set ; } //"string",
public string shipperEdiCode { get ; set ; } //"string",
public string ediAttn { get ; set ; } //"string",
public string ediAttnTel { get ; set ; } //"string",
public string ediAttnMail { get ; set ; } //"string",
public string amsConsignee { get ; set ; } //"string",
public string amsNotifyParty { get ; set ; } //"string",
public string opEName { get ; set ; } //"string",
public string opTel { get ; set ; } //"string",
public string opEmail { get ; set ; } //"string",
public string acihbl { get ; set ; } //"string",
public string s0CC0C { get ; set ; } //"string",
public string goodsName { get ; set ; } //"string",
public string masterBolIndicatorName { get ; set ; } //"string",
public string salerCodeName { get ; set ; } //"string",
public string ckhi { get ; set ; } //"string",
public string cncm { get ; set ; } //"string",
public string wncm { get ; set ; } //"string",
public string orderRemark { get ; set ; } //"string",
public string exRemark1 { get ; set ; } //"string",
public string exRemark2 { get ; set ; } //"string",
public string exRemark3 { get ; set ; } //"string",
public string exRemark4 { get ; set ; } //"string",
public decimal? kingTareweight { get ; set ; } = 0 M ;
}
/// <summary>
/// 提单信息
/// </summary>
public class DingCangTDXX {
public long Id { get ; set ; }
public string bsno { get ; set ; } //"string",
public string bsstatus { get ; set ; } //"string",
public string bsstatusname { get ; set ; } //"string",
public DateTime ? bsdate { get ; set ; } //"2023-03-30T03:12:51.033Z",
public string mblno { get ; set ; } //"string",
public string hblno { get ; set ; } //"string",
public string bookingno { get ; set ; } //"string",
public string contractno { get ; set ; } //"string",
public string servicecontractno { get ; set ; } //"string",
public string shipperid { get ; set ; } //"string",
public string consigneeid { get ; set ; } //"string",
public string notifypartyid { get ; set ; } //"string",
public string shipper { get ; set ; } //"string",
public string consignee { get ; set ; } //"string",
public string notifyparty { get ; set ; } //"string",
public string notifypartY2 { get ; set ; } //"string",
public string yardid { get ; set ; } //"string",
public string yard { get ; set ; } //"string",
public string vesselid { get ; set ; } //"string",
public string vessel { get ; set ; } //"string",
public string voyno { get ; set ; } //"string",
public string voynoinner { get ; set ; } //"string",
public DateTime ? etd { get ; set ; } //"2023-03-30T03:12:51.033Z",
public DateTime ? atd { get ; set ; } //"2023-03-30T03:12:51.033Z",
public DateTime ? closingdate { get ; set ; } //"2023-03-30T03:12:51.033Z",
public DateTime ? closedocdate { get ; set ; } //"2023-03-30T03:12:51.033Z",
public DateTime ? closevgmdate { get ; set ; } //"2023-03-30T03:12:51.033Z",
public DateTime ? eta { get ; set ; } //"2023-03-30T03:12:51.033Z",
public string placereceiptid { get ; set ; } //"string",
public string placereceipt { get ; set ; } //"string",
public string portloadid { get ; set ; } //"string",
public string portload { get ; set ; } //"string",
public string portdischargeid { get ; set ; } //"string",
public string portdischarge { get ; set ; } //"string",
public string placedeliveryid { get ; set ; } //"string",
public string placedelivery { get ; set ; } //"string",
public string destinationid { get ; set ; } //"string",
public string destination { get ; set ; } //"string",
public string nobill { get ; set ; } //"string",
public string copynobill { get ; set ; } //"string",
public string issuetype { get ; set ; } //"string",
public DateTime ? issuedate { get ; set ; } //"2023-03-30T03:12:51.033Z",
public string issueplaceid { get ; set ; } //"string",
public string issueplace { get ; set ; } //"string",
public string blfrt { get ; set ; } //"string",
public string prepardat { get ; set ; } //"string",
public string payableat { get ; set ; } //"string",
public string service { get ; set ; } //"string",
public string marks { get ; set ; } //"string",
public string hscode { get ; set ; } //"string",
public string description { get ; set ; } //"string",
public int? pkgs { get ; set ; } = 0 ;
public string kindpkgs { get ; set ; } //"string",
public decimal? kgs { get ; set ; } = 0 ;
public decimal? cbm { get ; set ; } = 0 ;
public string totalno { get ; set ; } //"string",
public string cntrtotal { get ; set ; } //"string",
public string carrierid { get ; set ; } //"string",
public string carrier { get ; set ; } //"string",
public string cargoid { get ; set ; } //"string",
public string dclass { get ; set ; } //"string",
public string dunno { get ; set ; } //"string",
public string dpage { get ; set ; } //"string",
public string dlabel { get ; set ; } //"string",
public string linkman { get ; set ; } //"string",
public string tempid { get ; set ; } //"string",
public string tempset { get ; set ; } //"string",
public string reeferf { get ; set ; } //"string",
public string humidity { get ; set ; } //"string",
public string tempmin { get ; set ; } //"string",
public string tempmax { get ; set ; } //"string",
public bool? iscontainersoc { get ; set ; } //true,
public string soremark { get ; set ; } //"string",
public string siremark { get ; set ; } //"string",
public string yardremark { get ; set ; } //"string",
public string compid { get ; set ; } //"string",
public string compname { get ; set ; } //"string",
public string shippername { get ; set ; } //"string",
public string shipperaddR1 { get ; set ; } //"string",
public string shipperaddR2 { get ; set ; } //"string",
public string shipperaddR3 { get ; set ; } //"string",
public string shippercity { get ; set ; } //"string",
public string shipperprovince { get ; set ; } //"string",
public string shipperpostcode { get ; set ; } //"string",
public string shippercountry { get ; set ; } //"string",
public string shipperattn { get ; set ; } //"string",
public string shippertel { get ; set ; } //"string",
public string consigneename { get ; set ; } //"string",
public string consigneeaddR1 { get ; set ; } //"string",
public string consigneeaddR2 { get ; set ; } //"string",
public string consigneeaddR3 { get ; set ; } //"string",
public string consigneecity { get ; set ; } //"string",
public string consigneeprovince { get ; set ; } //"string",
public string consigneepostcode { get ; set ; } //"string",
public string consigneercountry { get ; set ; } //"string",
public string consigneeattn { get ; set ; } //"string",
public string consigneetel { get ; set ; } //"string",
public string notifypartyname { get ; set ; } //"string",
public string notifypartyaddR1 { get ; set ; } //"string",
public string notifypartyaddR2 { get ; set ; } //"string",
public string notifypartyaddR3 { get ; set ; } //"string",
public string notifypartycity { get ; set ; } //"string",
public string notifypartyprovince { get ; set ; } //"string",
public string notifypartypostcode { get ; set ; } //"string",
public string notifypartycountry { get ; set ; } //"string",
public string notifypartyattn { get ; set ; } //"string",
public string notifypartytel { get ; set ; } //"string",
public string pono { get ; set ; } //"string",
public string opid { get ; set ; } //"string",
public string docid { get ; set ; } //"string",
public string op { get ; set ; } //"string",
public string doc { get ; set ; } //"string",
public string saleid { get ; set ; } //"string",
public string sale { get ; set ; } //"string",
public string custserviceid { get ; set ; } //"string",
public string custservice { get ; set ; } //"string",
public string customername { get ; set ; } //"string",
public string forwarder { get ; set ; } //"string",
public string shipagency { get ; set ; } //"string",
public string customser { get ; set ; } //"string",
public string trucker { get ; set ; } //"string",
public string agentid { get ; set ; } //"string",
public long? customerid { get ; set ; } //= 0;
public string forwarderid { get ; set ; } //"string",
public string shipagencyid { get ; set ; } //"string",
public string customserid { get ; set ; } //"string",
public string truckerid { get ; set ; } //"string",
public string agentname { get ; set ; } //"string",
/// <summary>
/// 境外代理 内容
/// </summary>
public string foreignAgent { get ; set ; } //境外代理,
public string weituo { get ; set ; } //"string",
public string consigneedooraddr { get ; set ; } //"string",
public string shipperdooraddr { get ; set ; } //"string",
public string scaccode { get ; set ; } //"string",
public string itncode { get ; set ; } //"string",
public string prepardatid { get ; set ; } //"string",
public string payableatid { get ; set ; } //"string",
public string custno { get ; set ; } //"string",
public string transportid { get ; set ; } //"string",
public string transport { get ; set ; } //"string",
public string thirdpayaddr { get ; set ; } //"string",
public string yardcontract { get ; set ; } //"string",
public string yardcontracttel { get ; set ; } //"string",
public string yardcontractemail { get ; set ; } //"string",
public bool? feeself { get ; set ; } //true,
public string lanecode { get ; set ; } //"string",
public string lanename { get ; set ; } //"string",
public string freightpayer { get ; set ; } //"string",
public string goodscode { get ; set ; } //"string",
public string goodsname { get ; set ; } //"string",
public string pkgstotal { get ; set ; } //"string",
public string kgstotal { get ; set ; } //"string",
public string cbmtotal { get ; set ; } //"string",
public string routeid { get ; set ; } //"string",
public string route { get ; set ; } //"string",
public string warehouse { get ; set ; } //"string",
public string warehouseID { get ; set ; } //"string",
public string epCode { get ; set ; } //"string",
public string lineName { get ; set ; } //"string",
public List < DingCangCtn > ctnInputs { get ; set ; }
public DingCangbookingEDIExt bookingEDIExt { get ; set ; }
}
public class DingCanggoodsStatus
{
public string statusName { get ; set ; } //"string",
public DateTime ? finishTime { get ; set ; } //2023-03-30T03:12:51.034Z",
public string remark { get ; set ; } //"string",
public string extData { get ; set ; } //"string",
}
public class 大 简 云 业 务 函 电 {
public t_op_seae_md opseae { get ; set ; }
public t_op_letter_md HeadLetter { get ; set ; } = new t_op_letter_md ( ) ;
public OpLetterBase ChildLetter { get ; set ; }
public 大 简 云 业 务 函 电 ( ) { }
public bool IsDeleted { get ; set ; } = false ;
public static 大 简 云 业 务 函 电 getHelper ( string lettername , OpLetterBase childletter ) {
var ds6 = new DS6DataContext ( ) ;
var opseaeList = ds6 . t_op_seae . Where ( x = > x . DJYID = = childletter . DJYBOOKINGID ) . ToList ( ) ;
var result = new 大 简 云 业 务 函 电 ( ) ;
if ( opseaeList = = null | | opseaeList . Count = = 0 ) {
return result ;
}
result . opseae = opseaeList [ 0 ] ;
result . HeadLetter = new t_op_letter_md ( ) ;
result . HeadLetter . 编 号 = result . opseae . 编 号 ;
result . HeadLetter . 函 电 名 称 = lettername ;
//该字段用于: 保存新增的业务函电时, 需先保存op_letter ,但该表是自增序列号表,
//如这种业务函电在一个订舱中多于一个( 如派车) , 则无法定位到正确的新增op_letter
//故增加此字段,以记录该条业务函电的主键。
//如这种业务函电在一个订舱中只有一个( 如订舱) , 则djyid和DJYBOOKINGID字符串相同;
//如多于一个( 如派车) , 则op_letter.djybookingid=op_letter_pc.djybookingid
//且这种业务函电 需要在调用getHelper方法获得【大简云业务函电】对象时, 传DJYBOOKINGID字段值
result . HeadLetter . DJYBOOKINGID = childletter . DJYBOOKINGID ;
result . HeadLetter . DJYLETTERID = childletter . DJYLETTERID ;
result . ChildLetter = childletter ;
return result ;
}
public void DoSave ( ) {
if ( string . IsNullOrWhiteSpace ( HeadLetter . 编 号 ) )
{
return ;
}
else {
//如果具体业务函电已存在 则更新之
//判断依据为是否存在
SaveLetter ( ) ;
}
}
public void SaveLetter ( object 大 简 云 对 象 = null ) {
var result = new OpLetterBase ( ) ;
var ds6 = new DS6DataContext ( ) ;
void SaveHeadLetter ( string 函 电 名 称 ) {
/ /
ds6 . t_op_letter . Add ( HeadLetter ) ;
ds6 . SaveChanges ( ) ;
var letterheads = ds6 . t_op_letter . Where ( x = > x . 编 号 = = opseae . 编 号 & & x . 函 电 名 称 = = HeadLetter . 函 电 名 称 ) . ToList ( ) ;
if ( letterheads ! = null | | letterheads . Count > 0 ) {
HeadLetter = letterheads [ 0 ] ;
}
//return new t_op_letter_md();
}
void UpdHeadLetter ( string 函 电 名 称 )
{
/ /
var UpdHeadLetterList = ds6 . t_op_letter . Where ( x = > x . 编 号 = = opseae . 编 号 & & x . 函 电 名 称 = = 函 电 名 称 ) . ToList ( ) ;
if ( UpdHeadLetterList ! = null | | UpdHeadLetterList . Count > 0 )
{
var UpdHead = UpdHeadLetterList [ 0 ] ;
UpdHead . HEAD_TO = HeadLetter . HEAD_TO ;
UpdHead . HEAD_ATTN = HeadLetter . HEAD_ATTN ;
UpdHead . 签 发 人 = HeadLetter . 签 发 人 ;
UpdHead . 签 发 日 期 = HeadLetter . 签 发 日 期 ;
}
//return new t_op_letter_md();
}
void DelHeadLetter ( string 函 电 名 称 )
{
var delheadList = ds6 . t_op_letter . Where ( x = > x . 编 号 = = opseae . 编 号 & & x . 函 电 名 称 = = 函 电 名 称 ) . ToList ( ) ;
if ( delheadList ! = null & & delheadList . Count > 0 ) {
var delhead = delheadList [ 0 ] ;
ds6 . t_op_letter . Remove ( delhead ) ;
}
}
//没有找到业务 也就没有可以保存的op_letter 直接退出
if ( HeadLetter = = null ) return ;
//var currlist = new List<OpLetterBase>();
if ( HeadLetter . 函 电 名 称 = = "入货通知" ) {
var currHeadLetterList = ds6 . t_op_letter . Where ( x = > x . 编 号 = = opseae . 编 号 & & x . 函 电 名 称 = = HeadLetter . 函 电 名 称 ) . ToList ( ) ;
var currlist = new List < t_op_letter_rh_md > ( ) ;
if ( currHeadLetterList ! = null & & currHeadLetterList . Count > 0 ) {
currlist = ds6 . t_op_letter_rh . Where ( x = > x . LE_ID = = currlist [ 0 ] . LE_ID ) . ToList ( ) ;
}
//首先判断是否为删除 如果是 执行删除
if ( IsDeleted )
{
//找到具体letter 如有则定位到opletter
//两个都要删除
if ( currHeadLetterList ! = null & & currHeadLetterList . Count > 0 )
{
//ds6.t_op_letter.Remove(currHeadLetterList[0]);
if ( currlist ! = null & & currlist . Count > 0 ) {
var delrec = currlist [ 0 ] ;
ds6 . t_op_letter_rh . Remove ( delrec ) ;
}
DelHeadLetter ( HeadLetter . 函 电 名 称 ) ;
ds6 . SaveChanges ( ) ;
return ;
}
}
if ( currlist ! = null & & currlist . Count > 0 )
{
UpdHeadLetter ( HeadLetter . 函 电 名 称 ) ;
//寻找
var updrec = currlist [ 0 ] ;
updrec . getCopy ( ChildLetter , typeof ( t_op_letter_rh_md ) ) ;
ds6 . t_op_letter_rh . AddOrUpdate ( updrec ) ;
}
else
{
SaveHeadLetter ( HeadLetter . 函 电 名 称 ) ;
if ( HeadLetter . LE_ID = = 0 ) return ;
ChildLetter . LE_ID = HeadLetter . LE_ID ;
ds6 . t_op_letter_rh . Add ( ( t_op_letter_rh_md ) ChildLetter ) ;
}
}
if ( HeadLetter . 函 电 名 称 = = "派车" )
{
var 派 车 对 象 = ( 大 简 云 派 车 ) 大 简 云 对 象 ;
var currHeadLetterList = ds6 . t_op_letter . Where ( x = > x . 编 号 = = opseae . 编 号 & & x . 函 电 名 称 = = HeadLetter . 函 电 名 称 ) . ToList ( ) ;
var currlist = new List < t_op_letter_pc_md > ( ) ;
if ( currHeadLetterList ! = null & & currHeadLetterList . Count > 0 )
{
currlist = ds6 . t_op_letter_pc . Where ( x = > x . LE_ID = = currHeadLetterList [ 0 ] . LE_ID ) . ToList ( ) ;
}
if ( IsDeleted )
{
//找到具体letter 如有则定位到opletter
//两个都要删除
if ( currlist ! = null & & currlist . Count > 0 )
{
var delrec = currlist [ 0 ] ;
ds6 . t_op_letter_pc . Remove ( delrec ) ;
DelHeadLetter ( HeadLetter . 函 电 名 称 ) ;
ds6 . SaveChanges ( ) ;
return ;
}
opseae . 承 运 车 队 = "" ;
opseae . 派 车 日 期 = null ;
ds6 . t_op_seae . AddOrUpdate ( opseae ) ;
}
else {
opseae . 承 运 车 队 = ( ( t_op_letter_pc_md ) ChildLetter ) . 承 运 车 队 ;
opseae . 派 车 日 期 = 派 车 对 象 . main . truckTime ;
ds6 . t_op_seae . AddOrUpdate ( opseae ) ;
}
if ( currlist ! = null & & currlist . Count > 0 )
{
//寻找
var updrec = currlist [ 0 ] ;
updrec . getCopy ( ChildLetter , typeof ( t_op_letter_pc_md ) ) ;
ds6 . t_op_letter_pc . AddOrUpdate ( updrec ) ;
}
else
{
SaveHeadLetter ( HeadLetter . 函 电 名 称 ) ;
if ( HeadLetter . LE_ID = = 0 ) return ;
ChildLetter . LE_ID = HeadLetter . LE_ID ;
ds6 . t_op_letter_pc . Add ( ( t_op_letter_pc_md ) ChildLetter ) ;
}
var ctninfo = 派 车 对 象 . main . contaList ;
var currctn = ds6 . t_op_letter_pc_ctn . Where ( x = > x . LE_ID = = HeadLetter . LE_ID ) . ToList ( ) ;
if ( currctn ! = null & & currctn . Count > 0 ) {
ds6 . t_op_letter_pc_ctn . RemoveRange ( currctn ) ;
}
if ( ctninfo ! = null & & ctninfo . Count > 0 ) {
foreach ( var djyctn in ctninfo ) {
var newctn = djyctn . GetPcCtn ( HeadLetter ) ;
ds6 . t_op_letter_pc_ctn . Add ( newctn ) ;
}
}
}
ds6 . SaveChanges ( ) ;
}
}
public class 大 简 云 入 货 通 知
{
public long BookingId { get ; set ; }
public long Id { get ; set ; }
/// <summary>
/// TO
/// </summary>
public string ToName { get ; set ; }
/// <summary>
/// ATTN
/// </summary>
public string Attn { get ; set ; }
/// <summary>
/// ATTN电话
/// </summary>
public string AttnTel { get ; set ; }
/// <summary>
/// ATTN邮箱
/// </summary>
public string AttnMail { get ; set ; }
/// <summary>
/// FROM
/// </summary>
public string FromName { get ; set ; }
/// <summary>
/// FROM电话
/// </summary>
public string FromTel { get ; set ; }
/// <summary>
/// FROM邮箱
/// </summary>
public string FromMail { get ; set ; }
/// <summary>
/// 描述
/// </summary>
public string Description { get ; set ; }
/// <summary>
/// 截单时间
/// </summary>
public DateTime ? CloseDocTime { get ; set ; }
/// <summary>
/// 截港时间
/// </summary>
public DateTime ? ClosingTime { get ; set ; }
/// <summary>
/// 截VGM时间
/// </summary>
public DateTime ? VgmTime { get ; set ; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get ; set ; }
/// <summary>
/// 场站代码
/// </summary>
public string YARDID { get ; set ; }
/// <summary>
/// 场站
/// </summary>
public string YARD { get ; set ; }
/// <summary>
/// 场站联系人
/// </summary>
public string YARDCONTRACT { get ; set ; }
/// <summary>
/// 场站联系人电话
/// </summary>
public string YARDCONTRACTTEL { get ; set ; }
/// <summary>
/// 是否删除 ture删除 否则新增或修改
/// </summary>
public bool IsDeleted { get ; set ; } = false ;
public 大 简 云 业 务 函 电 GetLetter ( ) {
var letterchild = new t_op_letter_rh_md
{
LE_ID = 0 ,
入 货 场 站 = SetLength ( YARD , 30 ) ,
入 货 截 至 时 间 = ClosingTime = = null ? "" : ( ( DateTime ) ClosingTime ) . ToString ( "yyyy-MM-dd" ) ,
场 站 联 系 人 = SetLength ( YARDCONTRACT , 60 ) ,
场 站 联 系 电 话 = SetLength ( YARDCONTRACTTEL , 60 ) ,
备 注 = SetLength ( Remark , 200 ) ,
DJYLETTERID = Id ,
DJYBOOKINGID = BookingId
} ;
var result = 大 简 云 业 务 函 电 . getHelper ( "入货通知" , letterchild ) ;
result . HeadLetter . HEAD_TO = SetLength ( ToName , 60 ) ;
result . HeadLetter . HEAD_ATTN = SetLength ( Attn , 60 ) ;
result . HeadLetter . 签 发 人 = SetLength ( FromName , 10 ) ;
result . HeadLetter . 签 发 日 期 = DateTime . Now ;
result . IsDeleted = IsDeleted ;
//result.IsDeleted = true;
return result ;
}
}
public class 大 简 云 派 车
{
public class 派 车 head
{
public long gid { get ; set ; }
public string messageType { get ; set ; }
public string senderId { get ; set ; }
public string senderName { get ; set ; }
public string receiverId { get ; set ; }
public string receiverName { get ; set ; }
public string token { get ; set ; }
public string version { get ; set ; }
public string requestDate { get ; set ; }
public string senderKey { get ; set ; }
public string requestAction { get ; set ; }
}
public class 派 车 main
{
public string operType { get ; set ; }
//tenantId
/// <summary>
/// 派车单ID
/// </summary>
public long id { get ; set ; }
/// <summary>
/// 订舱ID
/// </summary>
public long bookingId { get ; set ; }
public long? truckId { get ; set ; }
public string truckCode { get ; set ; }
public string truckName { get ; set ; }
public string toName { get ; set ; }
public string attn { get ; set ; }
public string attnTel { get ; set ; }
public string attnMail { get ; set ; }
public string attnFax { get ; set ; }
public string fromName { get ; set ; }
public string fromTel { get ; set ; }
public string fromMail { get ; set ; }
public string fromFax { get ; set ; }
public decimal? kgs { get ; set ; }
public decimal? fee { get ; set ; }
public string payMethod { get ; set ; }
public string payMethodName { get ; set ; }
public DateTime ? truckTime { get ; set ; }
public string yardid { get ; set ; }
public string yard { get ; set ; }
public string yardcontract { get ; set ; }
public string yardcontracttel { get ; set ; }
public string factoryId { get ; set ; }
public string factoryCode { get ; set ; }
public string factoryName { get ; set ; }
public string factoryContact { get ; set ; }
public string factoryTel { get ; set ; }
public string returnTime { get ; set ; }
public string inYardID { get ; set ; }
public string inYard { get ; set ; }
public string inYardContact { get ; set ; }
public string inYardContractTel { get ; set ; }
public DateTime ? needArriveTime { get ; set ; }
public string closingTime { get ; set ; }
public string pickUpTime { get ; set ; }
public string isGuaJi { get ; set ; }
public string attention { get ; set ; }
public string remark { get ; set ; }
public string dispatcherId { get ; set ; }
public string dispatcherName { get ; set ; }
public string factoryAddr { get ; set ; }
public string callBackStatus { get ; set ; }
public bool IsDeleted { get {
return operType = = "Delete" ;
}
}
public List < conta > contaList { get ; set ; } = new List < conta > ( ) ;
public string 箱 型 箱 量 ( ) {
var result = "" ;
var 箱 型 箱 量 dic = new Dictionary < string , int > ( ) ;
foreach ( var conta in contaList ) {
if ( 箱 型 箱 量 dic . ContainsKey ( conta . ctnall ) )
{
箱 型 箱 量 dic [ conta . ctnall ] + = conta . ctnnum = = null ? 0 : ( int ) conta . ctnnum ;
}
else {
箱 型 箱 量 dic . Add ( conta . ctnall , conta . ctnnum = = null ? 0 : ( int ) conta . ctnnum ) ;
}
}
if ( 箱 型 箱 量 dic . Count > 0 ) {
foreach ( var item in 箱 型 箱 量 dic ) {
if ( result = = "" ) result + = " " ;
result + = item . Key + "*" + item . Value . ToString ( ) ;
}
}
return result ;
}
}
public class conta
{
public string ctncode { get ; set ; }
public string ctnall { get ; set ; }
public int? ctnnum { get ; set ; }
public int? teu { get ; set ; }
public string cntrno { get ; set ; }
public string sealno { get ; set ; }
public decimal? pkgs { get ; set ; }
public string kindpkgs { get ; set ; }
public decimal? kgs { get ; set ; }
public decimal? cbm { get ; set ; }
public decimal? tareweight { get ; set ; }
public string ctnstatus { get ; set ; }
public string weightype { get ; set ; }
public string weighkgs { get ; set ; }
public string weighattn { get ; set ; }
public string vgmconncom { get ; set ; }
public string weightel { get ; set ; }
public string weighdate { get ; set ; }
public string vgmaddr { get ; set ; }
public string vgmemail { get ; set ; }
public string remark { get ; set ; }
public string carNumber { get ; set ; }
public string carDriver { get ; set ; }
public string carDriverTel { get ; set ; }
public t_op_letter_pc_ctn_md GetPcCtn ( t_op_letter_md HeadLetter ) {
var result = new t_op_letter_pc_ctn_md ( )
{
LE_ID = HeadLetter . LE_ID ,
表 现 形 式 = ctnall ,
箱 号 = cntrno ,
封 号 = sealno ,
数 量 = ctnnum = = null ? 0 : ( int ) ctnnum ,
件 数 = pkgs = = null ? 0 : ( int ) pkgs ,
包 装 = kindpkgs ,
重 量 = kgs ,
尺 码 = cbm ,
车 牌 号 = carNumber ,
司 机 = carDriver ,
司 机 电 话 = carDriverTel
} ;
return result ;
}
}
public 派 车 head head { get ; set ; }
public 派 车 main main { get ; set ; }
public 大 简 云 业 务 函 电 GetLetter ( )
{
var letterchild = new t_op_letter_pc_md
{
承 运 车 队 = SetLength ( main . truckName , 30 ) ,
箱 型 箱 量 = SetLength ( main . 箱 型 箱 量 ( ) , 50 ) ,
背 箱 场 站 = SetLength ( main . yard , 30 ) ,
场 站 联 系 人 = SetLength ( main . yardcontract , 60 ) ,
场 站 电 话 = SetLength ( main . yardcontracttel , 60 ) ,
要 求 到 厂 时 间 = main . needArriveTime = = null ? "" : ( ( DateTime ) main . needArriveTime ) . ToString ( "yyyy-MM-dd HH:mm:ss" ) ,
厂 家 地 址 = SetLength ( main . factoryAddr , 100 ) ,
厂 家 联 系 人 = SetLength ( main . factoryContact , 60 ) ,
厂 家 联 系 电 话 = SetLength ( main . factoryTel , 60 ) ,
返 箱 地 址 = SetLength ( main . inYard , 100 ) ,
返 箱 联 系 人 = SetLength ( main . inYardContact , 60 ) ,
返 箱 联 系 电 话 = SetLength ( main . inYardContractTel , 60 ) ,
备 注 = SetLength ( main . remark , 200 ) ,
陆 运 费 = main . fee ,
结 算 方 式 = main . payMethodName ,
DJYLETTERID = main . id ,
DJYBOOKINGID = main . bookingId
} ;
var result = 大 简 云 业 务 函 电 . getHelper ( "派车" , letterchild ) ;
if ( result . HeadLetter = = null ) return result ;
result . IsDeleted = main . IsDeleted ;
if ( ! string . IsNullOrWhiteSpace ( main . toName ) )
result . HeadLetter . HEAD_TO = SetLength ( main . toName , 60 ) ;
if ( ! string . IsNullOrWhiteSpace ( main . attn ) )
result . HeadLetter . HEAD_ATTN = SetLength ( main . attn , 60 ) ;
if ( ! string . IsNullOrWhiteSpace ( main . fromName ) )
result . HeadLetter . 签 发 人 = SetLength ( main . fromName , 10 ) ;
if ( ! string . IsNullOrWhiteSpace ( main . fromName ) )
result . HeadLetter . 签 发 日 期 = DateTime . Now ;
return result ;
}
}
# endregion
static string NumberToEnglishString ( int number )
{
if ( number < 0 ) //暂不考虑负数
{
return "" ;
}
if ( number < 20 ) //0到19
{
switch ( number )
{
case 0 :
return "zero" ;
case 1 :
return "one" ;
case 2 :
return "two" ;
case 3 :
return "three" ;
case 4 :
return "four" ;
case 5 :
return "five" ;
case 6 :
return "sex" ;
case 7 :
return "seven" ;
case 8 :
return "eight" ;
case 9 :
return "nine" ;
case 10 :
return "ten" ;
case 11 :
return "eleven" ;
case 12 :
return "twelve" ;
case 13 :
return "thirteen" ;
case 14 :
return "fourteen" ;
case 15 :
return "fifteen" ;
case 16 :
return "sixteen" ;
case 17 :
return "seventeen" ;
case 18 :
return "eighteen" ;
case 19 :
return "nineteen" ;
default :
return "" ;
}
}
if ( number < 100 ) //20到99
{
if ( number % 10 = = 0 ) //20,30,40,...90的输出
{
switch ( number )
{
case 20 :
return "twenty" ;
case 30 :
return "thirty" ;
case 40 :
return "forty" ;
case 50 :
return "fifty" ;
case 60 :
return "sixty" ;
case 70 :
return "seventy" ;
case 80 :
return "eighty" ;
case 90 :
return "ninety" ;
default :
return "" ;
}
}
else //21.22,.99 思路: 26=20+6
{
return string . Format ( "{0} {1}" , NumberToEnglishString ( 10 * ( number / 10 ) ) ,
NumberToEnglishString ( number % 10 ) ) ;
}
}
if ( number < 1000 ) //100到999 百级
{
if ( number % 100 = = 0 )
{
return string . Format ( "{0} hundred" , NumberToEnglishString ( number / 100 ) ) ;
}
else
{
return string . Format ( "{0} hundred and {1}" , NumberToEnglishString ( number / 100 ) ,
NumberToEnglishString ( number % 100 ) ) ;
}
}
if ( number < 1000000 ) //1000到999999 千级
{
if ( number % 1000 = = 0 )
{
return string . Format ( "{0} thousand" , NumberToEnglishString ( number / 1000 ) ) ;
}
else
{
return string . Format ( "{0} thousand and {1}" , NumberToEnglishString ( number / 1000 ) ,
NumberToEnglishString ( number % 1000 ) ) ;
}
}
if ( number < 1000000000 ) //1000 000到999 999 999 百万级
{
if ( number % 1000 = = 0 )
{
return string . Format ( "{0} million" , NumberToEnglishString ( number / 1000000 ) ) ;
}
else
{
return string . Format ( "{0} million and {1}" , NumberToEnglishString ( number / 1000000 ) ,
NumberToEnglishString ( number % 1000000 ) ) ;
}
}
if ( number < = int . MaxValue ) //十亿 级
{
if ( number % 1000000000 = = 0 )
{
return string . Format ( "{0} billion" , NumberToEnglishString ( number / 1000000000 ) ) ;
}
else
{
return string . Format ( "{0} billion and {1}" , NumberToEnglishString ( number / 1000000000 ) ,
NumberToEnglishString ( number % 1000000000 ) ) ;
}
}
return "" ;
}
public static string SetLength ( string oldstr , int length )
{
var str = string . IsNullOrWhiteSpace ( oldstr ) ? "" : ( len ( oldstr ) > length ) ? SubString2 ( oldstr , 0 , length ) : oldstr ;
return str ;
}
public static int len ( string str )
{
System . Text . ASCIIEncoding n = new System . Text . ASCIIEncoding ( ) ;
byte [ ] b = n . GetBytes ( str ) ;
int length = 0 ; // l 为字符串的实际长度
for ( int i = 0 ; i < = b . Length - 1 ; i + + )
{
if ( b [ i ] = = 63 ) //判断是否为汉字或全脚符号
{
length + + ;
}
length + + ;
}
return length ;
}
public static string SubString2 ( string str , int startIndex , int length )
{
byte [ ] b = System . Text . Encoding . Default . GetBytes ( str ) ;
if ( length > b . Length )
{
length = b . Length ;
}
return System . Text . Encoding . Default . GetString ( b , startIndex , length ) ;
}
public static DateTime ? SetDayZero ( DateTime ? dt )
{
var result = new DateTime ? ( ) ;
result = null ;
if ( dt ! = null ) result = new DateTime ( ( ( DateTime ) dt ) . Year , ( ( DateTime ) dt ) . Month , ( ( DateTime ) dt ) . Day ) ;
return result ;
}
public static DateTime ? SetDayMinute ( DateTime ? dt )
{
var result = new DateTime ? ( ) ;
result = null ;
if ( dt ! = null ) result = new DateTime ( ( ( DateTime ) dt ) . Year , ( ( DateTime ) dt ) . Month , ( ( DateTime ) dt ) . Day , ( ( DateTime ) dt ) . Hour , ( ( DateTime ) dt ) . Minute , ( ( DateTime ) dt ) . Second ) ;
return result ;
}
public static string 设 置 换 行 ( string str ) {
if ( string . IsNullOrWhiteSpace ( str ) ) return "" ;
var myStr = Regex . Replace ( str , "(?<!\r)\n" , "\r\n" ) ;
return myStr ;
}
#region 逻辑信息子表操作
#region 将一个dictionary转化为用;;和::隔开的文本
public static string DicToStr ( Dictionary < string , string > dic )
{
var result = "" ;
foreach ( var item in dic )
{
result + = item . Key + "::" + item . Value + ";;" ;
}
return result ;
}
# endregion
#region 将一个用;;和::隔开的文本转化为dictionary
public static Dictionary < string , string > StrToDic ( string dicstr )
{
var result = new Dictionary < string , string > ( ) ;
var list = Regex . Split ( dicstr , ";;" ) . ToList ( ) ;
foreach ( var item in list )
{
var itemarray = Regex . Split ( item , "::" ) ;
if ( itemarray . Length < 2 ) continue ;
result . Add ( itemarray [ 0 ] , itemarray [ 1 ] = = null ? "" : itemarray [ 1 ] ) ;
}
return result ;
}
# endregion
public static Dictionary < string , string > GetLogicInfo ( string BSNO , string PROPNAME )
{
CommonDataContext cdc = new CommonDataContext ( ) ;
var result = new Dictionary < string , string > ( ) ;
var infoList = cdc . OP_LOGICINFO . Where ( x = > x . BSNO = = BSNO & & x . PROPNAME = = PROPNAME ) . ToList ( ) ;
if ( infoList ! = null & & infoList . Count > 0 )
{
result = StrToDic ( infoList [ 0 ] . PROPVALUE ) ;
}
return result ;
}
public static void SaveLogicInfo ( string BSNO , string PROPNAME , Dictionary < string , string > InfoDic )
{
CommonDataContext cdc = new CommonDataContext ( ) ;
var result = new Dictionary < string , string > ( ) ;
var infoList = cdc . OP_LOGICINFO . Where ( x = > x . BSNO = = BSNO & & x . PROPNAME = = PROPNAME ) . ToList ( ) ;
if ( infoList ! = null & & infoList . Count > 0 )
{
infoList [ 0 ] . PROPVALUE = DicToStr ( InfoDic ) ;
cdc . OP_LOGICINFO . AddOrUpdate ( infoList [ 0 ] ) ;
cdc . SaveChanges ( ) ;
}
else
{
var newinfo = new OP_LOGICINFO_md ( ) ;
newinfo . GID = Guid . NewGuid ( ) ;
newinfo . BSNO = BSNO ;
newinfo . PROPNAME = PROPNAME ;
newinfo . PROPVALUE = DicToStr ( InfoDic ) ;
cdc . OP_LOGICINFO . Add ( newinfo ) ;
cdc . SaveChanges ( ) ;
}
}
# endregion
}
/// <summary>
/// 汉字转拼音类
/// </summary>
public class Hz2Py
{
private static int [ ] pyValue = new int [ ]
{
- 20319 , - 20317 , - 20304 , - 20295 , - 20292 , - 20283 , - 20265 , - 20257 , - 20242 , - 20230 , - 20051 , - 20036 ,
- 20032 , - 20026 , - 20002 , - 19990 , - 19986 , - 19982 , - 19976 , - 19805 , - 19784 , - 19775 , - 19774 , - 19763 ,
- 19756 , - 19751 , - 19746 , - 19741 , - 19739 , - 19728 , - 19725 , - 19715 , - 19540 , - 19531 , - 19525 , - 19515 ,
- 19500 , - 19484 , - 19479 , - 19467 , - 19289 , - 19288 , - 19281 , - 19275 , - 19270 , - 19263 , - 19261 , - 19249 ,
- 19243 , - 19242 , - 19238 , - 19235 , - 19227 , - 19224 , - 19218 , - 19212 , - 19038 , - 19023 , - 19018 , - 19006 ,
- 19003 , - 18996 , - 18977 , - 18961 , - 18952 , - 18783 , - 18774 , - 18773 , - 18763 , - 18756 , - 18741 , - 18735 ,
- 18731 , - 18722 , - 18710 , - 18697 , - 18696 , - 18526 , - 18518 , - 18501 , - 18490 , - 18478 , - 18463 , - 18448 ,
- 18447 , - 18446 , - 18239 , - 18237 , - 18231 , - 18220 , - 18211 , - 18201 , - 18184 , - 18183 , - 18181 , - 18012 ,
- 17997 , - 17988 , - 17970 , - 17964 , - 17961 , - 17950 , - 17947 , - 17931 , - 17928 , - 17922 , - 17759 , - 17752 ,
- 17733 , - 17730 , - 17721 , - 17703 , - 17701 , - 17697 , - 17692 , - 17683 , - 17676 , - 17496 , - 17487 , - 17482 ,
- 17468 , - 17454 , - 17433 , - 17427 , - 17417 , - 17202 , - 17185 , - 16983 , - 16970 , - 16942 , - 16915 , - 16733 ,
- 16708 , - 16706 , - 16689 , - 16664 , - 16657 , - 16647 , - 16474 , - 16470 , - 16465 , - 16459 , - 16452 , - 16448 ,
- 16433 , - 16429 , - 16427 , - 16423 , - 16419 , - 16412 , - 16407 , - 16403 , - 16401 , - 16393 , - 16220 , - 16216 ,
- 16212 , - 16205 , - 16202 , - 16187 , - 16180 , - 16171 , - 16169 , - 16158 , - 16155 , - 15959 , - 15958 , - 15944 ,
- 15933 , - 15920 , - 15915 , - 15903 , - 15889 , - 15878 , - 15707 , - 15701 , - 15681 , - 15667 , - 15661 , - 15659 ,
- 15652 , - 15640 , - 15631 , - 15625 , - 15454 , - 15448 , - 15436 , - 15435 , - 15419 , - 15416 , - 15408 , - 15394 ,
- 15385 , - 15377 , - 15375 , - 15369 , - 15363 , - 15362 , - 15183 , - 15180 , - 15165 , - 15158 , - 15153 , - 15150 ,
- 15149 , - 15144 , - 15143 , - 15141 , - 15140 , - 15139 , - 15128 , - 15121 , - 15119 , - 15117 , - 15110 , - 15109 ,
- 14941 , - 14937 , - 14933 , - 14930 , - 14929 , - 14928 , - 14926 , - 14922 , - 14921 , - 14914 , - 14908 , - 14902 ,
- 14894 , - 14889 , - 14882 , - 14873 , - 14871 , - 14857 , - 14678 , - 14674 , - 14670 , - 14668 , - 14663 , - 14654 ,
- 14645 , - 14630 , - 14594 , - 14429 , - 14407 , - 14399 , - 14384 , - 14379 , - 14368 , - 14355 , - 14353 , - 14345 ,
- 14170 , - 14159 , - 14151 , - 14149 , - 14145 , - 14140 , - 14137 , - 14135 , - 14125 , - 14123 , - 14122 , - 14112 ,
- 14109 , - 14099 , - 14097 , - 14094 , - 14092 , - 14090 , - 14087 , - 14083 , - 13917 , - 13914 , - 13910 , - 13907 ,
- 13906 , - 13905 , - 13896 , - 13894 , - 13878 , - 13870 , - 13859 , - 13847 , - 13831 , - 13658 , - 13611 , - 13601 ,
- 13406 , - 13404 , - 13400 , - 13398 , - 13395 , - 13391 , - 13387 , - 13383 , - 13367 , - 13359 , - 13356 , - 13343 ,
- 13340 , - 13329 , - 13326 , - 13318 , - 13147 , - 13138 , - 13120 , - 13107 , - 13096 , - 13095 , - 13091 , - 13076 ,
- 13068 , - 13063 , - 13060 , - 12888 , - 12875 , - 12871 , - 12860 , - 12858 , - 12852 , - 12849 , - 12838 , - 12831 ,
- 12829 , - 12812 , - 12802 , - 12607 , - 12597 , - 12594 , - 12585 , - 12556 , - 12359 , - 12346 , - 12320 , - 12300 ,
- 12120 , - 12099 , - 12089 , - 12074 , - 12067 , - 12058 , - 12039 , - 11867 , - 11861 , - 11847 , - 11831 , - 11798 ,
- 11781 , - 11604 , - 11589 , - 11536 , - 11358 , - 11340 , - 11339 , - 11324 , - 11303 , - 11097 , - 11077 , - 11067 ,
- 11055 , - 11052 , - 11045 , - 11041 , - 11038 , - 11024 , - 11020 , - 11019 , - 11018 , - 11014 , - 10838 , - 10832 ,
- 10815 , - 10800 , - 10790 , - 10780 , - 10764 , - 10587 , - 10544 , - 10533 , - 10519 , - 10331 , - 10329 , - 10328 ,
- 10322 , - 10315 , - 10309 , - 10307 , - 10296 , - 10281 , - 10274 , - 10270 , - 10262 , - 10260 , - 10256 , - 10254
} ;
private static string [ ] pyName = new string [ ]
{
"A" , "Ai" , "An" , "Ang" , "Ao" , "Ba" , "Bai" , "Ban" , "Bang" , "Bao" , "Bei" , "Ben" ,
"Beng" , "Bi" , "Bian" , "Biao" , "Bie" , "Bin" , "Bing" , "Bo" , "Bu" , "Ba" , "Cai" , "Can" ,
"Cang" , "Cao" , "Ce" , "Ceng" , "Cha" , "Chai" , "Chan" , "Chang" , "Chao" , "Che" , "Chen" , "Cheng" ,
"Chi" , "Chong" , "Chou" , "Chu" , "Chuai" , "Chuan" , "Chuang" , "Chui" , "Chun" , "Chuo" , "Ci" , "Cong" ,
"Cou" , "Cu" , "Cuan" , "Cui" , "Cun" , "Cuo" , "Da" , "Dai" , "Dan" , "Dang" , "Dao" , "De" ,
"Deng" , "Di" , "Dian" , "Diao" , "Die" , "Ding" , "Diu" , "Dong" , "Dou" , "Du" , "Duan" , "Dui" ,
"Dun" , "Duo" , "E" , "En" , "Er" , "Fa" , "Fan" , "Fang" , "Fei" , "Fen" , "Feng" , "Fo" ,
"Fou" , "Fu" , "Ga" , "Gai" , "Gan" , "Gang" , "Gao" , "Ge" , "Gei" , "Gen" , "Geng" , "Gong" ,
"Gou" , "Gu" , "Gua" , "Guai" , "Guan" , "Guang" , "Gui" , "Gun" , "Guo" , "Ha" , "Hai" , "Han" ,
"Hang" , "Hao" , "He" , "Hei" , "Hen" , "Heng" , "Hong" , "Hou" , "Hu" , "Hua" , "Huai" , "Huan" ,
"Huang" , "Hui" , "Hun" , "Huo" , "Ji" , "Jia" , "Jian" , "Jiang" , "Jiao" , "Jie" , "Jin" , "Jing" ,
"Jiong" , "Jiu" , "Ju" , "Juan" , "Jue" , "Jun" , "Ka" , "Kai" , "Kan" , "Kang" , "Kao" , "Ke" ,
"Ken" , "Keng" , "Kong" , "Kou" , "Ku" , "Kua" , "Kuai" , "Kuan" , "Kuang" , "Kui" , "Kun" , "Kuo" ,
"La" , "Lai" , "Lan" , "Lang" , "Lao" , "Le" , "Lei" , "Leng" , "Li" , "Lia" , "Lian" , "Liang" ,
"Liao" , "Lie" , "Lin" , "Ling" , "Liu" , "Long" , "Lou" , "Lu" , "Lv" , "Luan" , "Lue" , "Lun" ,
"Luo" , "Ma" , "Mai" , "Man" , "Mang" , "Mao" , "Me" , "Mei" , "Men" , "Meng" , "Mi" , "Mian" ,
"Miao" , "Mie" , "Min" , "Ming" , "Miu" , "Mo" , "Mou" , "Mu" , "Na" , "Nai" , "Nan" , "Nang" ,
"Nao" , "Ne" , "Nei" , "Nen" , "Neng" , "Ni" , "Nian" , "Niang" , "Niao" , "Nie" , "Nin" , "Ning" ,
"Niu" , "Nong" , "Nu" , "Nv" , "Nuan" , "Nue" , "Nuo" , "O" , "Ou" , "Pa" , "Pai" , "Pan" ,
"Pang" , "Pao" , "Pei" , "Pen" , "Peng" , "Pi" , "Pian" , "Piao" , "Pie" , "Pin" , "Ping" , "Po" ,
"Pu" , "Qi" , "Qia" , "Qian" , "Qiang" , "Qiao" , "Qie" , "Qin" , "Qing" , "Qiong" , "Qiu" , "Qu" ,
"Quan" , "Que" , "Qun" , "Ran" , "Rang" , "Rao" , "Re" , "Ren" , "Reng" , "Ri" , "Rong" , "Rou" ,
"Ru" , "Ruan" , "Rui" , "Run" , "Ruo" , "Sa" , "Sai" , "San" , "Sang" , "Sao" , "Se" , "Sen" ,
"Seng" , "Sha" , "Shai" , "Shan" , "Shang" , "Shao" , "She" , "Shen" , "Sheng" , "Shi" , "Shou" , "Shu" ,
"Shua" , "Shuai" , "Shuan" , "Shuang" , "Shui" , "Shun" , "Shuo" , "Si" , "Song" , "Sou" , "Su" , "Suan" ,
"Sui" , "Sun" , "Suo" , "Ta" , "Tai" , "Tan" , "Tang" , "Tao" , "Te" , "Teng" , "Ti" , "Tian" ,
"Tiao" , "Tie" , "Ting" , "Tong" , "Tou" , "Tu" , "Tuan" , "Tui" , "Tun" , "Tuo" , "Wa" , "Wai" ,
"Wan" , "Wang" , "Wei" , "Wen" , "Weng" , "Wo" , "Wu" , "Xi" , "Xia" , "Xian" , "Xiang" , "Xiao" ,
"Xie" , "Xin" , "Xing" , "Xiong" , "Xiu" , "Xu" , "Xuan" , "Xue" , "Xun" , "Ya" , "Yan" , "Yang" ,
"Yao" , "Ye" , "Yi" , "Yin" , "Ying" , "Yo" , "Yong" , "You" , "Yu" , "Yuan" , "Yue" , "Yun" ,
"Za" , "Zai" , "Zan" , "Zang" , "Zao" , "Ze" , "Zei" , "Zen" , "Zeng" , "Zha" , "Zhai" , "Zhan" ,
"Zhang" , "Zhao" , "Zhe" , "Zhen" , "Zheng" , "Zhi" , "Zhong" , "Zhou" , "Zhu" , "Zhua" , "Zhuai" , "Zhuan" ,
"Zhuang" , "Zhui" , "Zhun" , "Zhuo" , "Zi" , "Zong" , "Zou" , "Zu" , "Zuan" , "Zui" , "Zun" , "Zuo"
} ;
/// <summary>
/// 把汉字转换成拼音(全拼)
/// </summary>
/// <param name="hzString">汉字字符串</param>
/// <returns>转换后的拼音(全拼)字符串</returns>
public static string Convert ( string hzString )
{
// 匹配中文字符
Regex regex = new Regex ( "^[\u4e00-\u9fa5]$" ) ;
byte [ ] array = new byte [ 2 ] ;
string pyString = "" ;
int chrAsc = 0 ;
int i1 = 0 ;
int i2 = 0 ;
char [ ] noWChar = hzString . ToCharArray ( ) ;
for ( int j = 0 ; j < noWChar . Length ; j + + )
{
// 中文字符
if ( regex . IsMatch ( noWChar [ j ] . ToString ( ) ) )
{
array = System . Text . Encoding . Default . GetBytes ( noWChar [ j ] . ToString ( ) ) ;
i1 = ( short ) ( array [ 0 ] ) ;
i2 = ( short ) ( array [ 1 ] ) ;
chrAsc = i1 * 256 + i2 - 65536 ;
if ( chrAsc > 0 & & chrAsc < 160 )
{
pyString + = noWChar [ j ] ;
}
else
{
// 修正部分文字
if ( chrAsc = = - 9254 ) // 修正“圳”字
pyString + = "Zhen" ;
else
{
for ( int i = ( pyValue . Length - 1 ) ; i > = 0 ; i - - )
{
if ( pyValue [ i ] < = chrAsc )
{
pyString + = pyName [ i ] ;
break ;
}
}
}
}
}
// 非中文字符
else
{
pyString + = noWChar [ j ] . ToString ( ) ;
}
}
return pyString ;
}
}
//private static string GetCharSpellCode(string CnChar)
//{
// long iCnChar;
// byte[] ZW = System.Text.Encoding.Default.GetBytes(CnChar);
// //如果是字母,则直接返回
// if (ZW.Length == 1)
// {
// return CnChar.ToUpper();
// }
// else
// {
// // get the array of byte from the single char
// int i1 = (short)(ZW[0]);
// int i2 = (short)(ZW[1]);
// iCnChar = i1 * 256 + i2;
// }
// #region table of the constant list
// //expresstion
// //table of the constant list
// // 'A'; //45217..45252
// // 'B'; //45253..45760
// // 'C'; //45761..46317
// // 'D'; //46318..46825
// // 'E'; //46826..47009
// // 'F'; //47010..47296
// // 'G'; //47297..47613
// // 'H'; //47614..48118
// // 'J'; //48119..49061
// // 'K'; //49062..49323
// // 'L'; //49324..49895
// // 'M'; //49896..50370
// // 'N'; //50371..50613
// // 'O'; //50614..50621
// // 'P'; //50622..50905
// // 'Q'; //50906..51386
// // 'R'; //51387..51445
// // 'S'; //51446..52217
// // 'T'; //52218..52697
// //没有U,V
// // 'W'; //52698..52979
// // 'X'; //52980..53640
// // 'Y'; //53689..54480
// // 'Z'; //54481..55289
// #endregion
// // iCnChar match the constant
// if ((iCnChar >= 45217) && (iCnChar <= 45252))
// {
// return "A";
// }
// else if ((iCnChar >= 45253) && (iCnChar <= 45760))
// {
// return "B";
// }
// else if ((iCnChar >= 45761) && (iCnChar <= 46317))
// {
// return "C";
// }
// else if ((iCnChar >= 46318) && (iCnChar <= 46825))
// {
// return "D";
// }
// else if ((iCnChar >= 46826) && (iCnChar <= 47009))
// {
// return "E";
// }
// else if ((iCnChar >= 47010) && (iCnChar <= 47296))
// {
// return "F";
// }
// else if ((iCnChar >= 47297) && (iCnChar <= 47613))
// {
// return "G";
// }
// else if ((iCnChar >= 47614) && (iCnChar <= 48118))
// {
// return "H";
// }
// else if ((iCnChar >= 48119) && (iCnChar <= 49061))
// {
// return "J";
// }
// else if ((iCnChar >= 49062) && (iCnChar <= 49323))
// {
// return "K";
// }
// else if ((iCnChar >= 49324) && (iCnChar <= 49895))
// {
// return "L";
// }
// else if ((iCnChar >= 49896) && (iCnChar <= 50370))
// {
// return "M";
// }
// else if ((iCnChar >= 50371) && (iCnChar <= 50613))
// {
// return "N";
// }
// else if ((iCnChar >= 50614) && (iCnChar <= 50621))
// {
// return "O";
// }
// else if ((iCnChar >= 50622) && (iCnChar <= 50905))
// {
// return "P";
// }
// else if ((iCnChar >= 50906) && (iCnChar <= .51386))
// {
// return "Q";
// }
// else if ((iCnChar >= 51387) && (iCnChar <= 51445))
// {
// return "R";
// }
// else if ((iCnChar >= 51446) && (iCnChar <= 52217))
// {
// return "S";
// }
// else if ((iCnChar >= 52218) && (iCnChar <= 52697))
// {
// return "T";
// }
// else if ((iCnChar >= 52698) && (iCnChar <= 52979))
// {
// return "W";
// }
// else if ((iCnChar >= 52980) && (iCnChar <= 53640))
// {
// return "X";
// }
// else if ((iCnChar >= 53689) && (iCnChar <= 54480))
// {
// return "Y";
// }
// else if ((iCnChar >= 54481) && (iCnChar <= 55289))
// {
// return "Z";
// }
// else return ("?");
//}
}