Browse Source

1.免箱使天数申请逻辑修改
2.数字大写报错修改
3.海运出口增加发送下货纸日期
4.增加发送下货纸接口
5.增加历史费用列表接口
6.增加历史费用导入接口
7.海运出口保存时国外代理处理
8.费用明细保存模板bug修改
9.免箱使申请打印修改
10.OW箱提醒查询条件修改

纪新园 3 weeks ago
parent
commit
4977845910
17 changed files with 977 additions and 427 deletions
  1. 11 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/Bills.java
  2. 46 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/FeedayDataJson.java
  3. 5 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/SeaBillsDetail.java
  4. 10 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/SeaFeeday.java
  5. 5 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/vo/SeaFeedayVO.java
  6. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/Util/BigDecimalUtils.java
  7. 444 4
      blade-service/blade-los/src/main/java/org/springblade/los/Util/BillUtils.java
  8. 6 0
      blade-service/blade-los/src/main/java/org/springblade/los/Util/IBillUtils.java
  9. 0 3
      blade-service/blade-los/src/main/java/org/springblade/los/Util/StringTools.java
  10. 8 3
      blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java
  11. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/TradingBoxServiceImpl.java
  12. 30 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/BillsController.java
  13. 81 97
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java
  14. 10 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/SeaFeedayServiceImpl.java
  15. 318 314
      blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java
  16. 0 2
      blade-service/blade-los/src/main/java/org/springblade/los/edi/service/impl/EdiTypesServiceImpl.java
  17. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java

+ 11 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/Bills.java

@@ -2239,6 +2239,12 @@ public class Bills implements Serializable {
 	private List<FeeCenterReports> feeCenterList;
 
 	/**
+	 * 用中心
+	 */
+	@TableField(exist = false)
+	private List<FeeCenter> feeCenterListAll;
+
+	/**
 	 * 文件
 	 */
 	@TableField(exist = false)
@@ -2866,5 +2872,10 @@ public class Bills implements Serializable {
 	 */
 	@TableField(exist = false)
 	private SeaFeeday seaFeeday;
+	/**
+	 * 发送下货纸日期
+	 */
+	@TableField(exist = false)
+	private Date sendDeliveryPaperDate;
 
 }

+ 46 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/FeedayDataJson.java

@@ -0,0 +1,46 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.business.sea.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * pol/pod免箱使天数申请表实体类
+ *
+ * @author BladeX
+ * @since 2026-04-22
+ */
+@Data
+public class FeedayDataJson implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+
+	//箱型
+	private String boxType;
+
+	//箱量
+	private BigDecimal boxNumber;
+
+	//单价
+	private BigDecimal price;
+
+
+}

+ 5 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/SeaBillsDetail.java

@@ -726,6 +726,11 @@ public class SeaBillsDetail implements Serializable {
 	 */
 	@ApiModelProperty(value = "税号")
 	private String taxId;
+	/**
+	 * 发送下货纸日期
+	 */
+	@ApiModelProperty(value = "发送下货纸日期")
+	private Date sendDeliveryPaperDate;
 
 
 }

+ 10 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/SeaFeeday.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.los.business.sea.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -26,6 +27,7 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Date;
+import java.util.List;
 
 /**
  * pol/pod免箱使天数申请表实体类
@@ -261,6 +263,14 @@ public class SeaFeeday implements Serializable {
 	 */
 	@ApiModelProperty(value = "卸货港英文名称打印 默认等于pol_en_name 可以编辑")
 	private String podNamePrint;
+	/**
+	 * 箱型数据及单价
+	 */
+	@ApiModelProperty(value = "箱型数据及单价")
+	private String dataJson;
+
+	@TableField(exist = false)
+	private List<FeedayDataJson> feedayDataJsonList;
 
 
 }

+ 5 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/vo/SeaFeedayVO.java

@@ -17,12 +17,15 @@
 package org.springblade.los.business.sea.vo;
 
 import com.baomidou.mybatisplus.annotation.TableField;
+import org.springblade.los.business.sea.entity.FeedayDataJson;
 import org.springblade.los.business.sea.entity.SeaFeeday;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import io.swagger.annotations.ApiModel;
 import org.springblade.system.entity.Dept;
 
