Explorar o código

2023年11月10日15:07:49

纪新园 %!s(int64=2) %!d(string=hai) anos
pai
achega
d1a1e3632e
Modificáronse 30 ficheiros con 3044 adicións e 48 borrados
  1. 2 2
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/ContainersBills.java
  2. 41 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/FinAccBills.java
  3. 34 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/dto/FinStlBillsDTO.java
  4. 34 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/dto/FinStlBillsItemsDTO.java
  5. 34 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/dto/FinStlBillsVoucherItemsDTO.java
  6. 429 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/entity/FinStlBills.java
  7. 600 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/entity/FinStlBillsItems.java
  8. 236 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/entity/FinStlBillsVoucherItems.java
  9. 36 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/vo/FinStlBillsItemsVO.java
  10. 36 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/vo/FinStlBillsVO.java
  11. 36 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/vo/FinStlBillsVoucherItemsVO.java
  12. 20 10
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java
  13. 8 9
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/ContainersServiceImpl.java
  14. 155 9
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FinAccBillsController.java
  15. 33 18
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FinAccBillsServiceImpl.java
  16. 146 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/controller/FinStlBillsController.java
  17. 126 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/controller/FinStlBillsItemsController.java
  18. 126 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/controller/FinStlBillsVoucherItemsController.java
  19. 42 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/mapper/FinStlBillsItemsMapper.java
  20. 123 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/mapper/FinStlBillsItemsMapper.xml
  21. 42 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/mapper/FinStlBillsMapper.java
  22. 86 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/mapper/FinStlBillsMapper.xml
  23. 42 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/mapper/FinStlBillsVoucherItemsMapper.java
  24. 51 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/mapper/FinStlBillsVoucherItemsMapper.xml
  25. 41 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/IFinStlBillsItemsService.java
  26. 78 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/IFinStlBillsService.java
  27. 41 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/IFinStlBillsVoucherItemsService.java
  28. 41 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsItemsServiceImpl.java
  29. 284 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java
  30. 41 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsVoucherItemsServiceImpl.java

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

