Browse Source

贸易代理 2024年7月19日17:21:37

纪新园 1 year ago
parent
commit
1db284c327

+ 19 - 1
blade-service-api/blade-los-api/src/main/java/org/springblade/los/trade/entity/Agent.java

@@ -366,12 +366,18 @@ public class Agent implements Serializable {
 	private String businessStatus;
 
 	/**
-	 * 订单状态  正本/草稿
+	 * 订单状态
 	 */
 	@ApiModelProperty(value = "订单状态")
 	private String orderStatus;
 
 	/**
+	 * 审单状态  正本/草稿
+	 */
+	@ApiModelProperty(value = "审单状态")
+	private String reviewStatus;
+
+	/**
 	 * 提单号
 	 */
 	@ApiModelProperty(value = "提单号")
@@ -431,6 +437,18 @@ public class Agent implements Serializable {
 	private String applyForPaymentBalance;
 
 	/**
+	 * 是否已收货款  已收货款/未收货款/部分货款
+	 */
+	@ApiModelProperty(value = "是否已收货款")
+	private String whetherReceivedDownPayments;
+
+	/**
+	 * 是否付汇  已付汇/未付汇/部分付汇
+	 */
+	@ApiModelProperty(value = "是否付汇")
+	private String whetherReceivedBalancePayment;
+
+	/**
 	 * 收费
 	 */
 	@TableField(exist = false)

+ 1 - 24
blade-service-api/blade-los-api/src/main/java/org/springblade/los/trade/entity/AgentItems.java

@@ -269,31 +269,8 @@ public class AgentItems implements Serializable {
 	/**
 	 * 是否完成  未入库 已入库
 	 */
-	@ApiModelProperty(value = "是否完成")
+	@ApiModelProperty(value = "是否入库")
 	private String whetherComplete;
-	/**
-	 * 是否取消  未取消 已取消
-	 */
-	@ApiModelProperty(value = "是否取消")
-	private String whetherCancel;
-
-	/**
-	 * 是否已收货款  已收货款/未收货款/部分货款
-	 */
-	@ApiModelProperty(value = "是否已收货款")
-	private String whetherReceivedDownPayments;
-
-	/**
-	 * 是否付汇  已付汇/未付汇/部分付汇
-	 */
-	@ApiModelProperty(value = "是否付汇")
-	private String whetherReceivedBalancePayment;
-
-	/**
-	 * 结算状态
-	 */
-	@ApiModelProperty(value = "结算状态")
-	private String stlStatus;
 
 
 }

+ 18 - 12
blade-service-api/blade-los-api/src/main/java/org/springblade/los/trade/entity/AgentView.java

@@ -17,6 +17,7 @@
 package org.springblade.los.trade.entity;
 
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -221,16 +222,13 @@ public class AgentView implements Serializable {
 
 	@ApiModelProperty(value = "租户")
 	private String tenantId;
+	@TableLogic(value = "0", delval = "1")
+	@ApiModelProperty(value = "是否已删除(0 否 1是)")
+	private Integer isDeleted;
 	@ApiModelProperty(value = "发票号")
 	private String invoiceNo;
 
 	/**
-	 * 业务状态
-	 */
-	@ApiModelProperty(value = "业务状态")
-	private String businessStatus;
-
-	/**
 	 * 是否开船  未开船 已开船
 	 */
 	@ApiModelProperty(value = "是否开船")
@@ -254,13 +252,9 @@ public class AgentView implements Serializable {
 	/**
 	 * 是否完成  未入库 已入库
 	 */
-	@ApiModelProperty(value = "是否完成")
+	@ApiModelProperty(value = "是否入库")
 	private String whetherComplete;
-	/**
-	 * 是否取消  未取消 已取消
-	 */
-	@ApiModelProperty(value = "是否取消")
-	private String whetherCancel;
+
 
 	/**
 	 * 是否已收货款  已收货款/未收货款/部分货款
@@ -281,6 +275,18 @@ public class AgentView implements Serializable {
 	private String orderStatus;
 
 	/**
+	 * 审单状态  正本/草稿
+	 */
+	@ApiModelProperty(value = "审单状态")
+	private String reviewStatus;
+
+	/**
+	 * 业务状态
+	 */
+	@ApiModelProperty(value = "业务状态")
+	private String businessStatus;
+
+	/**
 	 * 单据类型
 	 */
 	@ApiModelProperty(value = "单据类型")

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

@@ -0,0 +1,521 @@
+/*
+ *      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.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.common.annotation.RepeatSubmit;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.los.Util.IDeptUtils;
+import org.springblade.los.business.release.entity.SeaReleaseBillItems;
+import org.springblade.los.business.sea.entity.Bills;
+import org.springblade.los.business.sea.service.IBillsService;
+import org.springblade.los.business.sea.vo.BillsVO;
+import org.springblade.los.excel.BillsExcel;
+import org.springblade.system.entity.DictBiz;
+import org.springblade.system.feign.IDictBizClient;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 贸易代理-海运进口 控制器
+ *
+ * @author BladeX
+ * @since 2023-10-16
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/tradebills")
+@Api(value = "贸易代理-海运进口", tags = "贸易代理-海运进口接口")
+public class TradeBillsController extends BladeController {
+
+	private final IBillsService billsService;
+
+	private final IDeptUtils deptUtils;
+
+	private final IDictBizClient dictBizClient;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detailTrade")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入bills")
+	public R<Bills> detailTrade(Bills bills) {
+		Bills detail = billsService.detailTrade(bills);
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 业务-海运进出口
+	 */
+	@GetMapping("/listTrade")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入bills")
+	public R<IPage<Bills>> listTrade(Bills bills, Query query) {
+		LambdaQueryWrapper<Bills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.select(Bills::getId, Bills::getBillNo, Bills::getBillType, Bills::getMasterBillNo,
+			Bills::getCorpCnName, Bills::getCorpId, Bills::getCorpEnName, Bills::getVesselCnName,
+			Bills::getVesselId, Bills::getVoyageNo, Bills::getMblno, Bills::getHblno, Bills::getEta, Bills::getEtd,
+			Bills::getPolEnName, Bills::getPolId, Bills::getPodEnName, Bills::getPodId, Bills::getLoadType, Bills::getPlaceReceiptName,
+			Bills::getCargoType, Bills::getMarks, Bills::getQuantity, Bills::getGrossWeight, Bills::getNetWeight,
+			Bills::getMeasurement, Bills::getQuantityV20, Bills::getQuantityV40, Bills::getQuantityV40hc, Bills::getQuantityV45,
+			Bills::getQuantityV48, Bills::getIsNeedLand, Bills::getIsNeedDeclare, Bills::getIsNeedIq, Bills::getAmountDr,
+			Bills::getAmountCr, Bills::getAmountProfit, Bills::getAmountDrUsd, Bills::getAmountCrUsd, Bills::getAmountProfitUsd,
+			Bills::getAmountDrLoc, Bills::getAmountCrLoc, Bills::getAmountProfitLoc, Bills::getCheckCrStatusDescr, Bills::getCheckDrStatusDescr,
+			Bills::getStlCrStatusDescr, Bills::getStlDrStatusDescr, Bills::getInvoiceCrStatusDescr, Bills::getInvoiceDrStatusDescr, Bills::getCreateUserName,
+			Bills::getCreateTime, Bills::getUpdateUserName, Bills::getUpdateTime, Bills::getStatus, Bills::getBillStatus,
+			Bills::getAccountStatus, Bills::getRemarks, Bills::getPackingUnit, Bills::getBillDate, Bills::getTeamName,
+			Bills::getCreateUser, Bills::getTeu, Bills::getIssueType, Bills::getBookingNo, Bills::getQuantityCntrDescr,
+			Bills::getCyCnName, Bills::getCarrierCnName, Bills::getSrcType, Bills::getSrcCnName, Bills::getBookingAgentCnName,
+			Bills::getHconsigneeCnName, Bills::getCreateDeptName, Bills::getLineCnName);
+		lambdaQueryWrapper.eq(Bills::getIsDeleted, 0)
+			.eq(Bills::getTenantId, AuthUtil.getTenantId())
+			.and(i -> i.isNull(Bills::getMasterId).or()
+				.eq(Bills::getMasterId, 0))
+			.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.getVesselCnName()), i -> i.like(Bills::getVesselCnName, bills.getVesselCnName()).or()
+				.like(Bills::getVesselEnName, bills.getVesselCnName()))
+			.like(ObjectUtils.isNotNull(bills.getVoyageNo()), Bills::getVoyageNo, bills.getVoyageNo())
+			.and(ObjectUtils.isNotNull(bills.getCorpCnName()), i -> i.like(Bills::getCorpCnName, bills.getCorpCnName()).or()
+				.like(Bills::getCorpEnName, bills.getCorpCnName()))
+			.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.getPodCnName()), i -> i.like(Bills::getPodCnName, bills.getPodCnName()).or()
+				.like(Bills::getPodEnName, bills.getPodCnName()).or().like(Bills::getPodCode, bills.getPodCnName()))
+			.and(ObjectUtils.isNotNull(bills.getLineCnName()), i -> i.like(Bills::getLineCnName, bills.getLineCnName()).or()
+				.like(Bills::getLineEnName, bills.getLineCnName()))
+			.and(ObjectUtils.isNotNull(bills.getCyCode()), i -> i.like(Bills::getCyCode, bills.getCyCode()).or()
+				.like(Bills::getCyCnName, bills.getCyCode()).or().like(Bills::getCyEnName, bills.getCyCode()))
+			.apply(ObjectUtils.isNotNull(bills.getCreateDeptName()), "find_in_set('" + bills.getCreateDeptName() + "',create_dept_name)");
+		if (ObjectUtils.isNotNull(bills.getEtdList()) && !bills.getEtdList().isEmpty()) {
+			lambdaQueryWrapper.ge(Bills::getEtd, bills.getEtdList().get(0));
+			lambdaQueryWrapper.le(Bills::getEtd, bills.getEtdList().get(1));
+		}
+		if (ObjectUtils.isNotNull(bills.getEtaList()) && !bills.getEtaList().isEmpty()) {
+			lambdaQueryWrapper.ge(Bills::getEta, bills.getEtaList().get(0));
+			lambdaQueryWrapper.le(Bills::getEta, bills.getEtaList().get(1));
+		}
+		if (AuthUtil.getUserRole().contains("业务员")) {
+			lambdaQueryWrapper.eq(Bills::getSrcId, AuthUtil.getUserId());
+		} else {
+			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(bills.getSrcType()), Bills::getSrcType, bills.getSrcType())
+				.and(ObjectUtils.isNotNull(bills.getSrcCnName()), i -> i.like(Bills::getSrcCnName, bills.getSrcCnName()).or()
+					.like(Bills::getSrcEnName, bills.getSrcCnName()));
+		}
+		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("财务")) {
+			lambdaQueryWrapper.apply("find_in_set(team_id,'" + AuthUtil.getPostId() + "')");
+		}
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			lambdaQueryWrapper.eq(Bills::getBranchId, deptUtils.getDeptPid());
+		}
+		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())
+			.and(ObjectUtils.isNotNull(bills.getHconsigneeCnName()), i -> i.like(Bills::getHconsigneeCnName, bills.getHconsigneeCnName()).or()
+				.like(Bills::getHconsigneeCode, bills.getHconsigneeCnName()).or().like(Bills::getHconsigneeEnName, bills.getHconsigneeCnName()))
+
+			.eq(ObjectUtils.isNotNull(bills.getBillType()), Bills::getBillType, bills.getBillType())
+			.eq(ObjectUtils.isNotNull(bills.getBusinessType()), Bills::getBusinessType, bills.getBusinessType())
+			.eq(ObjectUtils.isNotNull(bills.getSeaType()), Bills::getSeaType, bills.getSeaType())
+			.eq(ObjectUtils.isNotNull(bills.getBillStatus()), Bills::getBillStatus, bills.getBillStatus())
+			.eq(ObjectUtils.isNotNull(bills.getAccountStatus()), Bills::getAccountStatus, bills.getAccountStatus())
+			.eq(ObjectUtils.isNotNull(bills.getStatus()), Bills::getStatus, bills.getStatus());
+		if ("SE".equals(bills.getBusinessType())) {
+			lambdaQueryWrapper.orderByDesc(Bills::getEtd);
+		} else {
+			lambdaQueryWrapper.orderByDesc(Bills::getEta);
+		}
+		IPage<Bills> pages = billsService.page(Condition.getPage(query), lambdaQueryWrapper);
+		return R.data(pages);
+	}
+
+	/**
+	 * 业务-海运进List
+	 */
+	@GetMapping("/listAllTrade")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "listAll", notes = "传入bills")
+	public R<List<Bills>> lislistAllTradetTrade(Bills bills) {
+		LambdaQueryWrapper<Bills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(Bills::getIsDeleted, 0)
+			.eq(Bills::getTenantId, AuthUtil.getTenantId())
+			.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.getVesselCnName()), i -> i.like(Bills::getVesselCnName, bills.getVesselCnName()).or()
+				.like(Bills::getVesselEnName, bills.getVesselCnName()))
+			.like(ObjectUtils.isNotNull(bills.getVoyageNo()), Bills::getVoyageNo, bills.getVoyageNo())
+			.and(ObjectUtils.isNotNull(bills.getCorpCnName()), i -> i.like(Bills::getCorpCnName, bills.getCorpCnName()).or()
+				.like(Bills::getCorpEnName, bills.getCorpCnName()))
+			.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.getPodCnName()), i -> i.like(Bills::getPodCnName, bills.getPodCnName()).or()
+				.like(Bills::getPodEnName, bills.getPodCnName()).or().like(Bills::getPodCode, bills.getPodCnName()))
+			.and(ObjectUtils.isNotNull(bills.getLineCnName()), i -> i.like(Bills::getLineCnName, bills.getLineCnName()).or()
+				.like(Bills::getLineEnName, bills.getLineCnName()))
+			.and(ObjectUtils.isNotNull(bills.getCyCode()), i -> i.like(Bills::getCyCode, bills.getCyCode()).or()
+				.like(Bills::getCyCnName, bills.getCyCode()).or().like(Bills::getCyEnName, bills.getCyCode()))
+			.eq(ObjectUtils.isNotNull(bills.getSrcType()), Bills::getSrcType, bills.getSrcType())
+			.and(ObjectUtils.isNotNull(bills.getSrcCnName()), i -> i.like(Bills::getSrcCnName, bills.getSrcCnName()).or()
+				.like(Bills::getSrcEnName, bills.getSrcCnName()))
+			.apply(ObjectUtils.isNotNull(bills.getCreateDeptName()), "find_in_set('" + bills.getCreateDeptName() + "',create_dept_name)");
+		if (ObjectUtils.isNotNull(bills.getEtdList()) && !bills.getEtdList().isEmpty()) {
+			lambdaQueryWrapper.ge(Bills::getEtd, bills.getEtdList().get(0));
+			lambdaQueryWrapper.le(Bills::getEtd, bills.getEtdList().get(1));
+		}
+		if (ObjectUtils.isNotNull(bills.getEtaList()) && !bills.getEtaList().isEmpty()) {
+			lambdaQueryWrapper.ge(Bills::getEta, bills.getEtaList().get(0));
+			lambdaQueryWrapper.le(Bills::getEta, bills.getEtaList().get(1));
+		}
+		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("财务")) {
+			lambdaQueryWrapper.apply("find_in_set(team_id,'" + AuthUtil.getPostId() + "')");
+		}
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			lambdaQueryWrapper.eq(Bills::getBranchId, deptUtils.getDeptPid());
+		}
+		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())
+			.and(ObjectUtils.isNotNull(bills.getHconsigneeCnName()), i -> i.like(Bills::getHconsigneeCnName, bills.getHconsigneeCnName()).or()
+				.like(Bills::getHconsigneeCode, bills.getHconsigneeCnName()).or().like(Bills::getHconsigneeEnName, bills.getHconsigneeCnName()))
+
+			.eq(ObjectUtils.isNotNull(bills.getBillType()), Bills::getBillType, bills.getBillType())
+			.eq(ObjectUtils.isNotNull(bills.getBusinessType()), Bills::getBusinessType, bills.getBusinessType())
+			.eq(ObjectUtils.isNotNull(bills.getSeaType()), Bills::getSeaType, bills.getSeaType())
+
+			.eq(ObjectUtils.isNotNull(bills.getMasterBillNo()), Bills::getMasterBillNo, bills.getMasterBillNo())
+			.eq(ObjectUtils.isNotNull(bills.getMasterId()), Bills::getMasterId, bills.getMasterId())
+			.eq(ObjectUtils.isNotNull(bills.getBillStatus()), Bills::getBillStatus, bills.getBillStatus())
+			.orderByDesc(Bills::getCreateTime);
+		List<Bills> pages = billsService.list(lambdaQueryWrapper);
+		return R.data(pages);
+	}
+
+
+	/**
+	 * 新增或修改 业务-海运进出口(全部)
+	 */
+	@PostMapping("/submitTrade")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入bills")
+	@RepeatSubmit
+	public R submitTrade(@Valid @RequestBody Bills bills) throws Exception {
+		return billsService.submit(bills);
+	}
+
+	/**
+	 * 新增或修改 业务-海运进出口(单表)
+	 */
+	@PostMapping("/addTrade")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入bills")
+	@RepeatSubmit
+	public R add(@Valid @RequestBody Bills bills) throws Exception {
+		return billsService.add(bills);
+	}
+
+
+	/**
+	 * 退舱
+	 */
+	@PostMapping("/disembarkingTrade")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "退舱", notes = "传入ids")
+	@RepeatSubmit
+	public R disembarkingTrade(@RequestParam String ids) {
+		return billsService.disembarking(ids);
+	}
+
+	/**
+	 * 取消退舱
+	 */
+	@PostMapping("/revokeDisembarkingTrade")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "取消退舱", notes = "传入ids")
+	@RepeatSubmit
+	public R revokeDisembarkingTrade(@RequestParam String ids) {
+		return billsService.revokeDisembarking(ids);
+	}
+
+
+	/**
+	 * 删除 业务-海运进出口
+	 */
+	@PostMapping("/removeTrade")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	@RepeatSubmit
+	public R removeTrade(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		billsService.removeIds(Func.toLongList(ids));
+		return R.data("操作成功");
+	}
+
+	/**
+	 * 申请mblNo
+	 */
+	@PostMapping("/getBillNoTrade")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入bills")
+	@RepeatSubmit
+	public R getBillNoTrade(@Valid @RequestBody Bills bills) {
+		return billsService.getBillNo(bills);
+	}
+
+	/**
+	 * 单据请核
+	 */
+	@PostMapping("/checkBillsTrade")
+	@ApiOperationSupport(order = 13)
+	@ApiOperation(value = "请核", notes = "传入bills")
+	@RepeatSubmit
+	public R checkOrderTrade(@RequestBody Bills bills) {
+		Bills declare = billsService.checkBills(bills);
+		return R.data(declare);
+	}
+
+	/**
+	 * 撤销单据请核
+	 */
+	@PostMapping("/revokeCheckBillsTrade")
+	@ApiOperationSupport(order = 13)
+	@ApiOperation(value = "撤销请核", notes = "传入bills")
+	@RepeatSubmit
+	public R revokeCheckBillsTrade(@RequestBody Bills bills) {
+		Bills declare = billsService.revokeCheckOrder(bills);
+		return R.data(declare);
+	}
+
+	/**
+	 * 审核通过
+	 */
+	@PostMapping("/passCheckTrade")
+	@ApiOperationSupport(order = 14)
+	@ApiOperation(value = "审核通过", notes = "传入id")
+	@RepeatSubmit
+	public R passCheckTrade(@ApiParam(value = "主表id", required = true) @RequestParam Long id) {
+		return billsService.passCheck(id);
+	}
+
+	/**
+	 * 审核中
+	 */
+	@PostMapping("/underReviewTrade")
+	@ApiOperationSupport(order = 15)
+	@ApiOperation(value = "审核中", notes = "传入id")
+	@RepeatSubmit
+	public R underReviewTrade(@ApiParam(value = "主表id", required = true) @RequestParam Long id) {
+		return billsService.underReview(id);
+	}
+
+	/**
+	 * 审核不通过
+	 */
+	@PostMapping("/passCancelTrade")
+	@ApiOperationSupport(order = 16)
+	@ApiOperation(value = "Feign-审核不通过", notes = "传入财务id")
+	@RepeatSubmit
+	public R passCancelTrade(@ApiParam(value = "财务主表id", required = true) @RequestParam Long id) {
+		billsService.passCancel(id);
+		return R.success("操作成功");
+	}
+
+	/**
+	 * 复制单据
+	 */
+	@PostMapping("/copyBillsTrade")
+	@ApiOperationSupport(order = 13)
+	@ApiOperation(value = "复制单据", notes = "传入bills")
+	@RepeatSubmit
+	public R copyBillsTrade(@RequestBody Bills bills) {
+		Bills declare = billsService.copyBills(bills);
+		return R.data(declare);
+	}
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/getDetailTrade")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入bills")
+	public R<List<Bills>> getDetailTrade(Bills bills) {
+		List<Bills> detail = billsService.getDetail(bills);
+		return R.data(detail);
+	}
+
+
+	/**
+	 * 是否同步汇率
+	 */
+	@GetMapping("/synchronizationExchangeRateTrade")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入bills")
+	@RepeatSubmit
+	public R synchronizationExchangeRateTrade(@RequestParam("date") String date, @RequestParam("type") String type
+		, @RequestParam("billId") Long billId) {
+		return billsService.synchronizationExchangeRate(date, type, billId);
+	}
+
+	/**
+	 * 导出
+	 */
+	@GetMapping("/exportBillsTrade")
+	public void exportBUnitsTrade(Bills bills, HttpServletResponse response) {
+		LambdaQueryWrapper<Bills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.select(Bills::getId, Bills::getBillNo, Bills::getBillType, Bills::getMasterBillNo,
+			Bills::getCorpCnName, Bills::getCorpId, Bills::getCorpEnName, Bills::getVesselCnName,
+			Bills::getVesselId, Bills::getVoyageNo, Bills::getMblno, Bills::getHblno, Bills::getEta, Bills::getEtd,
+			Bills::getPolEnName, Bills::getPolId, Bills::getPodEnName, Bills::getPodId, Bills::getLoadType, Bills::getPlaceReceiptName,
+			Bills::getCargoType, Bills::getMarks, Bills::getQuantity, Bills::getGrossWeight, Bills::getNetWeight,
+			Bills::getMeasurement, Bills::getQuantityV20, Bills::getQuantityV40, Bills::getQuantityV40hc, Bills::getQuantityV45,
+			Bills::getQuantityV48, Bills::getIsNeedLand, Bills::getIsNeedDeclare, Bills::getIsNeedIq, Bills::getAmountDr,
+			Bills::getAmountCr, Bills::getAmountProfit, Bills::getAmountDrUsd, Bills::getAmountCrUsd, Bills::getAmountProfitUsd,
+			Bills::getAmountDrLoc, Bills::getAmountCrLoc, Bills::getAmountProfitLoc, Bills::getCheckCrStatusDescr, Bills::getCheckDrStatusDescr,
+			Bills::getStlCrStatusDescr, Bills::getStlDrStatusDescr, Bills::getInvoiceCrStatusDescr, Bills::getInvoiceDrStatusDescr, Bills::getCreateUserName,
+			Bills::getCreateTime, Bills::getUpdateUserName, Bills::getUpdateTime, Bills::getStatus, Bills::getBillStatus,
+			Bills::getAccountStatus, Bills::getRemarks, Bills::getPackingUnit, Bills::getBillDate, Bills::getTeamName,
+			Bills::getCreateUser, Bills::getTeu, Bills::getIssueType, Bills::getBookingNo, Bills::getQuantityCntrDescr,
+			Bills::getCyCnName, Bills::getCarrierCnName, Bills::getSrcType, Bills::getSrcCnName, Bills::getBookingAgentCnName,
+			Bills::getHconsigneeCnName, Bills::getCreateDeptName, Bills::getLineCnName);
+		lambdaQueryWrapper.eq(Bills::getIsDeleted, 0)
+			.eq(Bills::getTenantId, AuthUtil.getTenantId())
+			.and(i -> i.isNull(Bills::getMasterId).or()
+				.eq(Bills::getMasterId, 0))
+			.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.getVesselCnName()), i -> i.like(Bills::getVesselCnName, bills.getVesselCnName()).or()
+				.like(Bills::getVesselEnName, bills.getVesselCnName()))
+			.like(ObjectUtils.isNotNull(bills.getVoyageNo()), Bills::getVoyageNo, bills.getVoyageNo())
+			.and(ObjectUtils.isNotNull(bills.getCorpCnName()), i -> i.like(Bills::getCorpCnName, bills.getCorpCnName()).or()
+				.like(Bills::getCorpEnName, bills.getCorpCnName()))
+			.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.getPodCnName()), i -> i.like(Bills::getPodCnName, bills.getPodCnName()).or()
+				.like(Bills::getPodEnName, bills.getPodCnName()).or().like(Bills::getPodCode, bills.getPodCnName()))
+			.and(ObjectUtils.isNotNull(bills.getLineCnName()), i -> i.like(Bills::getLineCnName, bills.getLineCnName()).or()
+				.like(Bills::getLineEnName, bills.getLineCnName()))
+			.and(ObjectUtils.isNotNull(bills.getCyCode()), i -> i.like(Bills::getCyCode, bills.getCyCode()).or()
+				.like(Bills::getCyCnName, bills.getCyCode()).or().like(Bills::getCyEnName, bills.getCyCode()))
+			.apply(ObjectUtils.isNotNull(bills.getCreateDeptName()), "find_in_set('" + bills.getCreateDeptName() + "',create_dept_name)");
+		if (ObjectUtils.isNotNull(bills.getEtdList()) && !bills.getEtdList().isEmpty()) {
+			lambdaQueryWrapper.ge(Bills::getEtd, bills.getEtdList().get(0));
+			lambdaQueryWrapper.le(Bills::getEtd, bills.getEtdList().get(1));
+		}
+		if (ObjectUtils.isNotNull(bills.getEtaList()) && !bills.getEtaList().isEmpty()) {
+			lambdaQueryWrapper.ge(Bills::getEta, bills.getEtaList().get(0));
+			lambdaQueryWrapper.le(Bills::getEta, bills.getEtaList().get(1));
+		}
+		if (AuthUtil.getUserRole().contains("业务员")) {
+			lambdaQueryWrapper.eq(Bills::getSrcId, AuthUtil.getUserId());
+		} else {
+			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(bills.getSrcType()), Bills::getSrcType, bills.getSrcType())
+				.and(ObjectUtils.isNotNull(bills.getSrcCnName()), i -> i.like(Bills::getSrcCnName, bills.getSrcCnName()).or()
+					.like(Bills::getSrcEnName, bills.getSrcCnName()));
+		}
+		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("财务")) {
+			lambdaQueryWrapper.apply("find_in_set(team_id,'" + AuthUtil.getPostId() + "')");
+		}
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			lambdaQueryWrapper.eq(Bills::getBranchId, deptUtils.getDeptPid());
+		}
+		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())
+			.and(ObjectUtils.isNotNull(bills.getHconsigneeCnName()), i -> i.like(Bills::getHconsigneeCnName, bills.getHconsigneeCnName()).or()
+				.like(Bills::getHconsigneeCode, bills.getHconsigneeCnName()).or().like(Bills::getHconsigneeEnName, bills.getHconsigneeCnName()))
+
+			.eq(ObjectUtils.isNotNull(bills.getBillType()), Bills::getBillType, bills.getBillType())
+			.eq(ObjectUtils.isNotNull(bills.getBusinessType()), Bills::getBusinessType, bills.getBusinessType())
+			.eq(ObjectUtils.isNotNull(bills.getSeaType()), Bills::getSeaType, bills.getSeaType())
+			.eq(ObjectUtils.isNotNull(bills.getBillStatus()), Bills::getBillStatus, bills.getBillStatus())
+			.eq(ObjectUtils.isNotNull(bills.getStatus()), Bills::getStatus, bills.getStatus())
+			.orderByDesc(Bills::getCreateTime);
+		List<Bills> list = billsService.list(lambdaQueryWrapper);
+		List<BillsExcel> billsExcelList = new ArrayList<>();
+		R<List<DictBiz>> res1 = dictBizClient.getList("account_status");
+		R<List<DictBiz>> res2 = dictBizClient.getList("audit_status_los");
+		R<List<DictBiz>> res3 = dictBizClient.getList("bill_status");
+		for (Bills item : list) {
+			BillsExcel billsExcel = new BillsExcel();
+			BeanUtil.copyProperties(item, billsExcel);
+			if (1 == item.getIsNeedLand()) {
+				billsExcel.setIsNeedLand("是");
+			} else {
+				billsExcel.setIsNeedLand("否");
+			}
+			if (1 == item.getIsNeedDeclare()) {
+				billsExcel.setIsNeedDeclare("是");
+			} else {
+				billsExcel.setIsNeedDeclare("否");
+			}
+			if (1 == item.getIsNeedIq()) {
+				billsExcel.setIsNeedIq("是");
+			} else {
+				billsExcel.setIsNeedIq("否");
+			}
+			if (res1.isSuccess() && !res1.getData().isEmpty()) {
+				DictBiz dictBiz = res1.getData().stream().filter(e -> e.getDictKey().equals(item.getAccountStatus() + "")).findFirst().orElse(null);
+				if (dictBiz != null) {
+					billsExcel.setAccountStatus(dictBiz.getDictValue());
+				}
+			}
+			if (res2.isSuccess() && !res2.getData().isEmpty()) {
+				DictBiz dictBiz = res2.getData().stream().filter(e -> e.getDictKey().equals(item.getStatus() + "")).findFirst().orElse(null);
+				if (dictBiz != null) {
+					billsExcel.setStatus(dictBiz.getDictValue());
+				}
+			}
+			if (res3.isSuccess() && !res3.getData().isEmpty()) {
+				DictBiz dictBiz = res3.getData().stream().filter(e -> e.getDictKey().equals(item.getBillStatus() + "")).findFirst().orElse(null);
+				if (dictBiz != null) {
+					billsExcel.setBillStatus(dictBiz.getDictValue());
+				}
+			}
+			billsExcelList.add(billsExcel);
+		}
+		if ("SE".equals(bills.getBusinessType())) {
+			ExcelUtil.export(response, "海运出口", "海运出口", billsExcelList, BillsExcel.class);
+		} else {
+			ExcelUtil.export(response, "海运进口", "海运进口", billsExcelList, BillsExcel.class);
+		}
+
+	}
+}
+

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

