Browse Source

2023年11月15日17:36:40

纪新园 2 years ago
parent
commit
619ef137ad
22 changed files with 629 additions and 95 deletions
  1. 4 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/dto/WaitingBox.java
  2. 20 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/Bills.java
  3. 2 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/Containers.java
  4. 4 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/ContainersBills.java
  5. 6 4
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/check/entity/LosAuditPaths.java
  6. 14 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/check/entity/LosAuditProecess.java
  7. 3 2
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/FeeCenter.java
  8. 1 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/FinAccBills.java
  9. 11 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/vo/FinAccBillsVO.java
  10. 16 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/entity/FinStlBills.java
  11. 16 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/entity/FinStlBillsItems.java
  12. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.java
  13. 144 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml
  14. 41 6
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java
  15. 14 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/ContainersServiceImpl.java
  16. 10 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/PreContainersServiceImpl.java
  17. 12 1
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FinAccBillsController.java
  18. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/IFinAccBillsService.java
  19. 39 1
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java
  20. 33 17
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FinAccBillsServiceImpl.java
  21. 36 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/controller/FinStlBillsController.java
  22. 199 62
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java

+ 4 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/dto/WaitingBox.java

@@ -1,5 +1,7 @@
 package org.springblade.los.business.sea.dto;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -78,12 +80,14 @@ public class WaitingBox {
 	 */
 	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	@JsonFormat(pattern = "yyyy-MM-dd")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date etd;
 	/**
 	 * 到港日期
 	 */
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date eta;
 
 	/**

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

@@ -16,6 +16,7 @@
  */
 package org.springblade.los.business.sea.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -136,6 +137,7 @@ public class Bills implements Serializable {
 	@ApiModelProperty(value = "单据日期")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date billDate;
 	/**
 	 * 财务日期
@@ -143,6 +145,7 @@ public class Bills implements Serializable {
 	@ApiModelProperty(value = "财务日期")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date accountDate;
 	/**
 	 * 操作 Id
@@ -280,6 +283,7 @@ public class Bills implements Serializable {
 	@ApiModelProperty(value = "订舱日期")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date bookingDate;
 	/**
 	 * 退舱时间 yyyy-MM-dd hh:nn
@@ -287,6 +291,7 @@ public class Bills implements Serializable {
 	@ApiModelProperty(value = "退舱时间 yyyy-MM-dd hh:nn")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date bookingWithdrawTime;
 	/**
 	 * 订舱备注
@@ -334,6 +339,7 @@ public class Bills implements Serializable {
 	@ApiModelProperty(value = "开船日期")
 	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	@JsonFormat(pattern = "yyyy-MM-dd")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date etd;
 
 	/**
@@ -347,6 +353,7 @@ public class Bills implements Serializable {
 	@ApiModelProperty(value = "到港日期")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date eta;
 	/**
 	 * 到港日期
@@ -524,6 +531,7 @@ public class Bills implements Serializable {
 	@ApiModelProperty(value = "签单日期")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date issueDate;
 	/**
 	 * 签单地点Id
@@ -541,11 +549,21 @@ public class Bills implements Serializable {
 	@ApiModelProperty(value = "正本提单份数, ONE,TWO.THREE...")
 	private String numberOfObl;
 	/**
+	 * 正本提单份数, ONE,TWO.THREE...
+	 */
+	@ApiModelProperty(value = "正本提单份数, ONE,TWO.THREE...")
+	private Integer numberOfOblDigit;
+	/**
 	 * 副本提单份数, ONE,TWO.THREE...
 	 */
 	@ApiModelProperty(value = "副本提单份数, ONE,TWO.THREE...")
 	private String numberOfCopy;
 	/**
+	 * 副本提单份数, ONE,TWO.THREE...
+	 */
+	@ApiModelProperty(value = "副本提单份数, ONE,TWO.THREE...")
+	private Integer numberOfCopyDigit;
+	/**
 	 * 服务条款, DOOR/DOOR
 	 */
 	@ApiModelProperty(value = "服务条款, DOOR/DOOR")
@@ -996,6 +1014,7 @@ public class Bills implements Serializable {
 	@ApiModelProperty(value = "场站背箱时间 yyyy-MM-dd hh:nn")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date cyTrailerTime;
 	/**
 	 * 返场(回箱)时间 yyyy-MM-dd hh:nn
@@ -1003,6 +1022,7 @@ public class Bills implements Serializable {
 	@ApiModelProperty(value = "返场(回箱)时间 yyyy-MM-dd hh:nn")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date cyReturnTime;
 	/**
 	 * IEIEC

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

@@ -16,6 +16,7 @@
  */
 package org.springblade.los.business.sea.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -284,6 +285,7 @@ public class Containers implements Serializable {
 	@ApiModelProperty(value = "VGM 日期")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date vgmDate;
 	/**
 	 * VGM 总重(KGM)

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

@@ -16,6 +16,8 @@
  */
 package org.springblade.los.business.sea.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -171,6 +173,7 @@ public class ContainersBills implements Serializable {
 	@ApiModelProperty(value = "开船日期")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
 	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date etd;
 	/**
 	 * 到港日期
@@ -178,6 +181,7 @@ public class ContainersBills implements Serializable {
 	@ApiModelProperty(value = "到港日期")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date eta;
 	/**
 	 * 货物类别 dry=普货 danger=危险品 reefer=冻柜

+ 6 - 4
blade-service-api/blade-los-api/src/main/java/org/springblade/los/check/entity/LosAuditPaths.java

@@ -16,13 +16,12 @@
  */
 package org.springblade.los.check.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -67,6 +66,9 @@ public class LosAuditPaths implements Serializable {
 	 * 维护时间
 	 */
 	@ApiModelProperty(value = "维护时间")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date opDate;
 	/**
 	 * 承包单位id

+ 14 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/check/entity/LosAuditProecess.java

@@ -16,8 +16,10 @@
  */
 package org.springblade.los.check.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -87,6 +89,9 @@ public class LosAuditProecess implements Serializable {
 	 * 请核时间
 	 */
 	@ApiModelProperty(value = "请核时间")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date sendTime;
 	/**
 	 * 请核备注
@@ -102,11 +107,17 @@ public class LosAuditProecess implements Serializable {
 	 * 审核通过时间
 	 */
 	@ApiModelProperty(value = "审核通过时间")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date auditItem;
 	/**
 	 * 审核时间
 	 */
 	@ApiModelProperty(value = "审核时间")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date auditOpTime;
 	/**
 	 * 审核意见
@@ -122,6 +133,9 @@ public class LosAuditProecess implements Serializable {
 	 * 业务日期
 	 */
 	@ApiModelProperty(value = "业务日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date billTime;
 
 	/**

+ 3 - 2
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/FeeCenter.java

@@ -522,6 +522,7 @@ public class FeeCenter implements Serializable {
 	@ApiModelProperty(value = "结算单日期")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date stlDate;
 	/**
 	 * 本次原币结算金额
@@ -554,9 +555,9 @@ public class FeeCenter implements Serializable {
 	@ApiModelProperty(value = "本次结算本币金额")
 	private BigDecimal stlAmountLoc;
 	/**
-	 * 结算单日期
+	 * 结算单状态
 	 */
-	@ApiModelProperty(value = "结算单日期")
+	@ApiModelProperty(value = "结算单状态")
 	private Integer stlStatus;
 	/**
 	 * 结算单创建人 Id

+ 1 - 1
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/FinAccBills.java

@@ -133,7 +133,7 @@ public class FinAccBills implements Serializable {
 	/**
 	 * 账单关键字 业务表的id+结算单位+收付  +核算要素作为关键字
 	 */
-	@ApiModelProperty(value = "账单关键字 业务表的id+结算单位+收付  +核算要素作为关键字")
+	@ApiModelProperty(value = "账单关键字 业务表的id+收付结算单位+  +核算要素作为关键字")
 	private String billKey;
 	/**
 	 * 业务类型

+ 11 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/vo/FinAccBillsVO.java

@@ -16,11 +16,15 @@
  */
 package org.springblade.los.finance.fee.vo;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.los.finance.fee.entity.FinAccBills;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -48,6 +52,10 @@ public class FinAccBillsVO extends FinAccBills {
 	private String billType;
 
 	/**
+	 * 币别
+	 */
+	private String curCode;
+	/**
 	 * 费用中心id
 	 */
 	private String sourceId;
@@ -210,6 +218,9 @@ public class FinAccBillsVO extends FinAccBills {
 	/**
 	 * 签收日期
 	 */
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date signforDate;
 
 	/**

+ 16 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/entity/FinStlBills.java

@@ -28,10 +28,12 @@ import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
 
 /**
  * 业务-财务对账单和结算实体类
@@ -110,6 +112,8 @@ public class FinStlBills implements Serializable {
 	 * 对账/结算日期
 	 */
 	@ApiModelProperty(value = "对账/结算日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date billDate;
 	/**
@@ -236,11 +240,17 @@ public class FinStlBills implements Serializable {
 	 * 财务开始日期
 	 */
 	@ApiModelProperty(value = "财务开始日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date accountDateFrom;
 	/**
 	 * 财务结束日期
 	 */
 	@ApiModelProperty(value = "财务结束日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date accountDateTo;
 	/**
 	 * 审核开始日期
@@ -251,6 +261,9 @@ public class FinStlBills implements Serializable {
 	 * 审核结束日期
 	 */
 	@ApiModelProperty(value = "审核结束日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date auditDateTo;
 	/**
 	 * 发票号
@@ -326,6 +339,9 @@ public class FinStlBills implements Serializable {
 	 * 凭证日期
 	 */
 	@ApiModelProperty(value = "凭证日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date voucherDate;
 	/**
 	 * 本位币应收(CNY)

+ 16 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/entity/FinStlBillsItems.java

@@ -20,9 +20,11 @@ import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -125,12 +127,17 @@ public class FinStlBillsItems implements Serializable {
 	 * 对账/结算日期
 	 */
 	@ApiModelProperty(value = "对账/结算日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date billDate;
 	/**
 	 * 业务财务日期
 	 */
 	@ApiModelProperty(value = "业务财务日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date accountDate;
 	/**
 	 * 财务年
@@ -276,11 +283,17 @@ public class FinStlBillsItems implements Serializable {
 	 * 开船日期
 	 */
 	@ApiModelProperty(value = "开船日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date etd;
 	/**
 	 * 到港日期
 	 */
 	@ApiModelProperty(value = "到港日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date eta;
 	/**
 	 * 装货港 id
@@ -376,6 +389,9 @@ public class FinStlBillsItems implements Serializable {
 	 * 账单日期
 	 */
 	@ApiModelProperty(value = "账单日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date accDate;
 	/**
 	 * 费用收付 D-Debit C=Credit

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

@@ -45,4 +45,6 @@ public interface BillsMapper extends BaseMapper<Bills> {
 	List<BillsVO> selectBillsPage(IPage page, BillsVO bills);
 
     List<FinAccBillsVO> listAccBill(@Param("acc") ListAccBillVO finAccBills);
+
+    List<FinAccBillsVO> listAccBillV2(@Param("acc") ListAccBillVO listAccBillVO);
 }

+ 144 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml

@@ -271,6 +271,7 @@
         fee.business_type as businessType,
         fee.bill_type as billType,
         fee.id as sourceId,
+        fee.cur_code as curCode,
         fee.account_year as accountYear,
         fee.account_month as accountMonth,
         fee.account_day as accountDay,
@@ -407,5 +408,148 @@
         GROUP BY acc.bill_no
         ORDER BY acc.create_time
     </select>
+    <select id="listAccBillV2" resultType="org.springblade.los.finance.fee.vo.FinAccBillsVO">
+        SELECT DISTINCT
+        acc.*,
+        fee.business_type as businessType,
+        fee.bill_type as billType,
+        fee.cur_code as curCode,
+        fee.id as sourceId,
+        fee.account_year as accountYear,
+        fee.account_month as accountMonth,
+        fee.account_day as accountDay,
+        fee.src_type as srcType,
+        fee.src_id as srcId,
+        fee.src_cn_name as srcCnName,
+        fee.src_en_name as srcEnName,
+        fee.line_id as lineId,
+        fee.line_cn_name as lineCnName,
+        fee.line_en_name as lineEnName,
+        fee.cntr_no as cntrNo,
+        SUM(fee.quantity) as quantity,
+        fee.unit_no as unitNo,
+        SUM(fee.price) as price,
+        fee.fee_id as feeId,
+        fee.fee_code as feeCode,
+        fee.fee_cn_name as feeCnName,
+        fee.fee_en_name as feeEnName,
+        fee.exrate as exrate,
+        fee.is_tax as isTax,
+        fee.tax_type as taxType,
+        fee.tax_rate as taxRate,
+        fee.surcharge_rate as surchargeRate,
+        SUM(fee.amount_discount) as amountDiscount,
+        SUM(fee.amount_net) as amountNet,
+        SUM(fee.amount_tax) as amountTax,
+        SUM(fee.amount) as amount,
+        SUM(fee.amount_tax_loc) as amountTaxLoc,
+        SUM(fee.amount_net_loc) as amountNetLoc,
+        SUM(fee.amount_discount_loc) as amountDiscountLoc,
+        SUM(fee.amount_loc) as amountLoc,
+        SUM(fee.stl_ttl_amount) as stlTtlAmount,
+        IF(SUM(fee.unsettled_amount),SUM(fee.unsettled_amount),0.00) as unsettledAmount,
+        fee.is_signfor as isSignfor,
+        fee.signfor_id as signforId,
+        fee.signfor_name as signforName,
+        fee.signfor_date as signforDate,
+        bill.operator_id as operatorId,
+        bill.operator_name as operatorName,
+        bill.quantity_packing_descr as quantityPackingDescr,
+        bill.quantity_cntr_types_descr as quantityCntrTypesDescr,
+        corp.account_period_type as accountPeriodType
+        FROM
+        los_fee_center fee
+        JOIN los_sea_bills bill ON bill.id = fee.pid
+        LEFT JOIN los_b_corps corp ON corp.id = fee.corp_id
+        LEFT JOIN los_fin_acc_bills acc ON acc.id = fee.acc_bill_id
+        WHERE
+        acc.is_deleted = '0'
+        AND fee.is_deleted = '0'
+        and bill.is_deleted = '0'
+        <if test="acc.auditStatus != null and acc.auditStatus !=''">
+            and fee.audit_status = #{acc.auditStatus}
+        </if>
+        <if test="acc.corpCnName != null and acc.corpCnName != ''">
+            and fee.corp_id = #{acc.corpCnName}
+        </if>
+        <if test="acc.isSignfor != null">
+            and fee.is_signfor = #{acc.isSignfor}
+        </if>
+        <if test="acc.dc != null and acc.dc != ''">
+            and fee.dc = #{acc.dc}
+        </if>
+        <if test="acc.curCode != null and acc.curCode != ''">
+            and fee.cur_code = #{acc.curCode}
+        </if>
+        <if test="acc.srcType != null and acc.srcType != ''">
+            and fee.src_type = #{acc.srcType}
+        </if>
+        <if test="acc.srcCnName != null and acc.srcCnName != ''">
+            and fee.src_id = #{acc.srcCnName}
+        </if>
+        <if test="acc.isCleared != null">
+            and acc.is_cleared = #{acc.isCleared}
+        </if>
+        <if test="acc.billNo != null and acc.billNo != ''">
+            and fee.bill_no like concat('%', #{acc.billNo}, '%')
+        </if>
+        <if test="acc.accBillNo != null and acc.accBillNo != ''">
+            and fee.acc_bill_no like concat('%', #{acc.accBillNo}, '%')
+        </if>
+        <if test="acc.mblno != null and acc.mblno != ''">
+            and fee.mblno like concat('%', #{acc.mblno}, '%')
+        </if>
+        <if test="acc.hblno != null and acc.hblno != ''">
+            and fee.hblno like concat('%', #{acc.hblno}, '%')
+        </if>
+        <if test="acc.isChecked != null">
+            and acc.is_checked = #{acc.isChecked}
+        </if>
+        <if test="acc.billDateList != null and acc.billDateList != '' and acc.billDateList[0] != ''">
+            and acc.bill_date &gt;= #{acc.billDateList[0]}
+        </if>
+        <if test="acc.billDateList != null and acc.billDateList != '' and acc.billDateList[1] != ''">
+            and acc.bill_date &lt;= #{acc.billDateList[1]}
+        </if>
+        <if test="acc.approveTimeList != null and acc.approveTimeList != '' and acc.approveTimeList[0] != ''">
+            and fee.approve_time &gt;= #{acc.approveTimeList[0]}
+        </if>
+        <if test="acc.approveTimeList != null and acc.approveTimeList != '' and acc.approveTimeList[1] != ''">
+            and fee.approve_time &lt;= #{acc.approveTimeList[1]}
+        </if>
+        <if test="acc.queryAmount != null and acc.queryAmount != ''">
+            and (acc.amount_dr_loc = #{acc.queryAmount} or acc.amount_cr_loc = #{acc.queryAmount})
+        </if>
+        <if test="acc.businessType != null and acc.businessType != ''">
+            and fee.business_type = #{acc.businessType}
+        </if>
+        <if test="acc.invoiceStatus != null">
+            and fee.invoice_status = #{acc.invoiceStatus}
+        </if>
+        <if test="acc.vesselCnName != null and acc.vesselCnName != ''">
+            and ( acc.vessel_cn_name like concat('%', #{acc.vesselCnName}, '%') or acc.vessel_en_name like concat('%',
+            #{acc.vesselCnName}, '%') )
+        </if>
+        <if test="acc.voyageNo != null and acc.voyageNo != ''">
+            and acc.voyage_no like concat('%', #{acc.voyageNo}, '%')
+        </if>
+        <if test="acc.threeInspectionsNo != null and acc.threeInspectionsNo != ''">
+            and acc.three_inspections_no like concat('%', #{acc.threeInspectionsNo}, '%')
+        </if>
+        <if test="acc.receivableAdvance != null">
+            and (acc.amount_dr_loc = #{acc.receivableAdvance} or acc.amount_cr_loc = #{acc.receivableAdvance})
+        </if>
+        <if test="acc.invoiceNo != null and acc.invoiceNo != ''">
+            and fee.invoice_no like concat('%', #{acc.invoiceNo}, '%')
+        </if>
+        <if test="acc.createUserName != null and acc.createUserName != ''">
+            and acc.create_user = #{acc.createUserName}
+        </if>
+        <if test="acc.bookingNo != null and acc.bookingNo != ''">
+            and acc.booking_no like concat('%', #{acc.bookingNo}, '%')
+        </if>
+        GROUP BY fee.id
+        ORDER BY acc.create_time
+    </select>
 
 </mapper>

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

@@ -681,13 +681,20 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 			.eq(FeeCenter::getIsDeleted, 0)
-			.eq(FeeCenter::getPid, declare.getId())
-			.eq(FeeCenter::getAccStatus, 0));
-		if (feeCenterList.size() == 0) {
+			.eq(FeeCenter::getPid, declare.getId()));
+		List<FeeCenter> feeCenterList1 = feeCenterList.stream().filter(e -> e.getAccStatus().equals(0))
+			.collect(Collectors.toList());
+		for (FeeCenter item : feeCenterList) {
+			item.setApplyId(AuthUtil.getUserId());
+			item.setApplyName(AuthUtil.getUserName());
+			item.setApplyTime(new Date());
+		}
+		feeCenterService.saveOrUpdateBatch(feeCenterList);
+		if (feeCenterList1.size() == 0) {
 			return declare;
 		} else {
 			FinAccBills finAccBills = new FinAccBills();
-			finAccBills.setFeeCenterList(feeCenterList);
+			finAccBills.setFeeCenterList(feeCenterList1);
 			finAccBills.setBusinessTypeCode("HYZD");
 			finAccBills.setBillNoFormat("HYZD");
 			finAccBills.setAccountType("");
@@ -741,7 +748,16 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		}
 		bills.setStatus(3);
 		baseMapper.updateById(bills);
-
+		List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getIsDeleted, 0)
+			.eq(FeeCenter::getPid, bills.getId()));
+		for (FeeCenter item : feeCenterList) {
+			item.setApproverId(AuthUtil.getUserId());
+			item.setApproverName(AuthUtil.getUserName());
+			item.setApproveTime(new Date());
+		}
+		feeCenterService.saveOrUpdateBatch(feeCenterList);
 		return R.success("操作成功");
 	}
 
@@ -753,7 +769,16 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		}
 		bills.setStatus(2);
 		baseMapper.updateById(bills);
-
+		List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getIsDeleted, 0)
+			.eq(FeeCenter::getPid, bills.getId()));
+		for (FeeCenter item : feeCenterList) {
+			item.setApproverId(AuthUtil.getUserId());
+			item.setApproverName(AuthUtil.getUserName());
+			item.setApproveTime(new Date());
+		}
+		feeCenterService.saveOrUpdateBatch(feeCenterList);
 		return R.success("操作成功");
 	}
 
@@ -766,6 +791,16 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 
 		bills.setStatus(4);
 		baseMapper.updateById(bills);
+		List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getIsDeleted, 0)
+			.eq(FeeCenter::getPid, bills.getId()));
+		for (FeeCenter item : feeCenterList) {
+			item.setApproverId(AuthUtil.getUserId());
+			item.setApproverName(AuthUtil.getUserName());
+			item.setApproveTime(new Date());
+		}
+		feeCenterService.saveOrUpdateBatch(feeCenterList);
 		return R.success("操作成功");
 	}
 

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

@@ -231,7 +231,20 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 			}
 			containersBillsService.removeByIds(containersBillsList.stream().map(ContainersBills::getId).collect(Collectors.toList()));
 		}
-		baseMapper.deleteBatchIds(toLongList);
+		List<Containers> containersList = baseMapper.selectList(new LambdaQueryWrapper<Containers>()
+			.in(Containers::getId, toLongList)
+			.eq(Containers::getTenantId, AuthUtil.getTenantId())
+			.eq(Containers::getIsDeleted, 0));
+		for (Containers item : containersList) {
+			item.setQuantity(new BigDecimal("0.00"));
+			item.setMeasurement(new BigDecimal("0.00"));
+			item.setNetWeight(new BigDecimal("0.00"));
+			item.setGrossWeight(new BigDecimal("0.00"));
+			item.setUpdateUser(AuthUtil.getUserId());
+			item.setUpdateUserName(AuthUtil.getUserName());
+			item.setUpdateTime(new Date());
+		}
+		this.updateBatchById(containersList);
 		return R.data("操作成功");
 	}
 

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

@@ -110,6 +110,16 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 			.eq(Containers::getIsDeleted, 0)
 			.eq(Containers::getPid, preContainers.getPid()));
 		containersService.removeByPid(preContainers.getPid(), preContainers.getCntrTypeCode());
+		for (Containers item : removeContainersList) {
+			item.setQuantity(new BigDecimal("0.00"));
+			item.setMeasurement(new BigDecimal("0.00"));
+			item.setNetWeight(new BigDecimal("0.00"));
+			item.setGrossWeight(new BigDecimal("0.00"));
+			item.setUpdateUser(AuthUtil.getUserId());
+			item.setUpdateUserName(AuthUtil.getUserName());
+			item.setUpdateTime(new Date());
+		}
+		containersService.saveOrUpdateBatch(removeContainersList);
 		if (removeContainersList.size() > 0) {
 			List<Long> ids = removeContainersList.stream().map(Containers::getId).collect(Collectors.toList());
 			containersBillsService.removeByPid(ids);

+ 12 - 1
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FinAccBillsController.java

@@ -294,7 +294,7 @@ public class FinAccBillsController extends BladeController {
 	}
 
 	/**
-	 * 财务账单
+	 * 财务账单(对账)
 	 */
 	@GetMapping("/listAccBillV1")
 	@ApiOperationSupport(order = 2)
@@ -304,5 +304,16 @@ public class FinAccBillsController extends BladeController {
 		return R.data(list);
 	}
 
+	/**
+	 * 财务账单(结算)
+	 */
+	@GetMapping("/listAccBillV2")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "类别", notes = "传入finAccBills")
+	public R<List<FinAccBillsVO>> listAccBillV2(ListAccBillVO listAccBillVO) {
+		List<FinAccBillsVO> list = finAccBillsService.listAccBillV2(listAccBillVO);
+		return R.data(list);
+	}
+
 
 }

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/IFinAccBillsService.java

@@ -69,4 +69,6 @@ public interface IFinAccBillsService extends IService<FinAccBills> {
 	 * @return
 	 */
     List<FinAccBillsVO> listAccBill(ListAccBillVO finAccBills);
+
+    List<FinAccBillsVO> listAccBillV2(ListAccBillVO listAccBillVO);
 }

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

@@ -26,9 +26,9 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.los.basic.cur.entity.BCurrency;
 import org.springblade.los.basic.cur.mapper.CurrencyMapper;
+import org.springblade.los.basic.cur.service.IBCurrencyService;
 import org.springblade.los.basic.fees.entity.FeesTemplateItems;
 import org.springblade.los.basic.fees.entity.LosBFeesTemplate;
-import org.springblade.los.basic.fees.mapper.FeesTemplateItemsMapper;
 import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.business.sea.mapper.BillsMapper;
 import org.springblade.los.finance.fee.entity.FeeCenter;
@@ -40,6 +40,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -60,6 +61,8 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 
 	private final CurrencyMapper currencyMapper;
 
+	private final IBCurrencyService bCurrencyService;
+
 	@Override
 	public IPage<FeeCenterVO> selectFeeCenterPage(IPage<FeeCenterVO> page, FeeCenterVO feeCenter) {
 		return page.setRecords(baseMapper.selectFeeCenterPage(page, feeCenter));
@@ -91,6 +94,41 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 			feeCenter.setUpdateTime(new Date());
 			feeCenter.setUpdateUserName(AuthUtil.getUserName());
 		}
+
+		/** --------------------金额计算-------------------------**/
+		// 去税金额 = 数量quantity * 单价price
+		BigDecimal amountNet = new BigDecimal("0.00");
+		// 税额 = 去税金额amountNet * 税率taxRateSum
+		BigDecimal amountTax = new BigDecimal("0.00");
+		// 金额,amountTax + 去税金额amountNet - 折扣金额amountDiscount
+		BigDecimal amount = new BigDecimal("0.00");
+		//总税率  = 税率taxRate + 附加税率surchargeRate
+		BigDecimal taxRate = new BigDecimal("0.00");
+		// 税率 = 总税率/100
+		BigDecimal taxRateSum = new BigDecimal("0.00");
+
+		amountNet = amountNet.add(feeCenter.getQuantity().multiply(feeCenter.getPrice()))
+			.setScale(2, RoundingMode.HALF_UP);
+		taxRate = taxRate.add(feeCenter.getTaxRate()).add(feeCenter.getSurchargeRate());
+		taxRateSum = taxRateSum.add(taxRate.divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
+		amountTax = amountTax.add(amountNet.multiply(taxRateSum)).setScale(2, RoundingMode.HALF_UP);
+		amount = amount.add(amountNet.add(amountTax).subtract(feeCenter.getAmountDiscount()));
+
+		//判断是否是本位币
+		if ("CNY".equals(feeCenter.getCurCode())) {
+			feeCenter.setAmountNetLoc(amountNet);
+			feeCenter.setAmountTaxLoc(amountTax);
+			feeCenter.setAmountLoc(amount);
+			feeCenter.setAmountDiscountLoc(amount);
+		} else {
+			feeCenter.setAmountNetLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amountNet));
+			feeCenter.setAmountTaxLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amountTax));
+			feeCenter.setAmountLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amount));
+			feeCenter.setAmountDiscountLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amount));
+		}
+		feeCenter.setAmountNet(amountNet);
+		feeCenter.setAmountTax(amountTax);
+		feeCenter.setAmount(amount);
 		this.saveOrUpdate(feeCenter);
 		return R.data(feeCenter);
 	}

+ 33 - 17
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FinAccBillsServiceImpl.java

@@ -118,20 +118,10 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 		}
 		List<Bills> billsList = new ArrayList<>();
 		List<Long> ids = finAccBills.getFeeCenterList().stream().map(FeeCenter::getPid).collect(Collectors.toList());
-		if (ObjectUtils.isNotNull(ids) && ids.size() > 0) {
-			billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
-				.eq(Bills::getTenantId, AuthUtil.getTenantId())
-				.eq(Bills::getIsDeleted, 0)
-				.in(Bills::getId, ids));
-			for (Bills item : billsList) {
-				item.setBillingStatus(item.getBillingStatus() + 1);
-				billsMapper.updateById(item);
-			}
-		}
 		for (FeeCenter item : finAccBills.getFeeCenterList()) {
 			if (ObjectUtils.isNotNull(item.getPid()) && ObjectUtils.isNotNull(item.getUnitNo()) &&
 				ObjectUtils.isNotNull(item.getDc()) && ObjectUtils.isNotNull(item.getElementsCode())) {
-				item.setBillKey(item.getPid() + "-" + item.getUnitNo() + "-" + item.getDc() + "-" + item.getElementsCode());
+				item.setBillKey(item.getPid() + "-" + item.getCorpId() + "-" + item.getDc() + "-" + item.getElementsCode() + "-" + item.getCurCode());
 			} else {
 				throw new RuntimeException("单据号、单位、费用类型、核算要素不能为空");
 			}
@@ -145,12 +135,24 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 			throw new RuntimeException("未找到可用业务类型");
 		}
 		List<FeeCenter> reducelList = finAccBills.getFeeCenterList().stream().filter(distinctByKey(FeeCenter::getBillKey)).collect(Collectors.toList());
+		if (ObjectUtils.isNotNull(ids) && ids.size() > 0) {
+			billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
+				.eq(Bills::getTenantId, AuthUtil.getTenantId())
+				.eq(Bills::getIsDeleted, 0)
+				.in(Bills::getId, ids));
+			for (Bills item : billsList) {
+				item.setBillingStatus(item.getBillingStatus() + reducelList.size());
+				billsMapper.updateById(item);
+			}
+		}
 		for (FeeCenter item : reducelList) {
 			BigDecimal amountCNY = finAccBills.getFeeCenterList().stream()
-				.filter(e -> e.getBillKey().equals(item.getBillKey()) && "CNY".equals(e.getCurCode()))
+				.filter(e -> e.getBillKey().equals(item.getBillKey()) && item.getCurCode().equals(e.getCurCode())
+					&& "CNY".equals(e.getCurCode()))
 				.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			BigDecimal amountUSD = finAccBills.getFeeCenterList().stream()
-				.filter(e -> e.getBillKey().equals(item.getBillKey()) && "USD".equals(e.getCurCode()))
+				.filter(e -> e.getBillKey().equals(item.getBillKey()) && item.getCurCode().equals(e.getCurCode())
+					&& "USD".equals(e.getCurCode()))
 				.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			FinAccBills data = new FinAccBills();
 			data.setCreateTime(new Date());
@@ -223,21 +225,26 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 			data.setPodCode(item.getPodCode());
 			data.setPodEnName(item.getPodEnName());
 			data.setPodNamePrint(finAccBills.getPodNamePrint());
+			BigDecimal amountDrLoc = new BigDecimal("0.00");
+			BigDecimal amountCrLoc = new BigDecimal("0.00");
 			if ("CNY".equals(item.getCurCode())) {
 				if ("D".equals(item.getDc())) {
 					data.setAmountDr(amountCNY);
 				} else {
 					data.setAmountCr(amountCNY);
 				}
+				data.setAmountDrUsd(new BigDecimal("0.00"));
+				data.setAmountCrUsd(new BigDecimal("0.00"));
 			} else {
 				if ("D".equals(item.getDc())) {
 					data.setAmountDrUsd(amountUSD);
 				} else {
 					data.setAmountCrUsd(amountUSD);
 				}
+				data.setAmountDr(new BigDecimal("0.00"));
+				data.setAmountCr(new BigDecimal("0.00"));
 			}
-			BigDecimal amountDrLoc = new BigDecimal("0.00");
-			BigDecimal amountCrLoc = new BigDecimal("0.00");
+
 			if (ObjectUtils.isNotNull(data.getAmountCrUsd()) && ObjectUtils.isNotNull(item.getExrate())) {
 				BigDecimal crCny = data.getAmountCrUsd().multiply(item.getExrate());
 				amountCrLoc = amountCrLoc.add(data.getAmountDr()).add(crCny);
@@ -285,7 +292,11 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 		}
 		List<Long> finAccBillsIds = finAccBills.getFeeCenterList().stream().map(FeeCenter::getAccBillId).distinct().collect(Collectors.toList());
 		this.removeByIds(finAccBillsIds);
-		for (FeeCenter feeCenterItem : finAccBills.getFeeCenterList()) {
+		List<FeeCenter> feeCenterList1 = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getIsDeleted, 0)
+			.in(FeeCenter::getAccBillId, finAccBillsIds));
+		for (FeeCenter feeCenterItem : feeCenterList1) {
 			feeCenterItem.setAccBillId(0L);
 			feeCenterItem.setAccBillNo("");
 			feeCenterItem.setAccDate(null);
@@ -300,7 +311,7 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 			if (item.getBillingStatus() == 0) {
 				throw new RuntimeException("撤销账单失败");
 			}
-			item.setBillingStatus(item.getBillingStatus() - 1);
+			item.setBillingStatus(item.getBillingStatus() - finAccBillsIds.size());
 			billsMapper.updateById(item);
 		}
 		return R.data("操作成功");
@@ -311,6 +322,11 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 		return billsMapper.listAccBill(finAccBills);
 	}
 
+	@Override
+	public List<FinAccBillsVO> listAccBillV2(ListAccBillVO listAccBillVO) {
+		return billsMapper.listAccBillV2(listAccBillVO);
+	}
+
 	private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
 		Set<Object> seen = ConcurrentHashMap.newKeySet();
 		return t -> seen.add(keyExtractor.apply(t));

+ 36 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/controller/FinStlBillsController.java

@@ -16,7 +16,9 @@
  */
 package org.springblade.los.finance.stl.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;
@@ -26,6 +28,7 @@ import org.springblade.common.annotation.RepeatSubmit;
 import org.springblade.core.boot.ctrl.BladeController;
 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.Func;
 import org.springblade.los.finance.stl.entity.FinStlBills;
@@ -67,6 +70,39 @@ public class FinStlBillsController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入finStlBills")
 	public R<IPage<FinStlBills>> list(FinStlBills finStlBills, Query query) {
+		LambdaQueryWrapper<FinStlBills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(FinStlBills::getTenantId, AuthUtil.getTenantId())
+			.eq(FinStlBills::getIsDeleted, 0)
+			.like(ObjectUtils.isNotNull(finStlBills.getBillNo()), FinStlBills::getBillNo, finStlBills.getBillNo())
+			.eq(ObjectUtils.isNotNull(finStlBills.getBusinessType()), FinStlBills::getBusinessType, finStlBills.getBusinessType())
+			.eq(ObjectUtils.isNotNull(finStlBills.getBusinessTypes()), FinStlBills::getBusinessTypes, finStlBills.getBusinessTypes())
+			.like(ObjectUtils.isNotNull(finStlBills.getBusinessNo()), FinStlBills::getBusinessNo, finStlBills.getBusinessNo())
+			.like(ObjectUtils.isNotNull(finStlBills.getAccountNo()), FinStlBills::getAccountNo, finStlBills.getAccountNo())
+			.like(ObjectUtils.isNotNull(finStlBills.getCheckNo()), FinStlBills::getCheckNo, finStlBills.getCheckNo())
+			.eq(ObjectUtils.isNotNull(finStlBills.getDeptId()), FinStlBills::getDeptId, finStlBills.getDeptId())
+			.like(ObjectUtils.isNotNull(finStlBills.getOperatorName()), FinStlBills::getOperatorName, finStlBills.getOperatorName())
+			.like(ObjectUtils.isNotNull(finStlBills.getSalesName()), FinStlBills::getSalesName, finStlBills.getSalesName())
+			.eq(ObjectUtils.isNotNull(finStlBills.getDc()), FinStlBills::getDc, finStlBills.getDc())
+			.eq(ObjectUtils.isNotNull(finStlBills.getCurCode()), FinStlBills::getCurCode, finStlBills.getCurCode())
+			.like(ObjectUtils.isNotNull(finStlBills.getVoyageNo()), FinStlBills::getVoyageNo, finStlBills.getVoyageNo())
+			.like(ObjectUtils.isNotNull(finStlBills.getMblno()), FinStlBills::getMblno, finStlBills.getMblno())
+			.like(ObjectUtils.isNotNull(finStlBills.getHblno()), FinStlBills::getHblno, finStlBills.getHblno())
+			.like(ObjectUtils.isNotNull(finStlBills.getInvoiceNo()), FinStlBills::getInvoiceNo, finStlBills.getInvoiceNo())
+			.eq((ObjectUtils.isNotNull(finStlBills.getIsApproved()) && finStlBills.getIsApproved() != 0), FinStlBills::getIsApproved, finStlBills.getIsApproved())
+			.eq((ObjectUtils.isNotNull(finStlBills.getIsSignfor()) && finStlBills.getIsSignfor() != 0), FinStlBills::getIsSignfor, finStlBills.getIsSignfor())
+			.eq((ObjectUtils.isNotNull(finStlBills.getIsChecked()) && finStlBills.getIsChecked() != 0), FinStlBills::getIsChecked, finStlBills.getIsChecked())
+			.eq((ObjectUtils.isNotNull(finStlBills.getIsCleared()) && finStlBills.getIsCleared() != 0), FinStlBills::getIsCleared, finStlBills.getIsCleared())
+			.eq((ObjectUtils.isNotNull(finStlBills.getIsInvoice()) && finStlBills.getIsInvoice() != 0), FinStlBills::getIsInvoice, finStlBills.getIsInvoice())
+			.like(ObjectUtils.isNotNull(finStlBills.getVoucherNo()), FinStlBills::getVoucherNo, finStlBills.getVoucherNo())
+
+			.eq(ObjectUtils.isNotNull(finStlBills.getCorpCnName()), FinStlBills::getCorpCnName, finStlBills.getCorpCnName())
+			.eq(ObjectUtils.isNotNull(finStlBills.getFeeCnName()), FinStlBills::getFeeCnName, finStlBills.getFeeCnName())
+			.eq(ObjectUtils.isNotNull(finStlBills.getVesselCnName()), FinStlBills::getVesselCnName, finStlBills.getVesselCnName())
+
+			.eq(ObjectUtils.isNotNull(finStlBills.getVoucherDate()), FinStlBills::getVoucherDate, finStlBills.getVoucherDate())
+			.eq(ObjectUtils.isNotNull(finStlBills.getBillDate()), FinStlBills::getBillDate, finStlBills.getBillDate())
+
+			.orderByDesc(FinStlBills::getCreateTime);
 		IPage<FinStlBills> pages = finStlBillsService.page(Condition.getPage(query), Condition.getQueryWrapper(finStlBills));
 		return R.data(pages);
 	}

+ 199 - 62
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java

@@ -56,6 +56,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -167,8 +168,64 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		}
 		this.saveOrUpdate(finStlBills);
 		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
+			BigDecimal amountDrCNY = new BigDecimal("0.00");
+			BigDecimal amountCrCNY = new BigDecimal("0.00");
+			BigDecimal amountDrUSD = new BigDecimal("0.00");
+			BigDecimal amountCrUSD = new BigDecimal("0.00");
+			BigDecimal amountDrCNYTax = new BigDecimal("0.00");
+			BigDecimal amountCrCNYTax = new BigDecimal("0.00");
+			BigDecimal amountDrUSDTax = new BigDecimal("0.00");
+			BigDecimal amountCrUSDTax = new BigDecimal("0.00");
+			amountDrCNY = amountDrCNY.add(finStlBills.getFinStlBillsItemsList().stream()
+				.filter(e -> "CNY".equals(e.getCurrentStlCurCode()) && "D".equals(e.getDc())).map(FinStlBillsItems::getCurrentStlAmount)
+				.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			finStlBills.setAmountDr(amountDrCNY);
+			amountCrCNY = amountCrCNY.add(finStlBills.getFinStlBillsItemsList().stream()
+				.filter(e -> "CNY".equals(e.getCurrentStlCurCode()) && "C".equals(e.getDc())).map(FinStlBillsItems::getCurrentStlAmount)
+				.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			finStlBills.setAmountCr(amountCrCNY);
+			amountDrUSD = amountDrUSD.add(finStlBills.getFinStlBillsItemsList().stream()
+				.filter(e -> "USD".equals(e.getCurrentStlCurCode()) && "D".equals(e.getDc())).map(FinStlBillsItems::getCurrentStlAmount)
+				.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			finStlBills.setAmountDrUsd(amountDrUSD);
+			amountCrUSD = amountCrUSD.add(finStlBills.getFinStlBillsItemsList().stream()
+				.filter(e -> "USD".equals(e.getCurrentStlCurCode()) && "C".equals(e.getDc())).map(FinStlBillsItems::getCurrentStlAmount)
+				.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			finStlBills.setAmountCrUsd(amountCrUSD);
+			amountDrCNYTax = amountDrCNYTax.add(finStlBills.getFinStlBillsItemsList().stream()
+				.filter(e -> "CNY".equals(e.getCurrentStlCurCode()) && "D".equals(e.getDc())).map(FinStlBillsItems::getCurrentStlAmountNet)
+				.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			finStlBills.setAmountDrNet(amountDrCNYTax);
+			amountCrCNYTax = amountCrCNYTax.add(finStlBills.getFinStlBillsItemsList().stream()
+				.filter(e -> "CNY".equals(e.getCurrentStlCurCode()) && "C".equals(e.getDc())).map(FinStlBillsItems::getCurrentStlAmountNet)
+				.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			finStlBills.setAmountCrNet(amountCrCNYTax);
+			amountDrUSDTax = amountDrUSDTax.add(finStlBills.getFinStlBillsItemsList().stream()
+				.filter(e -> "USD".equals(e.getCurrentStlCurCode()) && "D".equals(e.getDc())).map(FinStlBillsItems::getCurrentStlAmountNet)
+				.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			finStlBills.setAmountDrUsdNet(amountDrUSDTax);
+			amountCrUSDTax = amountCrUSDTax.add(finStlBills.getFinStlBillsItemsList().stream()
+				.filter(e -> "USD".equals(e.getCurrentStlCurCode()) && "C".equals(e.getDc())).map(FinStlBillsItems::getCurrentStlAmountNet)
+				.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			finStlBills.setAmountCrUsdNet(amountCrUSDTax);
 			for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
 				item.setPid(finStlBills.getId());
+				//判断是否是本位币
+				if ("CNY".equals(item.getCurrentStlCurCode())) {
+					item.setCurrentStlAmountLoc(item.getCurrentStlAmount());
+				} else {
+					item.setCurrentStlAmountLoc(bCurrencyService.converterCny(item.getCurrentStlCurCode(), item.getCurrentStlAmount()));
+				}
+				// 去税金额 = 本次结算金额currentStlAmount - 税额amountTax
+				BigDecimal amountNet = new BigDecimal("0.00");
+				// 税额 = 本次结算金额currentStlAmount / 总金额 * 总税额amountTax
+				BigDecimal amountTax = new BigDecimal("0.00");
+				// 税额
+				amountTax = amountTax.add(item.getCurrentStlAmount().divide(item.getAmount(), 2, RoundingMode.HALF_UP)
+					.multiply(item.getAmountTax()));
+				amountNet = amountNet.add(item.getCurrentStlAmount().subtract(amountTax));
+				item.setCurrentStlAmountTax(amountTax);
+				item.setCurrentStlAmountNet(amountNet);
 				if (item.getId() == null) {
 					item.setCreateTime(new Date());
 					item.setCreateUser(AuthUtil.getUserId());
@@ -198,6 +255,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		}
 		FinStlBills detail = baseMapper.selectById(finStlBills.getId());
 		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
+			//对账明细状态修改  已对账
 			for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
 				item.setIsChecked(1);
 				item.setBillDate(finStlBills.getBillDate());
@@ -206,18 +264,21 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				item.setUpdateUserName(AuthUtil.getUserName());
 			}
 			finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
+			//通过对账明细里账单id查询具体账单数据
 			List<Long> accIds = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillId)
 				.filter(Objects::nonNull).collect(Collectors.toList());
 			List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
 				.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
 				.eq(FinAccBills::getIsDeleted, 0)
 				.in(FinAccBills::getId, accIds));
+			//修改账单中对账状态
 			for (FinAccBills item : finAccBillsList) {
 				item.setIsChecked(1);
 				item.setUpdateUser(AuthUtil.getUserId());
 				item.setUpdateTime(new Date());
 				item.setUpdateUserName(AuthUtil.getUserName());
 			}
+			//通过账单id查询具体费用中心数据
 			List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 				.in(FeeCenter::getAccBillId, accIds)
 				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
@@ -268,6 +329,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			finAccBillsService.saveOrUpdateBatch(finAccBillsList);
 		}
 		detail.setStatus(3);
+		detail.setIsChecked(1);
 		baseMapper.updateById(detail);
 		return R.data(detail);
 	}
@@ -278,35 +340,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				item.setCheckBillId(detail.getId());
 				item.setCheckBillNo(detail.getBillNo());
 				item.setCheckDate(detail.getBillDate());
-				if (item.getIsTax() == 1) {
-					if ("CNY".equals(item.getCurCode())) {
-						if ("D".equals(item.getDc())) {
-							item.setCheckAmount(item.getCheckAmount().add(detail.getAmountDr()));
-						} else {
-							item.setCheckAmount(item.getCheckAmount().add(detail.getAmountCr()));
-						}
-					} else {
-						if ("D".equals(item.getDc())) {
-							item.setCheckAmount(item.getCheckAmount().add(detail.getAmountDrUsd()));
-						} else {
-							item.setCheckAmount(item.getCheckAmount().add(detail.getAmountCrUsd()));
-						}
-					}
-				} else {
-					if ("CNY".equals(item.getCurCode())) {
-						if ("D".equals(item.getDc())) {
-							item.setCheckAmount(item.getCheckAmount().add(detail.getAmountDrNet()));
-						} else {
-							item.setCheckAmount(item.getCheckAmount().add(detail.getAmountCrNet()));
-						}
-					} else {
-						if ("D".equals(item.getDc())) {
-							item.setCheckAmount(item.getCheckAmount().add(detail.getAmountDrUsdNet()));
-						} else {
-							item.setCheckAmount(item.getCheckAmount().add(detail.getAmountCrUsdNet()));
-						}
-					}
-				}
+				item.setCheckAmount(item.getAmount());
 				item.setCheckStatus(1);
 				item.setCheckById(detail.getCreateUser());
 				item.setCheckByName(detail.getCreateUserName());
@@ -314,35 +348,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				item.setCheckBillId(0L);
 				item.setCheckBillNo("");
 				item.setCheckDate(null);
-				if (item.getIsTax() == 1) {
-					if ("CNY".equals(item.getCurCode())) {
-						if ("D".equals(item.getDc())) {
-							item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountDr()));
-						} else {
-							item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountCr()));
-						}
-					} else {
-						if ("D".equals(item.getDc())) {
-							item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountDrUsd()));
-						} else {
-							item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountCrUsd()));
-						}
-					}
-				} else {
-					if ("CNY".equals(item.getCurCode())) {
-						if ("D".equals(item.getDc())) {
-							item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountDrNet()));
-						} else {
-							item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountCrNet()));
-						}
-					} else {
-						if ("D".equals(item.getDc())) {
-							item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountDrUsdNet()));
-						} else {
-							item.setCheckAmount(item.getCheckAmount().subtract(detail.getAmountCrUsdNet()));
-						}
-					}
-				}
+				item.setCheckAmount(new BigDecimal("0.00"));
 				item.setCheckStatus(0);
 				item.setCheckById(0L);
 				item.setCheckByName("");
