feat(wms): 新增资金日记账余额计算功能

- 在 WmsJournalMapper 中添加 getLastBalance 方法,用于获取最新的余额
- 在 WmsJournalServiceImpl 中实现插入资金日记账时自动计算新余额的功能
- 新增 addJournal 方法,直接插入资金日记账记录
This commit is contained in:
JR
2025-08-13 13:46:37 +08:00
parent f3089f9417
commit c12e97bd1f
3 changed files with 31 additions and 4 deletions

View File

@@ -4,6 +4,8 @@ import com.klp.domain.WmsJournal;
import com.klp.domain.vo.WmsJournalVo; import com.klp.domain.vo.WmsJournalVo;
import com.klp.common.core.mapper.BaseMapperPlus; import com.klp.common.core.mapper.BaseMapperPlus;
import java.math.BigDecimal;
/** /**
* 资金日记账Mapper接口 * 资金日记账Mapper接口
* *
@@ -12,4 +14,5 @@ import com.klp.common.core.mapper.BaseMapperPlus;
*/ */
public interface WmsJournalMapper extends BaseMapperPlus<WmsJournalMapper, WmsJournal, WmsJournalVo> { public interface WmsJournalMapper extends BaseMapperPlus<WmsJournalMapper, WmsJournal, WmsJournalVo> {
BigDecimal getLastBalance();
} }

View File

@@ -15,9 +15,11 @@ import com.klp.domain.WmsJournal;
import com.klp.mapper.WmsJournalMapper; import com.klp.mapper.WmsJournalMapper;
import com.klp.service.IWmsJournalService; import com.klp.service.IWmsJournalService;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection; import java.util.Collection;
import java.util.Optional;
/** /**
* 资金日记账Service业务层处理 * 资金日记账Service业务层处理
@@ -76,15 +78,30 @@ public class WmsJournalServiceImpl implements IWmsJournalService {
*/ */
@Override @Override
public Boolean insertByBo(WmsJournalBo bo) { public Boolean insertByBo(WmsJournalBo bo) {
WmsJournal add = BeanUtil.toBean(bo, WmsJournal.class); WmsJournal journal = BeanUtil.toBean(bo, WmsJournal.class);
validEntityBeforeSave(add); validEntityBeforeSave(journal);
boolean flag = baseMapper.insert(add) > 0; // 计算新的余额
BigDecimal lastBalance = baseMapper.getLastBalance();
if (lastBalance == null) {
lastBalance = BigDecimal.ZERO;
}
BigDecimal newBalance = lastBalance
.add(Optional.ofNullable(journal.getIncomeAmount()).orElse(BigDecimal.ZERO))
.subtract(Optional.ofNullable(journal.getExpenseAmount()).orElse(BigDecimal.ZERO));
journal.setBalanceAmount(newBalance);
boolean flag = baseMapper.insert(journal) > 0;
if (flag) { if (flag) {
bo.setJournalId(add.getJournalId()); bo.setJournalId(journal.getJournalId());
} }
return flag; return flag;
} }
public void addJournal(WmsJournal journal) {
baseMapper.insert(journal);
}
/** /**
* 修改资金日记账 * 修改资金日记账
*/ */

View File

@@ -20,6 +20,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateTime" column="update_time"/> <result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/> <result property="delFlag" column="del_flag"/>
</resultMap> </resultMap>
<select id="getLastBalance" resultType="java.math.BigDecimal">
SELECT balance_amount
FROM wms_journal
WHERE del_flag = 0
ORDER BY create_time DESC
LIMIT 1
</select>
</mapper> </mapper>