jianghaiqing 4 months ago
commit c5ea9cb4c7

@ -595,5 +595,10 @@ namespace Myshipping.Application
/// CNPTNo /// CNPTNo
/// </summary> /// </summary>
public string CNPTNo { get; set; } public string CNPTNo { get; set; }
/// <summary>
/// CUSTNAME
/// </summary>
public string CUSTNAME { get; set; }
} }
} }

@ -0,0 +1,621 @@
using DocumentFormat.OpenXml.ExtendedProperties;
using Google.Protobuf.WellKnownTypes;
using Myshipping.Application.EDI.ESL;
using MySqlX.XDevAPI.Common;
using Newtonsoft.Json;
using NPOI.Util;
using StackExchange.Profiling.Internal;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace Myshipping.Application.EDI.SITC
{
public class SITCEdiHelper
{
public SITCEdiHelper()
{
}
#region 基本函数
#endregion
#region 检查
public static string IsCreateSITCEDI(EDIBaseModel InttrEdi)
{
var error = "";
if (InttrEdi.filerole == "E")
{
error = error + "<br />SITC接口只支持订舱不能截单";
}
foreach (var bill in InttrEdi.BSLIST)
{
}
return error;
}
#endregion
#region 生成报文(订舱(filetype=="B"),截单(filetype=="E"))
public static CommonWebApiResult CreateEdiSITC(EDIBaseModel InttrEdi)
{
CommonWebApiResult result = new CommonWebApiResult { succ = false };
string dir = InttrEdi.filerpath + "\\" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + "\\";
//如果是部署linux需要修改路径
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
dir = dir.Replace("\\", "/");
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
string filename = dir + InttrEdi.BSLIST[0].ORDERNO + ".json";
FileStream f = new FileStream(filename, FileMode.Create);
StreamWriter r = new StreamWriter(f, Encoding.Default);
SitcApiPostModel postModel = new SitcApiPostModel();
postModel.consignorCustName = InttrEdi.BSLIST[0].CUSTNAME;
postModel.polId = InttrEdi.BSLIST[0].PORTLOADID;
postModel.polName = InttrEdi.BSLIST[0].PORTLOAD;
postModel.podId = InttrEdi.BSLIST[0].PORTDISCHARGEID;
postModel.podName = InttrEdi.BSLIST[0].PORTDISCHARGE;
postModel.deliveryId = InttrEdi.BSLIST[0].PLACEDELIVERYID;
postModel.deliveryName = InttrEdi.BSLIST[0].PLACEDELIVERY;
postModel.porId = InttrEdi.BSLIST[0].PLACERECEIPTID;
postModel.porName = InttrEdi.BSLIST[0].PLACERECEIPT;
postModel.poWtatName = InttrEdi.BSLIST[0].TRANSPORT;
postModel.vesselName = InttrEdi.BSLIST[0].VESSEL;
postModel.lineCode = InttrEdi.BSLIST[0].ESLLINECODE;
postModel.voyNo = InttrEdi.BSLIST[0].VOYNO;
postModel.etd = InttrEdi.BSLIST[0].ETD;
postModel.eta = InttrEdi.BSLIST[0].ETA;
postModel.consigneeName = InttrEdi.BSLIST[0].CONSIGNEE;
//postModel.consigneeAddr = InttrEdi.BSLIST[0].CONSIGNEEADDR;
//postModel.consigneeFax = InttrEdi.BSLIST[0].CONSIGNEEFAX;
//postModel.consigneeTel = InttrEdi.BSLIST[0].CONSIGNEETEL;
//postModel.consigneeBsCode = InttrEdi.BSLIST[0].CONSIGNEEBSCODE;
//postModel.consigneeEmail = InttrEdi.BSLIST[0].CONSIGNEEEMAIL;
postModel.consignorName = InttrEdi.BSLIST[0].SHIPPER;
//postModel.consignorAddr = InttrEdi.BSLIST[0].CONSIGNORADDR;
//postModel.consignorFax = InttrEdi.BSLIST[0].CONSIGNORFAX;
//postModel.consignorTel = InttrEdi.BSLIST[0].CONSIGNORTEL;
//postModel.consignorBsCode = InttrEdi.BSLIST[0].CONSIGNORBSCODE;
//postModel.consignorEmail = InttrEdi.BSLIST[0].CONSIGNOREMAIL;
postModel.notifyName = InttrEdi.BSLIST[0].NOTIFYPARTY;
//postModel.notifyAddr = InttrEdi.BSLIST[0].NOTIFYADDR;
//postModel.notifyFax = InttrEdi.BSLIST[0].NOTIFYFAX;
//postModel.notifyTel = InttrEdi.BSLIST[0].NOTIFYTEL;
//postModel.notifyBsCode = InttrEdi.BSLIST[0].NOTIFYBSCODE;
//postModel.notifyEmail = InttrEdi.BSLIST[0].NOTIFYEMAIL;
postModel.movementType = InttrEdi.BSLIST[0].SERVICE;
postModel.weight = InttrEdi.BSLIST[0].KGS;
postModel.cube = InttrEdi.BSLIST[0].CBM;
postModel.packages = InttrEdi.BSLIST[0].PKGS;
postModel.packingType = InttrEdi.BSLIST[0].KINDPKGS;
postModel.packageDesc = InttrEdi.BSLIST[0].KINDPKGS;
postModel.marks = InttrEdi.BSLIST[0].MARKS;
postModel.cargoDesc = InttrEdi.BSLIST[0].DESCRIPTION;
postModel.cargoType = CargoIdStr(InttrEdi.BSLIST[0].CARGOID);
postModel.isDanger = InttrEdi.BSLIST[0].CARGOID == "D" ? true : false;
postModel.isRf = InttrEdi.BSLIST[0].CARGOID == "R" ? true : false;
postModel.contactInfo = InttrEdi.BSLIST[0].OpEmail;
postModel.remark = InttrEdi.BSLIST[0].EDIREMARK;
postModel.payTerm = InttrEdi.BSLIST[0].BLFRT;
postModel.containers = new List<SitcApiPostModelContainer>();
foreach (var container in InttrEdi.BSLIST[0].CTNLIST)
{
SitcApiPostModelContainer c = new SitcApiPostModelContainer();
c.ctnSize = container.CTNALLCODE.Substring(0, 2);
c.ctnType = container.CTNALLCODE.Substring(2, 2);
c.ctnNum = container.CTNNUM;
postModel.containers.Add(c);
}
if (InttrEdi.BSLIST[0].CARGOID == "R")
{
postModel.extras = new List<SitcApiPostModelExtra>();
SitcApiPostModelExtra e = new SitcApiPostModelExtra();
e.ctype = "RF";
e.tempMin = InttrEdi.BSLIST[0].TEMPMIN;
e.tempMax = InttrEdi.BSLIST[0].TEMPMAX;
e.tempSetting = InttrEdi.BSLIST[0].TEMPSET;
e.unit = "C";
e.humdity = InttrEdi.BSLIST[0].HUMIDITY;
e.vent = InttrEdi.BSLIST[0].REEFERF;
postModel.extras.Add(e);
}
if (InttrEdi.BSLIST[0].CARGOID == "D")
{
postModel.dangerInfo = new List<SitcApiPostModelDangerInfo>();
SitcApiPostModelDangerInfo d = new SitcApiPostModelDangerInfo();
d.classNo = InttrEdi.BSLIST[0].DCLASS;
//d.commodityChem = danger.COMMODITYCHEM;
//d.commodityTran = danger.COMMODITYTRAN;
//d.emergencyContact = danger.EMERGENCYCONTACT;
//d.emsNo = danger.EMSNO;
//d.flashPoint = danger.FLASHPOINT;
//d.flashUnit = danger.FLASHUNIT;
//d.grossWeight = danger.GROSSWEIGHT;
//d.isMpt = danger.ISMPT;
//d.labels = danger.LABELS;
//d.netWeight = danger.NETWEIGHT;
//d.nums = danger.NUMS;
//d.packageClass = danger.PACKAGECLASS;
//d.packageType = danger.PACKAGETYPE;
//d.packageName = danger.PACKAGENAME;
d.page = InttrEdi.BSLIST[0].DPAGE;
d.undgNo = InttrEdi.BSLIST[0].DUNNO;
//d.contactName = InttrEdi.BSLIST[0].;
//d.contactNum = InttrEdi.BSLIST[0].;
//d.packagingCode = danger.PACKAGINGCODE;
postModel.dangerInfo.Add(d);
}
string json = JsonConvert.SerializeObject(postModel);
r.Write(json);
r.Flush();
r.Close();
f.Close();
result.succ = true;
result.extra = filename;
result.extra2 = postModel;
return result;
}
#endregion
/// <summary>
/// 货物类型翻译
/// </summary>
/// <param name="cargoId"></param>
/// <returns></returns>
private static string CargoIdStr(string cargoId)
{
if (cargoId == "S")
{
return "ORDI";
}
else if (cargoId == "R")
{
return "REEF";
}
else if (cargoId == "D")
{
return "DNGR";
}
return "";
}
}
public class SitcApiPostModel
{
/// <summary>
/// 客户名称
/// </summary>
public string consignorCustName { get; set; }
/// <summary>
/// 启运港代码
/// </summary>
public string polId { get; set; }
/// <summary>
/// 启运港名称
/// </summary>
public string polName { get; set; }
/// <summary>
/// 目的港代码
/// </summary>
public string podId { get; set; }
/// <summary>
/// 目的港名称
/// </summary>
public string podName { get; set; }
/// <summary>
/// 交货地代码
/// </summary>
public string deliveryId { get; set; }
/// <summary>
/// 交货地名称
/// </summary>
public string deliveryName { get; set; }
/// <summary>
/// 收货地代码
/// </summary>
public string porId { get; set; }
/// <summary>
/// 收货地名称
/// </summary>
public string porName { get; set; }
/// <summary>
/// 中转港名称
/// </summary>
public string poWtatName { get; set; }
/// <summary>
/// 船名
/// </summary>
public string vesselName { get; set; }
/// <summary>
/// 航线
/// </summary>
public string lineCode { get; set; }
/// <summary>
/// 航次
/// </summary>
public string voyNo { get; set; }
/// <summary>
/// 离港时间
/// </summary>
public string etd { get; set; }
/// <summary>
/// 到港时间
/// </summary>
public string eta { get; set; }
/// <summary>
/// 收货人名称
/// </summary>
public string consigneeName { get; set; }
///// <summary>
///// 收货人地址
///// </summary>
//public string consigneeAddr { get; set; }
///// <summary>
///// 传真
///// </summary>
//public string consigneeFax { get; set; }
///// <summary>
///// 电话
///// </summary>
//public string consigneeTel { get; set; }
///// <summary>
///// 企业代码
///// </summary>
//public string consigneeBsCode { get; set; }
///// <summary>
///// 邮件
///// </summary>
//public string consigneeEmail { get; set; }
/// <summary>
/// 发货人名称
/// </summary>
public string consignorName { get; set; }
///// <summary>
///// 发货人地址
///// </summary>
//public string consignorAddr { get; set; }
///// <summary>
///// 传真
///// </summary>
//public string consignorFax { get; set; }
///// <summary>
///// 电话
///// </summary>
//public string consignorTel { get; set; }
///// <summary>
///// 企业代码
///// </summary>
//public string consignorBsCode { get; set; }
///// <summary>
///// 邮件
///// </summary>
//public string consignorEmail { get; set; }
/// <summary>
/// 通知人名称
/// </summary>
public string notifyName { get; set; }
///// <summary>
///// 通知人地址
///// </summary>
//public string notifyAddr { get; set; }
///// <summary>
///// 传真
///// </summary>
//public string notifyFax { get; set; }
///// <summary>
///// 电话
///// </summary>
//public string notifyTel { get; set; }
///// <summary>
///// 企业代码
///// </summary>
//public string notifyBsCode { get; set; }
///// <summary>
///// 邮件
///// </summary>
//public string notifyEmail { get; set; }
/// <summary>
/// 运输条款
/// </summary>
public string movementType { get; set; }
/// <summary>
/// 毛重
/// </summary>
public decimal weight { get; set; }
/// <summary>
/// 体积
/// </summary>
public decimal cube { get; set; }
/// <summary>
/// 件数
/// </summary>
public int packages { get; set; }
/// <summary>
/// 包装类型
/// </summary>
public string packingType { get; set; }
/// <summary>
/// 包装类型
/// </summary>
public string packageDesc { get; set; }
/// <summary>
/// 唛头
/// </summary>
public string marks { get; set; }
/// <summary>
/// 货物描述
/// </summary>
public string cargoDesc { get; set; }
/// <summary>
/// 货物类型
/// </summary>
public string cargoType { get; set; }
/// <summary>
/// 是否危险品
/// </summary>
public bool isDanger { get; set; }
/// <summary>
/// 是否冻柜
/// </summary>
public bool isRf { get; set; }
/// <summary>
/// 是否特种箱
/// </summary>
public bool isSpec { get; set; }
/// <summary>
/// 是否挂衣箱
/// </summary>
public bool isGoh { get; set; }
/// <summary>
/// 是否SOC
/// </summary>
public bool isSoc { get; set; }
/// <summary>
/// 联系信息
/// </summary>
public string contactInfo { get; set; }
/// <summary>
/// 委托备注
/// </summary>
public string remark { get; set; }
/// <summary>
/// 支付方式
/// </summary>
public string payTerm { get; set; }
/// <summary>
/// 委托类型
/// </summary>
public string blType { get; set; }
/// <summary>
/// 放单方式
/// </summary>
public string releaseModeMbl { get; set; }
/// <summary>
/// 箱信息
/// </summary>
public List<SitcApiPostModelContainer> containers { get; set; }
/// <summary>
/// 其它特殊货物信息
/// </summary>
public List<SitcApiPostModelExtra> extras { get; set; }
/// <summary>
/// 危险品信息
/// </summary>
public List<SitcApiPostModelDangerInfo> dangerInfo { get; set; }
}
public class SitcApiPostModelContainer
{
/// <summary>
/// 尺寸
/// </summary>
public string ctnSize { get; set; }
/// <summary>
/// 类型
/// </summary>
public string ctnType { get; set; }
/// <summary>
/// 数量
/// </summary>
public int ctnNum { get; set; }
}
public class SitcApiPostModelExtra
{
/// <summary>
/// 最高温度
/// </summary>
public string tempMax { get; set; }
/// <summary>
/// 最低温度
/// </summary>
public string tempMin { get; set; }
/// <summary>
/// 温度设置
/// </summary>
public string tempSetting { get; set; }
/// <summary>
/// 温度单位
/// </summary>
public string unit { get; set; }
/// <summary>
/// 湿度
/// </summary>
public string humdity { get; set; }
/// <summary>
/// 通风口
/// </summary>
public string vent { get; set; }
/// <summary>
/// 类型
/// </summary>
public string ctype { get; set; }
}
public class SitcApiPostModelDangerInfo
{
/// <summary>
/// 危险品等级
/// </summary>
public string classNo { get; set; }
/// <summary>
/// 化学品名
/// </summary>
public string commodityChem { get; set; }
/// <summary>
/// 运输品名
/// </summary>
public string commodityTran { get; set; }
/// <summary>
///
/// </summary>
public string emergencyContact { get; set; }
/// <summary>
/// 应急措施号
/// </summary>
public string emsNo { get; set; }
/// <summary>
/// 闪点
/// </summary>
public string flashPoint { get; set; }
/// <summary>
/// 闪电单位
/// </summary>
public string flashUnit { get; set; }
/// <summary>
/// 毛重
/// </summary>
public int grossWeight { get; set; }
/// <summary>
/// 是否海污
/// </summary>
public string isMpt { get; set; }
/// <summary>
/// 危险品标签
/// </summary>
public string labels { get; set; }
/// <summary>
/// 净重
/// </summary>
public int netWeight { get; set; }
/// <summary>
/// 件数
/// </summary>
public int nums { get; set; }
/// <summary>
/// 包装等级
/// </summary>
public string packageClass { get; set; }
/// <summary>
/// 包装类型
/// </summary>
public string packageType { get; set; }
/// <summary>
/// 包装名称
/// </summary>
public string packageName { get; set; }
/// <summary>
/// 危险品页号
/// </summary>
public string page { get; set; }
/// <summary>
/// 联合国编号
/// </summary>
public string undgNo { get; set; }
/// <summary>
/// 紧急联系人
/// </summary>
public string contactName { get; set; }
/// <summary>
/// 联系号码
/// </summary>
public string contactNum { get; set; }
/// <summary>
///
/// </summary>
public string packagingCode { get; set; }
}
}

