package cn.iocoder.yudao.module.crm.service.salesTarget; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.crm.controller.admin.salesTarget.vo.CrmSalesTargetChangeStatusReqVO; import cn.iocoder.yudao.module.crm.controller.admin.salesTarget.vo.CrmSalesTargetPageReqVO; import cn.iocoder.yudao.module.crm.controller.admin.salesTarget.vo.CrmSalesTargetRespVO; import cn.iocoder.yudao.module.crm.controller.admin.salesTarget.vo.CrmSalesTargetSaveReqVO; import cn.iocoder.yudao.module.crm.controller.admin.salesTarget.vo.analysis.CrmSalesTargetAnalysisReqVO; import jakarta.validation.Valid; import java.util.List; /** * CRM 销售目标 Service 接口 * * @author 超级管理员 */ public interface CrmSalesTargetService { /** * 创建销售目标 * * @param createReqVO 创建信息 * @return 编号 */ Long createSalesTarget(@Valid CrmSalesTargetSaveReqVO createReqVO); /** * 更新销售目标 * * @param updateReqVO 更新信息 */ void updateSalesTarget(@Valid CrmSalesTargetSaveReqVO updateReqVO); /** * 变更销售目标状态(作废/恢复等) * * @param reqVO 状态变更信息 */ void changeSalesTargetStatus(@Valid CrmSalesTargetChangeStatusReqVO reqVO); /** * 删除销售目标 * * @param id 编号 */ void deleteSalesTarget(Long id); /** * 获得销售目标(含实际达成) * * @param id 编号 * @return 销售目标 */ CrmSalesTargetRespVO getSalesTarget(Long id); /** * 获得销售目标分页(含实际达成) * * @param pageReqVO 分页查询 * @return 销售目标分页 */ PageResult getSalesTargetPage(CrmSalesTargetPageReqVO pageReqVO); /** * 获得销售目标列表(全量,用于 Excel 导出) * * @param reqVO 查询条件 * @return 销售目标列表 */ List getSalesTargetList(CrmSalesTargetPageReqVO reqVO); /** * 获得销售目标达成分析列表(按周期+维度过滤,含实际达成与达成率) * * @param reqVO 分析查询 * @return 达成分析列表 */ List getSalesTargetAnalysis(CrmSalesTargetAnalysisReqVO reqVO); }