From fe82c72b898eea43d91e141e4473a03ddbef5334 Mon Sep 17 00:00:00 2001 From: JR <3573153686@qq.com> Date: Wed, 13 Aug 2025 15:34:09 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=9B=B4=E6=96=B0=E5=BA=94?= =?UTF-8?q?=E6=94=B6=E6=AC=BE=E7=AE=A1=E7=90=86=E5=B9=B6=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=B5=84=E9=87=91=E6=97=A5=E8=AE=B0=E8=B4=A6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 IWmsJournalService 接口中添加 computeBalance 方法,用于计算余额 - 在 IWmsReceivableService 接口中添加 updatePaidAmountAndAddJournal 方法,用于更新应收款金额并添加资金日记账- 实现 WmsJournalServiceImpl 中的 computeBalance 方法,计算新的余额并更新资金日记账 - 在 WmsReceivableController 中添加更新应收款已收金额和新增资金日记账的接口 - 实现 WmsReceivableServiceImpl 中的 updatePaidAmountAndAddJournal 方法,完成应收款更新和资金日记账添加的业务逻辑 --- .../controller/WmsReceivableController.java | 10 ++++ .../com/klp/service/IWmsJournalService.java | 6 +++ .../klp/service/IWmsReceivableService.java | 5 ++ .../service/impl/WmsJournalServiceImpl.java | 15 ++++-- .../impl/WmsReceivableServiceImpl.java | 46 +++++++++++++++++++ 5 files changed, 77 insertions(+), 5 deletions(-) diff --git a/klp-wms/src/main/java/com/klp/controller/WmsReceivableController.java b/klp-wms/src/main/java/com/klp/controller/WmsReceivableController.java index 46449d61..72de0ed4 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsReceivableController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsReceivableController.java @@ -75,6 +75,16 @@ public class WmsReceivableController extends BaseController { return toAjax(iWmsReceivableService.insertByBo(bo)); } + /** + * 更新应收款已收金额 & 新增资金日记账 + */ + @Log(title = "应收款管理(宽松版)", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PostMapping("/updatePaidAmount") + public R updatePaidAmount(@RequestBody WmsReceivableBo bo) { + return toAjax(iWmsReceivableService.updatePaidAmountAndAddJournal(bo)); + } + /** * 修改应收款管理(宽松版) */ diff --git a/klp-wms/src/main/java/com/klp/service/IWmsJournalService.java b/klp-wms/src/main/java/com/klp/service/IWmsJournalService.java index 733152d8..b2e1cbf0 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsJournalService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsJournalService.java @@ -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); + /** * 修改资金日记账 */ diff --git a/klp-wms/src/main/java/com/klp/service/IWmsReceivableService.java b/klp-wms/src/main/java/com/klp/service/IWmsReceivableService.java index a1880ff2..b4d9f2cb 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsReceivableService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsReceivableService.java @@ -46,4 +46,9 @@ public interface IWmsReceivableService { * 校验并批量删除应收款管理(宽松版)信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 更新应收款管理(宽松版)的已收款金额和添加流水 + */ + Boolean updatePaidAmountAndAddJournal(WmsReceivableBo bo); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsJournalServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsJournalServiceImpl.java index e196b1c5..049c13cd 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsJournalServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsJournalServiceImpl.java @@ -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; } /** diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsReceivableServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsReceivableServiceImpl.java index 578ed374..599232f7 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsReceivableServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsReceivableServiceImpl.java @@ -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; + } }