Kaynağa Gözat

1.决策分析统计计算逻辑修改
2.财务增加提单号,分单号检索条件字段
3.自动生成的费用增加创建人
4.增加HMMedi
5.生成账单增加汇率,币别
6.费用明细保存单据日期判断是否为空,为空赋默认值
7.放箱号列表排序修改
8.加锁接口修改

纪新园 6 gün önce
ebeveyn
işleme
e5013e4b21
31 değiştirilmiş dosya ile 964 ekleme ve 130 silme
  1. 30 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/box/entity/TradingBox.java
  2. 2 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/Bills.java
  3. 10 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/invoices/entity/FinInvoices.java
  4. 10 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/entity/FinStlBills.java
  5. 34 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/FeeSummaryDetailNotRD.java
  6. 56 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/FeeSummaryDetailRC.java
  7. 56 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/FeeSummaryDetailRD.java
  8. 34 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/FeeSummaryRC.java
  9. 34 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/FeeSummaryRD.java
  10. 40 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/FinanceProfitDtoList.java
  11. 1 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/view/entity/FinanceProfit.java
  12. 0 1
      blade-service/blade-client/src/main/java/org/springblade/client/lock/controller/LockController.java
  13. 3 0
      blade-service/blade-los/src/main/java/org/springblade/los/Util/BillUtils.java
  14. 8 8
      blade-service/blade-los/src/main/java/org/springblade/los/Util/Regular_HMM.java
  15. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/box/controller/PutBoxController.java
  16. 5 2
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/ExpenseApplicationServiceImpl.java
  17. 31 5
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/TradingBoxServiceImpl.java
  18. 63 4
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java
  19. 4 2
      blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java
  20. 11 1
      blade-service/blade-los/src/main/java/org/springblade/los/edi/service/impl/EdiTypesServiceImpl.java
  21. 6 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/agency/service/impl/AgencyFeeSettingServiceImpl.java
  22. 127 44
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/mapper/FinAccBillsMapper.xml
  23. 39 11
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java
  24. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FinAccBillsServiceImpl.java
  25. 4 1
      blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/controller/FinInvoicesController.java
  26. 20 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/impl/FinInvoicesServiceImpl.java
  27. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/controller/FinStlBillsController.java
  28. 25 10
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java
  29. 37 0
      blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/controller/FinanceStatisticsController.java
  30. 266 40
      blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/impl/StatisticAnalysisServiceImpl.java
  31. 3 0
      blade-service/blade-los/src/main/java/org/springblade/los/view/mapper/FinanceProfitMapper.xml

+ 30 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/box/entity/TradingBox.java

