package com.klp.service.impl; import cn.hutool.core.bean.BeanUtil; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; 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 lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import com.klp.domain.bo.WmsJournalBo; import com.klp.domain.vo.WmsJournalVo; import com.klp.domain.WmsJournal; import com.klp.mapper.WmsJournalMapper; import com.klp.service.IWmsJournalService; import java.math.BigDecimal; import java.util.List; import java.util.Map; import java.util.Collection; import java.util.Optional; /** * 资金日记账Service业务层处理 * * @author klp * @date 2025-08-13 */ @RequiredArgsConstructor @Service public class WmsJournalServiceImpl implements IWmsJournalService { private final WmsJournalMapper baseMapper; /** * 查询资金日记账 */ @Override public WmsJournalVo queryById(Long journalId){ return baseMapper.selectVoById(journalId); } /** * 查询资金日记账列表 */ @Override public TableDataInfo queryPageList(WmsJournalBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } /** * 查询资金日记账列表 */ @Override public List queryList(WmsJournalBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } private LambdaQueryWrapper buildQueryWrapper(WmsJournalBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(bo.getJournalDate() != null, WmsJournal::getJournalDate, bo.getJournalDate()); lqw.eq(StringUtils.isNotBlank(bo.getSummary()), WmsJournal::getSummary, bo.getSummary()); lqw.eq(StringUtils.isNotBlank(bo.getTransType()), WmsJournal::getTransType, bo.getTransType()); lqw.eq(StringUtils.isNotBlank(bo.getCounterpart()), WmsJournal::getCounterpart, bo.getCounterpart()); lqw.eq(bo.getIncomeAmount() != null, WmsJournal::getIncomeAmount, bo.getIncomeAmount()); lqw.eq(bo.getExpenseAmount() != null, WmsJournal::getExpenseAmount, bo.getExpenseAmount()); lqw.eq(bo.getBalanceAmount() != null, WmsJournal::getBalanceAmount, bo.getBalanceAmount()); return lqw; } /** * 新增资金日记账 */ @Override 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) { 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); } /** * 修改资金日记账 */ @Override public Boolean updateByBo(WmsJournalBo bo) { WmsJournal update = BeanUtil.toBean(bo, WmsJournal.class); validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } /** * 保存前的数据校验 */ private void validEntityBeforeSave(WmsJournal entity){ //TODO 做一些数据校验,如唯一约束 } /** * 批量删除资金日记账 */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteBatchIds(ids) > 0; } }