|
|
|
|
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.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 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}", true, 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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#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 custEdi = dS7Data.CodeCustEdi.AsNoTracking().FirstOrDefault(x => x.EDINAME == "DJY_OUTPUT" && x.EDICODE == WeiTuoFaSongFang);
|
|
|
|
|
if (custEdi != null)
|
|
|
|
|
{
|
|
|
|
|
费用标准结算对象 = custEdi.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];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 = CUSTOMERNAME,
|
|
|
|
|
CUSTOMERNAME2=WeiTuoFaSongFang,//20230313-大简云舱单界面的【委托发送方】录入东胜系统的实际客户,
|
|
|
|
|
//CARRIER
|
|
|
|
|
BSDATE = DateTime.Today,
|
|
|
|
|
ACCDATE = DateTime.Now.ToString("yyyy-MM"),
|
|
|
|
|
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
|
|
|
|
|
};
|
|
|
|
|
//,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();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//只要有对应的往来单位=委托发送方 主分单都产生相应的应收
|
|
|
|
|
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 == 费用标准结算对象 && 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;
|
|
|
|
|
|
|
|
|
|
feeShou.BXGID = HBLNO;
|
|
|
|
|
|
|
|
|
|
//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 = 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 = HBLNO;
|
|
|
|
|
|
|
|
|
|
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 = 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 = HBLNO;
|
|
|
|
|
|
|
|
|
|
dS7Data.ChFee.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(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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#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
|
|
|
|
|
}
|
|
|
|
|
}
|