@@ -272,24 +272,28 @@ public class TradingBox implements Serializable {
 	 * 场站
 	 */
 	@ApiModelProperty(value = "场站")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Long stationId;
 
 	/**
 	 * 场站编码
 	 */
 	@ApiModelProperty(value = "场站编码")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String stationCode;
 
 	/**
 	 * 场站中文
 	 */
 	@ApiModelProperty(value = "场站中文")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String stationCname;
 
 	/**
 	 * 场站英文
 	 */
 	@ApiModelProperty(value = "场站英文")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String stationEname;
 
 	/**
@@ -387,41 +391,49 @@ public class TradingBox implements Serializable {
 	 * 起运港提/放箱地点
 	 */
 	@ApiModelProperty(value = "起运港提/放箱地点")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Long polStationId;
 	/**
 	 * 起运港提/放箱地点编码
 	 */
 	@ApiModelProperty(value = "起运港提/放箱地点编码")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String polStationCode;
 	/**
 	 * 起运港提/放箱地点中文
 	 */
 	@ApiModelProperty(value = "起运港提/放箱地点中文")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String polStationCname;
 	/**
 	 * 起运港提/放箱地点英文
 	 */
 	@ApiModelProperty(value = "起运港提/放箱地点英文")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String polStationEname;
 	/**
 	 * 目的港还箱堆场
 	 */
 	@ApiModelProperty(value = "目的港还箱堆场")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Long podStationId;
 	/**
 	 * 目的港还箱堆场编码
 	 */
 	@ApiModelProperty(value = "目的港还箱堆场编码")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String podStationCode;
 	/**
 	 * 目的港还箱堆场中文
 	 */
 	@ApiModelProperty(value = "目的港还箱堆场中文")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String podStationCname;
 	/**
 	 * 目的港还箱堆场英文
 	 */
 	@ApiModelProperty(value = "目的港还箱堆场英文")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String podStationEname;
 	/**
 	 * 放箱号
@@ -494,21 +506,25 @@ public class TradingBox implements Serializable {
 	 * 起运港场站
 	 */
 	@ApiModelProperty(value = "起运港场站")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Long polCyId;
 	/**
 	 * 起运港场站编码
 	 */
 	@ApiModelProperty(value = "起运港场站编码")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String polCyCode;
 	/**
 	 * 起运港场站中文
 	 */
 	@ApiModelProperty(value = "起运港场站中文")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String polCyCname;
 	/**
 	 * 起运港场站英文
 	 */
 	@ApiModelProperty(value = "起运港场站英文")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String polCyEname;
 
 	/**
@@ -609,48 +625,56 @@ public class TradingBox implements Serializable {
 	 * 起运港场站地址
 	 */
 	@ApiModelProperty(value = "起运港场站地址")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String polCyAddress;
 
 	/**
 	 * 起运港场站联系人
 	 */
 	@ApiModelProperty(value = "起运港场站联系人")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String polCyContact;
 
 	/**
 	 * 起运港场站邮箱
 	 */
 	@ApiModelProperty(value = "起运港场站邮箱")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String polCyEmail;
 
 	/**
 	 * 起运港场站电话
 	 */
 	@ApiModelProperty(value = "起运港场站电话")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String polCyTel;
 
 	/**
 	 * 目的港场站地址
 	 */
 	@ApiModelProperty(value = "目的港场站地址")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String podCyAddress;
 
 	/**
 	 * 目的港场站联系人
 	 */
 	@ApiModelProperty(value = "目的港场站联系人")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String podCyContact;
 
 	/**
 	 * 目的港场站邮箱
 	 */
 	@ApiModelProperty(value = "目的港场站邮箱")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String podCyEmail;
 
 	/**
 	 * 目的港场站电话
 	 */
 	@ApiModelProperty(value = "目的港场站电话")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String podCyTel;
 
 	/**
@@ -660,6 +684,12 @@ public class TradingBox implements Serializable {
 	private String offhireReference;
 
 	/**
+	 * 放箱号优先等级
+	 */
+	@ApiModelProperty(value = "放箱号优先等级")
+	private String priorityLevel;
+
+	/**
 	 * 临时数据
 	 */
 	@TableField(exist = false)

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

@@ -1512,11 +1512,13 @@ public class Bills implements Serializable {
 	 * 客服
 	 */
 	@ApiModelProperty(value = "客服")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Long customerServiceId;
 	/**
 	 * 客服
 	 */
 	@ApiModelProperty(value = "客服")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String customerServiceName;
 
 	/**

+ 10 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/invoices/entity/FinInvoices.java

@@ -305,6 +305,16 @@ public class FinInvoices implements Serializable {
 	@ApiModelProperty(value = "HBL NO,用于检索费用")
 	private String hblno;
 	/**
+	 * MBL NO,用于检索费用
+	 */
+	@ApiModelProperty(value = "MBL NO,用于检索费用")
+	private String mblnos;
+	/**
+	 * HBL NO,用于检索费用
+	 */
+	@ApiModelProperty(value = "HBL NO,用于检索费用")
+	private String hblnos;
+	/**
 	 * 订舱,用于检索费用
 	 */
 	@ApiModelProperty(value = "订舱,用于检索费用")

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

@@ -256,6 +256,16 @@ public class FinStlBills implements Serializable {
 	 */
 	@ApiModelProperty(value = "HB/L NO")
 	private String hblno;
+	/**
+	 * MB/L NO
+	 */
+	@ApiModelProperty(value = "MB/L NO")
+	private String mblnos;
+	/**
+	 * HB/L NO
+	 */
+	@ApiModelProperty(value = "HB/L NO")
+	private String hblnos;
 
 	/**
 	 * 业务开始日期

+ 34 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/FeeSummaryDetailNotRD.java

@@ -1,5 +1,6 @@
 package org.springblade.los.statisticAnalysis;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.alibaba.excel.annotation.write.style.ContentRowHeight;
@@ -49,14 +50,47 @@ public class FeeSummaryDetailNotRD {
 	private BigDecimal amountUsdNot;
 	@ExcelProperty(value = "人民币")
 	private BigDecimal amountNot;
+	@ExcelProperty(value = "HKD")
+	private BigDecimal amountHKDNot;
+	@ExcelProperty(value = "VND")
+	private BigDecimal amountVNDNot;
+	@ExcelProperty(value = "SGD")
+	private BigDecimal amountSGDNot;
+	/**
+	 * 其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountOtherNot;
 	@ExcelProperty(value = "开票USD")
 	private BigDecimal amountInvoicingUsd;
 	@ExcelProperty(value = "开票RMB")
 	private BigDecimal amountInvoicing;
+	@ExcelProperty(value = "开票HKD")
+	private BigDecimal amountnvoicingHKD;
+	@ExcelProperty(value = "开票VND")
+	private BigDecimal amountnvoicingVND;
+	@ExcelProperty(value = "开票SGD")
+	private BigDecimal amountnvoicingSGD;
+	/**
+	 * 开票其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountnvoicingOther;
 	@ExcelProperty(value = "未开USD")
 	private BigDecimal amountInvoicingUsdNot;
 	@ExcelProperty(value = "未开RMB")
 	private BigDecimal amountInvoicingNot;
+	@ExcelProperty(value = "未开HKD")
+	private BigDecimal amountnvoicingHKDNot;
+	@ExcelProperty(value = "未开VND")
+	private BigDecimal amountnvoicingVNDNot;
+	@ExcelProperty(value = "未开SGD")
+	private BigDecimal amountnvoicingSGDNot;
+	/**
+	 * 未开其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountnvoicingOtherNot;
 	@ExcelProperty(value = "业务员")
 	private String srcCnName;
 	@ExcelProperty(value = "操作员")

+ 56 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/FeeSummaryDetailRC.java

@@ -1,5 +1,6 @@
 package org.springblade.los.statisticAnalysis;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.alibaba.excel.annotation.write.style.ContentRowHeight;
@@ -30,22 +31,77 @@ public class FeeSummaryDetailRC {
 	private BigDecimal amountUsd;
 	@ExcelProperty(value = "应付人民币")
 	private BigDecimal amount;
+	@ExcelProperty(value = "应付HKD")
+	private BigDecimal amountHKD;
+	@ExcelProperty(value = "应付VND")
+	private BigDecimal amountVND;
+	@ExcelProperty(value = "应付SGD")
+	private BigDecimal amountSGD;
+	/**
+	 * 应付其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountOther;
 	@ExcelProperty(value = "已付美金")
 	private BigDecimal amountUsdAlready;
 	@ExcelProperty(value = "已付人民币")
 	private BigDecimal amountAlready;
+	@ExcelProperty(value = "已付HKD")
+	private BigDecimal amountHKDAlready;
+	@ExcelProperty(value = "已付VND")
+	private BigDecimal amountVNDAlready;
+	@ExcelProperty(value = "已付SGD")
+	private BigDecimal amountSGDAlready;
+	/**
+	 * 已付其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountOtherAlready;
 	@ExcelProperty(value = "未付美金")
 	private BigDecimal amountUsdNot;
 	@ExcelProperty(value = "未付人民币")
 	private BigDecimal amountNot;
+	@ExcelProperty(value = "未付HKD")
+	private BigDecimal amountHKDNot;
+	@ExcelProperty(value = "未付VND")
+	private BigDecimal amountVNDNot;
+	@ExcelProperty(value = "未付SGD")
+	private BigDecimal amountSGDNot;
+	/**
+	 * 未付其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountOtherNot;
 	@ExcelProperty(value = "开票美金")
 	private BigDecimal amountInvoicingUsd;
 	@ExcelProperty(value = "开票人民币")
 	private BigDecimal amountInvoicing;
+	@ExcelProperty(value = "开票HKD")
+	private BigDecimal amountnvoicingHKD;
+	@ExcelProperty(value = "开票VND")
+	private BigDecimal amountnvoicingVND;
+	@ExcelProperty(value = "开票SGD")
+	private BigDecimal amountnvoicingSGD;
+	/**
+	 * 开票其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountnvoicingOther;
 	@ExcelProperty(value = "未开美金")
 	private BigDecimal amountInvoicingUsdNot;
 	@ExcelProperty(value = "未开人民币")
 	private BigDecimal amountInvoicingNot;
+	@ExcelProperty(value = "未开HKD")
+	private BigDecimal amountnvoicingHKDNot;
+	@ExcelProperty(value = "未开VND")
+	private BigDecimal amountnvoicingVNDNot;
+	@ExcelProperty(value = "未开SGD")
+	private BigDecimal amountnvoicingSGDNot;
+	/**
+	 * 未开其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountnvoicingOtherNot;
 
 	/**
 	 * 所属公司

+ 56 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/FeeSummaryDetailRD.java

@@ -1,5 +1,6 @@
 package org.springblade.los.statisticAnalysis;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.alibaba.excel.annotation.write.style.ContentRowHeight;
@@ -37,22 +38,77 @@ public class FeeSummaryDetailRD {
 	private BigDecimal amountUsd;
 	@ExcelProperty(value = "应收人民币")
 	private BigDecimal amount;
+	@ExcelProperty(value = "应收HKD")
+	private BigDecimal amountHKD;
+	@ExcelProperty(value = "应收VND")
+	private BigDecimal amountVND;
+	@ExcelProperty(value = "应收SGD")
+	private BigDecimal amountSGD;
+	/**
+	 * 应收其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountOther;
 	@ExcelProperty(value = "已收美金")
 	private BigDecimal amountUsdAlready;
 	@ExcelProperty(value = "已收人民币")
 	private BigDecimal amountAlready;
+	@ExcelProperty(value = "已收HKD")
+	private BigDecimal amountHKDAlready;
+	@ExcelProperty(value = "已收VND")
+	private BigDecimal amountVNDAlready;
+	@ExcelProperty(value = "已收SGD")
+	private BigDecimal amountSGDAlready;
+	/**
+	 * 已收其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountOtherAlready;
 	@ExcelProperty(value = "未收美金")
 	private BigDecimal amountUsdNot;
 	@ExcelProperty(value = "未收人民币")
 	private BigDecimal amountNot;
+	@ExcelProperty(value = "未收HKD")
+	private BigDecimal amountHKDNot;
+	@ExcelProperty(value = "未收VND")
+	private BigDecimal amountVNDNot;
+	@ExcelProperty(value = "未收SGD")
+	private BigDecimal amountSGDNot;
+	/**
+	 * 未收其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountOtherNot;
 	@ExcelProperty(value = "开票美金")
 	private BigDecimal amountInvoicingUsd;
 	@ExcelProperty(value = "开票人民币")
 	private BigDecimal amountInvoicing;
+	@ExcelProperty(value = "开票HKD")
+	private BigDecimal amountnvoicingHKD;
+	@ExcelProperty(value = "开票VND")
+	private BigDecimal amountnvoicingVND;
+	@ExcelProperty(value = "开票SGD")
+	private BigDecimal amountnvoicingSGD;
+	/**
+	 * 开票其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountnvoicingOther;
 	@ExcelProperty(value = "未开美金")
 	private BigDecimal amountInvoicingUsdNot;
 	@ExcelProperty(value = "未开人民币")
 	private BigDecimal amountInvoicingNot;
+	@ExcelProperty(value = "未开HKD")
+	private BigDecimal amountnvoicingHKDNot;
+	@ExcelProperty(value = "未开VND")
+	private BigDecimal amountnvoicingVNDNot;
+	@ExcelProperty(value = "未开SGD")
+	private BigDecimal amountnvoicingSGDNot;
+	/**
+	 * 未开其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountnvoicingOtherNot;
 
 	/**
 	 * 所属公司

+ 34 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/FeeSummaryRC.java

@@ -1,5 +1,6 @@
 package org.springblade.los.statisticAnalysis;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.alibaba.excel.annotation.write.style.ContentRowHeight;
@@ -24,14 +25,47 @@ public class FeeSummaryRC {
 	private BigDecimal amountUsd;
 	@ExcelProperty(value = "应付人民币")
 	private BigDecimal amount;
+	@ExcelProperty(value = "应付HKD")
+	private BigDecimal amountHKD;
+	@ExcelProperty(value = "应付VND")
+	private BigDecimal amountVND;
+	@ExcelProperty(value = "应付SGD")
+	private BigDecimal amountSGD;
+	/**
+	 * 应付其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountOther;
 	@ExcelProperty(value = "已付美金")
 	private BigDecimal amountUsdAlready;
 	@ExcelProperty(value = "已付人民币")
 	private BigDecimal amountAlready;
+	@ExcelProperty(value = "已付HKD")
+	private BigDecimal amountHKDAlready;
+	@ExcelProperty(value = "已付VND")
+	private BigDecimal amountVNDAlready;
+	@ExcelProperty(value = "已付SGD")
+	private BigDecimal amountSGDAlready;
+	/**
+	 * 已付其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountOtherAlready;
 	@ExcelProperty(value = "未付美金")
 	private BigDecimal amountUsdNot;
 	@ExcelProperty(value = "未付人民币")
 	private BigDecimal amountNot;
+	@ExcelProperty(value = "未付HKD")
+	private BigDecimal amountHKDNot;
+	@ExcelProperty(value = "未付VND")
+	private BigDecimal amountVNDNot;
+	@ExcelProperty(value = "未付SGD")
+	private BigDecimal amountSGDNot;
+	/**
+	 * 未付其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountOtherNot;
 
 	/**
 	 * 所属公司

+ 34 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/FeeSummaryRD.java

@@ -1,5 +1,6 @@
 package org.springblade.los.statisticAnalysis;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.alibaba.excel.annotation.write.style.ContentRowHeight;
@@ -24,14 +25,47 @@ public class FeeSummaryRD {
 	private BigDecimal amountUsd;
 	@ExcelProperty(value = "应收人民币")
 	private BigDecimal amount;
+	@ExcelProperty(value = "应收HKD")
+	private BigDecimal amountHKD;
+	@ExcelProperty(value = "应收VND")
+	private BigDecimal amountVND;
+	@ExcelProperty(value = "应收SGD")
+	private BigDecimal amountSGD;
+	/**
+	 * 应收其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountOther;
 	@ExcelProperty(value = "已收美金")
 	private BigDecimal amountUsdAlready;
 	@ExcelProperty(value = "已收人民币")
 	private BigDecimal amountAlready;
+	@ExcelProperty(value = "已收HKD")
+	private BigDecimal amountHKDAlready;
+	@ExcelProperty(value = "已收VND")
+	private BigDecimal amountVNDAlready;
+	@ExcelProperty(value = "已收SGD")
+	private BigDecimal amountSGDAlready;
+	/**
+	 * 已收其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountOtherAlready;
 	@ExcelProperty(value = "未收美金")
 	private BigDecimal amountUsdNot;
 	@ExcelProperty(value = "未收人民币")
 	private BigDecimal amountNot;
+	@ExcelProperty(value = "未收HKD")
+	private BigDecimal amountHKDNot;
+	@ExcelProperty(value = "未收VND")
+	private BigDecimal amountVNDNot;
+	@ExcelProperty(value = "未收SGD")
+	private BigDecimal amountSGDNot;
+	/**
+	 * 未收其他
+	 */
+	@ExcelIgnore
+	private BigDecimal amountOtherNot;
 	/**
 	 * 所属公司
 	 */

+ 40 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/FinanceProfitDtoList.java

@@ -283,6 +283,21 @@ public class FinanceProfitDtoList {
 	@ExcelProperty(value = "未收SGD")
 	private BigDecimal notReceivedDrSgd;
 	/**
+	 * 应收(其他)
+	 */
+	@ExcelProperty(value = "应收其他")
+	private BigDecimal amountDrOther;
+	/**
+	 * 实收其他
+	 */
+	@ExcelProperty(value = "实收其他")
+	private BigDecimal realAmountDrOther;
+	/**
+	 *未收其他
+	 */
+	@ExcelProperty(value = "未收其他")
+	private BigDecimal notReceivedDrOther;
+	/**
 	 * 合计应收
 	 */
 	@ExcelProperty(value = "合计应收")
@@ -374,6 +389,21 @@ public class FinanceProfitDtoList {
 	@ExcelProperty(value = "未付SGD")
 	private BigDecimal notReceivedCrSgd;
 	/**
+	 * 应付(其他)
+	 */
+	@ExcelProperty(value = "应付其他")
+	private BigDecimal amountCrOther;
+	/**
+	 * 实付实收(其他)
+	 */
+	@ExcelProperty(value = "实付其他")
+	private BigDecimal realAmountCrOther;
+	/**
+	 * 未付其他
+	 */
+	@ExcelProperty(value = "未付其他")
+	private BigDecimal notReceivedCrOther;
+	/**
 	 * 合计应付
 	 */
 	@ExcelProperty(value = "合计应付")
@@ -426,6 +456,11 @@ public class FinanceProfitDtoList {
 	@ExcelProperty(value = "SGD利润")
 	private BigDecimal amountProfitSgd;
 	/**
+	 * 其他利润
+	 */
+	@ExcelProperty(value = "其他利润")
+	private BigDecimal amountProfitOther;
+	/**
 	 * 应收海运费
 	 */
 	@ExcelProperty(value = "应收海运费")
@@ -442,6 +477,11 @@ public class FinanceProfitDtoList {
 	private BigDecimal oceanFreightProfit;
 
 	/**
+	 * 主键
+	 */
+	@ExcelIgnore
+	private Long id;
+	/**
 	 * 委托人
 	 */
 	@ExcelIgnore

+ 1 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/view/entity/FinanceProfit.java

@@ -107,5 +107,6 @@ public class FinanceProfit implements Serializable {
 	private BigDecimal teu;
 	private BigDecimal teuTotal;
 	private String quantityCntrDescr;
+	private Long id;
 
 }

+ 0 - 1
blade-service/blade-client/src/main/java/org/springblade/client/lock/controller/LockController.java

@@ -208,7 +208,6 @@ public class LockController extends BladeController {
 		LambdaQueryWrapper<Lock> lockLambdaQueryWrapper=new LambdaQueryWrapper<>();
 		lockLambdaQueryWrapper
 			.eq(Lock::getBillId,billId)
-			.eq(Lock::getCreateDept,AuthUtil.getDeptId())
 			.eq(Lock::getMoudleName,moduleName)
 			.eq(Lock::getTableName,tableName)
 			.eq(Lock::getTenantId,AuthUtil.getTenantId());

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

@@ -383,6 +383,9 @@ public class BillUtils implements IBillUtils {
 	@Override
 	public FeeCenter addFeeCenterQuotation(Bills bills, String dc, int count, BFees fees, PreContainers items, List<BCurExrate> curExrateList, String exrateType, String type) {
 		FeeCenter feeCenter = new FeeCenter();
+		feeCenter.setCreateTime(new Date());
+		feeCenter.setCreateUserName(bills.getOperatorName());
+		feeCenter.setCreateUser(bills.getOperatorId());
 		feeCenter.setSrcCostId(items.getSrcCostId());
 		feeCenter.setSrcCostNo(items.getSrcCostNo());
 		feeCenter.setBranchId(bills.getBranchId());

+ 8 - 8
blade-service/blade-los/src/main/java/org/springblade/los/Util/Regular_HMM.java

@@ -89,7 +89,7 @@ public class Regular_HMM {
 				character += "装货港,";
 			}
 		}
-		//收货地代码
+		/*//收货地代码
 		if (ObjectUtils.isNull(ediData.getPlaceReceiptCode())) {
 			msg += "收货地代码,";
 		} else {
@@ -114,7 +114,7 @@ public class Regular_HMM {
 			} else {
 				character += "收货地,";
 			}
-		}
+		}*/
 		//卸货港代码
 		if (ObjectUtils.isNull(ediData.getPodCode())) {
 			msg += "卸货港代码,";
@@ -141,7 +141,7 @@ public class Regular_HMM {
 				character += "卸货港,";
 			}
 		}
-		//交货地代码
+		/*//交货地代码
 		if (ObjectUtils.isNull(ediData.getPlaceDeliveryCode())) {
 			msg += "交货地代码,";
 		} else {
@@ -205,7 +205,7 @@ public class Regular_HMM {
 			} else {
 				character += "中转港,";
 			}
-		}
+		}*/
 
 		if("danger".equals(ediData.getCargoType())){
 			if(ObjectUtils.isNull(ediData.getHsCode())){
@@ -288,14 +288,14 @@ public class Regular_HMM {
 			}
 		}
 
-		if (ObjectUtils.isNotNull(ediData.getHNotify2())) {
+		/*if (ObjectUtils.isNotNull(ediData.getHNotify2())) {
 			Map<String, String> mapString = RegularUtils.regularEn(ediData.getHNotify2(),false);
 			if ("200".equals(mapString.get("code"))) {
 				ediData.setHNotify2(mapString.get("susscess"));
 			} else {
 				character += "第二通知人,";
 			}
-		}
+		}*/
 
 		if (ObjectUtils.isNull(ediData.getMarks())) {
 			msg += "唛头,";
@@ -367,7 +367,7 @@ public class Regular_HMM {
 				if (ObjectUtils.isNull(map1.get("cntrQty"))) {
 					msg += "箱量,";
 				}
-				//冷藏通风量
+				/*//冷藏通风量
 				if (ObjectUtils.isNotNull(map1.get("ventilation"))) {
 					Map<String, String> mapString = RegularUtils.regularEn(map1.get("ventilation").toString(), true);
 					if ("200".equals(mapString.get("code"))) {
@@ -390,7 +390,7 @@ public class Regular_HMM {
 					} else {
 						character += "温度单位,";
 					}
-				}
+				}*/
 			}
 		}
 

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/box/controller/PutBoxController.java

@@ -98,7 +98,7 @@ public class PutBoxController extends BladeController {
 			.like(ObjectUtils.isNotNull(putBox.getSrcNo()), PutBox::getSrcNo, putBox.getSrcNo())
 			.like(ObjectUtils.isNotNull(putBox.getCode()), PutBox::getCode, putBox.getCode())
 			.eq(ObjectUtils.isNotNull(putBox.getPriorityLevel()), PutBox::getPriorityLevel, putBox.getPriorityLevel())
-			.orderByDesc(PutBox::getCreateTime);
+			.orderByAsc(PutBox::getPriorityLevel);
 		if (ObjectUtils.isNotNull(putBox.getEffectiveStartDate()) && ObjectUtils.isNotNull(putBox.getEffectiveEndDate())) {
 			SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
 			lambdaQueryWrapper.apply(ObjectUtils.isNotNull(putBox.getEffectiveStartDate()), "DATE_FORMAT(effective_start_date,'%Y-%m-%d') >= '" + formatter.format(putBox.getEffectiveStartDate()) + "'")

+ 5 - 2
blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/ExpenseApplicationServiceImpl.java

@@ -387,6 +387,7 @@ public class ExpenseApplicationServiceImpl extends ServiceImpl<ExpenseApplicatio
 				}
 				FinAccBills data = new FinAccBills();
 				data.setTrackingNumber(item.getTrackingNumber());
+				data.setCurCode(item.getCurCode());
 				data.setGenerationCorpId(item.getGenerationCorpId());
 				data.setGenerationCorpCnName(item.getGenerationCorpCnName());
 				data.setGenerationCorpEnName(item.getGenerationCorpEnName());
@@ -395,6 +396,7 @@ public class ExpenseApplicationServiceImpl extends ServiceImpl<ExpenseApplicatio
 				data.setCreateUserName(AuthUtil.getUserName());
 				data.setTaxRate(item.getTaxRate());
 				data.setAmountTax(item.getAmountTax());
+				data.setExrate(item.getExrate());
 				if (ObjectUtils.isNull(item.getBranchId())) {
 					data.setCreateDept(AuthUtil.getDeptId());
 					R<String> res = sysClient.getDeptName(Long.parseLong(AuthUtil.getDeptId()));
@@ -403,7 +405,7 @@ public class ExpenseApplicationServiceImpl extends ServiceImpl<ExpenseApplicatio
 						data.setBranchName(res.getData());
 						data.setDeptName(res.getData());
 					}
-					data.setBranchId(item.getBranchId());
+					data.setBranchId(AuthUtil.getDeptId());
 					data.setDeptId(Long.parseLong(AuthUtil.getDeptId()));
 				} else {
 					data.setCreateDept(item.getBranchId());
@@ -764,6 +766,7 @@ public class ExpenseApplicationServiceImpl extends ServiceImpl<ExpenseApplicatio
 					throw new RuntimeException("费用:" + item.getFeeCnName() + "已生成账单");
 				}
 				FinAccBills data = new FinAccBills();
+				data.setCurCode(item.getCurCode());
 				data.setTrackingNumber(item.getTrackingNumber());
 				data.setGenerationCorpId(item.getGenerationCorpId());
 				data.setGenerationCorpCnName(item.getGenerationCorpCnName());
@@ -779,7 +782,7 @@ public class ExpenseApplicationServiceImpl extends ServiceImpl<ExpenseApplicatio
 						data.setBranchName(res.getData());
 						data.setDeptName(res.getData());
 					}
-					data.setBranchId(item.getBranchId());
+					data.setBranchId(AuthUtil.getDeptId());
 					data.setDeptId(Long.parseLong(AuthUtil.getDeptId()));
 				} else {
 					data.setCreateDept(item.getBranchId());

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

@@ -501,6 +501,9 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 					item.setUpdateUserName(AuthUtil.getUserName());
 					item.setUpdateTime(new Date());
 				}
+				if (ObjectUtils.isNull(item.getBillDate())) {
+					item.setBillDate(new Date());
+				}
 			}
 			if ("OW-N,OW-F,XGFY".contains(tradingBox.getType())) {
 				tradingBox.setAmountD(amountD);
@@ -1670,6 +1673,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 				putBox.setPolCyContact(tradingBox.getPolCyContact());
 				putBox.setPolCyEmail(tradingBox.getPolCyEmail());
 				putBox.setPolCyTel(tradingBox.getPolCyTel());
+				putBox.setPriorityLevel(tradingBox.getPriorityLevel());
 				putBoxService.save(putBox);
 			}
 			return R.data(putBox);
@@ -2778,15 +2782,32 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 		int month = calendar.get(Calendar.MONTH) + 1; // 获取月份(注意需加上1,因为月份从0开始计数)
 		int day = calendar.get(Calendar.DATE);
 		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM");
-		List<TradingBoxItem> tradingBoxItemList = tradingBoxItemService.list(new LambdaQueryWrapper<TradingBoxItem>()
+		List<TradingBoxItem> tradingBoxItems = tradingBoxItemService.list(new LambdaQueryWrapper<TradingBoxItem>()
 			.eq(TradingBoxItem::getIsDeleted, 0)
 			.eq(TradingBoxItem::getTenantId, AuthUtil.getTenantId())
 			.eq(TradingBoxItem::getPid, id)
-			.apply("DATE_FORMAT(pol_pick_up_date,'%Y-%m') = '" + formatter.format(accountDate) + "'")
 			.eq(TradingBoxItem::getWhetherGeneratePickUpCost, "0"));
-		if (tradingBoxItemList.isEmpty()) {
-			throw new RuntimeException("箱明细已全部生成PickUp费");
+		if (tradingBoxItems.isEmpty()) {
+			throw new RuntimeException("未查到箱明细");
 		}
+		String text = "";
+		String texts = "";
+		for (TradingBoxItem item : tradingBoxItems) {
+			if (ObjectUtils.isNull(item.getPolPickUpDate())) {
+				text = text + "箱号:" + item.getCode() + "未出场,";
+			}
+			if ("1".equals(item.getWhetherGeneratePickUpCost())) {
+				texts = texts + "箱号:" + item.getCode() + "已生成PickUp费,";
+			}
+		}
+		if (ObjectUtils.isNotNull(text)) {
+			throw new RuntimeException(text);
+		}
+		if (ObjectUtils.isNotNull(texts)) {
+			throw new RuntimeException(texts);
+		}
+		List<TradingBoxItem> tradingBoxItemList = tradingBoxItems.stream().filter(e -> "0".equals(e.getWhetherGeneratePickUpCost()))
+			.collect(Collectors.toList());
 		BFees fees = bFeesService.getOne(new LambdaQueryWrapper<BFees>()
 			.eq(BFees::getTenantId, AuthUtil.getTenantId())
 			.eq(BFees::getIsDeleted, 0)
@@ -3119,6 +3140,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 			.eq(FeeCenter::getIsDeleted, 0)
 			.eq(FeeCenter::getPid, detail.getId()));
+		R<String> res = sysClient.getDeptName(Long.parseLong(AuthUtil.getDeptId()));
 		List<FeeCenter> feeCenterList = new ArrayList<>();
 		List<String> boxCodeList = tradingBox.getFeeCenterItemsList().stream().map(FeeCenterItems::getUnitNo).filter(Objects::nonNull)
 			.distinct().collect(Collectors.toList());
@@ -3172,6 +3194,10 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 			feeCenter.setPolCnName(detail.getPolCname());
 			feeCenter.setPolEnName(detail.getPolEname());
 			feeCenter.setAutomaticGenerated("1");
+			if (res.isSuccess()) {
+				feeCenter.setBranchName(res.getData());
+			}
+			feeCenter.setBranchId(AuthUtil.getDeptId());
 			if (new BigDecimal("0.00").compareTo(feeCenter.getAmount()) != 0) {
 				feeCenterList.add(feeCenter);
 			}
@@ -3405,7 +3431,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 				.eq(TradingBox::getWhetherEnable, "是")
 				.lt(TradingBox::getEffectiveDate, calendar.getTime())
 				.apply("find_in_set(type,'OW-N,OW-F') and suitcase_num = 0")
-				.orderByAsc(TradingBox::getEffectiveDate));
+				.orderByDesc(TradingBox::getExpiryDate));
 			for (TradingBox item : tradingBoxList) {
 				BoxReminderExcel excel = new BoxReminderExcel();
 				excel.setProvider(item.getPurchaseCompanyName());

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

@@ -578,9 +578,9 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				item.setVesselCnName(bills.getVesselCnName());
 				item.setVoyageNo(bills.getVoyageNo());
 				item.setMblno(bills.getMblno());
-				if (ObjectUtils.isNotNull(item.getSrcItemId())){
+				if (ObjectUtils.isNotNull(item.getSrcItemId())) {
 					item.setHblno(null);
-				}else{
+				} else {
 					item.setHblno(bills.getHblno());
 				}
 				item.setEtd(bills.getEtd());
@@ -1072,6 +1072,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 						item.setForeignCntyName(bills.getForeignCntyName());
 						item.setIssueAtId(bills.getIssueAtId());
 						item.setIssueAt(bills.getIssueAt());
+						item.setCabinType(bills.getCabinType());
 					}
 					this.updateBatchById(billsList);
 					billIds = billsList.stream().map(Bills::getId).collect(Collectors.toList());
@@ -1478,6 +1479,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				item.setUpdateTime(new Date());
 				item.setUpdateUser(AuthUtil.getUserId());
 				item.setUpdateUserName(AuthUtil.getUserName());
+				item.setCabinType(bills.getCabinType());
 			}
 			this.updateBatchById(billsList);
 			Integer teuTotal = bills.getTeuTotal();
@@ -3096,6 +3098,62 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			.eq(SeaBillsDetail::getTenantId, AuthUtil.getTenantId())
 			.eq(SeaBillsDetail::getPid, billsJk.getSrcBusId()));
 		if (seaBillsDetail != null) {
+			/*//HB/L 发货人
+			Long hshipperId = seaBillsDetail.getHshipperId();
+			String hshipperCode = seaBillsDetail.getHshipperCode();
+			String hshipperCnName = seaBillsDetail.getHshipperCnName();
+			String hshipperEnName = seaBillsDetail.getHshipperEnName();
+			String hshipperDetails = seaBillsDetail.getHshipperDetails();
+
+			//HB/L 收货人
+			Long hconsigneeId = seaBillsDetail.getHconsigneeId();
+			String hconsigneeCode = seaBillsDetail.getHconsigneeCode();
+			String hconsigneeCnName = seaBillsDetail.getHconsigneeCnName();
+			String hconsigneeEnName = seaBillsDetail.getHconsigneeEnName();
+			String hconsigneeDetails = seaBillsDetail.getHconsigneeDetails();
+
+			//HB/L  收货人=>发货人
+			seaBillsDetail.setHshipperId(hconsigneeId);
+			seaBillsDetail.setHshipperCode(hconsigneeCode);
+			seaBillsDetail.setHshipperCnName(hconsigneeCnName);
+			seaBillsDetail.setHshipperEnName(hconsigneeEnName);
+			seaBillsDetail.setHshipperDetails(hconsigneeDetails);
+
+			//HB/L  发货人=>收货人
+			seaBillsDetail.setHconsigneeId(hshipperId);
+			seaBillsDetail.setHconsigneeCode(hshipperCode);
+			seaBillsDetail.setHconsigneeCnName(hshipperCnName);
+			seaBillsDetail.setHconsigneeEnName(hshipperEnName);
+			seaBillsDetail.setHconsigneeDetails(hshipperDetails);
+
+			//MB/L 发货人
+			Long mshipperId = seaBillsDetail.getMshipperId();
+			String mshipperCode = seaBillsDetail.getMshipperCode();
+			String mshipperCnName = seaBillsDetail.getMshipperCnName();
+			String mshipperEnName = seaBillsDetail.getMshipperEnName();
+			String mshipperDetails = seaBillsDetail.getMshipperDetails();
+
+			//MB/L 收货人
+			Long mconsigneeId = seaBillsDetail.getMconsigneeId();
+			String mconsigneeCode = seaBillsDetail.getMconsigneeCode();
+			String mconsigneeCnName = seaBillsDetail.getMconsigneeCnName();
+			String mconsigneeEnName = seaBillsDetail.getMconsigneeEnName();
+			String mconsigneeDetails = seaBillsDetail.getMconsigneeDetails();
+
+			//MB/L  收货人=>发货人
+			seaBillsDetail.setMshipperId(mconsigneeId);
+			seaBillsDetail.setMshipperCode(mconsigneeCode);
+			seaBillsDetail.setMshipperCnName(mconsigneeCnName);
+			seaBillsDetail.setMshipperEnName(mconsigneeEnName);
+			seaBillsDetail.setMshipperDetails(mconsigneeDetails);
+
+			//MB/L   发货人=>收货人
+			seaBillsDetail.setMconsigneeId(mshipperId);
+			seaBillsDetail.setMconsigneeCode(mshipperCode);
+			seaBillsDetail.setMconsigneeCnName(mshipperCnName);
+			seaBillsDetail.setMconsigneeEnName(mshipperEnName);
+			seaBillsDetail.setMconsigneeDetails(mshipperDetails);*/
+
 			seaBillsDetail.setUpdateUser(null);
 			seaBillsDetail.setUpdateUserName(null);
 			seaBillsDetail.setUpdateTime(null);
@@ -3138,11 +3196,11 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		if (!containersList.isEmpty()) {
 			List<Containers> containersListNew = new ArrayList<>();
 			for (Containers item : containersList) {
-				if ("SOC".equals(billsJk.getBoxBelongsTo())){
+				/*if ("SOC".equals(billsJk.getBoxBelongsTo())) {
 					if (ObjectUtils.isNull(item.getPodStationId()) || item.getPodStationId() == 0) {
 						throw new RuntimeException("请先维护配箱POD堆场信息");
 					}
-				}
+				}*/
 				item.setSrcId(item.getId());
 				item.setId(null);
 				item.setCreateTime(new Date());
@@ -5524,6 +5582,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 					item.setPlaceDeliveryName(bills.getPlaceDeliveryName());
 					item.setPlaceDeliveryCode(bills.getPlaceDeliveryCode());
 					item.setIssueAtId(bills.getIssueAtId());
+					item.setCabinType(bills.getCabinType());
 					if (!bookingList.isEmpty() && ObjectUtils.isNotNull(item.getTemporaryId())) {
 						Bills bills1 = bookingList.stream().filter(e -> e.getId().equals(item.getTemporaryId())).findFirst().orElse(null);
 						if (bills1 != null) {

+ 4 - 2
blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java

@@ -2416,8 +2416,9 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 			finAccBills.setGenerationCorpId(feeCenterUpdateRecord.getGenerationCorpIdUpdate());
 			finAccBills.setGenerationCorpCnName(feeCenterUpdateRecord.getGenerationCorpCnNameUpdate());
 			finAccBills.setGenerationCorpEnName(feeCenterUpdateRecord.getGenerationCorpEnNameUpdate());
-			finAccBills.setTaxRate(feeCenterUpdateRecord.getTaxRate());
-			finAccBills.setAmountTax(feeCenterUpdateRecord.getAmountTax());
+			finAccBills.setTaxRate(feeCenterUpdateRecord.getTaxRateUpdate());
+			finAccBills.setAmountTax(feeCenterUpdateRecord.getAmountTaxUpdate());
+			finAccBills.setCurCode(feeCenterUpdateRecord.getCurCodeUpdate());
 			finAccBillsService.updateById(finAccBills);
 		}
 		if ("SE,SI".contains(feeCenter.getBusinessType())) {
@@ -2470,6 +2471,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 					throw new RuntimeException("费用:" + item.getFeeCnName() + "已生成账单");
 				}
 				FinAccBills data = new FinAccBills();
+				data.setCurCode(item.getCurCode());
 				data.setTrackingNumber(item.getTrackingNumber());
 				data.setGenerationCorpId(item.getGenerationCorpId());
 				data.setGenerationCorpCnName(item.getGenerationCorpCnName());

+ 11 - 1
blade-service/blade-los/src/main/java/org/springblade/los/edi/service/impl/EdiTypesServiceImpl.java

@@ -26,6 +26,7 @@ import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.los.Util.RegularUtils;
+import org.springblade.los.Util.Regular_HMM;
 import org.springblade.los.Util.Regular_ONE;
 import org.springblade.los.Util.Regular_PIL;
 import org.springblade.los.basic.cntr.entity.BCntrTypes;
@@ -878,7 +879,16 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 						return R.fail(e.getMessage());
 					}
 				}
-			}  else {
+			} else if (inttraSoDto.ediTypeIsHYCK_HMM_BOOKING()) {
+				status = Regular_HMM.notNullEDIData_Booking(inttraSoDto, "SO");
+				if ("200".equals(status.get("code").toString())) {
+					try {
+						filesCenter = iediSenderService.sendingHmmBooking(inttraSoDto, ediParamCarrier);
+					} catch (Exception e) {
+						return R.fail(e.getMessage());
+					}
+				}
+			} else {
 				return R.fail("EDI 未实现!");
 			}
 

+ 6 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/agency/service/impl/AgencyFeeSettingServiceImpl.java

@@ -206,6 +206,9 @@ public class AgencyFeeSettingServiceImpl extends ServiceImpl<AgencyFeeSettingMap
 			if (0 != bills.getStatus()) {
 				throw new RuntimeException("单号:" + bills.getBillNo() + ",已提交审核或审核通过,导入失败");
 			}
+			if (ObjectUtils.isNull(bills.getCabinType())) {
+				throw new RuntimeException("单号:" + bills.getBillNo() + ",请先维护舱位类型");
+			}
 			String texts = "";
 			if (ObjectUtils.isNull(bills.getMblno())) {
 				texts = texts + "提单号、";
@@ -266,6 +269,9 @@ public class AgencyFeeSettingServiceImpl extends ServiceImpl<AgencyFeeSettingMap
 			if (!billsListFD.isEmpty()) {
 				List<Bills> billsFd = billsListFD.stream().filter(e -> e.getMasterId().equals(bills.getId())).collect(Collectors.toList());
 				for (Bills item : billsFd) {
+					if (ObjectUtils.isNull(item.getCabinType())) {
+						throw new RuntimeException("单号:" + item.getBillNo() + ",请先维护舱位类型");
+					}
 					//判断主单下所有分单费用是否存在
 					if (feeCenterListFD.isEmpty()) {
 						continue;

+ 127 - 44
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/mapper/FinAccBillsMapper.xml

@@ -189,12 +189,23 @@
             acc.corp_cn_name corpName,
         </if>
         acc.branch_name as branchId,
-            SUM(( CASE acc.account_dc WHEN 'D' THEN acc.amount_dr WHEN 'C' THEN acc.amount_cr ELSE 0 END ) ) AS amount,
-            SUM(( CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END ) ) AS amountUsd,
-            SUM(( CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END ) ) AS amountUsdAlready,
-            SUM(( CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr WHEN 'C' THEN acc.stl_amount_cr ELSE 0 END ) ) AS amountAlready,
-            SUM(( CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END ) ) AS amountUsdNot,
-            SUM(( CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr-acc.stl_amount_dr) WHEN 'C' THEN (acc.amount_cr-acc.stl_amount_cr) ELSE 0 END ) ) AS amountNot
+        SUM(IF(acc.cur_code = 'CNY',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr WHEN 'C' THEN acc.amount_cr ELSE 0 END),0)) AS amount,
+        SUM(IF(acc.cur_code = 'USD',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END),0)) AS amountUsd,
+        SUM(IF(acc.cur_code = 'HKD',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END),0)) AS amountHKD,
+        SUM(IF(acc.cur_code = 'VND',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END),0)) AS amountVND,
+        SUM(IF(acc.cur_code = 'SGD',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END),0)) AS amountSGD,
+
+        SUM(IF(acc.cur_code = 'CNY',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr WHEN 'C' THEN acc.stl_amount_cr ELSE 0 END),0)) AS amountAlready,
+        SUM(IF(acc.cur_code = 'USD',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END),0)) AS amountUsdAlready,
+        SUM(IF(acc.cur_code = 'HKD',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END),0)) AS amountHKDAlready,
+        SUM(IF(acc.cur_code = 'VND',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END),0)) AS amountVNDAlready,
+        SUM(IF(acc.cur_code = 'SGD',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END),0)) AS amountSGDAlready,
+
+        SUM(IF(acc.cur_code = 'CNY',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr-acc.stl_amount_dr)  WHEN 'C' THEN (acc.amount_cr-acc.stl_amount_cr) ELSE 0 END),0)) AS amountNot,
+        SUM(IF(acc.cur_code = 'USD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountUsdNot,
+        SUM(IF(acc.cur_code = 'HKD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountHKDNot,
+        SUM(IF(acc.cur_code = 'VND',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountVNDNot,
+        SUM(IF(acc.cur_code = 'SGD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountSGDNot
         FROM
             los_fin_acc_bills acc
         WHERE
@@ -273,12 +284,23 @@
             acc.corp_cn_name corpName,
         </if>
         acc.branch_name as branchId,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN acc.amount_dr WHEN 'C' THEN acc.amount_cr ELSE 0 END ) ) AS amount,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END ) ) AS amountUsd,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END ) ) AS amountUsdAlready,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr WHEN 'C' THEN acc.stl_amount_cr ELSE 0 END ) ) AS amountAlready,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END ) ) AS amountUsdNot,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr-acc.stl_amount_dr) WHEN 'C' THEN (acc.amount_cr-acc.stl_amount_cr) ELSE 0 END ) ) AS amountNot
