流程资产变化

master
c1769 2 years ago
parent 1b28afede5
commit 7b3fe9c85a

@ -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<BankAcceptanceBil
@Autowired
private ExaminationFinancialsService examinationFinancialsService;
@Autowired
private FinancingsService financingsService;
/**
*
*/
@ -51,6 +58,7 @@ public class BankAcceptanceBillService extends CoreBaseService<BankAcceptanceBil
/**
*
*
*/
@Transactional
public void addNew(BankAcceptanceBill dto) {
@ -58,10 +66,18 @@ public class BankAcceptanceBillService extends CoreBaseService<BankAcceptanceBil
dto.setCreatedAt(new Date());
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()); // 买方资金减少
}
// 保兑仓 买方企业 把购销合同金额和融资申请金额的差额,发给卖方企业
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) {
examinationInstancesService.finishStep(dto.getInstanceId(), dto.getStep());
}

@ -274,25 +274,10 @@ public class FinancingsService extends CoreBaseService<Financings> {
/**
*
* <p>
*
*
*
*
*
*/
@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<Financings> {
/**
*
*
* <p>
*
*
*/
@Transactional
public void loanIssue(Financings dto) {
@ -363,6 +351,15 @@ public class FinancingsService extends CoreBaseService<Financings> {
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());

@ -150,6 +150,16 @@ public class SendProductsController {
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
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<SendProducts> {
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); // 修改发货状态

@ -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<WarehouseShipment>
@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<WarehouseShipment>
}
/**
*
*
*
*
*/
@Transactional
@ -128,6 +136,11 @@ public class WarehouseShipmentService extends CoreBaseService<WarehouseShipment>
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());

@ -146,20 +146,11 @@ public class ExaminationFinancialsService extends CoreBaseService<ExaminationFin
lastExaminationFinancials = new ExaminationFinancials();
}
ExaminationFinancials financials = new ExaminationFinancials();
if (Objects.equals(type, 1)) {
// 实训模式资产信息是最近实训的资产信息
financials.setInitBalance(financialRound(lastExaminationFinancials.getInitBalance()));
financials.setBalance(financialRound(lastExaminationFinancials.getBalance()));
financials.setProductAssets(financialRound(lastExaminationFinancials.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.setInitBalance(financialRound(lastExaminationFinancials.getInitBalance()));
financials.setBalance(financialRound(lastExaminationFinancials.getBalance()));
financials.setProductAssets(financialRound(lastExaminationFinancials.getProductAssets()));
financials.setTotalBalance(financialRound(financials.getBalance().add(financials.getProductAssets())));
financials.setRaiseOrders(lastExaminationFinancials.getRaiseOrders() == null ? 0 : lastExaminationFinancials.getRaiseOrders());
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 examinations es ON ue.examination_id = es.id
WHERE
ue.user_id = #userId#
AND es.type = #type#
t1.user_id = #userId#
AND t1.type = #type#
@if(type==1){
AND es.`status` >= 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#)

Loading…
Cancel
Save