流程资产变化

master
c1769 2 years ago
parent 1b28afede5
commit 7b3fe9c85a

@ -1,9 +1,12 @@
package com.ibeetl.jlw.flow.bankacceptancebill.service; 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.service.CoreBaseService;
import com.ibeetl.admin.core.util.NoUtil; import com.ibeetl.admin.core.util.NoUtil;
import com.ibeetl.jlw.flow.bankacceptancebill.dao.BankAcceptanceBillDao; import com.ibeetl.jlw.flow.bankacceptancebill.dao.BankAcceptanceBillDao;
import com.ibeetl.jlw.flow.bankacceptancebill.entity.BankAcceptanceBill; 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.ExaminationFinancialsService;
import com.ibeetl.jlw.service.ExaminationInstancesService; import com.ibeetl.jlw.service.ExaminationInstancesService;
import org.beetl.sql.core.engine.PageQuery; 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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -27,6 +31,9 @@ public class BankAcceptanceBillService extends CoreBaseService<BankAcceptanceBil
@Autowired @Autowired
private ExaminationFinancialsService examinationFinancialsService; private ExaminationFinancialsService examinationFinancialsService;
@Autowired
private FinancingsService financingsService;
/** /**
* *
*/ */
@ -51,6 +58,7 @@ public class BankAcceptanceBillService extends CoreBaseService<BankAcceptanceBil
/** /**
* *
*
*/ */
@Transactional @Transactional
public void addNew(BankAcceptanceBill dto) { public void addNew(BankAcceptanceBill dto) {
@ -58,10 +66,18 @@ public class BankAcceptanceBillService extends CoreBaseService<BankAcceptanceBil
dto.setCreatedAt(new Date()); dto.setCreatedAt(new Date());
this.insert(dto); this.insert(dto);
if (dto.getInvoiceFee() != null) { if (dto.getInvoiceFee() != null && dto.getInvoiceFee().compareTo(BigDecimal.ZERO) != 0) {
examinationFinancialsService.decrementBalance(dto.getExaminationId(), dto.getInstanceId(), "1", dto.getInvoiceFee()); // 买方资金减少 examinationFinancialsService.decrementBalance(dto.getExaminationId(), dto.getInstanceId(), "1", dto.getInvoiceFee()); // 买方资金减少
} }
// 保兑仓 买方企业 把购销合同金额和融资申请金额的差额,发给卖方企业
final Financings financings = financingsService.queryById(dto.getFinancingId());
Assert.notNull(financings, "为查询到承兑汇票相关融资申请 " + dto.getFinancingId());
final BigDecimal sub2 = financings.getContractAmount().subtract(financings.getApplyAmount());
examinationFinancialsService.decrementBalance(financings.getExaminationId(), financings.getInstanceId(), "1", sub2); // 买方资金减少
examinationFinancialsService.incrementBalance(financings.getExaminationId(), financings.getInstanceId(), "2", sub2); // 卖方资金增加
if (dto.getStep() != null) { if (dto.getStep() != null) {
examinationInstancesService.finishStep(dto.getInstanceId(), dto.getStep()); examinationInstancesService.finishStep(dto.getInstanceId(), dto.getStep());
} }

@ -274,25 +274,10 @@ public class FinancingsService extends CoreBaseService<Financings> {
/** /**
* *
* <p>
*
*
*
*
*
*/ */
@Transactional @Transactional
public void accept(Financings dto) { public void accept(Financings dto) {
final Financings financings = this.queryById(dto.getId()); 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.setApplyStatus(1); // 申请状态1银行审核通过
dto.setUpdatedAt(new Date()); dto.setUpdatedAt(new Date());
dto.setAcceptNo(getAcceptNo()); // 自动生成受理编号 dto.setAcceptNo(getAcceptNo()); // 自动生成受理编号
@ -338,6 +323,9 @@ public class FinancingsService extends CoreBaseService<Financings> {
/** /**
* *
* *
* <p>
*
*
*/ */
@Transactional @Transactional
public void loanIssue(Financings dto) { public void loanIssue(Financings dto) {
@ -363,6 +351,15 @@ public class FinancingsService extends CoreBaseService<Financings> {
final BigDecimal sub = financings.getFkAmount().subtract(financings.getApplyPoundage()); final BigDecimal sub = financings.getFkAmount().subtract(financings.getApplyPoundage());
examinationFinancialsService.incrementBalance(financings.getExaminationId(), financings.getInstanceId(), "2", sub); // 卖方资金增加 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()); examinationInstancesService.finishStep(financings.getInstanceId(), dto.getStep());

@ -150,6 +150,16 @@ public class SendProductsController {
return JsonResult.success(); return JsonResult.success();
} }
/**
*
*/
@PostMapping("/bdcSendOut")
@AliasProcessor
public JsonResult<Void> bdcSendOut(@RequestBody SendProducts dto) {
sendProductsService.bdcSendOut(dto);
return JsonResult.success();
}
/** /**
* *
*/ */

@ -132,13 +132,21 @@ public class SendProductsService extends CoreBaseService<SendProducts> {
examinationFinancialsService.incrementProductAssets(contract.getExaminationId(), contract.getInstanceId(), "2", sub); // 卖方角色ID为2 examinationFinancialsService.incrementProductAssets(contract.getExaminationId(), contract.getInstanceId(), "2", sub); // 卖方角色ID为2
this.updateTemplate(dto); // 修改发货状态 this.updateTemplate(dto); // 修改发货状态
final Financings financings = financingsService.getDetailByContranctId(contract.getId()); // 推进流程进度
if (financings != null && Objects.equals(2, financings.getFinancingType())) { if (dto.getStep() != null) {
// 保兑仓 卖方发货后 买方企业 把购销合同金额和融资申请金额的差额,发给卖方企业 examinationInstancesService.finishStep(contract.getInstanceId(), dto.getStep());
final BigDecimal sub2 = contract.getContractAmount().subtract(financings.getApplyAmount());
examinationFinancialsService.decrementBalance(contract.getExaminationId(), contract.getInstanceId(), "1", sub2); // 买方资金减少
examinationFinancialsService.incrementBalance(contract.getExaminationId(), contract.getInstanceId(), "2", sub2); // 卖方资金增加
} }
}
/**
*
*/
@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) { if (dto.getStep() != null) {
@ -163,8 +171,8 @@ public class SendProductsService extends CoreBaseService<SendProducts> {
throw new GlobalException("剩余可用资金不足"); 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 examinationFinancialsService.incrementProductAssets(sendProducts.getExaminationId(), sendProducts.getInstanceId(), "2", sendProducts.getTotalCostPrice()); // 卖方角色ID为2
this.updateTemplate(dto); // 修改发货状态 this.updateTemplate(dto); // 修改发货状态

@ -5,8 +5,11 @@ import com.ibeetl.admin.core.util.NoUtil;
import com.ibeetl.jlw.flow.contractsproducts.service.ContractsProductsService; import com.ibeetl.jlw.flow.contractsproducts.service.ContractsProductsService;
import com.ibeetl.jlw.flow.financings.entity.Financings; import com.ibeetl.jlw.flow.financings.entity.Financings;
import com.ibeetl.jlw.flow.financings.service.FinancingsService; 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.dao.WarehouseShipmentDao;
import com.ibeetl.jlw.flow.warehouseshipment.entity.WarehouseShipment; import com.ibeetl.jlw.flow.warehouseshipment.entity.WarehouseShipment;
import com.ibeetl.jlw.service.ExaminationFinancialsService;
import com.ibeetl.jlw.service.ExaminationInstancesService; import com.ibeetl.jlw.service.ExaminationInstancesService;
import org.beetl.sql.core.engine.PageQuery; import org.beetl.sql.core.engine.PageQuery;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -28,12 +31,18 @@ public class WarehouseShipmentService extends CoreBaseService<WarehouseShipment>
@Autowired @Autowired
private ExaminationInstancesService examinationInstancesService; private ExaminationInstancesService examinationInstancesService;
@Autowired
private ExaminationFinancialsService examinationFinancialsService;
@Autowired @Autowired
private ContractsProductsService contractsProductsService; private ContractsProductsService contractsProductsService;
@Autowired @Autowired
private FinancingsService financingsService; private FinancingsService financingsService;
@Autowired
private PickupProductsService pickupProductsService;
/** /**
* *
*/ */
@ -109,8 +118,7 @@ public class WarehouseShipmentService extends CoreBaseService<WarehouseShipment>
} }
/** /**
* *
*
* *
*/ */
@Transactional @Transactional
@ -128,6 +136,11 @@ public class WarehouseShipmentService extends CoreBaseService<WarehouseShipment>
hadPickupAmount = contractsProductsService.getHadPickupAmount(financings.getContractId(), null); hadPickupAmount = contractsProductsService.getHadPickupAmount(financings.getContractId(), null);
// 保兑仓融资 可提货总金额 = 购销合同金额 // 保兑仓融资 可提货总金额 = 购销合同金额
financings.setYfzkAmount(financings.getContractAmount()); financings.setYfzkAmount(financings.getContractAmount());
// 买方企业收货之后,存货价值增加,存货以当前售价计算价值
final PickupProducts pickupProducts = pickupProductsService.queryById(warehouseShipment.getPickupProductId());
examinationFinancialsService.incrementProductAssets(warehouseShipment.getExaminationId(),
warehouseShipment.getInstanceId(), "1", pickupProducts.getPickupApplyAmount()); // 买方角色ID为1
} else { } else {
// 存货质押融资没有购销合同 已提货物金额 根据协议ID查询 // 存货质押融资没有购销合同 已提货物金额 根据协议ID查询
hadPickupAmount = contractsProductsService.getHadPickupAmount(null, warehouseShipment.getProtocolId()); hadPickupAmount = contractsProductsService.getHadPickupAmount(null, warehouseShipment.getProtocolId());

@ -146,20 +146,11 @@ public class ExaminationFinancialsService extends CoreBaseService<ExaminationFin
lastExaminationFinancials = new ExaminationFinancials(); lastExaminationFinancials = new ExaminationFinancials();
} }
ExaminationFinancials financials = new ExaminationFinancials(); ExaminationFinancials financials = new ExaminationFinancials();
if (Objects.equals(type, 1)) { // 实训模式资产信息是最近实训的资产信息
// 实训模式资产信息是最近实训的资产信息 financials.setInitBalance(financialRound(lastExaminationFinancials.getInitBalance()));
financials.setInitBalance(financialRound(lastExaminationFinancials.getInitBalance())); financials.setBalance(financialRound(lastExaminationFinancials.getBalance()));
financials.setBalance(financialRound(lastExaminationFinancials.getBalance())); financials.setProductAssets(financialRound(lastExaminationFinancials.getProductAssets()));
financials.setProductAssets(financialRound(lastExaminationFinancials.getProductAssets())); financials.setTotalBalance(financialRound(financials.getBalance().add(financials.getProductAssets())));
financials.setTotalBalance(financialRound(financials.getBalance().add(financials.getProductAssets())));
} else {
// 练习模式资产信息即为用户表资产信息
final Users users = usersService.queryById(usersId);
financials.setInitBalance(financialRound(users.getInitBalance()));
financials.setBalance(financialRound(users.getBalance()));
financials.setProductAssets(financialRound(users.getProductAssets()));
financials.setTotalBalance(financialRound(financials.getBalance().add(financials.getProductAssets())));
}
financials.setRaiseOrders(lastExaminationFinancials.getRaiseOrders() == null ? 0 : lastExaminationFinancials.getRaiseOrders()); financials.setRaiseOrders(lastExaminationFinancials.getRaiseOrders() == null ? 0 : lastExaminationFinancials.getRaiseOrders());
financials.setRaiseRate(lastExaminationFinancials.getRaiseRate() == null ? BigDecimal.ZERO : lastExaminationFinancials.getRaiseRate()); financials.setRaiseRate(lastExaminationFinancials.getRaiseRate() == null ? BigDecimal.ZERO : lastExaminationFinancials.getRaiseRate());

@ -42,14 +42,14 @@ getLastExaminationFinancials
JOIN user_examinations ue on t1.id = ue.financial_id JOIN user_examinations ue on t1.id = ue.financial_id
JOIN examinations es ON ue.examination_id = es.id JOIN examinations es ON ue.examination_id = es.id
WHERE WHERE
ue.user_id = #userId# t1.user_id = #userId#
AND es.type = #type# AND t1.type = #type#
@if(type==1){ @if(type==1){
AND es.`status` >= 1 AND es.status >= 1
@} @}
ORDER BY ORDER BY
ue.`id` DESC t1.updated_at DESC, t1.created_at DESC
LIMIT 0,1 LIMIT 0,1
getFinancialByExaminationId getFinancialByExaminationId
@ -110,7 +110,7 @@ incrementBalance
update examination_financials t1 update examination_financials t1
JOIN user_examinations t2 on t2.financial_id = t1.id 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 WHERE
t2.examination_id = #examinationId# and t2.instance_id = #instanceId# t2.examination_id = #examinationId# and t2.instance_id = #instanceId#
and JSON_CONTAINS(t2.data->'$.roles', #roleId#) and JSON_CONTAINS(t2.data->'$.roles', #roleId#)
@ -123,7 +123,7 @@ decrementBalance
update examination_financials t1 update examination_financials t1
JOIN user_examinations t2 on t2.financial_id = t1.id 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 WHERE
t2.examination_id = #examinationId# and t2.instance_id = #instanceId# t2.examination_id = #examinationId# and t2.instance_id = #instanceId#
and JSON_CONTAINS(t2.data->'$.roles', #roleId#) and JSON_CONTAINS(t2.data->'$.roles', #roleId#)
@ -136,7 +136,7 @@ incrementProductAssets
update examination_financials t1 update examination_financials t1
JOIN user_examinations t2 on t2.financial_id = t1.id 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 WHERE
t2.examination_id = #examinationId# and t2.instance_id = #instanceId# t2.examination_id = #examinationId# and t2.instance_id = #instanceId#
and JSON_CONTAINS(t2.data->'$.roles', #roleId#) and JSON_CONTAINS(t2.data->'$.roles', #roleId#)
@ -149,7 +149,7 @@ decrementProductAssets
update examination_financials t1 update examination_financials t1
JOIN user_examinations t2 on t2.financial_id = t1.id 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 WHERE
t2.examination_id = #examinationId# and t2.instance_id = #instanceId# t2.examination_id = #examinationId# and t2.instance_id = #instanceId#
and JSON_CONTAINS(t2.data->'$.roles', #roleId#) and JSON_CONTAINS(t2.data->'$.roles', #roleId#)

Loading…
Cancel
Save