+        SUM(IF(acc.cur_code = 'CNY',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr WHEN 'C' THEN acc.amount_cr ELSE 0 END),0)) AS amount,
+        SUM(IF(acc.cur_code = 'USD',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END),0)) AS amountUsd,
+        SUM(IF(acc.cur_code = 'HKD',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END),0)) AS amountHKD,
+        SUM(IF(acc.cur_code = 'VND',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END),0)) AS amountVND,
+        SUM(IF(acc.cur_code = 'SGD',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END),0)) AS amountSGD,
+
+        SUM(IF(acc.cur_code = 'CNY',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr WHEN 'C' THEN acc.stl_amount_cr ELSE 0 END),0)) AS amountAlready,
+        SUM(IF(acc.cur_code = 'USD',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END),0)) AS amountUsdAlready,
+        SUM(IF(acc.cur_code = 'HKD',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END),0)) AS amountHKDAlready,
+        SUM(IF(acc.cur_code = 'VND',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END),0)) AS amountVNDAlready,
+        SUM(IF(acc.cur_code = 'SGD',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END),0)) AS amountSGDAlready,
+
+        SUM(IF(acc.cur_code = 'CNY',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr-acc.stl_amount_dr)  WHEN 'C' THEN (acc.amount_cr-acc.stl_amount_cr) ELSE 0 END),0)) AS amountNot,
+        SUM(IF(acc.cur_code = 'USD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountUsdNot,
+        SUM(IF(acc.cur_code = 'HKD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountHKDNot,
+        SUM(IF(acc.cur_code = 'VND',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountVNDNot,
+        SUM(IF(acc.cur_code = 'SGD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountSGDNot
         FROM
         los_fin_acc_bills acc
         WHERE
@@ -362,16 +384,36 @@
         acc.business_type businessType,
         acc.business_date AS etdDate,
         acc.branch_name as branchId,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN acc.amount_dr WHEN 'C' THEN acc.amount_cr ELSE 0 END ) ) AS amount,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END ) ) AS amountUsd,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END ) ) AS amountUsdAlready,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr WHEN 'C' THEN acc.stl_amount_cr ELSE 0 END ) ) AS amountAlready,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END ) ) AS amountUsdNot,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr-acc.stl_amount_dr) WHEN 'C' THEN (acc.amount_cr-acc.stl_amount_cr) ELSE 0 END ) ) AS amountNot,
