|
@@ -5894,7 +5894,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
List<String> goodsDesc = RegularUtils.reformatEDIText(hmmSiDto.getGoodsDesc(), 70, true);
|
|
List<String> goodsDesc = RegularUtils.reformatEDIText(hmmSiDto.getGoodsDesc(), 70, true);
|
|
|
int descrLineCount = goodsDesc.size();
|
|
int descrLineCount = goodsDesc.size();
|
|
|
for (int l = 0; l < descrLineCount; l++) {
|
|
for (int l = 0; l < descrLineCount; l++) {
|
|
|
- String line = goodsMarks.get(l);
|
|
|
|
|
|
|
+ String line = goodsDesc.get(l);
|
|
|
if(line.trim().isEmpty()){
|
|
if(line.trim().isEmpty()){
|
|
|
line=".";
|
|
line=".";
|
|
|
}
|
|
}
|
|
@@ -7053,7 +7053,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 向文件写入数据
|
|
// 向文件写入数据
|
|
|
// 00 HEAD RECORD
|
|
// 00 HEAD RECORD
|
|
|
// 2=增加 3=删除 4=变更 9=原始
|
|
// 2=增加 3=删除 4=变更 9=原始
|
|
|
- writer.write("00:IFTMBF:BOOKING:9:" + voltaSoDto.getSenderCode() + ":HMM:" + voltaSoDto.getFileDate() + "'");
|
|
|
|
|
|
|
+ writer.write("00:IFTMBF:BOOKING:9:" + voltaSoDto.getSenderCode() + ":VOL:" + voltaSoDto.getFileDate() + "'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count++;
|
|
count++;
|
|
|
|
|
|
|
@@ -7063,7 +7063,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 运编号
|
|
// 运编号
|
|
|
writer.write(":" + voltaSoDto.getMblNo());
|
|
writer.write(":" + voltaSoDto.getMblNo());
|
|
|
// 提单号
|
|
// 提单号
|
|
|
- writer.write(":" + voltaSoDto.getMblNo());
|
|
|
|
|
|
|
+ writer.write(":" + voltaSoDto.getBookingNo());
|
|
|
// 交货条款 CY-CY(pier-pier/port):30
|
|
// 交货条款 CY-CY(pier-pier/port):30
|
|
|
//CY-CFS(pier/port-door): 29
|
|
//CY-CFS(pier/port-door): 29
|
|
|
//CFS-CY(door-pier/port): 28
|
|
//CFS-CY(door-pier/port): 28
|
|
@@ -7072,29 +7072,33 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 货代方企业名称
|
|
// 货代方企业名称
|
|
|
writer.write(":" + voltaSoDto.getSenderCode());
|
|
writer.write(":" + voltaSoDto.getSenderCode());
|
|
|
// 即接受订舱的人的代码 + 签单人说明 + 询价单位 + 国外订舱单位 + 转船标识 + 分批 + 装期 + 效期 + 运费协议号 + 费率本代码 + 服务合同号 + BOND NO + 舱位互用标识
|
|
// 即接受订舱的人的代码 + 签单人说明 + 询价单位 + 国外订舱单位 + 转船标识 + 分批 + 装期 + 效期 + 运费协议号 + 费率本代码 + 服务合同号 + BOND NO + 舱位互用标识
|
|
|
- writer.write(":HMM::::::::" + voltaSoDto.getCarrierArgreementNo() + "::"+voltaSoDto.getCorpArgreementNo()+"::'");
|
|
|
|
|
|
|
+ String s1 = ObjectUtils.isNotNull(voltaSoDto.getCarrierArgreementNo()) ? voltaSoDto.getCarrierArgreementNo() : voltaSoDto.getSenderCode();
|
|
|
|
|
+ writer.write(":VOL::::::::" + s1 + "::"+voltaSoDto.getCorpArgreementNo()+"::'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count++;
|
|
count++;
|
|
|
|
|
|
|
|
// 03 提单信息,不填
|
|
// 03 提单信息,不填
|
|
|
// 提单类型(ORI: BILL OF LADING EXP: WAYBILL) + 提单签发地代码 + 提单签发地 + 签发日期 + 正本提单份数 + 预付地点 + 到付地点
|
|
// 提单类型(ORI: BILL OF LADING EXP: WAYBILL) + 提单签发地代码 + 提单签发地 + 签发日期 + 正本提单份数 + 预付地点 + 到付地点
|
|
|
writer.write("03:::" + voltaSoDto.getIssuanceLand() + ":" + voltaSoDto.getIssueDate() + ":3:"
|
|
writer.write("03:::" + voltaSoDto.getIssuanceLand() + ":" + voltaSoDto.getIssueDate() + ":3:"
|
|
|
- + ("PP".equals(voltaSoDto.getMPayMode()) ? voltaSoDto.getMPayPlaceName() : "")
|
|
|
|
|
|
|
+ + ("PP".equals(voltaSoDto.getMPayMode()) ? voltaSoDto.getMPayPlaceName() : "") + ":"
|
|
|
+ ("CC".equals(voltaSoDto.getMPayMode()) ? voltaSoDto.getMPayPlaceName() : ""));
|
|
+ ("CC".equals(voltaSoDto.getMPayMode()) ? voltaSoDto.getMPayPlaceName() : ""));
|
|
|
// AMS Ams Tag AmsCode
|
|
// AMS Ams Tag AmsCode
|
|
|
// V_AMSPROP IF(AMSPROP='Y','Y',IF(AMSPROP='N','N',IF(AMSPROP='1',' ','')))
|
|
// V_AMSPROP IF(AMSPROP='Y','Y',IF(AMSPROP='N','N',IF(AMSPROP='1',' ','')))
|
|
|
- writer.write(":");
|
|
|
|
|
|
|
+ s1 = "Y".equals(voltaSoDto.getAMSProp()) ? "Y" : ("N".equals(voltaSoDto.getAMSProp()) ? "N" : ("1".equals(voltaSoDto.getAMSProp()) ? " " : ""));
|
|
|
|
|
+ writer.write(":" + s1);
|
|
|
|
|
|
|
|
// ACI Canada Aci
|
|
// ACI Canada Aci
|
|
|
// V_ACIPROP IF(ACIPROP='Y','Y',IF(ACIPROP='N','N',IF(ACIPROP='1',' ','')))
|
|
// V_ACIPROP IF(ACIPROP='Y','Y',IF(ACIPROP='N','N',IF(ACIPROP='1',' ','')))
|
|
|
// ACI NO VarChar(35)
|
|
// ACI NO VarChar(35)
|
|
|
- writer.write("::'");
|
|
|
|
|
|
|
+ s1 = "Y".equals(voltaSoDto.getACIProp()) ? "Y" : ("N".equals(voltaSoDto.getACIProp()) ? "N" : ("1".equals(voltaSoDto.getACIProp()) ? " " : ""));
|
|
|
|
|
+ writer.write(":" + s1 + "'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count++;
|
|
count++;
|
|
|
|
|
|
|
|
// 11 VESSEL 船舶信息
|
|
// 11 VESSEL 船舶信息
|
|
|
// 记录类型标识 + 船舶呼号 + 船名 + 航次 + 船舶经营人
|
|
// 记录类型标识 + 船舶呼号 + 船名 + 航次 + 船舶经营人
|
|
|
- writer.write("11:::::::::::"+voltaSoDto.getVesselCode()+":"+voltaSoDto.getVesselName()+":"+voltaSoDto.getVoyageNo()+"'");
|
|
|
|
|
|
|
+ // writer.write("11:::::::::::"+voltaSoDto.getVesselCode()+":"+voltaSoDto.getVesselName()+":"+voltaSoDto.getVoyageNo()+"'");
|
|
|
|
|
+ writer.write("11::"+voltaSoDto.getVesselName()+":"+voltaSoDto.getVoyageNo()+":VOL::::" + voltaSoDto.getEtd()+":::::'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count++;
|
|
count++;
|
|
|
|
|
|
|
@@ -7110,8 +7114,9 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.write(":" + voltaSoDto.getPotCode() + ":" + voltaSoDto.getPotName());
|
|
writer.write(":" + voltaSoDto.getPotCode() + ":" + voltaSoDto.getPotName());
|
|
|
// 交货地代码 + 交货地
|
|
// 交货地代码 + 交货地
|
|
|
writer.write(":" + voltaSoDto.getPlaceDeliveryCode() + ":" + voltaSoDto.getPlaceDeliveryName());
|
|
writer.write(":" + voltaSoDto.getPlaceDeliveryCode() + ":" + voltaSoDto.getPlaceDeliveryName());
|
|
|
- // 目的地代码 + 目的地
|
|
|
|
|
- writer.write(":" + voltaSoDto.getPlaceDestinationCode() + ":" + voltaSoDto.getPlaceDestinationName() + "'");
|
|
|
|
|
|
|
+ // 目的地代码 + 目的地 不填
|
|
|
|
|
+ // writer.write(":" + voltaSoDto.getPlaceDestinationCode() + ":" + voltaSoDto.getPlaceDestinationName() + "'");
|
|
|
|
|
+ // writer.write("::'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count++;
|
|
count++;
|
|
|
|
|
|
|
@@ -7122,8 +7127,10 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count++;
|
|
count++;
|
|
|
|
|
|
|
|
|
|
+ // wfg 2025-04-16
|
|
|
|
|
+
|
|
|
// 15 运费及费用项目
|
|
// 15 运费及费用项目
|
|
|
- writer.write("15::NONE:" + pmc + "'");
|
|
|
|
|
|
|
+ writer.write("15:::" + pmc + "'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count++;
|
|
count++;
|
|
|
|
|
|
|
@@ -7134,34 +7141,63 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
String IEIEC = ObjectUtils.isNotNull(voltaSoDto.getEdiIeiec()) ? voltaSoDto.getEdiIeiec().trim() : "";
|
|
String IEIEC = ObjectUtils.isNotNull(voltaSoDto.getEdiIeiec()) ? voltaSoDto.getEdiIeiec().trim() : "";
|
|
|
List<String> bookingRemarks = RegularUtils.reformatEDIText(voltaSoDto.getBookingRemarks(), 35, true);
|
|
List<String> bookingRemarks = RegularUtils.reformatEDIText(voltaSoDto.getBookingRemarks(), 35, true);
|
|
|
if (bookingRemarks.size()>0 || !IEIEC.isEmpty()) {
|
|
if (bookingRemarks.size()>0 || !IEIEC.isEmpty()) {
|
|
|
|
|
+ int lc = 0;
|
|
|
writer.write("17"); // 发货人代码为空
|
|
writer.write("17"); // 发货人代码为空
|
|
|
if(IEIEC.isEmpty()) {
|
|
if(IEIEC.isEmpty()) {
|
|
|
- int lc = 0;
|
|
|
|
|
for (int l = 0; l < bookingRemarks.size(); l++) {
|
|
for (int l = 0; l < bookingRemarks.size(); l++) {
|
|
|
String line = bookingRemarks.get(l);
|
|
String line = bookingRemarks.get(l);
|
|
|
if (line.trim().isEmpty()) {
|
|
if (line.trim().isEmpty()) {
|
|
|
line = ".";
|
|
line = ".";
|
|
|
}
|
|
}
|
|
|
- lc++;
|
|
|
|
|
if (l <= 5) {
|
|
if (l <= 5) {
|
|
|
writer.write(":" + line);
|
|
writer.write(":" + line);
|
|
|
|
|
+ lc++;
|
|
|
} else {
|
|
} else {
|
|
|
bookingRemarksAddtion.add(line);
|
|
bookingRemarksAddtion.add(line);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}else{
|
|
}else{
|
|
|
- writer.write(":" + IEIEC);
|
|
|
|
|
- if(ObjectUtils.isNotNull(voltaSoDto.getEdiIegstin())){
|
|
|
|
|
- writer.write(":" + voltaSoDto.getEdiIegstin());
|
|
|
|
|
- }
|
|
|
|
|
- if(ObjectUtils.isNotNull(voltaSoDto.getEdiIemail())){
|
|
|
|
|
- writer.write(":" + RegularUtils.escapeEDILine(voltaSoDto.getEdiIemail()));
|
|
|
|
|
|
|
+ if(bookingRemarks.size()==0) {
|
|
|
|
|
+ writer.write(":" + IEIEC);
|
|
|
|
|
+ if (ObjectUtils.isNotNull(voltaSoDto.getEdiIegstin())) {
|
|
|
|
|
+ writer.write(":" + voltaSoDto.getEdiIegstin());
|
|
|
|
|
+ lc++;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (ObjectUtils.isNotNull(voltaSoDto.getEdiIemail())) {
|
|
|
|
|
+ writer.write(":" + RegularUtils.escapeEDILine(voltaSoDto.getEdiIemail()));
|
|
|
|
|
+ lc++;
|
|
|
|
|
+ }
|
|
|
|
|
+ }else{
|
|
|
|
|
+ for (int l = 0; l < bookingRemarks.size(); l++) {
|
|
|
|
|
+ String line = bookingRemarks.get(l);
|
|
|
|
|
+ if (line.trim().isEmpty()) {
|
|
|
|
|
+ line = ".";
|
|
|
|
|
+ }
|
|
|
|
|
+ if (l <= 5) {
|
|
|
|
|
+ writer.write(":" + line);
|
|
|
|
|
+ lc++;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ bookingRemarksAddtion.add(line);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ writer.write(":" + IEIEC);
|
|
|
|
|
+ if (ObjectUtils.isNotNull(voltaSoDto.getEdiIegstin())) {
|
|
|
|
|
+ writer.write(":" + voltaSoDto.getEdiIegstin());
|
|
|
|
|
+ lc++;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (ObjectUtils.isNotNull(voltaSoDto.getEdiIemail())) {
|
|
|
|
|
+ writer.write(":" + RegularUtils.escapeEDILine(voltaSoDto.getEdiIemail()));
|
|
|
|
|
+ lc++;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- writer.write("'");
|
|
|
|
|
- writer.newLine();
|
|
|
|
|
- count++;
|
|
|
|
|
|
|
+ if(lc>0) {
|
|
|
|
|
+ writer.write("'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count++;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 20 SHIPPER 发货人
|
|
// 20 SHIPPER 发货人
|
|
@@ -7169,10 +7205,10 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
List<String> goodsDescAddtion = new ArrayList<>();
|
|
List<String> goodsDescAddtion = new ArrayList<>();
|
|
|
// 发货人
|
|
// 发货人
|
|
|
String shpr = ObjectUtils.isNull(voltaSoDto.getMShipper()) ? voltaSoDto.getHShipper() : voltaSoDto.getMShipper();
|
|
String shpr = ObjectUtils.isNull(voltaSoDto.getMShipper()) ? voltaSoDto.getHShipper() : voltaSoDto.getMShipper();
|
|
|
- List<String> hShipper = RegularUtils.reformatEDIText(shpr, 35, true);
|
|
|
|
|
|
|
+ List<String> hShipper = RegularUtils.reformatEDIText(shpr, 65, true);
|
|
|
writer.write("20:"); // 发货人代码为空
|
|
writer.write("20:"); // 发货人代码为空
|
|
|
for (int l = 0; l < hShipper.size(); l++) {
|
|
for (int l = 0; l < hShipper.size(); l++) {
|
|
|
- if (l < 5) {
|
|
|
|
|
|
|
+ if (l < 6) {
|
|
|
writer.write(":" + hShipper.get(l));
|
|
writer.write(":" + hShipper.get(l));
|
|
|
} else {
|
|
} else {
|
|
|
goodsDescAddtion.add("*" + hShipper.get(l));
|
|
goodsDescAddtion.add("*" + hShipper.get(l));
|
|
@@ -7184,10 +7220,10 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
|
|
|
|
|
// 21 CONSIGNEE 收货人
|
|
// 21 CONSIGNEE 收货人
|
|
|
String cnee = ObjectUtils.isNull(voltaSoDto.getMConsignee()) ? voltaSoDto.getHConsignee() : voltaSoDto.getMConsignee();
|
|
String cnee = ObjectUtils.isNull(voltaSoDto.getMConsignee()) ? voltaSoDto.getHConsignee() : voltaSoDto.getMConsignee();
|
|
|
- List<String> hConsignee = RegularUtils.reformatEDIText(cnee, 35, true);
|
|
|
|
|
|
|
+ List<String> hConsignee = RegularUtils.reformatEDIText(cnee, 65, true);
|
|
|
writer.write("21:"); // 收货人代码为空
|
|
writer.write("21:"); // 收货人代码为空
|
|
|
for (int l = 0; l < hConsignee.size(); l++) {
|
|
for (int l = 0; l < hConsignee.size(); l++) {
|
|
|
- if (l < 5) {
|
|
|
|
|
|
|
+ if (l < 6) {
|
|
|
writer.write(":" + hConsignee.get(l));
|
|
writer.write(":" + hConsignee.get(l));
|
|
|
} else {
|
|
} else {
|
|
|
goodsDescAddtion.add("**" + hConsignee.get(l));
|
|
goodsDescAddtion.add("**" + hConsignee.get(l));
|
|
@@ -7199,10 +7235,10 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
|
|
|
|
|
// 22 NOTIFY PARTY 通知人
|
|
// 22 NOTIFY PARTY 通知人
|
|
|
String notify = ObjectUtils.isNull(voltaSoDto.getMNotify()) ? voltaSoDto.getHNotify() : voltaSoDto.getMNotify();
|
|
String notify = ObjectUtils.isNull(voltaSoDto.getMNotify()) ? voltaSoDto.getHNotify() : voltaSoDto.getMNotify();
|
|
|
- List<String> hNotify = RegularUtils.reformatEDIText(notify, 35, true);
|
|
|
|
|
|
|
+ List<String> hNotify = RegularUtils.reformatEDIText(notify, 65, true);
|
|
|
writer.write("22:"); // 通知人代码为空
|
|
writer.write("22:"); // 通知人代码为空
|
|
|
for (int l = 0; l < hNotify.size(); l++) {
|
|
for (int l = 0; l < hNotify.size(); l++) {
|
|
|
- if (l < 5) {
|
|
|
|
|
|
|
+ if (l < 6) {
|
|
|
writer.write(":" + hNotify.get(l));
|
|
writer.write(":" + hNotify.get(l));
|
|
|
} else {
|
|
} else {
|
|
|
goodsDescAddtion.add("***" + hNotify.get(l));
|
|
goodsDescAddtion.add("***" + hNotify.get(l));
|
|
@@ -7217,11 +7253,11 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 2) CARGO ID (货物标识)的填法: S=普通, R=冷冻, D=危险 , O=非标
|
|
// 2) CARGO ID (货物标识)的填法: S=普通, R=冷冻, D=危险 , O=非标
|
|
|
// 41:1::S:8378:CT:CARTONS:20559:138.8::::::20559'
|
|
// 41:1::S:8378:CT:CARTONS:20559:138.8::::::20559'
|
|
|
// 记录类型标识 + 货物序号 + 货类代码 + 货物标识
|
|
// 记录类型标识 + 货物序号 + 货类代码 + 货物标识
|
|
|
- writer.write("41:1::" + ("danger".equals(cargoType) ? "D" : ("reefer".equals(cargoType) ? "R" : "S")));
|
|
|
|
|
|
|
+ writer.write("41:1:" + voltaSoDto.getHsCode() + ":" + ("danger".equals(cargoType) ? "D" : ("reefer".equals(cargoType) ? "R" : "S")));
|
|
|
// 第一层包装件数 + 第一层包装类型 + 第一层包装说明
|
|
// 第一层包装件数 + 第一层包装类型 + 第一层包装说明
|
|
|
writer.write(":" + voltaSoDto.getPackagesNumber() + ":" + voltaSoDto.getPackagesCode() + ":" + voltaSoDto.getPackagesDescribe());
|
|
writer.write(":" + voltaSoDto.getPackagesNumber() + ":" + voltaSoDto.getPackagesCode() + ":" + voltaSoDto.getPackagesDescribe());
|
|
|
// 第一层包装皮重 + 第一层包装尺码
|
|
// 第一层包装皮重 + 第一层包装尺码
|
|
|
- writer.write(":" + voltaSoDto.getGrossWeight().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
|
|
|
|
+ writer.write(":" + voltaSoDto.getGrossWeight().setScale(1, BigDecimal.ROUND_HALF_UP));
|
|
|
writer.write(":" + voltaSoDto.getVolumeOfGoods().setScale(3, BigDecimal.ROUND_HALF_UP));
|
|
writer.write(":" + voltaSoDto.getVolumeOfGoods().setScale(3, BigDecimal.ROUND_HALF_UP));
|
|
|
// 第二层包装件数 + 第二层包装类型 + 第二层包装说明 + 第二层包装皮重 + 第二层包装尺码 + 货毛重
|
|
// 第二层包装件数 + 第二层包装类型 + 第二层包装说明 + 第二层包装皮重 + 第二层包装尺码 + 货毛重
|
|
|
writer.write("::::::" + voltaSoDto.getGrossWeight().setScale(2, BigDecimal.ROUND_HALF_UP) + "'");
|
|
writer.write("::::::" + voltaSoDto.getGrossWeight().setScale(2, BigDecimal.ROUND_HALF_UP) + "'");
|
|
@@ -7230,7 +7266,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
|
|
|
|
|
// 43 DANGEROUS, REEFER & OOG 危险品,冷藏和超标信息
|
|
// 43 DANGEROUS, REEFER & OOG 危险品,冷藏和超标信息
|
|
|
// 温度中,除正(+)负(-)号及小数点外,最多只能三位数字。
|
|
// 温度中,除正(+)负(-)号及小数点外,最多只能三位数字。
|
|
|
- if (ObjectUtils.isNotNull(voltaSoDto.getPreCntrs())) {
|
|
|
|
|
|
|
+ if (("danger".equals(cargoType) || "reefer".equals(cargoType)) && ObjectUtils.isNotNull(voltaSoDto.getPreCntrs())) {
|
|
|
List<Map<String, Object>> mapList = voltaSoDto.getPreCntrs();
|
|
List<Map<String, Object>> mapList = voltaSoDto.getPreCntrs();
|
|
|
if (mapList.size() > 0) {
|
|
if (mapList.size() > 0) {
|
|
|
Map<String, Object> map = mapList.get(0);
|
|
Map<String, Object> map = mapList.get(0);
|
|
@@ -7240,14 +7276,16 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
throw new SecurityException("温度和通风度必须同时填写!");
|
|
throw new SecurityException("温度和通风度必须同时填写!");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- writer.write("43:"+voltaSoDto.getDgImdgCode()+"::"+voltaSoDto.getDgUnCode()+":::::::" + map.get("ventilation") + ":"+(ObjectUtils.isNotNull(map.get("temperature"))?"C":"")+":" + map.get("temperature") + ":::::::'");
|
|
|
|
|
|
|
+ writer.write("43:"+voltaSoDto.getDgImdgCode()+"::"+voltaSoDto.getDgUnCode()+"::::::"+voltaSoDto.getDgContacts());
|
|
|
|
|
+ writer.write(":" + map.get("ventilation") + ":"+(ObjectUtils.isNotNull(map.get("temperature"))?"C":""));
|
|
|
|
|
+ writer.write(":" + map.get("temperature") + ":::::::'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count += 1;
|
|
count += 1;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 44 MARKS & NOS. 唛头 1-10 行
|
|
// 44 MARKS & NOS. 唛头 1-10 行
|
|
|
- List<String> goodsMarks = RegularUtils.reformatEDIText(voltaSoDto.getMarks(), 47, true);
|
|
|
|
|
|
|
+ List<String> goodsMarks = RegularUtils.reformatEDIText(voltaSoDto.getMarks(), 32, true);
|
|
|
List<String> goodsMarksAddtion = new ArrayList<>();
|
|
List<String> goodsMarksAddtion = new ArrayList<>();
|
|
|
writer.write("44");
|
|
writer.write("44");
|
|
|
for (int l = 0; l < goodsMarks.size(); l++) {
|
|
for (int l = 0; l < goodsMarks.size(); l++) {
|
|
@@ -7294,9 +7332,11 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 90 订舱人联系信息
|
|
// 90 订舱人联系信息
|
|
|
|
|
+ /*
|
|
|
writer.write("90:QJM:QINGDAO JMS-LOGISTICS SERVICE CO.,LTD.::Miya Wang:0086-532-82668811-216:0086-532-82668660-216:hmm-seataocn@jms-logistics.com'");
|
|
writer.write("90:QJM:QINGDAO JMS-LOGISTICS SERVICE CO.,LTD.::Miya Wang:0086-532-82668811-216:0086-532-82668660-216:hmm-seataocn@jms-logistics.com'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count += 1;
|
|
count += 1;
|
|
|
|
|
+ */
|
|
|
|
|
|
|
|
// 99 TRAILER RECORD 尾记录
|
|
// 99 TRAILER RECORD 尾记录
|
|
|
// RECORD TOTAL OF FILE 记录总数 9(6) 包括:头、尾记录
|
|
// RECORD TOTAL OF FILE 记录总数 9(6) 包括:头、尾记录
|
|
@@ -7327,7 +7367,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 向文件写入数据
|
|
// 向文件写入数据
|
|
|
// 00 HEAD RECORD
|
|
// 00 HEAD RECORD
|
|
|
// 2=增加 3=删除 4=变更 9=原始
|
|
// 2=增加 3=删除 4=变更 9=原始
|
|
|
- writer.write("00:IFTMIN:shipping request:9:" + voltaSiDto.getSenderCode() + ":HMM:" + voltaSiDto.getFileDate() + "'");
|
|
|
|
|
|
|
+ writer.write("00:IFTMIN:BOOKING:9:" + voltaSiDto.getSenderCode() + ":VOL:" + voltaSiDto.getFileDate() + "'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count++;
|
|
count++;
|
|
|
|
|
|
|
@@ -7335,9 +7375,9 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 记录类型标识
|
|
// 记录类型标识
|
|
|
writer.write("02");
|
|
writer.write("02");
|
|
|
// 运编号
|
|
// 运编号
|
|
|
- writer.write(":" + (ObjectUtils.isNotNull(voltaSiDto.getBookingNo()) ? voltaSiDto.getBookingNo() : voltaSiDto.getMblNo()));
|
|
|
|
|
- // 提单号
|
|
|
|
|
writer.write(":" + voltaSiDto.getMblNo());
|
|
writer.write(":" + voltaSiDto.getMblNo());
|
|
|
|
|
+ // 提单号
|
|
|
|
|
+ writer.write(":" + voltaSiDto.getBookingNo());
|
|
|
// 交货条款 CY-CY(pier-pier/port):30
|
|
// 交货条款 CY-CY(pier-pier/port):30
|
|
|
//CY-CFS(pier/port-door): 29
|
|
//CY-CFS(pier/port-door): 29
|
|
|
//CFS-CY(door-pier/port): 28
|
|
//CFS-CY(door-pier/port): 28
|
|
@@ -7346,30 +7386,35 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 货代方企业名称
|
|
// 货代方企业名称
|
|
|
writer.write(":" + voltaSiDto.getSenderCode());
|
|
writer.write(":" + voltaSiDto.getSenderCode());
|
|
|
// 即接受订舱的人的代码 + 签单人说明 + 询价单位 + 国外订舱单位 + 转船标识 + 分批 + 装期 + 效期 + 运费协议号 + 费率本代码 + 服务合同号 + BOND NO + 舱位互用标识
|
|
// 即接受订舱的人的代码 + 签单人说明 + 询价单位 + 国外订舱单位 + 转船标识 + 分批 + 装期 + 效期 + 运费协议号 + 费率本代码 + 服务合同号 + BOND NO + 舱位互用标识
|
|
|
- writer.write(":HMM::::::::::"+voltaSiDto.getCarrierArgreementNo()+"::'");
|
|
|
|
|
|
|
+ writer.write(":VOL::::::::"+voltaSiDto.getCarrierArgreementNo()+":::"+voltaSiDto.getMblNo()+":");
|
|
|
|
|
+ writer.write(":" + voltaSiDto.getSenderEmail());
|
|
|
|
|
+ writer.write(":" + voltaSiDto.getSenderContacts());
|
|
|
|
|
+ writer.write(":" + voltaSiDto.getSenderTel() + "'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count++;
|
|
count++;
|
|
|
|
|
|
|
|
// 03 提单信息,不填
|
|
// 03 提单信息,不填
|
|
|
- // 提单类型(ORI: BILL OF LADING EXP: WAYBILL) + 提单签发地代码 + 提单签发地 + 签发日期 + 正本提单份数 + 预付地点 + 到付地点
|
|
|
|
|
- String issueType = "ORI".equals(voltaSiDto.getIssueType()) || "EXP".equals(voltaSiDto.getIssueType()) ? voltaSiDto.getIssueType() : "";
|
|
|
|
|
- writer.write("03:"+issueType+"::" + voltaSiDto.getIssuanceLand() + ":" + voltaSiDto.getIssueDate() + ":3:"
|
|
|
|
|
|
|
+ // 提单类型(ORI: BILL OF LADING EXP: WAYBILL TER: 电放) + 提单签发地代码 + 提单签发地 + 签发日期 + 正本提单份数 + 预付地点 + 到付地点
|
|
|
|
|
+ String issueType = voltaSiDto.getIssueType();
|
|
|
|
|
+ writer.write("03:"+issueType+":"+voltaSiDto.getIssuanceLandCode()+":" + voltaSiDto.getIssuanceLand() + ":" + voltaSiDto.getIssueDate() + ":3:"
|
|
|
+ ("PP".equals(voltaSiDto.getMPayMode()) ? voltaSiDto.getMPayPlaceName() : "")
|
|
+ ("PP".equals(voltaSiDto.getMPayMode()) ? voltaSiDto.getMPayPlaceName() : "")
|
|
|
+ ("CC".equals(voltaSiDto.getMPayMode()) ? voltaSiDto.getMPayPlaceName() : ""));
|
|
+ ("CC".equals(voltaSiDto.getMPayMode()) ? voltaSiDto.getMPayPlaceName() : ""));
|
|
|
// AMS Ams Tag AmsCode
|
|
// AMS Ams Tag AmsCode
|
|
|
// V_AMSPROP IF(AMSPROP='Y','Y',IF(AMSPROP='N','N',IF(AMSPROP='1',' ','')))
|
|
// V_AMSPROP IF(AMSPROP='Y','Y',IF(AMSPROP='N','N',IF(AMSPROP='1',' ','')))
|
|
|
- writer.write(":");
|
|
|
|
|
|
|
+ String s1 = "Y".equals(voltaSiDto.getAMSProp()) ? "Y" : ("N".equals(voltaSiDto.getAMSProp()) ? "N" : ("1".equals(voltaSiDto.getAMSProp()) ? " " : ""));
|
|
|
|
|
+ writer.write(":" + s1);
|
|
|
|
|
|
|
|
// ACI Canada Aci
|
|
// ACI Canada Aci
|
|
|
// V_ACIPROP IF(ACIPROP='Y','Y',IF(ACIPROP='N','N',IF(ACIPROP='1',' ','')))
|
|
// V_ACIPROP IF(ACIPROP='Y','Y',IF(ACIPROP='N','N',IF(ACIPROP='1',' ','')))
|
|
|
// ACI NO VarChar(35)
|
|
// ACI NO VarChar(35)
|
|
|
- writer.write(":'");
|
|
|
|
|
|
|
+ s1 = "Y".equals(voltaSiDto.getACIProp()) ? "Y" : ("N".equals(voltaSiDto.getACIProp()) ? "N" : ("1".equals(voltaSiDto.getACIProp()) ? " " : ""));
|
|
|
|
|
+ writer.write(":"+s1+"'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count++;
|
|
count++;
|
|
|
|
|
|
|
|
// 11 VESSEL 船舶信息
|
|
// 11 VESSEL 船舶信息
|
|
|
// 记录类型标识 + 船舶呼号 + 船名 + 航次 + 船舶经营人
|
|
// 记录类型标识 + 船舶呼号 + 船名 + 航次 + 船舶经营人
|
|
|
- writer.write("11:::::::::::"+voltaSiDto.getVesselCode()+":"+voltaSiDto.getVesselName()+":"+voltaSiDto.getVoyageNo()+"'");
|
|
|
|
|
|
|
+ writer.write("11::"+voltaSiDto.getVesselName()+":"+voltaSiDto.getVoyageNo()+":::VOL:::::::'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count++;
|
|
count++;
|
|
|
|
|
|
|
@@ -7386,7 +7431,8 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 交货地代码 + 交货地
|
|
// 交货地代码 + 交货地
|
|
|
writer.write(":" + voltaSiDto.getPlaceDeliveryCode() + ":" + voltaSiDto.getPlaceDeliveryName());
|
|
writer.write(":" + voltaSiDto.getPlaceDeliveryCode() + ":" + voltaSiDto.getPlaceDeliveryName());
|
|
|
// 目的地代码 + 目的地
|
|
// 目的地代码 + 目的地
|
|
|
- writer.write(":" + voltaSiDto.getPlaceDestinationCode() + ":" + voltaSiDto.getPlaceDestinationName() + "'");
|
|
|
|
|
|
|
+ // writer.write(":" + voltaSiDto.getPlaceDestinationCode() + ":" + voltaSiDto.getPlaceDestinationName() + "'");
|
|
|
|
|
+ writer.write("::'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count++;
|
|
count++;
|
|
|
|
|
|
|
@@ -7398,59 +7444,29 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
count++;
|
|
count++;
|
|
|
|
|
|
|
|
// 15 运费及费用项目
|
|
// 15 运费及费用项目
|
|
|
- writer.write("15::NONE:" + pm + "'");
|
|
|
|
|
|
|
+ writer.write("15:::" + pm + "'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count++;
|
|
count++;
|
|
|
|
|
|
|
|
// 17 REMARKS 订舱备注 其他信息
|
|
// 17 REMARKS 订舱备注 其他信息
|
|
|
- // 有订舱备注,填订舱备注,否则填 IEIEC
|
|
|
|
|
- String IEIEC = ObjectUtils.isNotNull(voltaSiDto.getEdiIeiec()) ? voltaSiDto.getEdiIeiec().trim() : "";
|
|
|
|
|
- String IEGSTIN = ObjectUtils.isNotNull(voltaSiDto.getEdiIegstin()) ? voltaSiDto.getEdiIegstin().trim() : "";
|
|
|
|
|
- String IEMAIL = ObjectUtils.isNotNull(voltaSiDto.getEdiIemail()) ? voltaSiDto.getEdiIemail().trim() : "";
|
|
|
|
|
- if(!IEIEC.isEmpty()){
|
|
|
|
|
- writer.write("17:" + IEIEC + ":" + IEGSTIN +":" + IEMAIL + "'");
|
|
|
|
|
- writer.newLine();
|
|
|
|
|
- count++;
|
|
|
|
|
|
|
+ String[] buf = voltaSiDto.getSiRemarks().split("\n");
|
|
|
|
|
+ String remarksLn = "";
|
|
|
|
|
+ for (String item : buf) {
|
|
|
|
|
+ String ln = item.trim();
|
|
|
|
|
+ if(!ln.isEmpty()) {
|
|
|
|
|
+ remarksLn += ((remarksLn.isEmpty() ? "" : ":") + RegularUtils.escapeEDILine(ln));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
-// List<String> bookingRemarksAddtion = new ArrayList<>();
|
|
|
|
|
-// List<String> bookingRemarks = RegularUtils.reformatEDIText(hmmSiDto.getBookingRemarks(), 35, true);
|
|
|
|
|
-// if (bookingRemarks.size()>0 || !IEIEC.isEmpty()) {
|
|
|
|
|
-// writer.write("17"); // 发货人代码为空
|
|
|
|
|
-// if(IEIEC.isEmpty()) {
|
|
|
|
|
-// int lc = 0;
|
|
|
|
|
-// for (int l = 0; l < bookingRemarks.size(); l++) {
|
|
|
|
|
-// String line = bookingRemarks.get(l);
|
|
|
|
|
-// if (line.trim().isEmpty()) {
|
|
|
|
|
-// line = ".";
|
|
|
|
|
-// }
|
|
|
|
|
-// lc++;
|
|
|
|
|
-// if (l <= 5) {
|
|
|
|
|
-// writer.write(":" + line);
|
|
|
|
|
-// } else {
|
|
|
|
|
-// bookingRemarksAddtion.add(line);
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
-// }else{
|
|
|
|
|
-// writer.write(":" + IEIEC);
|
|
|
|
|
-// if(ObjectUtils.isNotNull(hmmSiDto.getEdiIegstin())){
|
|
|
|
|
-// writer.write(":" + hmmSiDto.getEdiIegstin());
|
|
|
|
|
-// }
|
|
|
|
|
-// if(ObjectUtils.isNotNull(hmmSiDto.getEdiIemail())){
|
|
|
|
|
-// writer.write(":" + RegularUtils.escapeEDILine(hmmSiDto.getEdiIemail()));
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
-//
|
|
|
|
|
-// writer.write("'");
|
|
|
|
|
-// writer.newLine();
|
|
|
|
|
-// count++;
|
|
|
|
|
-// }
|
|
|
|
|
|
|
+ writer.write("17:" + remarksLn + "'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count++;
|
|
|
|
|
|
|
|
// 20 SHIPPER 发货人
|
|
// 20 SHIPPER 发货人
|
|
|
// 处理收发通之前,先处理货描,因为收发通多余的部分要追加到货描
|
|
// 处理收发通之前,先处理货描,因为收发通多余的部分要追加到货描
|
|
|
List<String> goodsDescAddtion = new ArrayList<>();
|
|
List<String> goodsDescAddtion = new ArrayList<>();
|
|
|
// 发货人
|
|
// 发货人
|
|
|
String shpr = ObjectUtils.isNull(voltaSiDto.getMShipper()) ? voltaSiDto.getHShipper() : voltaSiDto.getMShipper();
|
|
String shpr = ObjectUtils.isNull(voltaSiDto.getMShipper()) ? voltaSiDto.getHShipper() : voltaSiDto.getMShipper();
|
|
|
- List<String> hShipper = RegularUtils.reformatEDIText(shpr, 35, true);
|
|
|
|
|
|
|
+ List<String> hShipper = RegularUtils.reformatEDIText(shpr, 50, true);
|
|
|
writer.write("20:"); // 发货人代码为空
|
|
writer.write("20:"); // 发货人代码为空
|
|
|
for (int l = 0; l < hShipper.size(); l++) {
|
|
for (int l = 0; l < hShipper.size(); l++) {
|
|
|
if (l < 5) {
|
|
if (l < 5) {
|
|
@@ -7465,7 +7481,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
|
|
|
|
|
// 21 CONSIGNEE 收货人
|
|
// 21 CONSIGNEE 收货人
|
|
|
String cnee = ObjectUtils.isNull(voltaSiDto.getMConsignee()) ? voltaSiDto.getHConsignee() : voltaSiDto.getMConsignee();
|
|
String cnee = ObjectUtils.isNull(voltaSiDto.getMConsignee()) ? voltaSiDto.getHConsignee() : voltaSiDto.getMConsignee();
|
|
|
- List<String> hConsignee = RegularUtils.reformatEDIText(cnee, 35, true);
|
|
|
|
|
|
|
+ List<String> hConsignee = RegularUtils.reformatEDIText(cnee, 49, true);
|
|
|
writer.write("21:"); // 收货人代码为空
|
|
writer.write("21:"); // 收货人代码为空
|
|
|
for (int l = 0; l < hConsignee.size(); l++) {
|
|
for (int l = 0; l < hConsignee.size(); l++) {
|
|
|
if (l < 5) {
|
|
if (l < 5) {
|
|
@@ -7480,7 +7496,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
|
|
|
|
|
// 22 NOTIFY PARTY 通知人
|
|
// 22 NOTIFY PARTY 通知人
|
|
|
String notify = ObjectUtils.isNull(voltaSiDto.getMNotify()) ? voltaSiDto.getHNotify() : voltaSiDto.getMNotify();
|
|
String notify = ObjectUtils.isNull(voltaSiDto.getMNotify()) ? voltaSiDto.getHNotify() : voltaSiDto.getMNotify();
|
|
|
- List<String> hNotify = RegularUtils.reformatEDIText(notify, 35, true);
|
|
|
|
|
|
|
+ List<String> hNotify = RegularUtils.reformatEDIText(notify, 49, true);
|
|
|
writer.write("22:"); // 通知人代码为空
|
|
writer.write("22:"); // 通知人代码为空
|
|
|
for (int l = 0; l < hNotify.size(); l++) {
|
|
for (int l = 0; l < hNotify.size(); l++) {
|
|
|
if (l < 5) {
|
|
if (l < 5) {
|
|
@@ -7494,30 +7510,30 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
count += 1;
|
|
count += 1;
|
|
|
|
|
|
|
|
// 23 SEC NOTIFY PARTY 第二通知人
|
|
// 23 SEC NOTIFY PARTY 第二通知人
|
|
|
- String notify2 = ObjectUtils.isNull(voltaSiDto.getMNotify2()) ? voltaSiDto.getHNotify2() : voltaSiDto.getMNotify2();
|
|
|
|
|
- List<String> hNotify2 = RegularUtils.reformatEDIText(notify2, 35, true);
|
|
|
|
|
- writer.write("23:"); // 通知人代码为空
|
|
|
|
|
- for (int l = 0; l < hNotify2.size(); l++) {
|
|
|
|
|
- if (l < 5) {
|
|
|
|
|
- writer.write(":" + hNotify2.get(l));
|
|
|
|
|
- } else {
|
|
|
|
|
- goodsDescAddtion.add("****" + hNotify2.get(l));
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- writer.write("'");
|
|
|
|
|
- writer.newLine();
|
|
|
|
|
- count += 1;
|
|
|
|
|
|
|
+// String notify2 = ObjectUtils.isNull(voltaSiDto.getMNotify2()) ? voltaSiDto.getHNotify2() : voltaSiDto.getMNotify2();
|
|
|
|
|
+// List<String> hNotify2 = RegularUtils.reformatEDIText(notify2, 35, true);
|
|
|
|
|
+// writer.write("23:"); // 通知人代码为空
|
|
|
|
|
+// for (int l = 0; l < hNotify2.size(); l++) {
|
|
|
|
|
+// if (l < 5) {
|
|
|
|
|
+// writer.write(":" + hNotify2.get(l));
|
|
|
|
|
+// } else {
|
|
|
|
|
+// goodsDescAddtion.add("****" + hNotify2.get(l));
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+// writer.write("'");
|
|
|
|
|
+// writer.newLine();
|
|
|
|
|
+// count += 1;
|
|
|
|
|
|
|
|
// 41 CARGO OF BOOKING 订舱货物
|
|
// 41 CARGO OF BOOKING 订舱货物
|
|
|
// 注:1)货物有两种包装,如是大包装(如托盘),则必须同时填小包装件数和包装类型;
|
|
// 注:1)货物有两种包装,如是大包装(如托盘),则必须同时填小包装件数和包装类型;
|
|
|
// 2) CARGO ID (货物标识)的填法: S=普通, R=冷冻, D=危险 , O=非标
|
|
// 2) CARGO ID (货物标识)的填法: S=普通, R=冷冻, D=危险 , O=非标
|
|
|
// 41:1::S:8378:CT:CARTONS:20559:138.8::::::20559'
|
|
// 41:1::S:8378:CT:CARTONS:20559:138.8::::::20559'
|
|
|
// 记录类型标识 + 货物序号 + 货类代码 + 货物标识
|
|
// 记录类型标识 + 货物序号 + 货类代码 + 货物标识
|
|
|
- writer.write("41:1::" + ("danger".equals(cargoType) ? "D" : ("reefer".equals(cargoType) ? "R" : "S")));
|
|
|
|
|
|
|
+ writer.write("41:1:"+voltaSiDto.getHsCode()+":" + ("danger".equals(cargoType) ? "D" : ("reefer".equals(cargoType) ? "R" : "S")));
|
|
|
// 第一层包装件数 + 第一层包装类型 + 第一层包装说明
|
|
// 第一层包装件数 + 第一层包装类型 + 第一层包装说明
|
|
|
writer.write(":" + voltaSiDto.getPackagesNumber() + ":" + voltaSiDto.getPackagesCode() + ":" + voltaSiDto.getPackagesDescribe());
|
|
writer.write(":" + voltaSiDto.getPackagesNumber() + ":" + voltaSiDto.getPackagesCode() + ":" + voltaSiDto.getPackagesDescribe());
|
|
|
// 第一层包装皮重 + 第一层包装尺码
|
|
// 第一层包装皮重 + 第一层包装尺码
|
|
|
- writer.write(":" + voltaSiDto.getGrossWeight().setScale(3, BigDecimal.ROUND_HALF_UP));
|
|
|
|
|
|
|
+ writer.write(":" + voltaSiDto.getGrossWeight().setScale(1, BigDecimal.ROUND_HALF_UP));
|
|
|
writer.write(":" + voltaSiDto.getVolumeOfGoods().setScale(3, BigDecimal.ROUND_HALF_UP));
|
|
writer.write(":" + voltaSiDto.getVolumeOfGoods().setScale(3, BigDecimal.ROUND_HALF_UP));
|
|
|
// 第二层包装件数 + 第二层包装类型 + 第二层包装说明 + 第二层包装皮重 + 第二层包装尺码 + 货毛重
|
|
// 第二层包装件数 + 第二层包装类型 + 第二层包装说明 + 第二层包装皮重 + 第二层包装尺码 + 货毛重
|
|
|
writer.write("::::::" + voltaSiDto.getGrossWeight().setScale(3, BigDecimal.ROUND_HALF_UP) + "'");
|
|
writer.write("::::::" + voltaSiDto.getGrossWeight().setScale(3, BigDecimal.ROUND_HALF_UP) + "'");
|
|
@@ -7526,6 +7542,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
|
|
|
|
|
// 43 DANGEROUS, REEFER & OOG 危险品,冷藏和超标信息
|
|
// 43 DANGEROUS, REEFER & OOG 危险品,冷藏和超标信息
|
|
|
// 温度中,除正(+)负(-)号及小数点外,最多只能三位数字。
|
|
// 温度中,除正(+)负(-)号及小数点外,最多只能三位数字。
|
|
|
|
|
+ String goodsDescText = voltaSiDto.getGoodsDesc();
|
|
|
if (ObjectUtils.isNotNull(voltaSiDto.getPreCntrs())) {
|
|
if (ObjectUtils.isNotNull(voltaSiDto.getPreCntrs())) {
|
|
|
List<Map<String, Object>> mapList = voltaSiDto.getPreCntrs();
|
|
List<Map<String, Object>> mapList = voltaSiDto.getPreCntrs();
|
|
|
if (mapList.size() > 0) {
|
|
if (mapList.size() > 0) {
|
|
@@ -7536,25 +7553,35 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
throw new SecurityException("温度和通风度必须同时填写!");
|
|
throw new SecurityException("温度和通风度必须同时填写!");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- writer.write("43:"+voltaSiDto.getDgImdgCode()+"::"+voltaSiDto.getDgUnCode()+":::::::" + map.get("ventilation") + ":C:" + map.get("temperature") + "::::::::'");
|
|
|
|
|
- writer.newLine();
|
|
|
|
|
- count += 1;
|
|
|
|
|
|
|
+ if(!T.isEmpty()){
|
|
|
|
|
+ goodsDescText += "\nCARGO IS STOWED IN REEFER CONTAINER AT THE ";
|
|
|
|
|
+ goodsDescText += "\nSHIPPER'S REQUESTED CARRYING TEMP OF " + T + " 'C VENT: " + V + " CBM/H";
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+// writer.write("43:"+voltaSiDto.getDgImdgCode()+"::"+voltaSiDto.getDgUnCode()+":::::::" + map.get("ventilation") + ":C:" + map.get("temperature") + "::::::::'");
|
|
|
|
|
+// writer.newLine();
|
|
|
|
|
+// count += 1;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 44 MARKS & NOS. 唛头 12 节
|
|
// 44 MARKS & NOS. 唛头 12 节
|
|
|
- List<String> goodsMarks = RegularUtils.reformatEDIText(voltaSiDto.getMarks(), 35, true);
|
|
|
|
|
|
|
+ List<String> goodsMarks = RegularUtils.reformatEDIText(voltaSiDto.getMarks(), 25, true);
|
|
|
int marksLineCount = goodsMarks.size();
|
|
int marksLineCount = goodsMarks.size();
|
|
|
for (int l = 0; l < marksLineCount; l++) {
|
|
for (int l = 0; l < marksLineCount; l++) {
|
|
|
String line = goodsMarks.get(l);
|
|
String line = goodsMarks.get(l);
|
|
|
if(line.trim().isEmpty()){
|
|
if(line.trim().isEmpty()){
|
|
|
line=".";
|
|
line=".";
|
|
|
}
|
|
}
|
|
|
- if((l % 9)==0){
|
|
|
|
|
|
|
+ if((l % 10)==0){
|
|
|
|
|
+ if(l>0){
|
|
|
|
|
+ writer.write("'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+ }
|
|
|
writer.write("44");
|
|
writer.write("44");
|
|
|
}
|
|
}
|
|
|
writer.write(":" + line);
|
|
writer.write(":" + line);
|
|
|
- if((l % 9)==8 || l==(marksLineCount - 1)){
|
|
|
|
|
|
|
+ if(l==(marksLineCount - 1)){
|
|
|
writer.write("'");
|
|
writer.write("'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count += 1;
|
|
count += 1;
|
|
@@ -7562,18 +7589,23 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 47 CARGO DESCRIPTION 货物描述 5行一组
|
|
// 47 CARGO DESCRIPTION 货物描述 5行一组
|
|
|
- List<String> goodsDesc = RegularUtils.reformatEDIText(voltaSiDto.getGoodsDesc(), 70, true);
|
|
|
|
|
|
|
+ List<String> goodsDesc = RegularUtils.reformatEDIText(goodsDescText, 44, true);
|
|
|
int descrLineCount = goodsDesc.size();
|
|
int descrLineCount = goodsDesc.size();
|
|
|
for (int l = 0; l < descrLineCount; l++) {
|
|
for (int l = 0; l < descrLineCount; l++) {
|
|
|
- String line = goodsMarks.get(l);
|
|
|
|
|
|
|
+ String line = goodsDesc.get(l);
|
|
|
if(line.trim().isEmpty()){
|
|
if(line.trim().isEmpty()){
|
|
|
line=".";
|
|
line=".";
|
|
|
}
|
|
}
|
|
|
if((l % 5)==0){
|
|
if((l % 5)==0){
|
|
|
|
|
+ if(l>0){
|
|
|
|
|
+ writer.write("'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+ }
|
|
|
writer.write("47");
|
|
writer.write("47");
|
|
|
}
|
|
}
|
|
|
writer.write(":" + line);
|
|
writer.write(":" + line);
|
|
|
- if((l % 5)==7 || l==(descrLineCount - 1)){
|
|
|
|
|
|
|
+ if(l==(descrLineCount - 1)){
|
|
|
writer.write("'");
|
|
writer.write("'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count += 1;
|
|
count += 1;
|
|
@@ -7594,25 +7626,25 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 记录类型标识 + 集装箱尺寸类 + 集装箱箱数
|
|
// 记录类型标识 + 集装箱尺寸类 + 集装箱箱数
|
|
|
writer.write("48:" + map1.get("sizeType") + ":" + map1.get("cntrQty"));
|
|
writer.write("48:" + map1.get("sizeType") + ":" + map1.get("cntrQty"));
|
|
|
// 集装箱状态
|
|
// 集装箱状态
|
|
|
- writer.write(":" + (ObjectUtils.isNotNull(voltaSiDto.getBookingNo()) && !voltaSiDto.getBookingNo().equals(voltaSiDto.getMblNo()) ? "L" : "F"));
|
|
|
|
|
|
|
+ writer.write(":F");
|
|
|
// 主拼号 + 装箱方式 自选/内装/自派车队等
|
|
// 主拼号 + 装箱方式 自选/内装/自派车队等
|
|
|
- writer.write(":" + (ObjectUtils.isNotNull(voltaSiDto.getBookingNo()) && !voltaSiDto.getBookingNo().equals(voltaSiDto.getMblNo()) ? voltaSiDto.getBookingNo() : ""));
|
|
|
|
|
- writer.write("::::N'");
|
|
|
|
|
|
|
+ writer.write(":::::N'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count += 1;
|
|
count += 1;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// DD, MM + HH
|
|
// DD, MM + HH
|
|
|
|
|
+ // 应改为,发送分单时,提取主单配箱
|
|
|
List<InttraSoDto> billsList = new ArrayList<>();
|
|
List<InttraSoDto> billsList = new ArrayList<>();
|
|
|
billsList.add(voltaSiDto);
|
|
billsList.add(voltaSiDto);
|
|
|
voltaSiDto.setIsMasterBill(true);
|
|
voltaSiDto.setIsMasterBill(true);
|
|
|
- if (ObjectUtils.isNotNull(voltaSiDto.getHblBillsList())) {
|
|
|
|
|
- for (InttraSoDto bill : voltaSiDto.getHblBillsList()) {
|
|
|
|
|
- bill.setIsMasterBill(false);
|
|
|
|
|
- billsList.add(bill);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+// if (ObjectUtils.isNotNull(voltaSiDto.getHblBillsList())) {
|
|
|
|
|
+// for (InttraSoDto bill : voltaSiDto.getHblBillsList()) {
|
|
|
|
|
+// bill.setIsMasterBill(false);
|
|
|
|
|
+// billsList.add(bill);
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
|
|
|
for(InttraSoDto bill : billsList) {
|
|
for(InttraSoDto bill : billsList) {
|
|
|
if (ObjectUtils.isNotNull(bill.getLoadedCntrs())) {
|
|
if (ObjectUtils.isNotNull(bill.getLoadedCntrs())) {
|
|
@@ -7621,14 +7653,12 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 箱号
|
|
// 箱号
|
|
|
String cntrNo=map.get("cntrNo").toString();
|
|
String cntrNo=map.get("cntrNo").toString();
|
|
|
String sealNo=map.get("sealNo").toString();
|
|
String sealNo=map.get("sealNo").toString();
|
|
|
- if(!(cntrNo.isEmpty() && sealNo.isEmpty())){
|
|
|
|
|
- if(cntrNo.isEmpty() || sealNo.isEmpty()){
|
|
|
|
|
- throw new SecurityException("箱号、铅封号必须同时填写!");
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if(cntrNo.isEmpty() || sealNo.isEmpty()){
|
|
|
|
|
+ throw new SecurityException("箱号、铅封号必须同时填写!");
|
|
|
}
|
|
}
|
|
|
String sizeType=map.get("sizeType").toString();
|
|
String sizeType=map.get("sizeType").toString();
|
|
|
if(sizeType.isEmpty()) {
|
|
if(sizeType.isEmpty()) {
|
|
|
- throw new SecurityException("HMM EDI 箱型代码没有维护!");
|
|
|
|
|
|
|
+ throw new SecurityException("VOLTA EDI 箱型代码没有维护!");
|
|
|
}
|
|
}
|
|
|
BigDecimal pkgs = ((BigDecimal) map.get("quantity")).setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
BigDecimal pkgs = ((BigDecimal) map.get("quantity")).setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
|
BigDecimal gwt = ((BigDecimal) map.get("grossWeight")).setScale(3, BigDecimal.ROUND_HALF_UP);
|
|
BigDecimal gwt = ((BigDecimal) map.get("grossWeight")).setScale(3, BigDecimal.ROUND_HALF_UP);
|
|
@@ -7641,61 +7671,15 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
writer.write("51:"+cntrNo+":"+sizeType+":" + sealNo + ":" + pkgs.toString());
|
|
writer.write("51:"+cntrNo+":"+sizeType+":" + sealNo + ":" + pkgs.toString());
|
|
|
- writer.write(":" + gwt.toString() + ":" + ((BigDecimal) map.get("tareWeight")).setScale(3, BigDecimal.ROUND_HALF_UP).toString());
|
|
|
|
|
|
|
+ writer.write(":" + gwt.toString() + ":");
|
|
|
writer.write(":" + vol.toString());
|
|
writer.write(":" + vol.toString());
|
|
|
- writer.write("::::::");
|
|
|
|
|
- // VGM WT + VGM DATE + VGM METHOD + VGM LOCATION
|
|
|
|
|
- // wfg
|
|
|
|
|
- writer.write("::::'");
|
|
|
|
|
|
|
+ writer.write("'");
|
|
|
writer.newLine();
|
|
writer.newLine();
|
|
|
count += 1;
|
|
count += 1;
|
|
|
-
|
|
|
|
|
- // 录入品名
|
|
|
|
|
- if(ObjectUtils.isNotNull(map.get("commodityList"))){
|
|
|
|
|
- List<ContainersCommodity> cargoList = (List<ContainersCommodity>) map.get("commodityList");
|
|
|
|
|
- for (ContainersCommodity cargo : cargoList) {
|
|
|
|
|
- if (ObjectUtils.isNull(cargo.getHscode())) {
|
|
|
|
|
- throw new RuntimeException("箱内货物没有填写 HSCODE");
|
|
|
|
|
- }
|
|
|
|
|
- if (ObjectUtils.isNull(cargo.getPackingUnitCode())) {
|
|
|
|
|
- throw new RuntimeException("箱内货物包装单位没有填写或缺少EDI代码");
|
|
|
|
|
- }
|
|
|
|
|
- if (cargo.getQuantity().equals(BigDecimal.ZERO)
|
|
|
|
|
- || cargo.getGrossWeight().equals(BigDecimal.ZERO)
|
|
|
|
|
- || cargo.getMeasurement().equals(BigDecimal.ZERO)
|
|
|
|
|
- ) {
|
|
|
|
|
- throw new RuntimeException("箱内货物件重尺填写不全");
|
|
|
|
|
- }
|
|
|
|
|
- BigDecimal ccPkgs = cargo.getQuantity().setScale(0, RoundingMode.HALF_UP);
|
|
|
|
|
- BigDecimal ccGw = cargo.getGrossWeight().setScale(3, RoundingMode.HALF_UP);
|
|
|
|
|
- BigDecimal ccVol = cargo.getMeasurement().setScale(3, RoundingMode.HALF_UP);
|
|
|
|
|
-
|
|
|
|
|
- String ncm = cargo.getHscode() + ":" + cargo.getCommodityEnName();
|
|
|
|
|
- ncm+=":" + cargo.getPackingUnitCode() + ":" + ccPkgs.toString();
|
|
|
|
|
- ncm+=":" + ccGw.toString() + ":" + ccVol.toString();
|
|
|
|
|
-
|
|
|
|
|
- writer.write("53:"+cntrNo+":"+ncm + "'");
|
|
|
|
|
- writer.newLine();
|
|
|
|
|
- count += 1;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // VGM Shipper
|
|
|
|
|
- // wfg
|
|
|
|
|
- writer.write("58::::::::'");
|
|
|
|
|
-
|
|
|
|
|
- // VGM WEIGHT COMPANY
|
|
|
|
|
- // wfg
|
|
|
|
|
- writer.write("59::::::::'");
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 90 订舱人联系信息
|
|
|
|
|
- writer.write("90:QJM:QINGDAO JMS-LOGISTICS SERVICE CO.,LTD.::Miya Wang:0532-82668811 Ext.171:0532-82668660 Ext.171:hmm-seataocn@jms-logistics.com'");
|
|
|
|
|
- writer.newLine();
|
|
|
|
|
- count += 1;
|
|
|
|
|
-
|
|
|
|
|
// 99 TRAILER RECORD 尾记录
|
|
// 99 TRAILER RECORD 尾记录
|
|
|
// RECORD TOTAL OF FILE 记录总数 9(6) 包括:头、尾记录
|
|
// RECORD TOTAL OF FILE 记录总数 9(6) 包括:头、尾记录
|
|
|
writer.write("99:" + (++count) + "'");
|
|
writer.write("99:" + (++count) + "'");
|