package cn.iocoder.yudao.module.finance.service.subject; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.finance.controller.admin.subject.vo.FinAccountSubjectPageReqVO; import cn.iocoder.yudao.module.finance.controller.admin.subject.vo.FinAccountSubjectSaveReqVO; import cn.iocoder.yudao.module.finance.dal.dataobject.subject.FinAccountSubjectDO; import jakarta.validation.Valid; import java.util.Collection; import java.util.List; import java.util.Map; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; /** * 会计科目 Service 接口 * * @author 超级管理员 */ public interface FinAccountSubjectService { /** * 创建会计科目 * * @param createReqVO 创建信息 * @return 科目编号 */ Long createAccountSubject(@Valid FinAccountSubjectSaveReqVO createReqVO); /** * 更新会计科目 * * @param updateReqVO 更新信息 */ void updateAccountSubject(@Valid FinAccountSubjectSaveReqVO updateReqVO); /** * 删除会计科目 * * @param id 科目编号 */ void deleteAccountSubject(Long id); /** * 批量删除会计科目 * * @param ids 科目编号数组 */ void deleteAccountSubjectList(List ids); /** * 获得会计科目 * * @param id 科目编号 * @return 会计科目 */ FinAccountSubjectDO getAccountSubject(Long id); /** * 获得会计科目分页 * * @param pageReqVO 分页查询 * @return 会计科目分页 */ PageResult getAccountSubjectPage(FinAccountSubjectPageReqVO pageReqVO); /** * 获得会计科目列表(全量,按科目编码升序,前端据此构建科目树) * * @return 会计科目列表 */ List getAccountSubjectList(); /** * 获得指定科目编码的会计科目,不存在时返回 null * * @param subjectCode 科目编码 * @return 会计科目 */ FinAccountSubjectDO getAccountSubjectByCode(String subjectCode); /** * 获得指定科目编码的会计科目 Map * * @param subjectCodes 科目编码数组 * @return 会计科目 Map */ default Map getAccountSubjectMap(Collection subjectCodes) { List list = getAccountSubjectListByCodes(subjectCodes); return convertMap(list, FinAccountSubjectDO::getSubjectCode); } /** * 获得指定科目编码的会计科目列表 * * @param subjectCodes 科目编码数组 * @return 会计科目列表 */ List getAccountSubjectListByCodes(Collection subjectCodes); }