feat fina indicator

This commit is contained in:
yanweidong
2026-01-24 18:08:23 +08:00
parent 628d342883
commit d8bc9d0f48

View File

@@ -36,20 +36,221 @@ func GetFinaIndicator() {
return
}
records := make([]*models.StockFinaIndicator, 0)
itemData := make(map[string]any)
for _, item := range reply.Data.Items {
t := utils.String2Int(item[1].(string))
for i := 0; i < len(item); i++ {
itemData[reply.Data.Fields[i]] = item[i]
}
t := utils.String2Int(itemData["ann_date"].(string))
if t == 0 {
continue
}
var cnt int64
impl.DBService.Model(&models.StockFinaIndicator{}).Where("ts_code=? and AnnDate=?", item[0].(string), t).Count(&cnt)
impl.DBService.Model(&models.StockFinaIndicator{}).Where("ts_code=? and ann_date=?", itemData["ts_code"].(string), t).Count(&cnt)
if cnt == 0 {
impl.DBService.Create(&models.StockFinaIndicator{
TsCode: item[0].(string),
records = append(records, &models.StockFinaIndicator{
TsCode: itemData["ts_code"].(string),
AnnDate: t,
EndDate: itemData["end_date"].(string),
// 每股指标
Eps: Any2Float(itemData["eps"]),
DtEps: Any2Float(itemData["dt_eps"]),
TotalRevenuePs: Any2Float(itemData["total_revenue_ps"]),
RevenuePs: Any2Float(itemData["revenue_ps"]),
CapitalResePs: Any2Float(itemData["capital_rese_ps"]),
SurplusResePs: Any2Float(itemData["surplus_rese_ps"]),
UndistProfitPs: Any2Float(itemData["undist_profit_ps"]),
Diluted2Eps: Any2Float(itemData["diluted2_eps"]),
Bps: Any2Float(itemData["bps"]),
Ocfps: Any2Float(itemData["ocfps"]),
Retainedps: Any2Float(itemData["retainedps"]),
Cfps: Any2Float(itemData["cfps"]),
EbitPs: Any2Float(itemData["ebit_ps"]),
FcffPs: Any2Float(itemData["fcff_ps"]),
FcfePs: Any2Float(itemData["fcfe_ps"]),
// 利润表相关
ExtraItem: Any2Float(itemData["extra_item"]),
ProfitDedt: Any2Float(itemData["profit_dedt"]),
GrossMargin: Any2Float(itemData["gross_margin"]),
OpIncome: Any2Float(itemData["op_income"]),
ValuechangeIncome: Any2Float(itemData["valuechange_income"]),
InterstIncome: Any2Float(itemData["interst_income"]),
Daa: Any2Float(itemData["daa"]),
Ebit: Any2Float(itemData["ebit"]),
Ebitda: Any2Float(itemData["ebitda"]),
Fcff: Any2Float(itemData["fcff"]),
Fcfe: Any2Float(itemData["fcfe"]),
RdExp: Any2Float(itemData["rd_exp"]),
FixedAssets: Any2Float(itemData["fixed_assets"]),
ProfitPrefinExp: Any2Float(itemData["profit_prefin_exp"]),
NonOpProfit: Any2Float(itemData["non_op_profit"]),
// 资产负债表相关
CurrentExint: Any2Float(itemData["current_exint"]),
NoncurrentExint: Any2Float(itemData["noncurrent_exint"]),
Interestdebt: Any2Float(itemData["interestdebt"]),
Netdebt: Any2Float(itemData["netdebt"]),
TangibleAsset: Any2Float(itemData["tangible_asset"]),
WorkingCapital: Any2Float(itemData["working_capital"]),
NetworkingCapital: Any2Float(itemData["networking_capital"]),
InvestCapital: Any2Float(itemData["invest_capital"]),
RetainedEarnings: Any2Float(itemData["retained_earnings"]),
// 偿债能力指标
CurrentRatio: Any2Float(itemData["current_ratio"]),
QuickRatio: Any2Float(itemData["quick_ratio"]),
CashRatio: Any2Float(itemData["cash_ratio"]),
DebtToAssets: Any2Float(itemData["debt_to_assets"]),
AssetsToEqt: Any2Float(itemData["assets_to_eqt"]),
DpAssetsToEqt: Any2Float(itemData["dp_assets_to_eqt"]),
DebtToEqt: Any2Float(itemData["debt_to_eqt"]),
EqtToDebt: Any2Float(itemData["eqt_to_debt"]),
OcfToShortdebt: Any2Float(itemData["ocf_to_shortdebt"]),
EbitToInterest: Any2Float(itemData["ebit_to_interest"]),
// 运营能力指标
InvturnDays: Any2Float(itemData["invturn_days"]),
ArturnDays: Any2Float(itemData["arturn_days"]),
InvTurn: Any2Float(itemData["inv_turn"]),
ArTurn: Any2Float(itemData["ar_turn"]),
CaTurn: Any2Float(itemData["ca_turn"]),
FaTurn: Any2Float(itemData["fa_turn"]),
AssetsTurn: Any2Float(itemData["assets_turn"]),
TurnDays: Any2Float(itemData["turn_days"]),
TotalFaTrun: Any2Float(itemData["total_fa_trun"]),
// 盈利能力指标
NetprofitMargin: Any2Float(itemData["netprofit_margin"]),
GrossprofitMargin: Any2Float(itemData["grossprofit_margin"]),
CogsOfSales: Any2Float(itemData["cogs_of_sales"]),
ExpenseOfSales: Any2Float(itemData["expense_of_sales"]),
Roe: Any2Float(itemData["roe"]),
RoeWaa: Any2Float(itemData["roe_waa"]),
RoeDt: Any2Float(itemData["roe_dt"]),
Roa: Any2Float(itemData["roa"]),
Npta: Any2Float(itemData["npta"]),
Roic: Any2Float(itemData["roic"]),
RoaDp: Any2Float(itemData["roa_dp"]),
// 结构指标
CaToAssets: Any2Float(itemData["ca_to_assets"]),
NcaToAssets: Any2Float(itemData["nca_to_assets"]),
TbassetsToTotalassets: Any2Float(itemData["tbassets_to_totalassets"]),
IntToTalcap: Any2Float(itemData["int_to_talcap"]),
EqtToTalcapital: Any2Float(itemData["eqt_to_talcapital"]),
CurrentdebtToDebt: Any2Float(itemData["currentdebt_to_debt"]),
LongdebToDebt: Any2Float(itemData["longdeb_to_debt"]),
TangibleassetToDebt: Any2Float(itemData["tangibleasset_to_debt"]),
// 单季度指标
QOpincome: Any2Float(itemData["q_opincome"]),
QInvestincome: Any2Float(itemData["q_investincome"]),
QDtprofit: Any2Float(itemData["q_dtprofit"]),
QEps: Any2Float(itemData["q_eps"]),
QNetprofitMargin: Any2Float(itemData["q_netprofit_margin"]),
QGscaleprofitMargin: Any2Float(itemData["q_gsprofit_margin"]),
QExpToSales: Any2Float(itemData["q_exp_to_sales"]),
QRoe: Any2Float(itemData["q_roe"]),
QDtRoe: Any2Float(itemData["q_dt_roe"]),
QNpta: Any2Float(itemData["q_npta"]),
// 同比增长率
BasicEpsYoy: Any2Float(itemData["basic_eps_yoy"]),
DtEpsYoy: Any2Float(itemData["dt_eps_yoy"]),
CfpsYoy: Any2Float(itemData["cfps_yoy"]),
OpYoy: Any2Float(itemData["op_yoy"]),
EbtYoy: Any2Float(itemData["ebt_yoy"]),
NetprofitYoy: Any2Float(itemData["netprofit_yoy"]),
DtNetprofitYoy: Any2Float(itemData["dt_netprofit_yoy"]),
OcfYoy: Any2Float(itemData["ocf_yoy"]),
RoeYoy: Any2Float(itemData["roe_yoy"]),
BpsYoy: Any2Float(itemData["bps_yoy"]),
AssetsYoy: Any2Float(itemData["assets_yoy"]),
EqtYoy: Any2Float(itemData["eqt_yoy"]),
TrYoy: Any2Float(itemData["tr_yoy"]),
OrYoy: Any2Float(itemData["or_yoy"]),
EquityYoy: Any2Float(itemData["equity_yoy"]),
// 其他比率指标
ProfitToGr: Any2Float(itemData["profit_to_gr"]),
SaleexpToGr: Any2Float(itemData["saleexp_to_gr"]),
AdminexpOfGr: Any2Float(itemData["adminexp_of_gr"]),
FinaexpOfGr: Any2Float(itemData["finaexp_of_gr"]),
ImpaiTtm: Any2Float(itemData["impai_ttm"]),
GcOfGr: Any2Float(itemData["gc_of_gr"]),
OpOfGr: Any2Float(itemData["op_of_gr"]),
EbitOfGr: Any2Float(itemData["ebit_of_gr"]),
OpincomeOfEbt: Any2Float(itemData["opincome_of_ebt"]),
InvestincomeOfEbt: Any2Float(itemData["investincome_of_ebt"]),
NOpProfitOfEbt: Any2Float(itemData["n_op_profit_of_ebt"]),
TaxToEbt: Any2Float(itemData["tax_to_ebt"]),
DtprofitToProfit: Any2Float(itemData["dtprofit_to_profit"]),
SalescashToOr: Any2Float(itemData["salescash_to_or"]),
OcfToOr: Any2Float(itemData["ocf_to_or"]),
OcfToOpincome: Any2Float(itemData["ocf_to_opincome"]),
CapitalizedToDa: Any2Float(itemData["capitalized_to_da"]),
OcfToDebt: Any2Float(itemData["ocf_to_debt"]),
OcfToInterestdebt: Any2Float(itemData["ocf_to_interestdebt"]),
OcfToNetdebt: Any2Float(itemData["ocf_to_netdebt"]),
LongdebtToWorkingcapital: Any2Float(itemData["longdebt_to_workingcapital"]),
EbitdaToDebt: Any2Float(itemData["ebitda_to_debt"]),
OpToEbt: Any2Float(itemData["op_to_ebt"]),
NopToEbt: Any2Float(itemData["nop_to_ebt"]),
OcfToProfit: Any2Float(itemData["ocf_to_profit"]),
CashToLiqdebt: Any2Float(itemData["cash_to_liqdebt"]),
CashToLiqdebtWithinterest: Any2Float(itemData["cash_to_liqdebt_withinterest"]),
OpToLiqdebt: Any2Float(itemData["op_to_liqdebt"]),
OpToDebt: Any2Float(itemData["op_to_debt"]),
ProfitToOp: Any2Float(itemData["profit_to_op"]),
// 年度化指标
RoeYearly: Any2Float(itemData["roe_yearly"]),
Roa2Yearly: Any2Float(itemData["roa2_yearly"]),
RoaYearly: Any2Float(itemData["roa_yearly"]),
RoicYearly: Any2Float(itemData["roic_yearly"]),
RoeAvg: Any2Float(itemData["roe_avg"]),
// 单季度增长比率
QGrYoy: Any2Float(itemData["q_gr_yoy"]),
QGrQoq: Any2Float(itemData["q_gr_qoq"]),
QSalesYoy: Any2Float(itemData["q_sales_yoy"]),
QSalesQoq: Any2Float(itemData["q_sales_qoq"]),
QOpYoy: Any2Float(itemData["q_op_yoy"]),
QOpQoq: Any2Float(itemData["q_op_qoq"]),
QProfitYoy: Any2Float(itemData["q_profit_yoy"]),
QProfitQoq: Any2Float(itemData["q_profit_qoq"]),
QNetprofitYoy: Any2Float(itemData["q_netprofit_yoy"]),
QNetprofitQoq: Any2Float(itemData["q_netprofit_qoq"]),
// 单季度比率指标
QProfitToGr: Any2Float(itemData["q_profit_to_gr"]),
QSaleexpToGr: Any2Float(itemData["q_saleexp_to_gr"]),
QAdminexpToGr: Any2Float(itemData["q_adminexp_to_gr"]),
QFinaexpToGr: Any2Float(itemData["q_finaexp_to_gr"]),
QImpairToGrTtm: Any2Float(itemData["q_impair_to_gr_ttm"]),
QGcToGr: Any2Float(itemData["q_gc_to_gr"]),
QOpToGr: Any2Float(itemData["q_op_to_gr"]),
QOpincomeToEbt: Any2Float(itemData["q_opincome_to_ebt"]),
QInvestincomeToEbt: Any2Float(itemData["q_investincome_to_ebt"]),
QDtprofitToProfit: Any2Float(itemData["q_dtprofit_to_profit"]),
QSalescashToOr: Any2Float(itemData["q_salescash_to_or"]),
QOcfToSales: Any2Float(itemData["q_ocf_to_sales"]),
QOcfToOr: Any2Float(itemData["q_ocf_to_or"]),
// 其他
UpdateFlag: itemData["update_flag"].(string),
})
}
}
if len(records) > 0 {
impl.DBService.CreateInBatches(records, 100)
}
time.Sleep(200 * time.Microsecond)
}
}