Browse Source

Merge remote-tracking branch 'origin/dev' into dev

纪新园 1 year ago
parent
commit
0bf5394eb9

+ 11 - 2
blade-service/blade-los/src/main/java/org/springblade/los/Util/Regular_ESL.java

@@ -36,6 +36,15 @@ public class Regular_ESL {
 			}
 		}
 
+		//运输条款代码
+		if (ObjectUtils.isNull(ediData.getTransportTermCode())) {
+			msg += "运输条款代码,";
+		} else {
+			String serviceCode = RegularUtils.serviceTermToInttraCode(ediData.getTransportTermCode());
+			ediData.setTransportTermCode(serviceCode);
+			ediData.setTransportTermName(RegularUtils.serviceTermFromInttraCode(serviceCode));
+		}
+
 		if (ObjectUtils.isNull(ediData.getCarrierArgreementNo())) {
 			msg += "船司约号,";
 		}
@@ -127,7 +136,7 @@ public class Regular_ESL {
 		} else {
 			Map<String, String> mapString = RegularUtils.regularEn(ediData.getMarks(),false);
 			if ("200".equals(mapString.get("code"))) {
-				ediData.setHNotify(mapString.get("susscess"));
+				ediData.setMarks(mapString.get("susscess"));
 			} else {
 				character += "唛头,";
 			}
@@ -138,7 +147,7 @@ public class Regular_ESL {
 		} else {
 			Map<String, String> mapString = RegularUtils.regularEn(ediData.getGoodsDesc(),false);
 			if ("200".equals(mapString.get("code"))) {
-				ediData.setHNotify(mapString.get("susscess"));
+				ediData.setGoodsDesc(mapString.get("susscess"));
 			} else {
 				character += "货描,";
 			}

+ 20 - 8
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/ContainersServiceImpl.java

@@ -89,11 +89,17 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 			}
 
 		}
