Browse Source

1.海运出口列表排序修改为正序
2.海运出口批量请核,单票请核增加分单必填项校验
3.托书生成海运出口单据SI备注置空
4.批量修改场站,空箱返场增加船名英文,检索条件问题修改
5.业务修改及审核路径配置数据同步
6.提单样本导入,B/LNO修改为识别为分单号
7.POD场站模块:修改pod场站以后,pod场站只同步分单,不同步主单
8.主单‘同步分单信息’按钮状态校验控制去掉
9.客户托书-样本导入接口独立
10.海运进口保存配箱明细件重尺计算时判断是否为空

纪新园 6 months ago
parent
commit
7e29dfbdff

+ 4 - 4
blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/PutBoxServiceImpl.java

@@ -3133,7 +3133,7 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 					item.setUpdateUserName(AuthUtil.getUserName());
 					containersListNew.add(item);
 					//进口分单配箱信息处理
-					if (!containersHYJKListZD.isEmpty()) {
+					/*if (!containersHYJKListZD.isEmpty()) {
 						Containers containers = containersHYJKListZD.stream().filter(e -> e.getCntrNo().equals(item.getCntrNo()))
 							.findFirst().orElse(null);
 						if (containers != null) {
@@ -3148,7 +3148,7 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 							item.setWhetherFee("1");
 							containersListNew.add(containers);
 						}
-					}
+					}*/
 					//箱档案信息处理
 					Archives archives = archivesList.stream().filter(e -> e.getCode().equals(item.getCntrNo())).findFirst().orElse(null);
 					if (archives == null) {
@@ -3581,7 +3581,7 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 			if (billsHYJKList.isEmpty()) {
 				throw new RuntimeException("未查到海运出口单据");
 			}
-			List<Long> idHYJKList = billsHYJKList.stream().map(Bills::getMasterId).distinct().collect(Collectors.toList());
+			/*List<Long> idHYJKList = billsHYJKList.stream().map(Bills::getMasterId).distinct().collect(Collectors.toList());
 			List<Bills> billsHYJKListFD = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
 				.eq(Bills::getTenantId, AuthUtil.getTenantId())
 				.eq(Bills::getIsDeleted, 0)
@@ -3603,7 +3603,7 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 					}
 					containersService.updateBatchById(containersList);
 				}
-			}
+			}*/
 		}
 		return R.data("操作成功");
 	}

+ 2 - 2
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/BillsController.java

