feat(wms): 更新应收款管理并添加资金日记账功能

- 在 IWmsJournalService 接口中添加 computeBalance 方法,用于计算余额
- 在 IWmsReceivableService 接口中添加 updatePaidAmountAndAddJournal 方法,用于更新应收款金额并添加资金日记账- 实现 WmsJournalServiceImpl 中的 computeBalance 方法,计算新的余额并更新资金日记账
- 在 WmsReceivableController 中添加更新应收款已收金额和新增资金日记账的接口
- 实现 WmsReceivableServiceImpl 中的 updatePaidAmountAndAddJournal 方法,完成应收款更新和资金日记账添加的业务逻辑
This commit is contained in:
JR
2025-08-13 15:34:09 +08:00
parent 1002999310
commit fe82c72b89
5 changed files with 77 additions and 5 deletions

View File

@@ -75,6 +75,16 @@ public class WmsReceivableController extends BaseController {
return toAjax(iWmsReceivableService.insertByBo(bo));
}
/**
* 更新应收款已收金额 & 新增资金日记账
*/
@Log(title = "应收款管理(宽松版)", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PostMapping("/updatePaidAmount")
public R<Void> updatePaidAmount(@RequestBody WmsReceivableBo bo) {
return toAjax(iWmsReceivableService.updatePaidAmountAndAddJournal(bo));
}
/**
* 修改应收款管理(宽松版)
*/

View File

@@ -1,5 +1,6 @@
package com.klp.service;
import com.klp.domain.WmsJournal;
import com.klp.domain.vo.WmsJournalVo;
import com.klp.domain.bo.WmsJournalBo;
import com.klp.common.core.page.TableDataInfo;
@@ -36,6 +37,11 @@ public interface IWmsJournalService {
*/
Boolean insertByBo(WmsJournalBo bo);
/**
* 计算余额
*/
void computeBalance(WmsJournal journal);
/**
* 修改资金日记账
*/

View File

@@ -46,4 +46,9 @@ public interface IWmsReceivableService {
* 校验并批量删除应收款管理(宽松版)信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 更新应收款管理(宽松版)的已收款金额和添加流水
*/
Boolean updatePaidAmountAndAddJournal(WmsReceivableBo bo);
}

View File

@@ -80,6 +80,16 @@ public class WmsJournalServiceImpl implements IWmsJournalService {
public Boolean insertByBo(WmsJournalBo bo) {
WmsJournal journal = BeanUtil.toBean(bo, WmsJournal.class);
validEntityBeforeSave(journal);
computeBalance(journal);
boolean flag = baseMapper.insert(journal) > 0;
if (flag) {
bo.setJournalId(journal.getJournalId());
}
return flag;
}
@Override
public void computeBalance(WmsJournal journal) {
// 计算新的余额
BigDecimal lastBalance = baseMapper.getLastBalance();
if (lastBalance == null) {
@@ -90,11 +100,6 @@ public class WmsJournalServiceImpl implements IWmsJournalService {
.subtract(Optional.ofNullable(journal.getExpenseAmount()).orElse(BigDecimal.ZERO));
journal.setBalanceAmount(newBalance);
boolean flag = baseMapper.insert(journal) > 0;
if (flag) {
bo.setJournalId(journal.getJournalId());
}
return flag;
}
/**

View File

@@ -8,6 +8,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import com.klp.domain.WmsJournal;
import com.klp.mapper.WmsCustomerMapper;
import com.klp.mapper.WmsJournalMapper;
import com.klp.service.IWmsJournalService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsReceivableBo;
@@ -15,7 +19,11 @@ import com.klp.domain.vo.WmsReceivableVo;
import com.klp.domain.WmsReceivable;
import com.klp.mapper.WmsReceivableMapper;
import com.klp.service.IWmsReceivableService;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@@ -32,6 +40,13 @@ public class WmsReceivableServiceImpl implements IWmsReceivableService {
private final WmsReceivableMapper baseMapper;
@Resource
private WmsJournalMapper journalMapper;
@Resource
private WmsCustomerMapper customerMapper;
@Resource
private IWmsJournalService wmsJournalService;
/**
* 查询应收款管理(宽松版)
*/
@@ -126,4 +141,35 @@ public class WmsReceivableServiceImpl implements IWmsReceivableService {
}
return baseMapper.deleteBatchIds(ids) > 0;
}
@Transactional(rollbackFor = Exception.class)
@Override
public Boolean updatePaidAmountAndAddJournal(WmsReceivableBo bo) {
// 1. 更新应收款已收金额
WmsReceivable receivable = baseMapper.selectById(bo.getReceivableId());
if (receivable == null) {
throw new RuntimeException("应收款记录不存在");
}
// bo.getPaidAmount()传入的是变化量
BigDecimal changePaidAmount = bo.getPaidAmount();
BigDecimal newPaidAmount = receivable.getPaidAmount().add(changePaidAmount);
WmsReceivable updateWmsReceivable = new WmsReceivable();
updateWmsReceivable.setReceivableId(bo.getReceivableId());
updateWmsReceivable.setPaidAmount(newPaidAmount);
int countFlag = baseMapper.updateById(updateWmsReceivable);
// 2. 新增资金日记账记录
WmsJournal journal = new WmsJournal();
journal.setJournalDate(new Date());
journal.setSummary("客户付款");
journal.setTransType("收入");
journal.setCounterpart(customerMapper.selectById(receivable.getCustomerId()).getName());
journal.setIncomeAmount(changePaidAmount);
journal.setExpenseAmount(BigDecimal.ZERO);
wmsJournalService.computeBalance(journal);
journal.setRemark("应收款ID: " + bo.getReceivableId());
countFlag +=journalMapper.insert(journal);
return countFlag == 2;
}
}