Browse Source

1.海运出口增加同步订舱文件接口
2.海运出口增加同步订舱箱型箱量接口
3.客户订舱增加提交箱型接口
4.客户订舱-撤销订舱同步海运出口退舱状态
5.付费申请打印接口bug修改
6.海运出口增加是否修改过箱型箱量状态
7.增加海运进出口统一计算利润方法
8.客户订舱增加保存模板接口
9.客户订舱增加获取订舱模板接口

纪新园 5 months ago
parent
commit
67c9a98769

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

@@ -1621,6 +1621,16 @@ public class Bills implements Serializable {
 	 */
 	@ApiModelProperty(value = "提单状态")
 	private String billOfLadingStatus;
+	/**
+	 * 文件联络人邮箱
+	 */
+	@ApiModelProperty(value = "文件联络人邮箱")
+	private String fileEmail;
+	/**
+	 * 是否修改过箱型箱量
+	 */
+	@ApiModelProperty(value = "是否修改过箱型箱量")
+	private String whetherModify;
 
 	/**
 	 * 到港日期

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

@@ -333,6 +333,11 @@ public class PreContainers implements Serializable {
 	 */
 	@ApiModelProperty(value = "放箱号状态")
 	private String containerNumberStatus;
+	/**
+	 * 是否修改内容比对字符串
+	 */
+	@ApiModelProperty(value = "是否修改内容比对字符串")
+	private String whetherModifyJson;
 
 	/**
 	 * 销售价

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

@@ -372,20 +372,23 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 									}
 									BigDecimal currentStlAmountD = finStlBillsItems.stream()
 										.filter(e -> e.getMblno().equals(item.getMblno())
-											&& (ObjectUtils.isNotNull(e.getHblno()) && e.getHblno().equals(item.getHblno()))
+											&& (!ObjectUtils.isNotNull(e.getHblno()) || e.getHblno().equals(item.getHblno()))
 											&& MagicValues.D.equals(e.getDc()) && exrateType.equals(e.getCurCode()))
 										.map(FinStlBillsItems::getCurrentStlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 									BigDecimal currentStlAmountC = finStlBillsItems.stream()
 										.filter(e -> e.getMblno().equals(item.getMblno())
-											&& (ObjectUtils.isNotNull(e.getHblno()) && e.getHblno().equals(item.getHblno())) && MagicValues.C.equals(e.getDc()) && exrateType.equals(e.getCurCode()))
+											&& (!ObjectUtils.isNotNull(e.getHblno()) || e.getHblno().equals(item.getHblno()))
+											&& MagicValues.C.equals(e.getDc()) && exrateType.equals(e.getCurCode()))
 										.map(FinStlBillsItems::getCurrentStlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 									BigDecimal currentStlAmountUsdD = finStlBillsItems.stream()
 										.filter(e -> e.getMblno().equals(item.getMblno())
-											&& (ObjectUtils.isNotNull(e.getHblno()) && e.getHblno().equals(item.getHblno())) && MagicValues.D.equals(e.getDc()) && !exrateType.equals(e.getCurCode()))
+											&& (!ObjectUtils.isNotNull(e.getHblno()) || e.getHblno().equals(item.getHblno()))
+											&& MagicValues.D.equals(e.getDc()) && !exrateType.equals(e.getCurCode()))
 										.map(FinStlBillsItems::getCurrentStlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 									BigDecimal currentStlAmountUsdC = finStlBillsItems.stream()
 										.filter(e -> e.getMblno().equals(item.getMblno())
-											&& (ObjectUtils.isNotNull(e.getHblno()) && e.getHblno().equals(item.getHblno())) && MagicValues.C.equals(e.getDc()) && !exrateType.equals(e.getCurCode()))
+											&& (!ObjectUtils.isNotNull(e.getHblno()) || e.getHblno().equals(item.getHblno()))
+											&& MagicValues.C.equals(e.getDc()) && !exrateType.equals(e.getCurCode()))
 										.map(FinStlBillsItems::getCurrentStlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 									finStlBillsItemsReports.setAmount(currentStlAmountC.subtract(currentStlAmountD));
 									finStlBillsItemsReports.setAmountUsd(currentStlAmountUsdC.subtract(currentStlAmountUsdD));
@@ -486,13 +489,16 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 											&& MagicValues.D.equals(e.getDc()) && exrateType.equals(e.getCurCode()))
 										.map(FinStlBillsItems::getCurrentStlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 									BigDecimal currentStlAmountC = finStlBillsItems.stream()
-										.filter(e -> e.getMblno().equals(item.getMblno()))
+										.filter(e -> e.getMblno().equals(item.getMblno())
+											&& MagicValues.C.equals(e.getDc()) && exrateType.equals(e.getCurCode()))
 										.map(FinStlBillsItems::getCurrentStlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 									BigDecimal currentStlAmountUsdD = finStlBillsItems.stream()
-										.filter(e -> e.getMblno().equals(item.getMblno()))
+										.filter(e -> e.getMblno().equals(item.getMblno())
+											&& MagicValues.D.equals(e.getDc()) && !exrateType.equals(e.getCurCode()))
 										.map(FinStlBillsItems::getCurrentStlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 									BigDecimal currentStlAmountUsdC = finStlBillsItems.stream()
-										.filter(e -> e.getMblno().equals(item.getMblno()))
+										.filter(e -> e.getMblno().equals(item.getMblno())
+											&& MagicValues.C.equals(e.getDc()) && !exrateType.equals(e.getCurCode()))
 										.map(FinStlBillsItems::getCurrentStlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 									finStlBillsItemsReports.setAmount(currentStlAmountC.subtract(currentStlAmountD));
 									finStlBillsItemsReports.setAmountUsd(currentStlAmountUsdC.subtract(currentStlAmountUsdD));
@@ -1281,6 +1287,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 								feeCenterReports1.setAmountD(feeCentersD.get(i).getAmountD());
 								feeCenterReports1.setAmountLocD(feeCentersD.get(i).getAmountLocD());
 								feeCenterReports1.setAmountUsdD(feeCentersD.get(i).getAmountUsdD());
+								feeCenterReports1.setCurCode(feeCentersD.get(i).getCurCode());
 								FeeCenterReports feeCenterC = feeCenterReportsC.stream()
 									.filter(e -> e.getFeeCnName().equals(feeCentersD.get(finalI).getFeeCnName())
 										&& !"1".equals(e.getMark()) && e.getCurCode().equals(feeCentersD.get(finalI).getCurCode()))
@@ -1308,6 +1315,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 									feeCenterReports1.setAmountC(i.getAmountC());
 									feeCenterReports1.setAmountLocC(i.getAmountLocC());
 									feeCenterReports1.setAmountUsdC(i.getAmountUsdC());
+									feeCenterReports1.setCurCode(i.getCurCode());
 									feeCenterReports.add(feeCenterReports1);
 								}
 							}
@@ -1517,7 +1525,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 					}
 				}
 				ids.add(0, bills.getId());
-				if (MagicValues.RECEIVABLE_AMEND.equals(groupCode)) {
+				if (MagicValues.RECEIVABLE_BILL.equals(groupCode)) {
 					List<Amends> amendsList = amendsService.list(new LambdaQueryWrapper<Amends>()
 						.eq(Amends::getTenantId, AuthUtil.getTenantId())
 						.eq(Amends::getIsDeleted, 0)
@@ -1593,7 +1601,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 					}
 				}
 				ids.add(0, bills.getId());
-				if (MagicValues.MEET_AMEND.equals(groupCode)) {
+				if (MagicValues.MEET_BILL.equals(groupCode)) {
 					List<Amends> amendsList = amendsService.list(new LambdaQueryWrapper<Amends>()
 						.eq(Amends::getTenantId, AuthUtil.getTenantId())
 						.eq(Amends::getIsDeleted, 0)
@@ -2016,6 +2024,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 							feeCenterReports1.setFeeCnName(feeCentersD.get(i).getFeeCnName());
 							feeCenterReports1.setHblno(feeCentersD.get(i).getHblno());
 							feeCenterReports1.setPid(feeCentersD.get(i).getPid());
+							feeCenterReports1.setCurCode(feeCentersD.get(i).getCurCode());
 							int finalI = i;
 							FeeCenterReports feeCenterC = feeCenterReportsC.stream()
 								.filter(e -> e.getFeeCnName().equals(feeCentersD.get(finalI).getFeeCnName()) && !"1".equals(e.getMark())).findFirst().orElse(null);
@@ -2046,6 +2055,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 								feeCenterReports1.setAmountC(i.getAmountC());
 								feeCenterReports1.setAmountLocC(i.getAmountLocC());
 								feeCenterReports1.setAmountUsdC(i.getAmountUsdC());
+								feeCenterReports1.setCurCode(i.getCurCode());
 								feeCenterReports.add(feeCenterReports1);
 							}
 						}

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

@@ -111,6 +111,8 @@ public class BillsController extends BladeController {
 				.like(Bills::getCorpAttnTel, bills.getCorpAttnName()))
 			.and(ObjectUtils.isNotNull(bills.getCarrierCnName()), i -> i.like(Bills::getCarrierCnName, bills.getCarrierCnName()).or()
 				.like(Bills::getCarrierEnName, bills.getCarrierCnName()).or().like(Bills::getCarrierArgreementNo, bills.getCarrierCnName()))
+			.and(ObjectUtils.isNotNull(bills.getCarrierEnName()), i -> i.like(Bills::getCarrierCnName, bills.getCarrierEnName()).or()
+				.like(Bills::getCarrierEnName, bills.getCarrierEnName()).or().like(Bills::getCarrierArgreementNo, bills.getCarrierEnName()))
 			.and(ObjectUtils.isNotNull(bills.getPodEnName()), i -> i.like(Bills::getPodCnName, bills.getPodEnName()).or()
 				.like(Bills::getPodEnName, bills.getPodEnName()).or().like(Bills::getPodCode, bills.getPodEnName()))
 			.and(ObjectUtils.isNotNull(bills.getPolEnName()), i -> i.like(Bills::getPolCnName, bills.getPolEnName()).or()
@@ -950,5 +952,22 @@ public class BillsController extends BladeController {
 	public R billLadingConfirm(@Valid @RequestBody Bills bills) {
 		return billsService.billLadingConfirm(bills);
 	}
+
+	/**
+	 * 同步订舱文件
+	 */
+	@PostMapping("/synchronousFile")
+	public R synchronousFile(@Valid @RequestBody Bills bills) {
+		return billsService.synchronousFile(bills);
+	}
+
+	/**
+	 * 海运出口同步订舱箱型箱量
+	 */
+	@PostMapping("/synchronousBoxType")
+	public R synchronousBoxType(@Valid @RequestBody Bills bills){
+		return billsService.synchronousBoxType(bills);
+	}
+
 }
 