@@ -218,7 +218,7 @@ public class BillsController extends BladeController {
 				lambdaQueryWrapper.orderByDesc(Bills::getMblno);
 				lambdaQueryWrapper.orderByAsc(Bills::getMasterBillNo);
 				lambdaQueryWrapper.orderByDesc(Bills::getBillType);
-				lambdaQueryWrapper.orderByDesc(Bills::getHblno);
+				lambdaQueryWrapper.orderByAsc(Bills::getHblno);
 			} else {
 				lambdaQueryWrapper.orderByDesc(Bills::getEtd);
 				lambdaQueryWrapper.orderByAsc(Bills::getMasterBillNo);
@@ -233,7 +233,7 @@ public class BillsController extends BladeController {
 				lambdaQueryWrapper.orderByDesc(Bills::getMblno);
 				lambdaQueryWrapper.orderByAsc(Bills::getMasterBillNo);
 				lambdaQueryWrapper.orderByDesc(Bills::getBillType);
-				lambdaQueryWrapper.orderByDesc(Bills::getHblno);
+				lambdaQueryWrapper.orderByAsc(Bills::getHblno);
 			} else {
 				lambdaQueryWrapper.orderByDesc(Bills::getEta);
 				lambdaQueryWrapper.orderByAsc(Bills::getMasterBillNo);

+ 9 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/HYCKTemplateImportController.java

@@ -79,4 +79,13 @@ public class HYCKTemplateImportController {
 		return templateImportService.importBills(file,billId);
 	}
 
+	/**
+	 * 客户托书模版导入(提单样本)
+	 */
+	@PostMapping("/importBookingCabin")
+	@RepeatSubmit
+	public R<Bills> importBookingCabin(@RequestParam("file") MultipartFile file) throws Exception {
+		return templateImportService.importBookingCabin(file);
+	}
+
 }

+ 10 - 8
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/ContainersMapper.xml

@@ -82,6 +82,7 @@
         se.mblno as mblno,
         se.hblno as hblno,
         se.vessel_cn_name as vesselCnName,
+        se.vessel_en_name as vesselEnName,
         se.voyage_no as voyageNo,
         se.pol_cn_name as polName,
         se.pod_cn_name as podName,
@@ -127,8 +128,8 @@
         <if test="data.corpName != null and data.corpName != ''">
             and se.corp_cn_name like concat('%', #{data.corpName}, '%')
         </if>
-        <if test="data.vesselCnName != null and data.vesselCnName != ''">
-            and se.vessel_cn_name like concat('%', #{data.vesselCnName}, '%')
+        <if test="data.vesselEnName != null and data.vesselEnName != ''">
+            and se.vessel_en_name like concat('%', #{data.vesselEnName}, '%')
         </if>
         <if test="data.voyageNo != null and data.voyageNo != ''">
             and se.voyage_no like concat('%', #{data.voyageNo}, '%')
@@ -158,10 +159,10 @@
                 and se.eta &lt;= #{data.actualEtdList[1]}
             </if>
         </if>
-        <if test='data.whether != null and data.whether == "0"'>
+        <if test='data.whether != null and data.whether != "" and data.whether == "0"'>
             and sc.pod_station_cname is null
         </if>
-        <if test='data.whether != null and data.whether == "1"'>
+        <if test='data.whether != null and data.whether != ""  and data.whether == "1"'>
             and sc.pod_station_cname is not null
         </if>
         GROUP BY sc.id
@@ -172,6 +173,7 @@
         se.mblno as mblno,
         se.hblno as hblno,
         se.vessel_cn_name as vesselCnName,
+        se.vessel_en_name as vesselEnName,
         se.voyage_no as voyageNo,
         se.pol_cn_name as polName,
         se.pod_cn_name as podName,
@@ -217,8 +219,8 @@
         <if test="data.corpName != null and data.corpName != ''">
             and se.corp_cn_name like concat('%', #{data.corpName}, '%')
         </if>
-        <if test="data.vesselCnName != null and data.vesselCnName != ''">
-            and se.vessel_cn_name like concat('%', #{data.vesselCnName}, '%')
+        <if test="data.vesselEnName != null and data.vesselEnName != ''">
+            and se.vessel_en_name like concat('%', #{data.vesselEnName}, '%')
         </if>
         <if test="data.voyageNo != null and data.voyageNo != ''">
             and se.voyage_no like concat('%', #{data.voyageNo}, '%')
@@ -248,10 +250,10 @@
                 and se.eta &lt;= #{data.actualEtdList[1]}
             </if>
         </if>
-        <if test='data.whether != null and data.whether == "0"'>
+        <if test='data.whether != null and data.whether != "" and data.whether == "0"'>
             and sc.pod_station_cname is null
         </if>
-        <if test='data.whether != null and data.whether == "1"'>
+        <if test='data.whether != null and data.whether != ""  and data.whether == "1"'>
             and sc.pod_station_cname is not null
         </if>
         GROUP BY sc.id

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/ITemplateImportService.java

@@ -43,4 +43,6 @@ public interface ITemplateImportService {
 	R<List<Containers>> importHisense(MultipartFile file,Long billId)throws Exception ;
 
 	R<Bills> importBills(MultipartFile file, Long billId)throws Exception;
+
+	R<Bills> importBookingCabin(MultipartFile file)throws Exception;
 }

+ 91 - 6
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java

@@ -526,9 +526,15 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		BigDecimal measurement = new BigDecimal("0.00");
 		if (ObjectUtils.isNotNull(bills.getContainersList())) {
 			for (Containers item : bills.getContainersList()) {
-				quantity = quantity.add(item.getQuantity());
-				grossWeight = grossWeight.add(item.getGrossWeight());
-				measurement = measurement.add(item.getMeasurement());
+				if (ObjectUtils.isNotNull(item.getQuantity())){
+					quantity = quantity.add(item.getQuantity());
+				}
+				if (ObjectUtils.isNotNull(item.getGrossWeight())){
+					grossWeight = grossWeight.add(item.getGrossWeight());
+				}
+				if (ObjectUtils.isNotNull(item.getMeasurement())){
+					measurement = measurement.add(item.getMeasurement());
+				}
 				item.setPid(bills.getId());
 				if ("MH".equals(bills.getBillType())) {
 					item.setHblno(bills.getHblno());
@@ -1666,6 +1672,31 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			if (ObjectUtils.isNull(declare.getActualEtd())) {
 				throw new RuntimeException("实际开船日期不能为空");
 			}
+			String texts = "";
+			if (ObjectUtils.isNull(declare.getMblno())) {
+				texts = texts + "提单号、";
+			}
+			if (ObjectUtils.isNull(declare.getVesselId())) {
+				texts = texts + "船名、";
+			}
+			if (ObjectUtils.isNull(declare.getVoyageNo())) {
+				texts = texts + "航次、";
+			}
+			if (ObjectUtils.isNull(declare.getPodId())) {
+				texts = texts + "卸货港、";
+			}
+			if (ObjectUtils.isNull(declare.getCarrierId())) {
+				texts = texts + "船公司、";
+			}
+			if (ObjectUtils.isNull(declare.getCyId())) {
+				texts = texts + "POL场站、";
+			}
+			if (ObjectUtils.isNull(declare.getPodCyId())) {
+				texts = texts + "POD场站、";
+			}
+			if (ObjectUtils.isNotNull(texts)) {
+				throw new RuntimeException("单号:" + declare.getBillNo() + "," + texts + "不能为空");
+			}
 		} else if ("SI".equals(declare.getBusinessType())) {
 			actId = 1113;
 			processType = "海运进口审核";
@@ -1771,6 +1802,31 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 					.eq(Bills::getBillType, "MH"));
 				if (!billsList.isEmpty()) {
 					for (Bills item : billsList) {
+						String texts = "";
+						if (ObjectUtils.isNull(item.getHblno())) {
+							texts = texts + "分单号、";
+						}
+						if (ObjectUtils.isNull(item.getVesselId())) {
+							texts = texts + "船名、";
+						}
+						if (ObjectUtils.isNull(item.getVoyageNo())) {
+							texts = texts + "航次、";
+						}
+						if (ObjectUtils.isNull(item.getPodId())) {
+							texts = texts + "卸货港、";
+						}
+						if (ObjectUtils.isNull(item.getCarrierId())) {
+							texts = texts + "船公司、";
+						}
+						if (ObjectUtils.isNull(item.getCyId())) {
+							texts = texts + "POL场站、";
+						}
+						if (ObjectUtils.isNull(item.getPodCyId())) {
+							texts = texts + "POD场站、";
+						}
+						if (ObjectUtils.isNotNull(texts)) {
+							throw new RuntimeException("单号:" + item.getBillNo() + "," + texts + "不能为空");
+						}
 						item.setStatus(1);
 						item.setUpdateTime(new Date());
 						item.setUpdateUserName(AuthUtil.getUserName());
@@ -3645,6 +3701,31 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				if (feeCenters.isEmpty()) {
 					throw new RuntimeException("未查到分单编号:" + item.getBillNo() + "费用明细,先维护分单费用");
 				}
+				String texts = "";
+				if (ObjectUtils.isNull(item.getHblno())) {
+					texts = texts + "分单号、";
+				}
+				if (ObjectUtils.isNull(item.getVesselId())) {
+					texts = texts + "船名、";
+				}
+				if (ObjectUtils.isNull(item.getVoyageNo())) {
+					texts = texts + "航次、";
+				}
+				if (ObjectUtils.isNull(item.getPodId())) {
+					texts = texts + "卸货港、";
+				}
+				if (ObjectUtils.isNull(item.getCarrierId())) {
+					texts = texts + "船公司、";
+				}
+				if (ObjectUtils.isNull(item.getCyId())) {
+					texts = texts + "POL场站、";
+				}
+				if (ObjectUtils.isNull(item.getPodCyId())) {
+					texts = texts + "POD场站、";
+				}
+				if (ObjectUtils.isNotNull(texts)) {
+					throw new RuntimeException("分单:" + item.getBillNo() + "," + texts + "不能为空");
+				}
 				item.setStatus(1);
 			}
 			this.updateBatchById(billsHList);
@@ -3713,7 +3794,10 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				texts = texts + "船公司、";
 			}
 			if (ObjectUtils.isNull(declare.getCyId())) {
-				texts = texts + "场站、";
+				texts = texts + "POL场站、";
+			}
+			if (ObjectUtils.isNull(declare.getPodCyId())) {
+				texts = texts + "POD场站、";
 			}
 			if (ObjectUtils.isNotNull(texts)) {
 				throw new RuntimeException("单号:" + declare.getBillNo() + "," + texts + "不能为空");
@@ -4196,6 +4280,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			throw new RuntimeException("生成订单编号失败");
 		}
 		copyBills.setSiRemarks(detail.getCyRemarks());
+		copyBills.setCyRemarks("");
 		copyBills.setBusinessType("SE");
 		copyBills.setBusinessTypes("海运");
 		copyBills.setSeaType("E");
@@ -4566,7 +4651,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		}
 		Bills bills = baseMapper.selectById(billId);
 		if (bills != null) {
-			if (3 == bills.getBillStatus()) {
+			/*if (3 == bills.getBillStatus()) {
 				throw new RuntimeException("主单已完成,操作失败");
 			}
 			if (1 == bills.getBillStatus()) {
@@ -4583,7 +4668,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			}
 			if (ObjectUtils.isNull(bills.getPolId())) {
 				throw new RuntimeException("装货港不能为空,操作失败");
-			}
+			}*/
 			List<Bills> billsList = baseMapper.selectList(new LambdaQueryWrapper<Bills>()
 				.eq(Bills::getTenantId, AuthUtil.getTenantId())
 				.eq(Bills::getIsDeleted, 0)

+ 202 - 1
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/TemplateImportServiceImpl.java

@@ -1340,7 +1340,11 @@ public class TemplateImportServiceImpl implements ITemplateImportService {
 		//提单号
 		String mblno = getSheetCellValueAsString(sheet, 6, 10);
 		if (ObjectUtils.isNotNull(mblno)) {
-			bills.setMblno(mblno.trim());
+			if ("MH".equals(bills.getBillType())){
+				bills.setHblno(mblno.trim());
+			}else{
+				bills.setMblno(mblno.trim());
+			}
 		}
 		//VSL/VOY
 		String vslVoy = getSheetCellValueAsString(sheet, 17, 11);
@@ -1575,6 +1579,203 @@ public class TemplateImportServiceImpl implements ITemplateImportService {
 		return R.data(bills);
 	}
 
+	@Override
+	public R<Bills> importBookingCabin(MultipartFile file) throws Exception {
+		Bills bills = new Bills();
+		SeaBillsDetail seaBillsDetail = new SeaBillsDetail();
+		// 创建临时文件
+		Path tempFile = Files.createTempFile("prefix", "suffix");
+		// 将MultipartFile的内容复制到临时文件
+		Files.copy(file.getInputStream(), tempFile, StandardCopyOption.REPLACE_EXISTING);
+		// 创建FileInputStream来读取临时文件
+		FileInputStream fis = new FileInputStream(tempFile.toFile());
+		Workbook workbook = null;
+		Sheet sheet = null;
+		String errMsg = "";
+		try {
+			workbook = WorkbookFactory.create(fis);
+			sheet = workbook.getSheetAt(0); // 获取第一个工作表
+		} catch (Exception e) {
+			workbook = null;
+			sheet = null;
+			errMsg = e.getMessage();
+		}
+		if (ObjectUtils.isNull(workbook) || ObjectUtils.isNull(sheet)) {
+			throw new RuntimeException("文件读取失败,该文件可能不是 Excel 文件!" + errMsg);
+		}
+		int firstRow = sheet.getFirstRowNum();
+		int lastRow = sheet.getLastRowNum();
+		if (firstRow <= 0 && lastRow < 0) {
+			throw new RuntimeException("文件内容为空!");
+		}
+		//发货人提单描述
+		String hshipper = getSheetCellValueAsString(sheet, 1, 0);
+		if (ObjectUtils.isNotNull(hshipper)) {
+			seaBillsDetail.setHshipperDetails(hshipper.toUpperCase());
+		}
+		//收货人提单描述
+		String hconsignee = getSheetCellValueAsString(sheet, 7, 0);
+		if (ObjectUtils.isNotNull(hconsignee)) {
+			seaBillsDetail.setHconsigneeDetails(hconsignee.toUpperCase());
+		}
+		//通知人提单描述
+		String hnotify = getSheetCellValueAsString(sheet, 13, 0);
+		if (ObjectUtils.isNotNull(hnotify)) {
+			seaBillsDetail.setHnotifyDetails(hnotify.toUpperCase());
+		}
+		//提单号
+		String mblno = getSheetCellValueAsString(sheet, 6, 10);
+		if (ObjectUtils.isNotNull(mblno)) {
+			if ("MH".equals(bills.getBillType())){
+				bills.setHblno(mblno.trim());
+			}else{
+				bills.setMblno(mblno.trim());
+			}
+		}
+		//VSL/VOY
+		String vslVoy = getSheetCellValueAsString(sheet, 17, 11);
+		if (ObjectUtils.isNotNull(vslVoy)) {
+			if (vslVoy.contains("/")) {
+				String vsl = vslVoy.substring(0, vslVoy.indexOf("/"));
+				String voy = vslVoy.substring(vslVoy.indexOf("/") + 1);
+				if (ObjectUtils.isNotNull(vsl)) {
+					BVessels vessels = bVesselsService.getOne(new LambdaQueryWrapper<BVessels>()
+						.eq(BVessels::getTenantId, AuthUtil.getTenantId())
+						.eq(BVessels::getIsDeleted, 0)
+						.like(BVessels::getEnName, vsl)
+						.last("limit 1"));
+					if (vessels != null) {
+						bills.setVesselEnName(vessels.getEnName());
+						bills.setVesselCnName(vessels.getCnName());
+						bills.setVesselId(vessels.getId());
+					}
+				}
+				bills.setVoyageNo(voy);
+				System.out.println("vsl:" + vsl);
+				System.out.println("voy:" + voy);
+				System.out.println("vslVoy:" + vslVoy);
+			} else {
+				throw new RuntimeException("船名航次不能为空");
+			}
+		}
+		//pol
+		String pol = getSheetCellValueAsString(sheet, 19, 0);
+		System.out.println("Port of Loading:" + pol);
+		if (ObjectUtils.isNotNull(pol)) {
+			BPorts ports = bPortsService.getOne(new LambdaQueryWrapper<BPorts>()
+				.eq(BPorts::getTenantId, AuthUtil.getTenantId())
+				.eq(BPorts::getIsDeleted, 0)
+				.like(BPorts::getEnName, pol)
+				.last("limit 1"));
+			if (ports != null) {
+				bills.setPolId(ports.getId());
+				bills.setPolCnName(ports.getCnName());
+				bills.setPolCode(ports.getCode());
+				bills.setPolEnName(ports.getEnName());
+			} else {
+				throw new RuntimeException("Port of Loading:" + pol + " 无法识别!");
+			}
+		}
+		//pod
+		String pod = getSheetCellValueAsString(sheet, 19, 2);
+		System.out.println("Port of Discharge:" + pod);
+		if (ObjectUtils.isNotNull(pod)) {
+			BPorts ports = bPortsService.getOne(new LambdaQueryWrapper<BPorts>()
+				.eq(BPorts::getTenantId, AuthUtil.getTenantId())
+				.eq(BPorts::getIsDeleted, 0)
+				.like(BPorts::getEnName, pod)
+				.last("limit 1"));
+			if (ports != null) {
+				bills.setPodId(ports.getId());
+				bills.setPodCnName(ports.getCnName());
+				bills.setPodCode(ports.getCode());
+				bills.setPodEnName(ports.getEnName());
+			} else {
+				throw new RuntimeException("Port of Discharge:" + pod + " 无法识别!");
+			}
+		}
+		//交货地
+		String placeDelivery = getSheetCellValueAsString(sheet, 19, 10);
+		System.out.println("Place of delivery:" + placeDelivery);
+		if (ObjectUtils.isNotNull(placeDelivery)) {
+			BPorts ports = bPortsService.getOne(new LambdaQueryWrapper<BPorts>()
+				.eq(BPorts::getTenantId, AuthUtil.getTenantId())
+				.eq(BPorts::getIsDeleted, 0)
+				.like(BPorts::getEnName, placeDelivery)
+				.last("limit 1"));
+			if (ports != null) {
+				bills.setPlaceDeliveryId(ports.getId());
+				bills.setPlaceDeliveryName(ports.getEnName());
+				bills.setPlaceDeliveryCode(ports.getCode());
+			} else {
+				throw new RuntimeException("Place of delivery:" + placeDelivery + " 无法识别!");
+			}
+		}
+		//G.W.
+		String gw = getSheetCellValueAsString(sheet, 21, 11);
+		if (ObjectUtils.isNotNull(gw)) {
+			int lastDigitIndex = this.getIndex(gw);
+			if (lastDigitIndex > 0) {
+				String number = gw.substring(0, lastDigitIndex + 1);
+				bills.setGrossWeight(new BigDecimal(number));
+			}
+		}
+		System.out.println("gw:" + gw);
+		//件数
+		String quantity = getSheetCellValueAsString(sheet, 21, 1);
+		if (ObjectUtils.isNotNull(quantity)) {
+			int lastDigitIndex = this.getIndex(quantity);
+			if (lastDigitIndex > 0) {
+				String number = quantity.substring(0, lastDigitIndex + 1);
+				bills.setQuantity(new BigDecimal(number));
+			}
+		}
+		System.out.println("quantity:" + quantity);
+		//体积
+		String measurement = getSheetCellValueAsString(sheet, 21, 13);
+		if (ObjectUtils.isNotNull(measurement)) {
+			int lastDigitIndex = this.getIndex(measurement);
+			if (lastDigitIndex > 0) {
+				String number = measurement.substring(0, lastDigitIndex + 1);
+				bills.setMeasurement(new BigDecimal(number));
+			}
+		}
+		System.out.println("measurement:" + measurement);
+		//货物描述
+		String commodityDescr = getSheetCellValueAsString(sheet, 21, 3);
+		if (ObjectUtils.isNotNull(commodityDescr)) {
+			bills.setCommodityDescr(commodityDescr);
+		}
+		//货物描述
+		String hpaymode = getSheetCellValueAsString(sheet, 31, 0);
+		if (ObjectUtils.isNotNull(hpaymode)) {
+			if ("FREIGHT PREPAID".equals(hpaymode)) {
+				bills.setHpaymode("PP");
+			} else if ("FREIGHT COLLECT".equals(hpaymode)) {
+				bills.setHpaymode("CC");
+			}
+		}
+		//SI 备注
+		String siRemarks = getSheetCellValueAsString(sheet, 32, 1);
+		if (ObjectUtils.isNotNull(siRemarks)) {
+			bills.setSiRemarks(siRemarks);
+		}
+		//唛头
+		String marks = getSheetCellValueAsString(sheet, 21, 0);
+		if (ObjectUtils.isNotNull(marks)) {
+			bills.setMarks(marks);
+		}
+		bills.setPreContainersList(new ArrayList<>());
+		bills.setContainersReportsList(new ArrayList<>());
+		bills.setFeeCenterListC(new ArrayList<>());
+		bills.setFeeCenterListD(new ArrayList<>());
+		bills.setFilesList(new ArrayList<>());
+		bills.setWaitingBoxList(new ArrayList<>());
+		bills.setDetail(seaBillsDetail);
+		//将字符串为null的赋默认值为""
+		return R.data(bills);
+	}
+
 	private int getIndex(String gw) {
 		int lastIndex = -1; // 用于存储最后一个数字的索引
 		for (int i = gw.length() - 1; i >= 0; i--) {

+ 6 - 1
blade-service/blade-los/src/main/java/org/springblade/los/excel/UpdatePodStationExcel.java

@@ -43,9 +43,14 @@ public class UpdatePodStationExcel {
 	/**
 	 * 船名
 	 */
-	@ExcelProperty(value = "船名")
+	@ExcelIgnore
 	private String vesselCnName;
 	/**
+	 * 船名
+	 */
+	@ExcelProperty(value = "船名")
+	private String vesselEnName;
+	/**
 	 * 航次
 	 */
 	@ExcelProperty(value = "航次")