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

2748 lines
119 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 JobReqWebData;
using log4net;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Quartz.Impl;
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.Linq;
using System.Security.Policy;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Topshelf;
namespace DSWeb.Service.Output.DS7
{
public class DS7Service : ServiceControl
{
private const string ExchangeName = "output";
private static ILog logger = LogManager.GetLogger("DS7Service");
//private const string QueuePrefixCangDan = "djy.output.cangdan.ds7.";
//private const string QueuePrefixBaoguan = "djy.output.baoguan.ds7.";
//private const string QueuePrefixBG = "djy.output.baoguan.bg.ds7.";
private const string QueuePrefix_DingCang = "djy.output.dingcang.ds6.";
/// <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 FeeInputUserId = ConfigurationManager.AppSettings["FeeInputUserId"];
private static string UserNameStr = ConfigurationManager.AppSettings["UserNameStr"];
private IConnection mqConn;
//费用相关配置
//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>();
public bool Start(HostControl hostControl)
{
// 开始具体的业务逻辑
logger.Debug("开始运行");
dS7Data.Database.Log = (x => { logger.Debug(x); });
if (!string.IsNullOrWhiteSpace(UserNameStr)) {
usernamelist = UserNameStr.Split(',').ToList() ;
}
try
{
ConnectionFactory factory = new ConnectionFactory();
factory.Uri = new Uri(RecMqUri);
mqConn = factory.CreateConnection();
IModel modelDingCang = mqConn.CreateModel();
modelDingCang.ExchangeDeclare(ExchangeName, ExchangeType.Direct);
modelDingCang.QueueDeclare($"{QueuePrefix_DingCang}{CompanyId}", false, false, false, null);
var consumerDingCang = new EventingBasicConsumer(modelDingCang);
consumerDingCang.Received += (ch, ea) =>
{
var body = ea.Body;
var strBody = Encoding.UTF8.GetString(body.ToArray());
logger.Debug($"收到大简云订舱输出数据:{strBody}");
try
{
//导出到东胜6
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}", true, consumerDingCang);
}
catch (Exception e) {
logger.Error(e.Message);
}
return true;
}
public bool Stop(HostControl hostControl)
{
// 结束
logger.Debug("停止运行");
//StdSchedulerFactory.GetDefaultScheduler().Shutdown();
mqConn.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}");
// }
//}
/// <summary>
/// 生成编号从东胜7移植并修改
/// </summary>
/// <param name="billType"></param>
/// <param name="bsdate"></param>
/// <param name="accdate"></param>
/// <param name="dbname"></param>
/// <param name="opname"></param>
/// <param name="corpid"></param>
/// <param name="bshead"></param>
/// <returns></returns>
private string GetBillNo(SysBillNoSet billType, string bsdate, string accdate, string dbname = "", string opname = "", string corpid = "", string bshead = "")
{
var orgCode = "";
var UserCode = "";
UserCode = GetUserCode(opname, dbname);
orgCode = GetCorpCode(corpid, dbname);
//List<SqlParameter> paramArray = new List<SqlParameter>();
//paramArray.Add(new SqlParameter("@ps_BillType", billType.BILLTYPE));
//paramArray.Add(new SqlParameter("@ps_OrgCode", orgCode));
//paramArray.Add(new SqlParameter("@ps_EmpCode", UserCode));
//paramArray.Add(new SqlParameter("@ps_bshead", bshead));
//if (billType.RULEDATETYPE == "业务日期")
// paramArray.Add(new SqlParameter("@ps_Date", bsdate));
//else if (billType.RULEDATETYPE == "会计期间" && accdate.Length == 7)
// paramArray.Add(new SqlParameter("@ps_Date", accdate + "-01"));
//else
// paramArray.Add(new SqlParameter("@ps_Date", accdate + ""));
//paramArray.Add(new SqlParameter("@ps_BillNo", 20));
//SqlParameter sqlParaOut = new SqlParameter("@ps_RefBillNo", SqlDbType.VarChar, 50);
//sqlParaOut.Direction = ParameterDirection.Output;
//paramArray.Add(sqlParaOut);
//dS7Data.Database.ExecuteSqlCommand("EXEC [sSysGetBillNo_new] @ps_BillType,@ps_OrgCode,@ps_EmpCode,@ps_bshead,@ps_Date,@ps_BillNo,@ps_RefBillNo output", paramArray.ToArray());
//ExecStoredProcedure("sSysGetBillNo_new", paramArray.ToArray());
var bsDate = string.Empty;
if (!string.IsNullOrWhiteSpace(bsdate))
bsdate = Convert.ToDateTime(bsdate).ToString("yyyy-MM-dd");
if (billType.RULEDATETYPE == "业务日期")
bsDate = bsdate;
else if (billType.RULEDATETYPE == "会计期间" && accdate.Length == 7)
bsDate = accdate + "-01";
else
bsDate = accdate;
var cmd = $@"DECLARE @ps_BillNo varchar(20)
EXEC [sSysGetBillNo_new]
@ps_BillType = N'{billType.BILLTYPE}',
@ps_OrgCode = N'{orgCode}',
@ps_EmpCode = N'{UserCode}',
@ps_Date = N'{bsDate}',
@ps_bshead = N'{bshead}',
@ps_BillNo = @ps_BillNo OUTPUT,
@ps_RefBillNo = N''
SELECT @ps_BillNo as N'billno'";
return dS7Data.Database.SqlQuery<string>(cmd).First();
}
/// <summary>
/// 获取用户code参考东胜7修改
/// </summary>
/// <param name="username"></param>
/// <param name="dbname"></param>
/// <returns></returns>
private string GetUserCode(string username, string dbname = "")
{
//string EDICODE = "";
//var strSql = new StringBuilder();
//strSql.Append("select CODENAME from [user] where SHOWNAME='" + username + "'");
//Database db = string.IsNullOrWhiteSpace(dbname) ? DatabaseFactory.CreateDatabase() : DatabaseFactory.CreateDatabase(dbname);
//using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
//{
// while (reader.Read())
// {
// EDICODE = Convert.ToString(reader["CODENAME"]);
// }
// reader.Close();
//}
//return EDICODE;
return dS7Data.Database.SqlQuery<string>("select CODENAME from [user] where SHOWNAME='" + username + "'").FirstOrDefault();
}
/// <summary>
/// 获取公司code参考东胜7修改
/// </summary>
/// <param name="Corpid"></param>
/// <param name="dbname"></param>
/// <returns></returns>
private string GetCorpCode(string Corpid, string dbname = "")
{
//string EDICODE = "";
//var strSql = new StringBuilder();
//strSql.Append("select CODENAME from [company] where GID='" + Corpid + "'");
//Database db = string.IsNullOrWhiteSpace(dbname) ? DatabaseFactory.CreateDatabase() : DatabaseFactory.CreateDatabase(dbname);
//using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
//{
// while (reader.Read())
// {
// EDICODE = Convert.ToString(reader["CODENAME"]);
// }
// reader.Close();
//}
//return EDICODE;
return dS7Data.Database.SqlQuery<string>("select CODENAME from [company] where GID='" + Corpid + "'").FirstOrDefault();
}
public static int ExecStoredProcedure(string procName, params SqlParameter[] parameters)
{
int rtn = 0;
using (SqlConnection conn = new SqlConnection(DS6ConnStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
SqlTransaction st = conn.BeginTransaction();
cmd.Transaction = st;
try
{
cmd.CommandText = procName;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(parameters);
var rr = cmd.ExecuteScalar();
st.Commit();
return rtn;
}
catch (SqlException sqlex)
{
st.Rollback();
throw sqlex;
}
}
}
}
/// <summary>
/// 调用DS6的委托编号存储过程
///
/// </summary>
/// <param name="Code">SE加会计期间年月 共8位</param>
/// <returns></returns>
public static string DS6GetBSNO(string Code)
{
//string strConnection = "user id=sa;password=sa;initial catalog=MyTest;Server=YHB;Connect Timeout=30";
using (SqlConnection conn = new SqlConnection(DS6ConnStr))
{
conn.Open();
using (SqlCommand sqlComm = conn.CreateCommand())
{
//设置要调用的存储过程的名称
sqlComm.CommandText = "p_no_get";
//指定SqlCommand对象传给数据库的是存储过程的名称而不是sql语句
sqlComm.CommandType = CommandType.StoredProcedure;
SqlParameter username = sqlComm.Parameters.Add(new SqlParameter("@Code", SqlDbType.VarChar, 20));
//指明"@username"是输入参数
username.Direction = ParameterDirection.Input;
//为“@username”参数赋值
username.Value = Code;
SqlParameter Num = sqlComm.Parameters.Add(new SqlParameter("@Num", SqlDbType.VarChar, 20));
//指定"@password"为输出参数
Num.Direction = ParameterDirection.Output;
//执行
sqlComm.ExecuteNonQuery();
//得到输出参数的值,把赋值给name,注意,这里得到的是object类型的,要进行相应的类型轮换
string num = Convert.ToString(sqlComm.Parameters["@Num"].Value);
return num;
//MessageBox.Show(passwrod);
}
}
return "";
}
#region 大简云通过消息队列发布的订舱数据保存至DS6 用于合川家业务从大简云发布的消息队列中解析至DS6数据库
public void DingCangToDS6(JArray jarr)
{
try
{
DS6DataContext DS6Data = new DS6DataContext();
foreach (var item in jarr)
{
var obj = item as JObject;
var itemstr = item.ToString();
var head = JsonConvert.DeserializeObject<DingCangHead>(itemstr);
//判断业务是否存在。判断依据为head.
//如果不存在 则新增
//如存在则删除原有箱信息。ETD ATD 使用原有数据而不用大简云发布的信息覆盖
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();
//过滤权限
var cando = (newhead., "776");
if (!cando)
{
logger.Debug($"录入人无权限:{newhead.录入人}");
continue;
}
newhead.ETD = updrec.ETD;
newhead.= updrec.;
newhead. = updrec.;
newhead. = updrec.;
newhead. = updrec.;
newhead. = updrec.;
newhead. = updrec.;
newhead. = updrec.;
newhead. = updrec.;
newhead. = updrec.;
newhead. = updrec.;
newhead. = updrec.;
DS6Data.t_op_seae.AddOrUpdate(newhead);
var ctnlist = DS6Data.t_op_ctn.Where(x => x. == headid).ToList();
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) {
var needinsert = true;
if (old_assistantList != null && old_assistantList.Count > 0)
{
foreach (var oldassis in old_assistantList)
{
//if (newassis.BSNO == oldassis.BSNO)
//{
// var updassis = newassis;
// updassis.AS_ID = oldassis.AS_ID;
// assistantUpdList.Add(updassis);
// needinsert = false;
//}
//else
//{
assistantAddList.Add(newassis);
assistantDelList.Add(oldassis);
//}
}
}
//if (needinsert) 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.AddOrUpdate(upd);
//}
if (assistantAddList.Count > 0)
DS6Data.t_op_seae_assistant.AddRange(assistantAddList);
logger.Debug($"更新数据:{newhead}");
DS6Data.SaveChanges();
}
else {
//新增业务
var newhead = head.GetOpseae();
//过滤权限
var cando = (newhead., "776");
if (!cando) continue;
var = DS6Data.t_op_seae.Max(m => m.);
var new = (int.Parse() + 1).ToString().PadLeft(10,' ');
newhead. = new;
newhead. = new;
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);
DS6Data.t_op_seae.Add(newhead);
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();
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)
{
var needinsert = true;
if (old_assistantList != null && old_assistantList.Count > 0)
{
foreach (var oldassis in old_assistantList)
{
if (newassis.BSNO == oldassis.BSNO)
{
var updassis = newassis;
updassis.AS_ID = oldassis.AS_ID;
assistantUpdList.Add(updassis);
needinsert = false;
}
else
{
assistantDelList.Add(oldassis);
}
}
}
if (needinsert) 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.AddOrUpdate(upd);
}
if (assistantAddList.Count > 0)
DS6Data.t_op_seae_assistant.AddRange(assistantAddList);
logger.Debug($"添加数据:{newhead}");
DS6Data.SaveChanges();
}
}
}
catch (Exception e)
{
logger.Error($"导入订舱信息出错:{e}");
}
}
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;
}
}
#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 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",
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 string dzRemark { get; set; } //"string",
public string czRemark { get; set; } //"string",
public string createdUserName { get; set; } //"string",
public List<DingCangCtn> ctnInputs { get; set; }
public DingCangbookingEDIExt bookingEDIExt { get; set; }
public List<DingCangTDXX> 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 => 1 == 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 = "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 t_op_seae_md GetOpseae() {
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));
//20230410 根据箱信息重新计算 集装箱 和 箱数大写
var d6 = new DS6DataContext();
var = new ();
foreach (var ctn in ctnInputs) {
var infoList = d6.t_code_ctn.Where(x => (x. + 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 result = new t_op_seae_md {
= bsno,
= "接受委托",
= "录入状态",
= etd,
= "整票",
= weeks,
= bsdate,
= mblno,
= mblno,
= hblno,
= custno,
= contractno,
= shipper,
= consignee,
= notifyparty,
= yard,
= vessel,
= voynoinner,
= etd,
= closingdate,
= portloadid,
= portload,
= portdischargeid,
= portdischarge,
= placedeliveryid,
= placedelivery,
= destinationid,
= destination,
= nobill,
= copynobill,
= issuetype,
= issuedate,
= issueplace,
= blfrt,
= prepardat,
= payableat,
= service,
= marks,
= service,
HS = hscode,
= description,
= pkgs,
= kindpkgs,
= kgs,
= cbm,
= totalno,
= ,
= ,
= carrier,
= cargoid,
= dclass,
= dunno,
= tempset,
= reeferf,
= tempmin,
= tempmax,
= iscontainersoc,
EDI = soremark,
//全称= compname,
= pono,
= pono,
= custservice,
= op,
= doc,
= sale,
线 = route,
= customername,
= customser,
= trucker,
= agentname,
= lanename,
线 = lineName,
= shipagency,
= forwarder,
= dzRemark,
= czRemark,
= bookingEDIExt.goodsName,
= createdUserName,
= (bookingEDIExt == null) ? "" : bookingEDIExt.orderRemark,
DJYID = Id,
= false,
= false,
VGM = false,
= false,
= false,
TEU = .getTeu(),
1 = .get1(),
2 = .get2(),
3 = .get3(),
4 = .get4(),
5 = .get5(),
6 = .get6(),
7 = .get7(),
8 = .get8(),
9 = .get9(),
10 = .get10(),
};
foreach (var status in goodsStatus) {
if (status.statusName == "通知到港")
{
if(status.finishTime!=null)
result. = true;
}
if (status.statusName == "是否提货")
{
if (status.finishTime != null)
result. = true;
}
if (status.statusName == "提交VGM")
{
if (status.finishTime != null)
result.VGM = true;
}
if (status.statusName == "提交舱单")
{
if (status.finishTime != null)
result. = true;
}
if (status.statusName == "装载放行")
{
if (status.finishTime != null)
result. = true;
}
}
#region 设定字符串长度 超长的截断
var lengthDic = new Dictionary<string, int>
{
{"主提单号",20},
{"分提单号",20},
{"运费协议号",20},
{"委托编号",20},
{"装运方式",8},
{"委托单位",20},
{"发货人",20},
{"收货人",20},
{"通知人",20},
{"发货人代码",1000},
{"收货人代码",1000},
{"通知人代码",1000},
{"代理",20},
{"代理内容",1000},
{"场站",20},
{"船名",60},
{"航次",20},
{"起运港",60},
{"装货港",60},
{"装港代码",10},
{"卸货港",100},
{"卸货代码",10},
{"二程港口",60},
{"二程船名",60},
{"二程航次",20},
{"目的地",30},
{"交货地点",100},
{"交货代码",10},
{"提单份数",10},
{"签单方式",10},
{"签单地点",30},
{"付费方式",60},
{"预付地点",100},
{"到付地点",100},
{"运输条款",10},
{"唛头",800},
{"箱号封号",2000},
{"件数包装",600},
{"货物描述",1000},
{"货物名称",30},
{"货物重量",600},
{"货物尺码",600},
{"包装",60},
{"件数大写",100},
{"箱数大写",100},
{"集装箱",200},
{"录入人",12},
{"操作员",10},
{"揽货人",10},
{"客服员",10},
{"航线",30},
{"船公司",20},
{"货代公司",20},
{"备注",800},
{"报关行",20},
{"承运车队",20},
{"分单列表",600},
{"计费标准",1000},
{"报关员",10},
{"报关单号",20},
{"核销单号",50},
{"手册号",20},
{"经营单位",60},
{"单位代码",20},
{"合同号",20},
{"报关备注",600},
{"危险品分类",5},
{"危险品编号",20},
{"冷藏通风量",12},
{"温度单位",1},
{"设置温度",16},
{"最低温度",5},
{"最高温度",5},
{"货物标识",1},
{"发票号",20},
{"商品编码",400},
{"销售部门",30},
{"操作部门",30},
{"业务来源",8},
{"英文船期",12},
{"三程港口",60},
{"三程船名",60},
{"三程航次",20},
{"辅助字段一",600},
{"辅助字段二",600},
{"辅助字段三",600},
{"辅助字段四",600},
{"主提单标准",30},
{"分提单标准",30},
{"委托标准",30},
{"财务凭证",30},
{"附加条款",600},
{"备案号",20},
{"运抵国",60},
{"境内货源地",60},
{"批准文号",20},
{"成交方式",20},
{"单价",100},
{"总价",100},
{"商品名称",400},
{"数量单位",400},
{"报检单号",20},
{"实验内容",100},
{"报关操作",10},
{"报检操作",10},
{"币制",100},
{"单证信息",100},
{"核销标准",20},
{"报关标准",20},
{"报检标准",20},
{"目的地代码",10},
{"包装代码",10},
{"发货人编号",10},
{"运输方式",10},
{"HS编码",30},
{"船代",20},
{"单证员",10},
};
foreach (var item in lengthDic) {
try
{
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(t_op_seae_md head) {
var result = new List<t_op_ctn_md> ();
foreach (var ctn in ctnInputs) {
var d6 = new DS6DataContext();
var infoList = d6.t_code_ctn.Where(x => (x. + x.) == 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
{
= SetLength(info., 4),
= SetLength(info., 2),
= SetLength(info., 10),
= SetLength(head., 12),
= SetLength(ctn.ctnall, 20),
= ctn.ctnnum,
= SetLength(ctn.cntrno, 30),
= SetLength(ctn.sealno, 30),
= ctn.pkgs,
= SetLength(ctn.kindpkgs, 60),
= ctn.kgs,
= ctn.cbm,
= ctn.tareweight,
TEU = (info. == "20" ? 1* ctn.ctnnum : 2* ctn.ctnnum),
=ctn.weighkgs
};
result.Add (newctn);
}
return result;
}
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;
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.ETD,
HBL = SetLength(item.masterBolIndicator, 1)
};
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>();
foreach (var item in childrens)
{
var newrec = new t_op_seae_assistant_md
{
= head.,
= head.,
BSNO= item.bsno,
= item.bsdate,
= item.mblno,
= item.hblno,
//订舱序列号 = item.bookingno,
= item.shipper,
= item.consignee,
= item.notifyparty,
= 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.prepardatid,
//到付地点= item.payableatid,
};
var lengthDic = new Dictionary<string, int>
{
{"主提单号",20},
{"分提单号",20},
{"发货人代码",1000},
{"收货人代码",1000},
{"通知人代码",1000},
{"提单份数",10},
{"签单方式",10},
{"签单地点",30},
{"付费方式",60},
{"预付地点",100},
{"到付地点",100},
{"运输条款",10},
{"唛头",800},
{"运输方式",10},
{"HS编码",30},
{"货物描述",1000},
{"包装",60},
{"件数大写",100},
{"集装箱",200},
{"船公司",20},
{"货物标识",1},
{"危险品分类",5},
{"危险品编号",20},
{"设置温度",16},
{"冷藏通风量",12},
{"最低温度",5},
{"最高温度",5},
{"委托编号",20},
{"操作员",10},
{"揽货人",10},
{"客服员",10},
};
foreach (var _item in lengthDic)
{
try
{
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;
}
}
result.Add(newrec);
}
return result;
}
}
public class DingCangCtn {
public long? id { get; set; }
public long? billid { get; set; }
public string ctncode { get; set; } //"string",
public string ctnall { get; set; } //"string",
public int? ctnnum { get; set; } = 0;
public int? teu { get; set; } = 0;
public string cntrno { get; set; } //"string",
public string sealno { get; set; } //"string",
public int? pkgs { get; set; } = 0;
public string kindpkgs { get; set; } //"string",
public decimal? kgs { get; set; } = 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 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",
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",
}
#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) ? "" : (oldstr.Length > length) ? oldstr.Substring(0, length) : oldstr;
return str;
}
#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
}
}