Files
klp-oa/klp-wms/src/main/java/com/klp/service/impl/WmsPayableServiceImpl.java
JR fe1ca4e1a9 refactor(klp-wms):移除未使用的导入语句- 在 WmsOrderService、WmsPayableService 和 WmsReceivableService 接口中移除了未使用的实体类导入
- 在 WmsPayableController 和 WmsPayableServiceImpl 中移除了未使用的 WmsReceivable 导入
- 优化了 WmsReceivableServiceImpl 中的代码格式
2025-08-13 16:02:35 +08:00

172 lines
6.2 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.klp.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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 com.klp.domain.WmsJournal;
import com.klp.mapper.WmsJournalMapper;
import com.klp.mapper.WmsSupplierMapper;
import com.klp.service.IWmsJournalService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsPayableBo;
import com.klp.domain.vo.WmsPayableVo;
import com.klp.domain.WmsPayable;
import com.klp.mapper.WmsPayableMapper;
import com.klp.service.IWmsPayableService;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Collection;
/**
* 应付款管理宽松版Service业务层处理
*
* @author klp
* @date 2025-08-13
*/
@RequiredArgsConstructor
@Service
public class WmsPayableServiceImpl implements IWmsPayableService {
private final WmsPayableMapper baseMapper;
@Resource
private WmsJournalMapper journalMapper;
@Resource
private WmsSupplierMapper supplierMapper;
@Resource
private IWmsJournalService wmsJournalService;
/**
* 查询应付款管理(宽松版)
*/
@Override
public WmsPayableVo queryById(Long payableId){
return baseMapper.selectVoById(payableId);
}
/**
* 查询应付款管理(宽松版)列表
*/
@Override
public TableDataInfo<WmsPayableVo> queryPageList(WmsPayableBo bo, PageQuery pageQuery) {
QueryWrapper<WmsPayable> lqw = buildQueryWrapperPlus(bo);
Page<WmsPayableVo> result = baseMapper.selectVoPagePlus(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
private QueryWrapper<WmsPayable> buildQueryWrapperPlus(WmsPayableBo bo) {
QueryWrapper<WmsPayable> lqw = Wrappers.query();
lqw.eq("p.del_flag", 0);
lqw.eq(bo.getSupplierId() != null, "p.supplier_id", bo.getSupplierId());
lqw.eq(bo.getOrderId() != null, "p.order_id", bo.getOrderId());
lqw.eq(bo.getDueDate() != null, "p.due_date", bo.getDueDate());
lqw.eq(bo.getAmount() != null, "p.amount", bo.getAmount());
lqw.eq(bo.getPaidAmount() != null, "p.paid_amount", bo.getPaidAmount());
lqw.eq(bo.getBalanceAmount() != null, "p.balance_amount", bo.getBalanceAmount());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), "p.status", bo.getStatus());
return lqw;
}
/**
* 查询应付款管理(宽松版)列表
*/
@Override
public List<WmsPayableVo> queryList(WmsPayableBo bo) {
LambdaQueryWrapper<WmsPayable> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<WmsPayable> buildQueryWrapper(WmsPayableBo bo) {
LambdaQueryWrapper<WmsPayable> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getOrderId() != null, WmsPayable::getOrderId, bo.getOrderId());
lqw.eq(bo.getDueDate() != null, WmsPayable::getDueDate, bo.getDueDate());
lqw.eq(bo.getSupplierId() != null, WmsPayable::getSupplierId, bo.getSupplierId());
lqw.eq(bo.getAmount() != null, WmsPayable::getAmount, bo.getAmount());
lqw.eq(bo.getBalanceAmount() != null, WmsPayable::getBalanceAmount, bo.getBalanceAmount());
lqw.eq(bo.getPaidAmount() != null, WmsPayable::getPaidAmount, bo.getPaidAmount());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), WmsPayable::getStatus, bo.getStatus());
return lqw;
}
/**
* 新增应付款管理(宽松版)
*/
@Override
public Boolean insertByBo(WmsPayableBo bo) {
WmsPayable add = BeanUtil.toBean(bo, WmsPayable.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setPayableId(add.getPayableId());
}
return flag;
}
/**
* 修改应付款管理(宽松版)
*/
@Override
public Boolean updateByBo(WmsPayableBo bo) {
WmsPayable update = BeanUtil.toBean(bo, WmsPayable.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WmsPayable entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除应付款管理(宽松版)
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
@Override
public Boolean updatePaidAmountAndAddJournal(WmsPayableBo bo) {
// 1. 更新应付款已付金额
WmsPayable payable = baseMapper.selectById(bo.getPayableId());
if (payable == null) {
throw new RuntimeException("应付款记录不存在");
}
// bo.getPaidAmount()传入的是变化量
BigDecimal changePaidAmount = bo.getPaidAmount();
BigDecimal newPaidAmount = payable.getPaidAmount().add(changePaidAmount);
WmsPayable updateWmsPayable = new WmsPayable();
updateWmsPayable.setPayableId(bo.getPayableId());
updateWmsPayable.setPaidAmount(newPaidAmount);
int countFlag = baseMapper.updateById(updateWmsPayable);
// 2. 新增资金日记账记录
WmsJournal journal = new WmsJournal();
journal.setJournalDate(new Date());
journal.setSummary("向供应商付款");
journal.setTransType("支出");
journal.setCounterpart(supplierMapper.selectById(payable.getSupplierId()).getName());
journal.setIncomeAmount(changePaidAmount);
journal.setExpenseAmount(BigDecimal.ZERO);
wmsJournalService.computeBalance(journal);
journal.setRemark("应付款ID: " + bo.getPayableId());
countFlag += journalMapper.insert(journal);
return countFlag == 2;
}
}