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.DJYMQ/DS7Service.cs

5864 lines
254 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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
{
/// <summary>
/// 和川用 同步DS6和大简云订舱平台的服务程序
/// </summary>
public class DS7Service : ServiceControl
{
private const string ExchangeName = "output";
private static ILog logger = LogManager.GetLogger("DS7Service");
//private const string QueuePrefixCangDan = "djy.output.cangdan.ds7.";
//private const string QueuePrefixBaoguan = "djy.output.baoguan.ds7.";
//private const string QueuePrefixBG = "djy.output.baoguan.bg.ds7.";
private const string QueuePrefix_DingCang = "djy.output.dingcang.ds6.";
private const string QueuePrefix_Del = "djy.output.dingcang.ds6_delete.";
private const string QueuePrefix_Letter_RH = "djy.output.dingcang.ds6_fangcang.";
private const string QueuePrefix_Letter_PC = "djy.output.booktruck.ds6.";
/// <summary>
/// 在大简云的公司ID
/// </summary>
private static string CompanyId = ConfigurationManager.AppSettings["CompanyId"].ToLower();
//private static string Corpid = ConfigurationManager.AppSettings["Corpid"];
//private static string DS7ConnStr = ConfigurationManager.ConnectionStrings["DongShengDB"].ConnectionString;
private static string DS6ConnStr = ConfigurationManager.ConnectionStrings["DS6DB"].ConnectionString;
private string RecMqUri = ConfigurationManager.AppSettings["ReceiveMQUri"];
private string = ConfigurationManager.AppSettings["USEDATA"];
//private string FeeInputUserId = ConfigurationManager.AppSettings["FeeInputUserId"];
//private static string UserNameStr = ConfigurationManager.AppSettings["UserNameStr"];
private IConnection mqConn;
//private IConnection mqConn2;
private IConnection mqConn3;
private IConnection mqConn4;
//费用相关配置
//private static string FeePayName = ConfigurationManager.AppSettings["FeePayName"];
//private static string FeePayCustomer = ConfigurationManager.AppSettings["FeePayCustomer"];
//private static string FeePayCustomerType = ConfigurationManager.AppSettings["FeePayCustomerType"];
//private static decimal FeePayPrice = Convert.ToDecimal(ConfigurationManager.AppSettings["FeePayPrice"]);
//private static string FeePayMyshippingName = ConfigurationManager.AppSettings["FeePayMyshippingName"];
//private static string FeePayMyshippingCustomer = ConfigurationManager.AppSettings["FeePayMyshippingCustomer"];
//private static decimal FeePayMyshippingPrice = Convert.ToDecimal(ConfigurationManager.AppSettings["FeePayMyshippingPrice"]);
//private static string FeeShouName = ConfigurationManager.AppSettings["FeeShouName"];
private CommonDataContext dS7Data = new CommonDataContext();
public List<string> usernamelist = new List<string>();
/// <summary>
/// 压缩
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static string Compress(string input)
{
string result = string.Empty;
byte[] buffer = Encoding.UTF8.GetBytes(input);
using (MemoryStream outputStream = new MemoryStream())
{
using (BZip2OutputStream zipStream = new BZip2OutputStream(outputStream))
{
zipStream.Write(buffer, 0, buffer.Length);
zipStream.Close();
}
return Convert.ToBase64String(outputStream.ToArray());
}
}
/// <summary>
/// 解压缩
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static string Decompress(string input)
{
string result = string.Empty;
byte[] buffer = Convert.FromBase64String(input);
using (Stream inputStream = new MemoryStream(buffer))
{
BZip2InputStream zipStream = new BZip2InputStream(inputStream);
using (StreamReader reader = new StreamReader(zipStream, Encoding.UTF8))
{
//输出
result = reader.ReadToEnd();
}
}
return result;
}
public bool Start(HostControl hostControl)
{
// 开始具体的业务逻辑
logger.Debug("开始运行");
dS7Data.Database.Log = (x => { logger.Debug(x); });
//测试时为false
var = ( == "true");
//if (!string.IsNullOrWhiteSpace(UserNameStr)) {
// usernamelist = UserNameStr.Split(',').ToList() ;
//}
try
{
//测试数据
#region 测试文本
/* 测试时前面增加两个注释号
var testjson = @"[{""Id"":432815572209734,""BSNO"":null,""BSSTATUS"":null,""BSSTATUSNAME"":""已放单"",""BSDATE"":""2023-06-27T10:31:06"",""MBLNO"":""TAHT30956300"",""HBLNO"":"""",""BOOKINGNO"":""432815572209733"",""CONTRACTNO"":""PILNEAAUTAR"",""SERVICECONTRACTNO"":null,""SHIPPERID"":null,""CONSIGNEEID"":null,""NOTIFYPARTYID"":null,""SHIPPER"":""JINING OPTIMUM FRUITS & \nVEGETABLES CO.,LTD. \nROOM 301 HUAFU ON THE EAST \nOF YUMANCHENG HOTEL,HUOJU \nROAD,JINING,SHANDONG,CHINA "",""CONSIGNEE"":""OCEAN SKY ENTERPRISE LTD\nPO BOX 1988,HONIARA \nSOLOMON ISLANDS"",""NOTIFYPARTY"":""LONGO INTERNATIONAL CO., \nLIMITED\nUNIT 17, 9/F., TOWER A, NEW \nMANDARIN PLAZA,NO.14 SCIENCE \nMUSEUM ROAD, TSIMSHATSUI,*"",""NOTIFYPARTY2"":"""",""YARDID"":""DAYA"",""YARD"":""大亚场站"",""VESSELID"":null,""VESSEL"":""KOTA SABAS"",""VOYNO"":""0071W"",""VOYNOINNER"":""KSAB0071W"",""ETD"":""2023-07-04T00:00:00"",""ATD"":""2023-07-08T22:00:00"",""CLOSINGDATE"":null,""CLOSEDOCDATE"":null,""CLOSEVGMDATE"":null,""ETA"":null,""PLACERECEIPTID"":""CNTAO"",""PLACERECEIPT"":""QINGDAO,CHINA"",""PORTLOADID"":""CNTAO"",""PORTLOAD"":""QINGDAO,CHINA"",""PORTDISCHARGEID"":""SBHIR"",""PORTDISCHARGE"":""HONIARA,SOLOMON ISLANDS"",""PLACEDELIVERYID"":""SBHIR"",""PLACEDELIVERY"":""HONIARA,SOLOMON ISLANDS"",""DESTINATIONID"":""SBHIR"",""DESTINATION"":""HONIARA,SOLOMON ISLANDS"",""NOBILL"":"""",""COPYNOBILL"":"""",""ISSUETYPE"":""等通知电放"",""ISSUEDATE"":null,""ISSUEPLACEID"":""CNTAO"",""ISSUEPLACE"":""QINGDAO,CHINA"",""BLFRT"":""FREIGHT COLLECT"",""PREPARDAT"":"""",""PAYABLEAT"":""HONIARA,SOLOMON ISLANDS"",""SERVICE"":"""",""MARKS"":""N/M"",""HSCODE"":""070320"",""DESCRIPTION"":""CHINESE GARLIC\nHS CODE:070320\nTEMP;-3'C\nVENT;5CBM/H\nHUMI;CLOSE \nCARGO IS STOWED IN A REFRIGERATED \nCONTAINER SET AT THE SHIPPER'S REQUESTED \nCARRYING TEMPERATURE OF -3 DEGREES CELSIUS. \n*KOWLOON. HONG KONG \nALSO NOTIFY \nMAINFOODS INTERNATIONAL CO.,LTD LIMITED. \nUNIT 1402A 14/F THE BELGIAN BANK BLDG \nNOS 721-725 NATHAN HONGKONG "",""PKGS"":1000,""KINDPKGS"":""CARTONS"",""KGS"":11000.00000,""CBM"":20.0000,""TOTALNO"":""SAY: ONLY."",""CNTRTOTAL"":""20'RH*1"",""CARRIERID"":""PIL"",""CARRIER"":""PIL"",""CARGOID"":""R"",""DCLASS"":"""",""DUNNO"":"""",""DPAGE"":"""",""DLABEL"":"""",""LINKMAN"":"""",""TEMPID"":""C"",""TEMPSET"":""-3"",""REEFERF"":""5"",""HUMIDITY"":""65"",""TEMPMIN"":""-3"",""TEMPMAX"":""-3"",""ISCONTAINERSOC"":false,""SOREMARK"":"""",""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"":"""",""OPID"":""356029269409861"",""DOCID"":""397867924111429"",""OP"":""李媛媛"",""DOC"":""马静怡"",""SALEID"":""386903403057221"",""SALE"":""姜中正"",""CUSTSERVICEID"":""361415851073605"",""CUSTSERVICE"":""张妍"",""CUSTOMERNAME"":""济宁大同-楷天"",""FORWARDER"":""山东领鲜"",""SHIPAGENCY"":""外代船代-大简云"",""CUSTOMSER"":"""",""TRUCKER"":"""",""AGENTID"":"""",""CUSTOMERID"":410962428182597,""FORWARDERID"":""SDLX"",""SHIPAGENCYID"":""WDCDDJY"",""CUSTOMSERID"":"""",""TRUCKERID"":"""",""AGENTNAME"":"""",""WEITUO"":"""",""CONSIGNEEDOORADDR"":null,""SHIPPERDOORADDR"":null,""SCACCODE"":"""",""ITNCODE"":"""",""PREPARDATID"":"""",""PAYABLEATID"":""SBHIR"",""CUSTNO"":"""",""TRANSPORTID"":"""",""TRANSPORT"":"""",""THIRDPAYADDR"":"""",""YARDCONTRACT"":"""",""YARDCONTRACTTEL"":"""",""YARDCONTRACTEMAIL"":"""",""FEESELF"":false,""LANECODE"":"""",""LANENAME"":"""",""FREIGHTPAYER"":"""",""GOODSCODE"":""170"",""GOODSNAME"":""FRESH PRODUCE (ONION,GARLIC,POTATO)"",""PKGSTOTAL"":"""",""KGSTOTAL"":"""",""CBMTOTAL"":"""",""ROUTEID"":"""",""ROUTE"":"""",""Warehouse"":"""",""WarehouseID"":"""",""EPCode"":"""",""LineName"":""澳新"",""DZRemark"":""V拖7"",""CZRemark"":""0 蒜 楷天 到付! dd"",""TMBLNO"":null,""ShippingMethod"":null,""CtnDayNum"":null,""CreatedUserName"":""马静怡"",""ZhanCangFlag"":""否"",""SourceCode"":""1"",""SourceName"":""自揽货"",""YgtETD"":""2023-07-08T18:00:00"",""StartETA"":""2023-07-07T06:00:00"",""StartATA"":""2023-07-07T04:50:00"",""MiddleETA"":null,""MiddleETD"":null,""MiddleATA"":null,""MiddleATD"":null,""ATA"":null,""ShenQingXiangShi"":null,""ForeignAgent"":null,""VERSION"":""d2be1dae-7555-466c-8896-bf1497da448d"",""ThirdPay"":null,""ThirdPayCode"":null,""ctnInputs"":[{""Id"":434922056499269,""BILLID"":432815572209734,""CTNCODE"":""14"",""CTNALL"":""20'RH"",""CTNNUM"":1,""TEU"":null,""CNTRNO"":""PCIU5838850"",""SEALNO"":""CQ0339253"",""PKGS"":1000,""KINDPKGS"":""CARTONS"",""KGS"":11000.0000,""CBM"":20.0000,""TAREWEIGHT"":2960.0000,""CTNSTATUS"":null,""WEIGHTYPE"":""累加"",""WEIGHKGS"":13960.0000,""WEIGHATTN"":null,""VGMCONNCOM"":null,""WEIGHTEL"":null,""WEIGHDATE"":"""",""VGMADDR"":null,""VGMEMAIL"":null,""REMARK"":null,""ctnDetailInputs"":[]}],""BookingEDIExt"":{""WeiTuoFang"":"""",""SendCode"":"""",""ReceiveCode"":"""",""NotifyCdoe"":"""",""SalerCode"":""CN097 | CHARLES GAO"",""MasterBolIndicator"":""3"",""EmanifestHbl"":"""",""ConsigneeEdiCode"":""HIRFS230012"",""ShipperEdiCode"":""CN218868"",""EDIAttn"":"""",""EDIAttnTel"":"""",""EDIAttnMail"":"""",""AMSConsignee"":"""",""AMSNotifyParty"":"""",""OpEName"":"""",""OpTel"":"""",""OpEmail"":"""",""ACIHBL"":"""",""S0CC0C"":"""",""GoodsName"":"""",""MasterBolIndicatorName"":""Not Applicable/Straight bl | 无HBL"",""SalerCodeName"":"""",""CKHI"":"""",""CNCM"":"""",""WNCM"":"""",""OrderRemark"":""CN218868"",""ExRemark1"":"""",""ExRemark2"":"""",""ExRemark3"":"""",""ExRemark4"":"""",""KingTareweight"":null,""CNPTNo"":""CN218868"",""XMCYWY"":null,""EmcNameAccount"":null},""LineManage"":null,""LineManageID"":null,""childrens"":[],""GoodsStatus"":[{""StatusName"":""已收到BC"",""FinishTime"":""2023-06-27T10:31:06"",""Remark"":null,""ExtData"":null},{""StatusName"":""截单"",""FinishTime"":""2023-07-03T17:50:09"",""Remark"":null,""ExtData"":null},{""StatusName"":""提交VGM"",""FinishTime"":""2023-07-03T17:56:26"",""Remark"":null,""ExtData"":null},{""StatusName"":""提交舱单"",""FinishTime"":""2023-07-03T17:56:28"",""Remark"":null,""ExtData"":null},{""StatusName"":""已放单"",""FinishTime"":""2023-07-13T16:15:45"",""Remark"":null,""ExtData"":null}]}]";
byte[] byteArray = System.Text.Encoding.Default.GetBytes(testjson);
var strBody = Encoding.UTF8.GetString(byteArray.ToArray());
DingCangToDS6(JArray.Parse(strBody));
//*/
/* 测试时前面增加两个注释号入货通知
///433483922997318
var testjson = @"{""TenantId"":349708986646597,""BookingId"":438131666034757,""ToName"":"""",""Attn"":"""",""AttnTel"":"""",""AttnMail"":"""",""AttnPhone"":"""",""FromName"":""张艺凡"",""FromTel"":""0532-81609998"",""FromMail"":""op12@hightrans.net"",""FromPhone"":""15165298210"",""Description"":""FRESH GARLIC\nHS CODE:070320\nTEMP:-2'C\nVENT:5CBM/H"",""CloseDocTime"":""2023-07-15T11:52:23"",""ClosingTime"":""2023-07-13T15:09:54"",""VgmTime"":null,""Remark"":""截港已码头为准\n晚于截港时间集港有加急费\n背箱单有效期48小时\n最近缺箱建议早点背箱/指号"",""YARDID"":""GangLianXin"",""YARD"":""港联欣场站"",""YARDCONTRACT"":"""",""YARDCONTRACTTEL"":"""",""CreatedTime"":""2023-07-03T11:53:00"",""UpdatedTime"":""2023-07-11T15:10:36"",""CreatedUserId"":356029261668421,""CreatedUserName"":""张艺凡"",""UpdatedUserId"":356029261668421,""UpdatedUserName"":""张艺凡"",""IsDeleted"":false,""Id"":434959064608837}";
byte[] byteArray = System.Text.Encoding.Default.GetBytes(testjson);
var strBody = Encoding.UTF8.GetString(byteArray.ToArray());
DS6OpLetter_RH(strBody);
//*/
/* 测试时前面增加两个注释号 派车
///436354079932485
var testjson = @"{""head"":{""gid"":""441000874426437"",""messageType"":""TRUCK_SYNC"",""senderId"":""BOOKING_TRUCK"",""senderName"":""\u8BA2\u8231\u6D3E\u8F66"",""receiverId"":""DongshengHeChuan"",""receiverName"":""\u4E1C\u80DC\u548C\u5DDD"",""token"":null,""version"":""1.0"",""requestDate"":""2023-07-20 15:41:04"",""senderKey"":""BOOKING_TRUCK"",""requestAction"":""Sync""},""main"":{""operType"":""AddOrUpdate"",""tenantId"":349708986646597,""id"":441000874426437,""bookingId"":436086681477189,""truckId"":409875318820933,""truckCode"":""ASJCD"",""truckName"":""\u5B89\u76DB\u6377\u8F66\u961F"",""toName"":null,""attn"":null,""attnTel"":null,""attnMail"":null,""attnFax"":null,""fromName"":""\u738B\u8D77\u51E4"",""fromTel"":""0532-85888610"",""fromMobile"":""15689135576"",""fromMail"":""OP76@hightrans.net"",""fromFax"":null,""kgs"":29.0000,""fee"":null,""payMethod"":""OWN_COMPANY"",""payMethodName"":""\u672C\u516C\u53F8\u53D1\u7968"",""truckTime"":""2023-07-20T13:36:37"",""yardid"":""ZHONGCHUANG"",""yard"":""\u4E2D\u521B\u573A\u7AD9"",""yardcontract"":"""",""yardcontracttel"":"""",""factoryId"":null,""factoryCode"":null,""factoryName"":null,""factoryContact"":""\u5C0F\u80E1 13562918972"",""factoryTel"":null,""returnTime"":""2023-07-23T09:00:00"",""inYardID"":""ZHONGCHUANG"",""inYard"":""\u4E2D\u521B\u573A\u7AD9"",""inYardContact"":"""",""inYardContractTel"":"""",""needArriveTime"":""2023-07-23T05:00:00"",""closingTime"":""2023-07-23T09:00:00"",""pickUpTime"":null,""isGuaJi"":false,""attention"":null,""remark"":null,""dispatcherId"":356029261152325,""dispatcherName"":""\u7F57\u6C5F"",""factoryAddr"":""\u5C71\u4E1C\u7701\u4E34\u6C82\u5E02\u5170\u9675\u53BFX005\u4E0EX111\u4EA4\u53C9\u53E3\u4E1C\u5357\u65B9\u5411650\u7C73\u5DE6\u53F3\n\n\u5170\u9675\u53BF\u5FD7\u5408\u98DF\u54C1\u6709\u9650\u516C\u53F8"",""callBackStatus"":""SEND_DISPATCH"",""contaList"":[{""ctncode"":""4"",""ctnall"":""40\u0027RH"",""ctnnum"":1,""teu"":null,""cntrno"":"""",""sealno"":"""",""pkgs"":2900,""kindpkgs"":""BAGS"",""kgs"":29000.0000,""cbm"":50.0000,""tareweight"":null,""ctnstatus"":null,""weightype"":null,""weighkgs"":null,""weighattn"":null,""vgmconncom"":null,""weightel"":null,""weighdate"":null,""vgmaddr"":null,""vgmemail"":null,""remark"":null,""carNumber"":null,""carDriver"":null,""carDriverTel"":null},{""ctncode"":""4"",""ctnall"":""40\u0027RH"",""ctnnum"":1,""teu"":null,""cntrno"":"""",""sealno"":"""",""pkgs"":2900,""kindpkgs"":""BAGS"",""kgs"":29000.0000,""cbm"":50.0000,""tareweight"":null,""ctnstatus"":null,""weightype"":null,""weighkgs"":null,""weighattn"":null,""vgmconncom"":null,""weightel"":null,""weighdate"":null,""vgmaddr"":null,""vgmemail"":null,""remark"":null,""carNumber"":null,""carDriver"":null,""carDriverTel"":null}]}}";
byte[] byteArray = System.Text.Encoding.Default.GetBytes(testjson);
var strBody = Encoding.UTF8.GetString(byteArray.ToArray());
DS6OpLetter_PC(strBody);
//*/
#endregion
//测试删除
//DelToDS6("410977390837829,410261333442630,410590260686917");
//this.Stop(hostControl);
///* 测试时删去前面两个注释号
#region 订舱业务
ConnectionFactory factory = new ConnectionFactory();
factory.Uri = new Uri(RecMqUri);
mqConn = factory.CreateConnection();
IModel modelDingCang = mqConn.CreateModel();
modelDingCang.ExchangeDeclare(ExchangeName, ExchangeType.Direct);
modelDingCang.QueueDeclare($"{QueuePrefix_DingCang}{CompanyId}", false, false, false, null);
var consumerDingCang = new EventingBasicConsumer(modelDingCang);
consumerDingCang.Received += (ch, ea) =>
{
var body = ea.Body;
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"))
DingCangToDS6(JArray.Parse(strBody));
}
catch (Exception ex)
{
var excep = ex;
while (excep != null)
{
logger.Error(excep.Message);
logger.Error(excep.StackTrace);
excep = excep.InnerException;
}
}
};
//第二个参数控制【是否消费掉队列里的数据】
modelDingCang.BasicConsume($"{QueuePrefix_DingCang}{CompanyId}", , consumerDingCang);
///删除
///删除改为通过接口调用方式
////ConnectionFactory factory2 = new ConnectionFactory();
////factory2.Uri = new Uri(RecMqUri);
////mqConn2 = factory2.CreateConnection();
////IModel modelDel = mqConn2.CreateModel();
////modelDel.ExchangeDeclare(ExchangeName, ExchangeType.Direct);
////modelDel.QueueDeclare($"{QueuePrefix_Del}{CompanyId}", false, false, false, null);
////var consumerDel = new EventingBasicConsumer(modelDel);
////consumerDel.Received += (ch, ea) =>
////{
//// var body = ea.Body;
//// var strBody = Encoding.UTF8.GetString(body.ToArray());
//// logger.Debug($"收到大简云删除订舱:{strBody}");
//// try
//// {
//// //导出到东胜6
//// DelToDS6(strBody);
//// }
//// catch (Exception ex)
//// {
//// var excep = ex;
//// while (excep != null)
//// {
//// logger.Error(excep.Message);
//// logger.Error(excep.StackTrace);
//// excep = excep.InnerException;
//// }
//// }
////};
//////第二个参数控制【是否消费掉队列里的数据】
////modelDel.BasicConsume($"{QueuePrefix_Del}{CompanyId}", 消费队列数据, consumerDel);
#endregion
///*
#region 业务函电 入货通知
ConnectionFactory factory3 = new ConnectionFactory();
factory3.Uri = new Uri(RecMqUri);
mqConn3 = factory3.CreateConnection();
IModel model_Letter_RH = mqConn3.CreateModel();
model_Letter_RH.ExchangeDeclare(ExchangeName, ExchangeType.Direct);
model_Letter_RH.QueueDeclare($"{QueuePrefix_Letter_RH}{CompanyId}", false, false, false, null);
var consumer_Letter_RH = new EventingBasicConsumer(model_Letter_RH);
consumer_Letter_RH.Received += (ch, ea) =>
{
var body = ea.Body;
var strBody = Encoding.UTF8.GetString(body.ToArray());
logger.Debug($"收到大简云入货通知:{strBody}");
try
{
//导出到东胜6
DS6OpLetter_RH(strBody);
}
catch (Exception ex)
{
var excep = ex;
while (excep != null)
{
logger.Error(excep.Message);
logger.Error(excep.StackTrace);
excep = excep.InnerException;
}
}
};
//第二个参数控制【是否消费掉队列里的数据】
model_Letter_RH.BasicConsume($"{QueuePrefix_Letter_RH}{CompanyId}", , consumer_Letter_RH);
#endregion
#region 业务函电 派车
ConnectionFactory factory4 = new ConnectionFactory();
factory4.Uri = new Uri(RecMqUri);
mqConn4 = factory4.CreateConnection();
IModel model_Letter_PC = mqConn4.CreateModel();
model_Letter_PC.ExchangeDeclare(ExchangeName, ExchangeType.Direct);
model_Letter_PC.QueueDeclare($"{QueuePrefix_Letter_PC}{CompanyId}", false, false, false, null);
var consumer_Letter_PC = new EventingBasicConsumer(model_Letter_PC);
consumer_Letter_PC.Received += (ch, ea) =>
{
var body = ea.Body;
var strBody = Encoding.UTF8.GetString(body.ToArray());
logger.Debug($"收到大简云派车通知:{strBody}");
try
{
//导出到东胜6
DS6OpLetter_PC(strBody);
}
catch (Exception ex)
{
var excep = ex;
while (excep != null)
{
logger.Error(excep.Message);
logger.Error(excep.StackTrace);
excep = excep.InnerException;
}
}
};
//第二个参数控制【是否消费掉队列里的数据】
model_Letter_PC.BasicConsume($"{QueuePrefix_Letter_PC}{CompanyId}", , consumer_Letter_PC);
#endregion
//*/
}
catch (Exception e) {
logger.Error(e.Message);
}
return true;
}
public bool Stop(HostControl hostControl)
{
// 结束
logger.Debug("停止运行");
//StdSchedulerFactory.GetDefaultScheduler().Shutdown();
mqConn.Close();
//mqConn2.Close();
mqConn3.Close();
mqConn4.Close();
return true;
}
#region 舱单数据解析实体类
public class Ctnlist
{
/// <summary>
///
/// </summary>
public string ctn_id { get; set; }
/// <summary>
///
/// </summary>
public string MFNO { get; set; }
/// <summary>
///
/// </summary>
public string CTNCODE { get; set; }
/// <summary>
///
/// </summary>
public int? SIZE { get; set; }
/// <summary>
///
/// </summary>
public string CTN { get; set; }
/// <summary>
///
/// </summary>
public int? CTNNUM { get; set; }
/// <summary>
///
/// </summary>
public int? TEU { get; set; }
/// <summary>
///
/// </summary>
public string CTNALL { get; set; }
/// <summary>
///
/// </summary>
public string CNTRNO { get; set; }
/// <summary>
///
/// </summary>
public string SEALNO { get; set; }
/// <summary>
///
/// </summary>
public int? PKGS { get; set; }
/// <summary>
///
/// </summary>
public decimal? KGS { get; set; }
/// <summary>
///
/// </summary>
public decimal? CBM { get; set; }
/// <summary>
///
/// </summary>
public string KINDPKGS { get; set; }
/// <summary>
///
/// </summary>
public string DESCRIPTION { get; set; }
/// <summary>
///
/// </summary>
public string MARKS { get; set; }
/// <summary>
///
/// </summary>
public string PO { get; set; }
/// <summary>
///
/// </summary>
public string SKU { get; set; }
/// <summary>
///
/// </summary>
public string SKUDESCRIP { get; set; }
/// <summary>
///
/// </summary>
public string DUNNO { get; set; }
/// <summary>
///
/// </summary>
public string HTS { get; set; }
/// <summary>
///
/// </summary>
public string CTOFORIGIN { get; set; }
/// <summary>
///
/// </summary>
public decimal? GOODVALUE { get; set; }
/// <summary>
///
/// </summary>
public string CTNOWNER { get; set; }
/// <summary>
///
/// </summary>
public string ShiFengRen { get; set; }
/// <summary>
///
/// </summary>
public string LeiXingFa { get; set; }
/// <summary>
///
/// </summary>
public string LeiXingShou { get; set; }
/// <summary>
///
/// </summary>
public string LeiXingTong { get; set; }
/// <summary>
///
/// </summary>
public int ZhongKongBiaoShi { get; set; }
/// <summary>
///
/// </summary>
public string ChengZhongZhongLiang { get; set; }
/// <summary>
///
/// </summary>
public string ChengZhongFangShi { get; set; }
/// <summary>
///
/// </summary>
public string ChengZhongShiJian { get; set; }
/// <summary>
///
/// </summary>
public decimal? PIZHONG { get; set; }
/// <summary>
///
/// </summary>
public string APICTNID { get; set; }
/// <summary>
///
/// </summary>
public DateTime? VGMCLOSETIME { get; set; }
}
public class OpSeaeEdi
{
/// <summary>
///
/// </summary>
public string MBLNO { get; set; }
/// <summary>
///
/// </summary>
public string HBLNO { get; set; }
/// <summary>
///
/// </summary>
public string CARRIERID { get; set; }
/// <summary>
///
/// </summary>
public string CARRIER { get; set; }
/// <summary>
///
/// </summary>
public string WeiTuoFaSongFang { get; set; }
/// <summary>
///
/// </summary>
public string DESTINATION { get; set; }
/// <summary>
///
/// </summary>
public string DESTINATIONID { get; set; }
/// <summary>
///
/// </summary>
public string PORTDISCHARGE { get; set; }
/// <summary>
///
/// </summary>
public string PORTDISCHARGEID { get; set; }
/// <summary>
///
/// </summary>
public DateTime? ETD { get; set; }
/// <summary>
///
/// </summary>
public string CompId { get; set; }
/// <summary>
/// 东方海外物流(中国)有限公司青岛分公司
/// </summary>
public string CompName { get; set; }
/// <summary>
///
/// </summary>
public string MFNO { get; set; }
/// <summary>
///
/// </summary>
public string BSNO { get; set; }
/// <summary>
///
/// </summary>
public string MASTERNO { get; set; }
/// <summary>
///
/// </summary>
public string SHIPPERNAME { get; set; }
/// <summary>
///
/// </summary>
public string SHIPPERADDR1 { get; set; }
/// <summary>
///
/// </summary>
public string SHIPPERCOUNTRY { get; set; }
/// <summary>
///
/// </summary>
public string SHIPPERTEL { get; set; }
/// <summary>
///
/// </summary>
public string CONSIGNEENAME { get; set; }
/// <summary>
///
/// </summary>
public string CONSIGNEEADDR1 { get; set; }
/// <summary>
///
/// </summary>
public string CONSIGNEECOUNTRY { get; set; }
public string CONSIGNEETEL { get; set; }
public string NOTIFYPARTYNAME { get; set; }
public string NOTIFYPARTYADDR1 { get; set; }
/// <summary>
///
/// </summary>
public string NOTIFYPARTYCOUNTRY { get; set; }
/// <summary>
///
/// </summary>
public string NOTIFYPARTYTEL { get; set; }
/// <summary>
///
/// </summary>
public string SHIPPER { get; set; }
/// <summary>
///
/// </summary>
public string CONSIGNEE { get; set; }
/// <summary>
///
/// </summary>
public string NOTIFYPARTY { get; set; }
/// <summary>
///
/// </summary>
public string VESSEL { get; set; }
/// <summary>
///
/// </summary>
public string VOYNO { get; set; }
/// <summary>
///
/// </summary>
public string PORTLOADID { get; set; }
/// <summary>
///
/// </summary>
public string PORTLOAD { get; set; }
/// <summary>
///
/// </summary>
public string PLACEDELIVERYID { get; set; }
/// <summary>
///
/// </summary>
public string PLACEDELIVERY { get; set; }
/// <summary>
///
/// </summary>
public string SERVICE { get; set; }
/// <summary>
///
/// </summary>
public string MARKS { get; set; }
/// <summary>
///
/// </summary>
public string DESCRIPTION { get; set; }
/// <summary>
///
/// </summary>
public int? PKGS { get; set; }
/// <summary>
///
/// </summary>
public string KINDPKGS { get; set; }
/// <summary>
///
/// </summary>
public decimal? KGS { get; set; }
/// <summary>
///
/// </summary>
public decimal? CBM { get; set; }
/// <summary>
///
/// </summary>
public string CARGOID { get; set; }
/// <summary>
///
/// </summary>
public string DCLASS { get; set; }
/// <summary>
///
/// </summary>
public string DUNNO { get; set; }
/// <summary>
///
/// </summary>
public string REEFERF { get; set; }
/// <summary>
///
/// </summary>
public string TEMPID { get; set; }
/// <summary>
///
/// </summary>
public string TEMPSET { get; set; }
/// <summary>
///
/// </summary>
public string TEMPMAX { get; set; }
/// <summary>
///
/// </summary>
public string TEMPMIN { get; set; }
/// <summary>
///
/// </summary>
public string FREIGHTAGMNO { get; set; }
/// <summary>
///
/// </summary>
public string HUMIDITY { get; set; }
/// <summary>
///
/// </summary>
public string SHIPIMO { get; set; }
/// <summary>
///
/// </summary>
public DateTime? ETA { get; set; }
/// <summary>
///
/// </summary>
public string BLFRT { get; set; }
/// <summary>
///
/// </summary>
public DateTime? SENDTIME { get; set; }
/// <summary>
///
/// </summary>
public string YARD { get; set; }
/// <summary>
/// 外代
/// </summary>
public string FORWARDER { get; set; }
/// <summary>
///
/// </summary>
public List<Ctnlist> ctnlist { get; set; }
}
#endregion
/// <summary>
/// 舱单数据生成到OPOther版本的舱单业务中 经汉专用
/// </summary>
/// <param name="jarr"></param>
//public void CangdanDataToDS7_OPOther(JArray jarr)
//{
// try
// {
// var opUser = dS7Data.User.AsNoTracking().First(u => u.GID == FeeInputUserId);
// foreach (var item in jarr)
// {
// var obj = item as JObject;
// var itemstr = item.ToString();
// var _edi = JsonConvert.DeserializeObject<OpSeaeEdi>(itemstr);
// var MBLNO = obj.GetValue("MBLNO").ToString();
// var HBLNO = obj.GetValue("HBLNO").ToString();
// var CARRIERID = obj.GetValue("CARRIERID").ToString();
// var CARRIER = obj.GetValue("CARRIER").ToString();
// var WeiTuoFaSongFang = obj.GetValue("WeiTuoFaSongFang").ToString();
// var DESTINATION = obj.GetValue("DESTINATION").ToString();
// var DESTINATIONID = obj.GetValue("DESTINATIONID").ToString();
// var PORTDISCHARGE = obj.GetValue("PORTDISCHARGE").ToString();
// var PORTDISCHARGEID = obj.GetValue("PORTDISCHARGEID").ToString();
// var strETD = obj.GetValue("ETD").ToString();
// var ETD = Convert.ToDateTime(strETD);
// var CompId = obj.GetValue("CompId").ToString();
// var ORDERNO = obj.GetValue("ORDERNO").ToString();
// var 对账约号 = obj.GetValue("REMARKS").ToString();
// //看op_other当中有没有该业务主单 如无则增加
// var 主单mfno = "topother" + _edi.MFNO;
// if (!string.IsNullOrWhiteSpace(_edi.BSNO)) 主单mfno = "topother" + _edi.BSNO;
// op_other_md op_other = dS7Data.op_other.FirstOrDefault(x => x.BSNO == 主单mfno);
// var BSNO = "";
// var CUSTNOHEAD = "";
// var CUSTOMERNAME = "";
// var SOURCEOP = "";
// var 费用标准结算对象 = "";
// var 船代 = "";
// var custEdi = dS7Data.CodeCustEdi.AsNoTracking().FirstOrDefault(x => x.EDINAME == "DJY_OUTPUT" && x.EDICODE == WeiTuoFaSongFang);
// if (custEdi != null)
// {
// 费用标准结算对象 = custEdi.CUST;
// }
// var 船代Edi= dS7Data.CodeCustEdi.AsNoTracking().FirstOrDefault(x => x.EDINAME == "DJY_OUTPUT" && x.EDICODE == _edi.FORWARDER);
// if (船代Edi != null) {
// 船代 = 船代Edi.CUST;
// }
// //如果大简云业务中的【订舱编号】空着,则用大简云舱单界面的【委托发送方】 寻找EDI代码设置中的EDICODE =【委托发送方】 EDINAME = 大简云的客户 填入【委托单位】字段的内容
// //如果大简云业务中的【订舱编号】不为空, 录入的是"市场部/海运部,MKT1(英文逗号分割)"
// //根据【订舱编号】录入的"市场部/海运部"对应到东胜系统里的【委托单位】通过EDI代码设置中的EDICODE = 市场部 / 海运部 EDINAME = 大简云选择填入【委托单位】字段的内容
// //订舱编号里逗号后面的“MKT1”放到源操作SOURCEOP上
// //导入舱单时产生的舱单费
// //1 单价从cust_fee_templatedetail当中的舱单费选取
// //选取标准为根据大简云舱单界面的【委托发送方】寻找EDI代码设置中的EDICODE =【委托发送方】 EDINAME = 大简云的客户 用这个客户名称查询cust_fee_templatedetail当中的舱单费
// //2费用的结算对象 为这票业务在东胜系统中的委托单位
// if (string.IsNullOrWhiteSpace(ORDERNO))
// {
// //var custEdi = dS7Data.CodeCustEdi.AsNoTracking().FirstOrDefault(x => x.EDINAME == "DJY_OUTPUT" && x.EDICODE == WeiTuoFaSongFang);
// //if (custEdi != null)
// //{
// // CUSTOMERNAME = custEdi.CUST;
// //}
// CUSTOMERNAME = 费用标准结算对象;
// }
// else {
// ORDERNO=ORDERNO.Replace("", ",");
// var orderinfo = ORDERNO.Split(',').ToList();
// if (orderinfo.Count == 0) {
// orderinfo.Add("");
// orderinfo.Add("");
// }
// if (orderinfo.Count == 1)
// {
// orderinfo.Add("");
// }
// var cust = orderinfo[0];
// var custEdi2 = dS7Data.CodeCustEdi.AsNoTracking().FirstOrDefault(x => x.EDINAME == "DJY_OUTPUT" && x.EDICODE == cust);
// if (custEdi2 != null)
// {
// CUSTOMERNAME = custEdi2.CUST;
// }
// SOURCEOP = orderinfo[1];
// }
// var 委托单位 = dS7Data.info_client.FirstOrDefault(x => x.SHORTNAME == CUSTOMERNAME);
// if (op_other == null || op_other.BSNO == null || op_other.BSNO == "")
// {
// logger.Debug($"未找到委托数据:{MBLNO}");
// BSNO = 主单mfno;
// //件数 毛重 净重 尺码 sum
// var PKGS = 0;
// var KGS = 0M;
// var CBM = 0M;
// foreach (var ja in jarr)
// {
// var _edi2= JsonConvert.DeserializeObject<OpSeaeEdi>(ja.ToString());
// PKGS += _edi2.PKGS==null?0:(int)_edi2.PKGS;
// KGS += _edi2.KGS == null ? 0M : (decimal)_edi2.KGS;
// CBM += _edi2.CBM == null ? 0M : (decimal)_edi2.CBM;
// }
// var newrec = new op_other_md
// {
// BSNO = BSNO,
// OPLB = "op_other",
// OPLBNAME = "舱单申报",
// BSSTATUS = false,
// FEESTATUS = false,
// MBLNO = MBLNO,
// HBLNO = "",
// CUSTOMERNAME = 委托单位.SHORTNAME,
// //CUSTOMERNAME2 = WeiTuoFaSongFang,//20230313-大简云舱单界面的【委托发送方】录入东胜系统的实际客户,
// //CARRIER
// BSDATE = DateTime.Today,
// ACCDATE = DateTime.Now.ToString("yyyy-MM"),
// BSSOURCE = 委托单位.BSSOURCE,
// OP = opUser.SHOWNAME,
// CUSTSERVICE = opUser.SHOWNAME,
// SALE = opUser.SHOWNAME,
// CORPID = Corpid,
// ETD = ETD,//业务日期
// //SR2023011000005
// PORTLOAD = _edi.PORTLOAD,//装货港
// PORTDISCHARGE = _edi.PORTDISCHARGE,//卸货港
// PKGS = PKGS,
// KGS = KGS,
// NETWEIGHT = 0,
// CBM = CBM,
// //SOURCEOP = SOURCEOP,
// //SHIPAGENT = 船代
// };
// //,DUIYUEHAO = 对账约号
// //20230317 对账约号存于opLogic
// var cdc = new CommonDataContext();
// var dic = new Dictionary<string, string>
// {
// { "DUIYUEHAO",对账约号 }
// };
// SaveLogicInfo(BSNO, "舱单业务", dic);
// var billnoset = dS7Data.SysBillNoSet.AsNoTracking().FirstOrDefault(x => x.COMPANYID == Corpid && x.OPLBNAME == "舱单申报" && x.RULEBLNO == "委托编号");
// if (billnoset != null)
// newrec.CUSTNO = GetBillNo(billnoset, newrec.ETD.ToString(), newrec.ACCDATE, opname: opUser.SHOWNAME, corpid: Corpid);
// else
// {
// logger.Debug($"SysBillNoSet数据未找到无法生成编号{MBLNO}");
// }
// dS7Data.op_other.Add(newrec);
// dS7Data.SaveChanges();
// op_other= dS7Data.op_other.FirstOrDefault(x => x.BSNO == 主单mfno);
// }
// else
// {
// logger.Debug($"委托数据已存在:{MBLNO}");
// BSNO = op_other.BSNO;
// CUSTNOHEAD = op_other.CUSTNO;
// }
// //看op_seae_edi当中有没有该业务 如无则增加
// var ediList = dS7Data.op_seae_edi.Where(x => x.BSNO == BSNO).ToList();
// if (!ediList.Exists(x => x.MBLNO == MBLNO && x.HBLNO == HBLNO))
// {
// var newedi = new op_seae_edi_md {
// MFNO = _edi.MFNO,
// BSNO = 主单mfno,
// MASTERNO = 主单mfno,
// CUSTNO = CUSTNOHEAD + (ediList.Count + 1).ToString(),
// MBLNO =_edi.MBLNO,
// HBLNO = _edi.HBLNO,
// CARRIERID = _edi.CARRIERID,
// CARRIER = _edi.CARRIER,
// //WeiTuoFaSongFang = _edi.WeiTuoFaSongFang,
// DESTINATION = _edi.DESTINATION,
// DESTINATIONID = _edi.DESTINATIONID,
// PORTDISCHARGE = _edi.PORTDISCHARGE,
// PORTDISCHARGEID = _edi.PORTDISCHARGEID,
// ETD = _edi.ETD,
// SHIPPERNAME = _edi.SHIPPERNAME,
// SHIPPERADDR1 = _edi.SHIPPERADDR1,
// SHIPPERCOUNTRY = _edi.SHIPPERCOUNTRY,
// SHIPPERTEL = _edi.SHIPPERTEL,
// CONSIGNEENAME = _edi.CONSIGNEENAME,
// CONSIGNEEADDR1 = _edi.CONSIGNEEADDR1,
// CONSIGNEECOUNTRY = _edi.CONSIGNEECOUNTRY,
// CONSIGNEETEL = _edi.CONSIGNEETEL,
// NOTIFYPARTYNAME = _edi.NOTIFYPARTYNAME,
// NOTIFYPARTYADDR1 = _edi.NOTIFYPARTYADDR1,
// NOTIFYPARTYCOUNTRY = _edi.NOTIFYPARTYCOUNTRY,
// NOTIFYPARTYTEL = _edi.NOTIFYPARTYTEL,
// SHIPPER = _edi.SHIPPER,
// CONSIGNEE = _edi.CONSIGNEE,
// NOTIFYPARTY = _edi.NOTIFYPARTY,
// VESSEL = _edi.VESSEL,
// VOYNO = _edi.VOYNO,
// PORTLOADID = _edi.PORTLOADID,
// PORTLOAD = _edi.PORTLOAD,
// PLACEDELIVERYID = _edi.PLACEDELIVERYID,
// PLACEDELIVERY = _edi.PLACEDELIVERY,
// SERVICE = _edi.SERVICE,
// MARKS = _edi.MARKS,
// DESCRIPTION = _edi.DESCRIPTION,
// PKGS = _edi.PKGS,
// KINDPKGS = _edi.KINDPKGS,
// KGS = _edi.KGS,
// CBM = _edi.CBM,
// CARGOID = _edi.CARGOID,
// DCLASS = _edi.DCLASS,
// DUNNO = _edi.DUNNO,
// REEFERF = _edi.REEFERF,
// TEMPID = _edi.TEMPID,
// TEMPSET = _edi.TEMPSET,
// TEMPMAX = _edi.TEMPMAX,
// TEMPMIN = _edi.TEMPMIN,
// FREIGHTAGMNO = _edi.FREIGHTAGMNO,
// HUMIDITY = _edi.HUMIDITY,
// SHIPIMO = _edi.SHIPIMO,
// ETA = _edi.ETA,
// BLFRT = _edi.BLFRT,
// SENDTIME = _edi.SENDTIME,
// YARD = _edi.YARD,
// FORWARDER = _edi.FORWARDER,
// CORPID= Corpid
// };
// dS7Data.op_seae_edi.Add(newedi);
// if (_edi.ctnlist != null && _edi.ctnlist.Count > 0) {
// foreach (var ctn in _edi.ctnlist) {
// var newctn = new op_seae_edi_ctn_md
// {
// ctn_id = Guid.NewGuid().ToString(),//ctn.ctn_id,
// MFNO = _edi.MFNO,
// CTNCODE = ctn.CTNCODE,
// CNTRNO= ctn.CNTRNO,
// SEALNO = ctn.SEALNO,
// SIZE = ctn.SIZE.ToString(),
// CTN = ctn.CTN,
// CTNNUM = ctn.CTNNUM,
// TEU = ctn.TEU,
// CTNALL = ctn.CTNALL,
// PKGS = ctn.PKGS,
// KGS = ctn.KGS,
// CBM = ctn.CBM,
// KINDPKGS = ctn.KINDPKGS,
// DESCRIPTION = ctn.DESCRIPTION,
// MARKS = ctn.MARKS,
// PO = ctn.PO,
// SKU = ctn.SKU,
// SKUDESCRIP = ctn.SKUDESCRIP,
// DUNNO = ctn.DUNNO,
// HTS = ctn.HTS,
// CTOFORIGIN = ctn.CTOFORIGIN,
// GOODVALUE = ctn.GOODVALUE,
// CTNOWNER = ctn.CTNOWNER
// };
// dS7Data.op_seae_edi_ctn.Add(newctn);
// }
// }
// dS7Data.SaveChanges();
// }
// //只要有对应的往来单位=委托发送方 主分单都产生相应的应收
// info_client_md infoClient = null;
// if (!string.IsNullOrEmpty(CUSTOMERNAME))
// {
// infoClient = dS7Data.info_client.AsNoTracking().FirstOrDefault(x => x.SHORTNAME == CUSTOMERNAME);
// if (infoClient != null)
// {
// op_other.SALE = infoClient.SALE; //揽货人赋值
// //查询配置,生成应收
// var fee = dS7Data.CustFeeTemplateDetail.AsNoTracking().FirstOrDefault(x => x.CUSTOMERNAME == 费用标准结算对象 && x.FEENAME == FeeShouName);
// if (fee == null) {
// fee = dS7Data.CustFeeTemplateDetail.AsNoTracking().FirstOrDefault(x => x.CUSTOMERNAME == 委托单位.SHORTNAME && x.FEENAME == FeeShouName);
// }
// if (fee != null )
// {
// var feeShou = new ch_fee_md();
// feeShou.GID = Guid.NewGuid().ToString().Replace("-", "");
// feeShou.BSNO = op_other.BSNO;
// feeShou.FEETYPE = 1;
// feeShou.FEENAME = FeeShouName;
// feeShou.CUSTOMERTYPE = "其他";
// feeShou.CUSTOMERNAME = infoClient.SHORTNAME;
// feeShou.UNIT = fee.UNIT;
// feeShou.UNITPRICE = fee.UNITPRICE;
// feeShou.QUANTITY = 1;
// feeShou.AMOUNT = fee.UNITPRICE;
// feeShou.EXCHANGERATE = 1;
// feeShou.CURRENCY = "RMB";
// feeShou.ENTEROPERATOR = FeeInputUserId;
// feeShou.ENTERDATE = DateTime.Now;
// feeShou.MODIFIEDUSER = FeeInputUserId;
// feeShou.MODIFIEDTIME = DateTime.Now;
// feeShou.LOCALCURR = feeShou.CURRENCY;
// feeShou.FEEDESCRIPTION = feeShou.FEENAME;
// feeShou.FEESTATUS = 0;//费用插入时状态为提交审核2021-12-8要求插入时状态改为录入状态12021-12-9要求状态为审核通过状态0
// //2021-12-8下列字段不能为空写入默认值
// feeShou.SETTLEMENT = 0;
// feeShou.ORDERAMOUNT = 0;
// feeShou.ORDERINVOICE = 0;
// feeShou.ORDERINVSETTLEMENT = 0;
// feeShou.ORDERSETTLEMENT = 0;
// feeShou.INVOICE = 0;
// feeShou.TAXRATE = 0;
// feeShou.ISADVANCEDPAY = false;
// feeShou.ISINVOICE = false;
// feeShou.ISCRMORDERFEE = false;
// feeShou.TAXUNITPRICE = fee.UNITPRICE;//2021-12-29于菲同样赋值单价和金额
// feeShou.NOTAXAMOUNT = fee.UNITPRICE;//2021-12-29于菲同样赋值单价和金额
// //2021-12-9要求下列字段不能为空填写0或false
// feeShou.COMMISSIONRATE = 0;
// feeShou.AUDITSTATUS = 0;
// feeShou.LINENUM = 0;
// feeShou.ISDEBIT = false;
// feeShou.ISOPEN = false;
// feeShou.ACCTAXRATE = 0;
// feeShou.ISVOU = false;
// feeShou.TAX = 0;
// feeShou.PREAMOUNT = 0;
// feeShou.ISACC = false;
// feeShou.CUSTDUI = false;
// feeShou.BXGID = HBLNO;
// //2021-12-23分单号写入备注
// //if (!string.IsNullOrEmpty(HBLNO))
// //{
// // feeShou.REMARK += $" {HBLNO} ";
// //}
// dS7Data.ch_fee.Add(feeShou);
// }
// }
// }
// if (FeePayCustomerType == "船代") {
// //20230327 改为:
// //如应付对象类型为船代 则结算对象改为该业务的船代公司
// FeePayCustomer = 船代;
// }
// var 分单号 = HBLNO;
// if (string.IsNullOrWhiteSpace(HBLNO)) {
// 分单号 = MBLNO;
// }
// //应付
// if (string.IsNullOrEmpty(HBLNO) && FeePayPrice>0) //主单才插入船代费用
// {
// var feeFu = new ch_fee_md();
// feeFu.GID = Guid.NewGuid().ToString().Replace("-", "");
// feeFu.BSNO = op_other.BSNO;
// feeFu.FEETYPE = 2;
// feeFu.FEENAME = FeePayName;
// feeFu.CUSTOMERTYPE = FeePayCustomerType;
// feeFu.CUSTOMERNAME = FeePayCustomer;
// feeFu.UNIT = "票";
// feeFu.UNITPRICE = FeePayPrice;
// feeFu.QUANTITY = 1;
// feeFu.AMOUNT = FeePayPrice;
// feeFu.EXCHANGERATE = 1;
// feeFu.CURRENCY = "RMB";
// feeFu.ENTEROPERATOR = FeeInputUserId;
// feeFu.ENTERDATE = DateTime.Now;
// feeFu.MODIFIEDUSER = FeeInputUserId;
// feeFu.MODIFIEDTIME = DateTime.Now;
// feeFu.LOCALCURR = feeFu.CURRENCY;
// feeFu.FEEDESCRIPTION = feeFu.FEENAME;
// feeFu.FEESTATUS = 0;//费用插入时状态为提交审核2021-12-8要求插入时状态改为录入状态12021-12-9要求状态为审核通过状态0
// //2021-12-8下列字段不能为空写入默认值
// feeFu.SETTLEMENT = 0;
// feeFu.ORDERAMOUNT = 0;
// feeFu.ORDERINVOICE = 0;
// feeFu.ORDERINVSETTLEMENT = 0;
// feeFu.ORDERSETTLEMENT = 0;
// feeFu.INVOICE = 0;
// feeFu.TAXRATE = 0;
// feeFu.ISADVANCEDPAY = false;
// feeFu.ISINVOICE = false;
// feeFu.ISCRMORDERFEE = false;
// feeFu.TAXUNITPRICE = FeePayPrice;
// feeFu.NOTAXAMOUNT = 0;
// //2021-12-9要求下列字段不能为空填写0或false
// feeFu.COMMISSIONRATE = 0;
// feeFu.AUDITSTATUS = 0;
// feeFu.LINENUM = 0;
// feeFu.ISDEBIT = false;
// feeFu.ISOPEN = false;
// feeFu.ACCTAXRATE = 0;
// feeFu.ISVOU = false;
// feeFu.TAX = 0;
// feeFu.PREAMOUNT = 0;
// feeFu.ISACC = false;
// feeFu.CUSTDUI = false;
// feeFu.BXGID = 分单号;
// dS7Data.ch_fee.Add(feeFu);
// dS7Data.SaveChanges();
// }
// if (FeePayMyshippingPrice > 0) {
// //不管主单分单都要付费给大简云
// var feeFuDJY = new ch_fee_md();
// feeFuDJY.GID = Guid.NewGuid().ToString().Replace("-", "");
// feeFuDJY.BSNO = op_other.BSNO;
// feeFuDJY.FEETYPE = 2;
// feeFuDJY.FEENAME = FeePayMyshippingName;
// feeFuDJY.CUSTOMERTYPE = "其他";
// feeFuDJY.CUSTOMERNAME = FeePayMyshippingCustomer;
// feeFuDJY.UNIT = "票";
// feeFuDJY.UNITPRICE = FeePayMyshippingPrice;
// feeFuDJY.QUANTITY = 1;
// feeFuDJY.AMOUNT = FeePayMyshippingPrice;
// feeFuDJY.EXCHANGERATE = 1;
// feeFuDJY.CURRENCY = "RMB";
// feeFuDJY.ENTEROPERATOR = FeeInputUserId;
// feeFuDJY.ENTERDATE = DateTime.Now;
// feeFuDJY.MODIFIEDUSER = FeeInputUserId;
// feeFuDJY.MODIFIEDTIME = DateTime.Now;
// feeFuDJY.LOCALCURR = feeFuDJY.CURRENCY;
// feeFuDJY.FEEDESCRIPTION = feeFuDJY.FEENAME;
// feeFuDJY.FEESTATUS = 0;//费用插入时状态为提交审核2021-12-8要求插入时状态改为录入状态12021-12-9要求状态为审核通过状态0
// //2021-12-8下列字段不能为空写入默认值
// feeFuDJY.SETTLEMENT = 0;
// feeFuDJY.ORDERAMOUNT = 0;
// feeFuDJY.ORDERINVOICE = 0;
// feeFuDJY.ORDERINVSETTLEMENT = 0;
// feeFuDJY.ORDERSETTLEMENT = 0;
// feeFuDJY.INVOICE = 0;
// feeFuDJY.TAXRATE = 0;
// feeFuDJY.ISADVANCEDPAY = false;
// feeFuDJY.ISINVOICE = false;
// feeFuDJY.ISCRMORDERFEE = false;
// feeFuDJY.TAXUNITPRICE = FeePayMyshippingPrice;
// feeFuDJY.NOTAXAMOUNT = 0;
// //2021-12-9要求下列字段不能为空填写0或false
// feeFuDJY.COMMISSIONRATE = 0;
// feeFuDJY.AUDITSTATUS = 0;
// feeFuDJY.LINENUM = 0;
// feeFuDJY.ISDEBIT = false;
// feeFuDJY.ISOPEN = false;
// feeFuDJY.ACCTAXRATE = 0;
// feeFuDJY.ISVOU = false;
// feeFuDJY.TAX = 0;
// feeFuDJY.PREAMOUNT = 0;
// feeFuDJY.ISACC = false;
// feeFuDJY.CUSTDUI = false;
// feeFuDJY.BXGID = 分单号;
// dS7Data.ch_fee.Add(feeFuDJY);
// //dS7Data.Database.Log = (x => { logger.Debug(x); });
// dS7Data.SaveChanges();
// }
// }
// }
// catch (Exception e) {
// logger.Error($"导入舱单出错:{e}");
// }
//}
public string GetUserRefList(string itemstr)
{
return itemstr;
}
/// <summary>
/// 生成编号从东胜7移植并修改
/// </summary>
/// <param name="billType"></param>
/// <param name="bsdate"></param>
/// <param name="accdate"></param>
/// <param name="dbname"></param>
/// <param name="opname"></param>
/// <param name="corpid"></param>
/// <param name="bshead"></param>
/// <returns></returns>
private string GetBillNo(SysBillNoSet billType, string bsdate, string accdate, string dbname = "", string opname = "", string corpid = "", string bshead = "")
{
var orgCode = "";
var UserCode = "";
UserCode = GetUserCode(opname, dbname);
orgCode = GetCorpCode(corpid, dbname);
//List<SqlParameter> paramArray = new List<SqlParameter>();
//paramArray.Add(new SqlParameter("@ps_BillType", billType.BILLTYPE));
//paramArray.Add(new SqlParameter("@ps_OrgCode", orgCode));
//paramArray.Add(new SqlParameter("@ps_EmpCode", UserCode));
//paramArray.Add(new SqlParameter("@ps_bshead", bshead));
//if (billType.RULEDATETYPE == "业务日期")
// paramArray.Add(new SqlParameter("@ps_Date", bsdate));
//else if (billType.RULEDATETYPE == "会计期间" && accdate.Length == 7)
// paramArray.Add(new SqlParameter("@ps_Date", accdate + "-01"));
//else
// paramArray.Add(new SqlParameter("@ps_Date", accdate + ""));
//paramArray.Add(new SqlParameter("@ps_BillNo", 20));
//SqlParameter sqlParaOut = new SqlParameter("@ps_RefBillNo", SqlDbType.VarChar, 50);
//sqlParaOut.Direction = ParameterDirection.Output;
//paramArray.Add(sqlParaOut);
//dS7Data.Database.ExecuteSqlCommand("EXEC [sSysGetBillNo_new] @ps_BillType,@ps_OrgCode,@ps_EmpCode,@ps_bshead,@ps_Date,@ps_BillNo,@ps_RefBillNo output", paramArray.ToArray());
//ExecStoredProcedure("sSysGetBillNo_new", paramArray.ToArray());
var bsDate = string.Empty;
if (!string.IsNullOrWhiteSpace(bsdate))
bsdate = Convert.ToDateTime(bsdate).ToString("yyyy-MM-dd");
if (billType.RULEDATETYPE == "业务日期")
bsDate = bsdate;
else if (billType.RULEDATETYPE == "会计期间" && accdate.Length == 7)
bsDate = accdate + "-01";
else
bsDate = accdate;
var cmd = $@"DECLARE @ps_BillNo varchar(20)
EXEC [sSysGetBillNo_new]
@ps_BillType = N'{billType.BILLTYPE}',
@ps_OrgCode = N'{orgCode}',
@ps_EmpCode = N'{UserCode}',
@ps_Date = N'{bsDate}',
@ps_bshead = N'{bshead}',
@ps_BillNo = @ps_BillNo OUTPUT,
@ps_RefBillNo = N''
SELECT @ps_BillNo as N'billno'";
return dS7Data.Database.SqlQuery<string>(cmd).First();
}
/// <summary>
/// 获取用户code参考东胜7修改
/// </summary>
/// <param name="username"></param>
/// <param name="dbname"></param>
/// <returns></returns>
private string GetUserCode(string username, string dbname = "")
{
//string EDICODE = "";
//var strSql = new StringBuilder();
//strSql.Append("select CODENAME from [user] where SHOWNAME='" + username + "'");
//Database db = string.IsNullOrWhiteSpace(dbname) ? DatabaseFactory.CreateDatabase() : DatabaseFactory.CreateDatabase(dbname);
//using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
//{
// while (reader.Read())
// {
// EDICODE = Convert.ToString(reader["CODENAME"]);
// }
// reader.Close();
//}
//return EDICODE;
return dS7Data.Database.SqlQuery<string>("select CODENAME from [user] where SHOWNAME='" + username + "'").FirstOrDefault();
}
/// <summary>
/// 获取公司code参考东胜7修改
/// </summary>
/// <param name="Corpid"></param>
/// <param name="dbname"></param>
/// <returns></returns>
private string GetCorpCode(string Corpid, string dbname = "")
{
//string EDICODE = "";
//var strSql = new StringBuilder();
//strSql.Append("select CODENAME from [company] where GID='" + Corpid + "'");
//Database db = string.IsNullOrWhiteSpace(dbname) ? DatabaseFactory.CreateDatabase() : DatabaseFactory.CreateDatabase(dbname);
//using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
//{
// while (reader.Read())
// {
// EDICODE = Convert.ToString(reader["CODENAME"]);
// }
// reader.Close();
//}
//return EDICODE;
return dS7Data.Database.SqlQuery<string>("select CODENAME from [company] where GID='" + Corpid + "'").FirstOrDefault();
}
public static int ExecStoredProcedure(string procName, params SqlParameter[] parameters)
{
int rtn = 0;
using (SqlConnection conn = new SqlConnection(DS6ConnStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
SqlTransaction st = conn.BeginTransaction();
cmd.Transaction = st;
try
{
cmd.CommandText = procName;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(parameters);
var rr = cmd.ExecuteScalar();
st.Commit();
return rtn;
}
catch (SqlException sqlex)
{
st.Rollback();
throw sqlex;
}
}
}
}
#region 大简云通过消息队列发布的订舱数据保存至DS6 用于合川家业务从大简云发布的消息队列中解析至DS6数据库
public static void DingCangToDS6(JArray jarr)
{
try
{
var itemstr = "";
DS6DataContext DS6Data = new DS6DataContext();
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 sealed class 执行中对象2
{
private static readonly Lazy<执行中对象2> lazy = new Lazy<执行中对象2>(() => new 执行中对象2());
public static 执行中对象2 Instance { get { return lazy.Value; } }
private 执行中对象2() { }
//private static bool inworking { get; set; } = false;
private static List<执行订舱单> 执行中idList { get; set; } = new List<执行订舱单>();
public void 执行完成(long DJYID)
{
try
{
//if (inworking)
//{
// logger.Debug($"列表处理中重试(333)_删除{DJYID}");
// DateTime dt1 = DateTime.Now;
// while ((DateTime.Now - dt1).TotalMilliseconds < 333)
// {
// continue;
// }
// 执行完成(DJYID);
// return;
//}
//inworking = true;
logger.Debug($"lock_del{DJYID};");
if (执行中idList != null && 执行中idList.Count > 0)
{
if (执行中idList.Exists(x => x.DJYID == DJYID))
{
try
{
执行中idList.RemoveAll(x => x.DJYID == DJYID);
logger.Debug($"移除执行:{DJYID};");
//inworking = false;
}
catch (Exception e2)
{
//inworking = false;
var str = JsonConvert.SerializeObject(e2);
logger.Error($"移除执行出错:{DJYID}:{str}");
}
}
try
{
if (执行中idList != null && 执行中idList.Count > 0)
{
var str = JsonConvert.SerializeObject(执行中idList);
logger.Debug($"剩余执行:{str};");
}
}
catch (Exception e1)
{
}
}
}
catch (Exception e)
{
var str = JsonConvert.SerializeObject(e);
logger.Debug($"执行完成失败:{str}");
//inworking = false;
}
finally
{
//if (执行中idList != null && 执行中idList.Count > 0)
//{
// if (执行中idList.Exists(x => x.StartTime <= DateTime.Now.AddSeconds(-15)))
// {
// 执行中idList.RemoveAll(x => x.StartTime <= DateTime.Now.AddSeconds(-15));
// logger.Debug($"移除超时15秒业务1;");
// }
//}
logger.Debug($"unlock_del{DJYID};");
//inworking = false;
}
}
public bool 添加执行(long DJYID)
{
//if (inworking)
//{
// logger.Debug($"列表处理中重试(333)_添加{DJYID}");
// DateTime dt1 = DateTime.Now;
// while ((DateTime.Now - dt1).TotalMilliseconds < 333)
// {
// continue;
// }
// //var head0 = JsonConvert.DeserializeObject<DingCangHead>(itemstr);
// return 添加执行(DJYID);
//}
//inworking = true;
var result = true;
try
{
logger.Debug($"lock{DJYID};");
if (执行中idList == null) 执行中idList = new List<执行订舱单>();
if (执行中idList.Exists(x => x.DJYID == DJYID))
{
//logger.Debug($"执行中重试(100){DJYID}");
//Thread.Sleep(100);
//result = false;
result = true;
}
else
{
执行中idList.Add(new 执行订舱单(DJYID));
result = true;
}
//inworking = false;
return result;
}
catch (Exception e)
{
//inworking = false;
var str = JsonConvert.SerializeObject(e);
logger.Debug($"添加执行失败:{str}");
result = false;
return result;
}
finally
{
if (执行中idList != null && 执行中idList.Count > 0)
{
//if (执行中idList.Exists(x => x.StartTime <= DateTime.Now.AddSeconds(-15)))
//{
// try
// {
// var delobj = 执行中idList.FirstOrDefault(x => x.StartTime <= DateTime.Now.AddSeconds(-15));
// 执行中idList.RemoveAll(x => x.StartTime <= DateTime.Now.AddSeconds(-15));
// //inworking = false;
// logger.Debug($"移除超时15秒业务2;{delobj.DJYID}");
// }
// catch (Exception e)
// {
// //inworking = false;
// var str = JsonConvert.SerializeObject(e);
// logger.Error($"移除超时15秒业务2错误;{str}");
// }
//}
}
logger.Debug($"unlock{DJYID};");
//inworking = false;
}
}
public static void 执行列表数(string name = "")
{
var docount = 0;
if (执行中idList != null)
{
try
{
docount = 执行中idList.Count();
}
catch (Exception e1)
{
}
}
logger.Debug($"执行列表数({name}){docount};");
}
}
//public static class 执行中对象 {
// public static void 执行完成(long DJYID)
// {
// try
// {
// if (inworking)
// {
// logger.Debug($"列表处理中重试(333)_删除{DJYID}");
// DateTime dt1 = DateTime.Now;
// while ((DateTime.Now - dt1).TotalMilliseconds < 333)
// {
// continue;
// }
// 执行完成(DJYID);
// return;
// }
// inworking = true;
// logger.Debug($"lock_del{DJYID};");
// if (执行中idList != null && 执行中idList.Count > 0)
// {
// if (执行中idList.Exists(x => x.DJYID == DJYID))
// {
// try
// {
// 执行中idList.RemoveAll(x => x.DJYID == DJYID);
// logger.Debug($"移除执行:{DJYID};");
// inworking = false;
// }
// catch (Exception e2)
// {
// inworking = false;
// var str = JsonConvert.SerializeObject(e2);
// logger.Error($"移除执行出错:{DJYID}:{str}");
// }
// }
// try
// {
// if (执行中idList != null && 执行中idList.Count > 0)
// {
// var str = JsonConvert.SerializeObject(执行中idList);
// logger.Debug($"剩余执行:{str};");
// }
// }
// catch (Exception e1)
// {
// }
// }
// }
// catch (Exception e)
// {
// var str = JsonConvert.SerializeObject(e);
// logger.Debug($"执行完成失败:{str}");
// inworking = false;
// }
// finally
// {
// if (执行中idList != null && 执行中idList.Count > 0)
// {
// if (执行中idList.Exists(x => x.StartTime <= DateTime.Now.AddSeconds(-15)))
// {
// 执行中idList.RemoveAll(x => x.StartTime <= DateTime.Now.AddSeconds(-15));
// logger.Debug($"移除超时15秒业务1;");
// }
// }
// logger.Debug($"unlock_del{DJYID};");
// inworking = false;
// }
// }
// public static bool 添加执行(long DJYID)
// {
// if (inworking)
// {
// logger.Debug($"列表处理中重试(333)_添加{DJYID}");
// DateTime dt1 = DateTime.Now;
// while ((DateTime.Now - dt1).TotalMilliseconds < 333)
// {
// continue;
// }
// //var head0 = JsonConvert.DeserializeObject<DingCangHead>(itemstr);
// return 添加执行(DJYID);
// }
// inworking = true;
// var result = true;
// try
// {
// logger.Debug($"lock{DJYID};");
// if (执行中idList == null) 执行中idList = new List<执行订舱单>();
// if (执行中idList.Exists(x => x.DJYID == DJYID))
// {
// logger.Debug($"执行中重试(500){DJYID}");
// DateTime dt1 = DateTime.Now;
// while ((DateTime.Now - dt1).TotalMilliseconds < 1000)
// {
// continue;
// }
// result =false;
// }
// else {
// 执行中idList.Add(new 执行订舱单(DJYID));
// result = true;
// }
// inworking = false;
// return result;
// }
// catch (Exception e)
// {
// inworking = false;
// var str = JsonConvert.SerializeObject(e);
// logger.Debug($"添加执行失败:{str}");
// result = false;
// return result;
// }
// finally
// {
// if (执行中idList != null && 执行中idList.Count > 0)
// {
// if (执行中idList.Exists(x => x.StartTime <= DateTime.Now.AddSeconds(-15)))
// {
// try
// {
// var delobj = 执行中idList.FirstOrDefault(x=> x.StartTime <= DateTime.Now.AddSeconds(-15));
// 执行中idList.RemoveAll(x => x.StartTime <= DateTime.Now.AddSeconds(-15));
// inworking = false;
// logger.Debug($"移除超时15秒业务2;{delobj}");
// }
// catch (Exception e) {
// inworking = false;
// var str = JsonConvert.SerializeObject(e);
// logger.Error($"移除超时15秒业务2错误;{str}");
// }
// }
// }
// logger.Debug($"unlock{DJYID};");
// //inworking = false;
// }
// }
// public static void 执行列表数(string name = "")
// {
// var docount = 0;
// if (执行中idList != null)
// {
// try
// {
// docount = 执行中idList.Count();
// }
// catch (Exception e1)
// {
// }
// }
// logger.Debug($"执行列表数({name}){docount};");
// }
//}
*/
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.;
}
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)
{
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},
{"订舱序列号",100}
};
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];
}
}
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);
}
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() { }
/// <summary>
/// 调用DS6的委托编号存储过程
///
/// </summary>
/// <param name="Code">SE加会计期间年月 共8位</param>
/// <returns></returns>
public string DS6GetBSNO(string Code)
{
//string strConnection = "user id=sa;password=sa;initial catalog=MyTest;Server=YHB;Connect Timeout=30";
using (SqlConnection conn = new SqlConnection(DS6ConnStr))
{
conn.Open();
using (SqlCommand sqlComm = conn.CreateCommand())
{
//设置要调用的存储过程的名称
sqlComm.CommandText = "p_no_get";
//指定SqlCommand对象传给数据库的是存储过程的名称而不是sql语句
sqlComm.CommandType = CommandType.StoredProcedure;
SqlParameter username = sqlComm.Parameters.Add(new SqlParameter("@Code", SqlDbType.VarChar, 20));
//指明"@username"是输入参数
username.Direction = ParameterDirection.Input;
//为“@username”参数赋值
username.Value = Code;
SqlParameter Num = sqlComm.Parameters.Add(new SqlParameter("@Num", SqlDbType.VarChar, 20));
//指定"@password"为输出参数
Num.Direction = ParameterDirection.Output;
//执行
sqlComm.ExecuteNonQuery();
//得到输出参数的值,把赋值给name,注意,这里得到的是object类型的,要进行相应的类型轮换
string num = Convert.ToString(sqlComm.Parameters["@Num"].Value);
return num;
//MessageBox.Show(passwrod);
}
}
return "";
}
}
#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 ("?");
//}
}