-        SUM(IF(uninvoiced_amount,uninvoiced_amount,0)) AS amountInvoicing,
-        SUM(IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0)) AS amountInvoicingUsd,
-        SUM(acc.amount_dr-IF(uninvoiced_amount,uninvoiced_amount,0)) AS amountInvoicingNot,
-        SUM(acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0)) AS amountInvoicingUsdNot
+
+        SUM(IF(acc.cur_code = 'CNY',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr WHEN 'C' THEN acc.amount_cr ELSE 0 END),0)) AS amount,
+        SUM(IF(acc.cur_code = 'USD',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END),0)) AS amountUsd,
+        SUM(IF(acc.cur_code = 'HKD',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END),0)) AS amountHKD,
+        SUM(IF(acc.cur_code = 'VND',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END),0)) AS amountVND,
+        SUM(IF(acc.cur_code = 'SGD',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END),0)) AS amountSGD,
+
+        SUM(IF(acc.cur_code = 'CNY',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr WHEN 'C' THEN acc.stl_amount_cr ELSE 0 END),0)) AS amountAlready,
+        SUM(IF(acc.cur_code = 'USD',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END),0)) AS amountUsdAlready,
+        SUM(IF(acc.cur_code = 'HKD',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END),0)) AS amountHKDAlready,
+        SUM(IF(acc.cur_code = 'VND',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END),0)) AS amountVNDAlready,
+        SUM(IF(acc.cur_code = 'SGD',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END),0)) AS amountSGDAlready,
+
+        SUM(IF(acc.cur_code = 'CNY',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr-acc.stl_amount_dr)  WHEN 'C' THEN (acc.amount_cr-acc.stl_amount_cr) ELSE 0 END),0)) AS amountNot,
+        SUM(IF(acc.cur_code = 'USD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountUsdNot,
+        SUM(IF(acc.cur_code = 'HKD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountHKDNot,
+        SUM(IF(acc.cur_code = 'VND',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountVNDNot,
+        SUM(IF(acc.cur_code = 'SGD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountSGDNot,
+
+        SUM(IF(acc.cur_code = 'CNY',uninvoiced_amount,0)) AS amountInvoicing,
+        SUM(IF(acc.cur_code = 'USD',uninvoiced_amount_usd,0)) AS amountInvoicingUsd,
+        SUM(IF(acc.cur_code = 'HKD',uninvoiced_amount_usd,0)) AS amountnvoicingHKD,
+        SUM(IF(acc.cur_code = 'VND',uninvoiced_amount_usd,0)) AS amountnvoicingVND,
+        SUM(IF(acc.cur_code = 'SGD',uninvoiced_amount_usd,0)) AS amountnvoicingSGD,
+
+        SUM(IF(acc.cur_code = 'CNY',acc.amount_dr-IF(uninvoiced_amount,uninvoiced_amount,0),0)) AS amountInvoicingNot,
+        SUM(IF(acc.cur_code = 'USD',acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0),0)) AS amountInvoicingUsdNot,
+        SUM(IF(acc.cur_code = 'HKD',acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0),0)) AS amountnvoicingHKDNot,
+        SUM(IF(acc.cur_code = 'VND',acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0),0)) AS amountnvoicingVNDNot,
+        SUM(IF(acc.cur_code = 'SGD',acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0),0)) AS amountnvoicingSGDNot
         FROM
         los_fin_acc_bills acc
         WHERE
@@ -471,16 +513,35 @@
         acc.business_type businessType,
         acc.business_date AS etdDate,
         acc.branch_name as branchId,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN acc.amount_dr WHEN 'C' THEN acc.amount_cr ELSE 0 END ) ) AS amount,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END ) ) AS amountUsd,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END ) ) AS amountUsdAlready,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr WHEN 'C' THEN acc.stl_amount_cr ELSE 0 END ) ) AS amountAlready,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END ) ) AS amountUsdNot,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr-acc.stl_amount_dr) WHEN 'C' THEN (acc.amount_cr-acc.stl_amount_cr) ELSE 0 END ) ) AS amountNot,
-        SUM(IF(uninvoiced_amount,uninvoiced_amount,0)) AS amountInvoicing,
-        SUM(IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0)) AS amountInvoicingUsd,
-        SUM(acc.amount_dr-IF(uninvoiced_amount,uninvoiced_amount,0)) AS amountInvoicingNot,
-        SUM(acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0)) AS amountInvoicingUsdNot
+        SUM(IF(acc.cur_code = 'CNY',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr WHEN 'C' THEN acc.amount_cr ELSE 0 END),0)) AS amount,
+        SUM(IF(acc.cur_code = 'USD',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END),0)) AS amountUsd,
+        SUM(IF(acc.cur_code = 'HKD',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END),0)) AS amountHKD,
+        SUM(IF(acc.cur_code = 'VND',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END),0)) AS amountVND,
+        SUM(IF(acc.cur_code = 'SGD',(CASE acc.account_dc WHEN 'D' THEN acc.amount_dr_usd WHEN 'C' THEN acc.amount_cr_usd ELSE 0 END),0)) AS amountSGD,
+
+        SUM(IF(acc.cur_code = 'CNY',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr WHEN 'C' THEN acc.stl_amount_cr ELSE 0 END),0)) AS amountAlready,
+        SUM(IF(acc.cur_code = 'USD',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END),0)) AS amountUsdAlready,
+        SUM(IF(acc.cur_code = 'HKD',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END),0)) AS amountHKDAlready,
+        SUM(IF(acc.cur_code = 'VND',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END),0)) AS amountVNDAlready,
+        SUM(IF(acc.cur_code = 'SGD',(CASE acc.account_dc WHEN 'D' THEN acc.stl_amount_dr_usd WHEN 'C' THEN acc.stl_amount_cr_usd ELSE 0 END),0)) AS amountSGDAlready,
+
+        SUM(IF(acc.cur_code = 'CNY',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr-acc.stl_amount_dr)  WHEN 'C' THEN (acc.amount_cr-acc.stl_amount_cr) ELSE 0 END),0)) AS amountNot,
+        SUM(IF(acc.cur_code = 'USD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountUsdNot,
+        SUM(IF(acc.cur_code = 'HKD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountHKDNot,
+        SUM(IF(acc.cur_code = 'VND',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountVNDNot,
+        SUM(IF(acc.cur_code = 'SGD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountSGDNot,
+
+        SUM(IF(acc.cur_code = 'CNY',uninvoiced_amount,0)) AS amountInvoicing,
+        SUM(IF(acc.cur_code = 'USD',uninvoiced_amount_usd,0)) AS amountInvoicingUsd,
+        SUM(IF(acc.cur_code = 'HKD',uninvoiced_amount_usd,0)) AS amountnvoicingHKD,
+        SUM(IF(acc.cur_code = 'VND',uninvoiced_amount_usd,0)) AS amountnvoicingVND,
+        SUM(IF(acc.cur_code = 'SGD',uninvoiced_amount_usd,0)) AS amountnvoicingSGD,
+
+        SUM(IF(acc.cur_code = 'CNY',acc.amount_dr-IF(uninvoiced_amount,uninvoiced_amount,0),0)) AS amountInvoicingNot,
+        SUM(IF(acc.cur_code = 'USD',acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0),0)) AS amountInvoicingUsdNot,
+        SUM(IF(acc.cur_code = 'HKD',acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0),0)) AS amountnvoicingHKDNot,
+        SUM(IF(acc.cur_code = 'VND',acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0),0)) AS amountnvoicingVNDNot,
+        SUM(IF(acc.cur_code = 'SGD',acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0),0)) AS amountnvoicingSGDNot
         FROM
         los_fin_acc_bills acc
         WHERE
@@ -574,12 +635,23 @@
             acc.pol_en_name pol,
             acc.quantity_cntr_descr quantityCntrDescr,
             acc.branch_name as branchId,
-            SUM(( CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END ) ) AS amountUsdNot,
-            SUM(( CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr-acc.stl_amount_dr) WHEN 'C' THEN (acc.amount_cr-acc.stl_amount_cr) ELSE 0 END ) ) AS amountNot,
-            SUM(IF(uninvoiced_amount,uninvoiced_amount,0)) AS amountInvoicing,
-            SUM(IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0)) AS amountInvoicingUsd,
-            SUM(acc.amount_dr-IF(uninvoiced_amount,uninvoiced_amount,0)) AS amountInvoicingNot,
-            SUM(acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0)) AS amountInvoicingUsdNot,
+        SUM(IF(acc.cur_code = 'CNY',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr-acc.stl_amount_dr)  WHEN 'C' THEN (acc.amount_cr-acc.stl_amount_cr) ELSE 0 END),0)) AS amountNot,
+        SUM(IF(acc.cur_code = 'USD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountUsdNot,
+        SUM(IF(acc.cur_code = 'HKD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountHKDNot,
+        SUM(IF(acc.cur_code = 'VND',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountVNDNot,
+        SUM(IF(acc.cur_code = 'SGD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountSGDNot,
+
+        SUM(IF(acc.cur_code = 'CNY',uninvoiced_amount,0)) AS amountInvoicing,
+        SUM(IF(acc.cur_code = 'USD',uninvoiced_amount_usd,0)) AS amountInvoicingUsd,
+        SUM(IF(acc.cur_code = 'HKD',uninvoiced_amount_usd,0)) AS amountnvoicingHKD,
+        SUM(IF(acc.cur_code = 'VND',uninvoiced_amount_usd,0)) AS amountnvoicingVND,
+        SUM(IF(acc.cur_code = 'SGD',uninvoiced_amount_usd,0)) AS amountnvoicingSGD,
+
+        SUM(IF(acc.cur_code = 'CNY',acc.amount_dr-IF(uninvoiced_amount,uninvoiced_amount,0),0)) AS amountInvoicingNot,
+        SUM(IF(acc.cur_code = 'USD',acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0),0)) AS amountInvoicingUsdNot,
+        SUM(IF(acc.cur_code = 'HKD',acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0),0)) AS amountnvoicingHKDNot,
+        SUM(IF(acc.cur_code = 'VND',acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0),0)) AS amountnvoicingVNDNot,
+        SUM(IF(acc.cur_code = 'SGD',acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0),0)) AS amountnvoicingSGDNot,
             acc.src_cn_name srcCnName,
             acc.operator_name operatorName
         FROM
@@ -671,12 +743,23 @@
         acc.pol_en_name pol,
         acc.quantity_cntr_descr quantityCntrDescr,
         acc.branch_name as branchId,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END ) ) AS amountUsdNot,
-        SUM(( CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr-acc.stl_amount_dr) WHEN 'C' THEN (acc.amount_cr-acc.stl_amount_cr) ELSE 0 END ) ) AS amountNot,
-        SUM(IF(uninvoiced_amount,uninvoiced_amount,0)) AS amountInvoicing,
-        SUM(IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0)) AS amountInvoicingUsd,
-        SUM(acc.amount_dr-IF(uninvoiced_amount,uninvoiced_amount,0)) AS amountInvoicingNot,
-        SUM(acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0)) AS amountInvoicingUsdNot,
+        SUM(IF(acc.cur_code = 'CNY',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr-acc.stl_amount_dr)  WHEN 'C' THEN (acc.amount_cr-acc.stl_amount_cr) ELSE 0 END),0)) AS amountNot,
+        SUM(IF(acc.cur_code = 'USD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountUsdNot,
+        SUM(IF(acc.cur_code = 'HKD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountHKDNot,
+        SUM(IF(acc.cur_code = 'VND',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountVNDNot,
+        SUM(IF(acc.cur_code = 'SGD',(CASE acc.account_dc WHEN 'D' THEN (acc.amount_dr_usd-stl_amount_dr_usd) WHEN 'C' THEN (acc.amount_cr_usd-stl_amount_cr_usd) ELSE 0 END),0)) AS amountSGDNot,
+
+        SUM(IF(acc.cur_code = 'CNY',uninvoiced_amount,0)) AS amountInvoicing,
+        SUM(IF(acc.cur_code = 'USD',uninvoiced_amount_usd,0)) AS amountInvoicingUsd,
+        SUM(IF(acc.cur_code = 'HKD',uninvoiced_amount_usd,0)) AS amountnvoicingHKD,
+        SUM(IF(acc.cur_code = 'VND',uninvoiced_amount_usd,0)) AS amountnvoicingVND,
+        SUM(IF(acc.cur_code = 'SGD',uninvoiced_amount_usd,0)) AS amountnvoicingSGD,
+
+        SUM(IF(acc.cur_code = 'CNY',acc.amount_dr-IF(uninvoiced_amount,uninvoiced_amount,0),0)) AS amountInvoicingNot,
+        SUM(IF(acc.cur_code = 'USD',acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0),0)) AS amountInvoicingUsdNot,
+        SUM(IF(acc.cur_code = 'HKD',acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0),0)) AS amountnvoicingHKDNot,
+        SUM(IF(acc.cur_code = 'VND',acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0),0)) AS amountnvoicingVNDNot,
+        SUM(IF(acc.cur_code = 'SGD',acc.amount_dr_usd-IF(uninvoiced_amount_usd,uninvoiced_amount_usd,0),0)) AS amountnvoicingSGDNot,
         acc.src_cn_name srcCnName,
         acc.operator_name operatorName
         FROM

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

@@ -872,6 +872,9 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 					feeCenter.setAmountLoc(feeCenter.getAmount().multiply(feeCenter.getExrate()));
 				}
 				feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
+				if (ObjectUtils.isNull(feeCenter.getBillDate())){
+					feeCenter.setBillDate(new Date());
+				}
 				feeCenterList.add(feeCenter);
 			}
 			if ("SE".equals(list.get(0).getBusinessType()) || "SI".equals(list.get(0).getBusinessType())) {
@@ -1259,6 +1262,9 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 						feeCenter.setBillCorpEnName(bCorps1.getShortName());
 					}
 				}
