Browse Source

2023年11月28日17:31:01

纪新园 2 years ago
parent
commit
41bdcfe670
22 changed files with 644 additions and 84 deletions
  1. 27 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/Bills.java
  2. 6 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/FeeCenter.java
  3. 22 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/FinAccBills.java
  4. 2 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/ListAccBillVO.java
  5. 5 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/vo/FinAccBillsVO.java
  6. 21 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/invoices/entity/FinInvoices.java
  7. 12 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/invoices/entity/FinInvoicesItems.java
  8. 17 4
      blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java
  9. 8 8
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/BillsController.java
  10. 5 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml
  11. 6 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IPreContainersService.java
  12. 8 8
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java
  13. 99 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/PreContainersServiceImpl.java
  14. 3 3
      blade-service/blade-los/src/main/java/org/springblade/los/check/controller/AuditProecessController.java
  15. 8 8
      blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java
  16. 4 4
      blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/controller/AgreementPriceController.java
  17. 4 4
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FeeCenterController.java
  18. 36 34
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FinAccBillsController.java
  19. 22 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/controller/FinInvoicesController.java
  20. 10 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/IFinInvoicesService.java
  21. 313 1
      blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/impl/FinInvoicesServiceImpl.java
  22. 6 6
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/impl/StatisticsServiceImpl.java

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