+ 73 - 1
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/BookingCabinController.java

@@ -30,13 +30,15 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.los.business.sea.entity.Bills;
+import org.springblade.los.business.sea.entity.PreContainers;
 import org.springblade.los.business.sea.entity.SeaBillsDetail;
 import org.springblade.los.business.sea.service.IBillsService;
+import org.springblade.los.business.sea.service.IPreContainersService;
 import org.springblade.los.business.sea.service.ISeaBillsDetailService;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
-import java.util.Date;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -56,6 +58,8 @@ public class BookingCabinController extends BladeController {
 
 	private final ISeaBillsDetailService seaBillsDetailService;
 
+	private final IPreContainersService preContainersService;
+
 	/**
 	 * 详情
 	 */
@@ -233,5 +237,73 @@ public class BookingCabinController extends BladeController {
 		return billsService.submitConfirm(bills);
 	}
 
+	/**
+	 * 提交箱型
+	 */
+	@PostMapping("/submitBoxType")
+	public R submitBoxType(@Valid @RequestBody Bills bills) {
+		return billsService.submitBoxType(bills);
+	}
+
+	/**
+	 * 订舱常用模板保存
+	 */
+	@PostMapping("/submitCommonTemplates")
+	@RepeatSubmit
+	public R submitCommonTemplates(@Valid @RequestBody Bills bills) {
+		return billsService.submitCommonTemplates(bills);
+	}
+
+	/**
+	 * 获取订舱模板
+	 */
+	@GetMapping("/listTemplates")
+	public R<IPage<Bills>> listTemplates(Bills bills, Query query) {
+		LambdaQueryWrapper<Bills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(Bills::getIsDeleted, 0)
+			.eq(Bills::getTenantId, AuthUtil.getTenantId())
+			.eq(Bills::getBusinessType, "DCMB")
+			.like(ObjectUtils.isNotNull(bills.getBillNo()), Bills::getBillNo, bills.getBillNo())
+			.like(ObjectUtils.isNotNull(bills.getMblno()), Bills::getMblno, bills.getMblno())
+			.like(ObjectUtils.isNotNull(bills.getHblno()), Bills::getHblno, bills.getHblno())
+			.like(ObjectUtils.isNotNull(bills.getBookingNo()), Bills::getBookingNo, bills.getBookingNo())
+			.and(ObjectUtils.isNotNull(bills.getCarrierCnName()), i -> i.like(Bills::getCarrierCnName, bills.getCarrierCnName()).or()
+				.like(Bills::getCarrierEnName, bills.getCarrierCnName()).or().like(Bills::getCarrierArgreementNo, bills.getCarrierCnName()))
+			.and(ObjectUtils.isNotNull(bills.getPodEnName()), i -> i.like(Bills::getPodCnName, bills.getPodEnName()).or()
+				.like(Bills::getPodEnName, bills.getPodEnName()).or().like(Bills::getPodCode, bills.getPodEnName()))
+			.and(ObjectUtils.isNotNull(bills.getPolEnName()), i -> i.like(Bills::getPolCnName, bills.getPolEnName()).or()
+				.like(Bills::getPolEnName, bills.getPolEnName()).or().like(Bills::getPolCode, bills.getPolEnName()));
+		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+			lambdaQueryWrapper.eq(Bills::getBranchId, AuthUtil.getDeptId());
+		} else {
+			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(bills.getBranchId()), Bills::getBranchId, bills.getBranchId());
+		}
+		lambdaQueryWrapper.and(ObjectUtils.isNotNull(bills.getBookingAgentCnName()), i -> i.like(Bills::getBookingAgentCnName, bills.getBookingAgentCnName()).or()
+				.like(Bills::getBookingAgentEnName, bills.getBookingAgentCnName()))
+			.eq(ObjectUtils.isNotNull(bills.getIssueType()), Bills::getIssueType, bills.getIssueType())
+			.eq(ObjectUtils.isNotNull(bills.getBillType()), Bills::getBillType, bills.getBillType())
+			.eq(ObjectUtils.isNotNull(bills.getOperatorId()), Bills::getOperatorId, bills.getOperatorId())
+			.like(ObjectUtils.isNotNull(bills.getOperatorName()), Bills::getOperatorName, bills.getOperatorName())
+			.eq(ObjectUtils.isNotNull(bills.getCustomerServiceId()), Bills::getCustomerServiceId, bills.getCustomerServiceId())
+			.like(ObjectUtils.isNotNull(bills.getCustomerServiceName()), Bills::getCustomerServiceName, bills.getCustomerServiceName())
+			.orderByDesc(Bills::getCreateTime);
+		IPage<Bills> pages = billsService.page(Condition.getPage(query), lambdaQueryWrapper);
+		if (!pages.getRecords().isEmpty()) {
+			List<Long> idList = pages.getRecords().stream().map(Bills::getId).collect(Collectors.toList());
+			List<PreContainers> preContainersList = preContainersService.list(new LambdaQueryWrapper<PreContainers>()
+				.eq(PreContainers::getTenantId, AuthUtil.getTenantId())
+				.eq(PreContainers::getIsDeleted, 0)
+				.in(PreContainers::getPid, idList));
+			if (!preContainersList.isEmpty()) {
+				for (Bills item : pages.getRecords()) {
+					List<PreContainers> preContainers = preContainersList.stream().filter(e -> e.getPid().equals(item.getId()))
+						.collect(Collectors.toList());
+					item.setPreContainersList(preContainers.isEmpty() ? new ArrayList<>() : preContainers);
+				}
+			}
+		}
+		return R.data(pages);
+	}
+
 }
 