+				if (ObjectUtils.isNull(feeCenter.getBillDate())){
+					feeCenter.setBillDate(new Date());
+				}
 				if (feeCenter.getId() == null) {
 					feeCenter.setCreateTime(new Date());
 					feeCenter.setCreateUser(AuthUtil.getUserId());
@@ -1282,18 +1288,40 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 				feeCenter.setVersion(String.valueOf(version + 1));
 				feeCenterList.add(feeCenter);
 			}
+			List<FeeCenter> feeCenters = baseMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
+				.eq(FeeCenter::getIsDeleted,0)
+				.eq(FeeCenter::getTenantId,AuthUtil.getTenantId())
+				.eq(FeeCenter::getPid,tradingBox.getId())
+				.notIn(!idList.isEmpty(),FeeCenter::getId,idList));
+			for (FeeCenter feeCenter : feeCenters) {
+				if (exrateType.equals(feeCenter.getCurCode())) {
+					if ("D".equals(feeCenter.getDc())) {
+						amountD = amountD.add(feeCenter.getAmount());
+						amountDLoc = amountDLoc.add(feeCenter.getAmount());
+					} else {
+						amountC = amountC.add(feeCenter.getAmount());
+						amountCLoc = amountCLoc.add(feeCenter.getAmount());
+					}
+				} else {
+					if ("D".equals(feeCenter.getDc())) {
+						amountDUsd = amountDUsd.add(feeCenter.getAmount());
+						amountDLoc = amountDLoc.add(feeCenter.getAmount().multiply(feeCenter.getExrate()));
+					} else {
+						amountCUsd = amountCUsd.add(feeCenter.getAmount());
+						amountCLoc = amountCLoc.add(feeCenter.getAmount().multiply(feeCenter.getExrate()));
+					}
+				}
+			}
 			if ("OW-N,OW-F,XGFY".contains(tradingBox.getType())) {
-				tradingBox.setAmountC(tradingBox.getAmountC().add(amountC));
-				tradingBox.setAmountCUsd(tradingBox.getAmountCUsd().add(amountCUsd));
-				tradingBox.setAmountD(tradingBox.getAmountD().add(amountD));
-				tradingBox.setAmountDUsd(tradingBox.getAmountDUsd().add(amountDUsd));
-				tradingBox.setProfit(amountD.subtract(amountC));
-				tradingBox.setProfitUsd(amountDUsd.subtract(amountCUsd));
-				BigDecimal totalAmountD = amountD.add(amountDLoc);
-				tradingBox.setTotalAmountD(tradingBox.getTotalAmountD().add(totalAmountD));
-				BigDecimal totalAmountC = amountC.add(amountCLoc);
-				tradingBox.setTotalAmountC(tradingBox.getTotalAmountC().add(totalAmountC));
-				tradingBox.setTotalProfit(totalAmountD.subtract(totalAmountC));
+				tradingBox.setAmountD(amountD);
+				tradingBox.setAmountDUsd(amountDUsd);
+				tradingBox.setTotalAmountD(amountDLoc);
+				tradingBox.setAmountC(amountC);
+				tradingBox.setAmountCUsd(amountCUsd);
+				tradingBox.setTotalAmountC(amountCLoc);
+				tradingBox.setProfit(tradingBox.getAmountD().subtract(tradingBox.getAmountC()));
+				tradingBox.setProfitUsd(tradingBox.getAmountDUsd().subtract(tradingBox.getAmountCUsd()));
+				tradingBox.setTotalProfit(tradingBox.getTotalAmountD().subtract(tradingBox.getTotalAmountC()));
 				tradingBoxMapper.updateById(tradingBox);
 			}
 			this.saveOrUpdateBatch(feeCenterList);

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

@@ -175,6 +175,7 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 					&& !exrateType.equals(e.getCurCode()))
 				.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			FinAccBills data = new FinAccBills();
+			data.setCurCode(item.getCurCode());
 			data.setGenerationCorpId(item.getGenerationCorpId());
 			data.setGenerationCorpCnName(item.getGenerationCorpCnName());
 			data.setGenerationCorpEnName(item.getGenerationCorpEnName());
@@ -286,6 +287,7 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 			}
 			data.setAmountDrLoc(amountDrLoc);
 			data.setAmountCrLoc(amountCrLoc);
+			data.setExrate(item.getExrate());
 			this.saveOrUpdate(data);
 			finAccBillsList.add(data);
 			List<FeeCenter> feeCenterList1 = finAccBills.getFeeCenterList().stream()

+ 4 - 1
blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/controller/FinInvoicesController.java

@@ -84,11 +84,14 @@ public class FinInvoicesController extends BladeController {
 				.like(FinInvoices::getInvCorpEnName, finInvoices.getInvCorpCnName()))
 			.like(ObjectUtils.isNotNull(finInvoices.getInvoiceNo()), FinInvoices::getInvoiceNo, finInvoices.getInvoiceNo())
 			.eq(ObjectUtils.isNotNull(finInvoices.getTaxType()), FinInvoices::getTaxType, finInvoices.getTaxType())
-			.eq(ObjectUtils.isNotNull(finInvoices.getInvoiceDate()), FinInvoices::getTaxType, finInvoices.getTaxType())
+			.eq(ObjectUtils.isNotNull(finInvoices.getCurCode()), FinInvoices::getCurCode, finInvoices.getCurCode())
+			.eq(ObjectUtils.isNotNull(finInvoices.getInvoiceDate()), FinInvoices::getInvoiceDate, finInvoices.getInvoiceDate())
 			.like(ObjectUtils.isNotNull(finInvoices.getCreateUserName()), FinInvoices::getCreateUserName, finInvoices.getCreateUserName())
 			.like(ObjectUtils.isNotNull(finInvoices.getBusinessNo()), FinInvoices::getBusinessNo, finInvoices.getBusinessNo())
 			.like(ObjectUtils.isNotNull(finInvoices.getMblno()), FinInvoices::getMblno, finInvoices.getMblno())
+			.like(ObjectUtils.isNotNull(finInvoices.getMblnos()), FinInvoices::getMblnos, finInvoices.getMblnos())
 			.like(ObjectUtils.isNotNull(finInvoices.getHblno()), FinInvoices::getHblno, finInvoices.getHblno())
+			.like(ObjectUtils.isNotNull(finInvoices.getHblnos()), FinInvoices::getHblnos, finInvoices.getHblnos())
 			.like(ObjectUtils.isNotNull(finInvoices.getCheckNo()), FinInvoices::getCheckNo, finInvoices.getCheckNo())
 			.and(ObjectUtils.isNotNull(finInvoices.getVesselCnName()), i -> i.like(FinInvoices::getVesselCnName, finInvoices.getVesselCnName()).or()
 				.like(FinInvoices::getVesselEnName, finInvoices.getVesselCnName()))

+ 20 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/impl/FinInvoicesServiceImpl.java

@@ -1413,6 +1413,16 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				feeCenterService.saveOrUpdateBatch(feeCenterList);
 				finAccBillsService.saveOrUpdateBatch(finAccBillsList);
 				FinInvoices invoicesUpdate = this.countFeeItems(invoicesApply, finInvoicesItemsList, exrateType);
+				invoicesUpdate.setBusinessTypes(finInvoicesItemsList.get(0).getBusinessType());
+				if ("SE,SI,SEA,SIA".contains(invoicesUpdate.getBusinessTypes())){
+					invoicesUpdate.setBusinessTypes("海运");
+				}else if("OW-N,OW-F".contains(invoicesUpdate.getBusinessTypes())){
+					invoicesUpdate.setBusinessTypes("OW");
+				}else{
+					invoicesUpdate.setBusinessTypes("箱管");
+				}
+				invoicesUpdate.setMblnos(finInvoicesItemsList.stream().map(FinInvoicesItems::getMblno).distinct().collect(Collectors.joining(",")));
+				invoicesUpdate.setHblnos(finInvoicesItemsList.stream().map(FinInvoicesItems::getHblno).distinct().collect(Collectors.joining(",")));
 				baseMapper.updateById(invoicesUpdate);
 			}
 		} else if ("5".equals(finInvoices.getCostType())) {
@@ -1540,6 +1550,16 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				feeCenterService.saveOrUpdateBatch(feeCenterList);
 				finAccBillsService.saveOrUpdateBatch(finAccBillsList);
 				FinInvoices invoicesUpdate = this.countFeeItems(invoices, finInvoicesItemsList, exrateType);
+				invoicesUpdate.setBusinessTypes(finInvoicesItemsList.get(0).getBusinessType());
+				if ("SE,SI,SEA,SIA".contains(invoicesUpdate.getBusinessTypes())){
+					invoicesUpdate.setBusinessTypes("海运");
+				}else if("OW-N,OW-F".contains(invoicesUpdate.getBusinessTypes())){
+					invoicesUpdate.setBusinessTypes("OW");
+				}else{
+					invoicesUpdate.setBusinessTypes("箱管");
+				}
+				invoicesUpdate.setMblnos(finInvoicesItemsList.stream().map(FinInvoicesItems::getMblno).distinct().collect(Collectors.joining(",")));
+				invoicesUpdate.setHblnos(finInvoicesItemsList.stream().map(FinInvoicesItems::getHblno).distinct().collect(Collectors.joining(",")));
 				baseMapper.updateById(invoicesUpdate);
 			}
 		} else {

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

@@ -96,7 +96,9 @@ public class FinStlBillsController extends BladeController {
 				.like(FinStlBills::getVesselEnName, finStlBills.getVesselCnName()))
 			.like(ObjectUtils.isNotNull(finStlBills.getVoyageNo()), FinStlBills::getVoyageNo, finStlBills.getVoyageNo())
 			.like(ObjectUtils.isNotNull(finStlBills.getMblno()), FinStlBills::getMblno, finStlBills.getMblno())
+			.like(ObjectUtils.isNotNull(finStlBills.getMblnos()), FinStlBills::getMblnos, finStlBills.getMblnos())
 			.like(ObjectUtils.isNotNull(finStlBills.getHblno()), FinStlBills::getHblno, finStlBills.getHblno())
+			.like(ObjectUtils.isNotNull(finStlBills.getHblnos()), FinStlBills::getHblnos, finStlBills.getHblnos())
 			.like(ObjectUtils.isNotNull(finStlBills.getInvoiceNo()), FinStlBills::getInvoiceNo, finStlBills.getInvoiceNo())
 			.eq((ObjectUtils.isNotNull(finStlBills.getIsApproved()) && finStlBills.getIsApproved() != 0), FinStlBills::getIsApproved, finStlBills.getIsApproved())
 			.eq((ObjectUtils.isNotNull(finStlBills.getIsSignfor()) && finStlBills.getIsSignfor() != 0), FinStlBills::getIsSignfor, finStlBills.getIsSignfor())

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

@@ -319,7 +319,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				finStlBillsItemsList.add(item);
 			}
 			finStlBillsItemsService.saveOrUpdateBatch(finStlBillsItemsList);
-
+			finStlBills.setMblnos(finStlBillsItemsList.stream().map(FinStlBillsItems::getMblno).distinct().collect(Collectors.joining(",")));
+			finStlBills.setHblnos(finStlBillsItemsList.stream().map(FinStlBillsItems::getHblno).distinct().collect(Collectors.joining(",")));
 			finStlBills.setAmountDr(amountDrCNY);
 			finStlBills.setAmountCr(amountCrCNY);
 			finStlBills.setAmountDrUsd(amountDrUSD);