@@ -968,6 +968,27 @@ public class Bills implements Serializable {
 	 */
 	@ApiModelProperty(value = "是否海洋污染物 0=否 1=是")
 	private Integer dgIsMarinePollutant;
+
+	/**
+	 * 危险品净重
+	 */
+	@ApiModelProperty(value = "危险品净重")
+	private BigDecimal dgNetWeight;
+	/**
+	 * 危险品外包装
+	 */
+	@ApiModelProperty(value = "危险品外包装")
+	private String dgPackage;
+	/**
+	 * 危险品邮箱
+	 */
+	@ApiModelProperty(value = "危险品邮箱")
+	private String dgMailbox;
+	/**
+	 * 危险品备注
+	 */
+	@ApiModelProperty(value = "危险品备注")
+	private String dgRemarks;
 	/**
 	 * 场站 id
 	 */
@@ -1423,6 +1444,12 @@ public class Bills implements Serializable {
 	@TableField(exist = false)
 	private BigDecimal grossMargin;
 
+	/**
+	 * 汇率
+	 */
+	@TableField(exist = false)
+	private BigDecimal rate;
+
 
 	/**
 	 * 预配箱型箱量

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

@@ -710,6 +710,12 @@ public class FeeCenter implements Serializable {
 	private BigDecimal invoiceAmountLoc;
 
 	/**
+	 * 已开票金额
+	 */
+	@ApiModelProperty(value = "已开票金额")
+	private BigDecimal uninvoicedAmount;
+
+	/**
 	 * 发票创建人 Id
 	 */
 	@ApiModelProperty(value = "发票创建人 Id")

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

@@ -20,9 +20,11 @@ import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -102,6 +104,8 @@ public class FinAccBills implements Serializable {
 	 * 账单日期
 	 */
 	@ApiModelProperty(value = "账单日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date billDate;
 
 	/**
@@ -123,6 +127,8 @@ public class FinAccBills implements Serializable {
 	 * 财务日期
 	 */
 	@ApiModelProperty(value = "财务日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date accountDate;
 
 	/**
@@ -154,6 +160,8 @@ public class FinAccBills implements Serializable {
 	 * 业务单据日期(主单,直单)
 	 */
 	@ApiModelProperty(value = "业务单据日期(主单,直单)")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date businessDate;
 	/**
 	 * 业务单据日期(主单,直单)
@@ -174,6 +182,8 @@ public class FinAccBills implements Serializable {
 	 * 业务单据日期(分单)
 	 */
 	@ApiModelProperty(value = "业务单据日期(分单)")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date businessDivideDate;
 	/**
 	 * 业务单据日期(分单)
@@ -290,6 +300,8 @@ public class FinAccBills implements Serializable {
 	 * 开船日期
 	 */
 	@ApiModelProperty(value = "开船日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date etd;
 	/**
 	 * 开船日期
@@ -300,6 +312,8 @@ public class FinAccBills implements Serializable {
 	 * 到港日期
 	 */
 	@ApiModelProperty(value = "到港日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date eta;
 	/**
 	 * 到港日期
@@ -401,6 +415,8 @@ public class FinAccBills implements Serializable {
 	 */
 	@ApiModelProperty(value = "结算日期")
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date stlDate;
 	/**
 	 * 结算日期
@@ -456,6 +472,8 @@ public class FinAccBills implements Serializable {
 	 * 发票日期
 	 */
 	@ApiModelProperty(value = "发票日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date invoiceDate;
 	/**
 	 * 发票日期
@@ -481,6 +499,8 @@ public class FinAccBills implements Serializable {
 	 * 凭证日期
 	 */
 	@ApiModelProperty(value = "凭证日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date voucherDate;
 	/**
 	 * 凭证日期
@@ -564,6 +584,8 @@ public class FinAccBills implements Serializable {
 	 * 审核日期
 	 */
 	@ApiModelProperty(value = "审核日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date approvedDate;
 
 	/**

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

@@ -1,5 +1,6 @@
 package org.springblade.los.finance.fee.entity;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.math.BigDecimal;
@@ -147,7 +148,7 @@ public class ListAccBillVO extends FinAccBills {
 	private String bookingNo;
 
 	/**
-	 * 业务类型,1=对账单 2=结算单
+	 * 业务类型,1=对账单 2=结算单 3=发票
 	 */
 	private String type;
 

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

@@ -40,7 +40,6 @@ import java.util.Date;
 public class FinAccBillsVO extends FinAccBills {
 	private static final long serialVersionUID = 1L;
 
-
 	/**
 	 * 业务类型
 	 */
@@ -244,4 +243,9 @@ public class FinAccBillsVO extends FinAccBills {
 	 */
 	private String accountPeriodType;
 
+	/**
+	 * 已开票金额
+	 */
+	private String uninvoicedAmount;
+
 }

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

@@ -19,9 +19,11 @@ package org.springblade.los.finance.invoices.entity;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -100,6 +102,8 @@ public class FinInvoices implements Serializable {
 	 * 单据日期
 	 */
 	@ApiModelProperty(value = "单据日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date billDate;
 	/**
 	 * 发票号码
@@ -110,6 +114,8 @@ public class FinInvoices implements Serializable {
 	 * 开票日期
 	 */
 	@ApiModelProperty(value = "开票日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date invoiceDate;
 	/**
 	 * 原发票号码
@@ -215,6 +221,8 @@ public class FinInvoices implements Serializable {
 	 * 开船日
 	 */
 	@ApiModelProperty(value = "开船日")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	private Date etd;
 	/**
 	 * 装货港
@@ -305,11 +313,15 @@ public class FinInvoices implements Serializable {
 	 * 财务开始日期
 	 */
 	@ApiModelProperty(value = "财务开始日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date accountDateFrom;
 	/**
 	 * 财务结束日期
 	 */
 	@ApiModelProperty(value = "财务结束日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date accountDateTo;
 	/**
 	 * 申请人 Id
@@ -355,6 +367,8 @@ public class FinInvoices implements Serializable {
 	 * 导出日期
 	 */
 	@ApiModelProperty(value = "导出日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date exportDate;
 	/**
 	 * 导出人 Id
@@ -468,7 +482,7 @@ public class FinInvoices implements Serializable {
 	/**
 	 * 业务-发票明细
 	 */
-	@ApiModelProperty(value = "租户")
+	@TableField(exist = false)
 	private List<FinInvoicesItems> finInvoicesItemsList;
 
 	/**
@@ -483,5 +497,11 @@ public class FinInvoices implements Serializable {
 	@TableField(exist = false)
 	private String businessTypeCode;
 
+	/**
+	 * 发表类型  进项发票  销项发票
+	 */
+	@ApiModelProperty(value = "发表类型")
+	private String type;
+
 
 }

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

@@ -18,9 +18,11 @@ package org.springblade.los.finance.invoices.entity;
 
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -118,11 +120,15 @@ public class FinInvoicesItems implements Serializable {
 	 * 对账/结算日期
 	 */
 	@ApiModelProperty(value = "对账/结算日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date billDate;
 	/**
 	 * 业务财务日期
 	 */
 	@ApiModelProperty(value = "业务财务日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date accountDate;
 	/**
 	 * 财务年
@@ -253,11 +259,15 @@ public class FinInvoicesItems implements Serializable {
 	 * 开船日期
 	 */
 	@ApiModelProperty(value = "开船日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	private Date etd;
 	/**
 	 * 到港日期
 	 */
 	@ApiModelProperty(value = "到港日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date eta;
 	/**
 	 * 装货港 id
@@ -353,6 +363,8 @@ public class FinInvoicesItems implements Serializable {
 	 * 账单日期
 	 */
 	@ApiModelProperty(value = "账单日期")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
 	private Date accDate;
 	/**
 	 * 费用收付 D-Debit C=Credit

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

@@ -23,6 +23,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.los.basic.cur.entity.BCurrency;
+import org.springblade.los.basic.cur.service.IBCurrencyService;
 import org.springblade.los.basic.reports.entity.Reports;
 import org.springblade.los.basic.reports.mapper.ReportsMapper;
 import org.springblade.los.basic.reports.service.IReportsService;
@@ -54,6 +56,8 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 
 	private final IFeeCenterService feeCenterService;
 
+	private final IBCurrencyService ibCurrencyService;
+
 	@Override
 	public IPage<ReportsVO> selectReportsPage(IPage<ReportsVO> page, ReportsVO reports) {
 		return page.setRecords(baseMapper.selectReportsPage(page, reports));
@@ -94,10 +98,20 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 		if (reports == null) {
 			return R.data(map);
 		}
+		BCurrency bCurrency = ibCurrencyService.getOne(new LambdaQueryWrapper<BCurrency>()
+			.eq(BCurrency::getStatus, 0)
+			.eq(BCurrency::getTenantId, AuthUtil.getTenantId())
+			.eq(BCurrency::getIsDeleted, 0)
+			.eq(BCurrency::getCode, "USD"));
 		List<Bills> list = new ArrayList<>();
 		if ("SE".equals(reports.getBusinessType())) {
 			Bills bills = billsService.getById(billId);
 			if (bills != null) {
+				if (bCurrency != null) {
+					bills.setRate(bCurrency.getExrate());
+				} else {
+					bills.setRate(new BigDecimal("0.00"));
+				}
 				if (ObjectUtils.isNotNull(bills.getAmountProfitLoc()) && ObjectUtils.isNotNull(bills.getAmountDrLoc())) {
 					if (bills.getAmountProfitLoc().compareTo(new BigDecimal("0.00")) == 0 ||
 						bills.getAmountDrLoc().compareTo(new BigDecimal("0.00")) == 0) {
@@ -119,8 +133,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 							List<FeeCenter> feeCenterListMh = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 								.in(FeeCenter::getPid, ids)
 								.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-								.eq(FeeCenter::getIsDeleted, 0)
-								.eq(FeeCenter::getDc, "C"));
+								.eq(FeeCenter::getIsDeleted, 0));
 							for (Bills item : billsList) {
 								item.setFeeCenterList(feeCenterListMh.stream()
 									.filter(e -> "D".equals(e.getDc()) && e.getPid().equals(item.getId()))
@@ -142,11 +155,11 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 					bills.setFeeCenterList(feeCenterList.stream()
 						.filter(e -> "C".equals(e.getDc()) && e.getPid().equals(bills.getId()))
 						.collect(Collectors.toList()));
-					list.add(0,bills);
+					list.add(0, bills);
 					bills.setFeeCenterList(feeCenterList.stream()
 						.filter(e -> "D".equals(e.getDc()) && e.getPid().equals(bills.getId()))
 						.collect(Collectors.toList()));
-					list.add(0,bills);
+					list.add(0, bills);
 				}
 			}
 		}

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

@@ -109,12 +109,12 @@ public class BillsController extends BladeController {
 				.like(Bills::getSrcEnName, bills.getSrcCnName()))
 			.apply(ObjectUtils.isNotNull(bills.getCreateDeptName()), "find_in_set('" + bills.getCreateDeptName() + "',create_dept_name)");
 		if (ObjectUtils.isNotNull(bills.getEtdList()) && bills.getEtdList().size() > 0) {
-			lambdaQueryWrapper.gt(Bills::getEtd, bills.getEtdList().get(0));
-			lambdaQueryWrapper.lt(Bills::getEtd, bills.getEtdList().get(1));
+			lambdaQueryWrapper.ge(Bills::getEtd, bills.getEtdList().get(0));
+			lambdaQueryWrapper.le(Bills::getEtd, bills.getEtdList().get(1));
 		}
 		if (ObjectUtils.isNotNull(bills.getEtaList()) && bills.getEtaList().size() > 0) {
-			lambdaQueryWrapper.gt(Bills::getEta, bills.getEtaList().get(0));
-			lambdaQueryWrapper.lt(Bills::getEta, bills.getEtaList().get(1));
+			lambdaQueryWrapper.ge(Bills::getEta, bills.getEtaList().get(0));
+			lambdaQueryWrapper.le(Bills::getEta, bills.getEtaList().get(1));
 		}
 		lambdaQueryWrapper.and(ObjectUtils.isNotNull(bills.getBookingAgentCnName()), i -> i.like(Bills::getBookingAgentCnName, bills.getBookingAgentCnName()).or()
 			.like(Bills::getBookingAgentEnName, bills.getBookingAgentCnName()))
@@ -162,12 +162,12 @@ public class BillsController extends BladeController {
 				.like(Bills::getSrcEnName, bills.getSrcCnName()))
 			.apply(ObjectUtils.isNotNull(bills.getCreateDeptName()), "find_in_set('" + bills.getCreateDeptName() + "',create_dept_name)");
 		if (ObjectUtils.isNotNull(bills.getEtdList()) && bills.getEtdList().size() > 0) {
-			lambdaQueryWrapper.gt(Bills::getEtd, bills.getEtdList().get(0));
-			lambdaQueryWrapper.lt(Bills::getEtd, bills.getEtdList().get(1));
+			lambdaQueryWrapper.ge(Bills::getEtd, bills.getEtdList().get(0));
+			lambdaQueryWrapper.le(Bills::getEtd, bills.getEtdList().get(1));
 		}
 		if (ObjectUtils.isNotNull(bills.getEtaList()) && bills.getEtaList().size() > 0) {
-			lambdaQueryWrapper.gt(Bills::getEta, bills.getEtaList().get(0));
-			lambdaQueryWrapper.lt(Bills::getEta, bills.getEtaList().get(1));
+			lambdaQueryWrapper.ge(Bills::getEta, bills.getEtaList().get(0));
+			lambdaQueryWrapper.le(Bills::getEta, bills.getEtaList().get(1));
 		}
 		lambdaQueryWrapper.and(ObjectUtils.isNotNull(bills.getBookingAgentCnName()), i -> i.like(Bills::getBookingAgentCnName, bills.getBookingAgentCnName()).or()
 			.like(Bills::getBookingAgentEnName, bills.getBookingAgentCnName()))

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

@@ -304,7 +304,8 @@
         SUM(fee.amount_discount_loc) as amountDiscountLoc,
         SUM(fee.amount_loc) as amountLoc,
         SUM(fee.stl_ttl_amount) as stlTtlAmount,
-        IF(SUM(fee.unsettled_amount),SUM(fee.unsettled_amount),0.00) as unsettledAmount,
+        SUM(fee.invoice_amount_loc) as invoiceAmountLoc,
+        IF(SUM(fee.uninvoiced_amount),SUM(fee.uninvoiced_amount),0.00) as unsettledAmount,
         fee.is_signfor as isSignfor,
         fee.signfor_id as signforId,
         fee.signfor_name as signforName,
@@ -329,6 +330,9 @@
         <if test='acc.type != null and acc.type != "" and acc.type == "3"'>
             and acc.amount_cr_loc != acc.stl_amount_cr_loc
         </if>
+        <if test='acc.type != null and acc.type != "" and acc.type == "4"'>
+            and fee.amount != fee.invoice_amount_loc
+        </if>
         <if test="acc.dc != null and acc.dc != ''">
             and fee.dc = #{acc.dc}
         </if>

+ 6 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IPreContainersService.java

@@ -54,4 +54,10 @@ public interface IPreContainersService extends IService<PreContainers> {
 	 * @return
 	 */
     R delete(List<Long> toLongList);
+	/**
+	 * 新增或修改 业务-海运进出口-预配箱型箱量  批量
+	 * @param preContainersList
+	 * @return
+	 */
+	R submitList(List<PreContainers> preContainersList);
 }

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

@@ -174,6 +174,10 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		Integer GP48 = 0;
 		String boxTypeSum = "";
 		if (ObjectUtils.isNotNull(bills.getPreContainersList())) {
+			R res = preContainersService.submitList(bills.getPreContainersList());
+			if (!res.isSuccess()) {
+				throw new RuntimeException("保存失败");
+			}
 			for (PreContainers item : bills.getPreContainersList()) {
 				if ("20GP".equals(item.getCntrTypeCode())) {
 					GP20 += item.getQuantity();
@@ -214,7 +218,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		bills.setQuantityV48(GP48);
 		/**-------------箱型箱量计算---------*/
 
-		//判断是否修改
+	/*	//判断是否修改
 		String charData = bills.getBusinessType() + bills.getBillType() + bills.getBillNo()
 			+ bills.getBillDate() + bills.getCorpId() + bills.getCorpCnName() + bills.getCorpEnName()
 			+ bills.getLineId() + bills.getLineCnName() + bills.getLineEnName() + bills.getVesselId()
@@ -228,7 +232,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			}
 		} else {
 			bills.setCharData(charData);
-		}
+		}*/
 
 		/**-------------费用计算---------*/
 		BigDecimal amountDr = new BigDecimal("0.00");
@@ -251,9 +255,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 					amountCrUsd = amountCrUsd.add(usd);
 				}
 			}
-			if (!charData.equals(bills.getCharData())) {
-				feeCenterService.saveOrUpdateBatch(bills.getFeeCenterListC());
-			}
+			feeCenterService.saveOrUpdateBatch(bills.getFeeCenterListC());
 		}
 		if (ObjectUtils.isNotNull(bills.getFeeCenterListD())) {
 			for (FeeCenter item : bills.getFeeCenterListD()) {
@@ -266,9 +268,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 					amountDrUsd = amountDrUsd.add(usd);
 				}
 			}
-			if (!charData.equals(bills.getCharData())) {
-				feeCenterService.saveOrUpdateBatch(bills.getFeeCenterListD());
-			}
+			feeCenterService.saveOrUpdateBatch(bills.getFeeCenterListD());
 		}
 
 		//主单应加上分单费用

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

@@ -192,4 +192,103 @@ public class PreContainersServiceImpl extends ServiceImpl<PreContainersMapper, P
 		return R.data("操作成功");
 	}
 
+	@Override
+	public R submitList(List<PreContainers> preContainersList) {
+		String deptId = "";
+		String deptName = "";
+		//获取部门ids对应中文名
+		if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+			deptId = AuthUtil.getDeptId();
+			R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
+			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+				deptName = String.join(",", res.getData());
+			}
+		}
+		List<Containers> containersList = new ArrayList<>();
+		for (PreContainers preContainers :preContainersList){
+			if (preContainers.getId() == null) {
+				preContainers.setCreateTime(new Date());
+				preContainers.setCreateUser(AuthUtil.getUserId());
+				preContainers.setCreateUserName(AuthUtil.getUserName());
+				if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+					preContainers.setBranchId(deptId);
+					preContainers.setCreateDept(deptId);
+					preContainers.setCreateDeptName(deptName);
+				}
+			} else {
+				preContainers.setUpdateUser(AuthUtil.getUserId());
+				preContainers.setUpdateTime(new Date());
+				preContainers.setUpdateUserName(AuthUtil.getUserName());
+			}
+			this.saveOrUpdate(preContainers);
+			Bills bills = billsMapper.selectById(preContainers.getPid());
+			if (bills != null) {
+				bills.setCfsMeasurement(new BigDecimal("0.00"));
+				bills.setCfsGrossWeight(new BigDecimal("0.00"));
+				bills.setCfsQuantity(new BigDecimal("0.00"));
+				bills.setUpdateUser(AuthUtil.getUserId());
+				bills.setUpdateTime(new Date());
+				bills.setUpdateUserName(AuthUtil.getUserName());
+				billsMapper.updateById(bills);
+			}
+			List<Containers> removeContainersList = containersService.list(new LambdaQueryWrapper<Containers>()
+				.eq(Containers::getTenantId, AuthUtil.getTenantId())
+				.eq(Containers::getIsDeleted, 0)
+				.eq(Containers::getPid, preContainers.getPid()));
+			containersService.removeByPid(preContainers.getPid(), preContainers.getCntrTypeCode());
+			for (Containers item : removeContainersList) {
+				item.setQuantity(new BigDecimal("0.00"));
+				item.setMeasurement(new BigDecimal("0.00"));
+				item.setNetWeight(new BigDecimal("0.00"));
+				item.setGrossWeight(new BigDecimal("0.00"));
+				item.setUpdateUser(AuthUtil.getUserId());
+				item.setUpdateUserName(AuthUtil.getUserName());
+				item.setUpdateTime(new Date());
+			}
+			containersService.saveOrUpdateBatch(removeContainersList);
+			if (removeContainersList.size() > 0) {
+				List<Long> ids = removeContainersList.stream().map(Containers::getId).collect(Collectors.toList());
+				containersBillsService.removeByPid(ids);
+			}
+			//生成海运进出口配箱-箱号装箱
+			for (int i = 0; i < preContainers.getQuantity(); i++) {
+				Containers containers = new Containers();
+				containers.setCreateTime(new Date());
+				containers.setCreateUser(AuthUtil.getUserId());
+				containers.setCreateUserName(AuthUtil.getUserName());
+				if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+					containers.setBranchId(deptId);
+					containers.setCreateDept(deptId);
+					containers.setCreateDeptName(deptName);
+				}
+				if (bills != null) {
+					containers.setBillNo(bills.getBillNo());
+					containers.setPolId(bills.getPolId());
+					containers.setPolCode(bills.getPolCode());
+					containers.setPolCnName(bills.getPolCnName());
+					containers.setPolEnName(bills.getPolEnName());
+					containers.setPodId(bills.getPodId());
+					containers.setPodCode(bills.getPodCode());
+					containers.setPodCnName(bills.getPodCnName());
+					containers.setPodEnName(bills.getPodEnName());
+					containers.setMblno(bills.getMblno());
+					containers.setHblno(bills.getHblno());
+					containers.setCommodityDescr(bills.getCommodityDescr());
+					containers.setPackingUnitId(bills.getPackingUnitId());
+					containers.setPackingUnit(bills.getPackingUnit());
+				}
+				containers.setPid(preContainers.getPid());
+				containers.setTeu(preContainers.getTeu());
+				containers.setIsSoc(preContainers.getIsSoc());
+				containers.setIsOneway(preContainers.getIsOneway());
+				containers.setCntrTypeCode(preContainers.getCntrTypeCode());
+				containers.setLineNo(preContainers.getId());
+				containersList.add(containers);
+			}
+		}
+		containersService.saveOrUpdateBatch(containersList);
+
+		return R.data(containersList);
+	}
+
 }

+ 3 - 3
blade-service/blade-los/src/main/java/org/springblade/los/check/controller/AuditProecessController.java

@@ -82,12 +82,12 @@ public class AuditProecessController extends BladeController {
 		lambdaQueryWrapper.eq(auditProecess.getCorpId() != null, LosAuditProecess::getCorpId, auditProecess.getCorpId());//往来单位
 		lambdaQueryWrapper.like(StringUtils.isNotBlank(auditProecess.getBillNo()), LosAuditProecess::getBillNo, auditProecess.getBillNo());//业务编号
 		lambdaQueryWrapper.eq(auditProecess.getSendUserId() != null, LosAuditProecess::getSendUserId, auditProecess.getSendUserId());//请核人id
-		lambdaQueryWrapper.gt(auditProecess.getApplybegintime() != null, LosAuditProecess::getSendTime, auditProecess.getApplybegintime());//请核时间
+		lambdaQueryWrapper.ge(auditProecess.getApplybegintime() != null, LosAuditProecess::getSendTime, auditProecess.getApplybegintime());//请核时间
 		lambdaQueryWrapper.le(auditProecess.getApplyendtime() != null, LosAuditProecess::getSendTime, auditProecess.getApplyendtime());
 		lambdaQueryWrapper.orderByDesc(LosAuditProecess::getSendTime);
 		if (ObjectUtils.isNotNull(auditProecess.getBillTimeList())) {
-			lambdaQueryWrapper.gt(LosAuditProecess::getBillTime, auditProecess.getBillTimeList().get(0));
-			lambdaQueryWrapper.lt(LosAuditProecess::getBillTime, auditProecess.getBillTimeList().get(1));
+			lambdaQueryWrapper.ge(LosAuditProecess::getBillTime, auditProecess.getBillTimeList().get(0));
+			lambdaQueryWrapper.le(LosAuditProecess::getBillTime, auditProecess.getBillTimeList().get(1));
 		}
 		lambdaQueryWrapper.ne(StringUtils.isBlank(auditProecess.getAuditStatus()), LosAuditProecess::getAuditStatus, "N");
 		if (!AuthUtil.getUserRole().contains("admin")) {

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

@@ -285,7 +285,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 					}
 					detail.setStatus(2);
 					int count = billsMapper.updateById(detail);
-					if (count > 0) {
+					if (count == 0) {
 						throw new SecurityException("审批开始修改审核状态失败");
 					}
 				}
@@ -352,7 +352,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				detail.setStatus(4);
 				int count = billsMapper.updateById(detail);
 //				R r = billsService.passCancel(auditProecess.getSrcBillId());
-				if (count > 0) {
+				if (count == 0) {
 					throw new SecurityException("修改订单数据失败");
 				}
 
@@ -376,7 +376,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				detail.setStatus(3);
 				int count = billsMapper.updateById(detail);
 //				R r = billsService.passCheck(auditProecess.getSrcBillId());
-				if (count > 0) {
+				if (count == 0) {
 					throw new SecurityException("修改订单数据失败");
 				}
 
@@ -396,7 +396,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				}
 				detail.setStatus(4);
 				int count = billsMapper.updateById(detail);
-				if (count > 0) {
+				if (count == 0) {
 					throw new SecurityException("修改订单数据失败");
 				}
 				/*R r = billsService.passCancel(auditProecess.getSrcBillId());
@@ -474,7 +474,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 					}
 					detail.setStatus(2);
 					int count = finStlBillsMapper.updateById(detail);
-					if (count > 0) {
+					if (count == 0) {
 						throw new SecurityException("审批开始修改审核状态失败");
 					}
 				}
@@ -546,7 +546,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				}
 				detail.setStatus(4);
 				int count = finStlBillsMapper.updateById(detail);
-				if (count > 0) {
+				if (count == 0) {
 					throw new SecurityException("修改订单数据失败");
 				}
 
@@ -569,7 +569,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				}
 				detail.setStatus(3);
 				int count = finStlBillsMapper.updateById(detail);
-				if (count > 0) {
+				if (count == 0) {
 					throw new SecurityException("修改订单数据失败");
 				}
 
@@ -589,7 +589,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				}
 				detail.setStatus(4);
 				int count = finStlBillsMapper.updateById(detail);
-				if (count > 0) {
+				if (count == 0) {
 					throw new SecurityException("修改订单数据失败");
 				}
 				sendMessage.setMessageBody("您的审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());

+ 4 - 4
blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/controller/AgreementPriceController.java

@@ -87,8 +87,8 @@ public class AgreementPriceController extends BladeController {
 			.eq(ObjectUtils.isNotNull(agreementPrice.getCorpId()), AgreementPrice::getCorpId, agreementPrice.getCorpId())
 			.eq(ObjectUtils.isNotNull(agreementPrice.getCreditLevel()), AgreementPrice::getCreditLevel, agreementPrice.getCreditLevel())
 			.like(ObjectUtils.isNotNull(agreementPrice.getSignedId()), AgreementPrice::getSignedId, agreementPrice.getSignedId())
-			.lt(ObjectUtils.isNotNull(agreementPrice.getEffectiveDate()), AgreementPrice::getEffectiveDate, agreementPrice.getEffectiveDate())
-			.gt(ObjectUtils.isNotNull(agreementPrice.getExpiringDate()), AgreementPrice::getExpiringDate, agreementPrice.getExpiringDate())
+			.ge(ObjectUtils.isNotNull(agreementPrice.getEffectiveDate()), AgreementPrice::getEffectiveDate, agreementPrice.getEffectiveDate())
+			.le(ObjectUtils.isNotNull(agreementPrice.getExpiringDate()), AgreementPrice::getExpiringDate, agreementPrice.getExpiringDate())
 			.gt(ObjectUtils.isNotNull(agreementPrice.getStatus()), AgreementPrice::getStatus, agreementPrice.getStatus())
 			.orderByDesc(AgreementPrice::getCreateTime);
 		IPage<AgreementPrice> pages = agreementPriceService.page(Condition.getPage(query), lambdaQueryWrapper);
@@ -162,8 +162,8 @@ public class AgreementPriceController extends BladeController {
 			.eq(ObjectUtils.isNotNull(agreementPrice.getCorpId()), AgreementPrice::getCorpId, agreementPrice.getCorpId())
 			.eq(ObjectUtils.isNotNull(agreementPrice.getCreditLevel()), AgreementPrice::getCreditLevel, agreementPrice.getCreditLevel())
 			.like(ObjectUtils.isNotNull(agreementPrice.getSignedId()), AgreementPrice::getSignedId, agreementPrice.getSignedId())
-			.lt(ObjectUtils.isNotNull(agreementPrice.getEffectiveDate()), AgreementPrice::getEffectiveDate, agreementPrice.getEffectiveDate())
-			.gt(ObjectUtils.isNotNull(agreementPrice.getExpiringDate()), AgreementPrice::getExpiringDate, agreementPrice.getExpiringDate())
+			.ge(ObjectUtils.isNotNull(agreementPrice.getEffectiveDate()), AgreementPrice::getEffectiveDate, agreementPrice.getEffectiveDate())
+			.le(ObjectUtils.isNotNull(agreementPrice.getExpiringDate()), AgreementPrice::getExpiringDate, agreementPrice.getExpiringDate())
 			.gt(ObjectUtils.isNotNull(agreementPrice.getStatus()), AgreementPrice::getStatus, agreementPrice.getStatus())
 			.orderByDesc(AgreementPrice::getCreateTime);
 		List<AgreementPrice> agreementPriceList = agreementPriceService.list(lambdaQueryWrapper);

+ 4 - 4
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FeeCenterController.java

@@ -117,12 +117,12 @@ public class FeeCenterController extends BladeController {
 			.like(ObjectUtils.isNotNull(feeCenter.getMblno()), FeeCenter::getMblno, feeCenter.getMblno())
 			.like(ObjectUtils.isNotNull(feeCenter.getHblno()), FeeCenter::getHblno, feeCenter.getHblno());
 		if (ObjectUtils.isNotNull(feeCenter.getEtdList()) && feeCenter.getEtdList().size() > 0) {
-			lambdaQueryWrapper.gt(FeeCenter::getEtd, feeCenter.getEtdList().get(0));
-			lambdaQueryWrapper.lt(FeeCenter::getEtd, feeCenter.getEtdList().get(1));
+			lambdaQueryWrapper.ge(FeeCenter::getEtd, feeCenter.getEtdList().get(0));
+			lambdaQueryWrapper.le(FeeCenter::getEtd, feeCenter.getEtdList().get(1));
 		}
 		if (ObjectUtils.isNotNull(feeCenter.getEtaList()) && feeCenter.getEtaList().size() > 0) {
-			lambdaQueryWrapper.gt(FeeCenter::getEta, feeCenter.getEtaList().get(0));
-			lambdaQueryWrapper.lt(FeeCenter::getEta, feeCenter.getEtaList().get(1));
+			lambdaQueryWrapper.ge(FeeCenter::getEta, feeCenter.getEtaList().get(0));
+			lambdaQueryWrapper.le(FeeCenter::getEta, feeCenter.getEtaList().get(1));
 		}
 		lambdaQueryWrapper.orderByDesc(FeeCenter::getCreateTime);
 		IPage<FeeCenter> pages = feeCenterService.page(Condition.getPage(query), Condition.getQueryWrapper(feeCenter));

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

@@ -105,36 +105,36 @@ public class FinAccBillsController extends BladeController {
 			.like(ObjectUtils.isNotNull(finAccBills.getBookingNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc());
 
 		if (ObjectUtils.isNotNull(finAccBills.getAccountDateList()) && finAccBills.getAccountDateList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getAccountDate, finAccBills.getAccountDateList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getAccountDate, finAccBills.getAccountDateList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getAccountDate, finAccBills.getAccountDateList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getAccountDate, finAccBills.getAccountDateList().get(1));
 		}
 		if (ObjectUtils.isNotNull(finAccBills.getBusinessDateList()) && finAccBills.getBusinessDateList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getBusinessDate, finAccBills.getBusinessDateList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getBusinessDate, finAccBills.getBusinessDateList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getBusinessDate, finAccBills.getBusinessDateList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getBusinessDate, finAccBills.getBusinessDateList().get(1));
 		}
 		if (ObjectUtils.isNotNull(finAccBills.getBusinessDivideDateList()) && finAccBills.getBusinessDivideDateList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getBusinessDivideDate, finAccBills.getBusinessDivideDateList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getBusinessDivideDate, finAccBills.getBusinessDivideDateList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getBusinessDivideDate, finAccBills.getBusinessDivideDateList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getBusinessDivideDate, finAccBills.getBusinessDivideDateList().get(1));
 		}
 		if (ObjectUtils.isNotNull(finAccBills.getEtdList()) && finAccBills.getEtdList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getEtd, finAccBills.getEtdList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getEtd, finAccBills.getEtdList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getEtd, finAccBills.getEtdList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getEtd, finAccBills.getEtdList().get(1));
 		}
 		if (ObjectUtils.isNotNull(finAccBills.getEtaList()) && finAccBills.getEtaList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getEta, finAccBills.getEtaList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getEta, finAccBills.getEtaList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getEta, finAccBills.getEtaList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getEta, finAccBills.getEtaList().get(1));
 		}
 		if (ObjectUtils.isNotNull(finAccBills.getStlDateList()) && finAccBills.getStlDateList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getStlDate, finAccBills.getStlDateList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getStlDate, finAccBills.getStlDateList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getStlDate, finAccBills.getStlDateList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getStlDate, finAccBills.getStlDateList().get(1));
 		}
 		if (ObjectUtils.isNotNull(finAccBills.getInvoiceDateList()) && finAccBills.getInvoiceDateList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getInvoiceDate, finAccBills.getInvoiceDateList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getInvoiceDate, finAccBills.getInvoiceDateList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getInvoiceDate, finAccBills.getInvoiceDateList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getInvoiceDate, finAccBills.getInvoiceDateList().get(1));
 		}
 		if (ObjectUtils.isNotNull(finAccBills.getVoucherDateList()) && finAccBills.getVoucherDateList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getVoucherDate, finAccBills.getVoucherDateList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getVoucherDate, finAccBills.getVoucherDateList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getVoucherDate, finAccBills.getVoucherDateList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getVoucherDate, finAccBills.getVoucherDateList().get(1));
 		}
 		lambdaQueryWrapper.orderByDesc(FinAccBills::getCreateTime);
 		IPage<FinAccBills> pages = finAccBillsService.page(Condition.getPage(query), Condition.getQueryWrapper(finAccBills));
@@ -253,40 +253,40 @@ public class FinAccBillsController extends BladeController {
 			.like(ObjectUtils.isNotNull(finAccBills.getBookingNo()), FinAccBills::getAccountDc, finAccBills.getAccountDc());
 
 		if (ObjectUtils.isNotNull(finAccBills.getAccountDateList()) && finAccBills.getAccountDateList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getAccountDate, finAccBills.getAccountDateList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getAccountDate, finAccBills.getAccountDateList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getAccountDate, finAccBills.getAccountDateList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getAccountDate, finAccBills.getAccountDateList().get(1));
 		}
 		if (ObjectUtils.isNotNull(finAccBills.getBusinessDateList()) && finAccBills.getBusinessDateList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getBusinessDate, finAccBills.getBusinessDateList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getBusinessDate, finAccBills.getBusinessDateList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getBusinessDate, finAccBills.getBusinessDateList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getBusinessDate, finAccBills.getBusinessDateList().get(1));
 		}
 		if (ObjectUtils.isNotNull(finAccBills.getApprovedDateList()) && finAccBills.getApprovedDateList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getApprovedDate, finAccBills.getApprovedDateList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getApprovedDate, finAccBills.getApprovedDateList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getApprovedDate, finAccBills.getApprovedDateList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getApprovedDate, finAccBills.getApprovedDateList().get(1));
 		}
 		if (ObjectUtils.isNotNull(finAccBills.getBusinessDivideDateList()) && finAccBills.getBusinessDivideDateList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getBusinessDivideDate, finAccBills.getBusinessDivideDateList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getBusinessDivideDate, finAccBills.getBusinessDivideDateList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getBusinessDivideDate, finAccBills.getBusinessDivideDateList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getBusinessDivideDate, finAccBills.getBusinessDivideDateList().get(1));
 		}
 		if (ObjectUtils.isNotNull(finAccBills.getEtdList()) && finAccBills.getEtdList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getEtd, finAccBills.getEtdList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getEtd, finAccBills.getEtdList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getEtd, finAccBills.getEtdList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getEtd, finAccBills.getEtdList().get(1));
 		}
 		if (ObjectUtils.isNotNull(finAccBills.getEtaList()) && finAccBills.getEtaList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getEta, finAccBills.getEtaList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getEta, finAccBills.getEtaList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getEta, finAccBills.getEtaList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getEta, finAccBills.getEtaList().get(1));
 		}
 		if (ObjectUtils.isNotNull(finAccBills.getStlDateList()) && finAccBills.getStlDateList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getStlDate, finAccBills.getStlDateList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getStlDate, finAccBills.getStlDateList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getStlDate, finAccBills.getStlDateList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getStlDate, finAccBills.getStlDateList().get(1));
 		}
 		if (ObjectUtils.isNotNull(finAccBills.getInvoiceDateList()) && finAccBills.getInvoiceDateList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getInvoiceDate, finAccBills.getInvoiceDateList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getInvoiceDate, finAccBills.getInvoiceDateList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getInvoiceDate, finAccBills.getInvoiceDateList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getInvoiceDate, finAccBills.getInvoiceDateList().get(1));
 		}
 		if (ObjectUtils.isNotNull(finAccBills.getVoucherDateList()) && finAccBills.getVoucherDateList().size() > 0) {
-			lambdaQueryWrapper.gt(FinAccBills::getVoucherDate, finAccBills.getVoucherDateList().get(0));
-			lambdaQueryWrapper.lt(FinAccBills::getVoucherDate, finAccBills.getVoucherDateList().get(1));
+			lambdaQueryWrapper.ge(FinAccBills::getVoucherDate, finAccBills.getVoucherDateList().get(0));
+			lambdaQueryWrapper.le(FinAccBills::getVoucherDate, finAccBills.getVoucherDateList().get(1));
 		}
 		lambdaQueryWrapper.orderByDesc(FinAccBills::getCreateTime);
 		List<FinAccBills> pages = finAccBillsService.list(Condition.getQueryWrapper(finAccBills));
@@ -308,6 +308,8 @@ public class FinAccBillsController extends BladeController {
 			} else {
 				listAccBillVO.setType(null);
 			}
+		} else if ("3".equals(listAccBillVO.getType())) {
+			listAccBillVO.setType("4");
 		}
 		List<FinAccBillsVO> list = finAccBillsService.listAccBill(listAccBillVO);
 		return R.data(list);

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

@@ -27,6 +27,7 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.los.finance.stl.entity.FinStlBills;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.los.finance.invoices.entity.FinInvoices;
@@ -122,5 +123,26 @@ public class FinInvoicesController extends BladeController {
 		return R.status(finInvoicesService.removeByIds(Func.toLongList(ids)));
 	}
 
+	/**
+	 * 业务-发票 确认
+	 */
+	@PostMapping("/confirmFinInvoices")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "确认", notes = "传入finInvoices")
+	public R confirmSettlement(@Valid @RequestBody FinInvoices finInvoices) {
+		return finInvoicesService.confirmfinInvoices(finInvoices);
+	}
+
+	/**
+	 * 业务-发票 撤销
+	 */
+	@PostMapping("/revokeFinInvoices")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "撤销", notes = "传入finInvoices")
+	public R revokeSettlement(@Valid @RequestBody FinInvoices finInvoices) {
+		return finInvoicesService.revokeFinInvoices(finInvoices);
+	}
+
+
 
 }

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

@@ -52,4 +52,14 @@ public interface IFinInvoicesService extends IService<FinInvoices> {
 	 * @return
 	 */
 	FinInvoices detail(FinInvoices finInvoices);
+
+	/**
+	 * 业务-发票 确认
+	 */
+	R confirmfinInvoices(FinInvoices finInvoices);
+
+	/**
+	 * 业务-发票 撤销
+	 */
+	R revokeFinInvoices(FinInvoices finInvoices);
 }

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

@@ -25,8 +25,15 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.los.basic.business.entity.BusinessType;
 import org.springblade.los.basic.business.service.IBusinessTypeService;
+import org.springblade.los.basic.cur.service.IBCurrencyService;
 import org.springblade.los.billno.entity.BusinessBillNo;
 import org.springblade.los.billno.service.IBusinessBillNoService;
+import org.springblade.los.business.sea.entity.Bills;
+import org.springblade.los.business.sea.mapper.BillsMapper;
+import org.springblade.los.finance.fee.entity.FeeCenter;
+import org.springblade.los.finance.fee.entity.FinAccBills;
+import org.springblade.los.finance.fee.service.IFeeCenterService;
+import org.springblade.los.finance.fee.service.IFinAccBillsService;
 import org.springblade.los.finance.invoices.entity.FinInvoices;
 import org.springblade.los.finance.invoices.entity.FinInvoicesItems;
 import org.springblade.los.finance.invoices.mapper.FinInvoicesMapper;
@@ -37,8 +44,13 @@ import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * 业务-发票主表 服务实现类
@@ -58,6 +70,14 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 
 	private final IBusinessTypeService bBusinessTypeService;
 
+	private final IBCurrencyService bCurrencyService;
+
+	private final IFeeCenterService feeCenterService;
+
+	private final IFinAccBillsService finAccBillsService;
+
+	private final BillsMapper billsMapper;
+
 	@Override
 	public IPage<FinInvoicesVO> selectFinInvoicesPage(IPage<FinInvoicesVO> page, FinInvoicesVO finInvoices) {
 		return page.setRecords(baseMapper.selectFinInvoicesPage(page, finInvoices));
@@ -108,7 +128,28 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 		}
 		this.saveOrUpdate(finInvoices);
 		if (ObjectUtils.isNotNull(finInvoices.getFinInvoicesItemsList())) {
+
 			for (FinInvoicesItems item : finInvoices.getFinInvoicesItemsList()) {
+				//计算字段null值处理
+				item.setCurrentAmount(ObjectUtils.isNotNull(item.getCurrentAmount()) ? item.getCurrentAmount() : new BigDecimal("0.00"));
+				item.setAmount(ObjectUtils.isNotNull(item.getAmount()) ? item.getAmount() : new BigDecimal("0.00"));
+
+				//判断是否是本位币
+				if ("CNY".equals(item.getCurrentCurCode())) {
+					item.setCurrentAmountLoc(item.getCurrentAmount());
+				} else {
+					item.setCurrentAmountLoc(bCurrencyService.converterCny(item.getCurrentCurCode(), item.getCurrentAmount()));
+				}
+				// 去税金额 = 本次结算金额currentStlAmount - 税额amountTax
+				BigDecimal amountNet = new BigDecimal("0.00");
+				// 税额 = 本次结算金额currentStlAmount / 总金额 * 总税额amountTax
+				BigDecimal amountTax = new BigDecimal("0.00");
+				// 税额
+				amountTax = amountTax.add(item.getCurrentAmount().divide(item.getAmount(), 2, RoundingMode.HALF_UP)
+					.multiply(item.getAmountTax()));
+				amountNet = amountNet.add(item.getCurrentAmount().subtract(amountTax));
+				item.setCurrentAmountTax(amountTax);
+				item.setCurrentAmountNet(amountNet);
 				item.setPid(finInvoices.getId());
 				if (item.getId() == null) {
 					item.setCreateTime(new Date());
@@ -126,8 +167,24 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				}
 			}
 			finInvoicesItemsService.saveOrUpdateBatch(finInvoices.getFinInvoicesItemsList());
+			BigDecimal amountCny = new BigDecimal("0.00");
+			BigDecimal amountUsd = new BigDecimal("0.00");
+			BigDecimal amountTax = new BigDecimal("0.00");
+			amountCny = amountCny.add(finInvoices.getFinInvoicesItemsList().stream()
+				.filter(e -> "CNY".equals(e.getCurrentCurCode())).map(FinInvoicesItems::getCurrentAmount)
+				.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			finInvoices.setAmountCny(amountCny);
+			amountUsd = amountUsd.add(finInvoices.getFinInvoicesItemsList().stream()
+				.filter(e -> "USD".equals(e.getCurrentCurCode())).map(FinInvoicesItems::getCurrentAmount)
+				.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			finInvoices.setAmountUsd(amountUsd);
+			amountTax = amountTax.add(finInvoices.getFinInvoicesItemsList().stream()
+				.filter(e -> "CNY".equals(e.getCurrentCurCode())).map(FinInvoicesItems::getCurrentAmountTax)
+				.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			finInvoices.setAmountTax(amountTax);
+			finInvoices.setAmountLoc(amountCny.add(bCurrencyService.converterCny("USD", amountUsd)));
 		}
-
+		this.saveOrUpdate(finInvoices);
 		return R.data(finInvoices);
 	}
 
@@ -145,4 +202,259 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 		return detail;
 	}
 
+	@Override
+	public R confirmfinInvoices(FinInvoices finInvoices) {
+		if (finInvoices.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		FinInvoices detail = baseMapper.selectById(finInvoices.getId());
+		if (ObjectUtils.isNotNull(finInvoices.getFinInvoicesItemsList())) {
+			//明细状态修改  已开发票
+			for (FinInvoicesItems item : finInvoices.getFinInvoicesItemsList()) {
+				item.setBillDate(finInvoices.getBillDate());
+				item.setUpdateUser(AuthUtil.getUserId());
+				item.setUpdateTime(new Date());
+				item.setUpdateUserName(AuthUtil.getUserName());
+			}
+			finInvoicesItemsService.saveOrUpdateBatch(finInvoices.getFinInvoicesItemsList());
+			//通过明细里账单id查询具体账单数据
+			List<Long> accIds = finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getAccBillId)
+				.filter(Objects::nonNull).collect(Collectors.toList());
+			List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
+				.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
+				.eq(FinAccBills::getIsDeleted, 0)
+				.in(FinAccBills::getId, accIds));
+			//修改账单中对账状态
+			for (FinAccBills item : finAccBillsList) {
+				item.setInvoiceBillId(detail.getId() + "");
+				item.setInvoiceBillNo(detail.getBillNo());
+				item.setInvoiceNo(detail.getInvoiceNo());
+				item.setInvoiceDate(detail.getInvoiceDate());
+				item.setUpdateUser(AuthUtil.getUserId());
+				item.setUpdateTime(new Date());
+				item.setUpdateUserName(AuthUtil.getUserName());
+			}
+			//通过账单id查询具体费用中心数据
+			List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+				.in(FeeCenter::getAccBillId, accIds)
+				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+				.eq(FeeCenter::getIsDeleted, 0));
+			List<FeeCenter> feeCenterListNew = reconciliationFeeCenter(detail, feeCenterList, 1);
+			feeCenterService.saveOrUpdateBatch(feeCenterListNew);
+			List<Bills> billsList = new ArrayList<>();
+			List<Long> ids = feeCenterListNew.stream().map(FeeCenter::getPid).filter(Objects::nonNull).collect(Collectors.toList());
+			BigDecimal idsD = feeCenterListNew.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getUninvoicedAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal idsC = feeCenterListNew.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getUninvoicedAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			List<Long> divideIds = feeCenterListNew.stream().map(FeeCenter::getPid).filter(Objects::nonNull).collect(Collectors.toList());
+			BigDecimal divideIdsD = feeCenterListNew.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getUninvoicedAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal divideIdsC = feeCenterListNew.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getUninvoicedAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			if (ObjectUtils.isNotNull(ids) && ids.size() > 0) {
+				billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
+					.eq(Bills::getTenantId, AuthUtil.getTenantId())
+					.eq(Bills::getIsDeleted, 0)
+					.in(Bills::getId, ids));
+			}
+			if (ObjectUtils.isNotNull(divideIds) && divideIds.size() > 0) {
+				List<Bills> divideBillsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
+					.eq(Bills::getTenantId, AuthUtil.getTenantId())
+					.eq(Bills::getIsDeleted, 0)
+					.in(Bills::getId, divideIds));
+				billsList.addAll(divideBillsList);
+			}
+			for (Bills item : billsList) {
+				item.setBillingStatus(item.getBillingStatus() + 1);
+				BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
+					.eq(FinAccBills::getBusinessBillId, item.getId())
+					.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
+					.eq(FinAccBills::getIsDeleted, 0)
+					.eq(FinAccBills::getAccountDc, "D")).stream()
+					.map(FinAccBills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
+					.eq(FinAccBills::getBusinessBillId, item.getId())
+					.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
+					.eq(FinAccBills::getIsDeleted, 0)
+					.eq(FinAccBills::getAccountDc, "C")).stream()
+					.map(FinAccBills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				if (item.getCheckDrStatus() != 9) {
+					Bills bills = reconciliation(item, countD, divideIdsD, countC, divideIdsC, idsD, idsC, detail.getType());
+					billsMapper.updateById(bills);
+				} else {
+					billsMapper.updateById(item);
+				}
+			}
+			finAccBillsService.saveOrUpdateBatch(finAccBillsList);
+		}
+		detail.setStatus(1);
+		baseMapper.updateById(detail);
+		return R.data(detail);
+	}
+
+	private Bills reconciliation(Bills item, BigDecimal countD, BigDecimal divideIdsD, BigDecimal countC, BigDecimal divideIdsC, BigDecimal idsD, BigDecimal idsC, String type) {
+		if ("MH".equals(item.getBillType())) {
+			if ("进项".equals(type)) {
+				if (countC.compareTo(divideIdsC) == 0) {
+					item.setInvoiceCrStatus(9);
+					item.setInvoiceCrStatusDescr("全开");
+				} else {
+					item.setInvoiceCrStatus(3);
+					item.setInvoiceCrStatusDescr("部分");
+				}
+			} else {
+				if (countD.compareTo(divideIdsD) == 0) {
+					item.setInvoiceDrStatus(9);
+					item.setInvoiceDrStatusDescr("全开");
+				} else {
+					item.setInvoiceDrStatus(3);
+					item.setInvoiceDrStatusDescr("部分");
+				}
+			}
+
+		} else {
+			if ("进项".equals(type)) {
+				if (countC.compareTo(idsC) == 0) {
+					item.setInvoiceCrStatus(9);
+					item.setInvoiceCrStatusDescr("全开");
+				} else {
+					item.setInvoiceCrStatus(3);
+					item.setInvoiceCrStatusDescr("部分");
+				}
+			} else {
+				if (countD.compareTo(idsD) == 0) {
+					item.setInvoiceDrStatus(9);
+					item.setInvoiceDrStatusDescr("全开");
+				} else {
+					item.setInvoiceDrStatus(3);
+					item.setInvoiceDrStatusDescr("部分");
+				}
+			}
+		}
+		return item;
+	}
+
+	private List<FeeCenter> reconciliationFeeCenter(FinInvoices detail, List<FeeCenter> feeCenterList, int count) {
+		for (FeeCenter item : feeCenterList) {
+			item.setInvoiceAmountLoc(item.getInvoiceAmountLoc() == null ? new BigDecimal("0.00") : item.getInvoiceAmountLoc());
+			if (count == 1) {
+				item.setInvoiceBillId(detail.getId() + "");
+				item.setInvoiceBillNo(detail.getBillNo());
+				item.setInvoiceNo(detail.getInvoiceNo());
+				item.setInvoiceDate(item.getBillDate());
+				item.setInvoiceStatus(9);
+				item.setInvoiceCurCode(detail.getCurCode());
+				item.setInvoiceExrate(detail.getExrate());
+				if ("CNY".equals(detail.getCurCode())) {
+					item.setInvoiceAmount(detail.getAmountCny());
+				} else {
+					item.setInvoiceAmount(detail.getAmountUsd());
+				}
+				item.setInvoiceAmountLoc(detail.getAmountLoc());
+				item.setUninvoicedAmount(item.getUninvoicedAmount().add(detail.getAmountLoc()));
+				item.setInvoiceById(detail.getCreateUser());
+				item.setInvoiceByName(detail.getCreateUserName());
+			} else {
+				item.setInvoiceBillId(detail.getId() + "");
+				item.setInvoiceBillNo(detail.getBillNo());
+				item.setInvoiceNo(detail.getInvoiceNo());
+				item.setInvoiceDate(item.getBillDate());
+				item.setInvoiceStatus(2);
+				item.setInvoiceCurCode(detail.getCurCode());
+				item.setInvoiceExrate(detail.getExrate());
+				if ("CNY".equals(detail.getCurCode())) {
+					item.setInvoiceAmount(detail.getAmountCny());
+				} else {
+					item.setInvoiceAmount(detail.getAmountUsd());
+				}
+				item.setInvoiceAmountLoc(detail.getAmountLoc());
+				item.setUninvoicedAmount(item.getUninvoicedAmount().add(new BigDecimal("0.00").subtract(detail.getAmountLoc())));
+				item.setInvoiceById(detail.getCreateUser());
+				item.setInvoiceByName(detail.getCreateUserName());
+			}
+		}
+		return feeCenterList;
+	}
+
+	@Override
+	public R revokeFinInvoices(FinInvoices finInvoices) {
+		if (finInvoices.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		FinInvoices detail = baseMapper.selectById(finInvoices.getId());
+		if (ObjectUtils.isNotNull(finInvoices.getFinInvoicesItemsList())) {
+			for (FinInvoicesItems item : finInvoices.getFinInvoicesItemsList()) {
+				item.setBillDate(null);
+				item.setUpdateUser(AuthUtil.getUserId());
+				item.setUpdateTime(new Date());
+				item.setUpdateUserName(AuthUtil.getUserName());
+			}
+			finInvoicesItemsService.saveOrUpdateBatch(finInvoices.getFinInvoicesItemsList());
+			List<Long> accIds = finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getAccBillId)
+				.filter(Objects::nonNull).collect(Collectors.toList());
+			List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
+				.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
+				.eq(FinAccBills::getIsDeleted, 0)
+				.in(FinAccBills::getId, accIds)
+				.eq(FinAccBills::getIsChecked, 1));
+			for (FinAccBills item : finAccBillsList) {
+				item.setInvoiceBillId("");
+				item.setInvoiceBillNo("");
+				item.setInvoiceNo("");
+				item.setInvoiceDate(null);
+				item.setUpdateUser(AuthUtil.getUserId());
+				item.setUpdateTime(new Date());
+				item.setUpdateUserName(AuthUtil.getUserName());
+			}
+			List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+				.in(FeeCenter::getAccBillId, accIds)
+				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+				.eq(FeeCenter::getIsDeleted, 0));
+			List<FeeCenter> feeCenterListNew = reconciliationFeeCenter(detail, feeCenterList, 2);
+			feeCenterService.saveOrUpdateBatch(feeCenterListNew);
+			finAccBillsService.saveOrUpdateBatch(finAccBillsList);
+			List<Bills> billsList = new ArrayList<>();
+			List<Long> ids = feeCenterListNew.stream().map(FeeCenter::getPid).filter(Objects::nonNull).collect(Collectors.toList());
+			BigDecimal idsD = feeCenterListNew.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getInvoiceAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal idsC = feeCenterListNew.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getInvoiceAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			List<Long> divideIds = feeCenterListNew.stream().map(FeeCenter::getPid).filter(Objects::nonNull).collect(Collectors.toList());
+			BigDecimal divideIdsD = feeCenterListNew.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getInvoiceAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal divideIdsC = feeCenterListNew.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getInvoiceAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+			if (ObjectUtils.isNotNull(ids) && ids.size() > 0) {
+				billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
+					.eq(Bills::getTenantId, AuthUtil.getTenantId())
+					.eq(Bills::getIsDeleted, 0)
+					.in(Bills::getId, ids));
+			}
+			if (ObjectUtils.isNotNull(divideIds) && divideIds.size() > 0) {
+				List<Bills> divideBillsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
+					.eq(Bills::getTenantId, AuthUtil.getTenantId())
+					.eq(Bills::getIsDeleted, 0)
+					.in(Bills::getId, divideIds));
+				billsList.addAll(divideBillsList);
+			}
+			for (Bills item : billsList) {
+				if (item.getBillingStatus() == 0) {
+					throw new RuntimeException("撤销对账失败");
+				}
+				item.setBillingStatus(item.getBillingStatus() - 1);
+				BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
+					.eq(FinAccBills::getBusinessBillId, item.getId())
+					.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
+					.eq(FinAccBills::getIsDeleted, 0)
+					.eq(FinAccBills::getAccountDc, "D")).stream()
+					.map(FinAccBills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
+					.eq(FinAccBills::getBusinessBillId, item.getId())
+					.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
+					.eq(FinAccBills::getIsDeleted, 0)
+					.eq(FinAccBills::getAccountDc, "C")).stream()
+					.map(FinAccBills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				Bills bills = reconciliation(item, countD, divideIdsD, countC, divideIdsC, idsD, idsC, detail.getType());
+				billsMapper.updateById(bills);
+			}
+		}
+		detail.setStatus(2);
+		baseMapper.updateById(detail);
+		return R.data(detail);
+	}
+
 }

+ 6 - 6
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/impl/StatisticsServiceImpl.java

@@ -131,8 +131,8 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			.eq(PjOrder::getBsType, "XS")
 			.apply("find_in_set(status,'录入,待确认')")
 			.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3' ) ) OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))")
-			.gt(quer.getDateList().size() > 0, PjOrder::getBusinesDate, quer.getDateList().get(0))
-			.lt(quer.getDateList().size() > 0, PjOrder::getBusinesDate, quer.getDateList().get(1)));
+			.ge(quer.getDateList().size() > 0, PjOrder::getBusinesDate, quer.getDateList().get(0))
+			.le(quer.getDateList().size() > 0, PjOrder::getBusinesDate, quer.getDateList().get(1)));
 		for (PjOrder item : pjOrderList) {
 			StayDoOrder stayDoOrder = new StayDoOrder();
 			stayDoOrder.setOrderNo(item.getOrdNo());
@@ -158,15 +158,15 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			.eq(PjShip::getIsDeleted, 0)
 			.eq(PjShip::getBizTypeName, "FHRW")
 			.eq(PjShip::getStatusName, "待处理")
-			.gt(quer.getDateList().size() > 0, PjShip::getBusinesDate, quer.getDateList().get(0))
-			.lt(quer.getDateList().size() > 0, PjShip::getBusinesDate, quer.getDateList().get(1)));
+			.ge(quer.getDateList().size() > 0, PjShip::getBusinesDate, quer.getDateList().get(0))
+			.le(quer.getDateList().size() > 0, PjShip::getBusinesDate, quer.getDateList().get(1)));
 		List<PjShip> pjShipListGD = shipService.list(new LambdaQueryWrapper<PjShip>()
 			.eq(PjShip::getTenantId, AuthUtil.getTenantId())
 			.eq(PjShip::getIsDeleted, 0)
 			.eq(PjShip::getBizTypeName, "FHGD")
 			.eq(PjShip::getStatusName, "待出库")
-			.gt(quer.getDateList().size() > 0, PjShip::getBusinesDate, quer.getDateList().get(0))
-			.lt(quer.getDateList().size() > 0, PjShip::getBusinesDate, quer.getDateList().get(1)));
+			.ge(quer.getDateList().size() > 0, PjShip::getBusinesDate, quer.getDateList().get(0))
+			.le(quer.getDateList().size() > 0, PjShip::getBusinesDate, quer.getDateList().get(1)));
 		List<Long> ids = new ArrayList<>();
 		if (pjShipListRW.size() > 0) {
 			List<Long> pjShipListId = pjShipListRW.stream().map(PjShip::getOrdId).filter(Objects::nonNull).collect(Collectors.toList());