@ -51,6 +51,10 @@ namespace Myshipping.Application
/// <summary> /// <summary>
/// INTTRA /// INTTRA
/// </summary> /// </summary>
INTTRA INTTRA,
/// <summary>
/// SITC
/// </summary>
SITC
} }
} }

@ -1280,7 +1280,23 @@ namespace Myshipping.Application
var dbOrder = await _repOrder.AsQueryable().Filter(null, true).FirstAsync(x => !x.IsDeleted && x.Id == recModel.Order.Id); var dbOrder = await _repOrder.AsQueryable().Filter(null, true).FirstAsync(x => !x.IsDeleted && x.Id == recModel.Order.Id);
if (dbOrder == null) if (dbOrder == null)
{ {
throw Oops.Bah($"未找到id为{recModel.Order.Id}的数据"); if (syncType == BookingOrderSyncTypeEnum.BC.ToString())
{
dbOrder = await _repOrder.AsQueryable().Filter(null, true).FirstAsync(x => x.IsDeleted && x.Id == recModel.Order.Id);
if (dbOrder == null)
{
throw Oops.Bah($"未找到id为{recModel.Order.Id}的数据");
}
else
{
dbOrder.IsDeleted = false;
_logger.LogInformation($"从已删除订单中找到:{recModel.Order.Id},恢复为未删除");
}
}
else
{
throw Oops.Bah($"未找到id为{recModel.Order.Id}的数据");
}
} }
if (!string.IsNullOrEmpty(dbOrder.MBLNO)) //提单号不覆盖 if (!string.IsNullOrEmpty(dbOrder.MBLNO)) //提单号不覆盖