@@ -146,4 +146,6 @@ public interface IBillsService extends IService<Bills> {
 	List<SeaReleaseBillItems> releaseApplication(Bills bills);
 
 	R synchronizationExchangeRate(String date, String type,Long billId);
+
+	Bills detailTrade(Bills bills);
 }

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

@@ -2126,4 +2126,37 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		return R.data(bills);
 	}
 
+	@Override
+	public Bills detailTrade(Bills bills) {
+		if (bills.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		Bills detail = baseMapper.selectById(bills.getId());
+		detail.setPreContainersList(preContainersService.list(new LambdaQueryWrapper<PreContainers>()
+			.eq(PreContainers::getIsDeleted, 0)
+			.eq(PreContainers::getTenantId, AuthUtil.getTenantId())
+			.eq(PreContainers::getPid, detail.getId())));
+		detail.setFilesList(filesCenterService.list(new LambdaQueryWrapper<FilesCenter>()
+			.eq(FilesCenter::getIsDeleted, 0)
+			.eq(FilesCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FilesCenter::getPid, detail.getId())));
+		detail.setFeeCenterListC(feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getIsDeleted, 0)
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getBillType, detail.getBillType())
+			.eq(FeeCenter::getPid, detail.getId())
+			.eq(FeeCenter::getDc, "C")
+			.eq(FeeCenter::getBillNo, detail.getBillNo())
+		));
+		detail.setFeeCenterListD(feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getIsDeleted, 0)
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getBillType, detail.getBillType())
+			.eq(FeeCenter::getPid, detail.getId())
+			.eq(FeeCenter::getDc, "D")
+			.eq(FeeCenter::getBillNo, detail.getBillNo())
+		));
+		return detail;
+	}
+
 }

