154 lines
4.7 KiB
C++
154 lines
4.7 KiB
C++
|
|
#ifndef IMS_BUSINESS_MANAGER_HPP
|
|||
|
|
#define IMS_BUSINESS_MANAGER_HPP
|
|||
|
|
|
|||
|
|
#include "ims_types.hpp"
|
|||
|
|
#include <memory>
|
|||
|
|
|
|||
|
|
namespace ims {
|
|||
|
|
|
|||
|
|
/// @brief 业务数据全生命周期管理与统计分析引擎。
|
|||
|
|
///
|
|||
|
|
/// 涵盖业务数据的增删改查、提交/审核/驳回/归档工作流,
|
|||
|
|
/// 以及数据汇总、图表数据生成、自定义查询、报表导出、台账生成等功能。
|
|||
|
|
class BusinessManager {
|
|||
|
|
public:
|
|||
|
|
BusinessManager();
|
|||
|
|
~BusinessManager();
|
|||
|
|
|
|||
|
|
// ==================== 业务新增 (SRS-IMS_F-010) ====================
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 创建新的业务数据。
|
|||
|
|
*
|
|||
|
|
* @requirement(name="业务新增", id="SRS-IMS_F-010")
|
|||
|
|
* 新增一条业务记录,初始状态为 DRAFT。
|
|||
|
|
*/
|
|||
|
|
int64_t createBusiness(const BusinessData& data);
|
|||
|
|
|
|||
|
|
// ==================== 业务编辑 (SRS-IMS_F-011) ====================
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 编辑业务数据(仅草稿或驳回状态可编辑)。
|
|||
|
|
*
|
|||
|
|
* @requirement(name="业务编辑", id="SRS-IMS_F-011")
|
|||
|
|
*/
|
|||
|
|
bool editBusiness(const BusinessData& data);
|
|||
|
|
|
|||
|
|
// ==================== 业务删除 (SRS-IMS_F-012) ====================
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 删除业务数据。
|
|||
|
|
*
|
|||
|
|
* @requirement(name="业务删除", id="SRS-IMS_F-012")
|
|||
|
|
*/
|
|||
|
|
bool deleteBusiness(int64_t biz_id);
|
|||
|
|
|
|||
|
|
// ==================== 业务提交 (SRS-IMS_F-013) ====================
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 提交业务至审核流程(DRAFT/PENDING -> PENDING)。
|
|||
|
|
*
|
|||
|
|
* @requirement(name="业务提交", id="SRS-IMS_F-013")
|
|||
|
|
*/
|
|||
|
|
bool submitBusiness(int64_t biz_id);
|
|||
|
|
|
|||
|
|
// ==================== 业务审核 (SRS-IMS_F-014) ====================
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 审核通过业务(PENDING -> APPROVED)。
|
|||
|
|
*
|
|||
|
|
* @requirement(name="业务审核", id="SRS-IMS_F-014")
|
|||
|
|
*/
|
|||
|
|
bool approveBusiness(int64_t biz_id);
|
|||
|
|
|
|||
|
|
// ==================== 业务驳回 (SRS-IMS_F-015) ====================
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 驳回业务(PENDING -> REJECTED)。
|
|||
|
|
*
|
|||
|
|
* @requirement(name="业务驳回", id="SRS-IMS_F-015")
|
|||
|
|
*/
|
|||
|
|
bool rejectBusiness(int64_t biz_id);
|
|||
|
|
|
|||
|
|
// ==================== 业务归档 (SRS-IMS_F-016) ====================
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 归档已审核业务(APPROVED -> ARCHIVED)。
|
|||
|
|
*
|
|||
|
|
* @requirement(name="业务归档", id="SRS-IMS_F-016")
|
|||
|
|
*/
|
|||
|
|
bool archiveBusiness(int64_t biz_id);
|
|||
|
|
|
|||
|
|
// ==================== 查询筛选 (SRS-IMS_F-017) ====================
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 多条件组合查询业务数据。
|
|||
|
|
*
|
|||
|
|
* @requirement(name="查询筛选", id="SRS-IMS_F-017")
|
|||
|
|
* 支持按标题、状态、创建者、时间范围等多条件组合筛选。
|
|||
|
|
*/
|
|||
|
|
PageResult<BusinessData> queryBusiness(
|
|||
|
|
const std::vector<QueryCondition>& conditions,
|
|||
|
|
const PageRequest& page);
|
|||
|
|
|
|||
|
|
// ==================== 数据汇总 (SRS-IMS_F-018) ====================
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 按分类汇总业务数据。
|
|||
|
|
*
|
|||
|
|
* @requirement(name="数据汇总", id="SRS-IMS_F-018")
|
|||
|
|
* 对业务数据进行分组汇总,返回各分类的总值和计数。
|
|||
|
|
*/
|
|||
|
|
std::vector<SummaryResult> summarizeData(const std::string& group_field);
|
|||
|
|
|
|||
|
|
// ==================== 图表展示 (SRS-IMS_F-019) ====================
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 生成图表展示所需的数据点。
|
|||
|
|
*
|
|||
|
|
* @requirement(name="图表展示", id="SRS-IMS_F-019")
|
|||
|
|
* 将统计数据转换为前端可消费的 label/value 序列。
|
|||
|
|
*/
|
|||
|
|
std::vector<ChartDataPoint> generateChartData(const std::string& metric);
|
|||
|
|
|
|||
|
|
// ==================== 自定义查询 (SRS-IMS_F-020) ====================
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 执行用户自定义查询。
|
|||
|
|
*
|
|||
|
|
* @requirement(name="自定义查询", id="SRS-IMS_F-020")
|
|||
|
|
* 允许用户传入任意查询条件组合进行灵活检索。
|
|||
|
|
*/
|
|||
|
|
std::vector<BusinessData> customQuery(
|
|||
|
|
const std::vector<QueryCondition>& conditions);
|
|||
|
|
|
|||
|
|
// ==================== 报表导出 (SRS-IMS_F-021) ====================
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 导出数据报表。
|
|||
|
|
*
|
|||
|
|
* @requirement(name="报表导出", id="SRS-IMS_F-021")
|
|||
|
|
* 根据查询条件导出业务数据为指定格式(Excel/PDF)。
|
|||
|
|
*/
|
|||
|
|
std::string exportReport(const std::vector<QueryCondition>& conditions,
|
|||
|
|
ExportFormat format);
|
|||
|
|
|
|||
|
|
// ==================== 数据台账生成 (SRS-IMS_F-022) ====================
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 生成数据台账文档。
|
|||
|
|
*
|
|||
|
|
* @requirement(name="数据台账生成", id="SRS-IMS_F-022")
|
|||
|
|
* 汇总指定时间范围内的业务数据,生成结构化的台账文本。
|
|||
|
|
*/
|
|||
|
|
std::string generateLedger(const std::string& date_range);
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
struct Impl;
|
|||
|
|
std::unique_ptr<Impl> pImpl_;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
} // namespace ims
|
|||
|
|
|
|||
|
|
#endif // IMS_BUSINESS_MANAGER_HPP
|