@@ -467,6 +473,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 
 		}
 		detail.setStatus(0);
+		detail.setIsChecked(2);
 		baseMapper.updateById(detail);
 		return R.data(detail);
 	}
@@ -500,26 +507,31 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			throw new RuntimeException("缺少必要参数");
 		}
 		FinStlBills detail = baseMapper.selectById(finStlBills.getId());
+		//收款直接结算,不用请核  付费需要请·核
 		if ("D".equals(detail.getDc())) {
 			if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
 				List<FinAccBills> finAccBillsList = new ArrayList<>();
+				List<FeeCenter> feeCenterList = new ArrayList<>();
+				//修改结算单明细状态
 				for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
 					item.setIsCleared(1);
 					item.setBillDate(finStlBills.getBillDate());
 					item.setUpdateUser(AuthUtil.getUserId());
 					item.setUpdateTime(new Date());
 					item.setUpdateUserName(AuthUtil.getUserName());
+					//通过账单id查询账单数据
+					/**-----------------------账单数据处理--------------------------- */
 					FinAccBills finAccBills = finAccBillsService.getById(item.getAccBillId());
 					if (finAccBills == null) {
 						throw new RuntimeException("未找到账单明细,操作失败");
 					}
 					boolean status = Boolean.FALSE;
 					if ("CNY".equals(item.getCurCode())) {
-						finAccBills.setStlAmountDr(finAccBills.getStlAmountDr().add(item.getCurrentStlAmount()));
-						finAccBills.setStlAmountDrLoc(finAccBills.getStlAmountDrLoc().add(finAccBills.getStlAmountDr()));
+						finAccBills.setStlAmountDr(finAccBills.getStlAmountDr().add(item.getCurrentStlAmount().add(item.getCurrentStlDiscount())));
+						finAccBills.setStlAmountDrLoc(finAccBills.getStlAmountDrLoc().add(finAccBills.getStlAmountDr().add(item.getCurrentStlDiscount())));
 					} else {
-						finAccBills.setStlAmountDrUsd(finAccBills.getStlAmountDrUsd().add(item.getCurrentStlAmount()));
-						BigDecimal cny = bCurrencyService.converterCny(item.getCurCode(), item.getCurrentStlAmount());
+						finAccBills.setStlAmountDrUsd(finAccBills.getStlAmountDrUsd().add(item.getCurrentStlAmount().add(item.getCurrentStlDiscount())));
+						BigDecimal cny = bCurrencyService.converterCny(item.getCurCode(), item.getCurrentStlAmount().add(item.getCurrentStlDiscount()));
 						finAccBills.setStlAmountDrLoc(finAccBills.getStlAmountDrLoc().add(cny));
 					}
 					if (finAccBills.getAmountDr().compareTo(finAccBills.getStlAmountDr()) == 0 &&
@@ -538,6 +550,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 					finAccBills.setUpdateTime(new Date());
 					finAccBills.setUpdateUserName(AuthUtil.getUserName());
 					finAccBillsList.add(finAccBills);
+					/**-----------------------账单数据处理--------------------------- */
+					/**-----------------------业务单据状态修改--------------------------- */
 					if (ObjectUtils.isNotNull(finAccBills.getBusinessBillDivideId()) && finAccBills.getBusinessBillDivideId() != 0) {
 						Bills bills = billsMapper.selectById(finAccBills.getBusinessBillDivideId());
 						if (bills != null) {
@@ -585,11 +599,35 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 							billsMapper.updateById(billsDetail);
 						}
 					}
+					/**-----------------------业务单据状态修改--------------------------- */
+					/**-----------------------费用中心数据处理--------------------------- */
+					FeeCenter feeCenter = feeCenterService.getById(item.getSourceId());
+					if (feeCenter == null) {
+						throw new RuntimeException(item.getAccBillNo() + "未找到费用明细");
+					}
+					feeCenter.setStlBillId(detail.getId());
+					feeCenter.setStlBillNo(detail.getBillNo());
+					feeCenter.setStlDate(detail.getBillDate());
+					feeCenter.setStlOrgAmount(bCurrencyService.converterCny(item.getCurCode(), item.getCurrentStlAmount()));
+					feeCenter.setStlCurCode(item.getCurrentStlCurCode());
+					feeCenter.setStlExrate(item.getExrate());
+					feeCenter.setStlExrateLoc(item.getCurrentStlExrate());
+					feeCenter.setStlAmount(item.getCurrentStlAmount());
+					feeCenter.setStlAmountLoc(item.getCurrentStlAmountLoc());
+					feeCenter.setStlStatus(1);
+					feeCenter.setStlById(detail.getCreateUser());
+					feeCenter.setStlByName(detail.getCreateUserName());
+					feeCenter.setStlTtlAmount(feeCenter.getStlTtlAmount().add(item.getCurrentStlAmount()));
+					feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
+					feeCenterList.add(feeCenter);
+					/**-----------------------费用中心数据处理--------------------------- */
 				}
+				feeCenterService.saveOrUpdateBatch(feeCenterList);
 				finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
 				finAccBillsService.saveOrUpdateBatch(finAccBillsList);
 			}
 			detail.setStatus(3);
