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 decimal? 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 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 decimal? 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();
/*
2021-12-23最新需求:
按主提单号(MBLNO)在客户东胜系统查询,如果查到对应主提单号,则在该票业务下写入舱单费,如果有分单,每一票分单,也要生成一条舱单费,分单的舱单费,需要在费用备注里写入分提单号。
如果主提单号在东胜系统搜不到,则创建一条新业务,并按委托方生成舱单费。
*/
//OpSeae opSeae = dS7Data.OpSeae.AsNoTracking().FirstOrDefault(x => x.MBLNO == MBLNO && (x.HBLNO == null || x.HBLNO == ""));
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 = "";
if (op_other == null || op_other.BSNO == null || op_other.BSNO == "")
{
logger.Debug($"未找到委托数据:{MBLNO}");
var CUSTOMERNAME = "";
var custEdi = dS7Data.CodeCustEdi.AsNoTracking().FirstOrDefault(x => x.EDINAME == "DJY_OUTPUT" && x.EDICODE == WeiTuoFaSongFang);
if (custEdi != null)
{
CUSTOMERNAME = custEdi.CUST;
}
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();
}
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,
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,
SIZE = ctn.SIZE.ToString(),
CTN = ctn.CTN,
CTNNUM = ctn.CTNNUM,
TEU = ctn.TEU,
CTNALL = ctn.CTNALL,
SEALNO = ctn.CTNCODE,
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(op_other.CUSTOMERNAME))
{
infoClient = dS7Data.InfoClient.AsNoTracking().FirstOrDefault(x => x.SHORTNAME == op_other.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)) //主单才插入船代费用
{
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);
}
//不管主单分单都要付费给大简云
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;
}
}
}
}
}
}