gaoluyang
昨天 90b3ad820eea45d021835197eac5bc3ad55b12ed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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);
 
}