@@ -2297,7 +2298,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			for (FinAccBillsVO item : finStlBills.getFinAccBillsVOList()) {
 				FinStlBillsItems stlBillsItems = this.assignmentProcess(item, stlBills);
 				stlBillsItems.setPType("DZ");
-				if (new BigDecimal("0.00").compareTo(item.getReconciliationCurrentAmount()) == 0){
+				if (new BigDecimal("0.00").compareTo(item.getReconciliationCurrentAmount()) == 0) {
 					throw new RuntimeException("本次金额不能为零");
 				}
 				stlBillsItems.setCurrentStlAmountNet(item.getReconciliationCurrentAmount());
@@ -2416,12 +2417,14 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				}
 				feeCenterService.updateBatchById(feeCenterList);
 				finAccBillsService.updateBatchById(finAccBillsList);
+				stlBills.setMblnos(finStlBillsItemsList.stream().map(FinStlBillsItems::getMblno).distinct().collect(Collectors.joining(",")));
+				stlBills.setHblnos(finStlBillsItemsList.stream().map(FinStlBillsItems::getHblno).distinct().collect(Collectors.joining(",")));
 			}
 		} else if ("2".equals(finStlBills.getType())) {
 			for (FinAccBillsVO item : finStlBills.getFinAccBillsVOList()) {
 				FinStlBillsItems stlBillsItems = this.assignmentProcess(item, stlBills);
 				stlBillsItems.setPType("FFSQ");
-				if (new BigDecimal("0.00").compareTo(item.getAppliedCurrentStlAmount()) == 0){
+				if (new BigDecimal("0.00").compareTo(item.getAppliedCurrentStlAmount()) == 0) {
 					throw new RuntimeException("本次金额不能为零");
 				}
 				stlBillsItems.setCurrentStlAmountNet(item.getAppliedCurrentStlAmount());
@@ -2518,20 +2521,30 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				}
 				feeCenterService.saveOrUpdateBatch(feeCenterList);
 				finAccBillsService.saveOrUpdateBatch(finAccBillsList);
+				stlBills.setBusinessTypes(finStlBillsItemsList.get(0).getBusinessType());
+				if ("SE,SI,SEA,SIA".contains(stlBills.getBusinessTypes())){
+					stlBills.setBusinessTypes("海运");
+				}else if("OW-N,OW-F".contains(stlBills.getBusinessTypes())){
+					stlBills.setBusinessTypes("OW");
+				}else{
+					stlBills.setBusinessTypes("箱管");
+				}
+				stlBills.setMblnos(finStlBillsItemsList.stream().map(FinStlBillsItems::getMblno).distinct().collect(Collectors.joining(",")));
+				stlBills.setHblnos(finStlBillsItemsList.stream().map(FinStlBillsItems::getHblno).distinct().collect(Collectors.joining(",")));
 			}
 		} else if ("3".equals(finStlBills.getType())) {
 			for (FinAccBillsVO item : finStlBills.getFinAccBillsVOList()) {
 				FinStlBillsItems stlBillsItems = this.assignmentProcess(item, stlBills);
 				stlBillsItems.setPType("STL");
 				if ("D".equals(item.getAccountDc())) {
-					if (new BigDecimal("0.00").compareTo(item.getAppliedInvoiceCurrentStlAmount()) == 0){
+					if (new BigDecimal("0.00").compareTo(item.getAppliedInvoiceCurrentStlAmount()) == 0) {
 						throw new RuntimeException("本次金额不能为零");
 					}
 					stlBillsItems.setCurrentStlAmountNet(item.getAppliedInvoiceCurrentStlAmount());
 					stlBillsItems.setCurrentStlAmount(item.getAppliedInvoiceCurrentStlAmount());
 					stlBillsItems.setCurrentStlAmountLoc(item.getAppliedInvoiceCurrentStlAmount().multiply(item.getExrate()).setScale(2, RoundingMode.HALF_UP));
 				} else if ("C".equals(item.getAccountDc())) {
-					if (new BigDecimal("0.00").compareTo(item.getAppliedCurrentStlAmount()) == 0){
+					if (new BigDecimal("0.00").compareTo(item.getAppliedCurrentStlAmount()) == 0) {
 						throw new RuntimeException("本次金额不能为零");
 					}
 					stlBillsItems.setCurrentStlAmountNet(item.getAppliedCurrentStlAmount());
@@ -2674,6 +2687,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				}
 				feeCenterService.saveOrUpdateBatch(feeCenterList);
 				finAccBillsService.saveOrUpdateBatch(finAccBillsList);
+				stlBills.setMblnos(finStlBillsItemsList.stream().map(FinStlBillsItems::getMblno).distinct().collect(Collectors.joining(",")));
+				stlBills.setHblnos(finStlBillsItemsList.stream().map(FinStlBillsItems::getHblno).distinct().collect(Collectors.joining(",")));
 			}
 		} else {
 			throw new RuntimeException("类型错误");
@@ -3585,7 +3600,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				FinAccBills finAccBills = finAccBillsListAll.stream().filter(e -> e.getId().equals(item.getAccBillId()))
 					.findFirst().orElse(null);
 				if (finAccBills == null) {
-					throw new RuntimeException("第"+count+"行未找到账单明细,操作失败");
+					throw new RuntimeException("第" + count + "行未找到账单明细,操作失败");
 				}
 				boolean status = Boolean.FALSE;
 				//计算字段null值处理
@@ -3607,7 +3622,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 					if (finAccBills.getStlAmountDr().abs().compareTo(finAccBills.getAmountDr().abs()) > 0 ||
 						finAccBills.getStlAmountDrUsd().abs().compareTo(finAccBills.getAmountDrUsd().abs()) > 0
 					) {
-						throw new RuntimeException("第"+count+"行结算金额大于账单金额,操作失败");
+						throw new RuntimeException("第" + count + "行结算金额大于账单金额,操作失败");
 					}
 				} else if ("C".equals(item.getDc())) {
 					if (exrateType.equals(item.getCurCode())) {
@@ -3627,7 +3642,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 					if (finAccBills.getStlAmountCr().abs().compareTo(finAccBills.getAmountCr().abs()) > 0 ||
 						finAccBills.getStlAmountCrUsd().abs().compareTo(finAccBills.getAmountCrUsd().abs()) > 0
 					) {
-						throw new RuntimeException("第"+count+"行结算金额大于账单金额,操作失败");
+						throw new RuntimeException("第" + count + "行结算金额大于账单金额,操作失败");
 					}
 				}
 				if (status) {
@@ -3648,7 +3663,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				BigDecimal stlTtlAmount = feeCenters.stream().map(FeeCenter::getStlTtlAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 				if (item.getCurrentStlAmount().compareTo(new BigDecimal("0.00")) == 0 ||
 					item.getCurrentStlAmount().abs().compareTo(item.getAmount().abs().subtract(stlTtlAmount).abs()) > 0) {
-					throw new RuntimeException("第"+count+"行本次结算金额不能为零或大于未结算金额");
+					throw new RuntimeException("第" + count + "行本次结算金额不能为零或大于未结算金额");
 				}
 				for (FeeCenter e : feeCenters) {
 					int version = StringUtil.isBlank(e.getVersion()) ? 1 : Integer.parseInt(e.getVersion());
@@ -3696,7 +3711,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 					}
 				}
 				if (currentStlAmount.compareTo(new BigDecimal("0.00")) != 0) {
-					throw new RuntimeException("第"+count+"行结算金额计算错误,操作失败");
+					throw new RuntimeException("第" + count + "行结算金额计算错误,操作失败");
 				}
 				count++;
 			}

+ 37 - 0
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/controller/FinanceStatisticsController.java

@@ -121,17 +121,38 @@ public class FinanceStatisticsController {
 		if (!list.isEmpty()) {
 			map.put("amountUsd", list.stream().map(FeeSummaryRD::getAmountUsd).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amount", list.stream().map(FeeSummaryRD::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountHKD", list.stream().map(FeeSummaryRD::getAmountHKD).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountVND", list.stream().map(FeeSummaryRD::getAmountVND).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountSGD", list.stream().map(FeeSummaryRD::getAmountSGD).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountOther", list.stream().map(FeeSummaryRD::getAmountOther).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountUsdAlready", list.stream().map(FeeSummaryRD::getAmountUsdAlready).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountAlready", list.stream().map(FeeSummaryRD::getAmountAlready).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountHKDAlready", list.stream().map(FeeSummaryRD::getAmountHKDAlready).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountVNDAlready", list.stream().map(FeeSummaryRD::getAmountVNDAlready).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountSGDAlready", list.stream().map(FeeSummaryRD::getAmountSGDAlready).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountOtherAlready", list.stream().map(FeeSummaryRD::getAmountOtherAlready).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountUsdNot", list.stream().map(FeeSummaryRD::getAmountUsdNot).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountNot", list.stream().map(FeeSummaryRD::getAmountNot).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountHKDNot", list.stream().map(FeeSummaryRD::getAmountHKDNot).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountVNDNot", list.stream().map(FeeSummaryRD::getAmountVNDNot).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountSGDNot", list.stream().map(FeeSummaryRD::getAmountSGDNot).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountOtherNot", list.stream().map(FeeSummaryRD::getAmountOtherNot).reduce(BigDecimal.ZERO, BigDecimal::add));
 		} else {
 			map.put("amountUsd", BigDecimal.ZERO);
 			map.put("amount", BigDecimal.ZERO);
+			map.put("amountHKD", BigDecimal.ZERO);
+			map.put("amountVND", BigDecimal.ZERO);
+			map.put("amountSGD", BigDecimal.ZERO);
 			map.put("amountUsdAlready", BigDecimal.ZERO);
 			map.put("amountAlready", BigDecimal.ZERO);
+			map.put("amountHKDAlready", BigDecimal.ZERO);
+			map.put("amountVNDAlready", BigDecimal.ZERO);
+			map.put("amountSGDAlready", BigDecimal.ZERO);
 			map.put("amountUsdNot", BigDecimal.ZERO);
 			map.put("amountNot", BigDecimal.ZERO);
+			map.put("amountHKDNot", BigDecimal.ZERO);
+			map.put("amountVNDNot", BigDecimal.ZERO);
+			map.put("amountSGDNot", BigDecimal.ZERO);
 		}
 		return R.data(map);
 	}
@@ -167,25 +188,35 @@ public class FinanceStatisticsController {
 		if (!list.isEmpty()) {
 			map.put("amountUsd", list.stream().map(FeeSummaryDetailRD::getAmountUsd).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amount", list.stream().map(FeeSummaryDetailRD::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountOther", list.stream().map(FeeSummaryDetailRD::getAmountOther).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountUsdAlready", list.stream().map(FeeSummaryDetailRD::getAmountUsdAlready).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountAlready", list.stream().map(FeeSummaryDetailRD::getAmountAlready).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountOtherAlready", list.stream().map(FeeSummaryDetailRD::getAmountOtherAlready).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountUsdNot", list.stream().map(FeeSummaryDetailRD::getAmountUsdNot).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountNot", list.stream().map(FeeSummaryDetailRD::getAmountNot).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountOtherNot", list.stream().map(FeeSummaryDetailRD::getAmountOtherNot).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountInvoicingUsd", list.stream().map(FeeSummaryDetailRD::getAmountInvoicingUsd).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountInvoicing", list.stream().map(FeeSummaryDetailRD::getAmountInvoicing).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountnvoicingOther", list.stream().map(FeeSummaryDetailRD::getAmountnvoicingOther).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountInvoicingUsdNot", list.stream().map(FeeSummaryDetailRD::getAmountInvoicingUsdNot).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountInvoicingNot", list.stream().map(FeeSummaryDetailRD::getAmountInvoicingNot).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountnvoicingOtherNot", list.stream().map(FeeSummaryDetailRD::getAmountnvoicingOtherNot).reduce(BigDecimal.ZERO, BigDecimal::add));
 		} else {
 			map.put("amountUsd", BigDecimal.ZERO);
 			map.put("amount", BigDecimal.ZERO);
+			map.put("amountOther", BigDecimal.ZERO);
 			map.put("amountUsdAlready", BigDecimal.ZERO);
 			map.put("amountAlready", BigDecimal.ZERO);
+			map.put("amountOtherAlready", BigDecimal.ZERO);
 			map.put("amountUsdNot", BigDecimal.ZERO);
 			map.put("amountNot", BigDecimal.ZERO);
+			map.put("amountOtherNot", BigDecimal.ZERO);
 			map.put("amountInvoicingUsd", BigDecimal.ZERO);
 			map.put("amountInvoicing", BigDecimal.ZERO);
+			map.put("amountInvoicingOther", BigDecimal.ZERO);
 			map.put("amountInvoicingUsdNot", BigDecimal.ZERO);
 			map.put("amountInvoicingNot", BigDecimal.ZERO);
+			map.put("amountInvoicingOtherNot", BigDecimal.ZERO);
 		}
 		return R.data(map);
 	}
@@ -227,17 +258,23 @@ public class FinanceStatisticsController {
 		if (!list.isEmpty()) {
 			map.put("amountUsdNot", list.stream().map(FeeSummaryDetailNotRD::getAmountUsdNot).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountNot", list.stream().map(FeeSummaryDetailNotRD::getAmountNot).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountOtherNot", list.stream().map(FeeSummaryDetailNotRD::getAmountOtherNot).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountInvoicingUsd", list.stream().map(FeeSummaryDetailNotRD::getAmountInvoicingUsd).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountInvoicing", list.stream().map(FeeSummaryDetailNotRD::getAmountInvoicing).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountnvoicingOther", list.stream().map(FeeSummaryDetailNotRD::getAmountnvoicingOther).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountInvoicingUsdNot", list.stream().map(FeeSummaryDetailNotRD::getAmountInvoicingUsdNot).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountInvoicingNot", list.stream().map(FeeSummaryDetailNotRD::getAmountInvoicingNot).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountnvoicingOtherNot", list.stream().map(FeeSummaryDetailNotRD::getAmountnvoicingOtherNot).reduce(BigDecimal.ZERO, BigDecimal::add));
 		} else {
 			map.put("amountUsdNot", BigDecimal.ZERO);
 			map.put("amountNot", BigDecimal.ZERO);
+			map.put("amountOtherNot", BigDecimal.ZERO);
 			map.put("amountInvoicingUsd", BigDecimal.ZERO);
 			map.put("amountInvoicing", BigDecimal.ZERO);
+			map.put("amountnvoicingOther", BigDecimal.ZERO);
 			map.put("amountInvoicingUsdNot", BigDecimal.ZERO);
 			map.put("amountInvoicingNot", BigDecimal.ZERO);
+			map.put("amountnvoicingOtherNot", BigDecimal.ZERO);
 		}
 		return R.data(map);
 	}

+ 266 - 40
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/impl/StatisticAnalysisServiceImpl.java

@@ -212,15 +212,24 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 			financeProfitList = financeProfitMapper.financeProfitList(financeProfit, page);
 		}
 		List<FinanceProfit> financeProfitDataList = new ArrayList<>();
+		List<FeeCenter> feeCenterList = new ArrayList<>();
 		if (!financeProfitList.isEmpty()) {
+			List<Long> idList = financeProfitList.stream().map(FinanceProfitDtoList::getId).distinct().collect(Collectors.toList());
 			String mblNo = financeProfitList.stream().map(FinanceProfitDtoList::getMblNo).distinct().collect(Collectors.joining(","));
 			financeProfitDataList = financeProfitMapper.selectList(new LambdaQueryWrapper<FinanceProfit>()
 				.apply("find_in_set(mblno,'" + mblNo + "')")
 				.apply("find_in_set(business_type,'SE,SI,AE,AI')")
 			);
+			if (!financeProfitDataList.isEmpty()) {
+				idList.addAll(financeProfitDataList.stream().map(FinanceProfit::getId).distinct().collect(Collectors.toList()));
+			}
+			feeCenterList = feeCenterMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
+				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+				.eq(FeeCenter::getIsDeleted, 0)
+				.in(FeeCenter::getPid, idList));
 		}
 		for (FinanceProfitDtoList item : financeProfitList) {
-			if (("SEA".equals(item.getBusinessType()) || "SIA".equals(item.getBusinessType())
+            if (("SEA".equals(item.getBusinessType()) || "SIA".equals(item.getBusinessType())
 				|| "AEA".equals(item.getBusinessType()) || "AIA".equals(item.getBusinessType()))
 				&& !financeProfitDataList.isEmpty()) {
 				FinanceProfit profit = financeProfitDataList.stream().filter(e -> e.getMblno().equals(item.getMblNo())).findFirst().orElse(null);
@@ -230,16 +239,186 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 					item.setLineCnName(profit.getLineCnName());
 				}
 			}
-			item.setAmountProfit(item.getAmountDr().subtract(item.getAmountCr()).setScale(2, RoundingMode.HALF_UP));
-			item.setAmountProfitUsd(item.getAmountDrUsd().subtract(item.getAmountCrUsd()).setScale(2, RoundingMode.HALF_UP));
-			item.setRealAmountProfitLoc(item.getRealAmountDrLoc().subtract(item.getRealAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
-			item.setNotReceivedDr(item.getAmountDr().subtract(item.getRealAmountDr()).setScale(2, RoundingMode.HALF_UP));
-			item.setNotReceivedDrUsd(item.getAmountDrUsd().subtract(item.getRealAmountDrUsd()).setScale(2, RoundingMode.HALF_UP));
-			item.setNotReceivedLoc(item.getAmountDrLoc().subtract(item.getRealAmountDrLoc()).setScale(2, RoundingMode.HALF_UP));
+			if (!feeCenterList.isEmpty()) {
+				List<FeeCenter> feeCenters = feeCenterList.stream().filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
+				if (!feeCenters.isEmpty()) {
+					assignment(feeCenters, item);
+				}
+			}
 		}
 		return R.data(page.setRecords(financeProfitList));
 	}
 
+	private FinanceProfitDtoList assignment(List<FeeCenter> feeCenters, FinanceProfitDtoList item) {
+		//应收人民币
+		BigDecimal amountDr = feeCenters.stream().filter(e -> "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
+			.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setAmountDr(amountDr.setScale(2, RoundingMode.HALF_UP));
+		//实收人民币
+		BigDecimal realAmountDr = feeCenters.stream().filter(e -> "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
+			.map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setRealAmountDr(realAmountDr.setScale(2, RoundingMode.HALF_UP));
+		//未收人民币
+		item.setNotReceivedDr(amountDr.subtract(realAmountDr));
+		//应收美元
+		BigDecimal amountDrUsd = feeCenters.stream().filter(e -> "USD".equals(e.getCurCode()) && "D".equals(e.getDc()))
+			.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setAmountDrUsd(amountDrUsd.setScale(2, RoundingMode.HALF_UP));
+		//实收美元
+		BigDecimal realAmountDrUsd =feeCenters.stream().filter(e -> "USD".equals(e.getCurCode()) && "D".equals(e.getDc()))
+			.map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setRealAmountDrUsd(realAmountDrUsd.setScale(2, RoundingMode.HALF_UP));
+		//未收美元
+		item.setNotReceivedDrUsd(amountDrUsd.subtract(realAmountDrUsd));
+		//应收HKD
+		BigDecimal amountDrHkd = feeCenters.stream().filter(e -> "HKD".equals(e.getCurCode()) && "D".equals(e.getDc()))
+			.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setAmountDrHkd(amountDrHkd.setScale(2, RoundingMode.HALF_UP));
+		//实收HKD
+		BigDecimal realAmountDrHkd = feeCenters.stream().filter(e -> "HKD".equals(e.getCurCode()) && "D".equals(e.getDc()))
+			.map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setRealAmountDrHkd(realAmountDrHkd.setScale(2, RoundingMode.HALF_UP));
+		//未收HKD
+		item.setNotReceivedDrHkd(amountDrHkd.subtract(amountDrHkd));
+		//应收VND
+		BigDecimal amountDrVnd = feeCenters.stream().filter(e -> "VND".equals(e.getCurCode()) && "D".equals(e.getDc()))
+			.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setAmountDrVnd(amountDrVnd.setScale(2, RoundingMode.HALF_UP));
+		//实收VND
+		BigDecimal realAmountDrVnd = feeCenters.stream().filter(e -> "VND".equals(e.getCurCode()) && "D".equals(e.getDc()))
+			.map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setRealAmountDrVnd(realAmountDrVnd.setScale(2, RoundingMode.HALF_UP));
+		//未收VND
+		item.setNotReceivedDrVnd(amountDrVnd.subtract(realAmountDrVnd));
+		//应收SGD
+		BigDecimal amountDrSgd = feeCenters.stream().filter(e -> "SGD".equals(e.getCurCode()) && "D".equals(e.getDc()))
+			.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setAmountDrSgd(amountDrSgd.setScale(2, RoundingMode.HALF_UP));
+		//实收SGD
+		BigDecimal realAmountDrSgd = feeCenters.stream().filter(e -> "SGD".equals(e.getCurCode()) && "D".equals(e.getDc()))
+			.map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setRealAmountDrSgd(realAmountDrSgd.setScale(2, RoundingMode.HALF_UP));
+		//未收SGD
+		item.setNotReceivedDrSgd(amountDrSgd.subtract(realAmountDrSgd));
+		//应收其他
+		BigDecimal amountDrOther = feeCenters.stream().filter(e -> !"CNY,USD".contains(e.getCurCode()) && "D".equals(e.getDc()))
+			.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setAmountDrOther(amountDrOther.setScale(2, RoundingMode.HALF_UP));
+		//实收其他
+		BigDecimal realAmountDrOther = feeCenters.stream().filter(e -> !"CNY,USD".contains(e.getCurCode()) && "D".equals(e.getDc()))
+			.map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setRealAmountDrOther(realAmountDrOther.setScale(2, RoundingMode.HALF_UP));
+		//未收其他
+		item.setNotReceivedDrOther(amountDrOther.subtract(realAmountDrOther));
+		//合计应收
+		BigDecimal amountDrLoc = feeCenters.stream().filter(e ->  "D".equals(e.getDc()))
+			.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setAmountDrLoc(amountDrLoc.setScale(2, RoundingMode.HALF_UP));
+		//实际合计应收
+		BigDecimal realAmountDrLoc = feeCenters.stream().filter(e ->  "D".equals(e.getDc()))
+			.map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setRealAmountDrLoc(realAmountDrLoc.setScale(2, RoundingMode.HALF_UP));
+		//未收合计
+		item.setNotReceivedLoc(amountDrLoc.subtract(realAmountDrLoc));
+		//应付人民币
+		BigDecimal amountCr = feeCenters.stream().filter(e -> "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
+			.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setAmountCr(amountCr.setScale(2, RoundingMode.HALF_UP));
+		//实付人民币
+		BigDecimal realAmountCr = feeCenters.stream().filter(e -> "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
+			.map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setRealAmountCr(realAmountCr.setScale(2, RoundingMode.HALF_UP));
+		//未付人民币
+		item.setNotReceivedCr(amountCr.subtract(realAmountCr));
+		//应付美元
+		BigDecimal amountCrUsd = feeCenters.stream().filter(e -> "USD".equals(e.getCurCode()) && "C".equals(e.getDc()))
+			.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setAmountCrUsd(amountCrUsd.setScale(2, RoundingMode.HALF_UP));
+		//实付美元
+		BigDecimal realAmountCrUsd = feeCenters.stream().filter(e -> "USD".equals(e.getCurCode()) && "C".equals(e.getDc()))
+			.map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setRealAmountCrUsd(realAmountCrUsd.setScale(2, RoundingMode.HALF_UP));
+		//未付美元
+		item.setNotReceivedCrUsd(amountCrUsd.subtract(realAmountCrUsd));
+		//应付HKD
+		BigDecimal amountCrHkd = feeCenters.stream().filter(e -> "HKD".equals(e.getCurCode()) && "C".equals(e.getDc()))
+			.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setAmountCrHkd(amountCrHkd.setScale(2, RoundingMode.HALF_UP));
+		//实付HKD
+		BigDecimal realAmountCrHkd = feeCenters.stream().filter(e -> "HKD".equals(e.getCurCode()) && "C".equals(e.getDc()))
+			.map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setRealAmountCrHkd(realAmountCrHkd.setScale(2, RoundingMode.HALF_UP));
+		//未付HKD
+		item.setNotReceivedCrHkd(amountCrHkd.subtract(realAmountCrHkd));
+		//应付VND
+		BigDecimal amountCrVnd = feeCenters.stream().filter(e -> "VND".equals(e.getCurCode()) && "C".equals(e.getDc()))
+			.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setAmountCrVnd(amountCrVnd.setScale(2, RoundingMode.HALF_UP));
+		//实付VND
+		BigDecimal realAmountCrVnd = feeCenters.stream().filter(e -> "VND".equals(e.getCurCode()) && "C".equals(e.getDc()))
+			.map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setRealAmountCrVnd(realAmountCrVnd.setScale(2, RoundingMode.HALF_UP));
+		//未付VND
+		item.setNotReceivedCrVnd(amountCrVnd.subtract(realAmountCrVnd));
+		//应付SGD
+		BigDecimal amountCrSgd =feeCenters.stream().filter(e -> "SGD".equals(e.getCurCode()) && "C".equals(e.getDc()))
+			.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setAmountCrSgd(amountCrSgd.setScale(2, RoundingMode.HALF_UP));
+		//实付SGD
+		BigDecimal realAmountCrSgd = feeCenters.stream().filter(e -> "SGD".equals(e.getCurCode()) && "C".equals(e.getDc()))
+			.map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setRealAmountCrSgd(realAmountCrSgd.setScale(2, RoundingMode.HALF_UP));
+		//未付SGD
+		item.setNotReceivedCrSgd(amountCrSgd.subtract(realAmountCrSgd));
+		//应付其他
+		BigDecimal amountCrOther = feeCenters.stream().filter(e -> !"CNY,USD".contains(e.getCurCode()) && "C".equals(e.getDc()))
+			.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setAmountCrOther(amountCrOther.setScale(2, RoundingMode.HALF_UP));
+		//实付其他
+		BigDecimal realAmountCrOther = feeCenters.stream().filter(e -> !"CNY,USD".contains(e.getCurCode()) && "C".equals(e.getDc()))
+			.map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setRealAmountCrOther(realAmountCrOther.setScale(2, RoundingMode.HALF_UP));
+		//未付其他
+		item.setNotReceivedCrOther(amountCrOther.subtract(realAmountCrOther));
+		//合计应付
+		BigDecimal amountCrLoc = feeCenters.stream().filter(e ->  "C".equals(e.getDc()))
+			.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setAmountCrLoc(amountCrLoc.setScale(2, RoundingMode.HALF_UP));
+		//实际合计应付
+		BigDecimal realAmountCrLoc = feeCenters.stream().filter(e ->  "C".equals(e.getDc()))
+			.map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setRealAmountCrLoc(realAmountCrLoc.setScale(2, RoundingMode.HALF_UP));
+		//未付合计
+		item.setNotReceivedCrLoc(amountCrLoc.subtract(realAmountCrLoc));
+		//合计利润
+		item.setAmountProfitLoc(amountDrLoc.subtract(amountCrLoc));
+		//实际单票利润
+		item.setRealAmountProfitLoc(realAmountDrLoc.subtract(realAmountCrLoc));
+		//人民币利润
+		item.setAmountProfit(amountDr.subtract(amountCr));
+		//美元利润
+		item.setAmountProfitUsd(amountDrUsd.subtract(amountCrUsd));
+		//HKD利润
+		item.setAmountProfitHkd(amountDrHkd.subtract(amountCrHkd));
+		//VND利润
+		item.setAmountProfitVnd(amountDrVnd.subtract(amountCrVnd));
+		//SGD利润
+		item.setAmountProfitSgd(amountDrSgd.subtract(amountCrSgd));
+		//其他利润
+		item.setAmountProfitOther(amountDrOther.subtract(amountDrOther));
+		//应收海运费
+		BigDecimal oceanFreightDr = feeCenters.stream().filter(e -> "USD".equals(e.getCurCode()) && "D".equals(e.getDc())
+			&& "HYF".equals(e.getFeeCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setOceanFreightDr(oceanFreightDr.setScale(2, RoundingMode.HALF_UP));
+		//应付海运费
+		BigDecimal oceanFreightCr = feeCenters.stream().filter(e -> "USD".equals(e.getCurCode()) && "C".equals(e.getDc())
+			&& "HYF".equals(e.getFeeCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+		item.setOceanFreightCr(oceanFreightCr.setScale(2, RoundingMode.HALF_UP));
+		//海运费利润
+		item.setOceanFreightProfit(oceanFreightDr.subtract(oceanFreightCr));
+		return item;
+	}
+
 	@Override
 	public R<Map<String, Object>> businessSum(String dateStart, String dateEnd) {
 		long HYJK;
@@ -545,7 +724,13 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 			feeSummaryQ.setBranchId(AuthUtil.getDeptId());
 			feeSummaryQ.setBillType("MH,DD");
 		}
-		return R.data(page.setRecords(finAccBillsMapper.feeSummaryList(page, feeSummaryQ)));
+		List<FeeSummaryRD> feeSummaryRDList = finAccBillsMapper.feeSummaryList(page, feeSummaryQ);
+		for (FeeSummaryRD item : feeSummaryRDList) {
+			item.setAmountOther(item.getAmountHKD().add(item.getAmountSGD()).add(item.getAmountVND()));
+			item.setAmountOtherAlready(item.getAmountHKDAlready().add(item.getAmountSGDAlready()).add(item.getAmountVNDAlready()));
+			item.setAmountOtherNot(item.getAmountHKDNot().add(item.getAmountSGDNot()).add(item.getAmountVNDNot()));
+		}
+		return R.data(page.setRecords(feeSummaryRDList));
 	}
 
 	@Override
@@ -555,7 +740,13 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 			feeSummaryQ.setBranchId(AuthUtil.getDeptId());
 			feeSummaryQ.setBillType("MH,DD");
 		}
-		return finAccBillsMapper.feeSummaryExportList(feeSummaryQ);
+		List<FeeSummaryRD> feeSummaryRDList = finAccBillsMapper.feeSummaryExportList(feeSummaryQ);
+		for (FeeSummaryRD item : feeSummaryRDList) {
+			item.setAmountOther(item.getAmountHKD().add(item.getAmountSGD()).add(item.getAmountVND()));
+			item.setAmountOtherAlready(item.getAmountHKDAlready().add(item.getAmountSGDAlready()).add(item.getAmountVNDAlready()));
+			item.setAmountOtherNot(item.getAmountHKDNot().add(item.getAmountSGDNot()).add(item.getAmountVNDNot()));
+		}
+		return feeSummaryRDList;
 	}
 
 	@Override
@@ -565,7 +756,15 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 			feeSummaryQ.setBranchId(AuthUtil.getDeptId());
 			feeSummaryQ.setBillType("MH,DD");
 		}
-		return R.data(page.setRecords(finAccBillsMapper.feeSummaryDetailList(page, feeSummaryQ)));
+		List<FeeSummaryDetailRD> feeSummaryDetailList = finAccBillsMapper.feeSummaryDetailList(page, feeSummaryQ);
+		for (FeeSummaryDetailRD item : feeSummaryDetailList) {
+			item.setAmountOther(item.getAmountHKD().add(item.getAmountSGD()).add(item.getAmountVND()));
+			item.setAmountOtherAlready(item.getAmountHKDAlready().add(item.getAmountSGDAlready()).add(item.getAmountVNDAlready()));
+			item.setAmountOtherNot(item.getAmountHKDNot().add(item.getAmountSGDNot()).add(item.getAmountVNDNot()));
+			item.setAmountnvoicingOther(item.getAmountnvoicingHKD().add(item.getAmountnvoicingSGD()).add(item.getAmountnvoicingVND()));
+			item.setAmountnvoicingOtherNot(item.getAmountnvoicingHKDNot().add(item.getAmountnvoicingSGDNot()).add(item.getAmountnvoicingVNDNot()));
+		}
+		return R.data(page.setRecords(feeSummaryDetailList));
 	}
 
 	@Override
@@ -575,7 +774,15 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 			feeSummaryQ.setBranchId(AuthUtil.getDeptId());
 			feeSummaryQ.setBillType("MH,DD");
 		}
-		return finAccBillsMapper.feeSummaryDetailExportList(feeSummaryQ);
+		List<FeeSummaryDetailRD> feeSummaryDetailList = finAccBillsMapper.feeSummaryDetailExportList(feeSummaryQ);
+		for (FeeSummaryDetailRD item : feeSummaryDetailList) {
+			item.setAmountOther(item.getAmountHKD().add(item.getAmountSGD()).add(item.getAmountVND()));
+			item.setAmountOtherAlready(item.getAmountHKDAlready().add(item.getAmountSGDAlready()).add(item.getAmountVNDAlready()));
+			item.setAmountOtherNot(item.getAmountHKDNot().add(item.getAmountSGDNot()).add(item.getAmountVNDNot()));
+			item.setAmountnvoicingOther(item.getAmountnvoicingHKD().add(item.getAmountnvoicingSGD()).add(item.getAmountnvoicingVND()));
+			item.setAmountnvoicingOtherNot(item.getAmountnvoicingHKDNot().add(item.getAmountnvoicingSGDNot()).add(item.getAmountnvoicingVNDNot()));
+		}
+		return feeSummaryDetailList;
 	}
 
 	@Override
@@ -590,7 +797,13 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 			}
 			feeSummaryQ.setBillType("MH,DD");
 		}
-		return R.data(page.setRecords(finAccBillsMapper.feeSummaryDetailNotList(page, feeSummaryQ)));
+		List<FeeSummaryDetailNotRD> feeSummaryDetailExportNotList = finAccBillsMapper.feeSummaryDetailNotList(page, feeSummaryQ);
+		for (FeeSummaryDetailNotRD item : feeSummaryDetailExportNotList) {
+			item.setAmountnvoicingOther(item.getAmountnvoicingHKD().add(item.getAmountnvoicingSGD()).add(item.getAmountnvoicingVND()));
+			item.setAmountnvoicingOtherNot(item.getAmountnvoicingHKDNot().add(item.getAmountnvoicingSGDNot()).add(item.getAmountnvoicingVNDNot()));
+			item.setAmountOtherNot(item.getAmountHKDNot().add(item.getAmountSGDNot()).add(item.getAmountVNDNot()));
+		}
+		return R.data(page.setRecords(feeSummaryDetailExportNotList));
 	}
 
 	@Override
@@ -605,7 +818,13 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 			}
 			feeSummaryQ.setBillType("MH,DD");
 		}
