package cn.iocoder.yudao.module.finance.service.voucher;
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.module.finance.controller.admin.voucher.vo.FinVoucherPageReqVO;
|
import cn.iocoder.yudao.module.finance.controller.admin.voucher.vo.FinVoucherSaveReqVO;
|
import cn.iocoder.yudao.module.finance.dal.dataobject.voucher.FinVoucherDO;
|
import cn.iocoder.yudao.module.finance.dal.dataobject.voucher.FinVoucherEntryDO;
|
import jakarta.validation.Valid;
|
|
import java.time.LocalDate;
|
import java.util.Collection;
|
import java.util.List;
|
import java.util.Map;
|
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap;
|
|
/**
|
* 记账凭证 Service 接口
|
*
|
* @author 超级管理员
|
*/
|
public interface FinVoucherService {
|
|
/**
|
* 创建记账凭证
|
*
|
* @param createReqVO 创建信息
|
* @return 凭证编号
|
*/
|
Long createVoucher(@Valid FinVoucherSaveReqVO createReqVO);
|
|
/**
|
* 更新记账凭证
|
*
|
* 仅未过账的凭证允许修改;修改时会整表重建凭证分录
|
*
|
* @param updateReqVO 更新信息
|
*/
|
void updateVoucher(@Valid FinVoucherSaveReqVO updateReqVO);
|
|
/**
|
* 删除记账凭证
|
*
|
* @param id 凭证编号
|
*/
|
void deleteVoucher(Long id);
|
|
/**
|
* 批量删除记账凭证
|
*
|
* @param ids 凭证编号数组
|
*/
|
void deleteVoucherList(List<Long> ids);
|
|
/**
|
* 凭证过账:未过账 -> 已过账
|
*
|
* @param id 凭证编号
|
*/
|
void postVoucher(Long id);
|
|
/**
|
* 凭证作废:未过账 -> 已作废
|
*
|
* @param id 凭证编号
|
*/
|
void cancelVoucher(Long id);
|
|
/**
|
* 获得记账凭证
|
*
|
* @param id 凭证编号
|
* @return 记账凭证
|
*/
|
FinVoucherDO getVoucher(Long id);
|
|
/**
|
* 获得记账凭证分页
|
*
|
* @param pageReqVO 分页查询
|
* @return 记账凭证分页
|
*/
|
PageResult<FinVoucherDO> getVoucherPage(FinVoucherPageReqVO pageReqVO);
|
|
/**
|
* 获得指定编号的记账凭证列表
|
*
|
* @param ids 凭证编号数组
|
* @return 记账凭证列表
|
*/
|
List<FinVoucherDO> getVoucherList(Collection<Long> ids);
|
|
/**
|
* 获得指定日期区间的记账凭证列表
|
*
|
* @param startDate 开始日期(含)
|
* @param endDate 结束日期(含)
|
* @return 记账凭证列表
|
*/
|
List<FinVoucherDO> getVoucherListByDateBetween(LocalDate startDate, LocalDate endDate);
|
|
/**
|
* 获得指定凭证的分录列表(按行号升序)
|
*
|
* @param voucherId 凭证编号
|
* @return 分录列表
|
*/
|
List<FinVoucherEntryDO> getVoucherEntryListByVoucherId(Long voucherId);
|
|
/**
|
* 获得指定凭证的分录 Map(key 为凭证编号)
|
*
|
* @param voucherIds 凭证编号数组
|
* @return 分录 Map
|
*/
|
default Map<Long, List<FinVoucherEntryDO>> getVoucherEntryMap(Collection<Long> voucherIds) {
|
List<FinVoucherEntryDO> list = getVoucherEntryListByVoucherIds(voucherIds);
|
return convertMultiMap(list, FinVoucherEntryDO::getVoucherId);
|
}
|
|
/**
|
* 获得指定凭证的分录列表
|
*
|
* @param voucherIds 凭证编号数组
|
* @return 分录列表
|
*/
|
List<FinVoucherEntryDO> getVoucherEntryListByVoucherIds(Collection<Long> voucherIds);
|
|
}
|