+			detail.setIsCleared(1);
 		} else {
 			if (detail.getIsApproved() == 1) {
 				//审批数据
@@ -656,6 +694,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			} else {
 				if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
 					List<FinAccBills> finAccBillsList = new ArrayList<>();
+					List<FeeCenter> feeCenterList = new ArrayList<>();
 					for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
 						item.setIsCleared(1);
 						item.setBillDate(finStlBills.getBillDate());
@@ -738,11 +777,34 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 								billsMapper.updateById(billsDetail);
 							}
 						}
+						/**-----------------------费用中心数据处理--------------------------- */
+						FeeCenter feeCenter = feeCenterService.getById(item.getSourceId());
+						if (feeCenter == null) {
+							throw new RuntimeException(item.getAccBillNo() + "未找到费用明细");
+						}
+						feeCenter.setStlBillId(detail.getId());
+						feeCenter.setStlBillNo(detail.getBillNo());
+						feeCenter.setStlDate(detail.getBillDate());
+						feeCenter.setStlOrgAmount(bCurrencyService.converterCny(item.getCurCode(), item.getCurrentStlAmount()));
+						feeCenter.setStlCurCode(item.getCurrentStlCurCode());
+						feeCenter.setStlExrate(item.getExrate());
+						feeCenter.setStlExrateLoc(item.getCurrentStlExrate());
+						feeCenter.setStlAmount(item.getCurrentStlAmount());
+						feeCenter.setStlAmountLoc(item.getCurrentStlAmountLoc());
+						feeCenter.setStlStatus(1);
+						feeCenter.setStlById(detail.getCreateUser());
+						feeCenter.setStlByName(detail.getCreateUserName());
+						feeCenter.setStlTtlAmount(feeCenter.getStlTtlAmount().add(item.getCurrentStlAmount()));
+						feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
+						feeCenterList.add(feeCenter);
+						/**-----------------------费用中心数据处理--------------------------- */
 					}
