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

4676 lines
202 KiB
C#

9 months ago
using DSWeb.Common.DB;
using DSWeb.Common.Extentions;
using DSWeb.Common.Helper;
using FluentFTP.Helpers;
using ICSharpCode.SharpZipLib.BZip2;
using ICSharpCode.SharpZipLib.Zip;
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.Diagnostics;
using System.IO;
using System.Linq;
using System.Net.NetworkInformation;
using System.Security.Policy;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
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 QueuePrefix_RESP = "djy.booking.feedback.";
/// <summary>
/// 在大简云的公司ID
/// </summary>
private static string CompanyId = ConfigurationManager.AppSettings["CompanyId"].ToLower();
private static string DS7ConnStr = ConfigurationManager.ConnectionStrings["DS7DB"].ConnectionString;
private string RecMqUri = ConfigurationManager.AppSettings["ReceiveResp"];
private string = ConfigurationManager.AppSettings["USEDATA"];
private IConnection mqConn;
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"":476086087065670,""BSNO"":null,""BSSTATUS"":null,""BSSTATUSNAME"":""已派车"",""BSDATE"":""2023-10-27T00:00:00"",""MBLNO"":""177RZHZHQ2432VRF"",""HBLNO"":""CMTA2023D502"",""BOOKINGNO"":""476086087065669"",""CONTRACTNO"":""没有0"",""SERVICECONTRACTNO"":null,""SHIPPERID"":null,""CONSIGNEEID"":null,""NOTIFYPARTYID"":null,""SHIPPER"":""CIMC WETRANS LEADING FRESH LOGISTICS \nTECHNOLOGY (SHANDONG) CO.,LTD\n1-47 NO. 44 JIAHU ROAD HETOUDIAN TOWN \nLAIXI QINGDAO SHANDONG CHINA 266621\n"",""CONSIGNEE"":""REJOICE LOGISTICS (CANADA) INC.\n#260-11780 HAMMERSMITH WAY,\nRICHMOND, B.C. CANADA V7A 5E9\nTEL : 604-204-2668\nFAX : 604-204-2568\nE-MAIL :INFO@REJOICELOGISTICS.CA"",""NOTIFYPARTY"":""REJOICE LOGISTICS (CANADA) INC.\n#260-11780 HAMMERSMITH WAY,\nRICHMOND, B.C. CANADA V7A 5E9\nTEL : 604-204-2668\nFAX : 604-204-2568\nE-MAIL :INFO@REJOICELOGISTICS.CA"",""NOTIFYPARTY2"":"""",""YARDID"":""GLCZ"",""YARD"":""港陆场站"",""VESSELID"":null,""VESSEL"":""MSC IVANA"",""VOYNO"":""UK343A"",""VOYNOINNER"":""UK343A"",""ETD"":""2023-11-04T00:00:00"",""ATD"":null,""CLOSINGDATE"":null,""CLOSEDOCDATE"":null,""CLOSEVGMDATE"":null,""ETA"":null,""PLACERECEIPTID"":"""",""PLACERECEIPT"":"""",""PORTLOADID"":""CNTAO"",""PORTLOAD"":""QINGDAO,CHINA"",""PORTDISCHARGEID"":""CAVAN"",""PORTDISCHARGE"":""VANCOUVER"",""PLACEDELIVERYID"":"""",""PLACEDELIVERY"":"""",""DESTINATIONID"":""CAVAN"",""DESTINATION"":""VANCOUVER"",""NOBILL"":"""",""COPYNOBILL"":"""",""ISSUETYPE"":"""",""ISSUEDATE"":null,""ISSUEPLACEID"":"""",""ISSUEPLACE"":""QINGDAO,CHINA"",""BLFRT"":""FREIGHT PREPAID"",""PREPARDAT"":""QINGDAO,CHINA"",""PAYABLEAT"":"""",""SERVICE"":""CY-CY"",""MARKS"":""N/M"",""HSCODE"":"""",""DESCRIPTION"":""FRESH WHITE RADISH\nHS CODE:070690\nTEMP:-1'C\nVENT:20CBM/H"",""PKGS"":1440,""KINDPKGS"":""CARTONS"",""KGS"":27000.00000,""CBM"":50.0000,""TOTALNO"":""SAY:ONE THOUSAND FOUR HUNDRED AND FORTY CARTONS ONLY."",""CNTRTOTAL"":""40'RH*1"",""CARRIERID"":""MSC"",""CARRIER"":""MSC"",""CARGOID"":""R"",""DCLASS"":"""",""DUNNO"":"""",""DPAGE"":"""",""DLABEL"":"""",""LINKMAN"":"""",""TEMPID"":"""",""TEMPSET"":"""",""REEFERF"":"""",""HUMIDITY"":"""",""TEMPMIN"":"""",""TEMPMAX"":"""",""ISCONTAINERSOC"":false,""SOREMARK"":""1660+AMS35,分单"",""SIREMARK"":"""",""YARDREMARK"":"""",""COMPID"":null,""COMPNAME"":null,""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"":""报-BPGM23012"",""OPID"":""356029261668421"",""DOCID"":""409864742023237"",""OP"":""张艺凡"",""DOC"":""刘乙洁"",""SALEID"":""386904850808901"",""SALE"":""王寅"",""CUSTSERVICEID"":""399290671059013"",""CUSTSERVICE"":""柴婷"",""CUSTOMERNAME"":""沂水宝平-沂水宝平"",""FORWARDER"":""订舱中心"",""SHIPAGENCY"":"""",""CUSTOMSER"":""顺之航报关"",""TRUCKER"":"""",""AGENTID"":"""",""CUSTOMERID"":410507280597061,""FORWARDERID"":""DCZX"",""SHIPAGENCYID"":"""",""CUSTOMSERID"":""SZHBG"",""TRUCKERID"":"""",""AGENTNAME"":"""",""WEITUO"":"""",""CONSIGNEEDOORADDR"":null,""SHIPPERDOORADDR"":null,""SCACCODE"":"""",""ITNCODE"":"""",""PREPARDATID"":""CNTAO"",""PAYABLEATID"":"""",""CUSTNO"":"""",""TRANSPORTID"":"""",""TRANSPORT"":"""",""THIRDPAYADDR"":"""",""YARDCONTRACT"":"""",""YARDCONTRACTTEL"":"""",""YARDCONTRACTEMAIL"":"""",""FEESELF"":false,""LANECODE"":"""",""LANENAME"":""ZCP"",""FREIGHTPAYER"":"""",""GOODSCODE"":""020"",""GOODSNAME"":""ANIMAL FEEDS (SHRIMPS FEED,HAYS)"",""PKGSTOTAL"":""""
";
//byte[] byteArray = System.Text.Encoding.Default.GetBytes(testjson);
//var _e = Encoding.GetEncoding("iso-8859-1");
//byte[] _e2 = _e.GetBytes(testjson);
//var strBody = Encoding.UTF8.GetString(byteArray.ToArray());
//var strBody = Encoding.UTF8.GetString(_e2);
DingCangToDS7(JArray.Parse(testjson));
//*/
#endregion
///* 测试时删去前面两个注释号
#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_RESP}{CompanyId}", false, false, false, null);
var consumerDingCang = new EventingBasicConsumer(modelDingCang);
consumerDingCang.Received += (ch, ea) =>
{
var body = ea.Body;
try
{
////不压缩
//var strBody = Encoding.UTF8.GetString(body.ToArray());
////压缩
var strBodyZip = Encoding.UTF8.GetString(body.ToArray());
//logger.Debug($"收到大简云订舱输出压缩数据:{strBodyZip}");
var strBody = Decompress(strBodyZip);
logger.Debug($"收到大简云订舱输出数据:{strBody}");
//导出到东胜6
//if(strBody.Contains("TAHT30633700"))
DingCangToDS7(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_RESP}{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
//// DelToDS7(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
//*/
}
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
public string GetUserRefList(string itemstr)
{
return itemstr;
}
#region 大简云通过消息队列发布的SI等单号数据
public static void DingCangToDS7(JArray jarr)
{
try
{
var itemstr = "";
CommonDataContext DS7Data = new CommonDataContext();
var dolist = new List<DingCangHead>();
foreach (var item in jarr)
{
var obj = item as JObject;
itemstr = item.ToString();
//var head = JsonConvert.DeserializeObject<DingCangHead>(itemstr);
//ThreadSaveDS6_Single SaveThread = new ThreadSaveDS6_Single();
//有参调用实例方法ParameterizedThreadStart是一个委托input为object,返回值为void
//Thread thread1 = new Thread(new ParameterizedThreadStart(SaveThread.FuncSend));
//thread1.Start(itemstr);
Task.Run(()=> { Do_DingCangToDS6(itemstr); });
//Do_DingCangToDS6(itemstr);
}
//注释部分 为每消息队列文本包 起一个线程
//ThreadSaveDS6_List SaveThread = new ThreadSaveDS6_List();
////有参调用实例方法ParameterizedThreadStart是一个委托input为object,返回值为void
//Thread thread1 = new Thread(new ParameterizedThreadStart(SaveThread.FuncSend));
//thread1.Start(dolist);
}
catch (Exception e)
{
var errorobjstr = JsonConvert.SerializeObject(e);
logger.Error($"导入出错:{e}//{errorobjstr}");
}
}
public class {
public long DJYID { get; set; }
public DateTime StartTime { get; set; }
public (long id) {
DJYID = id;
StartTime = DateTime.Now;
}
}
public static void Do_DingCangToDS6(string itemstr,int count=0)
{
//logger.Debug($"线程开始:{Thread.CurrentThread.ManagedThreadId}");
if (count > 3) {
logger.Debug($"重试完结");
return;
}
var head = JsonConvert.DeserializeObject<DingCangHead>(itemstr);
var errorobjstr = "";
decimal mark = 0.0m;
try
{
DS6DataContext DS6Data = new DS6DataContext();
//判断业务是否存在。判断依据为head.
//如果不存在 则新增
//如存在,则删除原有箱信息。
//logger.Debug($"查询业务:{head.Id}");
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.;
//20230726 会计期间改为:如果有实际开船日期 ATD/预抵日期 则按实际开船日期计算,如果没有,则按当前日期计算
//如果费用封账
if (updrec. == "费用封帐") {
newhead. = updrec.;
//newhead.ETD= updrec.ETD;
newhead. = updrec.;
//20230927 增加四个在费用封账状态下不更新的字段
newhead. = updrec.;
newhead. = updrec.;
newhead. = updrec.;//订舱代理
newhead. = updrec.;
//newhead.三
}
newhead. = string.IsNullOrWhiteSpace(head.mblno) ? updrec. : head.mblno;
newhead. = updrec.;
newhead. = updrec.;
newhead. = updrec.;
newhead. = updrec.;
newhead. = updrec.;
newhead. = updrec.;
newhead. = updrec.;
//20230803 根据马静怡的要求
//在同步时 如果目的港ETA为空 则不用空值更新东胜的ETA当前值
if (newhead.ETA == null) {
newhead.ETA = updrec.ETA;
}
logger.Debug($"开始处理(更新){newhead.主提单号};{newhead.DJYID}");
//执行中对象2.执行列表数();
Set(ref newhead, head);
DS6Data.t_op_seae.AddOrUpdate(newhead);
DS6Data.SaveChanges();
//logger.Debug($"更新业务1{head.Id}");
#region 箱信息
DS6Data = new DS6DataContext();
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);
//}
ctn_dellist.Add(oldctn);
}
if (ctn_dellist.Count > 0)
{
mark = 1.11m;
DS6Data.t_op_ctn.RemoveRange(ctn_dellist);
DS6Data.SaveChanges();
//logger.Debug($"更新箱信息1{head.Id}");
}
if (ctn_addlist.Count > 0)
{
mark = 1.112m;
DS6Data.t_op_ctn.AddRange(ctn_addlist);
DS6Data.SaveChanges();
//logger.Debug($"更新箱信息2{head.Id}");
}
//if (ctn_updlist.Count > 0)
//{
// foreach (var updctn in ctn_updlist)
// {
// DS6Data.t_op_ctn.AddOrUpdate(updctn);
// }
//}
#endregion
#region 提单信息
DS6Data = new DS6DataContext();
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);
mark = 1.12m;
DS6Data.SaveChanges();
//logger.Debug($"更新提单信息:{head.Id}");
#endregion
#region 分单
//分单列表
DS6Data = new DS6DataContext();
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 (assistantDelList.Count > 0)
{
mark = 1.13m;
DS6Data.t_op_seae_assistant.RemoveRange(assistantDelList);
DS6Data.SaveChanges();
//logger.Debug($"更新分单信息1{head.Id}");
}
if (assistantAddList.Count > 0)
{
mark = 1.132m;
DS6Data.t_op_seae_assistant.AddRange(assistantAddList);
DS6Data.SaveChanges();
//logger.Debug($"更新分单信息2{head.Id}");
}
//if (assistantUpdList.Count > 0)
//{
// foreach (var upd in assistantUpdList)
// {
// DS6Data.t_op_seae_assistant.AddOrUpdate(upd);
// }
//}
//DS6Data.SaveChanges();
#endregion
#region 业务状态
DS6Data = new DS6DataContext();
var Currstatuslist = DS6Data.t_op_state.Where(x => x. == headid).ToList();
if (Currstatuslist != null && Currstatuslist.Count > 0)
{
DS6Data.t_op_state.RemoveRange(Currstatuslist);
DS6Data.SaveChanges();
}
var statusList = head.GetOpStatus(newhead);
if (statusList != null && statusList.Count > 0)
{
DS6Data.t_op_state.AddRange(statusList);
DS6Data.SaveChanges();
}
#endregion
mark = 1.2m;
DS6Data = new DS6DataContext();
var ob = new
{
head = newhead,
ctnlist = ctn_addlist,
amslist = newamslist,
ass1 = assistantAddList,
//ass2 = assistantUpdList,
ass3 = assistantDelList,
};
errorobjstr = JsonConvert.SerializeObject(ob);
//logger.Debug($"更新完成:{newhead.主提单号};{newhead.DJYID}");
AfterSave(newhead.);
//DS6Data.SaveChanges();
logger.Debug($"完成处理(更新){newhead.主提单号};{newhead.DJYID}");
}
else
{
//新增业务
var newhead = head.GetOpseae();
//过滤权限
//var cando = 人员是否具备权限(newhead.录入人, "776");
//if (!cando) continue;
var new = Helper.Instance.DoGet();
newhead. = new;
newhead. = new;
newhead. = string.IsNullOrWhiteSpace(head.mblno) ? new : head.mblno;
newhead. = new;
newhead. = new;
newhead. = new;
newhead. = new;
newhead. = new;
logger.Debug($"开始处理(新增){newhead.主提单号};{newhead.DJYID}");
//执行中对象2.执行列表数();
//var 业务编号Code = "SE" + ((DateTime)(newhead.会计期间)).Year.ToString() + ((DateTime)(newhead.会计期间)).Month.ToString().PadLeft(2, '0');
DateTime now = DateTime.Now;
DateTime today2 = new DateTime(now.Year, now.Month, now.Day);
var Code = "SE" + today2.Year.ToString() + today2.Month.ToString().PadLeft(2, '0');
//newhead.业务编号 = 获取业务编号Helper.Instance. DS6GetBSNO(业务编号Code);
Set(ref newhead, head);
DS6Data.t_op_seae.Add(newhead);
mark = 2.1m;
DS6Data.SaveChanges();
//logger.Debug($"新增save1{newhead.主提单号};{newhead.DJYID}");
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.);
if (newctnList != null && newctnList.Count > 0) {
DS6Data.t_op_ctn.AddRange(newctnList);
//logger.Debug($"新增ctn{newhead.主提单号};{newhead.DJYID}");
}
var amslist = DS6Data.t_op_ams.Where(x => x. == headid).ToList();
DS6Data.t_op_ams.RemoveRange(amslist);
var newamslist = head.GetAmsList(newhead);
if (newamslist != null && newamslist.Count > 0)
{
DS6Data.t_op_ams.AddRange(newamslist);
//logger.Debug($"新增ams{newhead.主提单号};{newhead.DJYID}");
}
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!=null && assistantAddList.Count > 0) {
DS6Data.t_op_seae_assistant.AddRange(assistantAddList);
//logger.Debug($"新增assistant{newhead.主提单号};{newhead.DJYID}");
}
mark = 3.1m;
#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.21m;
}
var statusList = head.GetOpStatus(newhead);
if (statusList != null && statusList.Count > 0)
{
DS6Data.t_op_state.AddRange(statusList);
//logger.Debug($"新增statusList{newhead.主提单号};{newhead.DJYID}");
mark = 3.22m;
}
#endregion
mark = 3.3m;
DS6Data.SaveChanges();
//logger.Debug($"新增完成:{newhead.主提单号};{newhead.DJYID}");
AfterSave(newhead.);
logger.Debug($"完成处理(新增){newhead.主提单号};{newhead.DJYID}");
}
}
catch (Exception e)
{
errorobjstr = JsonConvert.SerializeObject(e);
logger.Error($"导入订舱信息出错{mark}{e}//{errorobjstr}");
logger.Error($"出错重试{count}{head.Id}");
Thread.Sleep(100);
Task.Run(() => { Do_DingCangToDS6(itemstr, count + 1); });
}
finally {
//var dh = 执行中对象2.Instance;
//dh.执行完成(head.Id);
//执行中对象2.执行列表数("完成");
////ThreadSaveDS6_Single.处理完成(head.Id);
}
}
public static void AfterSave(string ) {
try
{
//20230717 保存业务后,执行一个存储过程
using (DS6DataContext context = new DS6DataContext())
{
SqlParameter bsno = new SqlParameter("@bsno", );
int count = context.Database.ExecuteSqlCommand("exec p_exec_accmonth @bsno", bsno);
context.SaveChanges();
count = context.Database.ExecuteSqlCommand($" update t_op_seae set 应结日期=ISNULL(dbo.GetCustStlDay(预抵日期,委托单位,揽货人),预抵日期) where 编号='{编号}' and 预抵日期 is not null ");
context.SaveChanges();
logger.Debug($"AfterSave:{编号};{count}");
}
}
catch (Exception e) {
var str=JsonConvert.SerializeObject(e);
logger.Error($"AfterSave:{str}");
}
return ;
}
#region 原保存逻辑
//public static void DingCangToDS6_OLD(JArray jarr)
//{
// var itemstr = "";
// decimal mark = 0.0M;
// 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.业务编号;
// 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_dellist.Count > 0)
// {
// DS6Data.t_op_ctn.RemoveRange(ctn_dellist);
// }
// 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);
// // }
// //}
// #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.11m;
// }
// var statusList = head.GetOpStatus(newhead);
// if (statusList != null && statusList.Count > 0)
// {
// DS6Data.t_op_state.AddRange(statusList);
// mark = 1.12m;
// }
// #endregion
// mark = 1.2m;
// 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 dh = new 获取编号Helper();
// var new编号 = dh.DoGet();
// 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.1m;
// 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.1m;
// #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.21m;
// }
// var statusList = head.GetOpStatus(newhead);
// if (statusList != null && statusList.Count > 0)
// {
// DS6Data.t_op_state.AddRange(statusList);
// mark = 3.22m;
// }
// #endregion
// mark = 3.3m;
// DS6Data.SaveChanges();
// }
// }
// }
// catch (Exception e)
// {
// logger.Error($"导入订舱信息出错{mark}{e}//{errorobjstr}");
// }
//}
#endregion
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 static void DS6OpLetter_RH(string itemstr)
{
/*
if (!itemstr.Contains("457570071453766")) {
return;
}
//*/
try
{
DS6DataContext DS6Data = new DS6DataContext();
var rh= JsonConvert.DeserializeObject<>(itemstr);
if (rh != null)
{
var letter = rh.GetLetter();
letter.SaveLetter();
}
else {
logger.Error($"入货通知空:////" + itemstr);
}
}
catch (Exception e)
{
logger.Error($"入货通知出错:{e}////" + itemstr);
}
}
public static void DS6OpLetter_PC(string itemstr)
{
try
{
DS6DataContext DS6Data = new DS6DataContext();
var rh = JsonConvert.DeserializeObject<>(itemstr);
if (rh != null)
{
var letter = rh.GetLetter();
letter.SaveLetter(rh);
}
else {
logger.Error($"派车通知空:////" + itemstr);
}
}
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; } //"截单备注",
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 string VERSION { get; set; } = "";//版本号 内容为一个gid用来记录数据是否为最新
public string LineManage { get; set; } = "";//航线管理
public string ShippingMethod { 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 += "\r\n";
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 get1()
{
if (string.IsNullOrWhiteSpace(.1)) return 0;
foreach (var item in )
{
if (item.. == .1) return item.;
}
return 0;
}
public int get2()
{
if (string.IsNullOrWhiteSpace(.2)) return 0;
foreach (var item in )
{
if (item.. == .2) return item.;
}
return 0;
}
public int get3()
{
if (string.IsNullOrWhiteSpace(.3)) return 0;
foreach (var item in )
{
if (item.. == .3) return item.;
}
return 0;
}
public int get4()
{
if (string.IsNullOrWhiteSpace(.4)) return 0;
foreach (var item in )
{
if (item.. == .4) return item.;
}
return 0;
}
public int get5()
{
if (string.IsNullOrWhiteSpace(.5)) return 0;
foreach (var item in )
{
if (item.. == .5) return item.;
}
return 0;
}
public int get6()
{
if (string.IsNullOrWhiteSpace(.6)) return 0;
foreach (var item in )
{
if (item.. == .6) return item.;
}
return 0;
}
public int get7()
{
if (string.IsNullOrWhiteSpace(.7)) return 0;
foreach (var item in )
{
if (item.. == .7) return item.;
}
return 0;
}
public int get8()
{
if (string.IsNullOrWhiteSpace(.8)) return 0;
foreach (var item in )
{
if (item.. == .8) return item.;
}
return 0;
}
public int get9()
{
if (string.IsNullOrWhiteSpace(.9)) return 0;
foreach (var item in )
{
if (item.. == .9) return item.;
}
return 0;
}
public int get10()
{
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 ();
var tcodectn= d6.t_code_ctn.Where(x=>1==1).ToList();
if (ctnInputs!=null)
foreach (var ctn in ctnInputs)
{
var infoList = tcodectn.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) = .;
//carrier
var = carrier;
var carrier_clientList = d6.t_crm_client.Where(x => x. == carrier).ToList();
if (carrier_clientList!=null && carrier_clientList.Count>0) {
var carrier_client = carrier_clientList[0];
= carrier_client.;
}
//int? 申请箱使天数 = null;
DateTime now = DateTime.Now;
DateTime today2 = new DateTime(now.Year, now.Month, now.Day);
var = "整箱";
if (!string.IsNullOrWhiteSpace(ShippingMethod))
{
//if (船公司.IndexOf("拼箱") >= 0)
//{
// 装运方式 = "拼箱";
//}
= ShippingMethod;
}
var result = new t_op_seae_md
{
= bsno,
= string.IsNullOrWhiteSpace( bsstatusname)? "接受委托": bsstatusname,
= "录入状态",
= SetDayZero(atd),
= ,
= weeks,
= bsdate, //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,
= ,//cntrtotal,//
= ,
= ,
= ,//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 = .get1(),
2 = .get2(),
3 = .get3(),
4 = .get4(),
5 = .get5(),
6 = .get6(),
7 = .get7(),
8 = .get8(),
9 = .get9(),
10 = .get10(),
= (bookingEDIExt == null ? "" : bookingEDIExt.exRemark1),
= (bookingEDIExt == null ? "" : bookingEDIExt.exRemark2),
= (bookingEDIExt == null ? "" : bookingEDIExt.exRemark3),
= (bookingEDIExt == null ? "" : bookingEDIExt.exRemark4),
= ,
= ,
DJYVERSION = VERSION,
线= LineManage
};
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>
{
{"业务状态",80},
{"主提单号",20},
{"分提单号",30},
{"委托编号",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},
{"签单方式",50},
{"签单地点",30},
{"付费方式",60},
{"预付地点",100},
{"到付地点",100},
{"运输条款",10},
{"唛头",800},
{"箱号封号",3000},
{"件数包装",1000},
{"货物描述",1400},
{"货物名称",100},
{"货物重量",1000},
{"货物尺码",1000},
{"包装",60},
{"件数大写",100},
{"箱数大写",100},
{"集装箱",200},
{"录入人",12},
{"操作员",10},
{"揽货人",10},
{"客服员",10},
{"航线",30},
{"船公司",20},
{"货代公司",20},
{"备注",800},
{"报关行",20},
{"承运车队",20},
{"分单列表",2000},
{"计费标准",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},
{"解锁人",10},
{"主提单标准",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},
{"运费协议号",20},
{"航线操作",10},
//{"分票编号",12},
//{"特殊要求",30},
{"HS编码",30},
{"船代",20},
{"单证员",10},
{"箱使堆存",30},
{"EDI备注",2000},
{"航线管理",20}
};
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 = "";
try
{
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].;
}
}
catch (Exception e) {
var str=JsonConvert.SerializeObject(e);
logger.Error(str);
}
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),
SI = (SetLength(siremark, 1000))
};
//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 = .get1(),
2 = .get2(),
3 = .get3(),
4 = .get4(),
5 = .get5(),
6 = .get6(),
7 = .get7(),
8 = .get8(),
9 = .get9(),
10 = .get10(),
= (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 DateTime StartDatetime { get; set; }
//public DingCangHead() {
// StartDatetime=DateTime.Now;
//}
}
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; } = 0M;
public decimal? cbm { get; set; } = 0M;
public decimal? tareweight { get; set; } = 0M;
public string ctnstatus { get; set; } //"string",
public string weightype { get; set; } //"string",
public decimal? weighkgs { get; set; } = 0M;
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; } = 0M;
public string kindpkgs { get; set; } //"string",
public decimal? kgs { get; set; } = 0M;
public decimal? cbm { get; set; } = 0M;
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; } = 0M;
}
/// <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) {
var headid = currHeadLetterList[0].LE_ID;
currlist = ds6.t_op_letter_rh.Where(x => x.LE_ID == headid).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;
}
}
else
{
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. && x.DJYLETTERID== HeadLetter.DJYLETTERID).ToList();
var currlist = new List<t_op_letter_pc_md>();
if (currHeadLetterList != null && currHeadLetterList.Count > 0)
{
var headid = currHeadLetterList[0].LE_ID;
currlist = ds6.t_op_letter_pc.Where(x => x.LE_ID == headid).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).;
var =new DateTime();
try
{
if (.main.truckTime != null)
{
= (DateTime)(.main.truckTime);
= new DateTime(.Year, .Month, .Day);
}
}
catch (Exception)
{
}
opseae. = ;
ds6.t_op_seae.AddOrUpdate(opseae);
if (currHeadLetterList == null || currHeadLetterList.Count == 0)
{
ds6.t_op_letter.Add(HeadLetter);
ds6.SaveChanges();
var letterheads = ds6.t_op_letter.Where(x => x. == opseae. && x.DJYLETTERID == HeadLetter.DJYLETTERID).ToList();
if (letterheads != null || letterheads.Count > 0)
{
HeadLetter = letterheads[0];
}
}
else {
HeadLetter = currHeadLetterList[0];
}
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
{
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);
ds6.SaveChanges();
}
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;
}
}
public class Helper {
private static readonly Lazy<Helper> lazy = new Lazy<Helper>(() => new Helper());
public static Helper Instance { get { return lazy.Value; } }
private Helper() { }
public static int newno { get; set; } = 0;
public string DoGet() {
try
{
//logger.Debug("获取编号");
DS6DataContext DS6Data = new DS6DataContext();
var = DS6Data.t_op_seae.Max(m => m.);
if ( == null) = "0";
var new = (int.Parse() + 1).ToString().PadLeft(10, ' ');
return new;
}
catch (Exception ex)
{
logger.Debug("获取编号错误");
return DoGet();
}
finally {
}
}
}
public class Helper
{
private static readonly Lazy<Helper> lazy = new Lazy<Helper>(() => new Helper());
public static Helper Instance { get { return lazy.Value; } }
private Helper() { }
}
#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
//public class ThreadSaveDS6_List
//{
// public static bool inworking { get; set; } = false;
// public static List<DingCangHead> 待处理列表 = new List<DingCangHead>();
// public static List<DingCangHead> 处理中列表 = new List<DingCangHead>();
// public static List<long> 当前处理中DJYID列表 = new List<long>();
// public static void 处理完成(long DJYID) {
// if (处理中列表 != null && 处理中列表.Count > 0) {
// if (处理中列表.Exists(x => x.Id == DJYID)) {
// try {
// var delrec = 处理中列表.FirstOrDefault(x => x.Id == DJYID);
// 处理中列表.Remove(delrec);
// }catch (Exception e)
// {
// //
// }
// }
// }
// }
// public void FuncSend(object o)
// {
// if (inworking == true) return;
// inworking = true;
// if (处理中列表 == null || 处理中列表.Count == 0)
// {
// 当前处理中DJYID列表 = new List<long>();
// }
// else {
// 当前处理中DJYID列表 = 处理中列表.Select(s => s.Id).ToList();
// }
// var newrec = (List<DingCangHead>)o;
// foreach (var item in newrec) {
// item.StartDatetime=DateTime.Now;
// }
// 待处理列表.AddRange(newrec);
// //var 待处理
// void 执行待处理() {
// var dellist = new List<long>();
// foreach (var item in 待处理列表)
// {
// if (当前处理中DJYID列表.Exists(x => x == item.Id))
// {
// continue;
// }
// else
// {
// dellist.Add(item.Id);
// 当前处理中DJYID列表.Add(item.Id);
// 处理中列表.Add(item);
// //Do_DingCangToDS6(item);
// }
// }
// if (dellist != null && dellist.Count > 0)
// {
// foreach (var delid in dellist)
// {
// if (待处理列表.Exists(x => x.Id == delid))
// {
// var delrec = 待处理列表.FirstOrDefault(x => x.Id == delid);
// 待处理列表.Remove(delrec);
// }
// }
// }
// }
// try
// {
// while (待处理列表 != null && 待处理列表.Count > 0) {
// DateTime dt1 = DateTime.Now;
// while ((DateTime.Now - dt1).TotalMilliseconds < 100)
// {
// continue;
// }
// 执行待处理();
// }
// }
// catch (Exception e)
// {
// }
// finally {
// inworking = false;
// }
// }
//}
public class ThreadSaveDS6_Single
{
//public static bool inworking { get; set; } = false;
//public static List<long> 处理中id列表 = new List<long>();
public void FuncSend(object o)
{
var itemstr = (string)o;
try
{
Do_DingCangToDS6(itemstr);
}
catch (Exception e)
{
var errorobjstr = JsonConvert.SerializeObject(e);
logger.Error($"导入出错:{e}//{errorobjstr}");
}
finally
{
//inworking = false;
}
}
}
}
/// <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 ("?");
//}
}