+import java.util.List;
+
 /**
  * pol/pod免箱使天数申请表视图实体类
  *
@@ -50,5 +53,7 @@ public class SeaFeedayVO extends SeaFeeday {
 
 	private Dept dept;
 
+	private List<FeedayDataJson> feedayDataJsonList;
+
 
 }

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/Util/BigDecimalUtils.java

@@ -54,7 +54,7 @@ public class BigDecimalUtils {
 				result.append(LESS_THAN_20[Character.getNumericValue(c)]).append(" ");
 			}
 		}
-		if ("THOUSAND".equals(result.toString().trim().substring(result.toString().trim().lastIndexOf("THOUSAND")))){
+		if (result.toString().trim().lastIndexOf("THOUSAND") >=0 && "THOUSAND".equals(result.toString().trim().substring(result.toString().trim().lastIndexOf("THOUSAND")))){
 			if (result.toString().trim().lastIndexOf("-") >= 0) {
 				String data2 = result.toString().trim().substring(result.toString().trim().lastIndexOf("-"));
 				if ("-".equals(data2)) {

+ 444 - 4
blade-service/blade-los/src/main/java/org/springblade/los/Util/BillUtils.java

@@ -12,6 +12,8 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.los.basic.business.entity.BusinessType;
 import org.springblade.los.basic.business.service.IBusinessTypeService;
+import org.springblade.los.basic.cntr.entity.BCntrTypes;
+import org.springblade.los.basic.cntr.service.IBCntrTypesService;
 import org.springblade.los.basic.corps.entity.BCorps;
 import org.springblade.los.basic.corps.service.IBCorpsService;
 import org.springblade.los.basic.cur.entity.BCurExrate;
@@ -32,6 +34,7 @@ import org.springblade.los.business.sea.service.*;
 import org.springblade.los.excel.DeliveryPaperExcel;
 import org.springblade.los.finance.fee.entity.FeeCenter;
 import org.springblade.los.finance.fee.entity.FinAccBills;
+import org.springblade.los.finance.fee.service.ICostProfitCalculationService;
 import org.springblade.los.finance.fee.service.IFeeCenterService;
 import org.springblade.los.finance.fee.service.IFinAccBillsService;
 import org.springblade.system.feign.ISysClient;
@@ -47,10 +50,7 @@ import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -103,6 +103,10 @@ public class BillUtils implements IBillUtils {
 
 	private final IRouteCostItemService routeCostItemService;
 
+	private final IBCntrTypesService bCntrTypesService;
+
+	private final ICostProfitCalculationService costProfitCalculationService;
+
 	@Override
 	public void itemCopy(Bills bills, List<Bills> billsList, boolean status) {
 		List<Containers> containersList = containersService.list(new LambdaQueryWrapper<Containers>()
@@ -1048,6 +1052,11 @@ public class BillUtils implements IBillUtils {
 		if (billsList.isEmpty()) {
 			throw new RuntimeException("未查到海运出口单据,发送失败!");
 		}
+		List<SeaBillsDetail> billsDetailsList = seaBillsDetailService.list(new LambdaQueryWrapper<SeaBillsDetail>()
+			.in(SeaBillsDetail::getPid, idList));
+		if (billsDetailsList.isEmpty()) {
+			throw new RuntimeException("未查到海运出口单据,发送失败!");
+		}
 		List<PreContainers> preContainersList = preContainersService.list(new LambdaQueryWrapper<PreContainers>()
 			.eq(PreContainers::getIsDeleted, 0)
 			.in(PreContainers::getPid, idList));
@@ -1087,6 +1096,22 @@ public class BillUtils implements IBillUtils {
 			excel.setRemarks("");
 			excelList.add(excel);
 		}
+		List<SeaBillsDetail> seaBillsDetailList = new ArrayList<>();
+		for (Bills item : billsList) {
+			item.setEdiStatus("1");
+			SeaBillsDetail seaBillsDetail = billsDetailsList.stream().filter(e -> e.getPid().equals(item.getId())).findFirst().orElse(null);
+			if (seaBillsDetail != null) {
+				seaBillsDetail.setSendDeliveryPaperDate(new Date());
+				seaBillsDetail.setUpdateUser(AuthUtil.getUserId());
+				seaBillsDetail.setUpdateUserName(AuthUtil.getUserName());
+				seaBillsDetail.setUpdateTime(new Date());
+				seaBillsDetailList.add(seaBillsDetail);
+			}
+			billsMapper.updateById(item);
+		}
+		if (!seaBillsDetailList.isEmpty()) {
+			seaBillsDetailService.updateBatchById(seaBillsDetailList);
+		}
 		return excelList;
 	}
 
@@ -1373,4 +1398,419 @@ public class BillUtils implements IBillUtils {
 			return R.success("操作成功");
 		}
 	}
+
+	@Override
+	public R sendDeliveryPaperEdi(String ids) {
+		if (ObjectUtils.isNull(ids)) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		List<Long> idList = new ArrayList<>();
+		Bills bills = billsMapper.selectById(ids);
+		if ("MM".equals(bills.getBillType())) {
+			List<Bills> billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
+				.eq(Bills::getIsDeleted, 0)
+				.eq(Bills::getMasterId, bills.getId()));
+			if (billsList.isEmpty()) {
+				throw new RuntimeException("未查到海运出口单据,发送失败!");
+			}
+			idList.addAll(billsList.stream().map(Bills::getId).collect(Collectors.toList()));
+		} else {
+			idList.add(bills.getId());
+		}
+		List<Bills> billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
+			.eq(Bills::getIsDeleted, 0)
+			.in(Bills::getId, idList));
+		if (billsList.isEmpty()) {
+			throw new RuntimeException("未查到海运出口单据,发送失败!");
+		}
+		List<SeaBillsDetail> billsDetailsList = seaBillsDetailService.list(new LambdaQueryWrapper<SeaBillsDetail>()
+			.in(SeaBillsDetail::getPid, idList));
+		if (billsDetailsList.isEmpty()) {
+			throw new RuntimeException("未查到海运出口单据,发送失败!");
+		}
+		List<SeaBillsDetail> seaBillsDetailList = new ArrayList<>();
+		for (Bills item : billsList) {
+			item.setEdiStatus("1");
+			SeaBillsDetail seaBillsDetail = billsDetailsList.stream().filter(e -> e.getPid().equals(item.getId())).findFirst().orElse(null);
+			if (seaBillsDetail != null) {
+				seaBillsDetail.setSendDeliveryPaperDate(new Date());
+				seaBillsDetail.setUpdateUser(AuthUtil.getUserId());
+				seaBillsDetail.setUpdateUserName(AuthUtil.getUserName());
+				seaBillsDetail.setUpdateTime(new Date());
+				seaBillsDetailList.add(seaBillsDetail);
+			}
+			billsMapper.updateById(item);
+		}
+		if (!seaBillsDetailList.isEmpty()) {
+			seaBillsDetailService.updateBatchById(seaBillsDetailList);
+		}
+		return R.data("操作成功");
+	}
+
+
+	@Override
+	public R historyCostList(Long id, Long billId, String dc) {
+		Bills bills = billsMapper.selectById(id);
+		Date date;
+		if ("SE".equals(bills.getBusinessType())) {
+			if (ObjectUtils.isNotNull(bills.getActualEtd())) {
+				date = bills.getActualEtd();
+			} else {
+				date = bills.getEtd();
+			}
+		} else {
+			if (ObjectUtils.isNotNull(bills.getActualEta())) {
+				date = bills.getActualEta();
+			} else {
+				date = bills.getEta();
+			}
+		}
+		String exrateType = currencyUtils.standardCurrency(bills.getBranchId());
+		List<BCurExrate> curExrateList = currencyUtils.obtainRate(date, "1", bills.getBranchId());
+		List<PreContainers> preContainersList = preContainersService.list(new LambdaQueryWrapper<PreContainers>()
+			.eq(PreContainers::getTenantId, AuthUtil.getTenantId())
+			.eq(PreContainers::getIsDeleted, 0)
+			.eq(PreContainers::getPid, billId));
+		List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getIsDeleted, 0)
+			.eq(FeeCenter::getPid, billId)
+			.eq(FeeCenter::getDc, dc));
+		if (!feeCenterList.isEmpty()) {
+			List<Long> idList = new ArrayList<>();
+			idList.add(bills.getCorpId());
+			idList.add(bills.getCyId());
+			idList.add(bills.getCarrierId());
+			idList.add(bills.getBookingAgentId());
+			idList.add(bills.getMconsigneeId());
+			idList.add(bills.getMnotifyId());
+			idList.add(bills.getForeignAgencyId());
+			idList.add(bills.getShippingAgencyId());
+			List<BCorps> corpsList = bCorpsService.list(new LambdaQueryWrapper<BCorps>()
+				.eq(BCorps::getTenantId, AuthUtil.getTenantId())
+				.eq(BCorps::getIsDeleted, 0)
+				.in(BCorps::getId, idList));
+			List<String> boxType = feeCenterList.stream().map(FeeCenter::getUnitNo)
+				.filter(Objects::nonNull).distinct().collect(Collectors.toList());
+			List<BCntrTypes> cntrTypesList = bCntrTypesService.list(new LambdaQueryWrapper<BCntrTypes>()
+				.eq(BCntrTypes::getTenantId, AuthUtil.getTenantId())
+				.eq(BCntrTypes::getIsDeleted, 0)
+				.in(BCntrTypes::getCustomsCode, boxType));
+			List<String> boxTypeList = new ArrayList<>();
+			if (!cntrTypesList.isEmpty()) {
+				boxTypeList = cntrTypesList.stream().map(BCntrTypes::getCode).distinct().collect(Collectors.toList());
+			}
+			for (FeeCenter feeCenter : feeCenterList) {
+				if (!boxTypeList.isEmpty() && boxTypeList.contains(feeCenter.getUnitNo()) && !preContainersList.isEmpty()) {
+					PreContainers preContainers = preContainersList.stream().filter(e -> e.getCntrTypeCode().equals(feeCenter.getUnitNo()))
+						.findFirst().orElse(null);
+					if (preContainers != null) {
+						feeCenter.setQuantity(new BigDecimal(preContainers.getQuantity() + ""));
+					}
+				} else {
+					if ("CNTRQTY".equals(feeCenter.getUnitNo())) {
+						feeCenter.setQuantity(bills.getQuantity());
+					} else if ("JOB".equals(feeCenter.getUnitNo()) || "票".equals(feeCenter.getUnitNo())) {
+						feeCenter.setQuantity(new BigDecimal("1"));
+					} else if ("TON".equals(feeCenter.getUnitNo())) {
+						feeCenter.setQuantity(bills.getGrossWeight());
+					} else if ("QUANTITY".equals(feeCenter.getUnitNo()) || "TEU".equals(feeCenter.getUnitNo()) || "箱量".equals(feeCenter.getUnitNo())) {
+						if (!preContainersList.isEmpty()) {
+							Integer sum = preContainersList.stream().map(PreContainers::getQuantity).reduce(0, Integer::sum);
+							feeCenter.setQuantity(new BigDecimal(sum + ""));
+						}
+					} else if ("VOLUME".equals(feeCenter.getUnitNo())) {
+						feeCenter.setQuantity(bills.getMeasurement());
+					}
+				}
+				feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
+				feeCenter.setAmountTax(feeCenter.getAmount());
+				feeCenter.setUnsettledAmount(feeCenter.getAmount());
+				if (exrateType.equals(feeCenter.getCurCode())) {
+					feeCenter.setExrate(new BigDecimal("1.00"));
+					feeCenter.setAmountLoc(feeCenter.getAmount());
+				} else {
+					feeCenter.setExrate(currencyUtils.obtainExrate(feeCenter.getDc(), curExrateList, feeCenter.getCurCode(), "1"));
+					if (new BigDecimal("0").compareTo(feeCenter.getAmount()) != 0) {
+						feeCenter.setAmountLoc(feeCenter.getAmount().multiply(feeCenter.getExrate()));
+					} else {
+						feeCenter.setAmountLoc(new BigDecimal("0"));
+					}
+				}
+				feeCenter.setId(null);
+				feeCenter.setPid(bills.getId());
+				feeCenter.setCreateUser(AuthUtil.getUserId());
+				feeCenter.setCreateUserName(AuthUtil.getUserName());
+				feeCenter.setCreateDept(bills.getCreateDept());
+				feeCenter.setCreateDeptName(bills.getCreateDeptName());
+				feeCenter.setCreateTime(new Date());
+				feeCenter.setAccBillId(null);
+				feeCenter.setAccBillNo("");
+				feeCenter.setAccDate(null);
+				feeCenter.setAccStatus(0);
+				feeCenter.setAccById(0L);
+				feeCenter.setAccByName("");
+				feeCenter.setCheckBillId(0L);
+				feeCenter.setCheckBillNo("");
+				feeCenter.setCheckDate(null);
+				feeCenter.setCheckAmount(new BigDecimal("0.00"));
+				feeCenter.setCheckStatus(0);
+				feeCenter.setCheckById(0L);
+				feeCenter.setCheckByName("");
+				feeCenter.setStlBillId(0L);
+				feeCenter.setStlBillNo("");
+				feeCenter.setStlDate(null);
+				feeCenter.setStlOrgAmount(new BigDecimal("0.00"));
+				feeCenter.setStlCurCode("");
+				feeCenter.setStlExrate(new BigDecimal("0.00"));
+				feeCenter.setStlExrateLoc(new BigDecimal("0.00"));
+				feeCenter.setStlAmount(new BigDecimal("0.00"));
+				feeCenter.setStlAmountLoc(new BigDecimal("0.00"));
+				feeCenter.setStlStatus(0);
+				feeCenter.setStlById(0L);
+				feeCenter.setStlByName("");
+				feeCenter.setStlTtlAmount(new BigDecimal("0.00"));
+				feeCenter.setUnsettledAmount(feeCenter.getAmount());
+				feeCenter.setVoucherBillId(0L);
+				feeCenter.setVoucherBillNo("");
+				feeCenter.setVoucherNo("");
+				feeCenter.setVoucherDate(null);
+				feeCenter.setVoucherStatus(0);
+				feeCenter.setVoucherById(0L);
+				feeCenter.setVoucherByName("");
+				feeCenter.setInvoiceBillId("");
+				feeCenter.setInvoiceBillNo("");
+				feeCenter.setInvoiceNo("");
+				feeCenter.setInvoiceDate(null);
+				feeCenter.setInvoiceStatus(0);
+				feeCenter.setInvoiceCurCode("");
+				feeCenter.setInvoiceExrate(new BigDecimal("0.00"));
+				feeCenter.setInvoiceAmount(new BigDecimal("0.00"));
+				feeCenter.setInvoiceAmountLoc(new BigDecimal("0.00"));
+				feeCenter.setUninvoicedAmount(new BigDecimal("0.00"));
+				feeCenter.setAppliedAmount(new BigDecimal("0.00"));
+				feeCenter.setAppliedInvoiceAmount(new BigDecimal("0.00"));
+				feeCenter.setReconciliationAmount(new BigDecimal("0.00"));
+				feeCenter.setAppliedAmountStl(new BigDecimal("0.00"));
+				feeCenter.setAppliedInvoiceAmountStl(new BigDecimal("0.00"));
+				feeCenter.setInvoiceById(0L);
+				feeCenter.setInvoiceByName("");
+				feeCenter.setIsSignfor(0);
+				feeCenter.setSignforId(0);
+				feeCenter.setSignforName("");
+				feeCenter.setSignforDate(null);
+				feeCenter.setApplyId(0L);
+				feeCenter.setApplyName("");
+				feeCenter.setApplyTime(null);
+				feeCenter.setApproverId(0L);
+				feeCenter.setApproverName("");
+				feeCenter.setApproveTime(null);
+				feeCenter.setAuditStatus("0");
+				feeCenter.setStlPid(null);
+				feeCenter.setAutomaticGenerated("0");
+				if (ObjectUtils.isNull(feeCenter.getCorpType())) {
+					BCorps bCorps = null;
+					if (!corpsList.isEmpty()) {
+						bCorps = corpsList.stream().filter(e -> e.getId().equals(bills.getCorpId())).findFirst().orElse(null);
+					}
+					if (bCorps != null) {
+						feeCenter.setGenerationCorpId(bCorps.getBookingAgentId());
+						feeCenter.setGenerationCorpCnName(bCorps.getBookingAgentCnName());
+						feeCenter.setGenerationCorpEnName(bCorps.getBookingAgentEnName());
+					}
+					feeCenter.setCorpId(bills.getCorpId());
+					feeCenter.setCorpCnName(bills.getCorpCnName());
+					feeCenter.setCorpEnName(bills.getCorpEnName());
+					feeCenter.setShortName(bills.getCorpCnName());
+				} else {
+					if ("国内直接客户,国外直接客户,国内同行及代理".contains(feeCenter.getCorpType())) {
+						feeCenter.setCorpId(bills.getCorpId());
+						feeCenter.setCorpCnName(bills.getCorpCnName());
+						feeCenter.setCorpEnName(bills.getCorpEnName());
+						feeCenter.setShortName(bills.getShortName());
+						BCorps bCorps = null;
+						if (!corpsList.isEmpty()) {
+							bCorps = corpsList.stream().filter(e -> e.getId().equals(bills.getCorpId())).findFirst().orElse(null);
+						}
+						if (bCorps != null) {
+							feeCenter.setGenerationCorpId(bCorps.getBookingAgentId());
+							feeCenter.setGenerationCorpCnName(bCorps.getBookingAgentCnName());
+							feeCenter.setGenerationCorpEnName(bCorps.getBookingAgentEnName());
+						}
+					} else if ("国外同行及代理".contains(feeCenter.getCorpType())) {
+						BCorps bCorps = null;
+						if (!corpsList.isEmpty()) {
+							bCorps = corpsList.stream().filter(e -> e.getId().equals(bills.getForeignAgencyId())).findFirst().orElse(null);
+						}
+						feeCenter.setCorpId(bills.getForeignAgencyId());
+						feeCenter.setCorpCnName(bills.getForeignAgencyCnName());
+						feeCenter.setCorpEnName(bills.getForeignAgencyEnName());
+						feeCenter.setShortName(bills.getForeignAgencyCnName());
+						if (bCorps != null) {
+							feeCenter.setGenerationCorpId(bCorps.getBookingAgentId());
+							feeCenter.setGenerationCorpCnName(bCorps.getBookingAgentCnName());
+							feeCenter.setGenerationCorpEnName(bCorps.getBookingAgentEnName());
+						}
+					} else if ("船公司".contains(feeCenter.getCorpType())) {
+						feeCenter.setCorpId(bills.getCarrierId());
+						feeCenter.setCorpCnName(bills.getCarrierCnName());
+						feeCenter.setCorpEnName(bills.getCarrierEnName());
+						feeCenter.setShortName(bills.getCarrierShortName());
+						if (!corpsList.isEmpty()) {
+							BCorps carrier = corpsList.stream().filter(e -> e.getId().equals(bills.getCarrierId())).findFirst().orElse(null);
+							if (carrier != null) {
+								feeCenter.setGenerationCorpId(carrier.getBookingAgentId());
+								feeCenter.setGenerationCorpCnName(carrier.getBookingAgentCnName());
+								feeCenter.setGenerationCorpEnName(carrier.getBookingAgentEnName());
+							}
+						}
+					} else if ("场站".contains(feeCenter.getCorpType())) {
+						BCorps bCorps = null;
+						if (!corpsList.isEmpty()) {
+							bCorps = corpsList.stream().filter(e -> e.getId().equals(bills.getCyId())).findFirst().orElse(null);
+						}
+						feeCenter.setCorpId(bills.getCyId());
+						feeCenter.setCorpCnName(bills.getCyCnName());
+						feeCenter.setCorpEnName(bills.getCyEnName());
+						feeCenter.setShortName(bills.getCyCnName());
+						if (bCorps != null) {
+							feeCenter.setGenerationCorpId(bCorps.getBookingAgentId());
+							feeCenter.setGenerationCorpCnName(bCorps.getBookingAgentCnName());
+							feeCenter.setGenerationCorpEnName(bCorps.getBookingAgentEnName());
+						}
+					} else if ("船代".contains(feeCenter.getCorpType())) {
+						BCorps bCorps = null;
+						if (!corpsList.isEmpty()) {
+							bCorps = corpsList.stream().filter(e -> e.getId().equals(bills.getShippingAgencyId())).findFirst().orElse(null);
+						}
+						feeCenter.setCorpId(bills.getShippingAgencyId());
+						feeCenter.setCorpCnName(bills.getShippingAgencyCname());
+						feeCenter.setCorpEnName(bills.getShippingAgencyEname());
+						feeCenter.setShortName(bills.getShippingAgencyCname());
+						if (bCorps != null) {
+							feeCenter.setGenerationCorpId(bCorps.getBookingAgentId());
+							feeCenter.setGenerationCorpCnName(bCorps.getBookingAgentCnName());
+							feeCenter.setGenerationCorpEnName(bCorps.getBookingAgentEnName());
+						}
+					} else {
+						BCorps bCorps = null;
+						if (!corpsList.isEmpty()) {
+							bCorps = corpsList.stream().filter(e -> e.getId().equals(bills.getCorpId())).findFirst().orElse(null);
+						}
+						if (bCorps != null) {
+							feeCenter.setGenerationCorpId(bCorps.getBookingAgentId());
+							feeCenter.setGenerationCorpCnName(bCorps.getBookingAgentCnName());
+							feeCenter.setGenerationCorpEnName(bCorps.getBookingAgentEnName());
+						}
+						feeCenter.setCorpId(bills.getCorpId());
+						feeCenter.setCorpCnName(bills.getCorpCnName());
+						feeCenter.setCorpEnName(bills.getCorpEnName());
+						feeCenter.setShortName(bills.getShortName());
+					}
+				}
+			}
+			return R.data(feeCenterList);
+		} else {
+			return R.data(new ArrayList<>());
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R historyCostImport(Bills bills) {
+		if (ObjectUtils.isNull(bills.getId()) || ObjectUtils.isNotNull(bills.getFeeCenterListAll())
+			|| !bills.getFeeCenterListAll().isEmpty()) {
+			Bills detail = billsMapper.selectById(bills.getId());
+			String exrateType = currencyUtils.standardCurrency(detail.getBranchId());
+			List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+				.eq(FeeCenter::getIsDeleted, 0)
+				.eq(FeeCenter::getPid, bills.getId()));
+			if (feeCenterList.isEmpty()){
+				feeCenterList = new ArrayList<>();
+			}
+			List<FeeCenter> feeCenters = new ArrayList<>();
+			for (FeeCenter item : bills.getFeeCenterListAll()) {
+				item.setCreateTime(new Date());
+				item.setCreateUser(AuthUtil.getUserId());
+				item.setCreateUserName(AuthUtil.getUserName());
+				item.setCreateDept(detail.getBranchId());
+				item.setBranchId(detail.getBranchId());
+				item.setBranchName(detail.getBranchName());
+				item.setCreateDeptName(detail.getBranchName());
+				item.setVersion("1");
+				item.setBillBranchId(bills.getBranchId());
+				item.setBillBranchName(bills.getBranchName());
+				item.setPid(bills.getId());
+				item.setBillNo(bills.getBillNo());
+				item.setBusinessType(bills.getBusinessType());
+				item.setBillType(bills.getBillType());
+				item.setBillDate(bills.getBillDate());
+				item.setBookingAgentId(bills.getBookingAgentId());
+				item.setBookingAgentCnName(bills.getBookingAgentCnName());
+				item.setBookingAgentEnName(bills.getBookingAgentEnName());
+				item.setSrcType(bills.getSrcType());
+				item.setSrcId(bills.getSrcId());
+				item.setSrcCnName(bills.getSrcCnName());
+				item.setSrcEnName(bills.getSrcEnName());
+				item.setBillCorpId(bills.getCorpId());
+				item.setBillCorpCnName(bills.getCorpCnName());
+				item.setBillCorpEnName(bills.getCorpEnName());
+				item.setBillShortName(bills.getShortName());
+				item.setLineId(bills.getLineId());
+				item.setLineCnName(bills.getLineCnName());
+				item.setLineEnName(bills.getLineEnName());
+				item.setVesselId(bills.getVesselId());
+				item.setVesselEnName(bills.getVesselEnName());
+				item.setVesselCnName(bills.getVesselCnName());
+				item.setVoyageNo(bills.getVoyageNo());
+				item.setMblno(bills.getMblno());
+				if (!"MM".equals(bills.getBillType())) {
+					item.setHblno(bills.getHblno());
+				}
+				item.setEtd(bills.getEtd());
+				item.setEta(bills.getEta());
+				item.setPolId(bills.getPolId());
+				item.setPolCode(bills.getPolCode());
+				item.setPolCnName(bills.getPolCnName());
+				item.setPolEnName(bills.getPolEnName());
+				item.setPodId(bills.getPodId());
+				item.setPodCode(bills.getPodCode());
+				item.setPodCnName(bills.getPodCnName());
+				item.setPodEnName(bills.getPodEnName());
+				item.setPaymode(bills.getMpaymode());
+				item.setPayplace(bills.getMpayplace());
+				item.setRefno(bills.getRefno());
+				item.setBookingNo(bills.getBookingNo());
+				item.setCntrNo(bills.getQuantityCntrTypesDescr());
+				item.setQuantityCntrDescr(bills.getQuantityCntrDescr());
+				item.setTeu(bills.getTeu());
+				feeCenters.add(item);
+			}
+			if (!feeCenters.isEmpty()) {
+				feeCenterService.saveBatch(feeCenters);
+				feeCenterList.addAll(feeCenters);
+			}
+			if (!feeCenterList.isEmpty()){
+				Bills billsAmount = costProfitCalculationService.costProfitCalculation(feeCenterList, exrateType);
+				if (billsAmount != null) {
+					detail.setAccountStatus(billsAmount.getAccountStatus());
+					detail.setAmountDr(billsAmount.getAmountDr());
+					detail.setOceanFreightDr(billsAmount.getOceanFreightDr());
+					detail.setAmountCr(billsAmount.getAmountCr());
+					detail.setOceanFreightCr(billsAmount.getOceanFreightCr());
+					detail.setAmountProfit(billsAmount.getAmountProfit());
+					detail.setOceanFreightProfit(billsAmount.getOceanFreightProfit());
+					detail.setAmountDrUsd(billsAmount.getAmountDrUsd());
+					detail.setAmountCrUsd(billsAmount.getAmountCrUsd());
+					detail.setAmountProfitUsd(billsAmount.getAmountProfitUsd());
+					detail.setAmountDrLoc(billsAmount.getAmountDrLoc());
+					detail.setAmountCrLoc(billsAmount.getAmountCrLoc());
+					detail.setAmountProfitLoc(billsAmount.getAmountProfitLoc());
+					billsMapper.updateById(detail);
+				}
+			}
+		}
+		return R.success("操作成功");
+	}
 }

+ 6 - 0
blade-service/blade-los/src/main/java/org/springblade/los/Util/IBillUtils.java

@@ -52,4 +52,10 @@ public interface IBillUtils {
 	R sendVerificationPrompt(String ids);
 
 	R billVerificationPrompt(String ids);
+
+	R sendDeliveryPaperEdi(String ids);
+
+	R historyCostList(Long id, Long billId, String dc);
+
+	R historyCostImport(Bills bills);
 }

+ 0 - 3
blade-service/blade-los/src/main/java/org/springblade/los/Util/StringTools.java

@@ -425,9 +425,6 @@ public class StringTools {
 					seaBillsDetail.setHnotifyDetails(firstString + "***");
 				}
 				bills.setCommodityDescr("***" + remaining);
-			} else if ("4".equals(type)) {
-				bills.setForeignAgencyDetails(firstString + "****");
-				bills.setCommodityDescr("****" + remaining);
 			}
 			bills.setDetail(seaBillsDetail);
 			return bills;

+ 8 - 3
blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.los.basic.reports.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -2656,17 +2657,21 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				map.put(MagicValues.DATA, bills);
 			}
 		}else if (MagicValues.POD_FEE_DAY.equals(reportCode) && MagicValues.POD_FEE_DAY.equals(groupCode) && MagicValues.HYCK.equals(type)) {
-			SeaFeeday bills = seaFeedayService.getOne(new LambdaQueryWrapper<SeaFeeday>()
+			SeaFeeday seaFeeday = seaFeedayService.getOne(new LambdaQueryWrapper<SeaFeeday>()
 				.eq(SeaFeeday::getTenantId, AuthUtil.getTenantId())
 				.eq(SeaFeeday::getIsDeleted, 0)
 				.ne(SeaFeeday::getStatus, "审核驳回")
 				.eq(SeaFeeday::getPid, billId)
 				.orderByDesc(SeaFeeday::getCreateTime)
 				.last("LIMIT 1"));
-			if (bills != null){
+			if (seaFeeday != null){
 				SeaFeedayVO vo = new SeaFeedayVO();
-				BeanUtil.copyProperties(bills, vo);
+				BeanUtil.copyProperties(seaFeeday, vo);
 				if (vo != null) {
+					if (ObjectUtils.isNotNull(vo.getDataJson())) {
+						List<FeedayDataJson> feedayDataJsonList = JSON.parseArray(vo.getDataJson(), FeedayDataJson.class);
+						vo.setFeedayDataJsonList(ObjectUtils.isNull(feedayDataJsonList) ? new ArrayList<>() : feedayDataJsonList);
+					}
 					vo.setDept(dept);
 					map.put(MagicValues.DATA, vo);
 				}

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/TradingBoxServiceImpl.java

@@ -3489,7 +3489,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 				.eq(TradingBox::getWhetherEnable, "是")
 				.le(TradingBox::getEffectiveDate, calendar.getTime())
 				.ge(TradingBox::getExpiryDate, new Date())
-				.apply("find_in_set(type,'OW-N,OW-F') and not_suitcase_num != 0")
+				.apply("find_in_set(type,'OW-N,OW-F') and box_number - cancel_number - suitcase_num != 0 != 0")
 				.orderByDesc(TradingBox::getExpiryDate));
 			for (TradingBox item : tradingBoxList) {
 				BoxReminderExcel excel = new BoxReminderExcel();

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

@@ -307,6 +307,7 @@ public class BillsController extends BladeController {
 						item.setMnotifyCntyCode(seaBillsDetail.getMnotifyCntyCode());
 						item.setMnotify2CntyName(seaBillsDetail.getMnotify2CntyName());
 						item.setMshipperCntyName(seaBillsDetail.getMshipperCntyName());
+						item.setSendDeliveryPaperDate(seaBillsDetail.getSendDeliveryPaperDate());
 					}
 				}
 				if (!feeCenterList.isEmpty()) {
@@ -1079,6 +1080,14 @@ public class BillsController extends BladeController {
 	}
 
 	/**
+	 * 发送下货纸
+	 */
+	@GetMapping("/sendDeliveryPaperEdi")
+	public R sendDeliveryPaperEdi(@RequestParam("ids") String ids) {
+		return billUtils.sendDeliveryPaperEdi(ids);
+	}
+
+	/**
 	 * 下货纸数据导出
 	 */
 	@GetMapping("/sendDeliveryPaperExport")