+ 7 - 0
blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java

@@ -3399,6 +3399,13 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 						.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 						.eq(FeeCenter::getIsDeleted, 0)
 						.eq(FeeCenter::getFeeType, feeType));
+					if ("FFSQ-SK".equals(agent.getPaidApplication())) {
+						detail.setFirstPaymentPayable(feeCenters.stream().filter(e-> "SFK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
+							.reduce(BigDecimal.ZERO,BigDecimal::add));
+					} else if ("FFSQ-WK".equals(agent.getPaidApplication())) {
+						detail.setFinalPaymentPayable(feeCenters.stream().filter(e-> "WK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
+							.reduce(BigDecimal.ZERO,BigDecimal::add));
+					}
 					List<FeeCenter> feeCenterList = new ArrayList<>();
 					for (FeeCenter item : feeCenters) {
 						FeeCenter feeCenter = new FeeCenter();

+ 18 - 2
blade-service/blade-los/src/main/java/org/springblade/los/trade/controller/AgentController.java

@@ -33,7 +33,9 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.los.business.aea.entity.AeaBills;
+import org.springblade.los.trade.entity.AgentItems;
 import org.springblade.los.trade.entity.AgentView;
+import org.springblade.los.trade.service.IAgentItemsService;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.los.trade.entity.Agent;
@@ -41,6 +43,9 @@ import org.springblade.los.trade.vo.AgentVO;
 import org.springblade.los.trade.service.IAgentService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * 贸易代理表 控制器
  *
@@ -55,6 +60,8 @@ public class AgentController extends BladeController {
 
 	private final IAgentService agentService;
 
+	private final IAgentItemsService agentItemsService;
+
 	/**
 	 * 详情
 	 */
@@ -83,7 +90,7 @@ public class AgentController extends BladeController {
 			.like(ObjectUtils.isNotNull(agent.getOrderNoJoin()),Agent::getOrderNoJoin,agent.getOrderNoJoin())
 			.like(ObjectUtils.isNotNull(agent.getBoxNoJoin()),Agent::getBoxNoJoin,agent.getBoxNoJoin())
 			.orderByDesc(Agent::getBusinessDate);
-		if (!agent.getBusinessDateList().isEmpty()){
+		if (ObjectUtils.isNotNull(agent.getBusinessDateList()) && !agent.getBusinessDateList().isEmpty()){
 			lambdaQueryWrapper.gt(Agent::getBusinessDate, agent.getBusinessDateList().get(0));
 			lambdaQueryWrapper.lt(Agent::getBusinessDate, agent.getBusinessDateList().get(1));
 		}
@@ -140,7 +147,16 @@ public class AgentController extends BladeController {
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "删除", notes = "传入ids")
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-		return R.status(agentService.removeByIds(Func.toLongList(ids)));
+		List<Long> idList = Func.toLongList(ids).stream().distinct().collect(Collectors.toList());
+		List<AgentItems> agentItemsList = agentItemsService.list(new LambdaQueryWrapper<AgentItems>()
+			.eq(AgentItems::getTenantId,AuthUtil.getTenantId())
+			.eq(AgentItems::getIsDeleted,0)
+			.in(AgentItems::getPid,idList));
+		if (!agentItemsList.isEmpty()){
+			List<Long> itemIds = agentItemsList.stream().map(AgentItems::getId).collect(Collectors.toList());
+			agentItemsService.removeByIds(itemIds);
+		}
+		return R.status(agentService.removeByIds(idList));
 	}
 
 	/**

+ 1 - 2
blade-service/blade-los/src/main/java/org/springblade/los/trade/controller/AgentViewController.java

@@ -80,6 +80,7 @@ public class AgentViewController extends BladeController {
 	public R<IPage<AgentView>> list(AgentView agentView, Query query) {
 		LambdaQueryWrapper<AgentView> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(AgentView::getTenantId, AuthUtil.getTenantId())
+			.eq(AgentView::getIsDeleted, 0)
 			.eq(ObjectUtils.isNotNull(agentView.getCorpId()), AgentView::getCorpId, agentView.getCorpId())
 			.eq(ObjectUtils.isNotNull(agentView.getBusinessStatus()), AgentView::getBusinessStatus, agentView.getBusinessStatus())
 			.eq(ObjectUtils.isNotNull(agentView.getWhetherSail()), AgentView::getWhetherSail, agentView.getWhetherSail())
@@ -87,7 +88,6 @@ public class AgentViewController extends BladeController {
 			.eq(ObjectUtils.isNotNull(agentView.getWhetherClearance()), AgentView::getWhetherClearance, agentView.getWhetherClearance())
 			.eq(ObjectUtils.isNotNull(agentView.getWhetherDispatchCar()), AgentView::getWhetherDispatchCar, agentView.getWhetherDispatchCar())
 			.eq(ObjectUtils.isNotNull(agentView.getWhetherComplete()), AgentView::getWhetherComplete, agentView.getWhetherComplete())
-			.eq(ObjectUtils.isNotNull(agentView.getWhetherCancel()), AgentView::getWhetherCancel, agentView.getWhetherCancel())
 			.eq(ObjectUtils.isNotNull(agentView.getWhetherReceivedDownPayments()), AgentView::getWhetherReceivedDownPayments, agentView.getWhetherReceivedDownPayments())
 			.eq(ObjectUtils.isNotNull(agentView.getWhetherReceivedBalancePayment()), AgentView::getWhetherReceivedBalancePayment, agentView.getWhetherReceivedBalancePayment())
 			.eq(ObjectUtils.isNotNull(agentView.getOrderStatus()), AgentView::getOrderStatus, agentView.getOrderStatus())
@@ -157,7 +157,6 @@ public class AgentViewController extends BladeController {
 			.eq(ObjectUtils.isNotNull(agentView.getWhetherClearance()), AgentView::getWhetherClearance, agentView.getWhetherClearance())
 			.eq(ObjectUtils.isNotNull(agentView.getWhetherDispatchCar()), AgentView::getWhetherDispatchCar, agentView.getWhetherDispatchCar())
 			.eq(ObjectUtils.isNotNull(agentView.getWhetherComplete()), AgentView::getWhetherComplete, agentView.getWhetherComplete())
-			.eq(ObjectUtils.isNotNull(agentView.getWhetherCancel()), AgentView::getWhetherCancel, agentView.getWhetherCancel())
 			.eq(ObjectUtils.isNotNull(agentView.getWhetherReceivedDownPayments()), AgentView::getWhetherReceivedDownPayments, agentView.getWhetherReceivedDownPayments())
 			.eq(ObjectUtils.isNotNull(agentView.getWhetherReceivedBalancePayment()), AgentView::getWhetherReceivedBalancePayment, agentView.getWhetherReceivedBalancePayment())
 			.eq(ObjectUtils.isNotNull(agentView.getOrderStatus()), AgentView::getOrderStatus, agentView.getOrderStatus())

+ 54 - 20
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/AgentServiceImpl.java

@@ -490,9 +490,9 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 		//审批数据
 		LosAuditProecessDTO auditProecessDTO = new LosAuditProecessDTO();
 		//获取审批级次
-		List<LosAuditPathsLevels> auditPathsLevels = null;
+		List<LosAuditPathsLevels> auditPathsLevels;
 		// 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
-		LosAuditPathsActs pathsActs = null;
+		LosAuditPathsActs pathsActs;
 		//是否开启流程
 		LambdaQueryWrapper<LosAuditPathsActs> auditPathsActsLambdaQueryWrapper = new LambdaQueryWrapper<>();
 		auditPathsActsLambdaQueryWrapper
@@ -549,6 +549,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			}
 		}
 		declare.setBusinessStatus("提交审核");
+		declare.setOrderStatus("单据提交审核");
 		baseMapper.updateById(declare);
 		return declare;
 	}
@@ -569,6 +570,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			throw new SecurityException("操作失败,请联系管理员");
 		}
 		declare.setBusinessStatus("录入");
+		declare.setOrderStatus("单据审核撤销");
 		baseMapper.updateById(declare);
 		return declare;
 	}
@@ -753,9 +755,6 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			item.setWhetherClearance(null);
 			item.setWhetherDispatchCar(null);
 			item.setWhetherComplete(null);
-			item.setWhetherCancel(null);
-			item.setWhetherReceivedDownPayments(null);
-			item.setWhetherReceivedBalancePayment(null);
 		}
 		agentNew.setAgentItemsList(!agentItemsList.isEmpty() ? agentItemsList : new ArrayList<>());
 		agentNew.setId(null);
@@ -785,6 +784,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 		Agent detail = baseMapper.selectById(agent.getId());
 		detail.setExchangeRate(agent.getExchangeRate());
 		detail.setDownPayment("1");
+		detail.setOrderStatus("首款账单生成");
 		List<BFees> feesList = bFeesService.list(new LambdaQueryWrapper<BFees>()
 			.eq(BFees::getTenantId, AuthUtil.getTenantId())
 			.eq(BFees::getIsDeleted, 0)
@@ -845,6 +845,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 		}
 		Agent detail = baseMapper.selectById(agent.getId());
 		detail.setBalancePayment("1");
+		detail.setOrderStatus("尾款账单已生成");
 		detail.setExchangeRate(agent.getExchangeRate());
 		List<BFees> feesList = bFeesService.list(new LambdaQueryWrapper<BFees>()
 			.eq(BFees::getTenantId, AuthUtil.getTenantId())
@@ -950,8 +951,11 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				}
 				agent.setFirstPaidInPayment(firstPaidInPayment);
 				agent.setFirstPaidInPaymentDate(date);
+				agent.setOrderStatus("部分货款");
+				agent.setWhetherReceivedDownPayments("部分货款");
 			}
-		} else if ("WK".equals(agent.getPaidApplication())) {
+		}
+		else if ("WK".equals(agent.getPaidApplication())) {
 			BigDecimal finalPaymentReceived = feeCenterList.stream().filter(e -> "WK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
 				.reduce(BigDecimal.ZERO, BigDecimal::add);
 			if (new BigDecimal("0").compareTo(finalPaymentReceived) != 0) {
@@ -960,6 +964,10 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				}
 				agent.setFinalPaymentReceived(agent.getFinalPaymentReceived().add(finalPaymentReceived));
 				agent.setFinalPaymentReceivedDate(date);
+				agent.setOrderStatus("已收货款");
+				if (agent.getFinalPaymentReceived().add(finalPaymentReceived).compareTo(agent.getFinalPaymentReceivable()) == 0){
+					agent.setWhetherReceivedDownPayments("已收货款");
+				}
 			}
 		}
 		BigDecimal advanceChargeAmount = feeCenterList.stream().filter(e -> "YFK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
@@ -986,7 +994,11 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			.eq(FinAccBills::getAccountType, "LOCAL-D"));
 		List<FinAccBills> finAccBills = new ArrayList<>();
 		List<FinStlBillsItems> stlBillsItemsList = new ArrayList<>();
+		List<FeeCenter> feeCenters = new ArrayList<>();
 		for (FeeCenter item : feeCenterList) {
+			if (0 == item.getAccStatus()) {
+				throw new RuntimeException("费用:" + item.getFeeCnName() + "未生成账单");
+			}
 			if (1 == item.getStlStatus()) {
 				throw new RuntimeException("费用:" + item.getFeeCnName() + "已确认");
 			}
@@ -1076,7 +1088,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			item.setStlByName(AuthUtil.getUserName());
 			item.setUnsettledAmount(new BigDecimal("0.00"));
 			item.setStlTtlAmount(data.getAmountDr());
-			feeCenterList.add(item);
+			feeCenters.add(item);
 		}
 		FinStlBills finStlBills = new FinStlBills();
 		BusinessType businessTypeStl = bBusinessTypeService.getOne(new LambdaQueryWrapper<BusinessType>()
@@ -1095,7 +1107,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 			throw new RuntimeException("生成订单编号失败");
 		}
-		finStlBills.setBillNo((String) clientBillNo.getData());
+		finStlBills.setBillNo(clientBillNo.getData());
 		finStlBills.setBillDate(date);
 		finStlBills.setWhetherManual("0");
 		finStlBills.setCreateTime(date);
@@ -1140,15 +1152,16 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			item.setPid(finStlBills.getId());
 		}
 		finStlBillsItemsService.saveBatch(stlBillsItemsList);
-		for (FeeCenter item : feeCenterList) {
+		for (FeeCenter item : feeCenters) {
 			item.setStlBillId(finStlBills.getId());
 			item.setStlBillNo(finStlBills.getBillNo());
 			item.setStlDate(finStlBills.getBillDate());
 		}
-		feeCenterService.saveOrUpdateBatch(feeCenterList);
+		feeCenterService.saveOrUpdateBatch(feeCenters);
 		if (!finAccBills.isEmpty()) {
 			finAccBillsService.updateBatchById(finAccBills);
 		}
+		baseMapper.updateById(agent);
 		return agent;
 	}
 
@@ -1168,6 +1181,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			checkType = "FFSQ-SK";
 			fidStatus = "first_status";
 			declare.setApplyForPayment("1");
+			declare.setOrderStatus("已申请首付款");
 
 		} else if ("FFSQ-WK".equals(agent.getPaidApplication())) {
 			actId = 1124;
@@ -1175,9 +1189,10 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			checkType = "FFSQ-WK";
 			fidStatus = "final_status";
 			declare.setApplyForPaymentBalance("1");
+			declare.setOrderStatus("已申请尾款");
 		}
 		//获取审批级次
-		List<LosAuditPathsLevels> auditPathsLevels = null;
+		List<LosAuditPathsLevels> auditPathsLevels;
 		// 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
 		LosAuditPathsActs pathsActs;
 		//是否开启流程
@@ -1233,6 +1248,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 					throw new SecurityException("发送消息失败");
 				}
 			}
+
 			String feeType = "";
 			if ("FFSQ-SK".equals(agent.getPaidApplication())) {
 				declare.setFirstStatus("审核通过");
@@ -1245,7 +1261,15 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				.eq(FeeCenter::getPid, agent.getId())
 				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 				.eq(FeeCenter::getIsDeleted, 0)
+				.eq(FeeCenter::getDc, "D")
 				.eq(FeeCenter::getFeeType, feeType));
+			if ("FFSQ-SK".equals(agent.getPaidApplication())) {
+				declare.setFirstPaymentPayable(feeCenters.stream().filter(e-> "SFK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
+					.reduce(BigDecimal.ZERO,BigDecimal::add));
+			} else if ("FFSQ-WK".equals(agent.getPaidApplication())) {
+				declare.setFinalPaymentPayable(feeCenters.stream().filter(e-> "WK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
+					.reduce(BigDecimal.ZERO,BigDecimal::add));
+			}
 			List<FeeCenter> feeCenterList = new ArrayList<>();
 			for (FeeCenter item : feeCenters) {
 				FeeCenter feeCenter = new FeeCenter();
@@ -1376,7 +1400,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 		if (feeCenterList.isEmpty()) {
 			throw new RuntimeException("未找到" + feeTypeName + "应付费用明细");
 		}
-		BigDecimal amountC = feeCenterList.stream().map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		BigDecimal amountC = feeCenterList.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 		if (new BigDecimal("0").compareTo(amountD) != 0 && amount.compareTo(amountD) == 0) {
 			BigDecimal amountSub = amountC.subtract(amountD);
 			if (amountSub.compareTo(new BigDecimal("0")) > 0) {
@@ -1484,6 +1508,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			if (new BigDecimal("0").compareTo(firstActualPayment) != 0) {
 				agent.setFirstActualPayment(firstActualPayment);
 				agent.setFirstActualPaymentDate(date);
+				agent.setOrderStatus("部分付汇");
+				agent.setWhetherReceivedBalancePayment("部分付汇");
 			}
 		} else {
 			BigDecimal finalPaymentInFull = feeCenterList.stream().filter(e -> "WK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
@@ -1494,6 +1520,10 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				}
 				agent.setFinalPaymentInFull(agent.getFinalPaymentInFull().add(finalPaymentInFull));
 				agent.setFinalPaymentInFullDate(date);
+				agent.setOrderStatus("已付汇");
+				if (agent.getFinalPaymentInFull().add(finalPaymentInFull).compareTo(agent.getFinalPaymentPayable()) == 0){
+					agent.setWhetherReceivedBalancePayment("已付汇");
+				}
 			}
 		}
 		List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
@@ -1503,6 +1533,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			.eq(FinAccBills::getAccountType, "LOCAL-C"));
 		List<FinAccBills> finAccBills = new ArrayList<>();
 		List<FinStlBillsItems> stlBillsItemsList = new ArrayList<>();
+		List<FeeCenter> feeCenters1 = new ArrayList<>();
 		for (FeeCenter item : feeCenterList) {
 			if (1 == item.getStlStatus()) {
 				throw new RuntimeException("费用:" + item.getFeeCnName() + "已确认");
@@ -1680,7 +1711,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			item.setStlByName(AuthUtil.getUserName());
 			item.setUnsettledAmount(new BigDecimal("0.00"));
 			item.setStlTtlAmount(data.getAmountDr());
-			feeCenterList.add(item);
+			feeCenters1.add(item);
 		}
 		FinStlBills finStlBills = new FinStlBills();
 		BusinessType businessTypeStl = bBusinessTypeService.getOne(new LambdaQueryWrapper<BusinessType>()
@@ -1699,7 +1730,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 			throw new RuntimeException("生成订单编号失败");
 		}
-		finStlBills.setBillNo((String) clientBillNo.getData());
+		finStlBills.setBillNo(clientBillNo.getData());
 		finStlBills.setBillDate(date);
 		finStlBills.setWhetherManual("0");
 		finStlBills.setCreateTime(date);
@@ -1744,15 +1775,16 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			item.setPid(finStlBills.getId());
 		}
 		finStlBillsItemsService.saveBatch(stlBillsItemsList);
-		for (FeeCenter item : feeCenterList) {
+		for (FeeCenter item : feeCenters1) {
 			item.setStlBillId(finStlBills.getId());
 			item.setStlBillNo(finStlBills.getBillNo());
 			item.setStlDate(finStlBills.getBillDate());
 		}
-		feeCenterService.saveOrUpdateBatch(feeCenterList);
+		feeCenterService.saveOrUpdateBatch(feeCenters1);
 		if (!finAccBills.isEmpty()) {
 			finAccBillsService.saveOrUpdateBatch(finAccBills);
 		}
+		updateById(agent);
 		return agent;
 	}
 
@@ -1977,11 +2009,13 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				throw new SecurityException("审核已通过,撤销失败");
 			}
 			declare.setFirstStatus("录入");
+			declare.setOrderStatus("申请首付款撤销");
 		} else if ("FFSQ-WK".equals(agent.getPaidApplication())) {
 			if ("审核通过".equals(declare.getFinalStatus())) {
 				throw new SecurityException("审核已通过,撤销失败");
 			}
 			declare.setFinalStatus("录入");
+			declare.setOrderStatus("申请尾款撤销");
 		}
 		String status = sysClient.getParamServiceByDept("whether.apply.for.payment", AuthUtil.getTenantId(), AuthUtil.getDeptId());
 		if (ObjectUtils.isNotNull(status) && !"0".equals(status)) {
@@ -2035,7 +2069,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			checkType = "YSQR-WK";
 		}
 		//获取审批级次
-		List<LosAuditPathsLevels> auditPathsLevels = null;
+		List<LosAuditPathsLevels> auditPathsLevels;
 		// 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
 		LosAuditPathsActs pathsActs;
 		//是否开启流程
@@ -2080,9 +2114,9 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 					sendMessage.setPageLabel(agent.getPageLabel());
 					sendMessage.setPageStatus(agent.getPageStatus());
 					if ("YSQR-SK".equals(agent.getPaidApplication())) {
-						sendMessage.setMessageBody("您有新的贸易代理首款应收待确认" + ",业务单号:" + agent.getBusinessNo());
+						sendMessage.setMessageBody("您有新的贸易代理首款应收待确认" + ",业务单号:" + declare.getBusinessNo());
 					} else if ("YSQR-WK".equals(agent.getPaidApplication())) {
-						sendMessage.setMessageBody("您有新的贸易代理尾款应收待确认" + ",业务单号:" + agent.getBusinessNo());
+						sendMessage.setMessageBody("您有新的贸易代理尾款应收待确认" + ",业务单号:" + declare.getBusinessNo());
 					}
 					messageList.add(sendMessage);
 				}
@@ -2164,7 +2198,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 		if (amount.compareTo(amountD) != 0) {
 			return R.data(feeTypeName + "实收未全部到账是否继续确认付款");
 		} else {
-			return R.success("操作成功");
+			return R.data("是否确认付款");
 		}
 	}