@@ -169,8 +169,8 @@ public class ContainersBills implements Serializable {
 	 * 开船日期
 	 */
 	@ApiModelProperty(value = "开船日期")
-	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
-	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	private Date etd;
 	/**
 	 * 到港日期

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

@@ -117,6 +117,12 @@ public class FinAccBills implements Serializable {
 	 */
 	@ApiModelProperty(value = "财务日期")
 	private Date accountDate;
+
+	/**
+	 * 财务日期
+	 */
+	@TableField(exist = false)
+	private List<String> accountDateList;
 	/**
 	 * 账单关键字 业务表的id+结算单位+收付  +核算要素作为关键字
 	 */
@@ -143,6 +149,11 @@ public class FinAccBills implements Serializable {
 	@ApiModelProperty(value = "业务单据日期(主单,直单)")
 	private Date businessDate;
 	/**
+	 * 业务单据日期(主单,直单)
+	 */
+	@TableField(exist = false)
+	private List<String> businessDateList;
+	/**
 	 * 业务 id(分单)
 	 */
 	@ApiModelProperty(value = "业务 id(分单)")
@@ -158,6 +169,11 @@ public class FinAccBills implements Serializable {
 	@ApiModelProperty(value = "业务单据日期(分单)")
 	private Date businessDivideDate;
 	/**
+	 * 业务单据日期(分单)
+	 */
+	@TableField(exist = false)
+	private List<String> businessDivideDateList;
+	/**
 	 * 合同号
 	 */
 	@ApiModelProperty(value = "合同号")
@@ -269,11 +285,21 @@ public class FinAccBills implements Serializable {
 	@ApiModelProperty(value = "开船日期")
 	private Date etd;
 	/**
+	 * 开船日期
+	 */
+	@TableField(exist = false)
+	private List<String> etdList;
+	/**
 	 * 到港日期
 	 */
 	@ApiModelProperty(value = "到港日期")
 	private Date eta;
 	/**
+	 * 到港日期
+	 */
+	@TableField(exist = false)
+	private List<String> etaList;
+	/**
 	 * 装货港 id
 	 */
 	@ApiModelProperty(value = "装货港 id")
@@ -369,6 +395,11 @@ public class FinAccBills implements Serializable {
 	@ApiModelProperty(value = "结算日期")
 	private Date stlDate;
 	/**
+	 * 结算日期
+	 */
+	@TableField(exist = false)
+	private List<String> stlDateList;
+	/**
 	 * 已结算本位币应收(CNY)
 	 */
 	@ApiModelProperty(value = "已结算本位币应收(CNY)")
@@ -419,6 +450,11 @@ public class FinAccBills implements Serializable {
 	@ApiModelProperty(value = "发票日期")
 	private Date invoiceDate;
 	/**
+	 * 发票日期
+	 */
+	@TableField(exist = false)
+	private List<String> invoiceDateList;
+	/**
 	 * 凭证 Id
 	 */
 	@ApiModelProperty(value = "凭证 Id")
@@ -439,6 +475,11 @@ public class FinAccBills implements Serializable {
 	@ApiModelProperty(value = "凭证日期")
 	private Date voucherDate;
 	/**
+	 * 凭证日期
+	 */
+	@TableField(exist = false)
+	private List<String> voucherDateList;
+	/**
 	 * 是否对账(0 未对账 1 已对账)
 	 */
 	@ApiModelProperty(value = "是否对账(0 未对账 1 已对账)")

+ 34 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/dto/FinStlBillsDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      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.finance.stl.dto;
+
+import org.springblade.los.finance.stl.entity.FinStlBills;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 业务-财务对账单和结算数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FinStlBillsDTO extends FinStlBills {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/dto/FinStlBillsItemsDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      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.finance.stl.dto;
+
+import org.springblade.los.finance.stl.entity.FinStlBillsItems;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 业务-财务对账单和结算单明细数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FinStlBillsItemsDTO extends FinStlBillsItems {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/dto/FinStlBillsVoucherItemsDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      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.finance.stl.dto;
+
+import org.springblade.los.finance.stl.entity.FinStlBillsVoucherItems;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 业务-财务结算单凭证明细数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FinStlBillsVoucherItemsDTO extends FinStlBillsVoucherItems {
+	private static final long serialVersionUID = 1L;
+
+}

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

@@ -0,0 +1,429 @@
+/*
+ *      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.finance.stl.entity;
+
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 业务-财务对账单和结算实体类
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+@Data
+@TableName("los_fin_stl_bills")
+@ApiModel(value = "FinStlBills对象", description = "业务-财务对账单和结算")
+public class FinStlBills implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@ApiModelProperty(value = "主键")
+	private Long id;
+	/**
+	 * 分公司 Id
+	 */
+	@ApiModelProperty(value = "分公司 Id")
+	private String branchId;
+	/**
+	 * 创建人 Id
+	 */
+	@ApiModelProperty(value = "创建人 Id")
+	private Long createUser;
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private String createUserName;
+	/**
+	 * 创建部门 Id
+	 */
+	@ApiModelProperty(value = "创建部门 Id")
+	private String createDept;
+	/**
+	 * 创建部门
+	 */
+	@ApiModelProperty(value = "创建部门")
+	private String createDeptName;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 * 修改人 Id
+	 */
+	@ApiModelProperty(value = "修改人 Id")
+	private Long updateUser;
+	/**
+	 * 修改人
+	 */
+	@ApiModelProperty(value = "修改人")
+	private String updateUserName;
+	/**
+	 * 修改时间
+	 */
+	@ApiModelProperty(value = "修改时间")
+	private Date updateTime;
+	/**
+	 * 业务类型,CHK=对账单 STL=结算单
+	 */
+	@ApiModelProperty(value = "业务类型,CHK=对账单 STL=结算单")
+	private String businessType;
+	/**
+	 * 单据编号
+	 */
+	@ApiModelProperty(value = "单据编号")
+	private String billNo;
+	/**
+	 * 对账/结算日期
+	 */
+	@ApiModelProperty(value = "对账/结算日期")
+	private Date billDate;
+	/**
+	 * 客户 id
+	 */
+	@ApiModelProperty(value = "客户 id")
+	private Long corpId;
+	/**
+	 * 客户中文名称
+	 */
+	@ApiModelProperty(value = "客户中文名称")
+	private String corpCnName;
+	/**
+	 * 客户英文名称
+	 */
+	@ApiModelProperty(value = "客户英文名称")
+	private String corpEnName;
+	/**
+	 * 客户是否已签约
+	 */
+	@ApiModelProperty(value = "客户是否已签约")
+	private Integer corpIsSigned;
+	/**
+	 * 客户约号
+	 */
+	@ApiModelProperty(value = "客户约号")
+	private String corpArgreementNo;
+	/**
+	 * 客户账期备注
+	 */
+	@ApiModelProperty(value = "客户账期备注")
+	private String corpAccRemarks;
+	/**
+	 * 业务类型,用于检索费用
+	 */
+	@ApiModelProperty(value = "业务类型,用于检索费用")
+	private String businessTypes;
+	/**
+	 * 业务单据编号,用于检索费用
+	 */
+	@ApiModelProperty(value = "业务单据编号,用于检索费用")
+	private String businessNo;
+	/**
+	 * 账单编号,用于检索费用
+	 */
+	@ApiModelProperty(value = "账单编号,用于检索费用")
+	private String accountNo;
+	/**
+	 * 对账单编号,用于检索费用
+	 */
+	@ApiModelProperty(value = "对账单编号,用于检索费用")
+	private String checkNo;
+	/**
+	 * 业务所在部门 Id,用于检索费用
+	 */
+	@ApiModelProperty(value = "业务所在部门 Id,用于检索费用")
+	private Long deptId;
+	/**
+	 * 业务所在部门
+	 */
+	@ApiModelProperty(value = "业务所在部门")
+	private String deptName;
+	/**
+	 * 业务操作 Id,用于检索费用
+	 */
+	@ApiModelProperty(value = "业务操作 Id,用于检索费用")
+	private Long operatorId;
+	/**
+	 * 业务操作
+	 */
+	@ApiModelProperty(value = "业务操作")
+	private String operatorName;
+	/**
+	 * 业务员 Id,用于检索费用
+	 */
+	@ApiModelProperty(value = "业务员 Id,用于检索费用")
+	private Long salesId;
+	/**
+	 * 业务员
+	 */
+	@ApiModelProperty(value = "业务员")
+	private String salesName;
+	/**
+	 * 费用收付 empty=ALL D-Debit C=Credit
+	 */
+	@ApiModelProperty(value = "费用收付 empty=ALL D-Debit C=Credit")
+	private String dc;
+	/**
+	 * 币种 empty=ALL
+	 */
+	@ApiModelProperty(value = "币种 empty=ALL")
+	private String curCode;
+	/**
+	 * 船名 id
+	 */
+	@ApiModelProperty(value = "船名 id")
+	private Long vesselId;
+	/**
+	 * 中文船名
+	 */
+	@ApiModelProperty(value = "中文船名")
+	private String vesselCnName;
+	/**
+	 * 英文船名
+	 */
+	@ApiModelProperty(value = "英文船名")
+	private String vesselEnName;
+	/**
+	 * 航次
+	 */
+	@ApiModelProperty(value = "航次")
+	private String voyageNo;
+	/**
+	 * MB/L NO
+	 */
+	@ApiModelProperty(value = "MB/L NO")
+	private String mblno;
+	/**
+	 * HB/L NO
+	 */
+	@ApiModelProperty(value = "HB/L NO")
+	private String hblno;
+	/**
+	 * 财务开始日期
+	 */
+	@ApiModelProperty(value = "财务开始日期")
+	private Date accountDateFrom;
+	/**
+	 * 财务结束日期
+	 */
+	@ApiModelProperty(value = "财务结束日期")
+	private Date accountDateTo;
+	/**
+	 * 审核开始日期
+	 */
+	@ApiModelProperty(value = "审核开始日期")
+	private LocalDateTime auditDateFrom;
+	/**
+	 * 审核结束日期
+	 */
+	@ApiModelProperty(value = "审核结束日期")
+	private Date auditDateTo;
+	/**
+	 * 发票号
+	 */
+	@ApiModelProperty(value = "发票号")
+	private String invoiceNo;
+	/**
+	 * 检验检疫 NO
+	 */
+	@ApiModelProperty(value = "检验检疫 NO")
+	private String iqNo;
+	/**
+	 * 费用 Id,用于查询费用
+	 */
+	@ApiModelProperty(value = "费用 Id,用于查询费用")
+	private Long feeId;
+	/**
+	 * 费用中文名称,用于查询费用
+	 */
+	@ApiModelProperty(value = "费用中文名称,用于查询费用")
+	private String feeCode;
+	/**
+	 * 费用中文名称,用于查询费用
+	 */
+	@ApiModelProperty(value = "费用中文名称,用于查询费用")
+	private String feeCnName;
+	/**
+	 * 费用英文名称,用于查询费用
+	 */
+	@ApiModelProperty(value = "费用英文名称,用于查询费用")
+	private String feeEnName;
+	/**
+	 * 是否审核,用于查询费用, 0 全部, 1 是, 2 否
+	 */
+	@ApiModelProperty(value = "是否审核,用于查询费用, 0 全部, 1 是, 2 否")
+	private Integer isApproved;
+	/**
+	 * 是否签收,用于查询费用, 0 全部, 1 是, 2 否
+	 */
+	@ApiModelProperty(value = "是否签收,用于查询费用, 0 全部, 1 是, 2 否")
+	private Integer isSignfor;
+	/**
+	 * 是否对账,用于查询费用, 0 全部, 1 是, 2 否
+	 */
+	@ApiModelProperty(value = "是否对账,用于查询费用, 0 全部, 1 是, 2 否")
+	private Integer isChecked;
+	/**
+	 * 是否销账(结算),用于查询费用(0 全部, 1 是, 2 否)
+	 */
+	@ApiModelProperty(value = "是否销账(结算),用于查询费用(0 全部, 1 是, 2 否)")
+	private Integer isCleared;
+	/**
+	 * 是否开发票,用于查询费用, 0 全部, 1 待开 2 已开 2 不开
+	 */
+	@ApiModelProperty(value = "是否开发票,用于查询费用, 0 全部, 1 待开 2 已开 2 不开")
+	private Integer isInvoice;
+	/**
+	 * 是否含税价计算, 0 否, 1 是
+	 */
+	@ApiModelProperty(value = "是否含税价计算, 0 否, 1 是")
+	private Integer isTax;
+	/**
+	 * 凭证类型,记 转
+	 */
+	@ApiModelProperty(value = "凭证类型,记 转")
+	private String voucherType;
+	/**
+	 * 凭证号
+	 */
+	@ApiModelProperty(value = "凭证号")
+	private String voucherNo;
+	/**
+	 * 凭证日期
+	 */
+	@ApiModelProperty(value = "凭证日期")
+	private Date voucherDate;
+	/**
+	 * 本位币应收(CNY)
+	 */
+	@ApiModelProperty(value = "本位币应收(CNY)")
+	private BigDecimal amountDr;
+	/**
+	 * 本位币应付(CNY)
+	 */
+	@ApiModelProperty(value = "本位币应付(CNY)")
+	private BigDecimal amountCr;
+	/**
+	 * 综合 USD 应收(USD) - 非 USD 外币转换为 USD
+	 */
+	@ApiModelProperty(value = "综合 USD 应收(USD) - 非 USD 外币转换为 USD")
+	private BigDecimal amountDrUsd;
+	/**
+	 * 综合 USD 应付(USD) - 非 USD 外币转换为 USD
+	 */
+	@ApiModelProperty(value = "综合 USD 应付(USD) - 非 USD 外币转换为 USD")
+	private BigDecimal amountCrUsd;
+	/**
+	 * 合计本位币应收(CNY )
+	 */
+	@ApiModelProperty(value = "合计本位币应收(CNY )")
+	private BigDecimal amountDrLoc;
+	/**
+	 * 合计本位币应付(CNY)
+	 */
+	@ApiModelProperty(value = "合计本位币应付(CNY)")
+	private BigDecimal amountCrLoc;
+	/**
+	 * 本位币税后应收(CNY)
+	 */
+	@ApiModelProperty(value = "本位币税后应收(CNY)")
+	private BigDecimal amountDrNet;
+	/**
+	 * 本位币税后应付(CNY)
+	 */
+	@ApiModelProperty(value = "本位币税后应付(CNY)")
+	private BigDecimal amountCrNet;
+	/**
+	 * 综合 USD 税后应收(USD) - 非 USD 外币转换为 USD
+	 */
+	@ApiModelProperty(value = "综合 USD 税后应收(USD) - 非 USD 外币转换为 USD")
+	private BigDecimal amountDrUsdNet;
+	/**
+	 * 综合 USD 税后应付(USD) - 非 USD 外币转换为 USD
+	 */
+	@ApiModelProperty(value = "综合 USD 税后应付(USD) - 非 USD 外币转换为 USD")
+	private BigDecimal amountCrUsdNet;
+	/**
+	 * 合计本位币税后应收(CNY )
+	 */
+	@ApiModelProperty(value = "合计本位币税后应收(CNY )")
+	private BigDecimal amountDrLocNet;
+	/**
+	 * 合计本位币税后应付(CNY)
+	 */
+	@ApiModelProperty(value = "合计本位币税后应付(CNY)")
+	private BigDecimal amountCrLocNet;
+	/**
+	 * 版本
+	 */
+	@ApiModelProperty(value = "版本")
+	private String version;
+	/**
+	 * 状态(0 正常 1停用)
+	 */
+	@ApiModelProperty(value = "状态(0 正常 1停用)")
+	private Integer status;
+	/**
+	 * 是否已删除(0 否 1是)
+	 */
+	@ApiModelProperty(value = "是否已删除(0 否 1是)")
+	@TableLogic(value = "0", delval = "1")
+	private Integer isDeleted;
+	/**
+	 * 备注
+	 */
+	@ApiModelProperty(value = "备注")
+	private String remarks;
+
+	/**
+	 * 租户
+	 */
+	@ApiModelProperty(value = "租户")
+	private String tenantId;
+
+	/**
+	 * 财务对账单和结算单明细
+	 */
+	@TableField(exist = false)
+	private List<FinStlBillsItems> finStlBillsItemsList;
+
+	/**
+	 * 财务结算单凭证明细
+	 */
+	@TableField(exist = false)
+	private List<FinStlBillsVoucherItems> finStlBillsVoucherItemsList;
+
+
+}

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

@@ -0,0 +1,600 @@
+/*
+ *      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.finance.stl.entity;
+
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 业务-财务对账单和结算单明细实体类
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+@Data
+@TableName("los_fin_stl_bills_items")
+@ApiModel(value = "FinStlBillsItems对象", description = "业务-财务对账单和结算单明细")
+public class FinStlBillsItems implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@ApiModelProperty(value = "主键")
+	private Long id;
+	/**
+	 * 分公司 Id
+	 */
+	@ApiModelProperty(value = "分公司 Id")
+	private String branchId;
+	/**
+	 * 创建人 Id
+	 */
+	@ApiModelProperty(value = "创建人 Id")
+	private Long createUser;
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private String createUserName;
+	/**
+	 * 创建部门 Id
+	 */
+	@ApiModelProperty(value = "创建部门 Id")
+	private String createDept;
+	/**
+	 * 创建部门
+	 */
+	@ApiModelProperty(value = "创建部门")
+	private String createDeptName;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 * 修改人 Id
+	 */
+	@ApiModelProperty(value = "修改人 Id")
+	private Long updateUser;
+	/**
+	 * 修改人
+	 */
+	@ApiModelProperty(value = "修改人")
+	private String updateUserName;
+	/**
+	 * 修改时间
+	 */
+	@ApiModelProperty(value = "修改时间")
+	private Date updateTime;
+	/**
+	 * 对账/结算主表id
+	 */
+	@ApiModelProperty(value = "对账/结算主表id")
+	private Long pid;
+	/**
+	 * 行号 基于pid 1...
+	 */
+	@ApiModelProperty(value = "行号 基于pid 1...")
+	private Integer lineNo;
+	/**
+	 * 单据业务类型
+	 */
+	@ApiModelProperty(value = "单据业务类型")
+	private String pType;
+	/**
+	 * 业务类型
+	 */
+	@ApiModelProperty(value = "业务类型")
+	private String businessType;
+	/**
+	 * 单据类型, DD=直单(默认) MM=主单 MH=主分单 HH=从分单
+	 */
+	@ApiModelProperty(value = "单据类型, DD=直单(默认) MM=主单 MH=主分单 HH=从分单")
+	private String billType;
+	/**
+	 * 单据编号
+	 */
+	@ApiModelProperty(value = "单据编号")
+	private String billNo;
+	/**
+	 * 对账/结算日期
+	 */
+	@ApiModelProperty(value = "对账/结算日期")
+	private Date billDate;
+	/**
+	 * 业务财务日期
+	 */
+	@ApiModelProperty(value = "业务财务日期")
+	private Date accountDate;
+	/**
+	 * 财务年
+	 */
+	@ApiModelProperty(value = "财务年")
+	private Integer accountYear;
+	/**
+	 * 财务月
+	 */
+	@ApiModelProperty(value = "财务月")
+	private Integer accountMonth;
+	/**
+	 * 财务日
+	 */
+	@ApiModelProperty(value = "财务日")
+	private Integer accountDay;
+	/**
+	 * 费用中心 id
+	 */
+	@ApiModelProperty(value = "费用中心 id")
+	private Long sourceId;
+	/**
+	 * 客户 id
+	 */
+	@ApiModelProperty(value = "客户 id")
+	private Long corpId;
+	/**
+	 * 客户中文名称
+	 */
+	@ApiModelProperty(value = "客户中文名称")
+	private String corpCnName;
+	/**
+	 * 客户英文名称
+	 */
+	@ApiModelProperty(value = "客户英文名称")
+	private String corpEnName;
+	/**
+	 * 客户是否已签约
+	 */
+	@ApiModelProperty(value = "客户是否已签约")
+	private Integer corpIsSigned;
+	/**
+	 * 客户约号
+	 */
+	@ApiModelProperty(value = "客户约号")
+	private String corpArgreementNo;
+	/**
+	 * 客户账期备注
+	 */
+	@ApiModelProperty(value = "客户账期备注")
+	private String corpAccRemarks;
+	/**
+	 * 业务所在部门 Id,用于检索费用
+	 */
+	@ApiModelProperty(value = "业务所在部门 Id,用于检索费用")
+	private Long deptId;
+	/**
+	 * 业务所在部门
+	 */
+	@ApiModelProperty(value = "业务所在部门")
+	private String deptName;
+	/**
+	 * 业务操作 Id,用于检索费用
+	 */
+	@ApiModelProperty(value = "业务操作 Id,用于检索费用")
+	private Long operatorId;
+	/**
+	 * 业务操作
+	 */
+	@ApiModelProperty(value = "业务操作")
+	private String operatorName;
+	/**
+	 * 业务来源
+	 */
+	@ApiModelProperty(value = "业务来源")
+	private String srcType;
+	/**
+	 * 来源 id
+	 */
+	@ApiModelProperty(value = "来源 id")
+	private Long srcId;
+	/**
+	 * 来源中文
+	 */
+	@ApiModelProperty(value = "来源中文")
+	private String srcCnName;
+	/**
+	 * 来源英文
+	 */
+	@ApiModelProperty(value = "来源英文")
+	private String srcEnName;
+	/**
+	 * 航线 id
+	 */
+	@ApiModelProperty(value = "航线 id")
+	private Long lineId;
+	/**
+	 * 航线中文名称
+	 */
+	@ApiModelProperty(value = "航线中文名称")
+	private String lineCnName;
+	/**
+	 * 航线英文名称
+	 */
+	@ApiModelProperty(value = "航线英文名称")
+	private String lineEnName;
+	/**
+	 * 船名 id
+	 */
+	@ApiModelProperty(value = "船名 id")
+	private Long vesselId;
+	/**
+	 * 中文船名
+	 */
+	@ApiModelProperty(value = "中文船名")
+	private String vesselCnName;
+	/**
+	 * 英文船名
+	 */
+	@ApiModelProperty(value = "英文船名")
+	private String vesselEnName;
+	/**
+	 * 航次
+	 */
+	@ApiModelProperty(value = "航次")
+	private String voyageNo;
+	/**
+	 * MB/L NO
+	 */
+	@ApiModelProperty(value = "MB/L NO")
+	private String mblno;
+	/**
+	 * HB/L NO
+	 */
+	@ApiModelProperty(value = "HB/L NO")
+	private String hblno;
+	/**
+	 * 检验检疫 NO
+	 */
+	@ApiModelProperty(value = "检验检疫 NO")
+	private String iqNo;
+	/**
+	 * 开船日期
+	 */
+	@ApiModelProperty(value = "开船日期")
+	private Date etd;
+	/**
+	 * 到港日期
+	 */
+	@ApiModelProperty(value = "到港日期")
+	private Date eta;
+	/**
+	 * 装货港 id
+	 */
+	@ApiModelProperty(value = "装货港 id")
+	private Long polId;
+	/**
+	 * 装货港代码
+	 */
+	@ApiModelProperty(value = "装货港代码")
+	private String polCode;
+	/**
+	 * 装货港英文名称
+	 */
+	@ApiModelProperty(value = "装货港英文名称")
+	private String polCnName;
+	/**
+	 * 装货港英文名称
+	 */
+	@ApiModelProperty(value = "装货港英文名称")
+	private String polEnName;
+	/**
+	 * 卸货港 id
+	 */
+	@ApiModelProperty(value = "卸货港 id")
+	private Long podId;
+	/**
+	 * 卸货港代码
+	 */
+	@ApiModelProperty(value = "卸货港代码")
+	private String podCode;
+	/**
+	 * 卸货港中文名称
+	 */
+	@ApiModelProperty(value = "卸货港中文名称")
+	private String podCnName;
+	/**
+	 * 卸货港英文名称
+	 */
+	@ApiModelProperty(value = "卸货港英文名称")
+	private String podEnName;
+	/**
+	 * 箱号
+	 */
+	@ApiModelProperty(value = "箱号")
+	private String cntrNo;
+	/**
+	 * 商品包装件数英文,
+	 */
+	@ApiModelProperty(value = "商品包装件数英文, ")
+	private String quantityPackingDescr;
+	/**
+	 * 集装箱箱型箱数英文, 1*20GP,2*40HC
+	 */
+	@ApiModelProperty(value = "集装箱箱型箱数英文, 1*20GP,2*40HC")
+	private String quantityCntrTypesDescr;
+	/**
+	 * 费用 Id
+	 */
+	@ApiModelProperty(value = "费用 Id")
+	private Long feeId;
+	/**
+	 * 费用中文名称
+	 */
+	@ApiModelProperty(value = "费用中文名称")
+	private String feeCode;
+	/**
+	 * 费用中文名称
+	 */
+	@ApiModelProperty(value = "费用中文名称")
+	private String feeCnName;
+	/**
+	 * 费用英文名称
+	 */
+	@ApiModelProperty(value = "费用英文名称")
+	private String feeEnName;
+	/**
+	 * 付款方式
+	 */
+	@ApiModelProperty(value = "付款方式")
+	private String paymode;
+	/**
+	 * 账单 Id
+	 */
+	@ApiModelProperty(value = "账单 Id")
+	private Long accBillId;
+	/**
+	 * 账单编号
+	 */
+	@ApiModelProperty(value = "账单编号")
+	private String accBillNo;
+	/**
+	 * 账单日期
+	 */
+	@ApiModelProperty(value = "账单日期")
+	private Date accDate;
+	/**
+	 * 费用收付 D-Debit C=Credit
+	 */
+	@ApiModelProperty(value = "费用收付 D-Debit C=Credit")
+	private String dc;
+	/**
+	 * 数量
+	 */
+	@ApiModelProperty(value = "数量")
+	private BigDecimal quantity;
+	/**
+	 * 单位
+	 */
+	@ApiModelProperty(value = "单位")
+	private String unitNo;
+	/**
+	 * 单价
+	 */
+	@ApiModelProperty(value = "单价")
+	private BigDecimal price;
+	/**
+	 * 原币种
+	 */
+	@ApiModelProperty(value = "原币种")
+	private String curCode;
+	/**
+	 * 原汇率,外币转为本币的汇率
+	 */
+	@ApiModelProperty(value = "原汇率,外币转为本币的汇率")
+	private BigDecimal exrate;
+	/**
+	 * 是否含税(0 不含税 1 含税)
+	 */
+	@ApiModelProperty(value = "是否含税(0 不含税 1 含税)")
+	private Integer isTax;
+	/**
+	 * 税种
+	 */
+	@ApiModelProperty(value = "税种")
+	private String taxType;
+	/**
+	 * 税率 %,即 3% 的税率,值为 3.00
+	 */
+	@ApiModelProperty(value = "税率 %,即 3% 的税率,值为 3.00")
+	private BigDecimal taxRate;
+	/**
+	 * 附加税率 %,即 3% 的税率,值为 3.00
+	 */
+	@ApiModelProperty(value = "附加税率 %,即 3% 的税率,值为 3.00")
+	private BigDecimal surchargeRate;
+	/**
+	 * 折扣金额
+	 */
+	@ApiModelProperty(value = "折扣金额")
+	private BigDecimal amountDiscount;
+	/**
+	 * 税额
+	 */
+	@ApiModelProperty(value = "税额")
+	private BigDecimal amountTax;
+	/**
+	 * 去税金额
+	 */
+	@ApiModelProperty(value = "去税金额")
+	private BigDecimal amountNet;
+	/**
+	 * 金额,amount_tax + amount_net - amount_discount
+	 */
+	@ApiModelProperty(value = "金额,amount_tax + amount_net - amount_discount")
+	private BigDecimal amount;
+	/**
+	 * 本币税额
+	 */
+	@ApiModelProperty(value = "本币税额")
+	private BigDecimal amountTaxLoc;
+	/**
+	 * 本币去税金额
+	 */
+	@ApiModelProperty(value = "本币去税金额")
+	private BigDecimal amountNetLoc;
+	/**
+	 * 本币折扣金额
+	 */
+	@ApiModelProperty(value = "本币折扣金额")
+	private BigDecimal amountDiscountLoc;
+	/**
+	 * 本币金额,外币转为本币的金额
+	 */
+	@ApiModelProperty(value = "本币金额,外币转为本币的金额")
+	private BigDecimal amountLoc;
+	/**
+	 * 原币累计已结算金额
+	 */
+	@ApiModelProperty(value = "原币累计已结算金额")
+	private BigDecimal stlTtlAmount;
+	/**
+	 * 原币未结算金额
+	 */
+	@ApiModelProperty(value = "原币未结算金额")
+	private BigDecimal unsettledAmount;
+	/**
+	 * 本次结算币种
+	 */
+	@ApiModelProperty(value = "本次结算币种")
+	private String currentStlCurCode;
+	/**
+	 * 本次结算汇率,外币转为本币的汇率
+	 */
+	@ApiModelProperty(value = "本次结算汇率,外币转为本币的汇率")
+	private BigDecimal currentStlExrate;
+	/**
+	 * 本次结算税率 %,即 3% 的税率,值为 3.00
+	 */
+	@ApiModelProperty(value = "本次结算税率 %,即 3% 的税率,值为 3.00")
+	private BigDecimal currentStlTaxRate;
+	/**
+	 * 本次结算附加税率 %,即 3% 的税率,值为 3.00
+	 */
+	@ApiModelProperty(value = "本次结算附加税率 %,即 3% 的税率,值为 3.00")
+	private BigDecimal currentStlSurRate;
+	/**
+	 * 折扣金额
+	 */
+	@ApiModelProperty(value = "折扣金额")
+	private BigDecimal currentStlDiscount;
+	/**
+	 * 税额
+	 */
+	@ApiModelProperty(value = "税额")
+	private BigDecimal currentStlAmountTax;
+	/**
+	 * 去税金额
+	 */
+	@ApiModelProperty(value = "去税金额")
+	private BigDecimal currentStlAmountNet;
+	/**
+	 * 本次结算金额
+	 */
+	@ApiModelProperty(value = "本次结算金额")
+	private BigDecimal currentStlAmount;
+	/**
+	 * 本次结算本币金额
+	 */
+	@ApiModelProperty(value = "本次结算本币金额")
+	private BigDecimal currentStlAmountLoc;
+	/**
+	 * 是否开发票, 0 未处理, 1 待开 2 已开 2 不开
+	 */
+	@ApiModelProperty(value = "是否开发票, 0 未处理, 1 待开 2 已开 2 不开")
+	private Integer isInvoice;
+	/**
+	 * 发票 Id
+	 */
+	@ApiModelProperty(value = "发票 Id")
+	private Long invoiceBillId;
+	/**
+	 * 发票号
+	 */
+	@ApiModelProperty(value = "发票号")
+	private String invoiceNo;
+	/**
+	 * 本次发票金额
+	 */
+	@ApiModelProperty(value = "本次发票金额")
+	private BigDecimal currentInvoiceAmount;
+	/**
+	 * 本次发票本币金额
+	 */
+	@ApiModelProperty(value = "本次发票本币金额")
+	private BigDecimal currentInvoiceAmountLoc;
+	/**
+	 * 是否审核, 0 否, 1 是
+	 */
+	@ApiModelProperty(value = "是否审核, 0 否, 1 是")
+	private Integer isApproved;
+	/**
+	 * 是否签收, 0 否, 1 是
+	 */
+	@ApiModelProperty(value = "是否签收, 0 否, 1 是")
+	private Integer isSignfor;
+	/**
+	 * 是否对账, 0 否, 1 是
+	 */
+	@ApiModelProperty(value = "是否对账, 0 否, 1 是")
+	private Integer isChecked;
+	/**
+	 * 是否销账(结算)(0 否, 1 是)
+	 */
+	@ApiModelProperty(value = "是否销账(结算)(0 否, 1 是)")
+	private Integer isCleared;
+	/**
+	 * 版本
+	 */
+	@ApiModelProperty(value = "版本")
+	private String version;
+	/**
+	 * 状态(0 正常 1停用)
+	 */
+	@ApiModelProperty(value = "状态(0 正常 1停用)")
+	private Integer status;
+	/**
+	 * 是否已删除(0 否 1是)
+	 */
+	@ApiModelProperty(value = "是否已删除(0 否 1是)")
+	@TableLogic(value = "0", delval = "1")
+	private Integer isDeleted;
+	/**
+	 * 备注
+	 */
+	@ApiModelProperty(value = "备注")
+	private String remarks;
+
+	/**
+	 * 租户
+	 */
+	@ApiModelProperty(value = "租户")
+	private String tenantId;
+
+
+}

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

@@ -0,0 +1,236 @@
+/*
+ *      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.finance.stl.entity;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 业务-财务结算单凭证明细实体类
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+@Data
+@TableName("los_fin_stl_bills_voucher_items")
+@ApiModel(value = "FinStlBillsVoucherItems对象", description = "业务-财务结算单凭证明细")
+public class FinStlBillsVoucherItems implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@ApiModelProperty(value = "主键")
+	private Long id;
+	/**
+	 * 分公司 Id
+	 */
+	@ApiModelProperty(value = "分公司 Id")
+	private String branchId;
+	/**
+	 * 创建人 Id
+	 */
+	@ApiModelProperty(value = "创建人 Id")
+	private Long createUser;
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private String createUserName;
+	/**
+	 * 创建部门 Id
+	 */
+	@ApiModelProperty(value = "创建部门 Id")
+	private String createDept;
+	/**
+	 * 创建部门
+	 */
+	@ApiModelProperty(value = "创建部门")
+	private String createDeptName;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 * 修改人 Id
+	 */
+	@ApiModelProperty(value = "修改人 Id")
+	private Long updateUser;
+	/**
+	 * 修改人
+	 */
+	@ApiModelProperty(value = "修改人")
+	private String updateUserName;
+	/**
+	 * 修改时间
+	 */
+	@ApiModelProperty(value = "修改时间")
+	private Date updateTime;
+	/**
+	 * 对账/结算主表id
+	 */
+	@ApiModelProperty(value = "对账/结算主表id")
+	private Long pid;
+	/**
+	 * 行号 基于pid 1...
+	 */
+	@ApiModelProperty(value = "行号 基于pid 1...")
+	private Integer lineNo;
+	/**
+	 * 科目代码 id
+	 */
+	@ApiModelProperty(value = "科目代码 id")
+	private Long accountId;
+	/**
+	 * 科目代码
+	 */
+	@ApiModelProperty(value = "科目代码")
+	private String accountCode;
+	/**
+	 * 科目代码中文名称
+	 */
+	@ApiModelProperty(value = "科目代码中文名称")
+	private String accountCnName;
+	/**
+	 * 科目代码英文名称
+	 */
+	@ApiModelProperty(value = "科目代码英文名称")
+	private String accountEnName;
+	/**
+	 * 科目代码中文全称
+	 */
+	@ApiModelProperty(value = "科目代码中文全称")
+	private String accountFullName;
+	/**
+	 * 科目属性,资产、负债、权益等
+	 */
+	@ApiModelProperty(value = "科目属性,资产、负债、权益等")
+	private Integer accountProperty;
+	/**
+	 * 科目级次
+	 */
+	@ApiModelProperty(value = "科目级次")
+	private Integer accountLevel;
+	/**
+	 * 科目代码方向 D=借方, C=贷方
+	 */
+	@ApiModelProperty(value = "科目代码方向 D=借方, C=贷方")
+	private String dc;
+	/**
+	 * 是否外币科目(0 否 1 是)
+	 */
+	@ApiModelProperty(value = "是否外币科目(0 否 1 是)")
+	private Integer isForeign;
+	/**
+	 * 是否数量科目(0 否 1 是)
+	 */
+	@ApiModelProperty(value = "是否数量科目(0 否 1 是)")
+	private Integer isQuantity;
+	/**
+	 * 是否核算客户(0 否 1 是)
+	 */
+	@ApiModelProperty(value = "是否核算客户(0 否 1 是)")
+	private Integer isCorp;
+	/**
+	 * 是否核算部门(0 否 1 是)
+	 */
+	@ApiModelProperty(value = "是否核算部门(0 否 1 是)")
+	private Integer isDept;
+	/**
+	 * 是否核算职员(0 否 1 是)
+	 */
+	@ApiModelProperty(value = "是否核算职员(0 否 1 是)")
+	private Integer isEmpl;
+	/**
+	 * 是否核算项目(0 否 1 是)
+	 */
+	@ApiModelProperty(value = "是否核算项目(0 否 1 是)")
+	private Integer isItem;
+	/**
+	 * 分录摘要
+	 */
+	@ApiModelProperty(value = "分录摘要")
+	private String descr;
+	/**
+	 * 借方金额(CNY)
+	 */
+	@ApiModelProperty(value = "借方金额(CNY)")
+	private BigDecimal amountDr;
+	/**
+	 * 贷方金额(CNY)
+	 */
+	@ApiModelProperty(value = "贷方金额(CNY)")
+	private BigDecimal amountCr;
+	/**
+	 * 借方金额(USD)
+	 */
+	@ApiModelProperty(value = "借方金额(USD)")
+	private BigDecimal amountDrUsd;
+	/**
+	 * 贷方金额(USD)
+	 */
+	@ApiModelProperty(value = "贷方金额(USD)")
+	private BigDecimal amountCrUsd;
+	/**
+	 * 合计本位币借方金额(CNY)
+	 */
+	@ApiModelProperty(value = "合计本位币借方金额(CNY)")
+	private BigDecimal amountDrLoc;
+	/**
+	 * 合计本位币贷方金额(CNY)
+	 */
+	@ApiModelProperty(value = "合计本位币贷方金额(CNY)")
+	private BigDecimal amountCrLoc;
+	/**
+	 * 版本
+	 */
+	@ApiModelProperty(value = "版本")
+	private String version;
+	/**
+	 * 状态(0 正常 1停用)
+	 */
+	@ApiModelProperty(value = "状态(0 正常 1停用)")
+	private Integer status;
+	/**
+	 * 是否已删除(0 否 1是)
+	 */
+	@ApiModelProperty(value = "是否已删除(0 否 1是)")
+	@TableLogic(value = "0", delval = "1")
+	private Integer isDeleted;
+	/**
+	 * 备注
+	 */
+	@ApiModelProperty(value = "备注")
+	private String remarks;
+
+	/**
+	 * 租户
+	 */
+	@ApiModelProperty(value = "租户")
+	private String tenantId;
+
+
+}

+ 36 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/vo/FinStlBillsItemsVO.java

@@ -0,0 +1,36 @@
+/*
+ *      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.finance.stl.vo;
+
+import org.springblade.los.finance.stl.entity.FinStlBillsItems;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 业务-财务对账单和结算单明细视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "FinStlBillsItemsVO对象", description = "业务-财务对账单和结算单明细")
+public class FinStlBillsItemsVO extends FinStlBillsItems {
+	private static final long serialVersionUID = 1L;
+
+}

+ 36 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/vo/FinStlBillsVO.java

@@ -0,0 +1,36 @@
+/*
+ *      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.finance.stl.vo;
+
+import org.springblade.los.finance.stl.entity.FinStlBills;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 业务-财务对账单和结算视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "FinStlBillsVO对象", description = "业务-财务对账单和结算")
+public class FinStlBillsVO extends FinStlBills {
+	private static final long serialVersionUID = 1L;
+
+}

+ 36 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/vo/FinStlBillsVoucherItemsVO.java

@@ -0,0 +1,36 @@
+/*
+ *      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.finance.stl.vo;
+
+import org.springblade.los.finance.stl.entity.FinStlBillsVoucherItems;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 业务-财务结算单凭证明细视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "FinStlBillsVoucherItemsVO对象", description = "业务-财务结算单凭证明细")
+public class FinStlBillsVoucherItemsVO extends FinStlBillsVoucherItems {
+	private static final long serialVersionUID = 1L;
+
+}

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

@@ -188,15 +188,19 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				}
 			}
 			if (GP20 > 0) {
-				boxTypeSum = "20GP * " + boxTypeSum + ",";
-			} else if (GP40 > 0) {
-				boxTypeSum = "40GP * " + boxTypeSum + ",";
-			} else if (HC40 > 0) {
-				boxTypeSum = "40HC * " + boxTypeSum + ",";
-			} else if (GP45 > 0) {
-				boxTypeSum = "45GP * " + boxTypeSum + ",";
-			} else if (GP48 > 0) {
-				boxTypeSum = "48GP * " + boxTypeSum + ",";
+				boxTypeSum += "20GP * " + GP20 + ",";
+			}
+			if (GP40 > 0) {
+				boxTypeSum += "40GP * " + GP40 + ",";
+			}
+			if (HC40 > 0) {
+				boxTypeSum += "40HC * " + HC40 + ",";
+			}
+			if (GP45 > 0) {
+				boxTypeSum += "45GP * " + GP45 + ",";
+			}
+			if (GP48 > 0) {
+				boxTypeSum += "48GP * " + GP48 + ",";
 			}
 			if (boxTypeSum.length() > 0) {
 				boxTypeSum = boxTypeSum.substring(0, boxTypeSum.length() - 1);
@@ -534,7 +538,13 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			.eq(Bills::getIsDeleted, 0)
 			.in(Bills::getId, ids));
 		for (Bills item : billsList) {
-			item.setBillingStatus(3);
+			if (item.getBillStatus() == 1) {
+				throw new RuntimeException("已退舱,请勿重复操作");
+			}
+			if (item.getBillStatus() == 3) {
+				throw new RuntimeException("单据已完成,退舱失败");
+			}
+			item.setBillStatus(1);
 			item.setBookingWithdrawTime(new Date());
 		}
 		this.updateBatchById(billsList);

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

@@ -282,16 +282,15 @@ public class ContainersServiceImpl extends ServiceImpl<ContainersMapper, Contain
 		}
 		List<ContainersBills> containersBillsList = new ArrayList<>();
 		WaitingBox waitingBox = containers.getWaitingBox();
-		ContainersBills containersBills = new ContainersBills();
-		BeanUtil.copyProperties(waitingBox, containersBills);
-		containersBills.setId(null);
-		containersBills.setPpId(waitingBox.getId());
-		containersBills.setCreateTime(new Date());
-		containersBills.setCreateUser(AuthUtil.getUserId());
-		containersBills.setCreateUserName(AuthUtil.getUserName());
-		containersBills.setTenantId(AuthUtil.getTenantId());
-
 		for (int i = 0; i < containersList.size(); i++) {
+			ContainersBills containersBills = new ContainersBills();
+			BeanUtil.copyProperties(waitingBox, containersBills);
+			containersBills.setId(null);
+			containersBills.setPpId(waitingBox.getId());
+			containersBills.setCreateTime(new Date());
+			containersBills.setCreateUser(AuthUtil.getUserId());
+			containersBills.setCreateUserName(AuthUtil.getUserName());
+			containersBills.setTenantId(AuthUtil.getTenantId());
 			containersBills.setPid(containersList.get(i).getId());
 			containersList.get(i).setQuantity(average);
 			containersList.get(i).setGrossWeight(averageGrossWeight);

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

@@ -16,23 +16,28 @@
  */
 package org.springblade.los.finance.fee.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 com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-import javax.validation.Valid;
-
+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.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.finance.fee.entity.FinAccBills;
-import org.springblade.los.finance.fee.vo.FinAccBillsVO;
 import org.springblade.los.finance.fee.service.IFinAccBillsService;
-import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.los.finance.fee.vo.FinAccBillsVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 业务-财务账单 控制器
@@ -66,6 +71,71 @@ public class FinAccBillsController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入finAccBills")
 	public R<IPage<FinAccBills>> list(FinAccBills finAccBills, Query query) {
+		LambdaQueryWrapper<FinAccBills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
+			.eq(FinAccBills::getIsDeleted, 0)
+			.eq(ObjectUtils.isNotNull(finAccBills.getAccountDc()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.eq(ObjectUtils.isNotNull(finAccBills.getAccountType()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.eq(ObjectUtils.isNotNull(finAccBills.getBusinessType()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getBusinessBillNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getBusinessBillDivideNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getContractNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.eq(ObjectUtils.isNotNull(finAccBills.getPaymode()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.and(ObjectUtils.isNotNull(finAccBills.getCorpCnName()), i -> i.like(FinAccBills::getCorpCnName, finAccBills.getCorpCnName()).or()
+				.like(FinAccBills::getCorpEnName, finAccBills.getCorpCnName()).or().like(FinAccBills::getCorpArgreementNo, finAccBills.getCorpCnName()))
+			.and(ObjectUtils.isNotNull(finAccBills.getBillCorpCnName()), i -> i.like(FinAccBills::getBillCorpCnName, finAccBills.getBillCorpCnName()).or()
+				.like(FinAccBills::getBillCorpEnName, finAccBills.getBillCorpCnName()))
+			.and(ObjectUtils.isNotNull(finAccBills.getVesselCnName()), i -> i.like(FinAccBills::getVesselCnName, finAccBills.getVesselCnName()).or()
+				.like(FinAccBills::getVesselEnName, finAccBills.getVesselCnName()))
+			.like(ObjectUtils.isNotNull(finAccBills.getVoyageNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getMblno()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getHblno()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getRefno()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.and(ObjectUtils.isNotNull(finAccBills.getPolCnName()), i -> i.like(FinAccBills::getPolCnName, finAccBills.getPolCnName()).or()
+				.like(FinAccBills::getPolEnName, finAccBills.getPolCnName()).or().like(FinAccBills::getPolCode, finAccBills.getPolCnName()))
+			.and(ObjectUtils.isNotNull(finAccBills.getPodCnName()), i -> i.like(FinAccBills::getPodCnName, finAccBills.getPodCnName()).or()
+				.like(FinAccBills::getPodEnName, finAccBills.getPodCnName()).or().like(FinAccBills::getPodCode, finAccBills.getPodCnName()))
+			.like(ObjectUtils.isNotNull(finAccBills.getStlBillNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getInvoiceBillNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getVoucherBillNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.eq(ObjectUtils.isNotNull(finAccBills.getIsChecked()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.eq(ObjectUtils.isNotNull(finAccBills.getIsCleared()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.eq(ObjectUtils.isNotNull(finAccBills.getBillStatus()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getBookingNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc());
+
+		if (ObjectUtils.isNotNull(finAccBills.getAccountDateList()) && finAccBills.getAccountDateList().size() > 0) {
+			lambdaQueryWrapper.lt(FinAccBills::getAccountDate, finAccBills.getAccountDateList().get(0));
+			lambdaQueryWrapper.gt(FinAccBills::getAccountDate, finAccBills.getAccountDateList().get(1));
+		}
+		if (ObjectUtils.isNotNull(finAccBills.getBusinessDateList()) && finAccBills.getBusinessDateList().size() > 0) {
+			lambdaQueryWrapper.lt(FinAccBills::getBusinessDate, finAccBills.getBusinessDateList().get(0));
+			lambdaQueryWrapper.gt(FinAccBills::getBusinessDate, finAccBills.getBusinessDateList().get(1));
+		}
+		if (ObjectUtils.isNotNull(finAccBills.getBusinessDivideDateList()) && finAccBills.getBusinessDivideDateList().size() > 0) {
+			lambdaQueryWrapper.lt(FinAccBills::getBusinessDivideDate, finAccBills.getBusinessDivideDateList().get(0));
+			lambdaQueryWrapper.gt(FinAccBills::getBusinessDivideDate, finAccBills.getBusinessDivideDateList().get(1));
+		}
+		if (ObjectUtils.isNotNull(finAccBills.getEtdList()) && finAccBills.getEtdList().size() > 0) {
+			lambdaQueryWrapper.lt(FinAccBills::getEtd, finAccBills.getEtdList().get(0));
+			lambdaQueryWrapper.gt(FinAccBills::getEtd, finAccBills.getEtdList().get(1));
+		}
+		if (ObjectUtils.isNotNull(finAccBills.getEtaList()) && finAccBills.getEtaList().size() > 0) {
+			lambdaQueryWrapper.lt(FinAccBills::getEta, finAccBills.getEtaList().get(0));
+			lambdaQueryWrapper.gt(FinAccBills::getEta, finAccBills.getEtaList().get(1));
+		}
+		if (ObjectUtils.isNotNull(finAccBills.getStlDateList()) && finAccBills.getStlDateList().size() > 0) {
+			lambdaQueryWrapper.lt(FinAccBills::getStlDate, finAccBills.getStlDateList().get(0));
+			lambdaQueryWrapper.gt(FinAccBills::getStlDate, finAccBills.getStlDateList().get(1));
+		}
+		if (ObjectUtils.isNotNull(finAccBills.getInvoiceDateList()) && finAccBills.getInvoiceDateList().size() > 0) {
+			lambdaQueryWrapper.lt(FinAccBills::getInvoiceDate, finAccBills.getInvoiceDateList().get(0));
+			lambdaQueryWrapper.gt(FinAccBills::getInvoiceDate, finAccBills.getInvoiceDateList().get(1));
+		}
+		if (ObjectUtils.isNotNull(finAccBills.getVoucherDateList()) && finAccBills.getVoucherDateList().size() > 0) {
+			lambdaQueryWrapper.lt(FinAccBills::getVoucherDate, finAccBills.getVoucherDateList().get(0));
+			lambdaQueryWrapper.gt(FinAccBills::getVoucherDate, finAccBills.getVoucherDateList().get(1));
+		}
+		lambdaQueryWrapper.orderByDesc(FinAccBills::getCreateTime);
 		IPage<FinAccBills> pages = finAccBillsService.page(Condition.getPage(query), Condition.getQueryWrapper(finAccBills));
 		return R.data(pages);
 	}
@@ -117,7 +187,7 @@ public class FinAccBillsController extends BladeController {
 	@PostMapping("/generateBill")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "生成账单", notes = "传入FinAccBills")
-	public R generateBill( @RequestBody FinAccBills finAccBills) {
+	public R generateBill(@RequestBody FinAccBills finAccBills) {
 		return finAccBillsService.generateBill(finAccBills);
 	}
 
@@ -127,7 +197,7 @@ public class FinAccBillsController extends BladeController {
 	@PostMapping("/revokeBill")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "撤销账单", notes = "传入FinAccBills")
-	public R revokeBill( @RequestBody FinAccBills finAccBills) {
+	public R revokeBill(@RequestBody FinAccBills finAccBills) {
 		return finAccBillsService.revokeBill(finAccBills);
 	}
 
@@ -142,5 +212,81 @@ public class FinAccBillsController extends BladeController {
 		return R.status(finAccBillsService.removeByIds(Func.toLongList(ids)));
 	}
 
+	/**
+	 * 财务账单
+	 */
+	@GetMapping("/listAccBill")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "类别", notes = "传入finAccBills")
+	public R<List<FinAccBills>> listAccBill(FinAccBills finAccBills) {
+		LambdaQueryWrapper<FinAccBills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
+			.eq(FinAccBills::getIsDeleted, 0)
+			.eq(ObjectUtils.isNotNull(finAccBills.getAccountDc()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.eq(ObjectUtils.isNotNull(finAccBills.getAccountType()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.eq(ObjectUtils.isNotNull(finAccBills.getBusinessType()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getBusinessBillNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getBusinessBillDivideNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getContractNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.eq(ObjectUtils.isNotNull(finAccBills.getPaymode()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.and(ObjectUtils.isNotNull(finAccBills.getCorpCnName()), i -> i.like(FinAccBills::getCorpCnName, finAccBills.getCorpCnName()).or()
+				.like(FinAccBills::getCorpEnName, finAccBills.getCorpCnName()).or().like(FinAccBills::getCorpArgreementNo, finAccBills.getCorpCnName()))
+			.and(ObjectUtils.isNotNull(finAccBills.getBillCorpCnName()), i -> i.like(FinAccBills::getBillCorpCnName, finAccBills.getBillCorpCnName()).or()
+				.like(FinAccBills::getBillCorpEnName, finAccBills.getBillCorpCnName()))
+			.and(ObjectUtils.isNotNull(finAccBills.getVesselCnName()), i -> i.like(FinAccBills::getVesselCnName, finAccBills.getVesselCnName()).or()
+				.like(FinAccBills::getVesselEnName, finAccBills.getVesselCnName()))
+			.like(ObjectUtils.isNotNull(finAccBills.getVoyageNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getMblno()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getHblno()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getRefno()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.and(ObjectUtils.isNotNull(finAccBills.getPolCnName()), i -> i.like(FinAccBills::getPolCnName, finAccBills.getPolCnName()).or()
+				.like(FinAccBills::getPolEnName, finAccBills.getPolCnName()).or().like(FinAccBills::getPolCode, finAccBills.getPolCnName()))
+			.and(ObjectUtils.isNotNull(finAccBills.getPodCnName()), i -> i.like(FinAccBills::getPodCnName, finAccBills.getPodCnName()).or()
+				.like(FinAccBills::getPodEnName, finAccBills.getPodCnName()).or().like(FinAccBills::getPodCode, finAccBills.getPodCnName()))
+			.like(ObjectUtils.isNotNull(finAccBills.getStlBillNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getInvoiceBillNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getVoucherBillNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.eq(ObjectUtils.isNotNull(finAccBills.getIsChecked()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.eq(ObjectUtils.isNotNull(finAccBills.getIsCleared()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.eq(ObjectUtils.isNotNull(finAccBills.getBillStatus()), FinAccBills::getAccountDc, finAccBills.getAccountDc())
+			.like(ObjectUtils.isNotNull(finAccBills.getBookingNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc());
+
+		if (ObjectUtils.isNotNull(finAccBills.getAccountDateList()) && finAccBills.getAccountDateList().size() > 0) {
+			lambdaQueryWrapper.lt(FinAccBills::getAccountDate, finAccBills.getAccountDateList().get(0));
+			lambdaQueryWrapper.gt(FinAccBills::getAccountDate, finAccBills.getAccountDateList().get(1));
+		}
+		if (ObjectUtils.isNotNull(finAccBills.getBusinessDateList()) && finAccBills.getBusinessDateList().size() > 0) {
+			lambdaQueryWrapper.lt(FinAccBills::getBusinessDate, finAccBills.getBusinessDateList().get(0));
+			lambdaQueryWrapper.gt(FinAccBills::getBusinessDate, finAccBills.getBusinessDateList().get(1));
+		}
+		if (ObjectUtils.isNotNull(finAccBills.getBusinessDivideDateList()) && finAccBills.getBusinessDivideDateList().size() > 0) {
+			lambdaQueryWrapper.lt(FinAccBills::getBusinessDivideDate, finAccBills.getBusinessDivideDateList().get(0));
+			lambdaQueryWrapper.gt(FinAccBills::getBusinessDivideDate, finAccBills.getBusinessDivideDateList().get(1));
+		}
+		if (ObjectUtils.isNotNull(finAccBills.getEtdList()) && finAccBills.getEtdList().size() > 0) {
+			lambdaQueryWrapper.lt(FinAccBills::getEtd, finAccBills.getEtdList().get(0));
+			lambdaQueryWrapper.gt(FinAccBills::getEtd, finAccBills.getEtdList().get(1));
+		}
+		if (ObjectUtils.isNotNull(finAccBills.getEtaList()) && finAccBills.getEtaList().size() > 0) {
+			lambdaQueryWrapper.lt(FinAccBills::getEta, finAccBills.getEtaList().get(0));
+			lambdaQueryWrapper.gt(FinAccBills::getEta, finAccBills.getEtaList().get(1));
+		}
+		if (ObjectUtils.isNotNull(finAccBills.getStlDateList()) && finAccBills.getStlDateList().size() > 0) {
+			lambdaQueryWrapper.lt(FinAccBills::getStlDate, finAccBills.getStlDateList().get(0));
+			lambdaQueryWrapper.gt(FinAccBills::getStlDate, finAccBills.getStlDateList().get(1));
+		}
+		if (ObjectUtils.isNotNull(finAccBills.getInvoiceDateList()) && finAccBills.getInvoiceDateList().size() > 0) {
+			lambdaQueryWrapper.lt(FinAccBills::getInvoiceDate, finAccBills.getInvoiceDateList().get(0));
+			lambdaQueryWrapper.gt(FinAccBills::getInvoiceDate, finAccBills.getInvoiceDateList().get(1));
+		}
+		if (ObjectUtils.isNotNull(finAccBills.getVoucherDateList()) && finAccBills.getVoucherDateList().size() > 0) {
+			lambdaQueryWrapper.lt(FinAccBills::getVoucherDate, finAccBills.getVoucherDateList().get(0));
+			lambdaQueryWrapper.gt(FinAccBills::getVoucherDate, finAccBills.getVoucherDateList().get(1));
+		}
+		lambdaQueryWrapper.orderByDesc(FinAccBills::getCreateTime);
+		List<FinAccBills> pages = finAccBillsService.list(Condition.getQueryWrapper(finAccBills));
+		return R.data(pages);
+	}
+
 
 }

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

@@ -121,10 +121,11 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 			billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
 				.eq(Bills::getTenantId, AuthUtil.getTenantId())
 				.eq(Bills::getIsDeleted, 0)
-				.eq(Bills::getBusinessType, "SE")
-				.eq(Bills::getSeaType, "E")
 				.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()) &&
@@ -144,8 +145,11 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 		}
 		List<FeeCenter> reducelList = finAccBills.getFeeCenterList().stream().filter(distinctByKey(FeeCenter::getBillKey)).collect(Collectors.toList());
 		for (FeeCenter item : reducelList) {
-			BigDecimal amount = finAccBills.getFeeCenterList().stream()
-				.filter(e -> e.getBillKey().equals(item.getBillKey()))
+			BigDecimal amountCNY = finAccBills.getFeeCenterList().stream()
+				.filter(e -> e.getBillKey().equals(item.getBillKey()) && "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()))
 				.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			FinAccBills data = new FinAccBills();
 			data.setCreateTime(new Date());
@@ -218,11 +222,31 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 			data.setPodCode(item.getPodCode());
 			data.setPodEnName(item.getPodEnName());
 			data.setPodNamePrint(finAccBills.getPodNamePrint());
-			if ("D".equals(item.getDc())) {
-				data.setAmountDr(amount);
+			if ("CNY".equals(item.getCurCode())) {
+				if ("D".equals(item.getDc())) {
+					data.setAmountDr(amountCNY);
+				} else {
+					data.setAmountCr(amountCNY);
+				}
 			} else {
-				data.setAmountCr(amount);
+				if ("D".equals(item.getDc())) {
+					data.setAmountDrUsd(amountUSD);
+				} else {
+					data.setAmountCrUsd(amountUSD);
+				}
 			}
+			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);
+			}
+			if (ObjectUtils.isNotNull(data.getAmountDrUsd()) && ObjectUtils.isNotNull(item.getExrate())) {
+				BigDecimal drCny = data.getAmountDrUsd().multiply(item.getExrate());
+				amountDrLoc = amountDrLoc.add(data.getAmountDr()).add(drCny);
+			}
+			data.setAmountDrLoc(amountDrLoc);
+			data.setAmountCrLoc(amountCrLoc);
 			this.saveOrUpdate(data);
 			finAccBillsList.add(data);
 			List<FeeCenter> feeCenterList1 = finAccBills.getFeeCenterList().stream()
@@ -231,20 +255,14 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 				feeCenterItem.setAccBillId(data.getId());
 				feeCenterItem.setAccBillNo(data.getBillNo());
 				feeCenterItem.setAccDate(data.getBillDate());
-				feeCenterItem.setAccAmount(amount);
+				feeCenterItem.setAccAmount(amountDrLoc.add(amountCrLoc));
 				feeCenterItem.setAccStatus(1);
 				feeCenterItem.setAccById(AuthUtil.getUserId());
 				feeCenterItem.setAccByName(AuthUtil.getUserName());
 				feeCenterList.add(feeCenterItem);
 			}
 		}
-//		this.saveOrUpdateBatch(finAccBillsList);
 		feeCenterService.saveOrUpdateBatch(feeCenterList);
-		for (Bills item : billsList) {
-			item.setBillingStatus(item.getBillingStatus() + 1);
-			billsMapper.updateById(item);
-		}
-//		billsService.saveOrUpdateBatch(billsList);
 		return R.data("操作成功");
 	}
 
@@ -262,8 +280,6 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 			billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
 				.eq(Bills::getTenantId, AuthUtil.getTenantId())
 				.eq(Bills::getIsDeleted, 0)
-				.eq(Bills::getBusinessType, "SE")
-				.eq(Bills::getSeaType, "E")
 				.in(Bills::getId, ids));
 		}
 		List<Long> finAccBillsIds = finAccBills.getFeeCenterList().stream().map(FeeCenter::getAccBillId).distinct().collect(Collectors.toList());
@@ -286,7 +302,6 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 			item.setBillingStatus(item.getBillingStatus() - 1);
 			billsMapper.updateById(item);
 		}
-//		billsService.saveOrUpdateBatch(billsList);
 		return R.data("操作成功");
 	}
 

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

@@ -0,0 +1,146 @@
+/*
+ *      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.finance.stl.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.los.finance.stl.entity.FinStlBills;
+import org.springblade.los.finance.stl.service.IFinStlBillsService;
+import org.springblade.los.finance.stl.vo.FinStlBillsVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * 业务-财务对账单和结算 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/finstlbills")
+@Api(value = "业务-财务对账单和结算", tags = "业务-财务对账单和结算接口")
+public class FinStlBillsController extends BladeController {
+
+	private final IFinStlBillsService finStlBillsService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入finStlBills")
+	public R<FinStlBills> detail(FinStlBills finStlBills) {
+		FinStlBills detail = finStlBillsService.detail(finStlBills);
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 业务-财务对账单和结算
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入finStlBills")
+	public R<IPage<FinStlBills>> list(FinStlBills finStlBills, Query query) {
+		IPage<FinStlBills> pages = finStlBillsService.page(Condition.getPage(query), Condition.getQueryWrapper(finStlBills));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 业务-财务对账单和结算
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入finStlBills")
+	public R<IPage<FinStlBillsVO>> page(FinStlBillsVO finStlBills, Query query) {
+		IPage<FinStlBillsVO> pages = finStlBillsService.selectFinStlBillsPage(Condition.getPage(query), finStlBills);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 业务-财务对账单和结算
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入finStlBills")
+	public R save(@Valid @RequestBody FinStlBills finStlBills) {
+		return R.status(finStlBillsService.save(finStlBills));
+	}
+
+	/**
+	 * 修改 业务-财务对账单和结算
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入finStlBills")
+	public R update(@Valid @RequestBody FinStlBills finStlBills) {
+		return R.status(finStlBillsService.updateById(finStlBills));
+	}
+
+	/**
+	 * 新增或修改 业务-财务对账单和结算
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入finStlBills")
+	public R submit(@Valid @RequestBody FinStlBills finStlBills) {
+		return finStlBillsService.submit(finStlBills);
+	}
+
+	/**
+	 * 财务对账单和结算 确认
+	 */
+	@PostMapping("/confirm")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "确认", notes = "传入finStlBills")
+	public R confirm(@Valid @RequestBody FinStlBills finStlBills) {
+		return finStlBillsService.confirm(finStlBills);
+	}
+
+	/**
+	 * 财务对账单和结算 撤销
+	 */
+	@PostMapping("/revoke")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "撤销", notes = "传入finStlBills")
+	public R revoke(@Valid @RequestBody FinStlBills finStlBills) {
+		return finStlBillsService.revoke(finStlBills);
+	}
+
+
+	/**
+	 * 删除 业务-财务对账单和结算
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return finStlBillsService.deleteByIds(Func.toLongList(ids));
+	}
+
+
+}

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

@@ -0,0 +1,126 @@
+/*
+ *      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.finance.stl.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.los.finance.stl.entity.FinStlBillsItems;
+import org.springblade.los.finance.stl.vo.FinStlBillsItemsVO;
+import org.springblade.los.finance.stl.service.IFinStlBillsItemsService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 业务-财务对账单和结算单明细 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/finstlbillsitems")
+@Api(value = "业务-财务对账单和结算单明细", tags = "业务-财务对账单和结算单明细接口")
+public class FinStlBillsItemsController extends BladeController {
+
+	private final IFinStlBillsItemsService finStlBillsItemsService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入finStlBillsItems")
+	public R<FinStlBillsItems> detail(FinStlBillsItems finStlBillsItems) {
+		FinStlBillsItems detail = finStlBillsItemsService.getOne(Condition.getQueryWrapper(finStlBillsItems));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 业务-财务对账单和结算单明细
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入finStlBillsItems")
+	public R<IPage<FinStlBillsItems>> list(FinStlBillsItems finStlBillsItems, Query query) {
+		IPage<FinStlBillsItems> pages = finStlBillsItemsService.page(Condition.getPage(query), Condition.getQueryWrapper(finStlBillsItems));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 业务-财务对账单和结算单明细
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入finStlBillsItems")
+	public R<IPage<FinStlBillsItemsVO>> page(FinStlBillsItemsVO finStlBillsItems, Query query) {
+		IPage<FinStlBillsItemsVO> pages = finStlBillsItemsService.selectFinStlBillsItemsPage(Condition.getPage(query), finStlBillsItems);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 业务-财务对账单和结算单明细
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入finStlBillsItems")
+	public R save(@Valid @RequestBody FinStlBillsItems finStlBillsItems) {
+		return R.status(finStlBillsItemsService.save(finStlBillsItems));
+	}
+
+	/**
+	 * 修改 业务-财务对账单和结算单明细
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入finStlBillsItems")
+	public R update(@Valid @RequestBody FinStlBillsItems finStlBillsItems) {
+		return R.status(finStlBillsItemsService.updateById(finStlBillsItems));
+	}
+
+	/**
+	 * 新增或修改 业务-财务对账单和结算单明细
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入finStlBillsItems")
+	public R submit(@Valid @RequestBody FinStlBillsItems finStlBillsItems) {
+		return R.status(finStlBillsItemsService.saveOrUpdate(finStlBillsItems));
+	}
+
+
+	/**
+	 * 删除 业务-财务对账单和结算单明细
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(finStlBillsItemsService.removeByIds(Func.toLongList(ids)));
+	}
+
+
+}

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

@@ -0,0 +1,126 @@
+/*
+ *      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.finance.stl.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.los.finance.stl.entity.FinStlBillsVoucherItems;
+import org.springblade.los.finance.stl.vo.FinStlBillsVoucherItemsVO;
+import org.springblade.los.finance.stl.service.IFinStlBillsVoucherItemsService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 业务-财务结算单凭证明细 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/finstlbillsvoucheritems")
+@Api(value = "业务-财务结算单凭证明细", tags = "业务-财务结算单凭证明细接口")
+public class FinStlBillsVoucherItemsController extends BladeController {
+
+	private final IFinStlBillsVoucherItemsService finStlBillsVoucherItemsService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入finStlBillsVoucherItems")
+	public R<FinStlBillsVoucherItems> detail(FinStlBillsVoucherItems finStlBillsVoucherItems) {
+		FinStlBillsVoucherItems detail = finStlBillsVoucherItemsService.getOne(Condition.getQueryWrapper(finStlBillsVoucherItems));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 业务-财务结算单凭证明细
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入finStlBillsVoucherItems")
+	public R<IPage<FinStlBillsVoucherItems>> list(FinStlBillsVoucherItems finStlBillsVoucherItems, Query query) {
+		IPage<FinStlBillsVoucherItems> pages = finStlBillsVoucherItemsService.page(Condition.getPage(query), Condition.getQueryWrapper(finStlBillsVoucherItems));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 业务-财务结算单凭证明细
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入finStlBillsVoucherItems")
+	public R<IPage<FinStlBillsVoucherItemsVO>> page(FinStlBillsVoucherItemsVO finStlBillsVoucherItems, Query query) {
+		IPage<FinStlBillsVoucherItemsVO> pages = finStlBillsVoucherItemsService.selectFinStlBillsVoucherItemsPage(Condition.getPage(query), finStlBillsVoucherItems);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 业务-财务结算单凭证明细
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入finStlBillsVoucherItems")
+	public R save(@Valid @RequestBody FinStlBillsVoucherItems finStlBillsVoucherItems) {
+		return R.status(finStlBillsVoucherItemsService.save(finStlBillsVoucherItems));
+	}
+
+	/**
+	 * 修改 业务-财务结算单凭证明细
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入finStlBillsVoucherItems")
+	public R update(@Valid @RequestBody FinStlBillsVoucherItems finStlBillsVoucherItems) {
+		return R.status(finStlBillsVoucherItemsService.updateById(finStlBillsVoucherItems));
+	}
+
+	/**
+	 * 新增或修改 业务-财务结算单凭证明细
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入finStlBillsVoucherItems")
+	public R submit(@Valid @RequestBody FinStlBillsVoucherItems finStlBillsVoucherItems) {
+		return R.status(finStlBillsVoucherItemsService.saveOrUpdate(finStlBillsVoucherItems));
+	}
+
+
+	/**
+	 * 删除 业务-财务结算单凭证明细
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(finStlBillsVoucherItemsService.removeByIds(Func.toLongList(ids)));
+	}
+
+
+}

+ 42 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/mapper/FinStlBillsItemsMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      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.finance.stl.mapper;
+
+import org.springblade.los.finance.stl.entity.FinStlBillsItems;
+import org.springblade.los.finance.stl.vo.FinStlBillsItemsVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 业务-财务对账单和结算单明细 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+public interface FinStlBillsItemsMapper extends BaseMapper<FinStlBillsItems> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param finStlBillsItems
+	 * @return
+	 */
+	List<FinStlBillsItemsVO> selectFinStlBillsItemsPage(IPage page, FinStlBillsItemsVO finStlBillsItems);
+
+}

+ 123 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/mapper/FinStlBillsItemsMapper.xml

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.los.finance.stl.mapper.FinStlBillsItemsMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="finStlBillsItemsResultMap" type="org.springblade.los.finance.stl.entity.FinStlBillsItems">
+        <id column="id" property="id"/>
+        <result column="branch_id" property="branchId"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_user_name" property="createUserName"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="create_dept_name" property="createDeptName"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_user_name" property="updateUserName"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="pid" property="pid"/>
+        <result column="line_no" property="lineNo"/>
+        <result column="p_type" property="pType"/>
+        <result column="business_type" property="businessType"/>
+        <result column="bill_type" property="billType"/>
+        <result column="bill_no" property="billNo"/>
+        <result column="bill_date" property="billDate"/>
+        <result column="account_date" property="accountDate"/>
+        <result column="account_year" property="accountYear"/>
+        <result column="account_month" property="accountMonth"/>
+        <result column="account_day" property="accountDay"/>
+        <result column="source_id" property="sourceId"/>
+        <result column="corp_id" property="corpId"/>
+        <result column="corp_cn_name" property="corpCnName"/>
+        <result column="corp_en_name" property="corpEnName"/>
+        <result column="corp_is_signed" property="corpIsSigned"/>
+        <result column="corp_argreement_no" property="corpArgreementNo"/>
+        <result column="corp_acc_remarks" property="corpAccRemarks"/>
+        <result column="dept_id" property="deptId"/>
+        <result column="dept_name" property="deptName"/>
+        <result column="operator_id" property="operatorId"/>
+        <result column="operator_name" property="operatorName"/>
+        <result column="src_type" property="srcType"/>
+        <result column="src_id" property="srcId"/>
+        <result column="src_cn_name" property="srcCnName"/>
+        <result column="src_en_name" property="srcEnName"/>
+        <result column="line_id" property="lineId"/>
+        <result column="line_cn_name" property="lineCnName"/>
+        <result column="line_en_name" property="lineEnName"/>
+        <result column="vessel_id" property="vesselId"/>
+        <result column="vessel_cn_name" property="vesselCnName"/>
+        <result column="vessel_en_name" property="vesselEnName"/>
+        <result column="voyage_no" property="voyageNo"/>
+        <result column="mblno" property="mblno"/>
+        <result column="hblno" property="hblno"/>
+        <result column="iq_no" property="iqNo"/>
+        <result column="etd" property="etd"/>
+        <result column="eta" property="eta"/>
+        <result column="pol_id" property="polId"/>
+        <result column="pol_code" property="polCode"/>
+        <result column="pol_cn_name" property="polCnName"/>
+        <result column="pol_en_name" property="polEnName"/>
+        <result column="pod_id" property="podId"/>
+        <result column="pod_code" property="podCode"/>
+        <result column="pod_cn_name" property="podCnName"/>
+        <result column="pod_en_name" property="podEnName"/>
+        <result column="cntr_no" property="cntrNo"/>
+        <result column="quantity_packing_descr" property="quantityPackingDescr"/>
+        <result column="quantity_cntr_types_descr" property="quantityCntrTypesDescr"/>
+        <result column="fee_id" property="feeId"/>
+        <result column="fee_code" property="feeCode"/>
+        <result column="fee_cn_name" property="feeCnName"/>
+        <result column="fee_en_name" property="feeEnName"/>
+        <result column="paymode" property="paymode"/>
+        <result column="acc_bill_id" property="accBillId"/>
+        <result column="acc_bill_no" property="accBillNo"/>
+        <result column="acc_date" property="accDate"/>
+        <result column="dc" property="dc"/>
+        <result column="quantity" property="quantity"/>
+        <result column="unit_no" property="unitNo"/>
+        <result column="price" property="price"/>
+        <result column="cur_code" property="curCode"/>
+        <result column="exrate" property="exrate"/>
+        <result column="is_tax" property="isTax"/>
+        <result column="tax_type" property="taxType"/>
+        <result column="tax_rate" property="taxRate"/>
+        <result column="surcharge_rate" property="surchargeRate"/>
+        <result column="amount_discount" property="amountDiscount"/>
+        <result column="amount_tax" property="amountTax"/>
+        <result column="amount_net" property="amountNet"/>
+        <result column="amount" property="amount"/>
+        <result column="amount_tax_loc" property="amountTaxLoc"/>
+        <result column="amount_net_loc" property="amountNetLoc"/>
+        <result column="amount_discount_loc" property="amountDiscountLoc"/>
+        <result column="amount_loc" property="amountLoc"/>
+        <result column="stl_ttl_amount" property="stlTtlAmount"/>
+        <result column="unsettled_amount" property="unsettledAmount"/>
+        <result column="current_stl_cur_code" property="currentStlCurCode"/>
+        <result column="current_stl_exrate" property="currentStlExrate"/>
+        <result column="current_stl_tax_rate" property="currentStlTaxRate"/>
+        <result column="current_stl_sur_rate" property="currentStlSurRate"/>
+        <result column="current_stl_discount" property="currentStlDiscount"/>
+        <result column="current_stl_amount_tax" property="currentStlAmountTax"/>
+        <result column="current_stl_amount_net" property="currentStlAmountNet"/>
+        <result column="current_stl_amount" property="currentStlAmount"/>
+        <result column="current_stl_amount_loc" property="currentStlAmountLoc"/>
+        <result column="is_invoice" property="isInvoice"/>
+        <result column="invoice_bill_id" property="invoiceBillId"/>
+        <result column="invoice_no" property="invoiceNo"/>
+        <result column="current_invoice_amount" property="currentInvoiceAmount"/>
+        <result column="current_invoice_amount_loc" property="currentInvoiceAmountLoc"/>
+        <result column="is_approved" property="isApproved"/>
+        <result column="is_signfor" property="isSignfor"/>
+        <result column="is_checked" property="isChecked"/>
+        <result column="is_cleared" property="isCleared"/>
+        <result column="version" property="version"/>
+        <result column="status" property="status"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="remarks" property="remarks"/>
+    </resultMap>
+
+
+    <select id="selectFinStlBillsItemsPage" resultMap="finStlBillsItemsResultMap">
+        select * from los_fin_stl_bills_items where is_deleted = 0
+    </select>
+
+</mapper>

+ 42 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/mapper/FinStlBillsMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      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.finance.stl.mapper;
+
+import org.springblade.los.finance.stl.entity.FinStlBills;
+import org.springblade.los.finance.stl.vo.FinStlBillsVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 业务-财务对账单和结算 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+public interface FinStlBillsMapper extends BaseMapper<FinStlBills> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param finStlBills
+	 * @return
+	 */
+	List<FinStlBillsVO> selectFinStlBillsPage(IPage page, FinStlBillsVO finStlBills);
+
+}

+ 86 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/mapper/FinStlBillsMapper.xml

@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.los.finance.stl.mapper.FinStlBillsMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="finStlBillsResultMap" type="org.springblade.los.finance.stl.entity.FinStlBills">
+        <id column="id" property="id"/>
+        <result column="branch_id" property="branchId"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_user_name" property="createUserName"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="create_dept_name" property="createDeptName"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_user_name" property="updateUserName"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="business_type" property="businessType"/>
+        <result column="bill_no" property="billNo"/>
+        <result column="bill_date" property="billDate"/>
+        <result column="corp_id" property="corpId"/>
+        <result column="corp_cn_name" property="corpCnName"/>
+        <result column="corp_en_name" property="corpEnName"/>
+        <result column="corp_is_signed" property="corpIsSigned"/>
+        <result column="corp_argreement_no" property="corpArgreementNo"/>
+        <result column="corp_acc_remarks" property="corpAccRemarks"/>
+        <result column="business_types" property="businessTypes"/>
+        <result column="business_no" property="businessNo"/>
+        <result column="account_no" property="accountNo"/>
+        <result column="check_no" property="checkNo"/>
+        <result column="dept_id" property="deptId"/>
+        <result column="dept_name" property="deptName"/>
+        <result column="operator_id" property="operatorId"/>
+        <result column="operator_name" property="operatorName"/>
+        <result column="sales_id" property="salesId"/>
+        <result column="sales_name" property="salesName"/>
+        <result column="dc" property="dc"/>
+        <result column="cur_code" property="curCode"/>
+        <result column="vessel_id" property="vesselId"/>
+        <result column="vessel_cn_name" property="vesselCnName"/>
+        <result column="vessel_en_name" property="vesselEnName"/>
+        <result column="voyage_no" property="voyageNo"/>
+        <result column="mblno" property="mblno"/>
+        <result column="hblno" property="hblno"/>
+        <result column="account_date_from" property="accountDateFrom"/>
+        <result column="account_date_to" property="accountDateTo"/>
+        <result column="audit_date_from" property="auditDateFrom"/>
+        <result column="audit_date_to" property="auditDateTo"/>
+        <result column="invoice_no" property="invoiceNo"/>
+        <result column="iq_no" property="iqNo"/>
+        <result column="fee_id" property="feeId"/>
+        <result column="fee_code" property="feeCode"/>
+        <result column="fee_cn_name" property="feeCnName"/>
+        <result column="fee_en_name" property="feeEnName"/>
+        <result column="is_approved" property="isApproved"/>
+        <result column="is_signfor" property="isSignfor"/>
+        <result column="is_checked" property="isChecked"/>
+        <result column="is_cleared" property="isCleared"/>
+        <result column="is_invoice" property="isInvoice"/>
+        <result column="is_tax" property="isTax"/>
+        <result column="voucher_type" property="voucherType"/>
+        <result column="voucher_no" property="voucherNo"/>
+        <result column="voucher_date" property="voucherDate"/>
+        <result column="amount_dr" property="amountDr"/>
+        <result column="amount_cr" property="amountCr"/>
+        <result column="amount_dr_usd" property="amountDrUsd"/>
+        <result column="amount_cr_usd" property="amountCrUsd"/>
+        <result column="amount_dr_loc" property="amountDrLoc"/>
+        <result column="amount_cr_loc" property="amountCrLoc"/>
+        <result column="amount_dr_net" property="amountDrNet"/>
+        <result column="amount_cr_net" property="amountCrNet"/>
+        <result column="amount_dr_usd_net" property="amountDrUsdNet"/>
+        <result column="amount_cr_usd_net" property="amountCrUsdNet"/>
+        <result column="amount_dr_loc_net" property="amountDrLocNet"/>
+        <result column="amount_cr_loc_net" property="amountCrLocNet"/>
+        <result column="version" property="version"/>
+        <result column="status" property="status"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="remarks" property="remarks"/>
+    </resultMap>
+
+
+    <select id="selectFinStlBillsPage" resultMap="finStlBillsResultMap">
+        select * from los_fin_stl_bills where is_deleted = 0
+    </select>
+
+</mapper>

+ 42 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/mapper/FinStlBillsVoucherItemsMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      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.finance.stl.mapper;
+
+import org.springblade.los.finance.stl.entity.FinStlBillsVoucherItems;
+import org.springblade.los.finance.stl.vo.FinStlBillsVoucherItemsVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 业务-财务结算单凭证明细 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+public interface FinStlBillsVoucherItemsMapper extends BaseMapper<FinStlBillsVoucherItems> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param finStlBillsVoucherItems
+	 * @return
+	 */
+	List<FinStlBillsVoucherItemsVO> selectFinStlBillsVoucherItemsPage(IPage page, FinStlBillsVoucherItemsVO finStlBillsVoucherItems);
+
+}

+ 51 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/mapper/FinStlBillsVoucherItemsMapper.xml

@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.los.finance.stl.mapper.FinStlBillsVoucherItemsMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="finStlBillsVoucherItemsResultMap" type="org.springblade.los.finance.stl.entity.FinStlBillsVoucherItems">
+        <id column="id" property="id"/>
+        <result column="branch_id" property="branchId"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_user_name" property="createUserName"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="create_dept_name" property="createDeptName"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_user_name" property="updateUserName"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="pid" property="pid"/>
+        <result column="line_no" property="lineNo"/>
+        <result column="account_id" property="accountId"/>
+        <result column="account_code" property="accountCode"/>
+        <result column="account_cn_name" property="accountCnName"/>
+        <result column="account_en_name" property="accountEnName"/>
+        <result column="account_full_name" property="accountFullName"/>
+        <result column="account_property" property="accountProperty"/>
+        <result column="account_level" property="accountLevel"/>
+        <result column="dc" property="dc"/>
+        <result column="is_foreign" property="isForeign"/>
+        <result column="is_quantity" property="isQuantity"/>
+        <result column="is_corp" property="isCorp"/>
+        <result column="is_dept" property="isDept"/>
+        <result column="is_empl" property="isEmpl"/>
+        <result column="is_item" property="isItem"/>
+        <result column="descr" property="descr"/>
+        <result column="amount_dr" property="amountDr"/>
+        <result column="amount_cr" property="amountCr"/>
+        <result column="amount_dr_usd" property="amountDrUsd"/>
+        <result column="amount_cr_usd" property="amountCrUsd"/>
+        <result column="amount_dr_loc" property="amountDrLoc"/>
+        <result column="amount_cr_loc" property="amountCrLoc"/>
+        <result column="version" property="version"/>
+        <result column="status" property="status"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="remarks" property="remarks"/>
+    </resultMap>
+
+
+    <select id="selectFinStlBillsVoucherItemsPage" resultMap="finStlBillsVoucherItemsResultMap">
+        select * from los_fin_stl_bills_voucher_items where is_deleted = 0
+    </select>
+
+</mapper>

+ 41 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/IFinStlBillsItemsService.java

@@ -0,0 +1,41 @@
+/*
+ *      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.finance.stl.service;
+
+import org.springblade.los.finance.stl.entity.FinStlBillsItems;
+import org.springblade.los.finance.stl.vo.FinStlBillsItemsVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 业务-财务对账单和结算单明细 服务类
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+public interface IFinStlBillsItemsService extends IService<FinStlBillsItems> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param finStlBillsItems
+	 * @return
+	 */
+	IPage<FinStlBillsItemsVO> selectFinStlBillsItemsPage(IPage<FinStlBillsItemsVO> page, FinStlBillsItemsVO finStlBillsItems);
+
+}

+ 78 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/IFinStlBillsService.java

@@ -0,0 +1,78 @@
+/*
+ *      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.finance.stl.service;
+
+import org.springblade.core.tool.api.R;
+import org.springblade.los.finance.stl.entity.FinStlBills;
+import org.springblade.los.finance.stl.vo.FinStlBillsVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.List;
+
+/**
+ * 业务-财务对账单和结算 服务类
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+public interface IFinStlBillsService extends IService<FinStlBills> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param finStlBills
+	 * @return
+	 */
+	IPage<FinStlBillsVO> selectFinStlBillsPage(IPage<FinStlBillsVO> page, FinStlBillsVO finStlBills);
+
+	/**
+	 * 详情
+	 * @param finStlBills
+	 * @return
+	 */
+	FinStlBills detail(FinStlBills finStlBills);
+
+	/**
+	 * 新增或修改 业务-财务对账单和结算
+	 * @param finStlBills
+	 * @return
+	 */
+	R submit(FinStlBills finStlBills);
+
+	/**
+	 * 财务对账单和结算 确认
+	 * @param finStlBills
+	 * @return
+	 */
+	R confirm(FinStlBills finStlBills);
+
+	/**
+	 * 财务对账单和结算 撤销
+	 * @param finStlBills
+	 * @return
+	 */
+	R revoke(FinStlBills finStlBills);
+
+	/**
+	 * 删除 业务-财务对账单和结算
+	 * @param toLongList
+	 * @return
+	 */
+	R deleteByIds(List<Long> toLongList);
+}

+ 41 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/IFinStlBillsVoucherItemsService.java

@@ -0,0 +1,41 @@
+/*
+ *      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.finance.stl.service;
+
+import org.springblade.los.finance.stl.entity.FinStlBillsVoucherItems;
+import org.springblade.los.finance.stl.vo.FinStlBillsVoucherItemsVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 业务-财务结算单凭证明细 服务类
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+public interface IFinStlBillsVoucherItemsService extends IService<FinStlBillsVoucherItems> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param finStlBillsVoucherItems
+	 * @return
+	 */
+	IPage<FinStlBillsVoucherItemsVO> selectFinStlBillsVoucherItemsPage(IPage<FinStlBillsVoucherItemsVO> page, FinStlBillsVoucherItemsVO finStlBillsVoucherItems);
+
+}

+ 41 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsItemsServiceImpl.java

@@ -0,0 +1,41 @@
+/*
+ *      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.finance.stl.service.impl;
+
+import org.springblade.los.finance.stl.entity.FinStlBillsItems;
+import org.springblade.los.finance.stl.vo.FinStlBillsItemsVO;
+import org.springblade.los.finance.stl.mapper.FinStlBillsItemsMapper;
+import org.springblade.los.finance.stl.service.IFinStlBillsItemsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 业务-财务对账单和结算单明细 服务实现类
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+@Service
+public class FinStlBillsItemsServiceImpl extends ServiceImpl<FinStlBillsItemsMapper, FinStlBillsItems> implements IFinStlBillsItemsService {
+
+	@Override
+	public IPage<FinStlBillsItemsVO> selectFinStlBillsItemsPage(IPage<FinStlBillsItemsVO> page, FinStlBillsItemsVO finStlBillsItems) {
+		return page.setRecords(baseMapper.selectFinStlBillsItemsPage(page, finStlBillsItems));
+	}
+
+}

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

@@ -0,0 +1,284 @@
+/*
+ *      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.finance.stl.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.seata.spring.annotation.GlobalTransactional;
+import lombok.AllArgsConstructor;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.los.business.sea.entity.Bills;
+import org.springblade.los.business.sea.mapper.BillsMapper;
+import org.springblade.los.finance.fee.entity.FinAccBills;
+import org.springblade.los.finance.fee.service.IFinAccBillsService;
+import org.springblade.los.finance.stl.entity.FinStlBills;
+import org.springblade.los.finance.stl.entity.FinStlBillsItems;
+import org.springblade.los.finance.stl.entity.FinStlBillsVoucherItems;
+import org.springblade.los.finance.stl.mapper.FinStlBillsMapper;
+import org.springblade.los.finance.stl.service.IFinStlBillsItemsService;
+import org.springblade.los.finance.stl.service.IFinStlBillsService;
+import org.springblade.los.finance.stl.service.IFinStlBillsVoucherItemsService;
+import org.springblade.los.finance.stl.vo.FinStlBillsVO;
+import org.springblade.system.feign.ISysClient;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 业务-财务对账单和结算 服务实现类
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+@Service
+@AllArgsConstructor
+public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinStlBills> implements IFinStlBillsService {
+
+	private final ISysClient sysClient;
+
+	private final IFinStlBillsItemsService finStlBillsItemsService;
+
+	private final IFinStlBillsVoucherItemsService finStlBillsVoucherItemsService;
+
+	private final IFinAccBillsService finAccBillsService;
+
+	private final BillsMapper billsMapper;
+
+	@Override
+	public IPage<FinStlBillsVO> selectFinStlBillsPage(IPage<FinStlBillsVO> page, FinStlBillsVO finStlBills) {
+		return page.setRecords(baseMapper.selectFinStlBillsPage(page, finStlBills));
+	}
+
+	@Override
+	public FinStlBills detail(FinStlBills finStlBills) {
+		if (finStlBills.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		FinStlBills detail = baseMapper.selectById(finStlBills.getId());
+		detail.setFinStlBillsItemsList(finStlBillsItemsService.list(new LambdaQueryWrapper<FinStlBillsItems>()
+			.eq(FinStlBillsItems::getIsDeleted, 0)
+			.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
+			.eq(FinStlBillsItems::getPid, detail.getId())
+		));
+		detail.setFinStlBillsVoucherItemsList(finStlBillsVoucherItemsService.list(new LambdaQueryWrapper<FinStlBillsVoucherItems>()
+			.eq(FinStlBillsVoucherItems::getIsDeleted, 0)
+			.eq(FinStlBillsVoucherItems::getTenantId, AuthUtil.getTenantId())
+			.eq(FinStlBillsVoucherItems::getPid, detail.getId())
+		));
+		return detail;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
+	public R submit(FinStlBills finStlBills) {
+		String deptId = "";
+		String deptName = "";
+		//获取部门ids对应中文名
+		if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+			deptId = AuthUtil.getDeptId();
+			R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
+			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+				deptName = String.join(",", res.getData());
+			}
+		}
+		if (finStlBills.getId() == null) {
+			finStlBills.setCreateTime(new Date());
+			finStlBills.setCreateUser(AuthUtil.getUserId());
+			finStlBills.setCreateUserName(AuthUtil.getUserName());
+			if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+				finStlBills.setCreateDept(deptId);
+				finStlBills.setBranchId(deptId);
+				finStlBills.setCreateDeptName(deptName);
+			}
+		} else {
+			finStlBills.setUpdateUser(AuthUtil.getUserId());
+			finStlBills.setUpdateTime(new Date());
+			finStlBills.setUpdateUserName(AuthUtil.getUserName());
+		}
+		this.saveOrUpdate(finStlBills);
+		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
+			for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
+				item.setPid(finStlBills.getId());
+				if (item.getId() == null) {
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setCreateUserName(AuthUtil.getUserName());
+					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+						item.setCreateDept(deptId);
+						item.setBranchId(deptId);
+						item.setCreateDeptName(deptName);
+					}
+				} else {
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setUpdateTime(new Date());
+					item.setUpdateUserName(AuthUtil.getUserName());
+				}
+			}
+			finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
+		}
+		return R.data(finStlBills);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
+	public R confirm(FinStlBills finStlBills) {
+		if (finStlBills.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		FinStlBills detail = baseMapper.selectById(finStlBills.getId());
+		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
+			for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
+				item.setIsChecked(1);
+				item.setBillDate(finStlBills.getBillDate());
+				item.setUpdateUser(AuthUtil.getUserId());
+				item.setUpdateTime(new Date());
+				item.setUpdateUserName(AuthUtil.getUserName());
+			}
+			finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
+			List<Long> accIds = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillId)
+				.filter(Objects::nonNull).collect(Collectors.toList());
+			if (accIds.size() > 0 && accIds.size() == finStlBills.getFinStlBillsItemsList().size()) {
+				List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
+					.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
+					.eq(FinAccBills::getIsDeleted, 0)
+					.in(FinAccBills::getId, accIds)
+					.eq(FinAccBills::getIsChecked, 0));
+				if (accIds.size() == finAccBillsList.size()) {
+					for (FinAccBills item : finAccBillsList) {
+						item.setIsChecked(1);
+						item.setUpdateUser(AuthUtil.getUserId());
+						item.setUpdateTime(new Date());
+						item.setUpdateUserName(AuthUtil.getUserName());
+					}
+					List<Bills> billsList = new ArrayList<>();
+					List<Long> ids = finAccBillsList.stream().map(FinAccBills::getBusinessBillId).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);
+					}
+					finAccBillsService.saveOrUpdateBatch(finAccBillsList);
+				} else {
+					throw new RuntimeException("未找到对应账单信息");
+				}
+			} else {
+				throw new RuntimeException("未找到对应账单信息");
+			}
+		}
+		detail.setIsChecked(1);
+		baseMapper.updateById(detail);
+		return R.data(detail);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
+	public R revoke(FinStlBills finStlBills) {
+		if (finStlBills.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		FinStlBills detail = baseMapper.selectById(finStlBills.getId());
+		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
+			for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
+				item.setIsChecked(0);
+				item.setBillDate(finStlBills.getBillDate());
+				item.setUpdateUser(AuthUtil.getUserId());
+				item.setUpdateTime(new Date());
+				item.setUpdateUserName(AuthUtil.getUserName());
+			}
+			finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
+			List<Long> accIds = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillId)
+				.filter(Objects::nonNull).collect(Collectors.toList());
+			if (accIds.size() > 0 && accIds.size() == finStlBills.getFinStlBillsItemsList().size()) {
+				List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
+					.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
+					.eq(FinAccBills::getIsDeleted, 0)
+					.in(FinAccBills::getId, accIds)
+					.eq(FinAccBills::getIsChecked, 1));
+				if (accIds.size() == finAccBillsList.size()) {
+					for (FinAccBills item : finAccBillsList) {
+						item.setIsChecked(0);
+						item.setUpdateUser(AuthUtil.getUserId());
+						item.setUpdateTime(new Date());
+						item.setUpdateUserName(AuthUtil.getUserName());
+					}
+					finAccBillsService.saveOrUpdateBatch(finAccBillsList);
+					List<Bills> billsList = new ArrayList<>();
+					List<Long> ids = finAccBillsList.stream().map(FinAccBills::getBusinessBillId).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) {
+						if (item.getBillingStatus() == 0) {
+							throw new RuntimeException("撤销对账失败");
+						}
+						item.setBillingStatus(item.getBillingStatus() - 1);
+						billsMapper.updateById(item);
+					}
+				} else {
+					throw new RuntimeException("未找到对应账单信息");
+				}
+			} else {
+				throw new RuntimeException("未找到对应账单信息");
+			}
+		}
+		detail.setIsChecked(2);
+		baseMapper.updateById(detail);
+		return R.data(detail);
+	}
+
+	@Override
+	public R deleteByIds(List<Long> toLongList) {
+		List<FinStlBills> finStlBills = baseMapper.selectList(new LambdaQueryWrapper<FinStlBills>()
+			.eq(FinStlBills::getTenantId, AuthUtil.getTenantId())
+			.eq(FinStlBills::getIsDeleted, 0)
+			.in(FinStlBills::getId, toLongList));
+		for (FinStlBills item : finStlBills) {
+			if (item.getIsChecked() == 1) {
+				throw new RuntimeException("已对账,删除失败");
+			}
+			if (finStlBillsItemsService.count(new LambdaQueryWrapper<FinStlBillsItems>()
+				.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
+				.eq(FinStlBillsItems::getIsDeleted, 0)
+				.eq(FinStlBillsItems::getPid, item.getId())) > 0) {
+				throw new RuntimeException("存在明细,请先删除明细");
+			}
+		}
+		List<Long> ids = finStlBills.stream().map(FinStlBills::getId).collect(Collectors.toList());
+		this.removeByIds(ids);
+		return R.data("操作成功");
+	}
+
+}

+ 41 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsVoucherItemsServiceImpl.java

@@ -0,0 +1,41 @@
+/*
+ *      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.finance.stl.service.impl;
+
+import org.springblade.los.finance.stl.entity.FinStlBillsVoucherItems;
+import org.springblade.los.finance.stl.vo.FinStlBillsVoucherItemsVO;
+import org.springblade.los.finance.stl.mapper.FinStlBillsVoucherItemsMapper;
+import org.springblade.los.finance.stl.service.IFinStlBillsVoucherItemsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 业务-财务结算单凭证明细 服务实现类
+ *
+ * @author BladeX
+ * @since 2023-11-10
+ */
+@Service
+public class FinStlBillsVoucherItemsServiceImpl extends ServiceImpl<FinStlBillsVoucherItemsMapper, FinStlBillsVoucherItems> implements IFinStlBillsVoucherItemsService {
+
+	@Override
+	public IPage<FinStlBillsVoucherItemsVO> selectFinStlBillsVoucherItemsPage(IPage<FinStlBillsVoucherItemsVO> page, FinStlBillsVoucherItemsVO finStlBillsVoucherItems) {
+		return page.setRecords(baseMapper.selectFinStlBillsVoucherItemsPage(page, finStlBillsVoucherItems));
+	}
+
+}