+					feeCenterService.saveOrUpdateBatch(feeCenterList);
 					finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
 					finAccBillsService.saveOrUpdateBatch(finAccBillsList);
 				}
 				detail.setStatus(3);
+				detail.setIsCleared(1);
 			}
 		}
 		baseMapper.updateById(detail);
@@ -776,6 +838,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		if ("D".equals(detail.getDc())) {
 			if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
 				List<FinAccBills> finAccBillsList = new ArrayList<>();
+				List<FeeCenter> feeCenterList = new ArrayList<>();
 				for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
 					item.setIsCleared(0);
 					item.setBillDate(null);
@@ -864,11 +927,34 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 							billsMapper.updateById(billsDetail);
 						}
 					}
+					/**-----------------------费用中心数据处理--------------------------- */
+					FeeCenter feeCenter = feeCenterService.getById(item.getSourceId());
+					if (feeCenter == null) {
+						throw new RuntimeException(item.getAccBillNo() + "未找到费用明细");
+					}
+					feeCenter.setStlBillId(0L);
+					feeCenter.setStlBillNo("");
+					feeCenter.setStlDate(null);
+					feeCenter.setStlOrgAmount(new BigDecimal("0.00"));
+					feeCenter.setStlCurCode("");
+					feeCenter.setStlExrate(new BigDecimal("0.00"));
+					feeCenter.setStlExrateLoc(new BigDecimal("0.00"));
+					feeCenter.setStlAmount(new BigDecimal("0.00"));
+					feeCenter.setStlAmountLoc(new BigDecimal("0.00"));
+					feeCenter.setStlStatus(0);
+					feeCenter.setStlById(0L);
+					feeCenter.setStlByName("");
+					feeCenter.setStlTtlAmount(feeCenter.getStlTtlAmount().subtract(item.getCurrentStlAmount()));
+					feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
+					feeCenterList.add(feeCenter);
+					/**-----------------------费用中心数据处理--------------------------- */
 				}
