|
@@ -6487,5 +6487,362 @@ public class EDISenderServiceImpl implements IEDISenderService {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public FilesCenter sendingYmlBooking(InttraSoDto ymlSoDto, JsonNode ediParamCarrier) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ String localFolder = genEdiLocalFolder(ymlSoDto, ediParamCarrier);
|
|
|
|
|
+ String localFileName = genEdiLocalFileName(ymlSoDto, ediParamCarrier);
|
|
|
|
|
+ File file = new File(localFolder, localFileName);
|
|
|
|
|
+ file.createNewFile();
|
|
|
|
|
+ // 打开文件输出流进行写入操作
|
|
|
|
|
+ BufferedWriter writer = new BufferedWriter(new FileWriter(file));
|
|
|
|
|
+ int count = 0;
|
|
|
|
|
+ String carrierCode = ymlSoDto.getCarrierCode();
|
|
|
|
|
+ String cargoType = ymlSoDto.getCargoType();
|
|
|
|
|
+
|
|
|
|
|
+ // 向文件写入数据
|
|
|
|
|
+ // 00 HEAD RECORD
|
|
|
|
|
+ // 2=增加 3=删除 4=变更 9=原始
|
|
|
|
|
+ writer.write("00:IFTMBF:BOOKING:9:" + ymlSoDto.getSenderCode() + ":YANGMING:" + ymlSoDto.getFileDate() + "'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count++;
|
|
|
|
|
+
|
|
|
|
|
+ // 02 BOOKING 订舱信息
|
|
|
|
|
+ // 记录类型标识
|
|
|
|
|
+ writer.write("02");
|
|
|
|
|
+ // 运编号
|
|
|
|
|
+ writer.write(":" + (ObjectUtils.isNull(ymlSoDto.getBookingNo()) ? ymlSoDto.getMblNo() : ymlSoDto.getBookingNo()));
|
|
|
|
|
+ // 提单号
|
|
|
|
|
+ writer.write(":" + ymlSoDto.getMblNo());
|
|
|
|
|
+ // 交货条款 CY-CY(pier-pier/port):30
|
|
|
|
|
+ //CY-CFS(pier/port-door): 29
|
|
|
|
|
+ //CFS-CY(door-pier/port): 28
|
|
|
|
|
+ //CFS-CFS(door-door): 27
|
|
|
|
|
+ writer.write(":" + ymlSoDto.getTransportTermName());
|
|
|
|
|
+ // 货代方企业名称
|
|
|
|
|
+ writer.write(":" + ymlSoDto.getSenderCode());
|
|
|
|
|
+ // 即接受订舱的人的代码 + 签单人说明 + 询价单位 + 国外订舱单位 + 转船标识 + 分批 + 装期 + 效期 + 运费协议号 + 费率本代码 + 服务合同号 + BOND NO + 舱位互用标识
|
|
|
|
|
+ writer.write(":YANGMING::::::::" + ymlSoDto.getCarrierArgreementNo() + "::");
|
|
|
|
|
+ writer.write(ymlSoDto.getCarrierArgreementNo()+"::::"+ymlSoDto.getCyRemarks()+"'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count++;
|
|
|
|
|
+
|
|
|
|
|
+ // 03 提单信息,不填
|
|
|
|
|
+ // 提单类型(ORI: BILL OF LADING EXP: WAYBILL) + 提单签发地代码 + 提单签发地 + 签发日期 + 正本提单份数 + 预付地点 + 到付地点
|
|
|
|
|
+ writer.write("03:"+ymlSoDto.getIssueType()+":"+ymlSoDto.getIssuanceLandCode()+":" + ymlSoDto.getIssuanceLand()
|
|
|
|
|
+ + ":" + ymlSoDto.getIssueDate() + ":3:"
|
|
|
|
|
+ + ("PP".equals(ymlSoDto.getMPayMode()) ? ymlSoDto.getMPayPlaceName() : "")
|
|
|
|
|
+ + ("CC".equals(ymlSoDto.getMPayMode()) ? ymlSoDto.getMPayPlaceName() : ""));
|
|
|
|
|
+ // AMS Ams Tag AmsCode
|
|
|
|
|
+ // V_AMSPROP IF(AMSPROP='Y','Y',IF(AMSPROP='N','N',IF(AMSPROP='1',' ','')))
|
|
|
|
|
+ writer.write(":'");
|
|
|
|
|
+
|
|
|
|
|
+ // ACI Canada Aci
|
|
|
|
|
+ // V_ACIPROP IF(ACIPROP='Y','Y',IF(ACIPROP='N','N',IF(ACIPROP='1',' ','')))
|
|
|
|
|
+ // ACI NO VarChar(35)
|
|
|
|
|
+ // writer.write("::'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count++;
|
|
|
|
|
+
|
|
|
|
|
+ // 11 VESSEL 船舶信息
|
|
|
|
|
+ // 记录类型标识 + 船舶呼号 + 船名 + 航次 + 船舶经营人
|
|
|
|
|
+ writer.write("11::"+ymlSoDto.getVesselName()+":"+ymlSoDto.getVoyageNo()+":YML:YML::");
|
|
|
|
|
+ writer.write(":" + ymlSoDto.getEtd() + "::::'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count++;
|
|
|
|
|
+
|
|
|
|
|
+ // 12 PORTS 地点信息
|
|
|
|
|
+ writer.write("12");
|
|
|
|
|
+ // 收货地代码 + 收货地代名称
|
|
|
|
|
+ writer.write(":" + ymlSoDto.getPlaceReceiptCode() + ":" + ymlSoDto.getPlaceReceiptName());
|
|
|
|
|
+ // 装货港代码 + 装货港
|
|
|
|
|
+ writer.write(":" + ymlSoDto.getPolCode() + ":" + ymlSoDto.getPolName());
|
|
|
|
|
+ // 卸货港代码 + 卸货港代
|
|
|
|
|
+ writer.write(":" + ymlSoDto.getPodCode() + ":" + ymlSoDto.getPodName());
|
|
|
|
|
+ // 中转港代码 + 中转港 不填
|
|
|
|
|
+ writer.write("::");
|
|
|
|
|
+ // 交货地代码 + 交货地
|
|
|
|
|
+ writer.write(":" + ymlSoDto.getPlaceDeliveryCode() + ":" + ymlSoDto.getPlaceDeliveryName());
|
|
|
|
|
+ // 目的地代码 + 目的地
|
|
|
|
|
+ writer.write(":" + ymlSoDto.getPlaceDestinationCode() + ":" + ymlSoDto.getPlaceDestinationName());
|
|
|
|
|
+ // if(V_Depotid=142,'L&S',if(V_Depotid=167,'ITC',if(V_Depotid=341,'COS',if(V_Depotid=342,'MIN','QCT'))))
|
|
|
|
|
+ // SYSID CORPID CORPNO CODENO HELPMEM SNAME
|
|
|
|
|
+ // 1 142 QDMGLH L&S 明港陆海 明港陆海场站
|
|
|
|
|
+ // 1 167 QDJFCZ CYJF 捷丰场站 捷丰场站
|
|
|
|
|
+ // 1 341 QDDAYA COS 大亚场站 明港大亚
|
|
|
|
|
+ // 1 342 QDMINGGANG MIN 明港 明港场站
|
|
|
|
|
+ Long cyId = ObjectUtils.isNotNull(ymlSoDto.getCyId()) ? ymlSoDto.getCyId() : 0;
|
|
|
|
|
+ String cyCode = cyId.equals(142) ? "L&S" : (cyId.equals(167) ? "ITC" : (cyId.equals(341) ? "COS" : (cyId.equals(342) ? "MIN" : "QCT")));
|
|
|
|
|
+ writer.write(":" + cyCode + "'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count++;
|
|
|
|
|
+
|
|
|
|
|
+ // 14 FREIGHT CLAUSE 运费条款
|
|
|
|
|
+ String pm = ymlSoDto.getMPayMode();
|
|
|
|
|
+ String pmc = "PP".equals(pm) ? "P" : ("CC".equals(pm) ? "C" : "E");
|
|
|
|
|
+ writer.write("14:" + pmc + ":" + ("PP".equals(pm) ? "FREIGHT PREPAID" : ("CC".equals(pm) ? "FREIGHT COLLECT" : "OTHER")) + "'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count++;
|
|
|
|
|
|
|
|
|
|
+ // 15 运费及费用项目
|
|
|
|
|
+ // 付款方式:[P]=预付 [C]=免费 [F]=免费 [R]=备注记录 [E]=第三地付款 [L]=第一程预付/第二程到付
|
|
|
|
|
+ // if(v_Mpayplace<>'DESTINATION',RecFreightChargesDetails.thirdplace,'')
|
|
|
|
|
+ writer.write("15::" + pmc + "::"+ymlSoDto.getMPayPlaceCode()+"::::::'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count++;
|
|
|
|
|
+
|
|
|
|
|
+ // 17 REMARKS 订舱备注 其他信息
|
|
|
|
|
+ List<String> bookingRemarks = RegularUtils.reformatEDIText(ymlSoDto.getBookingRemarks(), 35, true);
|
|
|
|
|
+ writer.write("17"); // 发货人代码为空
|
|
|
|
|
+ Integer lc = 0;
|
|
|
|
|
+ if (bookingRemarks.size()>0) {
|
|
|
|
|
+ for (int l = 0; l < bookingRemarks.size(); l++) {
|
|
|
|
|
+ String line = bookingRemarks.get(l);
|
|
|
|
|
+ if (!line.trim().isEmpty()) {
|
|
|
|
|
+ writer.write(":" + line);
|
|
|
|
|
+ lc++;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if(lc==0){
|
|
|
|
|
+ writer.write(":");
|
|
|
|
|
+ }
|
|
|
|
|
+ writer.write("'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count++;
|
|
|
|
|
+
|
|
|
|
|
+ // 20 SHIPPER 发货人
|
|
|
|
|
+ // 处理收发通之前,先处理货描,因为收发通多余的部分要追加到货描
|
|
|
|
|
+ List<String> goodsDescAddtion_S = new ArrayList<>();
|
|
|
|
|
+ // 发货人
|
|
|
|
|
+ String shpr = ObjectUtils.isNotNull(ymlSoDto.getHShipper()) ? ymlSoDto.getHShipper() : "";
|
|
|
|
|
+ List<String> hShipper = RegularUtils.reformatEDIText(shpr, 35, true);
|
|
|
|
|
+ writer.write("20:" + ymlSoDto.getHshipperCntyName());
|
|
|
|
|
+ for (int l = 0; l < hShipper.size(); l++) {
|
|
|
|
|
+ if (l < 6) {
|
|
|
|
|
+ writer.write(":" + hShipper.get(l));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ goodsDescAddtion_S.add(hShipper.get(l));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ writer.write("'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+
|
|
|
|
|
+ // 21 CONSIGNEE 收货人
|
|
|
|
|
+ List<String> goodsDescAddtion_C = new ArrayList<>();
|
|
|
|
|
+ String cnee = ObjectUtils.isNotNull(ymlSoDto.getHConsignee()) ? ymlSoDto.getHConsignee() : "";
|
|
|
|
|
+ List<String> hConsignee = RegularUtils.reformatEDIText(cnee, 35, true);
|
|
|
|
|
+ writer.write("21:" + ymlSoDto.getHconsigneeCntyName());
|
|
|
|
|
+ for (int l = 0; l < hConsignee.size(); l++) {
|
|
|
|
|
+ if (l < 6) {
|
|
|
|
|
+ writer.write(":" + hConsignee.get(l));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ goodsDescAddtion_C.add(hConsignee.get(l));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ writer.write("'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+
|
|
|
|
|
+ // 22 NOTIFY PARTY 通知人
|
|
|
|
|
+ List<String> goodsDescAddtion_N = new ArrayList<>();
|
|
|
|
|
+ String notify = ObjectUtils.isNotNull(ymlSoDto.getHNotify()) ? ymlSoDto.getHNotify() : "";
|
|
|
|
|
+ List<String> hNotify = RegularUtils.reformatEDIText(notify, 35, true);
|
|
|
|
|
+ writer.write("22:" + ymlSoDto.getHnotifyCntyName());
|
|
|
|
|
+ for (int l = 0; l < hNotify.size(); l++) {
|
|
|
|
|
+ if (l < 6) {
|
|
|
|
|
+ writer.write(":" + hNotify.get(l));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ goodsDescAddtion_N.add(hNotify.get(l));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ writer.write("'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+
|
|
|
|
|
+ // 24 订舱联系人
|
|
|
|
|
+ writer.write("24:TINA:yangming-seataocn@jms-logistics.com:0532-82668811-177'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+
|
|
|
|
|
+ // 41 CARGO OF BOOKING 订舱货物
|
|
|
|
|
+ // 注:1)货物有两种包装,如是大包装(如托盘),则必须同时填小包装件数和包装类型;
|
|
|
|
|
+ // 2) CARGO ID (货物标识)的填法: S=普通, R=冷冻, D=危险 , O=非标
|
|
|
|
|
+ // 41:1::S:8378:CT:CARTONS:20559:138.8::::::20559'
|
|
|
|
|
+ // 记录类型标识 + 货物序号 + 货类代码 + 货物标识
|
|
|
|
|
+ // wfg 预配中包含特种箱时, CARGO ID = O,此处暂时不支持特种箱(OOG, OUT OF GAUGE 中文解释超标准(集装箱))
|
|
|
|
|
+ // haveOOG 是否包含特种箱
|
|
|
|
|
+ List<String> goodsDescReefer = new ArrayList<>();
|
|
|
|
|
+ Boolean haveOOG = false;
|
|
|
|
|
+ String cargoId = haveOOG ? "O" : ("danger".equals(cargoType) ? "D" : ("reefer".equals(cargoType) ? "R" : "S"));
|
|
|
|
|
+ writer.write("41:1:"+ymlSoDto.getHsCode()+":" + cargoId);
|
|
|
|
|
+ // 第一层包装件数 + 第一层包装类型 + 第一层包装说明
|
|
|
|
|
+ writer.write(":" + ymlSoDto.getPackagesNumber() + ":" + ymlSoDto.getPackagesCode() + ":" + ymlSoDto.getPackagesDescribe());
|
|
|
|
|
+ // 第一层包装皮重 + 第一层包装尺码
|
|
|
|
|
+ writer.write(":" + ymlSoDto.getGrossWeight().setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
|
|
+ writer.write(":" + ymlSoDto.getVolumeOfGoods().setScale(3, BigDecimal.ROUND_HALF_UP));
|
|
|
|
|
+ // 第二层包装件数 + 第二层包装类型 + 第二层包装说明 + 第二层包装皮重 + 第二层包装尺码 + 货毛重
|
|
|
|
|
+ writer.write("::::::" + ymlSoDto.getGrossWeight().setScale(2, BigDecimal.ROUND_HALF_UP) + "'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+
|
|
|
|
|
+ // 43 DANGEROUS, REEFER & OOG 危险品,冷藏和超标信息
|
|
|
|
|
+ // 温度中,除正(+)负(-)号及小数点外,最多只能三位数字。
|
|
|
|
|
+ if (ObjectUtils.isNotNull(ymlSoDto.getPreCntrs())) {
|
|
|
|
|
+ List<Map<String, Object>> mapList = ymlSoDto.getPreCntrs();
|
|
|
|
|
+ if (mapList.size() > 0) {
|
|
|
|
|
+ Map<String, Object> map = mapList.get(0);
|
|
|
|
|
+ String T = map.get("temperature").toString();
|
|
|
|
|
+ String V = map.get("ventilation").toString();
|
|
|
|
|
+ if((ObjectUtils.isNotNull(T) && ObjectUtils.isNull(V)) || (ObjectUtils.isNull(T) && ObjectUtils.isNotNull(V))){
|
|
|
|
|
+ throw new SecurityException("温度和通风度必须同时填写!");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(haveOOG){
|
|
|
|
|
+ // OOG 此处判断是否有超高等值
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(!T.isEmpty()){
|
|
|
|
|
+// goodsDescReefer.add("CARGO IS STOWED IN REEFER CONTAINER AT THE ");
|
|
|
|
|
+// goodsDescReefer.add("SHIPPER'S REQUESTED CARRYING TEMP OF " + T + " 'C VENT: " + V + " CBM/H");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(!T.isEmpty() && !V.isEmpty()){
|
|
|
|
|
+ writer.write("43::::::::::" + map.get("ventilation") + ":C:" + map.get("temperature") + ":::'");
|
|
|
|
|
+ }else {
|
|
|
|
|
+ writer.write("43:"+ymlSoDto.getDgImdgCode()+"::"+ymlSoDto.getDgUnCode()+":N'");
|
|
|
|
|
+ }
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 44 MARKS & NOS. 唛头 1-10 行
|
|
|
|
|
+ List<String> goodsMarks = RegularUtils.reformatEDIText(ymlSoDto.getMarks(), 47, true);
|
|
|
|
|
+ List<String> goodsMarksAddtion = new ArrayList<>();
|
|
|
|
|
+ writer.write("44:");
|
|
|
|
|
+ for (int l = 0; l < goodsMarks.size(); l++) {
|
|
|
|
|
+ String line = goodsMarks.get(l);
|
|
|
|
|
+ if(line.trim().isEmpty()){
|
|
|
|
|
+ line = ".";
|
|
|
|
|
+ }
|
|
|
|
|
+// if (l < 5) {
|
|
|
|
|
+// writer.write(":" + line);
|
|
|
|
|
+// } else {
|
|
|
|
|
+// goodsMarksAddtion.add(line);
|
|
|
|
|
+// }
|
|
|
|
|
+ if(l>0) {
|
|
|
|
|
+ writer.write(":");
|
|
|
|
|
+ }
|
|
|
|
|
+ writer.write(line);
|
|
|
|
|
+ }
|
|
|
|
|
+ writer.write("'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+
|
|
|
|
|
+ // 47 CARGO DESCRIPTION 货物描述 5行一组
|
|
|
|
|
+ List<String> goodsDesc = RegularUtils.reformatEDIText(ymlSoDto.getGoodsDesc(), 70, true);
|
|
|
|
|
+ int glc = goodsDesc.size();
|
|
|
|
|
+ for (int l = 0; l < glc; l++) {
|
|
|
|
|
+ String line = goodsDesc.get(l);
|
|
|
|
|
+ line = line.trim().isEmpty() ? "." : line;
|
|
|
|
|
+ if(l % 5 == 0){
|
|
|
|
|
+ if(l>0){
|
|
|
|
|
+ writer.write("'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ writer.write("47:" + line);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ writer.write(":" + line);
|
|
|
|
|
+ if(l == (glc - 1)){
|
|
|
|
|
+ writer.write("'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+// writer.write("47:" + line + "'");
|
|
|
|
|
+// writer.newLine();
|
|
|
|
|
+// count += 1;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ for(String line : goodsDescReefer){
|
|
|
|
|
+ writer.write("47:" + RegularUtils.escapeEDILine(line) + "'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+ glc += 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ for(String line : goodsDescAddtion_S){
|
|
|
|
|
+ glc += 1;
|
|
|
|
|
+ writer.write("47:" + (glc==1?"*":"*") + line + "'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ for(String line : goodsDescAddtion_C){
|
|
|
|
|
+ glc += 1;
|
|
|
|
|
+ writer.write("47:" + (glc==1?"*":"**") + line + "'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ for(String line : goodsDescAddtion_N){
|
|
|
|
|
+ glc += 1;
|
|
|
|
|
+ writer.write("47:" + (glc==1?"*":"***") + line + "'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(glc>99){
|
|
|
|
|
+ throw new SecurityException("货描行数过长!");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 48 CONTAINER OF BOOKING 订舱预配箱
|
|
|
|
|
+ if (ObjectUtils.isNotNull(ymlSoDto.getPreCntrs())) {
|
|
|
|
|
+ List<Map<String, Object>> mapList = ymlSoDto.getPreCntrs();
|
|
|
|
|
+ for (Map<String, Object> map1 : mapList) {
|
|
|
|
|
+ // 记录类型标识 + 集装箱尺寸类 + 集装箱箱数 sizeType
|
|
|
|
|
+ writer.write("48:" + map1.get("cntrTypeCode") + ":" + map1.get("cntrQty"));
|
|
|
|
|
+ // 集装箱状态 + 主拼号 + 装箱方式 自选/内装/自派车队等
|
|
|
|
|
+ writer.write(":" + ("FCL".equals(ymlSoDto.getLoadType()) ? "F" : "L") + "::");
|
|
|
|
|
+ // 装箱地点代码 + 装箱地点说明 + 货主箱标志
|
|
|
|
|
+ Integer isSoc = ObjectUtils.isNotNull(map1.get("isSoc")) ? (Integer)map1.get("isSoc") : 0;
|
|
|
|
|
+ writer.write(":"+ymlSoDto.getCyCode()+"::"+(isSoc==1 ? "Y" : "N")+"'");
|
|
|
|
|
+ writer.newLine();
|
|
|
|
|
+ count += 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 51 已知箱号的集装箱细目,只取直单
|
|
|
|
|
+// if("DD".equals(ymlSoDto.getBillType()) && ObjectUtils.isNotNull(ymlSoDto.getLoadedCntrs())){
|
|
|
|
|
+// List<Map<String, Object>> mapLoadedList = ymlSoDto.getLoadedCntrs();
|
|
|
|
|
+// for (Map<String, Object> map : mapLoadedList) {
|
|
|
|
|
+// String sizeType=map.get("sizeType").toString();
|
|
|
|
|
+// if(sizeType.isEmpty()) {
|
|
|
|
|
+// throw new SecurityException("ESL EDI 箱型代码没有维护!");
|
|
|
|
|
+// }
|
|
|
|
|
+// BigDecimal pkgs = ((BigDecimal) map.get("quantity")).setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
+// BigDecimal gwt = ((BigDecimal) map.get("grossWeight")).setScale(3, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
+// writer.write("51::"+sizeType+"::" + pkgs.toString()+ ":" + gwt.toString() + ":'");
|
|
|
|
|
+// writer.newLine();
|
|
|
|
|
+// count += 1;
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+ // 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.newLine();
|
|
|
|
|
+ // count += 1;
|
|
|
|
|
+
|
|
|
|
|
+ // 99 TRAILER RECORD 尾记录
|
|
|
|
|
+ // RECORD TOTAL OF FILE 记录总数 9(6) 包括:头、尾记录
|
|
|
|
|
+ writer.write("99:" + (++count) + "'");
|
|
|
|
|
+
|
|
|
|
|
+ writer.close();
|
|
|
|
|
+ String status = sysClient.getParamService("upload.url");
|
|
|
|
|
+ String replaceUrl = sysClient.getParamService("replace.url");
|
|
|
|
|
+ return createEDIFilesCenter(ymlSoDto, file,status,replaceUrl);
|
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
|
+ throw new SecurityException("生成edi文件失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|