-		return finAccBillsMapper.feeSummaryDetailExportNotList(feeSummaryQ);
+		List<FeeSummaryDetailNotRD> feeSummaryDetailExportNotList = finAccBillsMapper.feeSummaryDetailExportNotList(feeSummaryQ);
+		for (FeeSummaryDetailNotRD item : feeSummaryDetailExportNotList) {
+			item.setAmountnvoicingOther(item.getAmountnvoicingHKD().add(item.getAmountnvoicingSGD()).add(item.getAmountnvoicingVND()));
+			item.setAmountnvoicingOtherNot(item.getAmountnvoicingHKDNot().add(item.getAmountnvoicingSGDNot()).add(item.getAmountnvoicingVNDNot()));
+			item.setAmountOtherNot(item.getAmountHKDNot().add(item.getAmountSGDNot()).add(item.getAmountVNDNot()));
+		}
+		return feeSummaryDetailExportNotList;
 	}
 
 	@Override
@@ -767,30 +986,43 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 				item.setRealAmountProfitLoc(item.getRealAmountDrLoc().subtract(item.getRealAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
 			}
 		}
+		List<FeeCenter> feeCenterList = new ArrayList<>();
+		if (!financeProfitList.isEmpty()) {
+			List<Long> idList = financeProfitList.stream().map(FinanceProfitDtoList::getId).distinct().collect(Collectors.toList());
+			feeCenterList = feeCenterMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
+				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+				.eq(FeeCenter::getIsDeleted, 0)
+				.in(FeeCenter::getPid, idList));
+		}
 		for (FinanceProfitDtoList item : financeProfitList) {
-			item.setAmountProfit(item.getAmountDr().subtract(item.getAmountCr()).setScale(2, RoundingMode.HALF_UP));
-			item.setAmountProfitUsd(item.getAmountDrUsd().subtract(item.getAmountCrUsd()).setScale(2, RoundingMode.HALF_UP));
-			item.setRealAmountProfitLoc(item.getRealAmountDrLoc().subtract(item.getRealAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
-			item.setNotReceivedDr(item.getAmountDr().subtract(item.getRealAmountDr()).setScale(2, RoundingMode.HALF_UP));
-			item.setNotReceivedDrUsd(item.getAmountDrUsd().subtract(item.getRealAmountDrUsd()).setScale(2, RoundingMode.HALF_UP));
-			item.setNotReceivedLoc(item.getAmountDrLoc().subtract(item.getRealAmountDrLoc()).setScale(2, RoundingMode.HALF_UP));
+			if (!feeCenterList.isEmpty()) {
+				List<FeeCenter> feeCenters = feeCenterList.stream().filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
+				if (!feeCenters.isEmpty()) {
+					assignment(feeCenters, item);
+				}
+			}
 		}
 		Map<String, BigDecimal> map = new HashMap<>();
 		map.put("amountDrUsd", financeProfitList.stream().map(FinanceProfitDtoList::getAmountDrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("realAmountDrUsd", financeProfitList.stream().map(FinanceProfitDtoList::getRealAmountDrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("amountDr", financeProfitList.stream().map(FinanceProfitDtoList::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("realAmountDr", financeProfitList.stream().map(FinanceProfitDtoList::getRealAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		map.put("amountDrOther", financeProfitList.stream().map(FinanceProfitDtoList::getAmountDrOther).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		map.put("realAmountDrOther", financeProfitList.stream().map(FinanceProfitDtoList::getRealAmountDrOther).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("amountDrLoc", financeProfitList.stream().map(FinanceProfitDtoList::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("realAmountDrLoc", financeProfitList.stream().map(FinanceProfitDtoList::getRealAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("amountCrUsd", financeProfitList.stream().map(FinanceProfitDtoList::getAmountCrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("realAmountCrUsd", financeProfitList.stream().map(FinanceProfitDtoList::getRealAmountCrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("amountCr", financeProfitList.stream().map(FinanceProfitDtoList::getAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("realAmountCr", financeProfitList.stream().map(FinanceProfitDtoList::getRealAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		map.put("amountCrOther", financeProfitList.stream().map(FinanceProfitDtoList::getAmountCrOther).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		map.put("realAmountCrOther", financeProfitList.stream().map(FinanceProfitDtoList::getRealAmountCrOther).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("amountCrLoc", financeProfitList.stream().map(FinanceProfitDtoList::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("realAmountCrLoc", financeProfitList.stream().map(FinanceProfitDtoList::getRealAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("amountProfitLoc", financeProfitList.stream().map(FinanceProfitDtoList::getAmountProfitLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("realAmountProfitLoc", financeProfitList.stream().map(FinanceProfitDtoList::getRealAmountProfitLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("amountProfit", financeProfitList.stream().map(FinanceProfitDtoList::getAmountProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		map.put("amountProfitOther", financeProfitList.stream().map(FinanceProfitDtoList::getAmountProfitOther).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("amountProfitUsd", financeProfitList.stream().map(FinanceProfitDtoList::getAmountProfitUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("oceanFreightDr", financeProfitList.stream().map(FinanceProfitDtoList::getOceanFreightDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		map.put("oceanFreightCr", financeProfitList.stream().map(FinanceProfitDtoList::getOceanFreightCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
@@ -937,12 +1169,21 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 			financeProfitList = financeProfitMapper.financeProfitListSum(financeProfit);
 		}
 		List<FinanceProfit> financeProfitDataList = new ArrayList<>();
+		List<FeeCenter> feeCenterList = new ArrayList<>();
 		if (!financeProfitList.isEmpty()) {
 			String mblNo = financeProfitList.stream().map(FinanceProfitDtoList::getMblNo).distinct().collect(Collectors.joining(","));
 			financeProfitDataList = financeProfitMapper.selectList(new LambdaQueryWrapper<FinanceProfit>()
 				.apply("find_in_set(mblno,'" + mblNo + "')")
 				.apply("find_in_set(business_type,'SE,SI,AE,AI')")
 			);
+			List<Long> idList = financeProfitList.stream().map(FinanceProfitDtoList::getId).distinct().collect(Collectors.toList());
+			if (!financeProfitDataList.isEmpty()) {
+				idList.addAll(financeProfitDataList.stream().map(FinanceProfit::getId).distinct().collect(Collectors.toList()));
+			}
+			feeCenterList = feeCenterMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
+				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+				.eq(FeeCenter::getIsDeleted, 0)
+				.in(FeeCenter::getPid, idList));
 		}
 		for (FinanceProfitDtoList item : financeProfitList) {
 			if (("SEA".equals(item.getBusinessType()) || "SIA".equals(item.getBusinessType())
@@ -955,27 +1196,12 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 					item.setLineCnName(profit.getLineCnName());
 				}
 			}
-			//利润
-			item.setAmountProfit(item.getAmountDr().subtract(item.getAmountCr()).setScale(2, RoundingMode.HALF_UP));
-			item.setAmountProfitUsd(item.getAmountDrUsd().subtract(item.getAmountCrUsd()).setScale(2, RoundingMode.HALF_UP));
-			item.setAmountProfitHkd(item.getAmountDrHkd().subtract(item.getAmountCrHkd()).setScale(2, RoundingMode.HALF_UP));
-			item.setAmountProfitVnd(item.getAmountDrVnd().subtract(item.getAmountCrVnd()).setScale(2, RoundingMode.HALF_UP));
-			item.setAmountProfitSgd(item.getAmountDrSgd().subtract(item.getAmountCrSgd()).setScale(2, RoundingMode.HALF_UP));
-			item.setRealAmountProfitLoc(item.getRealAmountDrLoc().subtract(item.getRealAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
-			//未收
-			item.setNotReceivedDr(item.getAmountDr().subtract(item.getRealAmountDr()).setScale(2, RoundingMode.HALF_UP));
-			item.setNotReceivedDrUsd(item.getAmountDrUsd().subtract(item.getRealAmountDrUsd()).setScale(2, RoundingMode.HALF_UP));
-			item.setNotReceivedDrHkd(item.getAmountDrHkd().subtract(item.getRealAmountDrHkd()).setScale(2, RoundingMode.HALF_UP));
-			item.setNotReceivedDrVnd(item.getAmountDrVnd().subtract(item.getRealAmountDrVnd()).setScale(2, RoundingMode.HALF_UP));
-			item.setNotReceivedDrSgd(item.getAmountDrSgd().subtract(item.getRealAmountDrSgd()).setScale(2, RoundingMode.HALF_UP));
-			item.setNotReceivedLoc(item.getAmountDrLoc().subtract(item.getRealAmountDrLoc()).setScale(2, RoundingMode.HALF_UP));
-			//未付
-			item.setNotReceivedCr(item.getAmountCr().subtract(item.getRealAmountCr()).setScale(2, RoundingMode.HALF_UP));
-			item.setNotReceivedCrUsd(item.getAmountCrUsd().subtract(item.getRealAmountCrUsd()).setScale(2, RoundingMode.HALF_UP));
-			item.setNotReceivedCrHkd(item.getAmountCrHkd().subtract(item.getRealAmountCrHkd()).setScale(2, RoundingMode.HALF_UP));
-			item.setNotReceivedCrVnd(item.getAmountCrVnd().subtract(item.getRealAmountCrVnd()).setScale(2, RoundingMode.HALF_UP));
-			item.setNotReceivedCrSgd(item.getAmountCrSgd().subtract(item.getRealAmountCrSgd()).setScale(2, RoundingMode.HALF_UP));
-			item.setNotReceivedCrLoc(item.getAmountCrLoc().subtract(item.getRealAmountCrLoc()).setScale(2, RoundingMode.HALF_UP));
+			if (!feeCenterList.isEmpty()) {
+				List<FeeCenter> feeCenters = feeCenterList.stream().filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
+				if (!feeCenters.isEmpty()) {
+					assignment(feeCenters, item);
+				}
+			}
 		}
 		return financeProfitList;
 	}

+ 3 - 0
blade-service/blade-los/src/main/java/org/springblade/los/view/mapper/FinanceProfitMapper.xml

@@ -64,6 +64,7 @@
         <result column="teu" property="teu"/>
         <result column="teu_total" property="teuTotal"/>
         <result column="quantity_cntr_descr" property="quantityCntrDescr"/>
+        <result column="id" property="id"/>
     </resultMap>
 
 
@@ -72,6 +73,7 @@
     </select>
     <select id="financeProfitList" resultType="org.springblade.los.statisticAnalysis.FinanceProfitDtoList">
     select
+        seb.id AS id,
         seb.business_type AS businessType,
         seb.bill_type AS billType,
         seb.bill_no AS billNo,
@@ -224,6 +226,7 @@
     </select>
     <select id="financeProfitListSum" resultType="org.springblade.los.statisticAnalysis.FinanceProfitDtoList">
         select
+        seb.id AS id,
         seb.business_type AS businessType,
         seb.bill_type AS billType,
         seb.bill_no AS billNo,