package cn.iocoder.yudao.module.finance.service.asset; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.finance.controller.admin.asset.vo.FinIntangibleAssetAmortizeRespVO; import cn.iocoder.yudao.module.finance.controller.admin.asset.vo.FinIntangibleAssetPageReqVO; import cn.iocoder.yudao.module.finance.controller.admin.asset.vo.FinIntangibleAssetSaveReqVO; import cn.iocoder.yudao.module.finance.dal.dataobject.asset.FinIntangibleAssetDO; import jakarta.validation.Valid; import java.util.Collection; import java.util.List; /** * 无形资产 Service 接口 * * @author 超级管理员 */ public interface FinIntangibleAssetService { /** * 创建无形资产 * * @param createReqVO 创建信息 * @return 资产编号 */ Long createIntangibleAsset(@Valid FinIntangibleAssetSaveReqVO createReqVO); /** * 更新无形资产 * * 修改原值、摊销年限、残值率时会按新参数重算累计摊销与净值 * * @param updateReqVO 更新信息 */ void updateIntangibleAsset(@Valid FinIntangibleAssetSaveReqVO updateReqVO); /** * 删除无形资产 * * @param id 资产编号 */ void deleteIntangibleAsset(Long id); /** * 批量删除无形资产 * * @param ids 资产编号数组 */ void deleteIntangibleAssetList(List ids); /** * 计提摊销 * * 每个资产计提一个月的摊销:月摊销额 = 原值 × (1 - 残值率 / 100) / (摊销年限 × 12)。 * 累计摊销以应摊销总额封顶,最后一期按剩余可摊销额计提; * 净值摊完(为 0)时状态自动置为「已摊销完」 * * @param ids 资产编号数组;为空时对所有未失效的无形资产计提 * @return 计提结果 */ FinIntangibleAssetAmortizeRespVO amortizeIntangibleAssetList(List ids); /** * 获得无形资产 * * @param id 资产编号 * @return 无形资产 */ FinIntangibleAssetDO getIntangibleAsset(Long id); /** * 获得无形资产分页 * * @param pageReqVO 分页查询 * @return 无形资产分页 */ PageResult getIntangibleAssetPage(FinIntangibleAssetPageReqVO pageReqVO); /** * 获得指定编号的无形资产列表 * * @param ids 资产编号数组 * @return 无形资产列表 */ List getIntangibleAssetList(Collection ids); /** * 获得全部无形资产列表 * * @return 无形资产列表 */ List getIntangibleAssetList(); }