+				feeCenterService.saveOrUpdateBatch(feeCenterList);
 				finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
 				finAccBillsService.saveOrUpdateBatch(finAccBillsList);
 			}
 			detail.setIsCleared(0);
+			detail.setIsCleared(2);
 		} else {
 			if (detail.getIsApproved() == 1) {
 				if (detail.getStatus() > 1) {
@@ -882,6 +968,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			} else {
 				if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
 					List<FinAccBills> finAccBillsList = new ArrayList<>();
+					List<FeeCenter> feeCenterList = new ArrayList<>();
 					for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
 						item.setIsCleared(0);
 						item.setBillDate(null);
@@ -969,11 +1056,34 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 								billsMapper.updateById(billsDetail);
 							}
 						}
+						/**-----------------------费用中心数据处理--------------------------- */
+						FeeCenter feeCenter = feeCenterService.getById(item.getSourceId());
+						if (feeCenter == null) {
+							throw new RuntimeException(item.getAccBillNo() + "未找到费用明细");
+						}
+						feeCenter.setStlBillId(0L);
+						feeCenter.setStlBillNo("");
+						feeCenter.setStlDate(null);
+						feeCenter.setStlOrgAmount(new BigDecimal("0.00"));
+						feeCenter.setStlCurCode("");
+						feeCenter.setStlExrate(new BigDecimal("0.00"));
+						feeCenter.setStlExrateLoc(new BigDecimal("0.00"));
+						feeCenter.setStlAmount(new BigDecimal("0.00"));
+						feeCenter.setStlAmountLoc(new BigDecimal("0.00"));
+						feeCenter.setStlStatus(0);
+						feeCenter.setStlById(0L);
+						feeCenter.setStlByName("");
+						feeCenter.setStlTtlAmount(feeCenter.getStlTtlAmount().subtract(item.getCurrentStlAmount()));
+						feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
+						feeCenterList.add(feeCenter);
+						/**-----------------------费用中心数据处理--------------------------- */
 					}
