feat(wms): 更新应收款管理并添加资金日记账功能
- 在 IWmsJournalService 接口中添加 computeBalance 方法,用于计算余额 - 在 IWmsReceivableService 接口中添加 updatePaidAmountAndAddJournal 方法,用于更新应收款金额并添加资金日记账- 实现 WmsJournalServiceImpl 中的 computeBalance 方法,计算新的余额并更新资金日记账 - 在 WmsReceivableController 中添加更新应收款已收金额和新增资金日记账的接口 - 实现 WmsReceivableServiceImpl 中的 updatePaidAmountAndAddJournal 方法,完成应收款更新和资金日记账添加的业务逻辑
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改应收款管理(宽松版)
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* 修改资金日记账
|
||||
*/
|
||||
|
||||
@@ -46,4 +46,9 @@ public interface IWmsReceivableService {
|
||||
* 校验并批量删除应收款管理(宽松版)信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 更新应收款管理(宽松版)的已收款金额和添加流水
|
||||
*/
|
||||
Boolean updatePaidAmountAndAddJournal(WmsReceivableBo bo);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user