using DSWeb.Common.DB; using DSWeb.Common.Extentions; using DSWeb.Common.Helper; 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.SqlClient; using System.Linq; using System.Text; 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 static string CompanyId = ConfigurationManager.AppSettings["CompanyId"].ToLower(); private static string Corpid = ConfigurationManager.AppSettings["Corpid"]; private static string DS7ConnStr = ConfigurationManager.ConnectionStrings["DongShengDB"].ConnectionString; private string RecMqUri = ConfigurationManager.AppSettings["ReceiveMQUri"]; private string FeeInputUserId = ConfigurationManager.AppSettings["FeeInputUserId"]; 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 DS7DataContext dS7Data = new DS7DataContext(); public bool Start(HostControl hostControl) { // 开始具体的业务逻辑 logger.Debug("开始运行"); dS7Data.Database.Log = (x => { logger.Debug(x); }); ConnectionFactory factory = new ConnectionFactory(); factory.Uri = new Uri(RecMqUri); mqConn = factory.CreateConnection(); //舱单队列 IModel modelCangdan = mqConn.CreateModel(); modelCangdan.ExchangeDeclare(ExchangeName, ExchangeType.Direct); modelCangdan.QueueDeclare($"{QueuePrefixCangdan}{CompanyId}", false, false, false, null); var consumerCangdan = new EventingBasicConsumer(modelCangdan); consumerCangdan.Received += (ch, ea) => { var body = ea.Body; var strBody = Encoding.UTF8.GetString(body.ToArray()); logger.Debug($"收到舱单输出数据:{strBody}"); try { //导出到东胜7 CangdanDataToDS7_OPOther(JArray.Parse(strBody)); } catch (Exception ex) { var excep = ex; while (excep != null) { logger.Error(excep.Message); logger.Error(excep.StackTrace); excep = excep.InnerException; } } }; modelCangdan.BasicConsume($"{QueuePrefixCangdan}{CompanyId}", false, consumerCangdan); /* //报关队列(委托) IModel modelBaoguan = mqConn.CreateModel(); modelBaoguan.ExchangeDeclare(ExchangeName, ExchangeType.Direct); modelBaoguan.QueueDeclare($"{QueuePrefixBaoguan}{CompanyId}", false, false, false, null); var consumerBaoguan = new EventingBasicConsumer(modelBaoguan); consumerBaoguan.Received += (ch, ea) => { var body = ea.Body; var strBody = Encoding.UTF8.GetString(body.ToArray()); logger.Debug($"收到报关输出数据:{strBody}"); try { //导出到东胜7 BaoguanDataToDS7(JArray.Parse(strBody)); } catch (Exception ex) { var excep = ex; while (excep != null) { logger.Error(excep.Message); logger.Error(excep.StackTrace); excep = excep.InnerException; } } }; modelBaoguan.BasicConsume($"{QueuePrefixBaoguan}{CompanyId}", true, consumerBaoguan); //报关队列(报关) IModel modelBG = mqConn.CreateModel(); modelBG.ExchangeDeclare(ExchangeName, ExchangeType.Direct); modelBG.QueueDeclare($"{QueuePrefixBG}{CompanyId}", false, false, false, null); var consumerBG = new EventingBasicConsumer(modelBG); consumerBG.Received += (ch, ea) => { var body = ea.Body; var strBody = Encoding.UTF8.GetString(body.ToArray()); logger.Debug($"收到报关输出数据(报关模块):{strBody}"); try { //导出到东胜7 BgDataToDS7(JArray.Parse(strBody)); } catch (Exception ex) { var excep = ex; while (excep != null) { logger.Error(excep.Message); logger.Error(excep.StackTrace); excep = excep.InnerException; } } }; modelBG.BasicConsume($"{QueuePrefixBG}{CompanyId}", true, consumerBG); */ return true; } public bool Stop(HostControl hostControl) { // 结束 logger.Debug("停止运行"); //StdSchedulerFactory.GetDefaultScheduler().Shutdown(); mqConn.Close(); return true; } //舱单数据生成到东胜7 public void CangdanDataToDS7(JArray jarr) { var opUser = dS7Data.User.AsNoTracking().First(u => u.GID == FeeInputUserId); foreach (var item in jarr) { var obj = item as JObject; 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(); /* 2021-12-23最新需求: 按主提单号(MBLNO)在客户东胜系统查询,如果查到对应主提单号,则在该票业务下写入舱单费,如果有分单,每一票分单,也要生成一条舱单费,分单的舱单费,需要在费用备注里写入分提单号。 如果主提单号在东胜系统搜不到,则创建一条新业务,并按委托方生成舱单费。 */ OpSeae opSeae = dS7Data.OpSeae.AsNoTracking().FirstOrDefault(x => x.MBLNO == MBLNO && (x.HBLNO == null || x.HBLNO == "")); if (opSeae == null) { logger.Debug($"未找到委托数据:{MBLNO}"); opSeae = new OpSeae(); dS7Data.OpSeae.Add(opSeae); opSeae.BSNO = Guid.NewGuid().ToString().Replace("-", ""); opSeae.MASTERNO = opSeae.BSNO; opSeae.MBLNO = MBLNO; opSeae.CARGOID = CARRIERID; opSeae.CARRIER = CARRIER; opSeae.DESTINATION = DESTINATION; opSeae.DESTINATIONID = DESTINATIONID; opSeae.PORTDISCHARGE = PORTDISCHARGE; opSeae.PORTDISCHARGEID = PORTDISCHARGEID; opSeae.OP = opUser.SHOWNAME; opSeae.INPUTBY = opUser.SHOWNAME; opSeae.CORPID = Corpid; //opSeae.ETD = ETD; opSeae.ETD = DateTime.Today; //2021-12-29,于菲:开船日期为导入日期 opSeae.CREATETIME = DateTime.Now; opSeae.ISCANCEL = "0"; opSeae.BSDATE = DateTime.Today; opSeae.BSSTATUS = false; opSeae.FEESTATUS = false; opSeae.ACCDATE = ETD.ToString("yyyy-MM"); opSeae.BLTYPE = "整箱"; var custEdi = dS7Data.CodeCustEdi.AsNoTracking().FirstOrDefault(x => x.EDINAME == "DJY_OUTPUT" && x.EDICODE == WeiTuoFaSongFang); if (custEdi != null) { opSeae.CUSTOMERNAME = custEdi.CUST; } //生成编号 var billnoset = dS7Data.SysBillNoSet.AsNoTracking().FirstOrDefault(x => x.COMPANYID == Corpid && x.OPLBNAME == "海运出口" && x.RULEBLNO == "委托编号"); if (billnoset != null) { opSeae.CUSTNO = GetBillNo(billnoset, opSeae.ETD.ToString(), opSeae.ACCDATE, opname: opUser.SHOWNAME, corpid: Corpid); } else { logger.Debug($"SysBillNoSet数据未找到,无法生成编号:{MBLNO}"); } } else { logger.Debug($"委托数据已存在:{MBLNO}"); } InfoClient infoClient = null; if (!string.IsNullOrEmpty(opSeae.CUSTOMERNAME)) { infoClient = dS7Data.InfoClient.AsNoTracking().FirstOrDefault(x => x.SHORTNAME == opSeae.CUSTOMERNAME); if (infoClient != null) { opSeae.SALE = infoClient.SALE; //揽货人赋值 //查询配置,生成应收 var fee = dS7Data.CustFeeTemplateDetail.AsNoTracking().FirstOrDefault(x => x.CUSTOMERNAME == infoClient.SHORTNAME && x.FEENAME == FeeShouName); if (fee != null) { var feeShou = new ChFee(); feeShou.GID = Guid.NewGuid().ToString().Replace("-", ""); feeShou.BSNO = opSeae.BSNO; feeShou.FEETYPE = 1; feeShou.FEENAME = FeeShouName; feeShou.CUSTOMERTYPE = "其他"; feeShou.CUSTOMERNAME = infoClient.SHORTNAME; feeShou.UNIT = fee.UNIT; feeShou.UNITPRICE = fee.UNITPRICE; feeShou.QUANTITY = 1; feeShou.AMOUNT = fee.UNITPRICE; feeShou.EXCHANGERATE = 1; feeShou.CURRENCY = "RMB"; feeShou.ENTEROPERATOR = FeeInputUserId; feeShou.ENTERDATE = DateTime.Now; feeShou.MODIFIEDUSER = FeeInputUserId; feeShou.MODIFIEDTIME = DateTime.Now; feeShou.LOCALCURR = feeShou.CURRENCY; feeShou.FEEDESCRIPTION = feeShou.FEENAME; feeShou.FEESTATUS = 0;//费用插入时状态为提交审核;2021-12-8,要求插入时状态改为录入状态:1;2021-12-9,要求状态为审核通过状态:0 //2021-12-8,下列字段不能为空,写入默认值 feeShou.SETTLEMENT = 0; feeShou.ORDERAMOUNT = 0; feeShou.ORDERINVOICE = 0; feeShou.ORDERINVSETTLEMENT = 0; feeShou.ORDERSETTLEMENT = 0; feeShou.INVOICE = 0; feeShou.TAXRATE = 0; feeShou.ISADVANCEDPAY = false; feeShou.ISINVOICE = false; feeShou.ISCRMORDERFEE = false; feeShou.TAXUNITPRICE = fee.UNITPRICE;//2021-12-29,于菲:同样赋值单价和金额 feeShou.NOTAXAMOUNT = fee.UNITPRICE;//2021-12-29,于菲:同样赋值单价和金额 //2021-12-9,要求下列字段不能为空,填写0或false feeShou.COMMISSIONRATE = 0; feeShou.AUDITSTATUS = 0; feeShou.LINENUM = 0; feeShou.ISDEBIT = false; feeShou.ISOPEN = false; feeShou.ACCTAXRATE = 0; feeShou.ISVOU = false; feeShou.TAX = 0; feeShou.PREAMOUNT = 0; feeShou.ISACC = false; feeShou.CUSTDUI = false; //2021-12-23:分单号写入备注 if (!string.IsNullOrEmpty(HBLNO)) { feeShou.REMARK += $" {HBLNO} "; } dS7Data.ChFee.Add(feeShou); } } } //应付 if (string.IsNullOrEmpty(HBLNO)) //主单才插入船代费用 { var feeFu = new ChFee(); feeFu.GID = Guid.NewGuid().ToString().Replace("-", ""); feeFu.BSNO = opSeae.BSNO; feeFu.FEETYPE = 2; feeFu.FEENAME = FeePayName; feeFu.CUSTOMERTYPE = FeePayCustomerType; feeFu.CUSTOMERNAME = FeePayCustomer; feeFu.UNIT = "票"; feeFu.UNITPRICE = FeePayPrice; feeFu.QUANTITY = 1; feeFu.AMOUNT = FeePayPrice; feeFu.EXCHANGERATE = 1; feeFu.CURRENCY = "RMB"; feeFu.ENTEROPERATOR = FeeInputUserId; feeFu.ENTERDATE = DateTime.Now; feeFu.MODIFIEDUSER = FeeInputUserId; feeFu.MODIFIEDTIME = DateTime.Now; feeFu.LOCALCURR = feeFu.CURRENCY; feeFu.FEEDESCRIPTION = feeFu.FEENAME; feeFu.FEESTATUS = 0;//费用插入时状态为提交审核;2021-12-8,要求插入时状态改为录入状态:1;2021-12-9,要求状态为审核通过状态:0 //2021-12-8,下列字段不能为空,写入默认值 feeFu.SETTLEMENT = 0; feeFu.ORDERAMOUNT = 0; feeFu.ORDERINVOICE = 0; feeFu.ORDERINVSETTLEMENT = 0; feeFu.ORDERSETTLEMENT = 0; feeFu.INVOICE = 0; feeFu.TAXRATE = 0; feeFu.ISADVANCEDPAY = false; feeFu.ISINVOICE = false; feeFu.ISCRMORDERFEE = false; feeFu.TAXUNITPRICE = 0; 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; dS7Data.ChFee.Add(feeFu); } //不管主单分单都要付费给大简云 var feeFuDJY = new ChFee(); feeFuDJY.GID = Guid.NewGuid().ToString().Replace("-", ""); feeFuDJY.BSNO = opSeae.BSNO; feeFuDJY.FEETYPE = 2; feeFuDJY.FEENAME = FeePayMyshippingName; feeFuDJY.CUSTOMERTYPE = "其他"; feeFuDJY.CUSTOMERNAME = FeePayMyshippingCustomer; feeFuDJY.UNIT = "票"; feeFuDJY.UNITPRICE = FeePayMyshippingPrice; feeFuDJY.QUANTITY = 1; feeFuDJY.AMOUNT = FeePayMyshippingPrice; feeFuDJY.EXCHANGERATE = 1; feeFuDJY.CURRENCY = "RMB"; feeFuDJY.ENTEROPERATOR = FeeInputUserId; feeFuDJY.ENTERDATE = DateTime.Now; feeFuDJY.MODIFIEDUSER = FeeInputUserId; feeFuDJY.MODIFIEDTIME = DateTime.Now; feeFuDJY.LOCALCURR = feeFuDJY.CURRENCY; feeFuDJY.FEEDESCRIPTION = feeFuDJY.FEENAME; feeFuDJY.FEESTATUS = 0;//费用插入时状态为提交审核;2021-12-8,要求插入时状态改为录入状态:1;2021-12-9,要求状态为审核通过状态:0 //2021-12-8,下列字段不能为空,写入默认值 feeFuDJY.SETTLEMENT = 0; feeFuDJY.ORDERAMOUNT = 0; feeFuDJY.ORDERINVOICE = 0; feeFuDJY.ORDERINVSETTLEMENT = 0; feeFuDJY.ORDERSETTLEMENT = 0; feeFuDJY.INVOICE = 0; feeFuDJY.TAXRATE = 0; feeFuDJY.ISADVANCEDPAY = false; feeFuDJY.ISINVOICE = false; feeFuDJY.ISCRMORDERFEE = false; feeFuDJY.TAXUNITPRICE = 0; 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; dS7Data.ChFee.Add(feeFuDJY); //dS7Data.Database.Log = (x => { logger.Debug(x); }); dS7Data.SaveChanges(); } } #region 舱单数据解析实体类 public class Ctnlist { /// /// /// public string ctn_id { get; set; } /// /// /// public string MFNO { get; set; } /// /// /// public string CTNCODE { get; set; } /// /// /// public int? SIZE { get; set; } /// /// /// public string CTN { get; set; } /// /// /// public int? CTNNUM { get; set; } /// /// /// public int? TEU { get; set; } /// /// /// public string CTNALL { get; set; } /// /// /// public string CNTRNO { get; set; } /// /// /// public string SEALNO { get; set; } /// /// /// public int? PKGS { get; set; } /// /// /// public decimal? KGS { get; set; } /// /// /// public decimal? CBM { get; set; } /// /// /// public string KINDPKGS { get; set; } /// /// /// public string DESCRIPTION { get; set; } /// /// /// public string MARKS { get; set; } /// /// /// public string PO { get; set; } /// /// /// public string SKU { get; set; } /// /// /// public string SKUDESCRIP { get; set; } /// /// /// public string DUNNO { get; set; } /// /// /// public string HTS { get; set; } /// /// /// public string CTOFORIGIN { get; set; } /// /// /// public decimal? GOODVALUE { get; set; } /// /// /// public string CTNOWNER { get; set; } /// /// /// public string ShiFengRen { get; set; } /// /// /// public string LeiXingFa { get; set; } /// /// /// public string LeiXingShou { get; set; } /// /// /// public string LeiXingTong { get; set; } /// /// /// public int ZhongKongBiaoShi { get; set; } /// /// /// public string ChengZhongZhongLiang { get; set; } /// /// /// public string ChengZhongFangShi { get; set; } /// /// /// public string ChengZhongShiJian { get; set; } /// /// /// public decimal? PIZHONG { get; set; } /// /// /// public string APICTNID { get; set; } /// /// /// public DateTime? VGMCLOSETIME { get; set; } } public class OpSeaeEdi { /// /// /// public string MBLNO { get; set; } /// /// /// public string HBLNO { get; set; } /// /// /// public string CARRIERID { get; set; } /// /// /// public string CARRIER { get; set; } /// /// /// public string WeiTuoFaSongFang { get; set; } /// /// /// public string DESTINATION { get; set; } /// /// /// public string DESTINATIONID { get; set; } /// /// /// public string PORTDISCHARGE { get; set; } /// /// /// public string PORTDISCHARGEID { get; set; } /// /// /// public DateTime? ETD { get; set; } /// /// /// public string CompId { get; set; } /// /// 东方海外物流(中国)有限公司青岛分公司 /// public string CompName { get; set; } /// /// /// public string MFNO { get; set; } /// /// /// public string BSNO { get; set; } /// /// /// public string MASTERNO { get; set; } /// /// /// public string SHIPPERNAME { get; set; } /// /// /// public string SHIPPERADDR1 { get; set; } /// /// /// public string SHIPPERCOUNTRY { get; set; } /// /// /// public string SHIPPERTEL { get; set; } /// /// /// public string CONSIGNEENAME { get; set; } /// /// /// public string CONSIGNEEADDR1 { get; set; } /// /// /// public string CONSIGNEECOUNTRY { get; set; } public string CONSIGNEETEL { get; set; } public string NOTIFYPARTYNAME { get; set; } public string NOTIFYPARTYADDR1 { get; set; } /// /// /// public string NOTIFYPARTYCOUNTRY { get; set; } /// /// /// public string NOTIFYPARTYTEL { get; set; } /// /// /// public string SHIPPER { get; set; } /// /// /// public string CONSIGNEE { get; set; } /// /// /// public string NOTIFYPARTY { get; set; } /// /// /// public string VESSEL { get; set; } /// /// /// public string VOYNO { get; set; } /// /// /// public string PORTLOADID { get; set; } /// /// /// public string PORTLOAD { get; set; } /// /// /// public string PLACEDELIVERYID { get; set; } /// /// /// public string PLACEDELIVERY { get; set; } /// /// /// public string SERVICE { get; set; } /// /// /// public string MARKS { get; set; } /// /// /// public string DESCRIPTION { get; set; } /// /// /// public int? PKGS { get; set; } /// /// /// public string KINDPKGS { get; set; } /// /// /// public decimal? KGS { get; set; } /// /// /// public decimal? CBM { get; set; } /// /// /// public string CARGOID { get; set; } /// /// /// public string DCLASS { get; set; } /// /// /// public string DUNNO { get; set; } /// /// /// public string REEFERF { get; set; } /// /// /// public string TEMPID { get; set; } /// /// /// public string TEMPSET { get; set; } /// /// /// public string TEMPMAX { get; set; } /// /// /// public string TEMPMIN { get; set; } /// /// /// public string FREIGHTAGMNO { get; set; } /// /// /// public string HUMIDITY { get; set; } /// /// /// public string SHIPIMO { get; set; } /// /// /// public DateTime? ETA { get; set; } /// /// /// public string BLFRT { get; set; } /// /// /// public DateTime? SENDTIME { get; set; } /// /// /// public string YARD { get; set; } /// /// 外代 /// public string FORWARDER { get; set; } /// /// /// public List ctnlist { get; set; } } #endregion /// /// 舱单数据生成到OPOther版本的舱单业务中 经汉专用 /// /// 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(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(); //看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 custEdi = dS7Data.CodeCustEdi.AsNoTracking().FirstOrDefault(x => x.EDINAME == "DJY_OUTPUT" && x.EDICODE == WeiTuoFaSongFang); if (custEdi != null) { CUSTOMERNAME = custEdi.CUST; } if (op_other == null || op_other.BSNO == null || op_other.BSNO == "") { logger.Debug($"未找到委托数据:{MBLNO}"); BSNO = 主单mfno; var newrec = new op_other_md { BSNO = BSNO, OPLB = "op_other", OPLBNAME = "舱单申报", BSSTATUS = false, FEESTATUS = false, MBLNO = MBLNO, HBLNO = "", CUSTOMERNAME = CUSTOMERNAME, //CARRIER BSDATE = DateTime.Today, ACCDATE = DateTime.Now.ToString("yyyy-MM"), BSSOURCE = "", OP = opUser.SHOWNAME, CUSTSERVICE = opUser.SHOWNAME, SALE = opUser.SHOWNAME, CORPID = Corpid, ETD = ETD }; 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 }; 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 = 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(); } //只要有对应的往来单位=委托发送方 主分单都产生相应的应收 InfoClient infoClient = null; if (!string.IsNullOrEmpty(CUSTOMERNAME)) { infoClient = dS7Data.InfoClient.AsNoTracking().FirstOrDefault(x => x.SHORTNAME == CUSTOMERNAME); if (infoClient != null) { op_other.SALE = infoClient.SALE; //揽货人赋值 //查询配置,生成应收 var fee = dS7Data.CustFeeTemplateDetail.AsNoTracking().FirstOrDefault(x => x.CUSTOMERNAME == infoClient.SHORTNAME && x.FEENAME == FeeShouName); if (fee != null ) { var feeShou = new ChFee(); feeShou.GID = Guid.NewGuid().ToString().Replace("-", ""); feeShou.BSNO = op_other.BSNO; feeShou.FEETYPE = 1; feeShou.FEENAME = FeeShouName; feeShou.CUSTOMERTYPE = "其他"; feeShou.CUSTOMERNAME = infoClient.SHORTNAME; feeShou.UNIT = fee.UNIT; feeShou.UNITPRICE = fee.UNITPRICE; feeShou.QUANTITY = 1; feeShou.AMOUNT = fee.UNITPRICE; feeShou.EXCHANGERATE = 1; feeShou.CURRENCY = "RMB"; feeShou.ENTEROPERATOR = FeeInputUserId; feeShou.ENTERDATE = DateTime.Now; feeShou.MODIFIEDUSER = FeeInputUserId; feeShou.MODIFIEDTIME = DateTime.Now; feeShou.LOCALCURR = feeShou.CURRENCY; feeShou.FEEDESCRIPTION = feeShou.FEENAME; feeShou.FEESTATUS = 0;//费用插入时状态为提交审核;2021-12-8,要求插入时状态改为录入状态:1;2021-12-9,要求状态为审核通过状态:0 //2021-12-8,下列字段不能为空,写入默认值 feeShou.SETTLEMENT = 0; feeShou.ORDERAMOUNT = 0; feeShou.ORDERINVOICE = 0; feeShou.ORDERINVSETTLEMENT = 0; feeShou.ORDERSETTLEMENT = 0; feeShou.INVOICE = 0; feeShou.TAXRATE = 0; feeShou.ISADVANCEDPAY = false; feeShou.ISINVOICE = false; feeShou.ISCRMORDERFEE = false; feeShou.TAXUNITPRICE = fee.UNITPRICE;//2021-12-29,于菲:同样赋值单价和金额 feeShou.NOTAXAMOUNT = fee.UNITPRICE;//2021-12-29,于菲:同样赋值单价和金额 //2021-12-9,要求下列字段不能为空,填写0或false feeShou.COMMISSIONRATE = 0; feeShou.AUDITSTATUS = 0; feeShou.LINENUM = 0; feeShou.ISDEBIT = false; feeShou.ISOPEN = false; feeShou.ACCTAXRATE = 0; feeShou.ISVOU = false; feeShou.TAX = 0; feeShou.PREAMOUNT = 0; feeShou.ISACC = false; feeShou.CUSTDUI = false; //2021-12-23:分单号写入备注 if (!string.IsNullOrEmpty(HBLNO)) { feeShou.REMARK += $" {HBLNO} "; } dS7Data.ChFee.Add(feeShou); } } } //应付 if (string.IsNullOrEmpty(HBLNO) && FeePayPrice>0) //主单才插入船代费用 { var feeFu = new ChFee(); feeFu.GID = Guid.NewGuid().ToString().Replace("-", ""); feeFu.BSNO = op_other.BSNO; feeFu.FEETYPE = 2; feeFu.FEENAME = FeePayName; feeFu.CUSTOMERTYPE = FeePayCustomerType; feeFu.CUSTOMERNAME = FeePayCustomer; feeFu.UNIT = "票"; feeFu.UNITPRICE = FeePayPrice; feeFu.QUANTITY = 1; feeFu.AMOUNT = FeePayPrice; feeFu.EXCHANGERATE = 1; feeFu.CURRENCY = "RMB"; feeFu.ENTEROPERATOR = FeeInputUserId; feeFu.ENTERDATE = DateTime.Now; feeFu.MODIFIEDUSER = FeeInputUserId; feeFu.MODIFIEDTIME = DateTime.Now; feeFu.LOCALCURR = feeFu.CURRENCY; feeFu.FEEDESCRIPTION = feeFu.FEENAME; feeFu.FEESTATUS = 0;//费用插入时状态为提交审核;2021-12-8,要求插入时状态改为录入状态:1;2021-12-9,要求状态为审核通过状态:0 //2021-12-8,下列字段不能为空,写入默认值 feeFu.SETTLEMENT = 0; feeFu.ORDERAMOUNT = 0; feeFu.ORDERINVOICE = 0; feeFu.ORDERINVSETTLEMENT = 0; feeFu.ORDERSETTLEMENT = 0; feeFu.INVOICE = 0; feeFu.TAXRATE = 0; feeFu.ISADVANCEDPAY = false; feeFu.ISINVOICE = false; feeFu.ISCRMORDERFEE = false; feeFu.TAXUNITPRICE = 0; 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; dS7Data.ChFee.Add(feeFu); dS7Data.SaveChanges(); } if (FeePayMyshippingPrice > 0) { //不管主单分单都要付费给大简云 var feeFuDJY = new ChFee(); feeFuDJY.GID = Guid.NewGuid().ToString().Replace("-", ""); feeFuDJY.BSNO = op_other.BSNO; feeFuDJY.FEETYPE = 2; feeFuDJY.FEENAME = FeePayMyshippingName; feeFuDJY.CUSTOMERTYPE = "其他"; feeFuDJY.CUSTOMERNAME = FeePayMyshippingCustomer; feeFuDJY.UNIT = "票"; feeFuDJY.UNITPRICE = FeePayMyshippingPrice; feeFuDJY.QUANTITY = 1; feeFuDJY.AMOUNT = FeePayMyshippingPrice; feeFuDJY.EXCHANGERATE = 1; feeFuDJY.CURRENCY = "RMB"; feeFuDJY.ENTEROPERATOR = FeeInputUserId; feeFuDJY.ENTERDATE = DateTime.Now; feeFuDJY.MODIFIEDUSER = FeeInputUserId; feeFuDJY.MODIFIEDTIME = DateTime.Now; feeFuDJY.LOCALCURR = feeFuDJY.CURRENCY; feeFuDJY.FEEDESCRIPTION = feeFuDJY.FEENAME; feeFuDJY.FEESTATUS = 0;//费用插入时状态为提交审核;2021-12-8,要求插入时状态改为录入状态:1;2021-12-9,要求状态为审核通过状态:0 //2021-12-8,下列字段不能为空,写入默认值 feeFuDJY.SETTLEMENT = 0; feeFuDJY.ORDERAMOUNT = 0; feeFuDJY.ORDERINVOICE = 0; feeFuDJY.ORDERINVSETTLEMENT = 0; feeFuDJY.ORDERSETTLEMENT = 0; feeFuDJY.INVOICE = 0; feeFuDJY.TAXRATE = 0; feeFuDJY.ISADVANCEDPAY = false; feeFuDJY.ISINVOICE = false; feeFuDJY.ISCRMORDERFEE = false; feeFuDJY.TAXUNITPRICE = 0; 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; dS7Data.ChFee.Add(feeFuDJY); //dS7Data.Database.Log = (x => { logger.Debug(x); }); dS7Data.SaveChanges(); } } } catch (Exception e) { logger.Error($"导入舱单出错:{e}"); } } //报关数据生成到东胜7(委托模块) public void BaoguanDataToDS7(JArray jarr) { var opUser = dS7Data.User.AsNoTracking().First(u => u.GID == FeeInputUserId); foreach (var item in jarr) { var obj = item as JObject; var shipOrderNo = obj.GetValue("ShipOrderNo").ToString(); var shipOrderNoMain = obj.GetValue("ShipOrderNoMain").ToString(); var ClientName = obj.GetValue("ClientName")?.ToString(); var ETD = DateTime.Today; var CompId = obj.GetValue("CompId").ToString(); /* 2021-12-23修改需求: 按主提单号在东胜系统查询,如果查到对应主提单号,则在该票业务下插入报关费,有几票报关单,插入几条报关费,并在费用备注里写入分提单号。 如果主提单号在东胜系统搜不到,则创建一条新业务,并按委托方生成报关费。 */ //区分主单、分单号 var orderMain = string.Empty; var orderSub = string.Empty; if (string.IsNullOrEmpty(shipOrderNoMain)) { orderMain = shipOrderNo; } else if (shipOrderNoMain == shipOrderNo) { orderMain = shipOrderNo; } else { orderMain = shipOrderNoMain; orderSub = shipOrderNo; } OpSeae opSeae = dS7Data.OpSeae.AsNoTracking().FirstOrDefault(x => x.MBLNO == orderMain && (x.HBLNO == null || x.HBLNO == "")); if (opSeae == null) { logger.Debug($"未找到委托数据:{orderMain}"); opSeae = new OpSeae(); dS7Data.OpSeae.Add(opSeae); opSeae.BSNO = Guid.NewGuid().ToString().Replace("-", ""); opSeae.MASTERNO = opSeae.BSNO; opSeae.MBLNO = orderMain; opSeae.OP = opUser.SHOWNAME; opSeae.INPUTBY = opUser.SHOWNAME; opSeae.CORPID = Corpid; opSeae.ETD = ETD; opSeae.CREATETIME = DateTime.Now; opSeae.ISCANCEL = "0"; opSeae.BSDATE = DateTime.Today; opSeae.BSSTATUS = false; opSeae.FEESTATUS = false; opSeae.ACCDATE = ETD.ToString("yyyy-MM"); opSeae.BLTYPE = "整箱"; if (!string.IsNullOrEmpty(ClientName)) { var custEdi = dS7Data.CodeCustEdi.AsNoTracking().FirstOrDefault(x => x.EDINAME == "DJY_OUTPUT" && x.EDICODE == ClientName); if (custEdi != null) { opSeae.CUSTOMERNAME = custEdi.CUST; } } //生成编号 var billnoset = dS7Data.SysBillNoSet.AsNoTracking().FirstOrDefault(x => x.COMPANYID == Corpid && x.OPLBNAME == "海运出口" && x.RULEBLNO == "委托编号"); if (billnoset != null) { opSeae.CUSTNO = GetBillNo(billnoset, opSeae.ETD.ToString(), opSeae.ACCDATE, opname: opUser.SHOWNAME, corpid: Corpid); } else { logger.Debug($"SysBillNoSet数据未找到,无法生成编号:{orderMain}"); } } else { logger.Debug($"委托数据已存在:{orderMain}"); } InfoClient infoClient = null; if (!string.IsNullOrEmpty(opSeae.CUSTOMERNAME)) { infoClient = dS7Data.InfoClient.AsNoTracking().FirstOrDefault(x => x.SHORTNAME == opSeae.CUSTOMERNAME); if (infoClient != null) { opSeae.SALE = infoClient.SALE; //揽货人赋值 //查询配置,生成应收 var fee = dS7Data.CustFeeTemplateDetail.AsNoTracking().FirstOrDefault(x => x.CUSTOMERNAME == infoClient.SHORTNAME && x.FEENAME == "报关费"); if (fee != null) { var feeShou = new ChFee(); feeShou.GID = Guid.NewGuid().ToString().Replace("-", ""); feeShou.BSNO = opSeae.BSNO; feeShou.FEETYPE = 1; feeShou.FEENAME = "报关费"; 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-31,要求状态为审核通过状态:0 //2021-12-31,要求下列字段不能为空,填写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.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,于菲:同样赋值单价和金额 //将分单号写入备注 if (!string.IsNullOrEmpty(orderSub)) { feeShou.REMARK += $" {orderSub} "; } dS7Data.ChFee.Add(feeShou); } } } //dS7Data.Database.Log = (x => { logger.Debug(x); }); dS7Data.SaveChanges(); } } //报关数据生成到东胜7(报关模块) public void BgDataToDS7(JArray jarr) { var opUser = dS7Data.User.AsNoTracking().First(u => u.GID == FeeInputUserId); foreach (var item in jarr) { var obj = item as JObject; var customsNo = obj.GetStringValue("CustomsNo"); var shipOrderNo = obj.GetStringValue("ShipOrderNo"); var shipOrderNoMain = obj.GetStringValue("ShipOrderNoMain"); var ClientName = obj.GetStringValue("ClientName"); var ETD = DateTime.Today; var CompId = obj.GetStringValue("CompId"); var trafName = obj.GetStringValue("TrafName"); var VoyNo = obj.GetStringValue("VoyNo"); var DistinatePort = obj.GetStringValue("DistinatePort"); var SignDate = obj.GetStringValue("SignDate"); var TradeCountry = obj.GetStringValue("TradeCountry"); var TradeName = obj.GetStringValue("TradeName"); var PackNo = obj.GetIntValue("PackNo"); var GrossWet = obj.GetDecimalValue("GrossWet"); var NetWt = obj.GetDecimalValue("NetWt"); var ContrNo = obj.GetStringValue("ContrNo"); var SeqNo = obj.GetStringValue("SeqNo"); var TrafMode = obj.GetStringValue("TrafMode"); //区分主单、分单号 var orderMain = string.Empty; var orderSub = string.Empty; if (string.IsNullOrEmpty(shipOrderNoMain)) { orderMain = shipOrderNo; } else if (shipOrderNoMain == shipOrderNo) { orderMain = shipOrderNo; } else { orderMain = shipOrderNoMain; orderSub = shipOrderNo; } OpApply opApply = dS7Data.OpApply.AsNoTracking().FirstOrDefault(x => x.MBLNO == orderMain && (x.HBLNO == null || x.HBLNO == "")); if (opApply == null) { logger.Debug($"未找到报关数据:{orderMain}"); opApply = new OpApply(); dS7Data.OpApply.Add(opApply); opApply.BSNO = Guid.NewGuid().ToString().Replace("-", ""); opApply.MASTERNO = opApply.BSNO; opApply.MBLNO = orderMain; opApply.OP = opUser.SHOWNAME; opApply.INPUTBY = opUser.SHOWNAME; opApply.CORPID = Corpid; opApply.ETD = ETD.ToString("yyyy-MM-dd"); opApply.CUSTOMNO = customsNo; opApply.VESSEL = trafName; opApply.BSDATE = DateTime.Today; opApply.BSSTATUS = false; opApply.FEESTATUS = false; opApply.ACCDATE = ETD.ToString("yyyy-MM"); opApply.VOYNO = VoyNo; opApply.PORTDISCHARGE = DistinatePort; opApply.CUSTOMDATE = $"{SignDate.Substring(0, 4)}-{SignDate.Substring(4, 2)}-{SignDate.Substring(6, 2)}"; opApply.ARCOUNTRY = TradeCountry; opApply.ENTERP = TradeName; opApply.PKGS = PackNo; opApply.KGS = GrossWet; opApply.NETWEIGHT = NetWt; opApply.CONTRACTNO = ContrNo; opApply.CUSCIQNO = SeqNo; opApply.BSTYPE = TrafMode; opApply.OPDATE = DateTime.Now.ToString("yyyy-MM-dd"); opApply.CBM = 0; opApply.IsService1 = string.Empty; opApply.IsService2 = string.Empty; opApply.IsService3 = string.Empty; opApply.IsService4 = string.Empty; opApply.IsService5 = string.Empty; opApply.IsService6 = string.Empty; opApply.IsService7 = string.Empty; opApply.IsService8 = string.Empty; if (!string.IsNullOrEmpty(ClientName)) { var custEdi = dS7Data.CodeCustEdi.AsNoTracking().FirstOrDefault(x => x.EDINAME == "DJY_OUTPUT" && x.EDICODE == ClientName); if (custEdi != null) { opApply.CUSTOMERNAME = custEdi.CUST; } } //生成编号 var billnoset = dS7Data.SysBillNoSet.AsNoTracking().FirstOrDefault(x => x.COMPANYID == Corpid && x.OPLBNAME == "报关业务" && x.RULEBLNO == "委托编号"); if (billnoset != null) { opApply.CUSTNO = GetBillNo(billnoset, opApply.ETD.ToString(), opApply.ACCDATE, opname: opUser.SHOWNAME, corpid: Corpid); } else { logger.Debug($"SysBillNoSet数据未找到,无法生成编号:{orderMain}"); } } else { logger.Debug($"报关数据已存在:{orderMain}"); } InfoClient infoClient = null; if (!string.IsNullOrEmpty(opApply.CUSTOMERNAME)) { infoClient = dS7Data.InfoClient.AsNoTracking().FirstOrDefault(x => x.SHORTNAME == opApply.CUSTOMERNAME); if (infoClient != null) { opApply.SALE = infoClient.SALE; //揽货人赋值 //查询配置,生成应收 var fee = dS7Data.CustFeeTemplateDetail.AsNoTracking().FirstOrDefault(x => x.CUSTOMERNAME == infoClient.SHORTNAME && x.FEENAME == "报关费"); if (fee != null) { var feeShou = new ChFee(); feeShou.GID = Guid.NewGuid().ToString().Replace("-", ""); feeShou.BSNO = opApply.BSNO; feeShou.FEETYPE = 1; feeShou.FEENAME = "报关费"; 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; //下列字段不能为空,填写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.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;//赋值单价和金额 feeShou.NOTAXAMOUNT = fee.UNITPRICE;//赋值单价和金额 //将分单号写入备注 if (!string.IsNullOrEmpty(orderSub)) { feeShou.REMARK += $" {orderSub} "; } dS7Data.ChFee.Add(feeShou); } } } //dS7Data.Database.Log = (x => { logger.Debug(x); }); var errs = dS7Data.GetValidationErrors().ToList(); if (errs.Count > 0) { foreach (var err in errs) { foreach (var ee in err.ValidationErrors) { logger.Error($"验证失败:{ee.PropertyName} {ee.ErrorMessage}"); } } } else { dS7Data.SaveChanges(); } } } /// /// 生成编号(从东胜7移植并修改) /// /// /// /// /// /// /// /// /// 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 paramArray = new List(); //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(cmd).First(); } /// /// 获取用户code(参考东胜7修改) /// /// /// /// 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("select CODENAME from [user] where SHOWNAME='" + username + "'").FirstOrDefault(); } /// /// 获取公司code(参考东胜7修改) /// /// /// /// 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("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(DS7ConnStr)) { 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; } } } } } }