+ 8 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IBillsService.java

@@ -203,4 +203,12 @@ public interface IBillsService extends IService<Bills> {
     List<String> cntrTypeList(Long billId);
 
 	R synchronizeDataMM(Long billId);
+
+	R synchronousFile(Bills bills);
+
+	R submitBoxType(Bills bills);
+
+	R synchronousBoxType(Bills bills);
+
+	R submitCommonTemplates(Bills bills);
 }

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

@@ -612,12 +612,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			//主单信息同步分单
 			List<Bills> details = this.synchronous(bills);
 			if (!details.isEmpty()) {
-				/*amountDr = amountDr.add(details.stream().map(Bills::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-				amountCr = amountCr.add(details.stream().map(Bills::getAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-				amountDrUsd = amountDrUsd.add(details.stream().map(Bills::getAmountDrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-				amountCrUsd = amountCrUsd.add(details.stream().map(Bills::getAmountCrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-				amountDrLoc = amountDrLoc.add(details.stream().map(Bills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-				amountCrLoc = amountCrLoc.add(details.stream().map(Bills::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));*/
 				quantity = quantity.add(details.stream().map(Bills::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				grossWeight = grossWeight.add(details.stream().map(Bills::getGrossWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				measurement = measurement.add(details.stream().map(Bills::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
@@ -630,77 +624,18 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				.eq(Bills::getId, bills.getMasterId()));
 			//重新计算主单合计
 			if (details != null) {
-				String exrateType = currencyUtils.standardCurrency(branchId);
-				/*BigDecimal amountDrM = new BigDecimal("0.00");
-				BigDecimal amountCrM = new BigDecimal("0.00");
-				BigDecimal amountProfitM;
-				BigDecimal amountDrUsdM = new BigDecimal("0.00");
-				BigDecimal amountCrUsdM = new BigDecimal("0.00");
-				BigDecimal amountProfitUsdM;
-				BigDecimal amountDrLocM = new BigDecimal("0.00");
-				BigDecimal amountCrLocM = new BigDecimal("0.00");
-				BigDecimal amountProfitLocM;*/
 				BigDecimal quantityM = bills.getQuantity();
 				BigDecimal grossWeightM = bills.getGrossWeight();
 				BigDecimal measurementM = bills.getMeasurement();
-			/*	List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
-					.select(FeeCenter::getCurCode, FeeCenter::getAmount, FeeCenter::getDc)
-					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-					.eq(FeeCenter::getIsDeleted, 0)
-					.eq(FeeCenter::getPid, details.getId()));
-				for (FeeCenter item : feeCenterList) {
-					if ("C".equals(item.getDc())) {
-						if (exrateType.equals(item.getCurCode())) {
-							amountCrM = amountCrM.add(item.getAmount());
-							amountCrLocM = amountCrLocM.add(item.getAmount());
-						} else {
-							amountCrUsdM = amountCrUsdM.add(item.getAmount());
-							amountCrLocM = amountCrLocM.add(item.getAmount().multiply(item.getExrate()));
-						}
-					} else {
-						if (exrateType.equals(item.getCurCode())) {
-							amountDrM = amountDrM.add(item.getAmount());
-							amountDrLocM = amountDrLocM.add(item.getAmount());
-						} else {
-							amountDrUsdM = amountDrUsdM.add(item.getAmount());
-							amountDrLocM = amountDrLocM.add(item.getAmount().multiply(item.getExrate()));
-						}
-					}
-				}*/
 				List<Bills> billsList = this.synchronous(details);
 				if (!billsList.isEmpty()) {
 					List<Bills> billsLists = billsList.stream().filter(e -> !e.getId().equals(bills.getId())).collect(Collectors.toList());
 					if (!billsLists.isEmpty()) {
-						/*amountDrM = amountDrM.add(billsLists.stream().map(Bills::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						amountCrM = amountCrM.add(billsLists.stream().map(Bills::getAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						amountDrUsdM = amountDrUsdM.add(billsLists.stream().map(Bills::getAmountDrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						amountCrUsdM = amountCrUsdM.add(billsLists.stream().map(Bills::getAmountCrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						amountDrLocM = amountDrLocM.add(billsLists.stream().map(Bills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						amountCrLocM = amountCrLocM.add(billsLists.stream().map(Bills::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));*/
 						quantityM = quantityM.add(billsLists.stream().map(Bills::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 						grossWeightM = grossWeightM.add(billsLists.stream().map(Bills::getGrossWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 						measurementM = measurementM.add(billsLists.stream().map(Bills::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 					}
 				}
-				/*amountDrM = amountDrM.add(amountDr);
-				amountCrM = amountCrM.add(amountCr);
-				amountDrUsdM = amountDrUsdM.add(amountDrUsd);
-				amountCrUsdM = amountCrUsdM.add(amountCrUsd);
-				amountDrLocM = amountDrLocM.add(amountDrLoc);
-				amountCrLocM = amountCrLocM.add(amountCrLoc);
-				//利润 = 收 - 付
-				amountProfitM = amountDrM.subtract(amountCrM);
-				amountProfitUsdM = amountDrUsdM.subtract(amountCrUsdM);
-				amountProfitLocM = amountDrLocM.subtract(amountCrLocM);
-				details.setAmountDr(amountDrM);
-				details.setAmountCr(amountCrM);
-				details.setAmountProfit(amountProfitM);
-				details.setAmountDrUsd(amountDrUsdM);
-				details.setAmountCrUsd(amountCrUsdM);
-				details.setAmountProfitUsd(amountProfitUsdM);
-				details.setAmountDrLoc(amountDrLocM);
-				details.setAmountCrLoc(amountCrLocM);
-				details.setAmountProfitLoc(amountProfitLocM);*/
 				details.setQuantity(quantityM);
 				details.setGrossWeight(grossWeightM);
 				details.setMeasurement(measurementM);
@@ -1381,7 +1316,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				measurement = measurement.add(billsList.stream().map(Bills::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				marks = billsList.stream().map(Bills::getMarks).filter(Objects::nonNull).collect(Collectors.joining("&|&"));
 				commodityDescr = billsList.stream().map(Bills::getCommodityDescr).filter(Objects::nonNull).collect(Collectors.joining("&|&"));
-				this.itemCopy(bills, billsList,false);
+				this.itemCopy(bills, billsList, false);
 			}
 			bills.setTeuTotal(teuTotal);
 			bills.setGrossWeight(grossWeight);
@@ -1400,7 +1335,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		return R.data("操作成功");
 	}
 
-	private void itemCopy(Bills bills, List<Bills> billsList,boolean status) {
+	private void itemCopy(Bills bills, List<Bills> billsList, boolean status) {
 		List<Containers> containersList = containersService.list(new LambdaQueryWrapper<Containers>()
 			.eq(Containers::getTenantId, AuthUtil.getTenantId())
 			.eq(Containers::getIsDeleted, 0)
@@ -1500,7 +1435,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				containersBillsService.saveBatch(containersBillsListNew);
 			}
 		} else {
-			if (status){
+			if (status) {
 				throw new RuntimeException("分单号:" + billsList.stream().map(Bills::getHblno).collect(Collectors.joining(","))
 					+ "未分配件重尺,同步失败");
 			}
@@ -2116,6 +2051,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			throw new SecurityException("操作失败,请联系管理员");
 		}
 		declare.setStatus(0);
+		declare.setBillStatus(0);
 		baseMapper.updateById(declare);
 		if ("KHTS".equals(declare.getBusinessType())) {
 			return declare;
@@ -2131,6 +2067,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				if (!billsList.isEmpty()) {
 					for (Bills item : billsList) {
 						item.setStatus(0);
+						item.setBillStatus(0);
 						item.setUpdateTime(new Date());
 						item.setUpdateUserName(AuthUtil.getUserName());
 						item.setUpdateUser(AuthUtil.getUserId());
@@ -4871,6 +4808,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				if (ObjectUtils.isNull(item.getCntrTypeCode())) {
 					throw new RuntimeException("箱型不能为空");
 				}
+				item.setWhetherModifyJson(item.getCntrTypeCode() + "+" + item.getQuantity());
 				if (item.getId() == null) {
 					item.setCreateTime(new Date());
 					item.setCreateUser(AuthUtil.getUserId());
@@ -5015,7 +4953,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				measurement = measurement.add(billsList.stream().map(Bills::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				marks = billsList.stream().map(Bills::getMarks).filter(Objects::nonNull).collect(Collectors.joining("&|&"));
 				commodityDescr = billsList.stream().map(Bills::getCommodityDescr).filter(Objects::nonNull).collect(Collectors.joining("&|&"));
-				this.itemCopy(bills, billsList,true);
+				this.itemCopy(bills, billsList, true);
 			}
 			bills.setTeuTotal(teuTotal);
 			bills.setGrossWeight(grossWeight);
@@ -5219,6 +5157,69 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		bills.setUpdateTime(new Date());
 		bills.setIssueStatus("0");
 		baseMapper.updateById(bills);
+		Bills detail = baseMapper.selectOne(new LambdaQueryWrapper<Bills>()
+			.eq(Bills::getTenantId, AuthUtil.getTenantId())
+			.eq(Bills::getIsDeleted, 0)
+			.eq(Bills::getTemporaryId, bills.getId()));
+		if (detail != null) {
+			detail.setUpdateUserName(AuthUtil.getUserName());
+			detail.setUpdateUser(AuthUtil.getUserId());
+			detail.setUpdateTime(new Date());
+			detail.setBillStatus(1);
+			baseMapper.updateById(detail);
+			if (ObjectUtils.isNotNull(detail.getCustomerServiceId())) {
+				R<User> res = userClient.userInfoById(detail.getCustomerServiceId());
+				if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+					LocalDateTime now = LocalDateTime.now();
+					DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+					String formatted = now.format(formatter);
+					Message sendMessage = new Message();
+					sendMessage.setParameter(detail.getId() + "");
+					sendMessage.setUserName(AuthUtil.getUserName());
+					sendMessage.setUserId(null);
+					sendMessage.setToUserId(res.getData().getId());
+					sendMessage.setToUserName(res.getData().getName());
+					sendMessage.setMessageType(1);
+					sendMessage.setTenantId(AuthUtil.getTenantId());
+					sendMessage.setCreateUser(null);
+					sendMessage.setCreateTime(new Date());
+					sendMessage.setUrl("/iosBasicData/SeafreightExportF/bills/index");
+					sendMessage.setPageLabel("海运出口");
+					sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+					sendMessage.setMessageBody("客户已撤销订舱,请及时待处理!订舱单号:" + bills.getBillNo() + "时间:" + formatted);
+					R save = messageClient.save(sendMessage);
+					if (!save.isSuccess()) {
+						throw new SecurityException("发送消息失败");
+					}
+				}
+			}
+			if (ObjectUtils.isNotNull(detail.getOperatorId())) {
+				R<User> res = userClient.userInfoById(detail.getOperatorId());
+				if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+					LocalDateTime now = LocalDateTime.now();
+					DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+					String formatted = now.format(formatter);
+					Message sendMessage = new Message();
+					sendMessage.setParameter(detail.getId() + "");
+					sendMessage.setUserName(AuthUtil.getUserName());
+					sendMessage.setUserId(null);
+					sendMessage.setToUserId(res.getData().getId());
+					sendMessage.setToUserName(res.getData().getName());
+					sendMessage.setMessageType(1);
+					sendMessage.setTenantId(AuthUtil.getTenantId());
+					sendMessage.setCreateUser(null);
+					sendMessage.setCreateTime(new Date());
+					sendMessage.setUrl("/iosBasicData/SeafreightExportF/bills/index");
+					sendMessage.setPageLabel("海运出口");
+					sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+					sendMessage.setMessageBody("客户已撤销订舱,请及时待处理!订舱单号:" + bills.getBillNo() + "时间:" + formatted);
+					R save = messageClient.save(sendMessage);
+					if (!save.isSuccess()) {
+						throw new SecurityException("发送消息失败");
+					}
+				}
+			}
+		}
 		return R.data(bills);
 	}
 
@@ -5659,6 +5660,253 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		return R.data("操作成功");
 	}
 
+	@Override
+	public R synchronousFile(Bills bills) {
+		if (ObjectUtils.isNull(bills.getFilesList()) || bills.getFilesList().isEmpty() || ObjectUtils.isNull(bills.getId())) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		Bills detail = baseMapper.selectById(bills.getId());
+		if (detail == null) {
+			throw new RuntimeException("未查到单据信息");
+		}
+		if (ObjectUtils.isNull(detail.getTemporaryId())) {
+			throw new RuntimeException("该订单不是来源订舱单据");
+		}
+		Bills bookingCabin = baseMapper.selectById(detail.getTemporaryId());
+		if (bookingCabin == null) {
+			throw new RuntimeException("未查到来源订舱单据信息");
+		}
+		List<FilesCenter> filesCenterList = new ArrayList<>();
+		for (FilesCenter item : bills.getFilesList()) {
+			item.setId(null);
+			item.setCreateUser(AuthUtil.getUserId());
+			item.setCreateUserName(AuthUtil.getUserName());
+			item.setCreateTime(new Date());
+			item.setPid(bookingCabin.getId());
+			item.setUpdateUser(null);
+			item.setUpdateUserName(null);
+			item.setUpdateTime(null);
+			filesCenterList.add(item);
+		}
+		if (!filesCenterList.isEmpty()) {
+			filesCenterService.saveBatch(filesCenterList);
+		}
+		return R.data(bills);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R submitBoxType(Bills bills) {
+		if (ObjectUtils.isNull(bills.getId())) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		Bills bookingCabin = baseMapper.selectById(bills.getId());
+		if (bookingCabin == null) {
+			throw new RuntimeException("未查到单据信息");
+		}
+		bookingCabin.setUpdateUserName(AuthUtil.getUserName());
+		bookingCabin.setUpdateUser(AuthUtil.getUserId());
+		bookingCabin.setUpdateTime(new Date());
+		bookingCabin.setWhetherModify("1");
+		baseMapper.updateById(bookingCabin);
+		Bills detail = baseMapper.selectOne(new LambdaQueryWrapper<Bills>()
+			.eq(Bills::getTenantId, AuthUtil.getTenantId())
+			.eq(Bills::getIsDeleted, 0)
+			.eq(Bills::getTemporaryId, bookingCabin.getId()));
+		if (detail != null) {
+			detail.setUpdateUserName(AuthUtil.getUserName());
+			detail.setUpdateUser(AuthUtil.getUserId());
+			detail.setUpdateTime(new Date());
+			detail.setWhetherModify("1");
+			baseMapper.updateById(detail);
+			if (ObjectUtils.isNotNull(detail.getCustomerServiceId())) {
+				R<User> res = userClient.userInfoById(detail.getCustomerServiceId());
+				if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+					LocalDateTime now = LocalDateTime.now();
+					DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+					String formatted = now.format(formatter);
+					Message sendMessage = new Message();
+					sendMessage.setParameter(detail.getId() + "");
+					sendMessage.setUserName(AuthUtil.getUserName());
+					sendMessage.setUserId(null);
+					sendMessage.setToUserId(res.getData().getId());
+					sendMessage.setToUserName(res.getData().getName());
+					sendMessage.setMessageType(1);
+					sendMessage.setTenantId(AuthUtil.getTenantId());
+					sendMessage.setCreateUser(null);
+					sendMessage.setCreateTime(new Date());
+					sendMessage.setUrl("/iosBasicData/SeafreightExportF/bills/index");
+					sendMessage.setPageLabel("海运出口");
+					sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+					sendMessage.setMessageBody("客户已提交修改箱型箱量,请及时待处理!订舱单号:" + bills.getBillNo() + "时间:" + formatted);
+					R save = messageClient.save(sendMessage);
+					if (!save.isSuccess()) {
+						throw new SecurityException("发送消息失败");
+					}
+				}
+			}
+			if (ObjectUtils.isNotNull(detail.getOperatorId())) {
+				R<User> res = userClient.userInfoById(detail.getOperatorId());
+				if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+					LocalDateTime now = LocalDateTime.now();
+					DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+					String formatted = now.format(formatter);
+					Message sendMessage = new Message();
+					sendMessage.setParameter(detail.getId() + "");
+					sendMessage.setUserName(AuthUtil.getUserName());
+					sendMessage.setUserId(null);
+					sendMessage.setToUserId(res.getData().getId());
+					sendMessage.setToUserName(res.getData().getName());
+					sendMessage.setMessageType(1);
+					sendMessage.setTenantId(AuthUtil.getTenantId());
+					sendMessage.setCreateUser(null);
+					sendMessage.setCreateTime(new Date());
+					sendMessage.setUrl("/iosBasicData/SeafreightExportF/bills/index");
+					sendMessage.setPageLabel("海运出口");
+					sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+					sendMessage.setMessageBody("客户已提交修改箱型箱量,请及时待处理!订舱单号:" + bills.getBillNo() + "时间:" + formatted);
+					R save = messageClient.save(sendMessage);
+					if (!save.isSuccess()) {
+						throw new SecurityException("发送消息失败");
+					}
+				}
+			}
+		}
+		return null;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R synchronousBoxType(Bills bills) {
+		if (ObjectUtils.isNull(bills.getId())) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		Bills detail = baseMapper.selectById(bills.getId());
+		if (detail == null) {
+			throw new RuntimeException("未查到单据信息");
+		}
+		if (ObjectUtils.isNull(detail.getTemporaryId())) {
+			throw new RuntimeException("该订单不是来源订舱单据");
+		}
+		Bills bookingCabin = baseMapper.selectById(detail.getTemporaryId());
+		if (bookingCabin == null) {
+			throw new RuntimeException("未查到来源订舱单据信息");
+		}
+		List<PreContainers> containersList = preContainersService.list(new LambdaQueryWrapper<PreContainers>()
+			.eq(PreContainers::getTenantId, AuthUtil.getTenantId())
+			.eq(PreContainers::getIsDeleted, 0)
+			.eq(PreContainers::getPid, detail.getId()));
+		if (!containersList.isEmpty()) {
+			preContainersService.removeByIds(containersList.stream().map(PreContainers::getId).collect(Collectors.toList()));
+		}
+		List<PreContainers> preContainersList = preContainersService.list(new LambdaQueryWrapper<PreContainers>()
+			.eq(PreContainers::getTenantId, AuthUtil.getTenantId())
+			.eq(PreContainers::getIsDeleted, 0)
+			.eq(PreContainers::getPid, bookingCabin.getId()));
+		if (preContainersList.isEmpty()) {
+			throw new RuntimeException("未查到订舱箱型箱量");
+		}
+		List<PreContainers> preContainers = new ArrayList<>();
+		for (PreContainers item : preContainersList) {
+			item.setId(null);
+			item.setCreateUser(AuthUtil.getUserId());
+			item.setCreateUserName(AuthUtil.getUserName());
+			item.setCreateTime(new Date());
+			item.setPid(detail.getId());
+			item.setUpdateUser(null);
+			item.setUpdateUserName(null);
+			item.setUpdateTime(null);
+			preContainers.add(item);
+		}
+		if (!preContainers.isEmpty()) {
+			preContainersService.saveBatch(preContainers);
+		}
+		return R.data(bills);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R submitCommonTemplates(Bills detail) {
+		if (detail.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		Bills bills = baseMapper.selectById(detail.getId());
+		if (bills.getId() == null) {
+			BusinessType businessType = bBusinessTypeService.getOne(new LambdaQueryWrapper<BusinessType>()
+				.select(BusinessType::getId)
+				.eq(BusinessType::getTenantId, AuthUtil.getTenantId())
+				.eq(BusinessType::getIsDeleted, 0)
+				.eq(BusinessType::getStatus, 0)
+				.eq(BusinessType::getCode, "KHDC"));
+			if (businessType == null) {
+				throw new RuntimeException("未找到可用业务类型");
+			}
+			BusinessBillNo businessBillNo = new BusinessBillNo();
+			businessBillNo.setBusinessTypeId(businessType.getId());
+			businessBillNo.setCode("DCMB");
+			businessBillNo.setBranchId(bills.getBranchId());
+			R clientBillNo = businessBillNoService.getBillNoLos(businessBillNo);
+			if (!clientBillNo.isSuccess()) {
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				return R.fail(500, "生成订单编号失败");
+			}
+			bills.setId(null);
+			bills.setIssueStatus(null);
+			bills.setStatus(null);
+			bills.setBillStatus(null);
+			bills.setWhetherModify(null);
+			bills.setBillNo((String) clientBillNo.getData());
+			bills.setBusinessType("DCMB");
+			bills.setCreateTime(new Date());
+			bills.setCreateUser(AuthUtil.getUserId());
+			bills.setCreateUserName(AuthUtil.getUserName());
+			bills.setTenantId(AuthUtil.getTenantId());
+			bills.setUpdateTime(null);
+			bills.setUpdateUser(null);
+			bills.setUpdateUserName(null);
+			// 初始创建为1
+			bills.setVersion("1");
+			this.save(bills);
+		}
+		List<PreContainers> preContainersList = preContainersService.list(new LambdaQueryWrapper<PreContainers>()
+			.eq(PreContainers::getTenantId, AuthUtil.getTenantId())
+			.eq(PreContainers::getIsDeleted, 0)
+			.eq(PreContainers::getPid, bills.getId()));
+		if (!preContainersList.isEmpty()) {
+			List<PreContainers> preContainers = new ArrayList<>();
+			for (PreContainers item : preContainersList) {
+				item.setId(null);
+				item.setWhetherModifyJson(item.getCntrTypeCode() + "+" + item.getQuantity());
+				item.setCreateTime(new Date());
+				item.setCreateUser(AuthUtil.getUserId());
+				item.setCreateUserName(AuthUtil.getUserName());
+				item.setUpdateUser(null);
+				item.setUpdateTime(null);
+				item.setUpdateUserName(null);
+				item.setPid(bills.getId());
+				preContainers.add(item);
+			}
+			preContainersService.saveBatch(preContainers);
+		}
+		SeaBillsDetail seaBillsDetail = seaBillsDetailService.getOne(new LambdaQueryWrapper<SeaBillsDetail>()
+			.eq(SeaBillsDetail::getTenantId, AuthUtil.getTenantId())
+			.eq(SeaBillsDetail::getPid, bills.getId()));
+		if (seaBillsDetail != null) {
+			seaBillsDetail.setId(null);
+			seaBillsDetail.setUpdateUser(null);
+			seaBillsDetail.setUpdateTime(null);
+			seaBillsDetail.setUpdateUserName(null);
+			seaBillsDetail.setPid(bills.getId());
+			seaBillsDetail.setCreateUser(AuthUtil.getUserId());
+			seaBillsDetail.setCreateUserName(AuthUtil.getUserName());
+			seaBillsDetail.setCreateDept(bills.getCreateDept());
+			seaBillsDetail.setCreateDeptName(bills.getCreateDeptName());
+			seaBillsDetail.setCreateTime(new Date());
+			seaBillsDetailService.save(seaBillsDetail);
+		}
+		return R.data(bills);
+	}
+
 	/**
 	 * 删除海运进出口明细表
 	 *

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

@@ -97,6 +97,7 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 		if (bills == null) {
 			throw new RuntimeException("未找到单据信息");
 		}
+		preContainers.setWhetherModifyJson(preContainers.getCntrTypeCode()+"+"+preContainers.getQuantity());
 		preContainers.setMeasurement(ObjectUtils.isNotNull(preContainers.getMeasurement()) ? preContainers.getMeasurement() : new BigDecimal("0.00"));
 		preContainers.setGrossWeight(ObjectUtils.isNotNull(preContainers.getGrossWeight()) ? preContainers.getGrossWeight() : new BigDecimal("0.00"));
 		preContainers.setQuantity(ObjectUtils.isNotNull(preContainers.getNumber()) ? preContainers.getNumber().intValue() : 0);
@@ -307,6 +308,7 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 			}
 		}
 		for (PreContainers preContainers : preContainersList) {
+			preContainers.setWhetherModifyJson(preContainers.getCntrTypeCode()+"+"+preContainers.getQuantity());
 			if (preContainers.getId() == null) {
 				preContainers.setCreateTime(new Date());
 				preContainers.setCreateUser(AuthUtil.getUserId());

+ 16 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/ICostProfitCalculationService.java

@@ -0,0 +1,16 @@
+package org.springblade.los.finance.fee.service;
+
+import org.springblade.los.business.sea.entity.Bills;
+import org.springblade.los.finance.fee.entity.FeeCenter;
+
+import java.util.List;
+
+/**
+ * @author :jixinyuan
+ * @date : 2025/8/11
+ */
+public interface ICostProfitCalculationService {
+
+
+	Bills costProfitCalculation(List<FeeCenter> feeCenterList,String exrateType);
+}

+ 92 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/CostProfitCalculationServiceImpl.java

@@ -0,0 +1,92 @@
+package org.springblade.los.finance.fee.service.impl;
+
+import lombok.AllArgsConstructor;
+import org.springblade.los.business.sea.entity.Bills;
+import org.springblade.los.finance.fee.entity.FeeCenter;
+import org.springblade.los.finance.fee.service.ICostProfitCalculationService;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @author :jixinyuan
+ * 海运进出口主表利润计算
+ * &#064;date  : 2025/8/11
+ */
+@Service
+@AllArgsConstructor
+public class CostProfitCalculationServiceImpl implements ICostProfitCalculationService {
+
+	@Override
+	public Bills costProfitCalculation(List<FeeCenter> feeCenterList, String exrateType) {
+		if (feeCenterList.isEmpty()){
+			return null;
+		}
+		Bills bills = new Bills();
+		//应付
+		int statusC = 0;
+		if (feeCenterList.stream().anyMatch(e -> "C".equals(e.getDc()))) {
+			statusC = 1;
+		}
+		//应收
+		int statusD = 0;
+		if (feeCenterList.stream().anyMatch(e -> "D".equals(e.getDc()))) {
+			statusD = 1;
+		}
+		if (1 == statusD && 0 == statusC) {
+			bills.setAccountStatus(1);
+		} else if (0 == statusD && 1 == statusC) {
+			bills.setAccountStatus(2);
+		} else {
+			bills.setAccountStatus(3);
+		}
+		BigDecimal amountDr;
+		BigDecimal amountCr;
+		BigDecimal amountProfit;
+		BigDecimal amountDrUsd;
+		BigDecimal amountCrUsd;
+		BigDecimal amountProfitUsd;
+		BigDecimal amountDrLoc;
+		BigDecimal amountCrLoc;
+		BigDecimal amountProfitLoc;
+		BigDecimal oceanFreightDr;
+		BigDecimal oceanFreightCr;
+		BigDecimal oceanFreightProfit;
+		amountDr = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode()))
+			.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+		amountDrUsd = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode()))
+			.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+		amountDrLoc = feeCenterList.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getAmountLoc)
+			.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+		amountCr = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode()))
+			.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+		amountCrUsd = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode()))
+			.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+		amountCrLoc = feeCenterList.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getAmountLoc)
+			.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+		oceanFreightDr = feeCenterList.stream().filter(e -> "D".equals(e.getDc()) && "HYF".equals(e.getFeeCode()))
+			.map(FeeCenter::getAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+		oceanFreightCr = feeCenterList.stream().filter(e -> "C".equals(e.getDc()) && "HYF".equals(e.getFeeCode()))
+			.map(FeeCenter::getAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+		oceanFreightProfit = oceanFreightDr.subtract(oceanFreightCr);
+		//利润 = 收 - 付
+		amountProfit = amountDr.subtract(amountCr);
+		amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
+		amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
+		bills.setAmountDr(amountDr);
+		bills.setOceanFreightDr(oceanFreightDr);
+		bills.setAmountCr(amountCr);
+		bills.setOceanFreightCr(oceanFreightCr);
+		bills.setAmountProfit(amountProfit);
+		bills.setOceanFreightProfit(oceanFreightProfit);
+		bills.setAmountDrUsd(amountDrUsd);
+		bills.setAmountCrUsd(amountCrUsd);
+		bills.setAmountProfitUsd(amountProfitUsd);
+		bills.setAmountDrLoc(amountDrLoc);
+		bills.setAmountCrLoc(amountCrLoc);
+		bills.setAmountProfitLoc(amountProfitLoc);
+		return bills;
+	}
+}

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

@@ -50,6 +50,7 @@ import org.springblade.los.business.sea.mapper.BillsMapper;
 import org.springblade.los.business.sea.service.IPreContainersService;
 import org.springblade.los.finance.fee.entity.FeeCenter;
 import org.springblade.los.finance.fee.mapper.FeeCenterMapper;
+import org.springblade.los.finance.fee.service.ICostProfitCalculationService;
 import org.springblade.los.finance.fee.service.IFeeCenterService;
 import org.springblade.los.finance.fee.vo.FeeCenterVO;
 import org.springblade.los.finance.genleg.entity.FinPeriod;
@@ -105,6 +106,8 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 
 	private final FinPeriodMapper finPeriodMapper;
 
+	private final ICostProfitCalculationService costProfitCalculationService;
+
 	@Override
 	public IPage<FeeCenterVO> selectFeeCenterPage(IPage<FeeCenterVO> page, FeeCenterVO feeCenter) {
 		return page.setRecords(baseMapper.selectFeeCenterPage(page, feeCenter));
@@ -603,8 +606,33 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 			}*/
 		}
 		if (!list.isEmpty()) {
+			LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+				.eq(FeeCenter::getIsDeleted, 0)
+				.eq(FeeCenter::getPid, bills.getId());
+			List<FeeCenter> feeCenterOldList = baseMapper.selectList(lambdaQueryWrapper);
+			if (!feeCenterOldList.isEmpty()) {
+				list.addAll(feeCenterOldList);
+			}
+			Bills billsAmount = costProfitCalculationService.costProfitCalculation(list, exrateType);
+			if (billsAmount != null) {
+				bills.setAccountStatus(billsAmount.getAccountStatus());
+				bills.setAmountDr(billsAmount.getAmountDr());
+				bills.setOceanFreightDr(billsAmount.getOceanFreightDr());
+				bills.setAmountCr(billsAmount.getAmountCr());
+				bills.setOceanFreightCr(billsAmount.getOceanFreightCr());
+				bills.setAmountProfit(billsAmount.getAmountProfit());
+				bills.setOceanFreightProfit(billsAmount.getOceanFreightProfit());
+				bills.setAmountDrUsd(billsAmount.getAmountDrUsd());
+				bills.setAmountCrUsd(billsAmount.getAmountCrUsd());
+				bills.setAmountProfitUsd(billsAmount.getAmountProfitUsd());
+				bills.setAmountDrLoc(billsAmount.getAmountDrLoc());
+				bills.setAmountCrLoc(billsAmount.getAmountCrLoc());
+				bills.setAmountProfitLoc(billsAmount.getAmountProfitLoc());
+				billsMapper.updateById(bills);
+			}
 			this.saveOrUpdateBatch(list);
-			this.updateBills(list, bills, exrateType);
+//			this.updateBills(list, bills, exrateType);
 		} else {
 			throw new RuntimeException("导入失败,未查到可用模版信息");
 		}
@@ -657,6 +685,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 			List<BCorps> bCorpsList = bCorpsService.list(new LambdaQueryWrapper<BCorps>()
 				.eq(BCorps::getTenantId, AuthUtil.getTenantId())
 				.eq(BCorps::getIsDeleted, 0));
+			List<Long> feeCenterIdList = new ArrayList<>();
 			for (FeeCenter feeCenter : list) {
 				feeCenter.setBookingAgentId(bills.getBookingAgentId());
 				feeCenter.setBookingAgentCnName(bills.getBookingAgentCnName());
@@ -684,6 +713,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 						feeCenter.setCreateDeptName(deptName);
 					}
 				} else {
+					feeCenterIdList.add(feeCenter.getId());
 					feeCenter.setUpdateUser(AuthUtil.getUserId());
 					feeCenter.setUpdateTime(new Date());
 					feeCenter.setUpdateUserName(AuthUtil.getUserName());
@@ -705,8 +735,38 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 				feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
 				feeCenterList.add(feeCenter);
 			}
+			if ("SE".equals(list.get(0).getBusinessType()) || "SI".equals(list.get(0).getBusinessType())) {
+				LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+				lambdaQueryWrapper.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+					.eq(FeeCenter::getIsDeleted, 0)
+					.eq(FeeCenter::getPid, bills.getId());
+				if (!feeCenterIdList.isEmpty()) {
+					lambdaQueryWrapper.notIn(FeeCenter::getId, feeCenterIdList);
+				}
+				List<FeeCenter> feeCenterOldList = baseMapper.selectList(lambdaQueryWrapper);
+				if (!feeCenterOldList.isEmpty()) {
+					feeCenterList.addAll(feeCenterOldList);
+				}
+				Bills billsAmount = costProfitCalculationService.costProfitCalculation(feeCenterList, exrateType);
+				if (billsAmount != null) {
+					bills.setAccountStatus(billsAmount.getAccountStatus());
+					bills.setAmountDr(billsAmount.getAmountDr());
+					bills.setOceanFreightDr(billsAmount.getOceanFreightDr());
+					bills.setAmountCr(billsAmount.getAmountCr());
+					bills.setOceanFreightCr(billsAmount.getOceanFreightCr());
+					bills.setAmountProfit(billsAmount.getAmountProfit());
+					bills.setOceanFreightProfit(billsAmount.getOceanFreightProfit());
+					bills.setAmountDrUsd(billsAmount.getAmountDrUsd());
+					bills.setAmountCrUsd(billsAmount.getAmountCrUsd());
+					bills.setAmountProfitUsd(billsAmount.getAmountProfitUsd());
+					bills.setAmountDrLoc(billsAmount.getAmountDrLoc());
+					bills.setAmountCrLoc(billsAmount.getAmountCrLoc());
+					bills.setAmountProfitLoc(billsAmount.getAmountProfitLoc());
+					billsMapper.updateById(bills);
+				}
+			}
 			this.saveOrUpdateBatch(feeCenterList);
-			this.updateBills(feeCenterList, bills, exrateType);
+//			this.updateBills(feeCenterList, bills, exrateType);
 		} else {
 			R.fail("请选择明细");
 		}
@@ -1384,7 +1444,32 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 				list1.add(feeCenter);
 			}
 			if (!list1.isEmpty()) {
-				this.updateBills(list1, bills, exrateType);
+				LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+				lambdaQueryWrapper.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+					.eq(FeeCenter::getIsDeleted, 0)
+					.eq(FeeCenter::getPid, bills.getId());
+				List<FeeCenter> feeCenterOldList = baseMapper.selectList(lambdaQueryWrapper);
+				if (!feeCenterOldList.isEmpty()) {
+					list1.addAll(feeCenterOldList);
+				}
+				Bills billsAmount = costProfitCalculationService.costProfitCalculation(list1, exrateType);
+				if (billsAmount != null) {
+					bills.setAccountStatus(billsAmount.getAccountStatus());
+					bills.setAmountDr(billsAmount.getAmountDr());
+					bills.setOceanFreightDr(billsAmount.getOceanFreightDr());
+					bills.setAmountCr(billsAmount.getAmountCr());
+					bills.setOceanFreightCr(billsAmount.getOceanFreightCr());
+					bills.setAmountProfit(billsAmount.getAmountProfit());
+					bills.setOceanFreightProfit(billsAmount.getOceanFreightProfit());
+					bills.setAmountDrUsd(billsAmount.getAmountDrUsd());
+					bills.setAmountCrUsd(billsAmount.getAmountCrUsd());
+					bills.setAmountProfitUsd(billsAmount.getAmountProfitUsd());
+					bills.setAmountDrLoc(billsAmount.getAmountDrLoc());
+					bills.setAmountCrLoc(billsAmount.getAmountCrLoc());
+					bills.setAmountProfitLoc(billsAmount.getAmountProfitLoc());
+					billsMapper.updateById(bills);
+				}
+//				this.updateBills(list1, bills, exrateType);
 			}
 		}
 		if (!list.isEmpty()) {
@@ -1610,7 +1695,32 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 							}
 						}
 						if (!feeCenterSum.isEmpty()) {
-							this.updateBills(feeCenterSum, item, exrateType);
+							LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+							lambdaQueryWrapper.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+								.eq(FeeCenter::getIsDeleted, 0)
+								.eq(FeeCenter::getPid, item.getId());
+							List<FeeCenter> feeCenterOldList = baseMapper.selectList(lambdaQueryWrapper);
+							if (!feeCenterOldList.isEmpty()) {
+								feeCenterSum.addAll(feeCenterOldList);
+							}
+							Bills billsAmount = costProfitCalculationService.costProfitCalculation(feeCenterSum, exrateType);
+							if (billsAmount != null) {
+								item.setAccountStatus(billsAmount.getAccountStatus());
+								item.setAmountDr(billsAmount.getAmountDr());
+								item.setOceanFreightDr(billsAmount.getOceanFreightDr());
+								item.setAmountCr(billsAmount.getAmountCr());
+								item.setOceanFreightCr(billsAmount.getOceanFreightCr());
+								item.setAmountProfit(billsAmount.getAmountProfit());
+								item.setOceanFreightProfit(billsAmount.getOceanFreightProfit());
+								item.setAmountDrUsd(billsAmount.getAmountDrUsd());
+								item.setAmountCrUsd(billsAmount.getAmountCrUsd());
+								item.setAmountProfitUsd(billsAmount.getAmountProfitUsd());
+								item.setAmountDrLoc(billsAmount.getAmountDrLoc());
+								item.setAmountCrLoc(billsAmount.getAmountCrLoc());
+								item.setAmountProfitLoc(billsAmount.getAmountProfitLoc());
+								billsMapper.updateById(item);
+							}
+//							this.updateBills(feeCenterSum, item, exrateType);
 							BigDecimal amount = feeCenterSum.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 							FeeCenter feeCenterD = new FeeCenter();
 							feeCenterD.setBookingAgentId(bills.getBookingAgentId());
@@ -1752,7 +1862,32 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 
 			}
 			if (!list1.isEmpty()) {
-				this.updateBills(list1, bills, exrateType);
+				LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+				lambdaQueryWrapper.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+					.eq(FeeCenter::getIsDeleted, 0)
+					.eq(FeeCenter::getPid, bills.getId());
+				List<FeeCenter> feeCenterOldList = baseMapper.selectList(lambdaQueryWrapper);
+				if (!feeCenterOldList.isEmpty()) {
+					list1.addAll(feeCenterOldList);
+				}
+				Bills billsAmount = costProfitCalculationService.costProfitCalculation(list1, exrateType);
+				if (billsAmount != null) {
+					bills.setAccountStatus(billsAmount.getAccountStatus());
+					bills.setAmountDr(billsAmount.getAmountDr());
+					bills.setOceanFreightDr(billsAmount.getOceanFreightDr());
+					bills.setAmountCr(billsAmount.getAmountCr());
+					bills.setOceanFreightCr(billsAmount.getOceanFreightCr());
+					bills.setAmountProfit(billsAmount.getAmountProfit());
+					bills.setOceanFreightProfit(billsAmount.getOceanFreightProfit());
+					bills.setAmountDrUsd(billsAmount.getAmountDrUsd());
+					bills.setAmountCrUsd(billsAmount.getAmountCrUsd());
+					bills.setAmountProfitUsd(billsAmount.getAmountProfitUsd());
+					bills.setAmountDrLoc(billsAmount.getAmountDrLoc());
+					bills.setAmountCrLoc(billsAmount.getAmountCrLoc());
+					bills.setAmountProfitLoc(billsAmount.getAmountProfitLoc());
+					billsMapper.updateById(bills);
+				}
+//				this.updateBills(list1, bills, exrateType);
 			}
 		}
 		if (!list.isEmpty()) {
@@ -1951,7 +2086,32 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 				}
 			}
 			if (!list1.isEmpty()) {
-				this.updateBills(list1, bills, exrateType);
+				LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+				lambdaQueryWrapper.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+					.eq(FeeCenter::getIsDeleted, 0)
+					.eq(FeeCenter::getPid, bills.getId());
+				List<FeeCenter> feeCenterOldList = baseMapper.selectList(lambdaQueryWrapper);
+				if (!feeCenterOldList.isEmpty()) {
+					list1.addAll(feeCenterOldList);
+				}
+				Bills billsAmount = costProfitCalculationService.costProfitCalculation(list1, exrateType);
+				if (billsAmount != null) {
+					bills.setAccountStatus(billsAmount.getAccountStatus());
+					bills.setAmountDr(billsAmount.getAmountDr());
+					bills.setOceanFreightDr(billsAmount.getOceanFreightDr());
+					bills.setAmountCr(billsAmount.getAmountCr());
+					bills.setOceanFreightCr(billsAmount.getOceanFreightCr());
+					bills.setAmountProfit(billsAmount.getAmountProfit());
+					bills.setOceanFreightProfit(billsAmount.getOceanFreightProfit());
+					bills.setAmountDrUsd(billsAmount.getAmountDrUsd());
+					bills.setAmountCrUsd(billsAmount.getAmountCrUsd());
+					bills.setAmountProfitUsd(billsAmount.getAmountProfitUsd());
+					bills.setAmountDrLoc(billsAmount.getAmountDrLoc());
+					bills.setAmountCrLoc(billsAmount.getAmountCrLoc());
+					bills.setAmountProfitLoc(billsAmount.getAmountProfitLoc());
+					billsMapper.updateById(bills);
+				}
+//				this.updateBills(list1, bills, exrateType);
 			}
 		}
 		if (!list.isEmpty()) {
@@ -1986,63 +2146,23 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 				.notIn(FeeCenter::getId, longList));
 			String exrateType = currencyUtils.standardCurrency(bills.getBranchId());
 			if (!feeCenters.isEmpty()) {
-				//应付
-				int statusC = 0;
-				if (feeCenters.stream().anyMatch(e -> "C".equals(e.getDc()))) {
-					statusC = 1;
-				}
-				//应收
-				int statusD = 0;
-				if (feeCenters.stream().anyMatch(e -> "D".equals(e.getDc()))) {
-					statusD = 1;
+				Bills billsAmount = costProfitCalculationService.costProfitCalculation(feeCenters, exrateType);
+				if (billsAmount != null) {
+					bills.setAccountStatus(billsAmount.getAccountStatus());
+					bills.setAmountDr(billsAmount.getAmountDr());
+					bills.setOceanFreightDr(billsAmount.getOceanFreightDr());
+					bills.setAmountCr(billsAmount.getAmountCr());
+					bills.setOceanFreightCr(billsAmount.getOceanFreightCr());
+					bills.setAmountProfit(billsAmount.getAmountProfit());
+					bills.setOceanFreightProfit(billsAmount.getOceanFreightProfit());
+					bills.setAmountDrUsd(billsAmount.getAmountDrUsd());
+					bills.setAmountCrUsd(billsAmount.getAmountCrUsd());
+					bills.setAmountProfitUsd(billsAmount.getAmountProfitUsd());
+					bills.setAmountDrLoc(billsAmount.getAmountDrLoc());
+					bills.setAmountCrLoc(billsAmount.getAmountCrLoc());
+					bills.setAmountProfitLoc(billsAmount.getAmountProfitLoc());
+					billsMapper.updateById(bills);
 				}
-				if (1 == statusD && 0 == statusC) {
-					bills.setAccountStatus(1);
-				} else if (0 == statusD && 1 == statusC) {
-					bills.setAccountStatus(2);
-				} else {
-					bills.setAccountStatus(3);
-				}
-				BigDecimal amountDr;
-				BigDecimal amountCr;
-				BigDecimal amountProfit;
-				BigDecimal amountDrUsd;
-				BigDecimal amountCrUsd;
-				BigDecimal amountProfitUsd;
-				BigDecimal amountDrLoc;
-				BigDecimal amountCrLoc;
-				BigDecimal amountProfitLoc;
-				BigDecimal oceanFreightDr;
-				BigDecimal oceanFreightCr;
-				BigDecimal oceanFreightProfit;
-				amountDr = feeCenters.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountDrUsd = feeCenters.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountDrLoc = feeCenters.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountCr = feeCenters.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountCrUsd = feeCenters.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				amountCrLoc = feeCenters.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
-				oceanFreightDr = feeCenters.stream().filter(e -> "D".equals(e.getDc()) &&
-					"HYF".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
-				oceanFreightCr = feeCenters.stream().filter(e -> "C".equals(e.getDc()) &&
-					"HYF".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
-				oceanFreightProfit = oceanFreightDr.subtract(oceanFreightCr);
-				//利润 = 收 - 付
-				amountProfit = amountDr.subtract(amountCr);
-				amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
-				amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
-				bills.setAmountDr(amountDr);
-				bills.setOceanFreightDr(oceanFreightDr);
-				bills.setAmountCr(amountCr);
-				bills.setOceanFreightCr(oceanFreightCr);
-				bills.setAmountProfit(amountProfit);
-				bills.setOceanFreightProfit(oceanFreightProfit);
-				bills.setAmountDrUsd(amountDrUsd);
-				bills.setAmountCrUsd(amountCrUsd);
-				bills.setAmountProfitUsd(amountProfitUsd);
-				bills.setAmountDrLoc(amountDrLoc);
-				bills.setAmountCrLoc(amountCrLoc);
-				bills.setAmountProfitLoc(amountProfitLoc);
-				billsMapper.updateById(bills);
 			}
 		}