+
+		String sealNo = ObjectUtils.isNotNull(containers.getSealNo()) ? containers.getSealNo().toUpperCase() : "";
+		// 普柜可以设定为,铅封不能重复,但框架 FR  FH这一类的,HMM要求录入NIL,MSK要求录入000000
+		Boolean isNilSealNo = "NIL".equals(sealNo) || "000000".equals(sealNo);
+
 		List<Containers> sealNoCount = baseMapper.selectList(new LambdaQueryWrapper<Containers>()
-			.eq(Containers::getTenantId, AuthUtil.getTenantId())
-			.eq(Containers::getIsDeleted, 0)
-			.eq(Containers::getPid, containers.getPid())
-			.eq(Containers::getSealNo, containers.getSealNo()));
+				.eq(Containers::getTenantId, AuthUtil.getTenantId())
+				.eq(Containers::getIsDeleted, 0)
+				.eq(Containers::getPid, containers.getPid())
+				.eq(Containers::getSealNo, sealNo));
+
 		List<Containers> cntrNoCount = baseMapper.selectList(new LambdaQueryWrapper<Containers>()
 			.eq(Containers::getTenantId, AuthUtil.getTenantId())
 			.eq(Containers::getIsDeleted, 0)
@@ -103,7 +109,7 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 			if (ObjectUtils.isNotNull(containers.getCntrNo()) && !cntrNoCount.isEmpty()) {
 				throw new RuntimeException("箱号不允许重复");
 			}
-			if (ObjectUtils.isNotNull(containers.getSealNo()) && !sealNoCount.isEmpty()) {
+			if (!isNilSealNo && !sealNoCount.isEmpty()) {
 				throw new RuntimeException("铅封号不允许重复");
 			}
 			containers.setCreateTime(new Date());
@@ -118,7 +124,7 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 			if (ObjectUtils.isNotNull(containers.getCntrNo()) && cntrNoCount.stream().anyMatch(e -> !e.getId().equals(containers.getId()))) {
 				throw new RuntimeException("箱号不允许重复");
 			}
-			if (ObjectUtils.isNotNull(containers.getSealNo()) && sealNoCount.stream().anyMatch(e -> !e.getId().equals(containers.getId()))) {
+			if (!isNilSealNo && sealNoCount.stream().anyMatch(e -> !e.getId().equals(containers.getId()))) {
 				throw new RuntimeException("铅封号不允许重复");
 			}
 			containers.setUpdateUser(AuthUtil.getUserId());
@@ -405,10 +411,12 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 		if (cntrNo.size() != excelList.size()) {
 			throw new RuntimeException("箱号不允许重复");
 		}
+
 		List<String> sealNo = excelList.stream().map(BoxAndLeadSealNoExcel::getSealNo).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 		if (sealNo.size() != excelList.size()) {
 			throw new RuntimeException("铅封号不允许重复");
 		}
+
 		List<String> ids = excelList.stream().map(BoxAndLeadSealNoExcel::getId).distinct().collect(Collectors.toList());
 		List<Containers> list = baseMapper.selectList(new LambdaQueryWrapper<Containers>()
 			.eq(Containers::getTenantId, AuthUtil.getTenantId())
@@ -510,6 +518,10 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 		List<ContainersBills> subtractContainersBillsList = new ArrayList<>();
 		List<ContainersCommodity> containersCommodityList = new ArrayList<>();
 		for (Containers containers : list) {
+			String sealNo = ObjectUtils.isNotNull(containers.getSealNo()) ? containers.getSealNo().toUpperCase() : "";
+			// 普柜可以设定为,铅封不能重复,但框架 FR  FH这一类的,HMM要求录入NIL,MSK要求录入000000
+			Boolean isNilSealNo = "NIL".equals(sealNo) || "000000".equals(sealNo);
+
 			List<Containers> sealNoCount = baseMapper.selectList(new LambdaQueryWrapper<Containers>()
 				.eq(Containers::getTenantId, AuthUtil.getTenantId())
 				.eq(Containers::getIsDeleted, 0)
@@ -524,7 +536,7 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 				if (ObjectUtils.isNotNull(containers.getCntrNo()) && !cntrNoCount.isEmpty()) {
 					throw new RuntimeException("箱号不允许重复");
 				}
-				if (ObjectUtils.isNotNull(containers.getSealNo()) && !sealNoCount.isEmpty()) {
+				if (!isNilSealNo && !sealNoCount.isEmpty()) {
 					throw new RuntimeException("铅封号不允许重复");
 				}
 				containers.setCreateTime(new Date());
@@ -539,7 +551,7 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 				if (ObjectUtils.isNotNull(containers.getCntrNo()) && cntrNoCount.stream().anyMatch(e -> !e.getId().equals(containers.getId()))) {
 					throw new RuntimeException("箱号不允许重复");
 				}
-				if (ObjectUtils.isNotNull(containers.getSealNo()) && sealNoCount.stream().anyMatch(e -> !e.getId().equals(containers.getId()))) {
+				if (!isNilSealNo && sealNoCount.stream().anyMatch(e -> !e.getId().equals(containers.getId()))) {
 					throw new RuntimeException("铅封号不允许重复");
 				}
 				containers.setUpdateUser(AuthUtil.getUserId());

+ 18 - 13
blade-service/blade-los/src/main/java/org/springblade/los/edi/service/impl/EDISenderServiceImpl.java

@@ -6243,13 +6243,13 @@ 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++;
 
 			// 11 VESSEL 船舶信息
 			// 记录类型标识 + 船舶呼号 +  船名 + 航次 + 船舶经营人
-			writer.write("11:"+eslSoDto.getLineCode()+":"+eslSoDto.getVesselName()+":"+eslSoDto.getVoyageNo()+":"+eslSoDto.getVoyageNo()+"::::");
+			writer.write("11:"+eslSoDto.getLineCode()+":"+eslSoDto.getVesselName()+":"+eslSoDto.getVoyageNo()+"::::");
 			writer.write(":" + eslSoDto.getEtd() + ":::::'");
 			writer.newLine();
 			count++;
@@ -6274,35 +6274,40 @@ public class EDISenderServiceImpl implements IEDISenderService {
 			// 14 FREIGHT CLAUSE             运费条款
 			String pm = eslSoDto.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++;
 
 			// 17 REMARKS 订舱备注 其他信息
 			List<String> bookingRemarks = RegularUtils.reformatEDIText(eslSoDto.getBookingRemarks(), 35, true);
+			writer.write("17"); // 发货人代码为空
+			Integer lc = 0;
 			if (bookingRemarks.size()>0) {
-				writer.write("17"); // 发货人代码为空
 				for (int l = 0; l < bookingRemarks.size(); l++) {
 					String line = bookingRemarks.get(l);
 					if (!line.trim().isEmpty()) {
 						writer.write(":" + line);
+						lc++;
 					}
 				}
-				writer.write("'");
-				writer.newLine();
-				count++;
 			}
+			if(lc==0){
+				writer.write(":");
+			}
+			writer.write("'");
+			writer.newLine();
+			count++;
 
 			// 20	SHIPPER 发货人
 			// 处理收发通之前,先处理货描,因为收发通多余的部分要追加到货描
 			List<String> goodsDescAddtion = new ArrayList<>();
 			// 发货人
-			String shpr = ObjectUtils.isNull(eslSoDto.getHShipper()) ? eslSoDto.getHShipper() : "";
+			String shpr = ObjectUtils.isNotNull(eslSoDto.getHShipper()) ? eslSoDto.getHShipper() : "";
 			List<String> hShipper = RegularUtils.reformatEDIText(shpr, 75, true);
 			writer.write("20:"); // 发货人代码为空
 			for (int l = 0; l < hShipper.size(); l++) {
@@ -6317,7 +6322,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
 			count += 1;
 
 			// 21	CONSIGNEE 收货人
-			String cnee = ObjectUtils.isNull(eslSoDto.getHConsignee()) ? eslSoDto.getHConsignee() : "";
+			String cnee = ObjectUtils.isNotNull(eslSoDto.getHConsignee()) ? eslSoDto.getHConsignee() : "";
 			List<String> hConsignee = RegularUtils.reformatEDIText(cnee, 75, true);
 			writer.write("21:"); // 收货人代码为空
 			for (int l = 0; l < hConsignee.size(); l++) {
@@ -6332,7 +6337,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
 			count += 1;
 
 			// 22	NOTIFY PARTY 通知人
-			String notify = ObjectUtils.isNull(eslSoDto.getHNotify()) ? eslSoDto.getHNotify() : "";
+			String notify = ObjectUtils.isNotNull(eslSoDto.getHNotify()) ? eslSoDto.getHNotify() : "";
 			List<String> hNotify = RegularUtils.reformatEDIText(notify, 75, true);
 			writer.write("22:"); // 通知人代码为空
 			for (int l = 0; l < hNotify.size(); l++) {
@@ -6360,10 +6365,10 @@ public class EDISenderServiceImpl implements IEDISenderService {
 			// 第一层包装件数 + 第一层包装类型 + 第一层包装说明
 			writer.write(":" + eslSoDto.getPackagesNumber() + ":" + eslSoDto.getPackagesCode() + ":" + eslSoDto.getPackagesDescribe());
 			// 第一层包装皮重 + 第一层包装尺码
-			writer.write(":" + eslSoDto.getGrossWeight().setScale(3, BigDecimal.ROUND_HALF_UP));
+			writer.write(":" + eslSoDto.getGrossWeight().setScale(2, BigDecimal.ROUND_HALF_UP));
 			writer.write(":" + eslSoDto.getVolumeOfGoods().setScale(3, BigDecimal.ROUND_HALF_UP));
 			// 第二层包装件数 + 第二层包装类型 + 第二层包装说明 + 第二层包装皮重 + 第二层包装尺码 + 货毛重
-			writer.write("::::::" + eslSoDto.getGrossWeight().setScale(3, BigDecimal.ROUND_HALF_UP) + "'");
+			writer.write("::::::" + eslSoDto.getGrossWeight().setScale(2, BigDecimal.ROUND_HALF_UP) + "'");
 			writer.newLine();
 			count += 1;
 

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/edi/service/impl/EdiTypesServiceImpl.java

@@ -520,7 +520,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 			totalPreCntrQty += item.getQuantity();
 			BCntrTypes bCntrTypes = bPreCntrTypesList.stream().filter(e -> e.getId().toString().equals(item.getCntrTypeCodeId())).findFirst().orElse(null);
 			if (bCntrTypes != null) {
-				String ediCode = RegularUtils.getEdiCode(ediCodeName, bCntrTypes.getExtendedData());
+				String ediCode = RegularUtils.forceEmpty(RegularUtils.getEdiCode(ediCodeName, bCntrTypes.getExtendedData()));
 				Map<String, Object> map = new HashMap<>();
 				map.put("cntrTypeCode", RegularUtils.forceEmpty(item.getCntrTypeCode()));
 				map.put("sizeType", ediCode);