@@ -1165,5 +1174,26 @@ public class BillsController extends BladeController {
 		return updateHblnoUtils.updateHblno(id,hblno);
 	}
 
+	/**
+	 * 历史费用导入
+	 *
+	 */
+	@GetMapping("/historyCostList")
+	public R historyCostList(@RequestParam("id") Long id,
+							@RequestParam(value = "billId", required = false) Long billId,
+							@RequestParam(value = "dc", required = false) String dc) {
+		return billUtils.historyCostList(id, billId, dc);
+	}
+
+	/**
+	 * 历史费用导入
+	 *
+	 */
+	@PostMapping("/historyCostImport")
+	@RepeatSubmit
+	public R historyCostImport(@RequestBody  Bills bills) {
+		return billUtils.historyCostImport(bills);
+	}
+
 }
 

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

@@ -16,6 +16,7 @@
  */
 package org.springblade.los.business.sea.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -495,14 +496,16 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			String exrateType = currencyUtils.standardCurrency(branchId);
 			statusC += 1;
 			for (FeeCenter item : bills.getFeeCenterListC()) {
-				if (ObjectUtils.isNotNull(bills.getPreContainersList()) && !"CQXSF".equals(item.getFeeCode())) {
-					PreContainers preContainers = bills.getPreContainersList().stream().filter(e -> e.getCntrTypeCode().equals(item.getUnitNo()))
-						.findFirst().orElse(null);
-					if (preContainers != null && item.getQuantity().compareTo(new BigDecimal(preContainers.getQuantity() + "")) != 0 &&
-						ObjectUtils.isNotNull(item.getAuditStatus()) && "0,1".contains(item.getAuditStatus())) {
-						item.setQuantity(new BigDecimal(preContainers.getQuantity() + ""));
-						item.setAmount(item.getPrice().multiply(item.getQuantity()));
-						item.setAmountLoc(item.getAmount().multiply(item.getExrate()));
+				if (1 != bills.getBillStatus()) {
+					if (ObjectUtils.isNotNull(bills.getPreContainersList()) && !"CQXSF".equals(item.getFeeCode())) {
+						PreContainers preContainers = bills.getPreContainersList().stream().filter(e -> e.getCntrTypeCode().equals(item.getUnitNo()))
+							.findFirst().orElse(null);
+						if (preContainers != null && item.getQuantity().compareTo(new BigDecimal(preContainers.getQuantity() + "")) != 0 &&
+							ObjectUtils.isNotNull(item.getAuditStatus()) && "0,1".contains(item.getAuditStatus())) {
+							item.setQuantity(new BigDecimal(preContainers.getQuantity() + ""));
+							item.setAmount(item.getPrice().multiply(item.getQuantity()));
+							item.setAmountLoc(item.getAmount().multiply(item.getExrate()));
+						}
 					}
 				}
 				item.setBillBranchId(bills.getBranchId());
@@ -569,14 +572,16 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			String exrateType = currencyUtils.standardCurrency(branchId);
 			statusD += 1;
 			for (FeeCenter item : bills.getFeeCenterListD()) {
-				if (ObjectUtils.isNotNull(bills.getPreContainersList()) && !"CQXSF".equals(item.getFeeCode())) {
-					PreContainers preContainers = bills.getPreContainersList().stream().filter(e -> e.getCntrTypeCode().equals(item.getUnitNo()))
-						.findFirst().orElse(null);
-					if (preContainers != null && item.getQuantity().compareTo(new BigDecimal(preContainers.getQuantity() + "")) != 0 &&
-						ObjectUtils.isNotNull(item.getAuditStatus()) && "0,1".contains(item.getAuditStatus())) {
-						item.setQuantity(new BigDecimal(preContainers.getQuantity() + ""));
-						item.setAmount(item.getPrice().multiply(item.getQuantity()));
-						item.setAmountLoc(item.getAmount().multiply(item.getExrate()));
+				if (1 != bills.getBillStatus()) {
+					if (ObjectUtils.isNotNull(bills.getPreContainersList()) && !"CQXSF".equals(item.getFeeCode())) {
+						PreContainers preContainers = bills.getPreContainersList().stream().filter(e -> e.getCntrTypeCode().equals(item.getUnitNo()))
+							.findFirst().orElse(null);
+						if (preContainers != null && item.getQuantity().compareTo(new BigDecimal(preContainers.getQuantity() + "")) != 0 &&
+							ObjectUtils.isNotNull(item.getAuditStatus()) && "0,1".contains(item.getAuditStatus())) {
+							item.setQuantity(new BigDecimal(preContainers.getQuantity() + ""));
+							item.setAmount(item.getPrice().multiply(item.getQuantity()));
+							item.setAmountLoc(item.getAmount().multiply(item.getExrate()));
+						}
 					}
 				}
 				item.setBillBranchId(bills.getBranchId());
@@ -947,64 +952,50 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 
 			String textareaNumber = sysClient.getParamService("textarea.number");
 
-			if (!"获取数据失败".equals(lineLength) && !"获取数据失败".equals(textareaNumber)){
+			if (!"获取数据失败".equals(lineLength) && !"获取数据失败".equals(textareaNumber)) {
 				String commodityDescr = bills.getCommodityDescr();
 				if (ObjectUtils.isNotNull(seaBillsDetail.getHshipperDetails())) {
 					String hshipperDetails = StringTools.wrapText(seaBillsDetail.getHshipperDetails(), Integer.parseInt(lineLength));
-					Bills billsNew = StringTools.lineProcess(hshipperDetails,Integer.parseInt(textareaNumber),bills,"1");
-					if (billsNew != null){
-						if (ObjectUtils.isNotNull(commodityDescr)){
-							commodityDescr = commodityDescr+"\n"+billsNew.getCommodityDescr();
-						}else{
-							commodityDescr = commodityDescr+billsNew.getCommodityDescr();
+					Bills billsNew = StringTools.lineProcess(hshipperDetails, Integer.parseInt(textareaNumber), bills, "1");
+					if (billsNew != null) {
+						if (ObjectUtils.isNotNull(commodityDescr)) {
+							commodityDescr = commodityDescr + "\n" + billsNew.getCommodityDescr();
+						} else {
+							commodityDescr = commodityDescr + billsNew.getCommodityDescr();
 						}
 						seaBillsDetail.setHshipperDetails(billsNew.getDetail().getHshipperDetails());
-					}else{
+					} else {
 						seaBillsDetail.setHshipperDetails(hshipperDetails);
 					}
 				}
 				if (ObjectUtils.isNotNull(seaBillsDetail.getHconsigneeDetails())) {
 					String hconsigneeDetails = StringTools.wrapText(seaBillsDetail.getHconsigneeDetails(), Integer.parseInt(lineLength));
-					Bills billsNew = StringTools.lineProcess(hconsigneeDetails,Integer.parseInt(textareaNumber),bills,"2");
-					if (billsNew != null){
-						if (ObjectUtils.isNotNull(commodityDescr)){
-							commodityDescr = commodityDescr+"\n"+billsNew.getCommodityDescr();
-						}else{
-							commodityDescr = commodityDescr+billsNew.getCommodityDescr();
+					Bills billsNew = StringTools.lineProcess(hconsigneeDetails, Integer.parseInt(textareaNumber), bills, "2");
+					if (billsNew != null) {
+						if (ObjectUtils.isNotNull(commodityDescr)) {
+							commodityDescr = commodityDescr + "\n" + billsNew.getCommodityDescr();
+						} else {
+							commodityDescr = commodityDescr + billsNew.getCommodityDescr();
 						}
 						seaBillsDetail.setHconsigneeDetails(billsNew.getDetail().getHconsigneeDetails());
-					}else{
+					} else {
 						seaBillsDetail.setHconsigneeDetails(hconsigneeDetails);
 					}
 				}
 				if (ObjectUtils.isNotNull(seaBillsDetail.getHnotifyDetails())) {
 					String hnotifyDetails = StringTools.wrapText(seaBillsDetail.getHnotifyDetails(), Integer.parseInt(lineLength));
-					Bills billsNew = StringTools.lineProcess(hnotifyDetails,Integer.parseInt(textareaNumber),bills,"3");
-					if (billsNew != null){
-						if (ObjectUtils.isNotNull(commodityDescr)){
-							commodityDescr = commodityDescr+"\n"+billsNew.getCommodityDescr();
-						}else{
-							commodityDescr = commodityDescr+billsNew.getCommodityDescr();
+					Bills billsNew = StringTools.lineProcess(hnotifyDetails, Integer.parseInt(textareaNumber), bills, "3");
+					if (billsNew != null) {
+						if (ObjectUtils.isNotNull(commodityDescr)) {
+							commodityDescr = commodityDescr + "\n" + billsNew.getCommodityDescr();
+						} else {
+							commodityDescr = commodityDescr + billsNew.getCommodityDescr();
 						}
 						seaBillsDetail.setHnotifyDetails(billsNew.getDetail().getHnotifyDetails());
-					}else{
+					} else {
 						seaBillsDetail.setHnotifyDetails(hnotifyDetails);
 					}
 				}
-				if (ObjectUtils.isNotNull(bills.getForeignAgencyDetails())) {
-					String foreignAgencyDetails = StringTools.wrapText(bills.getForeignAgencyDetails(), Integer.parseInt(lineLength));
-					Bills billsNew = StringTools.lineProcess(foreignAgencyDetails,Integer.parseInt(textareaNumber),bills,"4");
-					if (billsNew != null){
-						bills.setForeignAgencyDetails(billsNew.getForeignAgencyDetails());
-						if (ObjectUtils.isNotNull(commodityDescr)){
-							commodityDescr = commodityDescr+"\n"+billsNew.getCommodityDescr();
-						}else{
-							commodityDescr = commodityDescr+billsNew.getCommodityDescr();
-						}
-					}else{
-						bills.setForeignAgencyDetails(foreignAgencyDetails);
-					}
-				}
 				bills.setCommodityDescr(commodityDescr);
 			}
 			if (ObjectUtils.isNotNull(seaBillsDetail.getId())) {
@@ -1489,13 +1480,20 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		detail.setAmountDrLocAmend(amountDrLoc);
 		detail.setAmountCrLocAmend(amountCrLoc);
 		detail.setAmountProfitLocAmend(amountProfitLoc);
-		detail.setSeaFeeday(seaFeedayMapper.selectOne(new LambdaQueryWrapper<SeaFeeday>()
+		SeaFeeday seaFeeday = seaFeedayMapper.selectOne(new LambdaQueryWrapper<SeaFeeday>()
 			.eq(SeaFeeday::getTenantId, AuthUtil.getTenantId())
 			.eq(SeaFeeday::getIsDeleted, 0)
 			.ne(SeaFeeday::getStatus, "审核驳回")
 			.eq(SeaFeeday::getPid, detail.getId())
 			.orderByDesc(SeaFeeday::getCreateTime)
-			.last("LIMIT 1")));
+			.last("LIMIT 1"));
+		if (seaFeeday != null) {
+			if (ObjectUtils.isNotNull(seaFeeday.getDataJson())) {
+				List<FeedayDataJson> feedayDataJsonList = JSON.parseArray(seaFeeday.getDataJson(), FeedayDataJson.class);
+				seaFeeday.setFeedayDataJsonList(ObjectUtils.isNull(feedayDataJsonList) ? new ArrayList<>() : feedayDataJsonList);
+			}
+			detail.setSeaFeeday(seaFeeday);
+		}
 		return detail;
 	}
 
@@ -3695,8 +3693,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			List<Containers> containersListNew = new ArrayList<>();
 			for (Containers item : containersList) {
 				if ("1".equals(whetherEmpty) && "SOC".equals(billsJk.getBoxBelongsTo()) && ObjectUtils.isNull(item.getContainerNumber())
-					&& !"MM".equals(billsJk.getBillType())){
-					throw new RuntimeException("提单号:"+billsJk.getHblno()+"中箱号"+item.getCntrNo()+"放箱号为空,转单失败");
+					&& !"MM".equals(billsJk.getBillType())) {
+					throw new RuntimeException("提单号:" + billsJk.getHblno() + "中箱号" + item.getCntrNo() + "放箱号为空,转单失败");
 				}
 				item.setSrcId(item.getId());
 				item.setId(null);
@@ -5398,64 +5396,50 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 
 			String textareaNumber = sysClient.getParamService("textarea.number");
 
-			if (!"获取数据失败".equals(lineLength) && !"获取数据失败".equals(textareaNumber)){
+			if (!"获取数据失败".equals(lineLength) && !"获取数据失败".equals(textareaNumber)) {
 				String commodityDescr = bills.getCommodityDescr();
 				if (ObjectUtils.isNotNull(seaBillsDetail.getHshipperDetails())) {
 					String hshipperDetails = StringTools.wrapText(seaBillsDetail.getHshipperDetails(), Integer.parseInt(lineLength));
-					Bills billsNew = StringTools.lineProcess(hshipperDetails,Integer.parseInt(textareaNumber),bills,"1");
-					if (billsNew != null){
-						if (ObjectUtils.isNotNull(commodityDescr)){
-							commodityDescr = commodityDescr+"\n"+billsNew.getCommodityDescr();
-						}else{
-							commodityDescr = commodityDescr+billsNew.getCommodityDescr();
+					Bills billsNew = StringTools.lineProcess(hshipperDetails, Integer.parseInt(textareaNumber), bills, "1");
+					if (billsNew != null) {
+						if (ObjectUtils.isNotNull(commodityDescr)) {
+							commodityDescr = commodityDescr + "\n" + billsNew.getCommodityDescr();
+						} else {
+							commodityDescr = commodityDescr + billsNew.getCommodityDescr();
 						}
 						seaBillsDetail.setHshipperDetails(billsNew.getDetail().getHshipperDetails());
-					}else{
+					} else {
 						seaBillsDetail.setHshipperDetails(hshipperDetails);
 					}
 				}
 				if (ObjectUtils.isNotNull(seaBillsDetail.getHconsigneeDetails())) {
 					String hconsigneeDetails = StringTools.wrapText(seaBillsDetail.getHconsigneeDetails(), Integer.parseInt(lineLength));
-					Bills billsNew = StringTools.lineProcess(hconsigneeDetails,Integer.parseInt(textareaNumber),bills,"2");
-					if (billsNew != null){
-						if (ObjectUtils.isNotNull(commodityDescr)){
-							commodityDescr = commodityDescr+"\n"+billsNew.getCommodityDescr();
-						}else{
-							commodityDescr = commodityDescr+billsNew.getCommodityDescr();
+					Bills billsNew = StringTools.lineProcess(hconsigneeDetails, Integer.parseInt(textareaNumber), bills, "2");
+					if (billsNew != null) {
+						if (ObjectUtils.isNotNull(commodityDescr)) {
+							commodityDescr = commodityDescr + "\n" + billsNew.getCommodityDescr();
+						} else {
+							commodityDescr = commodityDescr + billsNew.getCommodityDescr();
 						}
 						seaBillsDetail.setHconsigneeDetails(billsNew.getDetail().getHconsigneeDetails());
-					}else{
+					} else {
 						seaBillsDetail.setHconsigneeDetails(hconsigneeDetails);
 					}
 				}
 				if (ObjectUtils.isNotNull(seaBillsDetail.getHnotifyDetails())) {
 					String hnotifyDetails = StringTools.wrapText(seaBillsDetail.getHnotifyDetails(), Integer.parseInt(lineLength));
-					Bills billsNew = StringTools.lineProcess(hnotifyDetails,Integer.parseInt(textareaNumber),bills,"3");
-					if (billsNew != null){
-						if (ObjectUtils.isNotNull(commodityDescr)){
-							commodityDescr = commodityDescr+"\n"+billsNew.getCommodityDescr();
-						}else{
-							commodityDescr = commodityDescr+billsNew.getCommodityDescr();
+					Bills billsNew = StringTools.lineProcess(hnotifyDetails, Integer.parseInt(textareaNumber), bills, "3");
+					if (billsNew != null) {
+						if (ObjectUtils.isNotNull(commodityDescr)) {
+							commodityDescr = commodityDescr + "\n" + billsNew.getCommodityDescr();
+						} else {
+							commodityDescr = commodityDescr + billsNew.getCommodityDescr();
 						}
 						seaBillsDetail.setHnotifyDetails(billsNew.getDetail().getHnotifyDetails());
-					}else{
+					} else {
 						seaBillsDetail.setHnotifyDetails(hnotifyDetails);
 					}
 				}
-				if (ObjectUtils.isNotNull(bills.getForeignAgencyDetails())) {
-					String foreignAgencyDetails = StringTools.wrapText(bills.getForeignAgencyDetails(), Integer.parseInt(lineLength));
-					Bills billsNew = StringTools.lineProcess(foreignAgencyDetails,Integer.parseInt(textareaNumber),bills,"4");
-					if (billsNew != null){
-						bills.setForeignAgencyDetails(billsNew.getForeignAgencyDetails());
-						if (ObjectUtils.isNotNull(commodityDescr)){
-							commodityDescr = commodityDescr+"\n"+billsNew.getCommodityDescr();
-						}else{
-							commodityDescr = commodityDescr+billsNew.getCommodityDescr();
-						}
-					}else{
-						bills.setForeignAgencyDetails(foreignAgencyDetails);
-					}
-				}
 				bills.setCommodityDescr(commodityDescr);
 			}
 			if (ObjectUtils.isNotNull(seaBillsDetail.getId())) {
@@ -5990,8 +5974,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			List<String> cntrNoBookingList = containersBookingList.stream().map(Containers::getCntrNo).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 			if (cntrNoList.size() != cntrNoBookingList.size()) {
 				for (Containers item : containersFdList) {
-					if (ObjectUtils.isNotNull(item.getContainerNumber())){
-						throw new RuntimeException("箱号:"+item.getCntrNo()+"存在放箱号,导入失败");
+					if (ObjectUtils.isNotNull(item.getContainerNumber())) {
+						throw new RuntimeException("箱号:" + item.getCntrNo() + "存在放箱号,导入失败");
 					}
 				}
 				containersService.removeByIds(containersFdList.stream().map(Containers::getId).collect(Collectors.toList()));
@@ -6526,10 +6510,10 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 
 		List<PreContainers> preContainers = new ArrayList<>();
 		for (PreContainers item : preContainersList) {
-			if (!containersList.isEmpty()){
-				PreContainers preContainers1 = containersList.stream().filter(e-> e.getCntrTypeCode().equals(item.getCntrTypeCode()))
+			if (!containersList.isEmpty()) {
+				PreContainers preContainers1 = containersList.stream().filter(e -> e.getCntrTypeCode().equals(item.getCntrTypeCode()))
 					.findFirst().orElse(null);
-				if (preContainers1 != null){
+				if (preContainers1 != null) {
 					item.setWhetherAppearStatus(preContainers1.getWhetherAppearStatus());
 					item.setContainerNumberStatus(preContainers1.getContainerNumberStatus());
 				}

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

@@ -16,6 +16,7 @@
  */
 package org.springblade.los.business.sea.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -39,6 +40,7 @@ import org.springblade.los.check.service.IAuditProecessService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -81,7 +83,7 @@ public class SeaFeedayServiceImpl extends ServiceImpl<SeaFeedayMapper, SeaFeeday
 		seaFeeday.setCreateUserName(AuthUtil.getUserName());
 		seaFeeday.setPolApplyDays(seaFeedayVO.getPolApplyDays());
 		seaFeeday.setPodApplyDays(seaFeedayVO.getPodApplyDays());
-		seaFeeday.setApplyAmount(seaFeedayVO.getApplyAmount());
+
 		seaFeeday.setCurCode(seaFeedayVO.getCurCode());
 		seaFeeday.setType(seaFeedayVO.getType());
 		seaFeeday.setExrate(seaFeedayVO.getExrate());
@@ -115,6 +117,13 @@ public class SeaFeedayServiceImpl extends ServiceImpl<SeaFeedayMapper, SeaFeeday
 		seaFeeday.setPodCnName(bills.getPodCnName());
 		seaFeeday.setPodEnName(bills.getPodEnName());
 		seaFeeday.setPodNamePrint(bills.getPodNamePrint());
+		if (ObjectUtils.isNull(seaFeedayVO.getFeedayDataJsonList()) || seaFeedayVO.getFeedayDataJsonList().isEmpty()) {
+			throw new RuntimeException("箱型数据不能为空");
+		}
+		BigDecimal applyAmount = seaFeedayVO.getFeedayDataJsonList().stream()
+			.reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getBoxNumber().multiply(y.getPrice())), BigDecimal::add);
+		seaFeeday.setApplyAmount(applyAmount);
+		seaFeeday.setDataJson(JSON.toJSONString(seaFeedayVO.getFeedayDataJsonList()));
 		baseMapper.insert(seaFeeday);
 		Integer actId = 1139;
 		String processType = "免箱使天数申请";

+ 318 - 314
blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.los.check.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -1949,102 +1950,45 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 	}
 
 	private void processSeaFeeday(Bills bills, SeaFeeday seaFeeday) {
-		if ("pod".equals(seaFeeday.getType())) {
-			bills.setPodFreeBoxUseDays(seaFeeday.getPodApplyDays());
-			bills.setPolFreeBoxUseDays(seaFeeday.getPolApplyDays());
-			bills.setUpdateTime(new Date());
-			bills.setUpdateUserName(AuthUtil.getUserName());
-			bills.setUpdateUser(AuthUtil.getUserId());
-			int version = StringUtil.isBlank(bills.getVersion()) ? 1 : Integer.parseInt(bills.getVersion());
-			bills.setVersion(String.valueOf(version + 1));
-			if (new BigDecimal("0.00").compareTo(seaFeeday.getApplyAmount()) != 0){
-				List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
-					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-					.eq(FeeCenter::getIsDeleted, 0)
-					.eq(FeeCenter::getPid, bills.getId()));
-				List<FeeCenter> feeCenterListMM = new ArrayList<>();
-				Bills billsMM = null;
-				if ("MH".equals(bills.getBillType())) {
-					billsMM = billsMapper.selectById(bills.getMasterId());
-					if (billsMM != null) {
-						feeCenterListMM = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
-							.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-							.eq(FeeCenter::getIsDeleted, 0)
-							.eq(FeeCenter::getPid, billsMM.getId()));
-					}
-				}
-				//超期箱使费
-				BFees fees = bFeesService.getOne(new LambdaQueryWrapper<BFees>()
-					.eq(BFees::getTenantId, AuthUtil.getTenantId())
-					.eq(BFees::getIsDeleted, 0)
-					.eq(BFees::getCode, "CQXSF"));
-				if (fees == null) {
-					throw new RuntimeException("请先维护超期箱使费费用基础信息");
-				}
-				BCorps bCorps = bCorpsService.getOne(new LambdaQueryWrapper<BCorps>()
-					.eq(BCorps::getTenantId, AuthUtil.getTenantId())
-					.eq(BCorps::getIsDeleted, 0)
-					.eq(BCorps::getCode, "ZBYF"));
-				if (bCorps == null) {
-					throw new RuntimeException("基础资料未查到编码为‘ZBYF’往来单位");
-				}
-				FeeCenter feeCenter = new FeeCenter();
-				feeCenter.setBillType(bills.getBillType());
-				feeCenter.setCorpType("国内同行及代理");
-				feeCenter.setCorpId(bills.getCorpId());
-				feeCenter.setCorpCnName(bills.getCorpCnName());
-				feeCenter.setCorpEnName(bills.getCorpEnName());
-				feeCenter.setShortName(bills.getShortName());
-				feeCenter.setCreateTime(new Date());
-				feeCenter.setCreateUser(bills.getOperatorId());
-				feeCenter.setCreateUserName(bills.getOperatorName());
-				feeCenter.setPaymode(bills.getMpaymode());
-				feeCenter.setPid(bills.getId());
-				feeCenter.setDc("D");
-				feeCenter.setFeeId(fees.getId());
-				feeCenter.setFeeCode(fees.getCode());
-				feeCenter.setFeeCnName(fees.getCnName());
-				feeCenter.setFeeEnName(fees.getEnName());
-				feeCenter.setCurCode(seaFeeday.getCurCode());
-				feeCenter.setUnitNo("JOB");
-				feeCenter.setExrate(seaFeeday.getExrate());
-				feeCenter.setAmount(seaFeeday.getApplyAmount());
-				feeCenter.setAmountLoc(seaFeeday.getApplyAmount().multiply(feeCenter.getExrate()));
-				feeCenter.setUnsettledAmount(seaFeeday.getApplyAmount());
-				feeCenter.setPrice(seaFeeday.getApplyAmount());
-				feeCenter.setRemarks("超期箱使费-购买天数");
-				feeCenter.setQuantity(new BigDecimal("1"));
-				feeCenter.setBillNo(bills.getBillNo());
-				feeCenter.setBusinessType(bills.getBusinessType());
-				feeCenter.setBillDate(bills.getBillDate());
-				feeCenter.setBillCorpId(bills.getCorpId());
-				feeCenter.setBillCorpCnName(bills.getCorpCnName());
-				feeCenter.setBillCorpEnName(bills.getCorpEnName());
-				feeCenter.setBillShortName(bills.getCorpShortName());
-				feeCenter.setMblno(bills.getMblno());
-				feeCenter.setHblno(bills.getHblno());
-				feeCenter.setPolId(bills.getPolId());
-				feeCenter.setPolCode(bills.getPolCode());
-				feeCenter.setPolCnName(bills.getPolCnName());
-				feeCenter.setPolEnName(bills.getPolEnName());
-				feeCenter.setAutomaticGenerated("1");
-				feeCenter.setBranchId(bills.getBranchId());
-				feeCenter.setBranchName(bills.getBranchName());
-				feeCenter.setBillBranchId(bills.getBranchId());
-				feeCenter.setBillBranchName(bills.getBranchName());
-				feeCenter.setVersion("1");
-				feeCenterService.save(feeCenter);
-				FeeCenter feeCenterC = new FeeCenter();
-				BeanUtil.copyProperties(feeCenter, feeCenterC);
-				feeCenterC.setId(null);
-				feeCenterC.setPid(bills.getId());
-				feeCenterC.setDc("C");
-				feeCenterC.setCorpType("国内直接客户");
-				feeCenterC.setCorpId(bCorps.getId());
-				feeCenterC.setCorpCnName(bCorps.getCnName());
-				feeCenterC.setCorpEnName(bCorps.getEnName());
-				feeCenterC.setShortName(bCorps.getShortName());
-				feeCenterService.save(feeCenterC);
+		bills.setPodFreeBoxUseDays(seaFeeday.getPodApplyDays());
+		bills.setPolFreeBoxUseDays(seaFeeday.getPolApplyDays());
+		bills.setUpdateTime(new Date());
+		bills.setUpdateUserName(AuthUtil.getUserName());
+		bills.setUpdateUser(AuthUtil.getUserId());
+		int version = StringUtil.isBlank(bills.getVersion()) ? 1 : Integer.parseInt(bills.getVersion());
+		bills.setVersion(String.valueOf(version + 1));
+		if (new BigDecimal("0.00").compareTo(seaFeeday.getApplyAmount()) != 0) {
+			List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+				.eq(FeeCenter::getIsDeleted, 0)
+				.eq(FeeCenter::getPid, bills.getId()));
+			List<FeeCenter> feeCenterListMM = new ArrayList<>();
+			Bills billsMM = null;
+			if ("MH".equals(bills.getBillType())) {
+				billsMM = billsMapper.selectById(bills.getMasterId());
+				if (billsMM != null) {
+					feeCenterListMM = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+						.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+						.eq(FeeCenter::getIsDeleted, 0)
+						.eq(FeeCenter::getPid, billsMM.getId()));
+				}
+			}
+			//超期箱使费
+			BFees fees = bFeesService.getOne(new LambdaQueryWrapper<BFees>()
+				.eq(BFees::getTenantId, AuthUtil.getTenantId())
+				.eq(BFees::getIsDeleted, 0)
+				.eq(BFees::getCode, "CQXSF"));
+			if (fees == null) {
+				throw new RuntimeException("请先维护超期箱使费费用基础信息");
+			}
+			BCorps bCorps = bCorpsService.getOne(new LambdaQueryWrapper<BCorps>()
+				.eq(BCorps::getTenantId, AuthUtil.getTenantId())
+				.eq(BCorps::getIsDeleted, 0)
+				.eq(BCorps::getCode, "ZBYF"));
+			if (bCorps == null) {
+				throw new RuntimeException("基础资料未查到编码为‘ZBYF’往来单位");
+			}
+			if (ObjectUtils.isNotNull(seaFeeday.getDataJson())) {
 				BusinessType businessType = bBusinessTypeService.getOne(new LambdaQueryWrapper<BusinessType>()
 					.eq(BusinessType::getTenantId, AuthUtil.getTenantId())
 					.eq(BusinessType::getIsDeleted, 0)
@@ -2053,215 +1997,275 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				if (businessType == null) {
 					throw new RuntimeException("未找到账单业务编号规则");
 				}
+				List<FeedayDataJson> feedayDataJsonList = JSON.parseArray(seaFeeday.getDataJson(), FeedayDataJson.class);
 				List<FeeCenter> feeCenterListAcc = new ArrayList<>();
-				if ("MH".equals(bills.getBillType()) && billsMM != null) {
-					String exrateType = currencyUtils.standardCurrency(billsMM.getBranchId());
-					FeeCenter feeCenterDMM = new FeeCenter();
-					feeCenterDMM.setBookingAgentId(billsMM.getBookingAgentId());
-					feeCenterDMM.setBookingAgentCnName(billsMM.getBookingAgentCnName());
-					feeCenterDMM.setBookingAgentEnName(billsMM.getBookingAgentEnName());
-					feeCenterDMM.setQuantityCntrDescr(billsMM.getQuantityCntrDescr());
-					feeCenterDMM.setBillBranchId(billsMM.getBranchId());
-					feeCenterDMM.setBillBranchName(billsMM.getBranchName());
-					feeCenterDMM.setTeu(billsMM.getTeu());
-					feeCenterDMM.setBranchId(billsMM.getBranchId());
-					feeCenterDMM.setBranchName(billsMM.getBranchName());
-					feeCenterDMM.setPid(billsMM.getId());
-					feeCenterDMM.setCntrNo(billsMM.getQuantityCntrTypesDescr());
-					feeCenterDMM.setBillNo(billsMM.getBillNo());
-					feeCenterDMM.setBusinessType(billsMM.getBusinessType());
-					feeCenterDMM.setBillType(billsMM.getBillType());
-					feeCenterDMM.setBillDate(billsMM.getBillDate());
-					feeCenterDMM.setBillCorpId(billsMM.getCorpId());
-					feeCenterDMM.setBillCorpCnName(billsMM.getCorpCnName());
-					feeCenterDMM.setBillCorpEnName(billsMM.getCorpEnName());
-					feeCenterDMM.setBillShortName(billsMM.getShortName());
-					feeCenterDMM.setLineId(billsMM.getLineId());
-					feeCenterDMM.setLineCnName(billsMM.getLineCnName());
-					feeCenterDMM.setLineEnName(billsMM.getLineEnName());
-					feeCenterDMM.setVesselId(billsMM.getVesselId());
-					feeCenterDMM.setVesselCnName(billsMM.getVesselCnName());
-					feeCenterDMM.setVesselEnName(billsMM.getVesselEnName());
-					feeCenterDMM.setVoyageNo(billsMM.getVoyageNo());
-					feeCenterDMM.setMblno(billsMM.getMblno());
-					feeCenterDMM.setHblno(bills.getHblno());
-					feeCenterDMM.setEtd(billsMM.getEtd());
-					feeCenterDMM.setEta(billsMM.getEta());
-					feeCenterDMM.setPolId(billsMM.getPolId());
-					feeCenterDMM.setPolCode(billsMM.getPolCode());
-					feeCenterDMM.setPolCnName(billsMM.getPolCnName());
-					feeCenterDMM.setPolEnName(billsMM.getPolEnName());
-					feeCenterDMM.setPodId(billsMM.getPodId());
-					feeCenterDMM.setPodCode(billsMM.getPodCode());
-					feeCenterDMM.setPodCnName(billsMM.getPodCnName());
-					feeCenterDMM.setPodEnName(billsMM.getPodEnName());
-					feeCenterDMM.setPaymode(billsMM.getMpaymode());
-					feeCenterDMM.setSort(1);
-					feeCenterDMM.setFeeId(fees.getId());
-					feeCenterDMM.setFeeCode(fees.getCode());
-					feeCenterDMM.setFeeCnName(fees.getCnName());
-					feeCenterDMM.setFeeEnName(fees.getEnName());
-					feeCenterDMM.setUnitNo("JOB");
-					feeCenterDMM.setCurCode(feeCenterC.getCurCode());
-					feeCenterDMM.setExrate(feeCenterC.getExrate());
-					feeCenterDMM.setDc("D");
-					feeCenterDMM.setCorpType("国内直接客户");
-					BCorps corps = bCorpsService.getOne(new LambdaQueryWrapper<BCorps>()
-						.eq(BCorps::getTenantId, AuthUtil.getTenantId())
-						.eq(BCorps::getIsDeleted, 0)
-						.eq(BCorps::getEnName, bills.getBranchName()));
-					if (corps == null) {
-						throw new RuntimeException("基础资料未查到往来单位" + bills.getBranchName());
-					}
-					feeCenterDMM.setCorpId(corps.getId());
-					feeCenterDMM.setCorpCnName(corps.getCnName());
-					feeCenterDMM.setCorpEnName(corps.getEnName());
-					feeCenterDMM.setShortName(corps.getShortName());
-					feeCenterDMM.setGenerationCorpId(corps.getBookingAgentId());
-					feeCenterDMM.setGenerationCorpCnName(corps.getBookingAgentCnName());
-					feeCenterDMM.setGenerationCorpEnName(corps.getBookingAgentEnName());
-					feeCenterDMM.setQuantity(new BigDecimal("1"));
-					feeCenterDMM.setPrice(feeCenterC.getPrice());
-					feeCenterDMM.setAmount(feeCenterC.getAmount());
-					feeCenterDMM.setAmountLoc(feeCenterC.getAmountLoc());
-					feeCenterDMM.setUnsettledAmount(feeCenterC.getAmount());
-					feeCenterDMM.setCreateUser(billsMM.getOperatorId());
-					feeCenterDMM.setCreateUserName(billsMM.getOperatorName());
-					feeCenterDMM.setCreateTime(new Date());
-					BigDecimal amount = feeCenterDMM.getAmount();
-					FinAccBills data = new FinAccBills();
-					data.setCurCode(feeCenterDMM.getCurCode());
-					data.setGenerationCorpId(feeCenterDMM.getGenerationCorpId());
-					data.setGenerationCorpCnName(feeCenterDMM.getGenerationCorpCnName());
-					data.setGenerationCorpEnName(feeCenterDMM.getGenerationCorpEnName());
-					data.setCreateTime(new Date());
-					data.setCreateUser(AuthUtil.getUserId());
-					data.setCreateUserName(AuthUtil.getUserName());
-					data.setCreateDept(feeCenterDMM.getCreateDept());
-					data.setCreateDeptName(feeCenterDMM.getCreateDeptName());
-					data.setBranchId(feeCenterDMM.getBranchId());
-					data.setBranchName(feeCenterDMM.getBranchName());
-					data.setDeptId(Long.parseLong(feeCenterDMM.getBranchId()));
-					data.setDeptName(feeCenterDMM.getBranchName());
-					data.setBookingAgentId(feeCenterDMM.getBookingAgentId());
-					data.setBookingAgentCnName(feeCenterDMM.getBookingAgentCnName());
-					data.setBookingAgentEnName(feeCenterDMM.getBookingAgentEnName());
-					data.setTaxRate(feeCenterDMM.getTaxRate());
-					data.setAmountTax(feeCenterDMM.getAmountTax());
-					data.setBillBranchId(feeCenterDMM.getBillBranchId());
-					data.setBillBranchName(feeCenterDMM.getBillBranchName());
-					BusinessBillNo businessBillNo = new BusinessBillNo();
-					businessBillNo.setBusinessTypeId(businessType.getId());
-					businessBillNo.setCode("HYZD");
-					businessBillNo.setBranchId(feeCenterDMM.getBranchId());
-					R clientBillNo = businessBillNoService.getBillNoLos(businessBillNo);
-					if (!clientBillNo.isSuccess()) {
-						throw new RuntimeException("生成账单编号失败");
-					}
-					data.setBillNo((String) clientBillNo.getData());
-					data.setBillDate(feeCenterDMM.getBillDate());
-					data.setAccountDc(feeCenterDMM.getDc());
-					data.setAccountDate(feeCenterDMM.getBillDate());
-					data.setBillKey(feeCenterDMM.getBillKey());
-					data.setBusinessType(feeCenterDMM.getBusinessType());
-					data.setBillType(feeCenterDMM.getBillType());
-					data.setBusinessBillId(feeCenterDMM.getPid());
-					data.setBusinessBillNo(feeCenterDMM.getBillNo());
-					data.setBusinessDate(feeCenterDMM.getBillDate());
-					data.setSrcId(billsMM.getSrcId());
-					data.setSrcCnName(billsMM.getSrcCnName());
-					data.setSrcEnName(billsMM.getSrcEnName());
-					data.setSrcType(billsMM.getSrcType());
-					data.setOperatorId(billsMM.getOperatorId());
-					data.setOperatorName(billsMM.getOperatorName());
-					data.setQuantityCntrDescr(billsMM.getQuantityCntrDescr());
-					data.setPaymode(feeCenterDMM.getPaymode());
-					data.setCorpId(feeCenterDMM.getCorpId());
-					data.setCorpCnName(feeCenterDMM.getCorpCnName());
-					data.setCorpEnName(feeCenterDMM.getCorpEnName());
-					data.setCorpArgreementNo(billsMM.getCorpArgreementNo());
-					data.setBillCorpId(feeCenterDMM.getBillCorpId());
-					data.setBillCorpCnName(feeCenterDMM.getBillCorpCnName());
-					data.setBillCorpEnName(feeCenterDMM.getBillCorpEnName());
-					data.setVesselId(feeCenterDMM.getVesselId());
-					data.setVesselCnName(feeCenterDMM.getVesselCnName());
-					data.setVesselEnName(feeCenterDMM.getVesselEnName());
-					data.setVoyageNo(feeCenterDMM.getVoyageNo());
-					data.setMblno(feeCenterDMM.getMblno());
-					data.setHblno(feeCenterDMM.getHblno());
-					data.setRefno(billsMM.getRefno());
-					data.setBookingNo(billsMM.getBookingNo());
-					data.setEtd(feeCenterDMM.getEtd());
-					data.setEta(feeCenterDMM.getEta());
-					data.setPolId(feeCenterDMM.getPolId());
-					data.setPolCnName(feeCenterDMM.getPolCnName());
-					data.setPolEnName(feeCenterDMM.getPolEnName());
-					data.setPolNamePrint(billsMM.getPolNamePrint());
-					data.setPodId(feeCenterDMM.getPodId());
-					data.setPodCnName(feeCenterDMM.getPodCnName());
-					data.setPodCode(feeCenterDMM.getPodCode());
-					data.setPodEnName(feeCenterDMM.getPodEnName());
-					data.setPodNamePrint(billsMM.getPodNamePrint());
-					data.setTrackingNumber(feeCenterDMM.getTrackingNumber());
-					data.setAccountType("LOCAL");
-					BigDecimal amountLoc = feeCenterDMM.getAmountLoc();
-					if ("D".equals(feeCenterDMM.getDc())) {
-						if (exrateType.equals(feeCenterDMM.getCurCode())) {
-							data.setAmountDr(amount);
-						} else {
-							data.setAmountDrUsd(amount);
+				for (FeedayDataJson item : feedayDataJsonList) {
+					FeeCenter feeCenter = new FeeCenter();
+					feeCenter.setBillType(bills.getBillType());
+					feeCenter.setCorpType("国内同行及代理");
+					feeCenter.setCorpId(bills.getCorpId());
+					feeCenter.setCorpCnName(bills.getCorpCnName());
+					feeCenter.setCorpEnName(bills.getCorpEnName());
+					feeCenter.setShortName(bills.getShortName());
+					feeCenter.setCreateTime(new Date());
+					feeCenter.setCreateUser(bills.getOperatorId());
+					feeCenter.setCreateUserName(bills.getOperatorName());
+					feeCenter.setPaymode(bills.getMpaymode());
+					feeCenter.setPid(bills.getId());
+					feeCenter.setDc("D");
+					feeCenter.setFeeId(fees.getId());
+					feeCenter.setFeeCode(fees.getCode());
+					feeCenter.setFeeCnName(fees.getCnName());
+					feeCenter.setFeeEnName(fees.getEnName());
+					feeCenter.setCurCode(seaFeeday.getCurCode());
+					feeCenter.setUnitNo("JOB");
+					feeCenter.setExrate(seaFeeday.getExrate());
+					feeCenter.setPrice(item.getPrice());
+					feeCenter.setRemarks("超期箱使费-购买天数");
+					feeCenter.setQuantity(item.getBoxNumber());
+					feeCenter.setAmount(feeCenter.getQuantity().multiply(feeCenter.getPrice()));
+					feeCenter.setAmountLoc(seaFeeday.getApplyAmount().multiply(feeCenter.getExrate()));
+					feeCenter.setUnsettledAmount(seaFeeday.getApplyAmount());
+					feeCenter.setBillNo(bills.getBillNo());
+					feeCenter.setBusinessType(bills.getBusinessType());
+					feeCenter.setBillDate(bills.getBillDate());
+					feeCenter.setBillCorpId(bills.getCorpId());
+					feeCenter.setBillCorpCnName(bills.getCorpCnName());
+					feeCenter.setBillCorpEnName(bills.getCorpEnName());
+					feeCenter.setBillShortName(bills.getCorpShortName());
+					feeCenter.setMblno(bills.getMblno());
+					feeCenter.setHblno(bills.getHblno());
+					feeCenter.setPolId(bills.getPolId());
+					feeCenter.setPolCode(bills.getPolCode());
+					feeCenter.setPolCnName(bills.getPolCnName());
+					feeCenter.setPolEnName(bills.getPolEnName());
+					feeCenter.setAutomaticGenerated("1");
+					feeCenter.setBranchId(bills.getBranchId());
+					feeCenter.setBranchName(bills.getBranchName());
+					feeCenter.setBillBranchId(bills.getBranchId());
+					feeCenter.setBillBranchName(bills.getBranchName());
+					feeCenter.setVersion("1");
+					feeCenterService.save(feeCenter);
+					FeeCenter feeCenterC = new FeeCenter();
+					BeanUtil.copyProperties(feeCenter, feeCenterC);
+					feeCenterC.setId(null);
+					feeCenterC.setPid(bills.getId());
+					feeCenterC.setDc("C");
+					feeCenterC.setCorpType("国内直接客户");
+					feeCenterC.setCorpId(bCorps.getId());
+					feeCenterC.setCorpCnName(bCorps.getCnName());
+					feeCenterC.setCorpEnName(bCorps.getEnName());
+					feeCenterC.setShortName(bCorps.getShortName());
+					feeCenterService.save(feeCenterC);
+					if ("MH".equals(bills.getBillType()) && billsMM != null) {
+						String exrateType = currencyUtils.standardCurrency(billsMM.getBranchId());
+						FeeCenter feeCenterDMM = new FeeCenter();
+						feeCenterDMM.setBookingAgentId(billsMM.getBookingAgentId());
+						feeCenterDMM.setBookingAgentCnName(billsMM.getBookingAgentCnName());
+						feeCenterDMM.setBookingAgentEnName(billsMM.getBookingAgentEnName());
+						feeCenterDMM.setQuantityCntrDescr(billsMM.getQuantityCntrDescr());
+						feeCenterDMM.setBillBranchId(billsMM.getBranchId());
+						feeCenterDMM.setBillBranchName(billsMM.getBranchName());
+						feeCenterDMM.setTeu(billsMM.getTeu());
+						feeCenterDMM.setBranchId(billsMM.getBranchId());
+						feeCenterDMM.setBranchName(billsMM.getBranchName());
+						feeCenterDMM.setPid(billsMM.getId());
+						feeCenterDMM.setCntrNo(billsMM.getQuantityCntrTypesDescr());
+						feeCenterDMM.setBillNo(billsMM.getBillNo());
+						feeCenterDMM.setBusinessType(billsMM.getBusinessType());
+						feeCenterDMM.setBillType(billsMM.getBillType());
+						feeCenterDMM.setBillDate(billsMM.getBillDate());
+						feeCenterDMM.setBillCorpId(billsMM.getCorpId());
+						feeCenterDMM.setBillCorpCnName(billsMM.getCorpCnName());
+						feeCenterDMM.setBillCorpEnName(billsMM.getCorpEnName());
+						feeCenterDMM.setBillShortName(billsMM.getShortName());
+						feeCenterDMM.setLineId(billsMM.getLineId());
+						feeCenterDMM.setLineCnName(billsMM.getLineCnName());
+						feeCenterDMM.setLineEnName(billsMM.getLineEnName());
+						feeCenterDMM.setVesselId(billsMM.getVesselId());
+						feeCenterDMM.setVesselCnName(billsMM.getVesselCnName());
+						feeCenterDMM.setVesselEnName(billsMM.getVesselEnName());
+						feeCenterDMM.setVoyageNo(billsMM.getVoyageNo());
+						feeCenterDMM.setMblno(billsMM.getMblno());
+						feeCenterDMM.setHblno(bills.getHblno());
+						feeCenterDMM.setEtd(billsMM.getEtd());
+						feeCenterDMM.setEta(billsMM.getEta());
+						feeCenterDMM.setPolId(billsMM.getPolId());
+						feeCenterDMM.setPolCode(billsMM.getPolCode());
+						feeCenterDMM.setPolCnName(billsMM.getPolCnName());
+						feeCenterDMM.setPolEnName(billsMM.getPolEnName());
+						feeCenterDMM.setPodId(billsMM.getPodId());
+						feeCenterDMM.setPodCode(billsMM.getPodCode());
+						feeCenterDMM.setPodCnName(billsMM.getPodCnName());
+						feeCenterDMM.setPodEnName(billsMM.getPodEnName());
+						feeCenterDMM.setPaymode(billsMM.getMpaymode());
+						feeCenterDMM.setSort(1);
+						feeCenterDMM.setFeeId(fees.getId());
+						feeCenterDMM.setFeeCode(fees.getCode());
+						feeCenterDMM.setFeeCnName(fees.getCnName());
+						feeCenterDMM.setFeeEnName(fees.getEnName());
+						feeCenterDMM.setUnitNo("JOB");
+						feeCenterDMM.setCurCode(feeCenterC.getCurCode());
+						feeCenterDMM.setExrate(feeCenterC.getExrate());
+						feeCenterDMM.setDc("D");
+						feeCenterDMM.setCorpType("国内直接客户");
+						BCorps corps = bCorpsService.getOne(new LambdaQueryWrapper<BCorps>()
+							.eq(BCorps::getTenantId, AuthUtil.getTenantId())
+							.eq(BCorps::getIsDeleted, 0)
+							.eq(BCorps::getEnName, bills.getBranchName()));
+						if (corps == null) {
+							throw new RuntimeException("基础资料未查到往来单位" + bills.getBranchName());
 						}
-						data.setAmountDrLoc(amountLoc);
-					} else {
-						if (exrateType.equals(feeCenterDMM.getCurCode())) {
-							data.setAmountCr(amount);
+						feeCenterDMM.setCorpId(corps.getId());
+						feeCenterDMM.setCorpCnName(corps.getCnName());
+						feeCenterDMM.setCorpEnName(corps.getEnName());
+						feeCenterDMM.setShortName(corps.getShortName());
+						feeCenterDMM.setGenerationCorpId(corps.getBookingAgentId());
+						feeCenterDMM.setGenerationCorpCnName(corps.getBookingAgentCnName());
+						feeCenterDMM.setGenerationCorpEnName(corps.getBookingAgentEnName());
+						feeCenterDMM.setQuantity(new BigDecimal("1"));
+						feeCenterDMM.setPrice(feeCenterC.getPrice());
+						feeCenterDMM.setAmount(feeCenterC.getAmount());
+						feeCenterDMM.setAmountLoc(feeCenterC.getAmountLoc());
+						feeCenterDMM.setUnsettledAmount(feeCenterC.getAmount());
+						feeCenterDMM.setCreateUser(billsMM.getOperatorId());
+						feeCenterDMM.setCreateUserName(billsMM.getOperatorName());
+						feeCenterDMM.setCreateTime(new Date());
+						BigDecimal amount = feeCenterDMM.getAmount();
+						FinAccBills data = new FinAccBills();
+						data.setCurCode(feeCenterDMM.getCurCode());
+						data.setGenerationCorpId(feeCenterDMM.getGenerationCorpId());
+						data.setGenerationCorpCnName(feeCenterDMM.getGenerationCorpCnName());
+						data.setGenerationCorpEnName(feeCenterDMM.getGenerationCorpEnName());
+						data.setCreateTime(new Date());
+						data.setCreateUser(AuthUtil.getUserId());
+						data.setCreateUserName(AuthUtil.getUserName());
+						data.setCreateDept(feeCenterDMM.getCreateDept());
+						data.setCreateDeptName(feeCenterDMM.getCreateDeptName());
+						data.setBranchId(feeCenterDMM.getBranchId());
+						data.setBranchName(feeCenterDMM.getBranchName());
+						data.setDeptId(Long.parseLong(feeCenterDMM.getBranchId()));
+						data.setDeptName(feeCenterDMM.getBranchName());
+						data.setBookingAgentId(feeCenterDMM.getBookingAgentId());
+						data.setBookingAgentCnName(feeCenterDMM.getBookingAgentCnName());
+						data.setBookingAgentEnName(feeCenterDMM.getBookingAgentEnName());
+						data.setTaxRate(feeCenterDMM.getTaxRate());
+						data.setAmountTax(feeCenterDMM.getAmountTax());
+						data.setBillBranchId(feeCenterDMM.getBillBranchId());
+						data.setBillBranchName(feeCenterDMM.getBillBranchName());
+						BusinessBillNo businessBillNo = new BusinessBillNo();
+						businessBillNo.setBusinessTypeId(businessType.getId());
+						businessBillNo.setCode("HYZD");
+						businessBillNo.setBranchId(feeCenterDMM.getBranchId());
+						R clientBillNo = businessBillNoService.getBillNoLos(businessBillNo);
+						if (!clientBillNo.isSuccess()) {
+							throw new RuntimeException("生成账单编号失败");
+						}
+						data.setBillNo((String) clientBillNo.getData());
+						data.setBillDate(feeCenterDMM.getBillDate());
+						data.setAccountDc(feeCenterDMM.getDc());
+						data.setAccountDate(feeCenterDMM.getBillDate());
+						data.setBillKey(feeCenterDMM.getBillKey());
+						data.setBusinessType(feeCenterDMM.getBusinessType());
+						data.setBillType(feeCenterDMM.getBillType());
+						data.setBusinessBillId(feeCenterDMM.getPid());
+						data.setBusinessBillNo(feeCenterDMM.getBillNo());
+						data.setBusinessDate(feeCenterDMM.getBillDate());
+						data.setSrcId(billsMM.getSrcId());
+						data.setSrcCnName(billsMM.getSrcCnName());
+						data.setSrcEnName(billsMM.getSrcEnName());
+						data.setSrcType(billsMM.getSrcType());
+						data.setOperatorId(billsMM.getOperatorId());
+						data.setOperatorName(billsMM.getOperatorName());
+						data.setQuantityCntrDescr(billsMM.getQuantityCntrDescr());
+						data.setPaymode(feeCenterDMM.getPaymode());
+						data.setCorpId(feeCenterDMM.getCorpId());
+						data.setCorpCnName(feeCenterDMM.getCorpCnName());
+						data.setCorpEnName(feeCenterDMM.getCorpEnName());
+						data.setCorpArgreementNo(billsMM.getCorpArgreementNo());
+						data.setBillCorpId(feeCenterDMM.getBillCorpId());
+						data.setBillCorpCnName(feeCenterDMM.getBillCorpCnName());
+						data.setBillCorpEnName(feeCenterDMM.getBillCorpEnName());
+						data.setVesselId(feeCenterDMM.getVesselId());
+						data.setVesselCnName(feeCenterDMM.getVesselCnName());
+						data.setVesselEnName(feeCenterDMM.getVesselEnName());
+						data.setVoyageNo(feeCenterDMM.getVoyageNo());
+						data.setMblno(feeCenterDMM.getMblno());
+						data.setHblno(feeCenterDMM.getHblno());
+						data.setRefno(billsMM.getRefno());
+						data.setBookingNo(billsMM.getBookingNo());
+						data.setEtd(feeCenterDMM.getEtd());
+						data.setEta(feeCenterDMM.getEta());
+						data.setPolId(feeCenterDMM.getPolId());
+						data.setPolCnName(feeCenterDMM.getPolCnName());
+						data.setPolEnName(feeCenterDMM.getPolEnName());
+						data.setPolNamePrint(billsMM.getPolNamePrint());
+						data.setPodId(feeCenterDMM.getPodId());
+						data.setPodCnName(feeCenterDMM.getPodCnName());
+						data.setPodCode(feeCenterDMM.getPodCode());
+						data.setPodEnName(feeCenterDMM.getPodEnName());
+						data.setPodNamePrint(billsMM.getPodNamePrint());
+						data.setTrackingNumber(feeCenterDMM.getTrackingNumber());
+						data.setAccountType("LOCAL");
+						BigDecimal amountLoc = feeCenterDMM.getAmountLoc();
+						if ("D".equals(feeCenterDMM.getDc())) {
+							if (exrateType.equals(feeCenterDMM.getCurCode())) {
+								data.setAmountDr(amount);
+							} else {
+								data.setAmountDrUsd(amount);
+							}
+							data.setAmountDrLoc(amountLoc);
 						} else {
-							data.setAmountCrUsd(amount);
+							if (exrateType.equals(feeCenterDMM.getCurCode())) {
+								data.setAmountCr(amount);
+							} else {
+								data.setAmountCrUsd(amount);
+							}
+							data.setAmountCrLoc(amountLoc);
+						}
+						data.setExrate(feeCenterDMM.getExrate());
+						finAccBillsService.saveOrUpdate(data);
+						feeCenterDMM.setAccBillId(data.getId());
+						feeCenterDMM.setAccBillNo(data.getBillNo());
+						feeCenterDMM.setAccDate(data.getBillDate());
+						feeCenterDMM.setAccAmount(amountLoc);
+						feeCenterDMM.setAccStatus(1);
+						feeCenterDMM.setAccById(AuthUtil.getUserId());
+						feeCenterDMM.setAccByName(AuthUtil.getUserName());
+						feeCenterDMM.setAuditStatus("4");
+						feeCenterService.save(feeCenterDMM);
+						if (feeCenterListMM.isEmpty()) {
+							feeCenterListMM = new ArrayList<>();
+						}
+						feeCenterListMM.add(feeCenterDMM);
+						Bills billsAmount = costProfitCalculationService.costProfitCalculation(feeCenterListMM, exrateType);
+						if (billsAmount != null) {
+							billsMM.setAccountStatus(billsAmount.getAccountStatus());
+							billsMM.setAmountDr(billsAmount.getAmountDr());
+							billsMM.setOceanFreightDr(billsAmount.getOceanFreightDr());
+							billsMM.setAmountCr(billsAmount.getAmountCr());
+							billsMM.setOceanFreightCr(billsAmount.getOceanFreightCr());
+							billsMM.setAmountProfit(billsAmount.getAmountProfit());
+							billsMM.setOceanFreightProfit(billsAmount.getOceanFreightProfit());
+							billsMM.setAmountDrUsd(billsAmount.getAmountDrUsd());
+							billsMM.setAmountCrUsd(billsAmount.getAmountCrUsd());
+							billsMM.setAmountProfitUsd(billsAmount.getAmountProfitUsd());
+							billsMM.setAmountDrLoc(billsAmount.getAmountDrLoc());
+							billsMM.setAmountCrLoc(billsAmount.getAmountCrLoc());
+							billsMM.setAmountProfitLoc(billsAmount.getAmountProfitLoc());
+							int versionMM = StringUtil.isBlank(billsMM.getVersion()) ? 1 : Integer.parseInt(billsMM.getVersion());
+							billsMM.setVersion(String.valueOf(versionMM + 1));
+							billsMapper.updateById(billsMM);
 						}
-						data.setAmountCrLoc(amountLoc);
-					}
-					data.setExrate(feeCenterDMM.getExrate());
-					finAccBillsService.saveOrUpdate(data);
-					feeCenterDMM.setAccBillId(data.getId());
-					feeCenterDMM.setAccBillNo(data.getBillNo());
-					feeCenterDMM.setAccDate(data.getBillDate());
-					feeCenterDMM.setAccAmount(amountLoc);
-					feeCenterDMM.setAccStatus(1);
-					feeCenterDMM.setAccById(AuthUtil.getUserId());
-					feeCenterDMM.setAccByName(AuthUtil.getUserName());
-					feeCenterDMM.setAuditStatus("4");
-					feeCenterService.save(feeCenterDMM);
-					if (feeCenterListMM.isEmpty()) {
-						feeCenterListMM = new ArrayList<>();
 					}
-					feeCenterListMM.add(feeCenterDMM);
-					Bills billsAmount = costProfitCalculationService.costProfitCalculation(feeCenterListMM, exrateType);
-					if (billsAmount != null) {
-						billsMM.setAccountStatus(billsAmount.getAccountStatus());
-						billsMM.setAmountDr(billsAmount.getAmountDr());
-						billsMM.setOceanFreightDr(billsAmount.getOceanFreightDr());
-						billsMM.setAmountCr(billsAmount.getAmountCr());
-						billsMM.setOceanFreightCr(billsAmount.getOceanFreightCr());
-						billsMM.setAmountProfit(billsAmount.getAmountProfit());
-						billsMM.setOceanFreightProfit(billsAmount.getOceanFreightProfit());
-						billsMM.setAmountDrUsd(billsAmount.getAmountDrUsd());
-						billsMM.setAmountCrUsd(billsAmount.getAmountCrUsd());
-						billsMM.setAmountProfitUsd(billsAmount.getAmountProfitUsd());
-						billsMM.setAmountDrLoc(billsAmount.getAmountDrLoc());
-						billsMM.setAmountCrLoc(billsAmount.getAmountCrLoc());
-						billsMM.setAmountProfitLoc(billsAmount.getAmountProfitLoc());
-						int versionMM = StringUtil.isBlank(billsMM.getVersion()) ? 1 : Integer.parseInt(billsMM.getVersion());
-						billsMM.setVersion(String.valueOf(versionMM + 1));
-						billsMapper.updateById(billsMM);
+					feeCenterListAcc.add(feeCenter);
+					feeCenterListAcc.add(feeCenterC);
+					if (feeCenterList.isEmpty()) {
+						feeCenterList = new ArrayList<>();
 					}
+					feeCenterList.add(feeCenter);
+					feeCenterList.add(feeCenterC);
 				}
-				feeCenterListAcc.add(feeCenter);
-				feeCenterListAcc.add(feeCenterC);
-				if (feeCenterList.isEmpty()) {
-					feeCenterList = new ArrayList<>();
-				}
-				feeCenterList.add(feeCenter);
-				feeCenterList.add(feeCenterC);
 				String exrateType = currencyUtils.standardCurrency(bills.getBranchId());
 				Bills billsAmount = costProfitCalculationService.costProfitCalculation(feeCenterList, exrateType);
 				if (billsAmount != null) {
@@ -2385,22 +2389,22 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				}
 				feeCenterService.saveOrUpdateBatch(feeCenterListAcc);
 			}
-			billsMapper.updateById(bills);
-			if ("已转单".equals(bills.getTransferOrderStatus())){
-				Bills billsJk = billsMapper.selectOne(new LambdaQueryWrapper<Bills>()
-					.eq(Bills::getTenantId,AuthUtil.getTenantId())
-					.eq(Bills::getIsDeleted,0)
-					.eq(Bills::getHblno,bills.getHblno()));
-				if (billsJk != null){
-					billsJk.setPolFreeBoxUseDays(seaFeeday.getPolApplyDays());
-					billsJk.setPodFreeBoxUseDays(seaFeeday.getPodApplyDays());
-					billsJk.setUpdateTime(new Date());
-					billsJk.setUpdateUserName(AuthUtil.getUserName());
-					billsJk.setUpdateUser(AuthUtil.getUserId());
-					int versionJk = StringUtil.isBlank(billsJk.getVersion()) ? 1 : Integer.parseInt(billsJk.getVersion());
-					billsJk.setVersion(String.valueOf(versionJk + 1));
-					billsMapper.updateById(billsJk);
-				}
+		}
+		billsMapper.updateById(bills);
+		if ("已转单".equals(bills.getTransferOrderStatus())) {
+			Bills billsJk = billsMapper.selectOne(new LambdaQueryWrapper<Bills>()
+				.eq(Bills::getTenantId, AuthUtil.getTenantId())
+				.eq(Bills::getIsDeleted, 0)
+				.eq(Bills::getHblno, bills.getHblno()));
+			if (billsJk != null) {
+				billsJk.setPolFreeBoxUseDays(seaFeeday.getPolApplyDays());
+				billsJk.setPodFreeBoxUseDays(seaFeeday.getPodApplyDays());
+				billsJk.setUpdateTime(new Date());
+				billsJk.setUpdateUserName(AuthUtil.getUserName());
+				billsJk.setUpdateUser(AuthUtil.getUserId());
+				int versionJk = StringUtil.isBlank(billsJk.getVersion()) ? 1 : Integer.parseInt(billsJk.getVersion());
+				billsJk.setVersion(String.valueOf(versionJk + 1));
+				billsMapper.updateById(billsJk);
 			}
 		}
 	}

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

@@ -826,10 +826,8 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 			if (ObjectUtils.isNotNull(details.getEdiStatus()) && Integer.parseInt(details.getEdiStatus()) > 0) {
 				// 默认 9
 				inttraSoDto.setFilesFunction("9");
-				details.setEdiStatus(Integer.parseInt(details.getEdiStatus()) + 1 + "");
 			} else {
 				inttraSoDto.setFilesFunction("9");
-				details.setEdiStatus("1");
 			}
 			SimpleDateFormat sdf4 = new SimpleDateFormat(readEdiParamStringValue(ediParamCarrier, "fileDate-format", "yyyyMMddHHmm"));
 			inttraSoDto.setFileDate(sdf4.format(date));

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java

@@ -2916,7 +2916,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 		List<FeeCenter> feeCenterListBoxType = new ArrayList<>();
 		List<FeeCenter> feeCenterList;
 		if (!cntrTypesList.isEmpty()) {
-			List<String> boxTypeList = cntrTypesList.stream().map(BCntrTypes::getCode).distinct().collect(Collectors.toList());
+			List<String> boxTypeList = cntrTypesList.stream().map(BCntrTypes::getCustomsCode).distinct().collect(Collectors.toList());
 			feeCenterListBoxType = losBFeesTemplateVO.getFeeCenterList().stream().filter(e -> boxTypeList.contains(e.getUnitNo()))
 				.collect(Collectors.toList());
 			feeCenterList = losBFeesTemplateVO.getFeeCenterList().stream().filter(e -> !boxTypeList.contains(e.getUnitNo()))