@ -86,6 +86,7 @@ using Myshipping.Application.Service.BookingSlot.Dto;
using Myshipping.Application.Service.BookingOrder.Dto.MSKAPI; using Myshipping.Application.Service.BookingOrder.Dto.MSKAPI;
using Microsoft.AspNetCore.Routing.Template; using Microsoft.AspNetCore.Routing.Template;
using Myshipping.Application.EDI.SeaLead; using Myshipping.Application.EDI.SeaLead;
using Myshipping.Application.EDI.SITC;
namespace Myshipping.Application namespace Myshipping.Application
{ {
@ -7152,6 +7153,9 @@ namespace Myshipping.Application
//航线信息直接取的航司航线ESL用 //航线信息直接取的航司航线ESL用
primaryModel.ESLLINECODE = order.LANENAME; primaryModel.ESLLINECODE = order.LANENAME;
//客户名
primaryModel.CUSTNAME = order.CUSTOMERNAME;
//起始港映射 //起始港映射
var ediLoadPortList = _cache.GetAllMappingPortLoad().GetAwaiter().GetResult() var ediLoadPortList = _cache.GetAllMappingPortLoad().GetAwaiter().GetResult()
.Where(t => t.Module.Equals(CONST_MAPPING_MODULE, StringComparison.OrdinalIgnoreCase) .Where(t => t.Module.Equals(CONST_MAPPING_MODULE, StringComparison.OrdinalIgnoreCase)
@ -7694,6 +7698,15 @@ namespace Myshipping.Application
ediModel.BSLIST.Add(primaryModel); ediModel.BSLIST.Add(primaryModel);
//SITC
if (ediRouteEnum == EDIRouteEnum.SITC)
{
var user = await _repUser.FirstOrDefaultAsync(x => x.Id == UserManager.UserId);
primaryModel.OpEmail = $"{user.EnName};{(string.IsNullOrEmpty(user.Tel) ? user.Phone : user.Tel)};{UserManager.Email}";
}
var result = await InnerSendBookingOrClosingEDI(model, ediModel, ediRouteEnum); var result = await InnerSendBookingOrClosingEDI(model, ediModel, ediRouteEnum);
_logger.LogInformation("批次={no} 生成EDI文件完成 结果={result}", batchNo, JSON.Serialize(result)); _logger.LogInformation("批次={no} 生成EDI文件完成 结果={result}", batchNo, JSON.Serialize(result));
@ -7752,6 +7765,78 @@ namespace Myshipping.Application
{ {
sendStatus = await InnerSendBookingOrClosingEDIToPOST(result.extra.ToString(), postSpiderUrl, userWebAccountConfig); sendStatus = await InnerSendBookingOrClosingEDIToPOST(result.extra.ToString(), postSpiderUrl, userWebAccountConfig);
} }
else if (ediRouteEnum == EDIRouteEnum.SITC) //SITC走接口
{
sendStatus = new CommonWebApiResult();
var sysConfigs = await _cache.GetAllSysConfig();
var cfgAuthUrl = sysConfigs.FirstOrDefault(x => x.Code == "SITC_BOOK_API_AUTH_URL");
var cfgSendUrl = sysConfigs.FirstOrDefault(x => x.Code == "SITC_BOOK_API_SEND_URL");
var cfgAuthHeader = sysConfigs.FirstOrDefault(x => x.Code == "SITC_BOOK_API_AUTH_HEADER");
if (cfgAuthUrl == null || cfgSendUrl == null || cfgAuthHeader == null)
{
throw Oops.Bah($"SITC接口未配置");
}
//SITCBookApi
var webAcc = await _webAccountConfig.GetAccountConfig("SITCBookApi", UserManager.UserId);
if (webAcc == null)
{
throw Oops.Bah($"SITC接口账号密码未配置");
}
var dicAuth = new Dictionary<string, object> {
{ "username", webAcc.Account },
{ "password", webAcc.Password },
{ "grant_type", "password" }
};
_logger.LogInformation($"SITC接口调用{cfgAuthUrl.Value} {dicAuth.ToJson()},头信息:{cfgAuthHeader.Value}");
var rtn = await cfgAuthUrl.Value
.SetHeaders(new { Authorization = cfgAuthHeader.Value })
.SetBody(dicAuth, "application/x-www-form-urlencoded")
.PostAsStringAsync();
_logger.LogInformation($"SITC接口返回{rtn}");
var jRtn = JObject.Parse(rtn);
_logger.LogInformation($"SITC接口返回{rtn}");
if (jRtn.GetIntValue("code") == 200)
{
var token = jRtn.GetJObjectValue("data").GetStringValue("accessToken");
_logger.LogInformation($"调用SITC接口获取token{token}");
_logger.LogInformation($"SITC接口调用{cfgSendUrl.Value} {result.extra2.ToJson()}");
rtn = await cfgSendUrl.Value
.SetHeaders(new Dictionary<string, string> { { "Authorization", $"Bearer {token}" } })
.SetBody(result.extra2, "application/json")
.PostAsStringAsync();
jRtn = JObject.Parse(rtn);
_logger.LogInformation($"SITC接口返回{rtn}");
if (jRtn.GetIntValue("code") == 200)
{
var bkNO = jRtn.GetJObjectValue("data").GetStringValue("bkNo");
_logger.LogInformation($"SITC接口返回订舱编号{bkNO}");
order.CUSTNO = bkNO;
await _rep.AsUpdateable(order).UpdateColumns(x => new { x.CUSTNO }).ExecuteCommandAsync();
_logger.LogInformation($"更新订舱订单{order.Id}的CUSTNO={bkNO}");
sendStatus.succ = true;
sendStatus.msg = $"订舱成功";
}
else
{
sendStatus.succ = false;
sendStatus.msg = $"SITC接口调用失败{jRtn.GetJObjectValue("message")}";
}
}
else
{
sendStatus.succ = false;
sendStatus.msg = $"获取token失败{jRtn.GetJObjectValue("message")}";
}
}
else else
{ {
//是订舱并且FTP配置了订舱接收邮箱则触发邮箱发送 //是订舱并且FTP配置了订舱接收邮箱则触发邮箱发送
@ -7926,7 +8011,7 @@ namespace Myshipping.Application
{ {
SendTo = dto.SendTo, SendTo = dto.SendTo,
Title = dto.Title, Title = dto.Title,
Body = dto.Body, Body = dto.Body.Replace("\n","<br/>"),
CCTo= dto.CCTo, CCTo= dto.CCTo,
SmtpConfig = "", SmtpConfig = "",
Account=userMail.MailAccount, Account=userMail.MailAccount,
@ -9117,6 +9202,30 @@ namespace Myshipping.Application
result.succ = currRlt.succ; result.succ = currRlt.succ;
result.extra = currRlt.succ ? currRlt.extra.ToString() : ""; result.extra = currRlt.succ ? currRlt.extra.ToString() : "";
} }
else if (ediRouteEnum == EDIRouteEnum.SITC)
{
#region SITC
string strCheck = SITCEdiHelper.IsCreateSITCEDI(ediModel);
_logger.LogInformation($"调用SO(SI),校验:{strCheck},数据对象:{JsonConvert.SerializeObject(ediModel)}");
if (!string.IsNullOrWhiteSpace(strCheck))
{
if (Regex.IsMatch(strCheck, "\\<br\\s{1,}/\\>"))
{
strCheck = Regex.Replace(strCheck, "\\<br\\s{1,}/\\>", "\n");
}
throw Oops.Bah($"发送{EDIRouteEnum.SITC.ToString()}校验失败,{strCheck}");
}
var currRlt = SITCEdiHelper.CreateEdiSITC(ediModel);
#endregion
result.succ = currRlt.succ;
result.extra = currRlt.succ ? currRlt.extra : null;
result.extra2 = currRlt.succ ? currRlt.extra2 : null;
}
} }
catch (Exception ex) catch (Exception ex)
{ {

@ -60,5 +60,10 @@
/// 订舱台账显示退舱 /// 订舱台账显示退舱
/// </summary> /// </summary>
public const string BOOKING_LIST_SHOW_CANCEL = "BOOKING_LIST_SHOW_CANCEL"; public const string BOOKING_LIST_SHOW_CANCEL = "BOOKING_LIST_SHOW_CANCEL";
/// <summary>
/// ERP代码字段是否可编辑
/// </summary>
public const string ERP_CODE_CAN_EDIT = "ERP_CODE_CAN_EDIT";
} }
} }

@ -933,6 +933,11 @@
订舱台账显示退舱 订舱台账显示退舱
</summary> </summary>
</member> </member>
<member name="F:Myshipping.Core.Const.TenantParamCode.ERP_CODE_CAN_EDIT">
<summary>
ERP代码字段是否可编辑
</summary>
</member>
<member name="P:Myshipping.Core.Entity.CodeCarrier.Code"> <member name="P:Myshipping.Core.Entity.CodeCarrier.Code">
<summary> <summary>
代码 代码

@ -263,7 +263,7 @@ public class AuthService : IAuthService, IDynamicApiController, ITransient
// 返回前端需要使用的租户参数 // 返回前端需要使用的租户参数
var paraCodeArr = new string[] { TenantParamCode.ENABLE_SLOT_ABILITY, TenantParamCode.ENABLE_FEE_ABILITY, TenantParamCode.VESSEL_FROM_CONFIG_ONLY, var paraCodeArr = new string[] { TenantParamCode.ENABLE_SLOT_ABILITY, TenantParamCode.ENABLE_FEE_ABILITY, TenantParamCode.VESSEL_FROM_CONFIG_ONLY,
TenantParamCode.BOOKING_CHANNEL_SELECT_SHOW, TenantParamCode.BC_TASK_CREATE_ORDER,TenantParamCode.BOOKING_SUB_TENANT,TenantParamCode.DESCRIP_CAN_CHINESE, TenantParamCode.BOOKING_CHANNEL_SELECT_SHOW, TenantParamCode.BC_TASK_CREATE_ORDER,TenantParamCode.BOOKING_SUB_TENANT,TenantParamCode.DESCRIP_CAN_CHINESE,
TenantParamCode.BOOKING_LIST_SHOW_CANCEL}; TenantParamCode.BOOKING_LIST_SHOW_CANCEL,TenantParamCode.ERP_CODE_CAN_EDIT};
loginOutput.TenantParams = await _djyTenantParamService.GetParaCodeWithValue(paraCodeArr); loginOutput.TenantParams = await _djyTenantParamService.GetParaCodeWithValue(paraCodeArr);
//多账号关联 //多账号关联

Loading…
Cancel
Save