diff --git a/ds-wms-service/DS.WMS.Core/Op/EDI/InttraEdiHelper.cs b/ds-wms-service/DS.WMS.Core/Op/EDI/InttraEdiHelper.cs
index b214b77e..a9750168 100644
--- a/ds-wms-service/DS.WMS.Core/Op/EDI/InttraEdiHelper.cs
+++ b/ds-wms-service/DS.WMS.Core/Op/EDI/InttraEdiHelper.cs
@@ -328,8 +328,14 @@ namespace DS.WMS.Core.Op.EDI
if (string.IsNullOrEmpty(headData.OpEmail))
{ error = error + "
操作的邮箱不能为空"; }
}
- if (string.IsNullOrEmpty(headData.MBLNO))
- { error = error + "
主提单号不能为空"; }
+
+ //截单时必需校验提单号,订舱时CMA可以不校验提单号必填
+ if (InttrEdi.filetype == "E" || (InttrEdi.filetype == "B" && (headData.CARRIEREDICODE != "HLCU" && headData.CARRIEREDICODE != "CMDU" && headData.CARRIEREDICODE != "CHNL")))
+ {
+ if (string.IsNullOrEmpty(headData.MBLNO))
+ { error = error + "
主提单号不能为空"; }
+ }
+
if (string.IsNullOrEmpty(headData.BLFRT))
{ error = error + "
提单号:" + headData.MBLNO + " 付费方式不能为空"; }
@@ -359,12 +365,14 @@ namespace DS.WMS.Core.Op.EDI
}
- if (string.IsNullOrEmpty(headData.VESSEL))
- { error = error + "
提单号:" + headData.MBLNO + " 船名不能为空"; }
-
- if (string.IsNullOrEmpty(headData.VOYNO))
- { error = error + "
提单号:" + headData.MBLNO + " 航次不能为空"; }
+ if (InttrEdi.filetype == "E")
+ {
+ if (string.IsNullOrEmpty(headData.VESSEL))
+ { error = error + "
提单号:" + headData.MBLNO + " 船名不能为空"; }
+ if (string.IsNullOrEmpty(headData.VOYNO))
+ { error = error + "
提单号:" + headData.MBLNO + " 航次不能为空"; }
+ }
if (InttrEdi.filetype == "E")
{
if (headData.SIREMARK.IndexOf("PLEASE BOOK OCEAN CARRIER") > -1 || headData.SIREMARK.ToString().Trim() == "")
@@ -417,32 +425,79 @@ namespace DS.WMS.Core.Op.EDI
{ error = error + "
提单号:" + headData.MBLNO + " 船公司EDI代码不能为空"; }
- if (string.IsNullOrEmpty(headData.SHIPPER))
+ //CMA 订舱时,发货人可以不填
+ if (InttrEdi.filetype.Equals("B", StringComparison.OrdinalIgnoreCase) && headData.CARRIEREDICODE.Equals("CMDU", StringComparison.OrdinalIgnoreCase))
{
- error = error + "
提单号:" + headData.MBLNO + " 发货人不能为空";
+ if (!string.IsNullOrWhiteSpace(headData.SHIPPER))
+ {
+ if (StringIsChinese(headData.SHIPPER))
+ {
+ error = error + "
提单号:" + headData.MBLNO + " 发货人含有中文或双字节字符";
+ }
+ else
+ {
+ if (headData.CARRIEREDICODE == "HLCU")
+ {
+ error += formatlengthError("txt", headData.SHIPPER, 35, headData.MBLNO, "发货人", 6, "-", false);
+ }
+ else
+ {
+ error += formatlengthError("txt", headData.SHIPPER, 35, headData.MBLNO, "发货人", 6, "*", false);
+ }
+ }
+ }
}
else
{
- if (StringIsChinese(headData.SHIPPER))
+ if (string.IsNullOrEmpty(headData.SHIPPER))
{
- error = error + "
提单号:" + headData.MBLNO + " 发货人含有中文或双字节字符";
+ error = error + "
提单号:" + headData.MBLNO + " 发货人不能为空";
}
else
{
- if (headData.CARRIEREDICODE == "HLCU")
+ if (StringIsChinese(headData.SHIPPER))
{
- error += formatlengthError("txt", headData.SHIPPER, 35, headData.MBLNO, "发货人", 6, "-", false);
+ error = error + "
提单号:" + headData.MBLNO + " 发货人含有中文或双字节字符";
}
else
{
- error += formatlengthError("txt", headData.SHIPPER, 35, headData.MBLNO, "发货人", 6, "*", false);
+ if (headData.CARRIEREDICODE == "HLCU")
+ {
+ error += formatlengthError("txt", headData.SHIPPER, 35, headData.MBLNO, "发货人", 6, "-", false);
+ }
+ else
+ {
+ error += formatlengthError("txt", headData.SHIPPER, 35, headData.MBLNO, "发货人", 6, "*", false);
+ }
}
}
}
+
//}
- //改为截单时校验
- if (InttrEdi.filetype == "E")
+ //CMA 订舱时,收货人可以不填
+ if (InttrEdi.filetype.Equals("B", StringComparison.OrdinalIgnoreCase) && headData.CARRIEREDICODE.Equals("CMDU", StringComparison.OrdinalIgnoreCase))
+ {
+ if (!string.IsNullOrWhiteSpace(headData.CONSIGNEE))
+ {
+ if (StringIsChinese(headData.CONSIGNEE))
+ {
+ error = error + "
提单号:" + headData.MBLNO + " 收货人含有中文或双字节字符";
+ }
+ else
+ {
+ if (headData.CARRIEREDICODE == "HLCU")
+ {
+ error += formatlengthError("txt", headData.CONSIGNEE, 35, headData.MBLNO, "收货人", 6, "--", false);
+ }
+ else
+ {
+ error += formatlengthError("txt", headData.CONSIGNEE, 35, headData.MBLNO, "收货人", 6, "**", false);
+ }
+ }
+ }
+ }
+ else
{
if (string.IsNullOrEmpty(headData.CONSIGNEE))
{
@@ -498,8 +553,29 @@ namespace DS.WMS.Core.Op.EDI
}
}
- //改为截单时校验
- if (InttrEdi.filetype == "E")
+ //CMA 订舱时,通知人可以不填
+ if (InttrEdi.filetype.Equals("B", StringComparison.OrdinalIgnoreCase) && headData.CARRIEREDICODE.Equals("CMDU", StringComparison.OrdinalIgnoreCase))
+ {
+ if (!string.IsNullOrWhiteSpace(headData.NOTIFYPARTY))
+ {
+ if (StringIsChinese(headData.NOTIFYPARTY))
+ {
+ error = error + "
提单号:" + headData.MBLNO + " 通知人含有中文或双字节字符";
+ }
+ else
+ {
+ if (headData.CARRIEREDICODE == "HLCU")
+ {
+ error += formatlengthError("txt", headData.NOTIFYPARTY, 35, headData.MBLNO, "通知人", 6, "---", false);
+ }
+ else
+ {
+ error += formatlengthError("txt", headData.NOTIFYPARTY, 35, headData.MBLNO, "通知人", 6, "***", false);
+ }
+ }
+ }
+ }
+ else
{
if (string.IsNullOrEmpty(headData.NOTIFYPARTY))
{
@@ -527,26 +603,26 @@ namespace DS.WMS.Core.Op.EDI
}
}
}
+ }
- if (!string.IsNullOrEmpty(headData.NOTIFYPARTY2))
- {
- error += formatlengthError("txt", headData.NOTIFYPARTY2, 35, headData.MBLNO, "第二通知人", 5, "", false);
- }
+ if (!string.IsNullOrEmpty(headData.NOTIFYPARTY2))
+ {
+ error += formatlengthError("txt", headData.NOTIFYPARTY2, 35, headData.MBLNO, "第二通知人", 5, "", false);
+ }
- if (string.IsNullOrEmpty(headData.MARKS))
+ if (string.IsNullOrEmpty(headData.MARKS))
+ {
+ error = error + "
提单号:" + headData.MBLNO + " 唛头不能为空";
+ }
+ else
+ {
+ if (StringIsChinese(headData.MARKS))
{
- error = error + "
提单号:" + headData.MBLNO + " 唛头不能为空";
+ error = error + "
提单号:" + headData.MBLNO + " 唛头含有中文或双字节字符";
}
else
{
- if (StringIsChinese(headData.MARKS))
- {
- error = error + "
提单号:" + headData.MBLNO + " 唛头含有中文或双字节字符";
- }
- else
- {
- error += formatlengthError("txt", headData.MARKS, 35, headData.MBLNO, "唛头", 0, "", false);
- }
+ error += formatlengthError("txt", headData.MARKS, 35, headData.MBLNO, "唛头", 0, "", false);
}
}
@@ -770,7 +846,7 @@ namespace DS.WMS.Core.Op.EDI
#region 订舱
public static EdiDataResult CreateEdiINTTR(EDIBaseModel InttrEdi)
{
- EdiDataResult result = new EdiDataResult { Succeeded = false };
+ var result = new EdiDataResult { Succeeded = false };
string filename = InttrEdi.filerpath + "\\" + InttrEdi.BSLIST[0].MBLNO + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".txt";
@@ -790,10 +866,10 @@ namespace DS.WMS.Core.Op.EDI
{
bsno = bill.ORDERNO;
r.WriteLine("UNB+UNOC:2+" + InttrEdi.SENDCODE + "SO:ZZZ+" + InttrEdi.RECEIVECODE + ":ZZZ+" + DateTime.Now.ToString("yyMMdd:HHmm") + "+" + bill.ORDERNO + "'");
- r.WriteLine("UNH+" + bill.ORDERNO + "+IFTMBF:D:99B:UN'");
+ r.WriteLine("UNH+" + bill.ORDERNO + "+IFTMIN:D:99B:UN'");
icount = icount + 2;
- if (bill.CARRIEREDICODE == "HLCU")
+ if (bill.CARRIEREDICODE == "HLCU" || bill.CARRIEREDICODE == "CMDU" || bill.CARRIEREDICODE == "CHNL")
{
if (InttrEdi.filerole == "9")
r.WriteLine("BGM+335+" + bill.ORDERNO + "SO+9'");
@@ -834,6 +910,9 @@ namespace DS.WMS.Core.Op.EDI
r.WriteLine("TSR+30+2'");
}
+ //2024-05-22 少了一行计数追加上 JHQ
+ //icount = icount + 1;
+
var str_pay = "";
if (bill.BLFRT.IndexOf("PREPAID") >= 0)
str_pay = bill.PREPARDAT;
@@ -937,7 +1016,7 @@ namespace DS.WMS.Core.Op.EDI
}
}
- if (bill.CARRIEREDICODE != "COSU")
+ if (bill.CARRIEREDICODE != "COSU" && !string.IsNullOrWhiteSpace(bill.MBLNO))
{
if (bill.CARRIEREDICODE == "HLCU")
{
@@ -951,6 +1030,7 @@ namespace DS.WMS.Core.Op.EDI
}
icount = icount + 2;
}
+
r.WriteLine("RFF+CT:" + bill.CONTRACTNO + "'");
if (bill.BLFRT.IndexOf("PREPAID") >= 0)
@@ -1271,6 +1351,7 @@ namespace DS.WMS.Core.Op.EDI
else
r.WriteLine("NAD+FW+++" + formatEdiStr("txt", bill.WEITUO) + "'");
+ icount = icount + 1;
}
else
{
@@ -1278,7 +1359,7 @@ namespace DS.WMS.Core.Op.EDI
if (InttrEdi.UseForWarderCode)
{
r.WriteLine("NAD+FW+" + InttrEdi.ForWarderCode + ":160:86++" + InttrEdi.ForWarderName + "'");
- icount++;
+ icount = icount + 1;
}
else
{
@@ -1286,6 +1367,8 @@ namespace DS.WMS.Core.Op.EDI
r.WriteLine("NAD+FW+" + InttrEdi.SENDCODE + ":160:86++" + InttrEdi.SENDNAME.Substring(0, 35) + "+" + InttrEdi.SENDNAME.Substring(35) + "'");
else
r.WriteLine("NAD+FW+" + InttrEdi.SENDCODE + ":160:86++" + InttrEdi.SENDNAME + "'");
+
+ icount = icount + 1;
}
}
@@ -1456,9 +1539,6 @@ namespace DS.WMS.Core.Op.EDI
r.Close();
f.Close();
- //result.succ = true;
- //result.extra = filename;
- //return result;
result.Succeeded = true;
result.ExtraData1 = filename;
return result;
diff --git a/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportBookingOrClosingEDIService.cs b/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportBookingOrClosingEDIService.cs
index 03fffc19..aa3a83bb 100644
--- a/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportBookingOrClosingEDIService.cs
+++ b/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportBookingOrClosingEDIService.cs
@@ -1202,11 +1202,18 @@ namespace DS.WMS.Core.Op.Method
}
#endregion
+ string needMappingModule = string.Empty;
+
+ if (ediRouteEnum == EDIRouteEnum.INTTRA)
+ {
+ needMappingModule = "INTTRA_EDI";
+ }
+
#region 卸货港
//卸货港
if (order.DischargePortId > 0)
{
- var portRlt = GetPortEDICode(order.DischargePortId, portList, mapPortList, order.CarrierId, CONST_MAPPING_MODULE, order.DischargePort, "卸货港");
+ var portRlt = GetPortEDICode(order.DischargePortId, portList, mapPortList, order.CarrierId, CONST_MAPPING_MODULE, order.DischargePort, "卸货港", needMappingModule);
if (portRlt.Succeeded)
primaryModel.PORTDISCHARGEID = portRlt.Data;
@@ -1217,7 +1224,7 @@ namespace DS.WMS.Core.Op.Method
//中转港
if (order.TransPortId > 0)
{
- var portRlt = GetPortEDICode(order.TransPortId, portList, mapPortList, order.CarrierId, CONST_MAPPING_MODULE, order.TransPort, "中转港");
+ var portRlt = GetPortEDICode(order.TransPortId, portList, mapPortList, order.CarrierId, CONST_MAPPING_MODULE, order.TransPort, "中转港", needMappingModule);
if (portRlt.Succeeded)
primaryModel.TRANSPORTID = portRlt.Data;
@@ -1228,7 +1235,7 @@ namespace DS.WMS.Core.Op.Method
//交货地
if (order.DeliveryPlaceId > 0)
{
- var portRlt = GetPortEDICode(order.DeliveryPlaceId, portList, mapPortList, order.CarrierId, CONST_MAPPING_MODULE, order.DeliveryPlace, "交货地");
+ var portRlt = GetPortEDICode(order.DeliveryPlaceId, portList, mapPortList, order.CarrierId, CONST_MAPPING_MODULE, order.DeliveryPlace, "交货地", needMappingModule);
if (portRlt.Succeeded)
primaryModel.PLACEDELIVERYID = portRlt.Data;
@@ -1242,7 +1249,7 @@ namespace DS.WMS.Core.Op.Method
//目的地
if (order.DeliveryPlaceId > 0)
{
- var portRlt = GetPortEDICode(order.DeliveryPlaceId, portList, mapPortList, order.CarrierId, CONST_MAPPING_MODULE, order.DischargePort, "目的地");
+ var portRlt = GetPortEDICode(order.DeliveryPlaceId, portList, mapPortList, order.CarrierId, CONST_MAPPING_MODULE, order.DischargePort, "交货地", needMappingModule);
if (portRlt.Succeeded)
primaryModel.DESTINATIONID = portRlt.Data;
@@ -1255,7 +1262,7 @@ namespace DS.WMS.Core.Op.Method
//目的地
if (order.DestinationId > 0)
{
- var portRlt = GetPortEDICode(order.DestinationId, portList, mapPortList, order.CarrierId, CONST_MAPPING_MODULE, order.DischargePort, "目的地");
+ var portRlt = GetPortEDICode(order.DestinationId, portList, mapPortList, order.CarrierId, CONST_MAPPING_MODULE, order.DischargePort, "目的地", needMappingModule);
if (portRlt.Succeeded)
primaryModel.DESTINATIONID = portRlt.Data;
@@ -1268,7 +1275,7 @@ namespace DS.WMS.Core.Op.Method
//到付地点
if (order.PayableAtId > 0)
{
- var portRlt = GetPortEDICode(order.PayableAtId, portList, mapPortList, order.CarrierId, CONST_MAPPING_MODULE, order.PayableAt, "到付地点");
+ var portRlt = GetPortEDICode(order.PayableAtId, portList, mapPortList, order.CarrierId, CONST_MAPPING_MODULE, order.PayableAt, "到付地点", needMappingModule);
if (portRlt.Succeeded)
primaryModel.PAYABLEATID = portRlt.Data;
@@ -2413,9 +2420,11 @@ namespace DS.WMS.Core.Op.Method
/// 模块代码
/// 港口名称
/// 港口分类(装货港、卸货港、交货地等)
+ /// 是否必需用映射
///
///
- private DataResult GetPortEDICode(long portId,List codePortList,List mapPortList, long carrierId, string moduleName,string portName,string portCategory)
+ private DataResult GetPortEDICode(long portId,List codePortList,List mapPortList, long carrierId, string moduleName,
+ string portName,string portCategory,string needMappingModule = "")
{
//如果历史港口映射有记录直接返回
if (mapPortList.Any(a => a.LinkId == portId))
@@ -2430,8 +2439,15 @@ namespace DS.WMS.Core.Op.Method
var tenantDb = saasService.GetBizDbScopeById(user.TenantId);
+ string MappingModule = CONST_MAPPING_MODULE;
+
+ if (!string.IsNullOrWhiteSpace(needMappingModule))
+ {
+ MappingModule = needMappingModule;
+ }
+
var mapPortInfo = tenantDb.Queryable()
- .First(a => a.Module.Equals(CONST_MAPPING_MODULE, StringComparison.OrdinalIgnoreCase) && a.CarrierId == carrierId && a.LinkId == portId);
+ .First(a => a.Module.Equals(MappingModule, StringComparison.OrdinalIgnoreCase) && a.CarrierId == carrierId && a.LinkId == portId);
if (mapPortInfo != null)
{
@@ -2442,6 +2458,11 @@ namespace DS.WMS.Core.Op.Method
return DataResult.FailedData(mapPortInfo.MapCode);
}
+ else
+ {
+ if (!string.IsNullOrWhiteSpace(needMappingModule))
+ throw new Exception($"{portCategory} {portName} 未配置模块{needMappingModule} 映射");
+ }
if (codePortList.Any(a => a.Id == portId))
{
diff --git a/ds-wms-service/DS.WMS.OpApi/DS.WMS.OpApi.csproj.user b/ds-wms-service/DS.WMS.OpApi/DS.WMS.OpApi.csproj.user
index 21e5222f..da141c5a 100644
--- a/ds-wms-service/DS.WMS.OpApi/DS.WMS.OpApi.csproj.user
+++ b/ds-wms-service/DS.WMS.OpApi/DS.WMS.OpApi.csproj.user
@@ -1,7 +1,7 @@
- D:\Code\ds8-solution-pro\ds-wms-service\DS.WMS.OpApi\Properties\PublishProfiles\FolderProfile.pubxml
+ E:\MyCode\Dongsheng8\ds-wms-service\DS.WMS.OpApi\Properties\PublishProfiles\FolderProfile.pubxml
MvcControllerEmptyScaffolder
root/Common/MVC/Controller