+					feeCenterService.saveOrUpdateBatch(feeCenterList);
 					finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
 					finAccBillsService.saveOrUpdateBatch(finAccBillsList);
 				}
 				detail.setIsCleared(0);
+				detail.setIsCleared(2);
 			}
 		}
 		baseMapper.updateById(detail);
@@ -991,6 +1101,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			.eq(FinStlBillsItems::getIsDeleted, 0)
 			.eq(FinStlBillsItems::getPid, bills.getId()));
 		List<FinAccBills> finAccBillsList = new ArrayList<>();
+		List<FeeCenter> feeCenterList = new ArrayList<>();
 		for (FinStlBillsItems item : finStlBillsItemsList) {
 			item.setIsCleared(1);
 			item.setBillDate(bills.getBillDate());
@@ -1073,7 +1184,29 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 					billsMapper.updateById(billsDetail);
 				}
 			}
+			/**-----------------------费用中心数据处理--------------------------- */
+			FeeCenter feeCenter = feeCenterService.getById(item.getSourceId());
+			if (feeCenter == null) {
+				throw new RuntimeException(item.getAccBillNo() + "未找到费用明细");
+			}
+			feeCenter.setStlBillId(bills.getId());
+			feeCenter.setStlBillNo(bills.getBillNo());
+			feeCenter.setStlDate(bills.getBillDate());
+			feeCenter.setStlOrgAmount(bCurrencyService.converterCny(item.getCurCode(), item.getCurrentStlAmount()));
+			feeCenter.setStlCurCode(item.getCurrentStlCurCode());
+			feeCenter.setStlExrate(item.getExrate());
+			feeCenter.setStlExrateLoc(item.getCurrentStlExrate());
+			feeCenter.setStlAmount(item.getCurrentStlAmount());
+			feeCenter.setStlAmountLoc(item.getCurrentStlAmountLoc());
+			feeCenter.setStlStatus(1);
+			feeCenter.setStlById(bills.getCreateUser());
+			feeCenter.setStlByName(bills.getCreateUserName());
+			feeCenter.setStlTtlAmount(feeCenter.getStlTtlAmount().add(item.getCurrentStlAmount()));
+			feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
+			feeCenterList.add(feeCenter);
+			/**-----------------------费用中心数据处理--------------------------- */
 		}
+		feeCenterService.saveOrUpdateBatch(feeCenterList);
 		finStlBillsItemsService.saveOrUpdateBatch(finStlBillsItemsList);
 		finAccBillsService.saveOrUpdateBatch(finAccBillsList);
 		bills.setIsCleared(1);
@@ -1124,6 +1257,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			}
 			finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
 		}
+		detail.setIsSignfor(1);
+		baseMapper.updateById(detail);
 		return R.data(detail);
 	}
 
@@ -1145,6 +1280,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			}
 			finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
 		}
+		detail.setIsSignfor(2);
+		baseMapper.updateById(detail);
 		return R.data(detail);
 	}