forecastExpressFormatters.ts•2.94 kB
// 业绩预告和业绩快报格式化函数模块
// 用于处理业绩预告和业绩快报数据展示
// 辅助函数:格式化数字
function formatNumber(num: any): string {
if (num === null || num === undefined || num === '') return 'N/A';
const number = parseFloat(num);
if (isNaN(number)) return 'N/A';
return number.toLocaleString('zh-CN', { maximumFractionDigits: 2 });
}
// 辅助函数:获取预告类型描述
function getForecastType(type: string): string {
const typeMap: Record<string, string> = {
'1': '预增',
'2': '预减',
'3': '扭亏',
'4': '首亏',
'5': '续亏',
'6': '续盈',
'7': '略增',
'8': '略减'
};
return typeMap[type] || type;
}
// 格式化业绩预告数据
export function formatForecast(data: any[]): string {
let output = '';
for (const item of data) {
output += ` ${item.end_date} 期间预告\n`;
output += `公告日期: ${item.ann_date} 预告类型: ${getForecastType(item.type)}\n`;
if (item.p_change_min !== null && item.p_change_max !== null) {
output += `净利润变动幅度: ${item.p_change_min}% ~ ${item.p_change_max}%\n`;
}
if (item.net_profit_min !== null && item.net_profit_max !== null) {
output += `预计净利润: ${formatNumber(item.net_profit_min)} ~ ${formatNumber(item.net_profit_max)} 万元\n`;
}
if (item.last_parent_net) output += `上年同期净利润: ${formatNumber(item.last_parent_net)} 万元\n`;
if (item.summary) output += `业绩预告摘要: ${item.summary}\n`;
if (item.change_reason) output += `变动原因: ${item.change_reason}\n`;
output += '\n';
}
return output;
}
// 格式化业绩快报数据
export function formatExpress(data: any[]): string {
let output = '';
for (const item of data) {
output += ` ${item.end_date} 期间快报\n`;
output += `公告日期: ${item.ann_date}\n\n`;
if (item.revenue) output += `营业收入: ${formatNumber(item.revenue)} 万元\n`;
if (item.operate_profit) output += `营业利润: ${formatNumber(item.operate_profit)} 万元\n`;
if (item.total_profit) output += `利润总额: ${formatNumber(item.total_profit)} 万元\n`;
if (item.n_income) output += `净利润: ${formatNumber(item.n_income)} 万元\n`;
if (item.total_assets) output += `总资产: ${formatNumber(item.total_assets)} 万元\n`;
if (item.total_hldr_eqy_exc_min_int) output += `股东权益: ${formatNumber(item.total_hldr_eqy_exc_min_int)} 万元\n`;
if (item.diluted_eps) output += `每股收益: ${item.diluted_eps} 元\n`;
if (item.diluted_roe) output += `净资产收益率: ${item.diluted_roe}%\n`;
// 同比增长率
if (item.yoy_net_profit) output += `净利润同比增长: ${item.yoy_net_profit}%\n`;
if (item.yoy_sales) output += `营收同比增长: ${item.yoy_sales}%\n`;
output += '\n';
}
return output;
}