|
|
@@ -37,6 +37,7 @@ import org.springframework.validation.annotation.Validated;
|
|
|
import java.io.*;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
+import java.text.DecimalFormat;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
|
@@ -525,7 +526,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
// wfg IUCA 的处理
|
|
|
- writer.write("NAD+CA+" + carrierCode + ":160:86++" + inttraSoDto.getCarrierName().substring(0, 35) + "'");
|
|
|
+ writer.write("NAD+CA+" + carrierCode + ":160:86++" + RegularUtils.copySubstring(inttraSoDto.getCarrierName(), 0, 35) + "'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
writer.write("NAD+HI+" + inttraSoDto.getSenderCode() + ":160:86++" + inttraSoDto.getSenderCode() + "'");
|
|
|
@@ -2055,7 +2056,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 运编号
|
|
|
writer.write(":" + (ObjectUtils.isNotNull(oneSoDto.getBookingNo()) ? oneSoDto.getBookingNo() : (ObjectUtils.isNotNull(oneSoDto.getMblNo()) ? oneSoDto.getMblNo() : "")));
|
|
|
// 提单号
|
|
|
- writer.write(":" + (ObjectUtils.isNotNull(oneSoDto.getMblNo()) ? oneSoDto.getMblNo() : ""));
|
|
|
+ writer.write(":" + (RegularUtils.forceEmpty(oneSoDto.getMblNo())));
|
|
|
// 交货条款 CY-CY(pier-pier/port):30
|
|
|
//CY-CFS(pier/port-door): 29
|
|
|
//CFS-CY(door-pier/port): 28
|
|
|
@@ -2065,16 +2066,16 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.write(":" + oneSoDto.getSenderName());
|
|
|
// 即接受订舱的人的代码 + 签单人说明 + 询价单位 + 国外订舱单位 + 转船标识 + 分批 + 装期 + 效期 + 运费协议号 + 费率本代码 + 服务合同号 + BOND NO + 舱位互用标识 + Email
|
|
|
// ONE 业务缺少服务合同号
|
|
|
- writer.write(":ONEY::::::::" + oneSoDto.getCorpArgreementNo() + "::" + oneSoDto.getCarrierArgreementNo() + ":::" + oneSoDto.getSenderEmail() + "'");
|
|
|
+ writer.write(":ONEY::::::::" + RegularUtils.forceEmpty(oneSoDto.getCorpArgreementNo()) + "::" + RegularUtils.forceEmpty(oneSoDto.getCarrierArgreementNo()) + ":::" + RegularUtils.forceEmpty(oneSoDto.getSenderEmail()) + "'");
|
|
|
writer.newLine();
|
|
|
count++;
|
|
|
|
|
|
// 03 提单信息
|
|
|
// 提单类型(ORI: BILL OF LADING EXP: WAYBILL) + 提单签发地代码 + 提单签发地 + 签发日期 + 正本提单份数 + 预付地点 + 到付地点
|
|
|
String issueType = "ORI".equals(oneSoDto.getIssueType()) ? "ORI" : ("EXP".equals(oneSoDto.getIssueType()) ? "EXP" : "");
|
|
|
- writer.write("03:" + issueType + "::" + oneSoDto.getIssuanceLand() + ":" + oneSoDto.getIssueDate() + ":3:"
|
|
|
- + ("PP".equals(oneSoDto.getMPayMode()) ? oneSoDto.getMPayPlaceName() : "")
|
|
|
- + ("CC".equals(oneSoDto.getMPayMode()) ? oneSoDto.getMPayPlaceName() : "") + "'");
|
|
|
+ writer.write("03:" + issueType + "::" + RegularUtils.forceEmpty(oneSoDto.getIssuanceLand()) + ":" + RegularUtils.forceEmpty(oneSoDto.getIssueDate()) + ":3::"
|
|
|
+ + ("PP".equals(oneSoDto.getMPayMode()) ? RegularUtils.forceEmpty(oneSoDto.getMPayPlaceName()) : "")
|
|
|
+ + ("CC".equals(oneSoDto.getMPayMode()) ? RegularUtils.forceEmpty(oneSoDto.getMPayPlaceName()) : "") + "'");
|
|
|
writer.newLine();
|
|
|
count++;
|
|
|
|
|
|
@@ -2082,26 +2083,26 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 记录类型标识 + 船舶呼号 + 船名 + 航次 + 船舶经营人
|
|
|
// 此处 getVesselCode 取船舶呼号
|
|
|
// wfg
|
|
|
- writer.write("11:" + oneSoDto.getVesselCode() + ":" + oneSoDto.getVesselName() + ":" + oneSoDto.getVoyageNo() + "::::");
|
|
|
+ writer.write("11:" + RegularUtils.forceEmpty(oneSoDto.getVesselCode()) + ":" + RegularUtils.forceEmpty(oneSoDto.getVesselName()) + ":" + RegularUtils.forceEmpty(oneSoDto.getVoyageNo()) + ":::::");
|
|
|
// 亿通 航线代码 lineNo
|
|
|
- writer.write(oneSoDto.getEtd() + ":lineNo:lineNo:::'");
|
|
|
+ writer.write(oneSoDto.getEtd() + ":::::'");
|
|
|
writer.newLine();
|
|
|
count++;
|
|
|
|
|
|
// 12 PORTS 地点信息
|
|
|
writer.write("12");
|
|
|
// 收货地代码 + 收货地代名称
|
|
|
- writer.write(":" + bill.getPlaceReceiptCode() + ":" + bill.getPlaceReceiptName());
|
|
|
+ writer.write(":" + RegularUtils.forceEmpty(bill.getPlaceReceiptCode()) + ":" + RegularUtils.forceEmpty(bill.getPlaceReceiptName()));
|
|
|
// 装货港代码 + 装货港
|
|
|
- writer.write(":" + bill.getPolCode() + ":" + bill.getPolName());
|
|
|
+ writer.write(":" + RegularUtils.forceEmpty(bill.getPolCode()) + ":" + RegularUtils.forceEmpty(bill.getPolName()));
|
|
|
// 卸货港代码 + 卸货港代
|
|
|
- writer.write(":" + bill.getPodCode() + ":" + bill.getPodName());
|
|
|
+ writer.write(":" + RegularUtils.forceEmpty(bill.getPodCode()) + ":" + RegularUtils.forceEmpty(bill.getPodName()));
|
|
|
// 中转港代码 + 中转港 不填
|
|
|
writer.write("::");
|
|
|
// 交货地代码 + 交货地
|
|
|
- writer.write(":" + bill.getPlaceDeliveryCode() + ":" + bill.getPlaceDeliveryName());
|
|
|
+ writer.write(":" + RegularUtils.forceEmpty(bill.getPlaceDeliveryCode()) + ":" + RegularUtils.forceEmpty(bill.getPlaceDeliveryName()));
|
|
|
// 目的地代码 + 目的地
|
|
|
- writer.write(":" + bill.getPlaceDestinationCode() + ":" + bill.getPlaceDestinationName());
|
|
|
+ writer.write(":" + RegularUtils.forceEmpty(bill.getPlaceDestinationCode()) + ":" + RegularUtils.forceEmpty(bill.getPlaceDestinationName()));
|
|
|
writer.write("'");
|
|
|
writer.newLine();
|
|
|
count++;
|
|
|
@@ -2119,7 +2120,8 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
|
|
|
// 17 REMARKS 订舱备注 其他信息
|
|
|
if (ObjectUtils.isNotNull(bill.getBookingRemarks())) {
|
|
|
- List<String> bookingRemarks = RegularUtils.reformatEDIText(bill.getBookingRemarks(), 35, true);
|
|
|
+ // 已经做过转义
|
|
|
+ List<String> bookingRemarks = RegularUtils.reformatEDIText(bill.getBookingRemarks(), 35, false);
|
|
|
writer.write("17"); // 发货人代码为空
|
|
|
int lc = 0;
|
|
|
for (int l = 0; l < bookingRemarks.size(); l++) {
|
|
|
@@ -2150,6 +2152,9 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
if (l < 5) {
|
|
|
writer.write(":" + hShipper.get(l));
|
|
|
} else {
|
|
|
+ if(l==5){
|
|
|
+ writer.write("*");
|
|
|
+ }
|
|
|
goodsDescAddtionShipperMarks.add("*" + hShipper.get(l));
|
|
|
}
|
|
|
}
|
|
|
@@ -2165,6 +2170,9 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
if (l < 5) {
|
|
|
writer.write(":" + hConsignee.get(l));
|
|
|
} else {
|
|
|
+ if(l==5){
|
|
|
+ writer.write("**");
|
|
|
+ }
|
|
|
goodsDescAddtionCnee.add("**" + hConsignee.get(l));
|
|
|
}
|
|
|
}
|
|
|
@@ -2180,6 +2188,9 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
if (l < 5) {
|
|
|
writer.write(":" + hNotify.get(l));
|
|
|
} else {
|
|
|
+ if(l==5){
|
|
|
+ writer.write("***");
|
|
|
+ }
|
|
|
goodsDescAddtionNotify.add("***" + hNotify.get(l));
|
|
|
}
|
|
|
}
|
|
|
@@ -2187,6 +2198,8 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
|
|
|
+ DecimalFormat df2 = new DecimalFormat("#0.00");
|
|
|
+
|
|
|
// 41 CARGO OF BOOKING 订舱货物
|
|
|
// 注:1)货物有两种包装,如是大包装(如托盘),则必须同时填小包装件数和包装类型;
|
|
|
// 2) CARGO ID (货物标识)的填法: S=普通, R=冷冻, D=危险 , O=非标
|
|
|
@@ -2196,9 +2209,9 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 第一层包装件数 + 第一层包装类型 + 第一层包装说明
|
|
|
writer.write(":" + bill.getPackagesNumber() + ":" + bill.getPackagesCode() + ":" + bill.getPackagesDescribe());
|
|
|
// 第一层包装皮重 + 第一层包装尺码
|
|
|
- writer.write(":" + bill.getGrossWeight() + ":" + bill.getVolumeOfGoods() + ":" + bill.getPackagesDescribe());
|
|
|
+ writer.write(":" + df2.format(bill.getGrossWeight().doubleValue()) + ":" + bill.getVolumeOfGoods());
|
|
|
// 第二层包装件数 + 第二层包装类型 + 第二层包装说明 + 第二层包装皮重 + 第二层包装尺码 + 货毛重
|
|
|
- writer.write("::::::" + bill.getGrossWeight() + "'");
|
|
|
+ writer.write("::::::" + df2.format(bill.getGrossWeight()) + "'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
|
|
|
@@ -2238,11 +2251,11 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.write("44:" + line);
|
|
|
} else {
|
|
|
writer.write(":" + line);
|
|
|
- if (lc % 5 == 4 || lc == (goodsMarks.size() - 1)) {
|
|
|
- writer.write("'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- }
|
|
|
+ }
|
|
|
+ if (lc % 5 == 4 || lc == (goodsMarks.size() - 1)) {
|
|
|
+ writer.write("'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
}
|
|
|
} else {
|
|
|
goodsDescAddtionShipperMarks.add("*" + line);
|
|
|
@@ -2263,11 +2276,11 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.write("47:" + line);
|
|
|
} else {
|
|
|
writer.write(":" + line);
|
|
|
- if (lc % 5 == 4 || lc == (goodsDesc.size() - 1)) {
|
|
|
- writer.write("'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- }
|
|
|
+ }
|
|
|
+ if (lc % 5 == 4 || lc == (goodsDesc.size() - 1)) {
|
|
|
+ writer.write("'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -2283,11 +2296,11 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.write("47:" + line);
|
|
|
} else {
|
|
|
writer.write(":" + line);
|
|
|
- if (lc % 5 == 4 || lc == (goodsDescAddtionShipperMarks.size() - 1)) {
|
|
|
- writer.write("'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- }
|
|
|
+ }
|
|
|
+ if (lc % 5 == 4 || lc == (goodsDescAddtionShipperMarks.size() - 1)) {
|
|
|
+ writer.write("'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
}
|
|
|
|
|
|
lc++;
|
|
|
@@ -2301,11 +2314,11 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.write("47:" + line);
|
|
|
} else {
|
|
|
writer.write(":" + line);
|
|
|
- if (lc % 5 == 4 || lc == (goodsDescAddtionCnee.size() - 1)) {
|
|
|
- writer.write("'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- }
|
|
|
+ }
|
|
|
+ if (lc % 5 == 4 || lc == (goodsDescAddtionCnee.size() - 1)) {
|
|
|
+ writer.write("'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
}
|
|
|
|
|
|
lc++;
|
|
|
@@ -2319,11 +2332,11 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.write("47:" + line);
|
|
|
} else {
|
|
|
writer.write(":" + line);
|
|
|
- if (lc % 5 == 4 || lc == (goodsDescAddtionNotify.size() - 1)) {
|
|
|
- writer.write("'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- }
|
|
|
+ }
|
|
|
+ if (lc % 5 == 4 || lc == (goodsDescAddtionNotify.size() - 1)) {
|
|
|
+ writer.write("'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
}
|
|
|
|
|
|
lc++;
|
|
|
@@ -2339,7 +2352,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 集装箱状态 + 主拼号 + 装箱方式 自选/内装/自派车队等
|
|
|
writer.write(":" + ("FCL".equals(oneSoDto.getLoadType()) ? "F" : "L") + ":" + masterLclNo + "::::");
|
|
|
// 装箱地点代码 + 装箱地点说明 + 货主箱标志
|
|
|
- writer.write(map1.get("isSoc").equals(1) ? "Y" : "N");
|
|
|
+ writer.write(map1.get("isSoc").equals(1) ? "Y'" : "N'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
}
|
|
|
@@ -2348,7 +2361,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
|
|
|
// 99 TRAILER RECORD 尾记录
|
|
|
// RECORD TOTAL OF FILE 记录总数 9(6) 包括:头、尾记录
|
|
|
- writer.write("99:" + (++count) + "'");
|
|
|
+ writer.write("99:" + (count) + "'");
|
|
|
|
|
|
writer.close();
|
|
|
String status = sysClient.getParamService("upload.url");
|
|
|
@@ -3665,7 +3678,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
for (Map<String, Object> map1 : mapList) {
|
|
|
cargoline++;
|
|
|
writer.write("41 " + RegularUtils.paddingLeft("" + cargoline, '0', 3));
|
|
|
- writer.write(RegularUtils.paddingRight(map1.get("pil_commodity_code").toString().substring(0, 6), 9) + "Y");
|
|
|
+ writer.write(RegularUtils.paddingRight(RegularUtils.copySubstring(map1.get("pil_commodity_code").toString(), 0, 6), 9) + "Y");
|
|
|
writer.write(RegularUtils.paddingLeft(map1.get("cntrQty").toString(), '0', 6) + " ");
|
|
|
BigDecimal gw = new BigDecimal(ObjectUtils.isNull(map1.get("grossWeight")) ? "0" : map1.get("grossWeight").toString());
|
|
|
if (gw.equals(BigDecimal.ZERO)) {
|
|
|
@@ -3691,9 +3704,9 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 品名
|
|
|
writer.write(RegularUtils.paddingRight(map1.get("pil_commodity_name").toString(), 48));
|
|
|
// 代码
|
|
|
- writer.write(RegularUtils.paddingRight(map1.get("pil_commodity_code").toString().substring(0, 4), 4));
|
|
|
+ writer.write(RegularUtils.paddingRight(RegularUtils.copySubstring(map1.get("pil_commodity_code").toString(), 0, 4), 4));
|
|
|
// 箱型
|
|
|
- writer.write(RegularUtils.paddingLeft(map1.get("sizeType").toString().substring(0, 4), 4));
|
|
|
+ writer.write(RegularUtils.paddingLeft(RegularUtils.copySubstring(map1.get("sizeType").toString(), 0, 4), 4));
|
|
|
writer.write("KGMMTQ" + ("1".equals(map1.get("isSoc")) ? "S" : "Y") + RegularUtils.paddingRight(117));
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
@@ -4089,7 +4102,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
for (Map<String, Object> map1 : mapList) {
|
|
|
cargoline++;
|
|
|
writer.write("41 " + RegularUtils.paddingLeft("" + cargoline, '0', 3));
|
|
|
- writer.write(RegularUtils.paddingRight(map1.get("pil_commodity_code").toString().substring(0, 6), 9) + "Y");
|
|
|
+ writer.write(RegularUtils.paddingRight(RegularUtils.copySubstring(map1.get("pil_commodity_code").toString(), 0, 6), 9) + "Y");
|
|
|
writer.write(RegularUtils.paddingLeft(map1.get("loaded_CntrQty").toString(), '0', 6) + " ");
|
|
|
BigDecimal gw = new BigDecimal(ObjectUtils.isNull(map1.get("loaded_grossWeight")) ? "0" : map1.get("loaded_grossWeight").toString());
|
|
|
js = gw.setScale(3, RoundingMode.HALF_UP).toString();
|
|
|
@@ -4106,9 +4119,9 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 品名
|
|
|
writer.write(RegularUtils.paddingRight(map1.get("pil_commodity_name").toString(), 48));
|
|
|
// 代码
|
|
|
- writer.write(RegularUtils.paddingRight(map1.get("pil_commodity_code").toString().substring(0, 4), 4));
|
|
|
+ writer.write(RegularUtils.paddingRight(RegularUtils.copySubstring(map1.get("pil_commodity_code").toString(), 0, 4), 4));
|
|
|
// 箱型
|
|
|
- writer.write(RegularUtils.paddingLeft(map1.get("sizeType").toString().substring(0, 4), 4));
|
|
|
+ writer.write(RegularUtils.paddingLeft(RegularUtils.copySubstring(map1.get("sizeType").toString(), 0, 4), 4));
|
|
|
writer.write("KGMMTQ" + ("1".equals(map1.get("isSoc")) ? "S" : "Y") + RegularUtils.paddingRight(117));
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
@@ -4439,14 +4452,18 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.write("17 " + RegularUtils.paddingRight("CN893004", 10 + 3 + 4));
|
|
|
// V_SenderTel
|
|
|
// if(CORPID.Asinteger=8562,'0530-8312038',if(CORPID.Asinteger=8563,'0530-8312038','0532-82668811-175'))
|
|
|
+ // SYSID CORPID CORPNO SNAME CNAME
|
|
|
+ // 1 8562 BKSDJIANONGGUOJI 佳农国际贸易 佳农国际贸易
|
|
|
+ // 1 8563 BKSDJIANONG 佳农果蔬 佳农果蔬
|
|
|
|
|
|
//V_SenderName
|
|
|
// if(CORPID.Asinteger=8562,'SHANDONG GOODFARMER INTERNATIONAL TRADING CO., LTD',
|
|
|
// if(CORPID.Asinteger=8563,'SHANDONG GOODFARMER FRUITS AND VEGETABLES CO.,LT D',
|
|
|
// 'QINGDAO JET MARINE LOGISTICS CO.,LTD. '))
|
|
|
// wfg
|
|
|
- String senderTel = "0530-8312038";
|
|
|
- String senderName = "QINGDAO JET MARINE LOGISTICS CO.,LTD.";
|
|
|
+ Long corpId = mellSoDto.getCorpId();
|
|
|
+ String senderTel = corpId==8562?"0530-8312038":(corpId==8563?"0530-8312038":"0532-82668811-175");
|
|
|
+ String senderName = corpId==8562?"SHANDONG GOODFARMER INTERNATIONAL TRADING CO., LTD":(corpId==8563?"SHANDONG GOODFARMER FRUITS AND VEGETABLES CO.,LTD":"QINGDAO JET MARINE LOGISTICS CO.,LTD.");
|
|
|
writer.write(RegularUtils.paddingRight(senderName, 70) + RegularUtils.paddingRight(senderTel, 35 + 35 + 35 + 17 + 18 + 4));
|
|
|
writer.write(RegularUtils.paddingRight(ObjectUtils.isNotNull(mellSoDto.getCarrierArgreementNo()) ? mellSoDto.getCarrierArgreementNo() : "CN893004", 8 + 6));
|
|
|
writer.newLine();
|
|
|
@@ -4530,8 +4547,8 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
for (Map<String, Object> map1 : mapList) {
|
|
|
cargoline++;
|
|
|
writer.write("41 " + RegularUtils.paddingLeft("" + cargoline, '0', 3));
|
|
|
- writer.write(RegularUtils.paddingRight(map1.get("pil_commodity_code").toString().substring(0, 6), 9) + "Y");
|
|
|
- writer.write(RegularUtils.paddingLeft(map1.get("cntrQty").toString(), '0', 6 + 4));
|
|
|
+ writer.write(RegularUtils.paddingRight(RegularUtils.copySubstring(map1.get("pil_commodity_code").toString(), 0, 6), 9) + "Y");
|
|
|
+ writer.write(RegularUtils.paddingLeft(map1.get("cntrQty").toString(), '0', 6) + " ");
|
|
|
BigDecimal gw = new BigDecimal(ObjectUtils.isNull(map1.get("grossWeight")) ? "0" : map1.get("grossWeight").toString());
|
|
|
if (gw.equals(BigDecimal.ZERO)) {
|
|
|
js = mellSoDto.getGrossWeight().setScale(3, RoundingMode.HALF_UP).toString();
|
|
|
@@ -4556,9 +4573,9 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 品名
|
|
|
writer.write(RegularUtils.paddingRight(map1.get("pil_commodity_name").toString(), 48));
|
|
|
// 代码
|
|
|
- writer.write(RegularUtils.paddingRight(map1.get("pil_commodity_code").toString().substring(0, 4), 4));
|
|
|
+ writer.write(RegularUtils.paddingRight(RegularUtils.copySubstring(map1.get("pil_commodity_code").toString(), 0, 4), 4));
|
|
|
// 箱型
|
|
|
- writer.write(RegularUtils.paddingLeft(map1.get("sizeType").toString().substring(0, 4), 4));
|
|
|
+ writer.write(RegularUtils.paddingLeft(RegularUtils.copySubstring(map1.get("sizeType").toString(), 0, 4), 4));
|
|
|
writer.write("KGMMTQ" + ("1".equals(map1.get("isSoc")) ? "S" : "Y") + RegularUtils.paddingRight(117));
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
@@ -4648,12 +4665,14 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.write(RegularUtils.paddingLeft("" + dangerLine, '0', 3));
|
|
|
writer.write(RegularUtils.paddingRight(mellSoDto.getDgUnCode(), 5));
|
|
|
writer.write(RegularUtils.paddingRight(mellSoDto.getDgImdgCode(), 4));
|
|
|
- writer.write(" KGM" + RegularUtils.paddingRight(mellSoDto.getDgImdgCode(), 4));
|
|
|
+ writer.write(" KGM" + RegularUtils.paddingRight("", 9));
|
|
|
// 件重尺根据箱量求平均值
|
|
|
- BigDecimal nwt = mellSoDto.getGrossWeight().divide(BigDecimal.valueOf(cntrQty), 3, RoundingMode.HALF_UP);
|
|
|
- writer.write(RegularUtils.paddingLeft(nwt.toString(), '0', 9));
|
|
|
+// BigDecimal nwt = mellSoDto.getGrossWeight().divide(BigDecimal.valueOf(cntrQty), 3, RoundingMode.HALF_UP);
|
|
|
+// writer.write(RegularUtils.paddingLeft(nwt.toString(), '0', 9));
|
|
|
BigDecimal gwt = mellSoDto.getGrossWeight().divide(BigDecimal.valueOf(cntrQty), 3, RoundingMode.HALF_UP);
|
|
|
- writer.write(RegularUtils.paddingLeft(gwt.toString(), '0', 9));
|
|
|
+ js = gwt.setScale(3, RoundingMode.HALF_UP).toString();
|
|
|
+ // 毛重
|
|
|
+ writer.write(RegularUtils.paddingLeft(js.replace(".", ""), '0', 9));
|
|
|
writer.write(mellSoDto.getDgIsMarinePollutant() == 1 ? "Y" : "N");
|
|
|
writer.write(RegularUtils.paddingRight(24 + 25));
|
|
|
writer.write(RegularUtils.paddingRight(mellSoDto.getDgPackingLevel(), 3));
|
|
|
@@ -4678,7 +4697,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.write("74 " + RegularUtils.paddingRight(5 + 8 + 4 + 3) + "N0301");
|
|
|
// 服务合同
|
|
|
writer.write(RegularUtils.paddingRight(10 + 5 + 5));
|
|
|
- writer.write(RegularUtils.paddingLeft(mellSoDto.getPackagesNumber().setScale(3, RoundingMode.HALF_UP).toString(), 8));
|
|
|
+ writer.write(RegularUtils.paddingLeft(mellSoDto.getPackagesNumber().setScale(0, RoundingMode.HALF_UP).toString(), 8));
|
|
|
String pkgsDescr = ObjectUtils.isNull(mellSoDto.getPackagesDescribe()) ? "" : mellSoDto.getPackagesDescribe();
|
|
|
writer.write(RegularUtils.paddingRight(RegularUtils.copySubstring(pkgsDescr, 0, 8), 8));
|
|
|
writer.write(RegularUtils.paddingRight(12 + 1 + 1 + 8 + 8 + 5 + 5 + 8 + 5 + 5 + 126));
|
|
|
@@ -4953,7 +4972,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
for (Map<String, Object> map1 : mapList) {
|
|
|
cargoline++;
|
|
|
writer.write("41 " + RegularUtils.paddingLeft("" + cargoline, '0', 3));
|
|
|
- writer.write(RegularUtils.paddingRight(map1.get("pil_commodity_code").toString().substring(0, 6), 9) + "Y");
|
|
|
+ writer.write(RegularUtils.paddingRight(RegularUtils.copySubstring(map1.get("pil_commodity_code").toString(), 0, 6), 9) + "Y");
|
|
|
writer.write(RegularUtils.paddingLeft(map1.get("loaded_CntrQty").toString(), '0', 6) + " ");
|
|
|
BigDecimal gw = new BigDecimal(ObjectUtils.isNull(map1.get("loaded_grossWeight")) ? "0" : map1.get("loaded_grossWeight").toString());
|
|
|
js = gw.setScale(3, RoundingMode.HALF_UP).toString();
|
|
|
@@ -4970,9 +4989,9 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 品名
|
|
|
writer.write(RegularUtils.paddingRight(map1.get("pil_commodity_name").toString(), 48));
|
|
|
// 代码
|
|
|
- writer.write(RegularUtils.paddingRight(map1.get("pil_commodity_code").toString().substring(0, 4), 4));
|
|
|
+ writer.write(RegularUtils.paddingRight(RegularUtils.copySubstring(map1.get("pil_commodity_code").toString(), 0, 4), 4));
|
|
|
// 箱型
|
|
|
- writer.write(RegularUtils.paddingLeft(map1.get("sizeType").toString().substring(0, 4), 4));
|
|
|
+ writer.write(RegularUtils.paddingLeft(RegularUtils.copySubstring(map1.get("sizeType").toString(), 0, 4), 4));
|
|
|
writer.write("KGMMTQ" + ("1".equals(map1.get("isSoc")) ? "S" : "Y") + RegularUtils.paddingRight(117));
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
@@ -5253,7 +5272,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// ACI Canada Aci
|
|
|
// V_ACIPROP IF(ACIPROP='Y','Y',IF(ACIPROP='N','N',IF(ACIPROP='1',' ','')))
|
|
|
// ACI NO VarChar(35)
|
|
|
- writer.write(":'");
|
|
|
+ writer.write("::'");
|
|
|
writer.newLine();
|
|
|
count++;
|
|
|
|
|
|
@@ -5283,12 +5302,12 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 14 FREIGHT CLAUSE 运费条款
|
|
|
String pm = hmmSoDto.getMPayMode();
|
|
|
String pmc = "PP".equals(pm) ? "P" : ("CC".equals(pm) ? "C" : "OTH");
|
|
|
- writer.write("14:" + pm + ":" + ("PP".equals(pm) ? "FREIGHT PREPAID" : ("CC".equals(pm) ? "FREIGHT COLLECT" : "OTHER")) + "'");
|
|
|
+ writer.write("14:" + pmc + ":" + ("PP".equals(pm) ? "FREIGHT PREPAID" : ("CC".equals(pm) ? "FREIGHT COLLECT" : "OTHER")) + "'");
|
|
|
writer.newLine();
|
|
|
count++;
|
|
|
|
|
|
// 15 运费及费用项目
|
|
|
- writer.write("15::NONE:" + pm + "'");
|
|
|
+ writer.write("15::NONE:" + pmc + "'");
|
|
|
writer.newLine();
|
|
|
count++;
|
|
|
|
|
|
@@ -5386,10 +5405,10 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
// 第一层包装件数 + 第一层包装类型 + 第一层包装说明
|
|
|
writer.write(":" + hmmSoDto.getPackagesNumber() + ":" + hmmSoDto.getPackagesCode() + ":" + hmmSoDto.getPackagesDescribe());
|
|
|
// 第一层包装皮重 + 第一层包装尺码
|
|
|
- writer.write(":" + hmmSoDto.getGrossWeight().setScale(3, BigDecimal.ROUND_HALF_UP));
|
|
|
+ writer.write(":" + hmmSoDto.getGrossWeight().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
writer.write(":" + hmmSoDto.getVolumeOfGoods().setScale(3, BigDecimal.ROUND_HALF_UP));
|
|
|
// 第二层包装件数 + 第二层包装类型 + 第二层包装说明 + 第二层包装皮重 + 第二层包装尺码 + 货毛重
|
|
|
- writer.write("::::::" + hmmSoDto.getGrossWeight().setScale(3, BigDecimal.ROUND_HALF_UP) + "'");
|
|
|
+ writer.write("::::::" + hmmSoDto.getGrossWeight().setScale(2, BigDecimal.ROUND_HALF_UP) + "'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
|
|
|
@@ -5405,7 +5424,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
throw new SecurityException("温度和通风度必须同时填写!");
|
|
|
}
|
|
|
|
|
|
- writer.write("43:"+hmmSoDto.getDgImdgCode()+"::"+hmmSoDto.getDgUnCode()+":::::::" + map.get("ventilation") + ":C:" + map.get("temperature") + "::::::::'");
|
|
|
+ writer.write("43:"+hmmSoDto.getDgImdgCode()+"::"+hmmSoDto.getDgUnCode()+":::::::" + map.get("ventilation") + ":"+(ObjectUtils.isNotNull(map.get("temperature"))?"C":"")+":" + map.get("temperature") + ":::::::'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
}
|
|
|
@@ -5426,7 +5445,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
|
|
|
- // 47 CARGO DESCRIPTION 货物描述 5行一组
|
|
|
+ // 47 CARGO DESCRIPTION 货物描述 5行一组,每行47字符
|
|
|
List<String> goodsDesc = RegularUtils.reformatEDIText(hmmSoDto.getGoodsDesc(), 47, true);
|
|
|
List<String> goodsDescAddtion2 = new ArrayList<>();
|
|
|
writer.write("47");
|
|
|
@@ -5465,7 +5484,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
|
|
|
// 99 TRAILER RECORD 尾记录
|
|
|
// RECORD TOTAL OF FILE 记录总数 9(6) 包括:头、尾记录
|
|
|
- writer.write("99:" + (++count) + "'");
|
|
|
+ writer.write("99:" + (count) + "'");
|
|
|
|
|
|
writer.close();
|
|
|
String status = sysClient.getParamService("upload.url");
|
|
|
@@ -6086,7 +6105,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.write("MEA+AAE+AAW+CBM:" + smlSoDto.getVolumeOfGoods() + "'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
- writer.write("MEA+AAE+G+KGM:" + smlSoDto.getGrossWeight() + "'");
|
|
|
+ writer.write("MEA+AAE+G+KGM:" + smlSoDto.getGrossWeight().setScale(2, BigDecimal.ROUND_HALF_UP) + "'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
|