From 7b3fe9c85ac3bfd41ee1d78f14fd05c7cb1ef6cb Mon Sep 17 00:00:00 2001 From: c1769 Date: Sun, 9 Jul 2023 20:09:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E8=B5=84=E4=BA=A7=E5=8F=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/BankAcceptanceBillService.java | 18 ++++++++++++- .../financings/service/FinancingsService.java | 27 +++++++++---------- .../controller/SendProductsController.java | 10 +++++++ .../service/SendProductsService.java | 24 +++++++++++------ .../service/WarehouseShipmentService.java | 17 ++++++++++-- .../service/ExaminationFinancialsService.java | 19 ++++--------- .../sql/jlw/examinationFinancials.md | 18 ++++++------- 7 files changed, 84 insertions(+), 49 deletions(-) diff --git a/web/src/main/java/com/ibeetl/jlw/flow/bankacceptancebill/service/BankAcceptanceBillService.java b/web/src/main/java/com/ibeetl/jlw/flow/bankacceptancebill/service/BankAcceptanceBillService.java index e9f258c..7ad79b9 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/bankacceptancebill/service/BankAcceptanceBillService.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/bankacceptancebill/service/BankAcceptanceBillService.java @@ -1,9 +1,12 @@ package com.ibeetl.jlw.flow.bankacceptancebill.service; +import cn.hutool.core.lang.Assert; import com.ibeetl.admin.core.service.CoreBaseService; import com.ibeetl.admin.core.util.NoUtil; import com.ibeetl.jlw.flow.bankacceptancebill.dao.BankAcceptanceBillDao; import com.ibeetl.jlw.flow.bankacceptancebill.entity.BankAcceptanceBill; +import com.ibeetl.jlw.flow.financings.entity.Financings; +import com.ibeetl.jlw.flow.financings.service.FinancingsService; import com.ibeetl.jlw.service.ExaminationFinancialsService; import com.ibeetl.jlw.service.ExaminationInstancesService; import org.beetl.sql.core.engine.PageQuery; @@ -11,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -27,6 +31,9 @@ public class BankAcceptanceBillService extends CoreBaseService { /** * 银行受理融资申请 - *

- * 正向保理 和 应收账款质押融资 - * 买方支付合同金额与应付账款金额(即卖方的应收账款金额)之间的差额部分给卖方(买方资金减少,卖方资金增加)。 - * 需求文档要求在上一步(卖方保理业务申请)后完成买卖双方资金变化, - * 但银行未通过审批前卖方可以删除保理申请,买卖双方资金变化无效, - * 故而在银行审批后完成买卖双方资金变化。 */ @Transactional public void accept(Financings dto) { final Financings financings = this.queryById(dto.getId()); - if (Objects.equals(financings.getFinancingType(), 3) - || Objects.equals(financings.getFinancingType(), 4)) { - // 应收账款质押融资 和 正向保理 - final BigDecimal sub = financings.getContractAmount().subtract(financings.getYfzkAmount()); - if (sub.compareTo(BigDecimal.ZERO) > 0) { - examinationFinancialsService.decrementBalance(financings.getExaminationId(), financings.getInstanceId(), "1", sub); // 买方资金减少 - examinationFinancialsService.incrementBalance(financings.getExaminationId(), financings.getInstanceId(), "2", sub); // 卖方资金增加 - } - } dto.setApplyStatus(1); // 申请状态1:银行审核通过 dto.setUpdatedAt(new Date()); dto.setAcceptNo(getAcceptNo()); // 自动生成受理编号 @@ -338,6 +323,9 @@ public class FinancingsService extends CoreBaseService { /** * 银行发放贷款 * 放款之后,卖方企业资金增加,增加额即为融资放款额减去手续费的金额。 + *

+ * 正向保理 和 应收账款质押融资 + * 买方支付合同金额与应付账款金额(即卖方的应收账款金额)之间的差额部分给卖方(买方资金减少,卖方资金增加)。 */ @Transactional public void loanIssue(Financings dto) { @@ -363,6 +351,15 @@ public class FinancingsService extends CoreBaseService { final BigDecimal sub = financings.getFkAmount().subtract(financings.getApplyPoundage()); examinationFinancialsService.incrementBalance(financings.getExaminationId(), financings.getInstanceId(), "2", sub); // 卖方资金增加 + if (Objects.equals(financings.getFinancingType(), 3) + || Objects.equals(financings.getFinancingType(), 4) + || Objects.equals(financings.getFinancingType(), 5)) { + // 应收账款质押融资、正向保理 和 反向保理 买方支付合同金额与应付账款金额(即卖方的应收账款金额)之间的差额部分给卖方(买方资金减少,卖方资金增加)。 + final BigDecimal subAmount = financings.getContractAmount().subtract(financings.getYfzkAmount()); + examinationFinancialsService.decrementBalance(financings.getExaminationId(), financings.getInstanceId(), "1", subAmount); // 买方资金减少 + examinationFinancialsService.incrementBalance(financings.getExaminationId(), financings.getInstanceId(), "2", subAmount); // 卖方资金增加 + } + // 推进流程 examinationInstancesService.finishStep(financings.getInstanceId(), dto.getStep()); diff --git a/web/src/main/java/com/ibeetl/jlw/flow/sendproducts/controller/SendProductsController.java b/web/src/main/java/com/ibeetl/jlw/flow/sendproducts/controller/SendProductsController.java index c74e0d0..be7175f 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/sendproducts/controller/SendProductsController.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/sendproducts/controller/SendProductsController.java @@ -150,6 +150,16 @@ public class SendProductsController { return JsonResult.success(); } + /** + * 保兑仓发货 + */ + @PostMapping("/bdcSendOut") + @AliasProcessor + public JsonResult bdcSendOut(@RequestBody SendProducts dto) { + sendProductsService.bdcSendOut(dto); + return JsonResult.success(); + } + /** * 存货质押 发货并修改资产信息 */ diff --git a/web/src/main/java/com/ibeetl/jlw/flow/sendproducts/service/SendProductsService.java b/web/src/main/java/com/ibeetl/jlw/flow/sendproducts/service/SendProductsService.java index b1b23e0..431ab1e 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/sendproducts/service/SendProductsService.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/sendproducts/service/SendProductsService.java @@ -132,13 +132,21 @@ public class SendProductsService extends CoreBaseService { examinationFinancialsService.incrementProductAssets(contract.getExaminationId(), contract.getInstanceId(), "2", sub); // 卖方角色ID为2 this.updateTemplate(dto); // 修改发货状态 - final Financings financings = financingsService.getDetailByContranctId(contract.getId()); - if (financings != null && Objects.equals(2, financings.getFinancingType())) { - // 保兑仓 卖方发货后 买方企业 把购销合同金额和融资申请金额的差额,发给卖方企业 - final BigDecimal sub2 = contract.getContractAmount().subtract(financings.getApplyAmount()); - examinationFinancialsService.decrementBalance(contract.getExaminationId(), contract.getInstanceId(), "1", sub2); // 买方资金减少 - examinationFinancialsService.incrementBalance(contract.getExaminationId(), contract.getInstanceId(), "2", sub2); // 卖方资金增加 + // 推进流程进度 + if (dto.getStep() != null) { + examinationInstancesService.finishStep(contract.getInstanceId(), dto.getStep()); } + } + + /** + * 保兑仓发货 + */ + @Transactional + public void bdcSendOut(SendProducts dto) { + dto.setSendStatus(1); // 发货状态1:已发货待接收 + // 根据发货ID查找到购销合同 + final ContractsPurchaseSales contract = contractsPurchaseSalesService.queryDetailBySendId(dto.getId()); + this.updateTemplate(dto); // 修改发货状态 // 推进流程进度 if (dto.getStep() != null) { @@ -163,8 +171,8 @@ public class SendProductsService extends CoreBaseService { throw new GlobalException("剩余可用资金不足"); } - // 企业购买货物,卖方企业资金减少相应金额 - examinationFinancialsService.decrementBalance(sendProducts.getExaminationId(), sendProducts.getInstanceId(), "2", sendProducts.getTotalSellPrice()); // 卖方角色ID为2 + // 卖方企业发货:视为企业先用可用资金以成本价购买货物,资金减少,存货增加(货物质押不转移所有权,融资企业存货增加以成本价计算) + examinationFinancialsService.decrementBalance(sendProducts.getExaminationId(), sendProducts.getInstanceId(), "2", sendProducts.getTotalCostPrice()); // 卖方角色ID为2 // 存货增加,存货以成本价计算价值 examinationFinancialsService.incrementProductAssets(sendProducts.getExaminationId(), sendProducts.getInstanceId(), "2", sendProducts.getTotalCostPrice()); // 卖方角色ID为2 this.updateTemplate(dto); // 修改发货状态 diff --git a/web/src/main/java/com/ibeetl/jlw/flow/warehouseshipment/service/WarehouseShipmentService.java b/web/src/main/java/com/ibeetl/jlw/flow/warehouseshipment/service/WarehouseShipmentService.java index b410ecf..1ddcddb 100644 --- a/web/src/main/java/com/ibeetl/jlw/flow/warehouseshipment/service/WarehouseShipmentService.java +++ b/web/src/main/java/com/ibeetl/jlw/flow/warehouseshipment/service/WarehouseShipmentService.java @@ -5,8 +5,11 @@ import com.ibeetl.admin.core.util.NoUtil; import com.ibeetl.jlw.flow.contractsproducts.service.ContractsProductsService; import com.ibeetl.jlw.flow.financings.entity.Financings; import com.ibeetl.jlw.flow.financings.service.FinancingsService; +import com.ibeetl.jlw.flow.pickupproducts.entity.PickupProducts; +import com.ibeetl.jlw.flow.pickupproducts.service.PickupProductsService; import com.ibeetl.jlw.flow.warehouseshipment.dao.WarehouseShipmentDao; import com.ibeetl.jlw.flow.warehouseshipment.entity.WarehouseShipment; +import com.ibeetl.jlw.service.ExaminationFinancialsService; import com.ibeetl.jlw.service.ExaminationInstancesService; import org.beetl.sql.core.engine.PageQuery; import org.springframework.beans.factory.annotation.Autowired; @@ -28,12 +31,18 @@ public class WarehouseShipmentService extends CoreBaseService @Autowired private ExaminationInstancesService examinationInstancesService; + @Autowired + private ExaminationFinancialsService examinationFinancialsService; + @Autowired private ContractsProductsService contractsProductsService; @Autowired private FinancingsService financingsService; + @Autowired + private PickupProductsService pickupProductsService; + /** * 分页查询 */ @@ -109,8 +118,7 @@ public class WarehouseShipmentService extends CoreBaseService } /** - * 存货质押融资 保兑仓融资 - * 入库 + * 存货质押融资 保兑仓融资 入库 * 同时判断流程进度,若贷款已还清,且所有货物已提货,入库后流程走到终点 */ @Transactional @@ -128,6 +136,11 @@ public class WarehouseShipmentService extends CoreBaseService hadPickupAmount = contractsProductsService.getHadPickupAmount(financings.getContractId(), null); // 保兑仓融资 可提货总金额 = 购销合同金额 financings.setYfzkAmount(financings.getContractAmount()); + + // 买方企业收货之后,存货价值增加,存货以当前售价计算价值 + final PickupProducts pickupProducts = pickupProductsService.queryById(warehouseShipment.getPickupProductId()); + examinationFinancialsService.incrementProductAssets(warehouseShipment.getExaminationId(), + warehouseShipment.getInstanceId(), "1", pickupProducts.getPickupApplyAmount()); // 买方角色ID为1 } else { // 存货质押融资没有购销合同 已提货物金额 根据协议ID查询 hadPickupAmount = contractsProductsService.getHadPickupAmount(null, warehouseShipment.getProtocolId()); diff --git a/web/src/main/java/com/ibeetl/jlw/service/ExaminationFinancialsService.java b/web/src/main/java/com/ibeetl/jlw/service/ExaminationFinancialsService.java index 3b8d0ff..77eb6c0 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/ExaminationFinancialsService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/ExaminationFinancialsService.java @@ -146,20 +146,11 @@ public class ExaminationFinancialsService extends CoreBaseService= 1 + AND es.status >= 1 @} ORDER BY - ue.`id` DESC - LIMIT 0,1 + t1.updated_at DESC, t1.created_at DESC + LIMIT 0,1 getFinancialByExaminationId @@ -110,7 +110,7 @@ incrementBalance update examination_financials t1 JOIN user_examinations t2 on t2.financial_id = t1.id - SET t1.balance = t1.balance + (#amount#) + SET t1.balance = t1.balance + (#amount#) , t1.updated_at=now() WHERE t2.examination_id = #examinationId# and t2.instance_id = #instanceId# and JSON_CONTAINS(t2.data->'$.roles', #roleId#) @@ -123,7 +123,7 @@ decrementBalance update examination_financials t1 JOIN user_examinations t2 on t2.financial_id = t1.id - SET t1.balance = t1.balance - (#amount#) + SET t1.balance = t1.balance - (#amount#) , t1.updated_at=now() WHERE t2.examination_id = #examinationId# and t2.instance_id = #instanceId# and JSON_CONTAINS(t2.data->'$.roles', #roleId#) @@ -136,7 +136,7 @@ incrementProductAssets update examination_financials t1 JOIN user_examinations t2 on t2.financial_id = t1.id - SET t1.product_assets = t1.product_assets + (#amount#) + SET t1.product_assets = t1.product_assets + (#amount#) , t1.updated_at=now() WHERE t2.examination_id = #examinationId# and t2.instance_id = #instanceId# and JSON_CONTAINS(t2.data->'$.roles', #roleId#) @@ -149,7 +149,7 @@ decrementProductAssets update examination_financials t1 JOIN user_examinations t2 on t2.financial_id = t1.id - SET t1.product_assets = t1.product_assets - (#amount#) + SET t1.product_assets = t1.product_assets - (#amount#) , t1.updated_at=now() WHERE t2.examination_id = #examinationId# and t2.instance_id = #instanceId# and JSON_CONTAINS(t2.data->'$.roles', #roleId#)