|
|
@@ -16,9 +16,12 @@ import java.io.FileWriter;
|
|
|
import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.regex.Pattern;
|
|
|
|
|
|
/**
|
|
|
* @author :jixinyuan
|
|
|
@@ -29,6 +32,7 @@ import java.util.Map;
|
|
|
public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
@Override
|
|
|
public FilesCenter sendingInttraSo(@Validated InttraSoDto inttraSoDto) {
|
|
|
+ Date date = new Date();
|
|
|
try {
|
|
|
//生成edi文件
|
|
|
File file = new File("/home/minio/file/" + AuthUtil.getTenantId() + "-bladex/upload", inttraSoDto.getEdiTypes().getCode() + ".txt");
|
|
|
@@ -39,11 +43,12 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
int count = 0;
|
|
|
// 向文件写入数据
|
|
|
/* =================005================= */
|
|
|
- writer.write("UNB+UNOC:2+" + inttraSoDto.getIdentifying() + ":ZZZ+INTTRA:ZZZ+" + inttraSoDto.getDate() + "+" + inttraSoDto.getFileExchangeNumber() + "'");
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd:hhmm");
|
|
|
+ writer.write("UNB+UNOA:2+" + inttraSoDto.getIdentifying() + ":ZZZ+INTTRA:ZZZ+" + sdf.format(date) + "+" + inttraSoDto.getFileExchangeNumber() + "'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
/* =================0010================= */
|
|
|
- writer.write("UNH+" + inttraSoDto.getInformationNo() + "+IFTMIN:D:99B:UN'");
|
|
|
+ writer.write("UNH+80+IFTMIN:D:99B:UN'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
/* =================0020================= */
|
|
|
@@ -134,13 +139,13 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
}
|
|
|
- if (ObjectUtils.isNotNull(inttraSoDto.getOrderNo())) {
|
|
|
- writer.write("RFF+ON:" + inttraSoDto.getOrderNo() + "'");
|
|
|
+ if (ObjectUtils.isNotNull(inttraSoDto.getJobId())) {
|
|
|
+ writer.write("RFF+FF:" + inttraSoDto.getJobId() + "'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
}
|
|
|
- if (ObjectUtils.isNotNull(inttraSoDto.getJobId())) {
|
|
|
- writer.write("RFF+FF:" + inttraSoDto.getJobId() + "'");
|
|
|
+ if (ObjectUtils.isNotNull(inttraSoDto.getOrderNo())) {
|
|
|
+ writer.write("RFF+ON:" + inttraSoDto.getOrderNo() + "'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
}
|
|
|
@@ -180,30 +185,95 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
count += 1;
|
|
|
}
|
|
|
/* =================0520================= */
|
|
|
+ writer.write("LOC+7+" + inttraSoDto.getPlaceDeliveryCode() + "::6:" + inttraSoDto.getPlaceDeliveryName() + "'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
writer.write("LOC+9+" + inttraSoDto.getPolCode() + "::6:" + inttraSoDto.getPolName() + "'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
/* =================0530================= */
|
|
|
if (ObjectUtils.isNotNull(inttraSoDto.getEtd())) {
|
|
|
- if ("MAEU".equals(inttraSoDto.getCarrierCode())) {
|
|
|
- writer.write("DTM+133:" + inttraSoDto.getEtd() + ":102'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- }
|
|
|
+ writer.write("DTM+133:" + inttraSoDto.getEtd() + ":102'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
}
|
|
|
/* =================0520================= */
|
|
|
+ writer.write("LOC+11+" + inttraSoDto.getPodCode() + "::6:" + inttraSoDto.getPodName() + "'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
writer.write("LOC+88+" + inttraSoDto.getPlaceReceiptCode() + "::6:" + inttraSoDto.getPlaceReceiptName() + "'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
- writer.write("LOC+11+" + inttraSoDto.getPodCode() + "::6:" + inttraSoDto.getPodName() + "'");
|
|
|
+ writer.write("NAD+CA+" + inttraSoDto.getCarrierCode() + ":160:86++" + inttraSoDto.getCarrierName() + "'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
- writer.write("LOC+7+" + inttraSoDto.getPlaceDeliveryCode() + "::6:" + inttraSoDto.getPlaceDeliveryName() + "'");
|
|
|
+ writer.write("NAD+HI+" + inttraSoDto.getSenderCodeS() + ":160:86++" + inttraSoDto.getSenderCodeS() + "'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
+ /* =================0620================= */
|
|
|
+ writer.write("CTA+IC+:" + inttraSoDto.getSenderContacts() + "'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
+ /* =================0630================= */
|
|
|
+ writer.write("COM+" + inttraSoDto.getSenderTel() + ":TE'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
+ writer.write("COM+" + inttraSoDto.getSenderEmail() + ":EM'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
/* =================0580================= */
|
|
|
+ if (ObjectUtils.isNotNull(inttraSoDto.getFreightForwarderCode())) {
|
|
|
+ writer.write("NAD+FW+" + inttraSoDto.getFreightForwarderCode() + ":160");
|
|
|
+ if (ObjectUtils.isNotNull(inttraSoDto.getFreightForwarderName())) {
|
|
|
+ writer.write(":86++" + inttraSoDto.getFreightForwarderName() + "'");
|
|
|
+ writer.newLine();
|
|
|
+ } else {
|
|
|
+ writer.write("'");
|
|
|
+ writer.newLine();
|
|
|
+ }
|
|
|
+ count += 1;
|
|
|
+ }
|
|
|
+ /* =================0580================= */
|
|
|
writer.write("NAD+CZ+++" + inttraSoDto.getHsHipperOne());
|
|
|
- if (ObjectUtils.isNotNull(inttraSoDto.getHsHipperFive())) {
|
|
|
+ if (ObjectUtils.isNotNull(inttraSoDto.getHsHipperOne())) {
|
|
|
+ String[] arr = inttraSoDto.getHsHipperOne().split("\n");
|
|
|
+ //todo NAD+CZ
|
|
|
+ List<String> list = new ArrayList<>();
|
|
|
+ Pattern pattern1 = Pattern.compile("[a-zA-Z]");
|
|
|
+ for (String item : arr) {
|
|
|
+ String go = item.trim();
|
|
|
+ while (!go.isEmpty()) {
|
|
|
+ if (go.length() <= 35) {
|
|
|
+ list.add(go);
|
|
|
+ go = "";
|
|
|
+ } else {
|
|
|
+ if (!pattern1.matcher(go.charAt(35) + "").matches()) {
|
|
|
+ list.add(go.substring(0, 35));
|
|
|
+ go = go.substring(35);
|
|
|
+ } else {
|
|
|
+ int p = -1;
|
|
|
+ for (int i = 34; i >= 0; i--) {
|
|
|
+ if (!pattern1.matcher(go.charAt(i) + "").matches()) {
|
|
|
+ p = i;
|
|
|
+ break;
|
|
|
+ } else {
|
|
|
+ list.add(go);
|
|
|
+ go = "";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (p == -1) {
|
|
|
+ list.add(go.substring(0, 35));
|
|
|
+ go = go.substring(35);
|
|
|
+ } else {
|
|
|
+ list.add(go.substring(0, p + 1));
|
|
|
+ go = go.substring(p + 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /*if (ObjectUtils.isNotNull(inttraSoDto.getHsHipperFive())) {
|
|
|
if (ObjectUtils.isNotNull(inttraSoDto.getHsHipperTwo())) {
|
|
|
writer.write(":" + inttraSoDto.getHsHipperTwo());
|
|
|
} else {
|
|
|
@@ -247,7 +317,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
+ }*/
|
|
|
writer.write("'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
@@ -350,9 +420,105 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.write("'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
- writer.write("NAD+CA+" + inttraSoDto.getCarrierCode() + ":160:86++" + inttraSoDto.getCarrierName() + "'");
|
|
|
+ /* =================0650================= */
|
|
|
+ if (ObjectUtils.isNotNull(inttraSoDto.getBillLadingType())) {
|
|
|
+ writer.write("DOC+" + inttraSoDto.getBillLadingType());
|
|
|
+ if (ObjectUtils.isNotNull(inttraSoDto.getPaymentStatus())) {
|
|
|
+ writer.write("+:" + inttraSoDto.getPaymentStatus() + "+:" + inttraSoDto.getBillLadingNumber() + "'");
|
|
|
+ writer.newLine();
|
|
|
+ } else {
|
|
|
+ writer.write("+:+:" + inttraSoDto.getBillLadingNumber() + "'");
|
|
|
+ writer.newLine();
|
|
|
+ }
|
|
|
+ count += 1;
|
|
|
+ }
|
|
|
+ /* =================0910================= */
|
|
|
+ if (ObjectUtils.isNotNull(inttraSoDto.getPackagesNumbers())) {
|
|
|
+ writer.write("GID+1+" + inttraSoDto.getPackagesNumbers() + ":" + inttraSoDto.getPackagesCode() + "::6");
|
|
|
+ if (ObjectUtils.isNotNull(inttraSoDto.getPackagesDescribe())) {
|
|
|
+ writer.write(":" + inttraSoDto.getPackagesDescribe() + "'");
|
|
|
+ writer.newLine();
|
|
|
+ } else {
|
|
|
+ writer.write("'");
|
|
|
+ writer.newLine();
|
|
|
+ }
|
|
|
+ count += 1;
|
|
|
+ }
|
|
|
+ /* =================0980================= */
|
|
|
+ if (ObjectUtils.isNotNull(inttraSoDto.getHsCode())) {
|
|
|
+ writer.write("PIA+5+" + inttraSoDto.getHsCode() + ":HS'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
+ }
|
|
|
+ /* =================0990================= */
|
|
|
+ writer.write("FTX+AAA+++" + inttraSoDto.getProductName() + "'");
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
+ /* =================1070================= */
|
|
|
+ writer.write("MEA+AAE+AAW+MTQ:" + inttraSoDto.getMeasurement() + "'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
+ writer.write("MEA+AAE+WT+KGM:" + inttraSoDto.getGrossWeight() + "'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
+ /* =================1160================= */
|
|
|
+ BigDecimal sum = new BigDecimal(inttraSoDto.getMarks().length()).divide(new BigDecimal("35"), 2, RoundingMode.HALF_UP).setScale(0, RoundingMode.HALF_UP);
|
|
|
+ int subS = 0;
|
|
|
+ int subE = 35;
|
|
|
+ for (int i = 0; i <= sum.intValue(); i++) {
|
|
|
+ String marks = "";
|
|
|
+ if (inttraSoDto.getMarks().length() > subE) {
|
|
|
+ marks = inttraSoDto.getMarks().substring(subS, subE);
|
|
|
+ } else {
|
|
|
+ marks = inttraSoDto.getMarks().substring(subS);
|
|
|
+ }
|
|
|
+ writer.write("PCI++" + marks + "'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
+ subS = subS + 35;
|
|
|
+ subE = subE + 35;
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(inttraSoDto.getBox())) {
|
|
|
+ List<Map<String, Object>> mapList = inttraSoDto.getBox();
|
|
|
+ for (Map<String, Object> map1 : mapList) {
|
|
|
+ /* =================1660================= */
|
|
|
+ writer.write("EQD+CN++" + map1.get("boxCode"));
|
|
|
+ if (ObjectUtils.isNotNull(map1.get("shipperBoxIdentification"))) {
|
|
|
+ writer.write("+" + map1.get("shipperBoxIdentification") + "'");
|
|
|
+ writer.newLine();
|
|
|
+ } else {
|
|
|
+ writer.write("'");
|
|
|
+ writer.newLine();
|
|
|
+ }
|
|
|
+ count += 1;
|
|
|
+ /* =================1670================= */
|
|
|
+ if (ObjectUtils.isNotNull(map1.get("boxNumber"))) {
|
|
|
+ writer.write("EQN+" + map1.get("boxNumber") + "'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
+ }
|
|
|
+ /* =================1690================= */
|
|
|
+ if (ObjectUtils.isNotNull(map1.get("ventilation"))) {
|
|
|
+ writer.write("MEA+AAE+AAS+CBM:" + map1.get("ventilation") + "'");
|
|
|
+ writer.newLine();
|
|
|
+ count += 1;
|
|
|
+ }
|
|
|
+ /* =================1740================= */
|
|
|
+ if (ObjectUtils.isNotNull(map1.get("temperature"))) {
|
|
|
+ writer.write("TMP+2+" + map1.get("temperature"));
|
|
|
+ if (ObjectUtils.isNotNull(map1.get("temperatureUnit"))) {
|
|
|
+ writer.write(":" + map1.get("temperatureUnit") + "'");
|
|
|
+ writer.newLine();
|
|
|
+ } else {
|
|
|
+ writer.write("'");
|
|
|
+ writer.newLine();
|
|
|
+ }
|
|
|
+ count += 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
if (ObjectUtils.isNotNull(inttraSoDto.getContactInformation())) {
|
|
|
writer.write("NAD+MR+++" + inttraSoDto.getContactInformation() + "'");
|
|
|
writer.newLine();
|
|
|
@@ -370,7 +536,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
}
|
|
|
- if (ObjectUtils.isNotNull(inttraSoDto.getTransportTermName())){
|
|
|
+ if (ObjectUtils.isNotNull(inttraSoDto.getTransportTermName())) {
|
|
|
if ("DOOR".equals(inttraSoDto.getTransportTermName().substring(0, 4))) {
|
|
|
/* =================0580================= */
|
|
|
if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToName())) {
|
|
|
@@ -503,91 +669,6 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- /* =================0580================= */
|
|
|
- if (ObjectUtils.isNotNull(inttraSoDto.getFreightForwarderCode())) {
|
|
|
- writer.write("NAD+FW+" + inttraSoDto.getFreightForwarderCode() + ":160");
|
|
|
- if (ObjectUtils.isNotNull(inttraSoDto.getFreightForwarderName())) {
|
|
|
- writer.write(":86++" + inttraSoDto.getFreightForwarderName() + "'");
|
|
|
- writer.newLine();
|
|
|
- } else {
|
|
|
- writer.write("'");
|
|
|
- writer.newLine();
|
|
|
- }
|
|
|
- count += 1;
|
|
|
- }
|
|
|
- writer.write("NAD+HI+" + inttraSoDto.getSenderCodeS() + ":160:86++" + inttraSoDto.getSenderCodeS() + "'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- /* =================0620================= */
|
|
|
- writer.write("CTA+IC+:" + inttraSoDto.getSenderContacts() + "'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- /* =================0630================= */
|
|
|
- writer.write("COM+" + inttraSoDto.getSenderTel() + ":TE'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- writer.write("COM+" + inttraSoDto.getSenderEmail() + ":EM'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- /* =================0650================= */
|
|
|
- if (ObjectUtils.isNotNull(inttraSoDto.getBillLadingType())) {
|
|
|
- writer.write("DOC+" + inttraSoDto.getBillLadingType());
|
|
|
- if (ObjectUtils.isNotNull(inttraSoDto.getPaymentStatus())) {
|
|
|
- writer.write("+:" + inttraSoDto.getPaymentStatus() + "+:" + inttraSoDto.getBillLadingNumber() + "'");
|
|
|
- writer.newLine();
|
|
|
- } else {
|
|
|
- writer.write("+:+:" + inttraSoDto.getBillLadingNumber() + "'");
|
|
|
- writer.newLine();
|
|
|
- }
|
|
|
- count += 1;
|
|
|
- }
|
|
|
- /* =================0910================= */
|
|
|
- if (ObjectUtils.isNotNull(inttraSoDto.getPackagesNumbers())) {
|
|
|
- writer.write("GID+1+" + inttraSoDto.getPackagesNumbers() + ":" + inttraSoDto.getPackagesCode() + "::6");
|
|
|
- if (ObjectUtils.isNotNull(inttraSoDto.getPackagesDescribe())) {
|
|
|
- writer.write(":" + inttraSoDto.getPackagesDescribe() + "'");
|
|
|
- writer.newLine();
|
|
|
- } else {
|
|
|
- writer.write("'");
|
|
|
- writer.newLine();
|
|
|
- }
|
|
|
- count += 1;
|
|
|
- }
|
|
|
- /* =================0980================= */
|
|
|
- if (ObjectUtils.isNotNull(inttraSoDto.getHsCode())) {
|
|
|
- writer.write("PIA+5+" + inttraSoDto.getHsCode() + ":HS'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- }
|
|
|
- /* =================0990================= */
|
|
|
- writer.write("FTX+AAA+++" + inttraSoDto.getProductName() + "'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- /* =================1070================= */
|
|
|
- writer.write("MEA+AAE+WT+KGM:" + inttraSoDto.getGrossWeight() + "'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- writer.write("MEA+AAE+AAW+MTQ:" + inttraSoDto.getMeasurement() + "'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- /* =================1160================= */
|
|
|
- BigDecimal sum = new BigDecimal(inttraSoDto.getMarks().length()).divide(new BigDecimal("35"), 2, RoundingMode.HALF_UP).setScale(0, RoundingMode.HALF_UP);
|
|
|
- int subS = 0;
|
|
|
- int subE = 35;
|
|
|
- for (int i = 0; i <= sum.intValue(); i++) {
|
|
|
- String marks = "";
|
|
|
- if (inttraSoDto.getMarks().length() > subE) {
|
|
|
- marks = inttraSoDto.getMarks().substring(subS, subE);
|
|
|
- } else {
|
|
|
- marks = inttraSoDto.getMarks().substring(subS);
|
|
|
- }
|
|
|
- writer.write("PCI++" + marks + "'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- subS = subS + 35;
|
|
|
- subE = subE + 35;
|
|
|
- }
|
|
|
/* =================1520================= */
|
|
|
if (ObjectUtils.isNotNull(inttraSoDto.getDgImdgCode())) {
|
|
|
writer.write("DGS+IMD+" + inttraSoDto.getDgImdgCode());
|
|
|
@@ -721,49 +802,11 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
writer.newLine();
|
|
|
count += 1;
|
|
|
}
|
|
|
- if (ObjectUtils.isNotNull(inttraSoDto.getBox())) {
|
|
|
- List<Map<String, Object>> mapList = inttraSoDto.getBox();
|
|
|
- for (Map<String, Object> map1 : mapList) {
|
|
|
- /* =================1660================= */
|
|
|
- writer.write("EQD+CN++" + map1.get("boxCode"));
|
|
|
- if (ObjectUtils.isNotNull(map1.get("shipperBoxIdentification"))) {
|
|
|
- writer.write("+" + map1.get("shipperBoxIdentification") + "'");
|
|
|
- writer.newLine();
|
|
|
- } else {
|
|
|
- writer.write("'");
|
|
|
- writer.newLine();
|
|
|
- }
|
|
|
- count += 1;
|
|
|
- /* =================1670================= */
|
|
|
- if (ObjectUtils.isNotNull(map1.get("boxNumber"))) {
|
|
|
- writer.write("EQN+" + map1.get("boxNumber") + "'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- }
|
|
|
- /* =================1690================= */
|
|
|
- if (ObjectUtils.isNotNull(map1.get("ventilation"))) {
|
|
|
- writer.write("MEA+AAE+AAS+CBM:" + map1.get("ventilation") + "'");
|
|
|
- writer.newLine();
|
|
|
- count += 1;
|
|
|
- }
|
|
|
- /* =================1740================= */
|
|
|
- if (ObjectUtils.isNotNull(map1.get("temperature"))) {
|
|
|
- writer.write("TMP+2+" + map1.get("temperature"));
|
|
|
- if (ObjectUtils.isNotNull(map1.get("temperatureUnit"))) {
|
|
|
- writer.write(":" + map1.get("temperatureUnit") + "'");
|
|
|
- writer.newLine();
|
|
|
- } else {
|
|
|
- writer.write("'");
|
|
|
- writer.newLine();
|
|
|
- }
|
|
|
- count += 1;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
/* =================2000================= */
|
|
|
count = count + 2;
|
|
|
- writer.write("UNT+" + count + "+" + inttraSoDto.getInformationNoEnd() + "'");
|
|
|
+ writer.write("UNT+" + count + "+80'");
|
|
|
writer.newLine();
|
|
|
/* =================2010================= */
|
|
|
writer.write("UNZ+1+" + inttraSoDto.getFileExchangeNumberEnd() + "'");
|