dev fina indicator

This commit is contained in:
yanweidong
2026-01-19 20:04:17 +08:00
parent 6bca56ced2
commit ba23c2e9a6
2 changed files with 261 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
package a
import (
"log"
"strings"
"time"
"git.apinb.com/dataset/stock/internal/impl"
"git.apinb.com/dataset/stock/internal/models"
)
func GetFinaIndicator() {
end := time.Now().Format("20060102")
for _, code := range GetStockCodes() {
var start string = "20230101"
var last models.StockFinaIndicator
err := impl.DBService.Where("ts_code=?", code).Order("ann_date DESC").First(&last).Error
if err == nil && last.AnnDate != "" {
start = last.AnnDate
}
params := map[string]string{
"ts_code": code,
"start_date": start,
"end_date": end,
}
if start == end {
continue
}
fields := strings.Split("ts_code,ann_date,end_date,eps,dt_eps,total_revenue_ps,revenue_ps,capital_rese_ps,surplus_rese_ps,undist_profit_ps,extra_item,profit_dedt,gross_margin,current_ratio,quick_ratio,cash_ratio,invturn_days,arturn_days,inv_turn,ar_turn,ca_turn,fa_turn,assets_turn,op_income,valuechange_income,interst_income,daa,ebit,ebitda,fcff,fcfe,current_exint,noncurrent_exint,interestdebt,netdebt,tangible_asset,working_capital,networking_capital,invest_capital,retained_earnings,diluted2_eps,bps,ocfps,retainedps,cfps,ebit_ps,fcff_ps,fcfe_ps,netprofit_margin,grossprofit_margin,cogs_of_sales,expense_of_sales,profit_to_gr,saleexp_to_gr,adminexp_of_gr,finaexp_of_gr,impai_ttm,gc_of_gr,op_of_gr,ebit_of_gr,roe,roe_waa,roe_dt,roa,npta,roic,roe_yearly,roa2_yearly,roe_avg,opincome_of_ebt,investincome_of_ebt,n_op_profit_of_ebt,tax_to_ebt,dtprofit_to_profit,salescash_to_or,ocf_to_or,ocf_to_opincome,capitalized_to_da,debt_to_assets,assets_to_eqt,dp_assets_to_eqt,ca_to_assets,nca_to_assets,tbassets_to_totalassets,int_to_talcap,eqt_to_talcapital,currentdebt_to_debt,longdeb_to_debt,ocf_to_shortdebt,debt_to_eqt,eqt_to_debt,eqt_to_interestdebt,tangibleasset_to_debt,tangasset_to_intdebt,tangibleasset_to_netdebt,ocf_to_debt,ocf_to_interestdebt,ocf_to_netdebt,ebit_to_interest,longdebt_to_workingcapital,ebitda_to_debt,turn_days,roa_yearly,roa_dp,fixed_assets,profit_prefin_exp,non_op_profit,op_to_ebt,nop_to_ebt,ocf_to_profit,cash_to_liqdebt,cash_to_liqdebt_withinterest,op_to_liqdebt,op_to_debt,roic_yearly,total_fa_trun,profit_to_op,q_opincome,q_investincome,q_dtprofit,q_eps,q_netprofit_margin,q_gsprofit_margin,q_exp_to_sales,q_profit_to_gr,q_saleexp_to_gr,q_adminexp_to_gr,q_finaexp_to_gr,q_impair_to_gr_ttm,q_gc_to_gr,q_op_to_gr,q_roe,q_dt_roe,q_npta,q_opincome_to_ebt,q_investincome_to_ebt,q_dtprofit_to_profit,q_salescash_to_or,q_ocf_to_sales,q_ocf_to_or,basic_eps_yoy,dt_eps_yoy,cfps_yoy,op_yoy,ebt_yoy,netprofit_yoy,dt_netprofit_yoy,ocf_yoy,roe_yoy,bps_yoy,assets_yoy,eqt_yoy,tr_yoy,or_yoy,q_gr_yoy,q_gr_qoq,q_sales_yoy,q_sales_qoq,q_op_yoy,q_op_qoq,q_profit_yoy,q_profit_qoq,q_netprofit_yoy,q_netprofit_qoq,equity_yoy,rd_exp,update_flag", ",")
reply, err := TushareClient.FinaIndicator(params, fields)
if err != nil {
log.Println("ERROR", "GetFinaIndicator", err)
return
}
for _, item := range reply.Data.Items {
var cnt int64
impl.DBService.Model(&models.StockFinaIndicator{}).Where("ts_code=? and AnnDate=?", item[0].(string), item[1].(string)).Count(&cnt)
if cnt == 0 {
impl.DBService.Create(&models.StockFinaIndicator{
TsCode: item[0].(string),
AnnDate: item[1].(string),
})
}
}
}
}

View File

@@ -0,0 +1,212 @@
package models
import (
"time"
"gorm.io/gorm"
)
// StockFinaIndicator 财务指标模型
type StockFinaIndicator struct {
ID uint `gorm:"primarykey;autoIncrement"`
TsCode string `gorm:"type:varchar(20);not null;index:idx_ts_code;comment:TS代码"`
AnnDate string `gorm:"type:date;not null;index:idx_ann_date;comment:公告日期"`
EndDate string `gorm:"type:date;not null;index:idx_end_date;comment:报告期"`
// 每股指标
Eps float64 `gorm:"type:decimal(20,4);comment:基本每股收益"`
DtEps float64 `gorm:"type:decimal(20,4);comment:稀释每股收益"`
TotalRevenuePs float64 `gorm:"type:decimal(20,4);comment:每股营业总收入"`
RevenuePs float64 `gorm:"type:decimal(20,4);comment:每股营业收入"`
CapitalResePs float64 `gorm:"type:decimal(20,4);comment:每股资本公积"`
SurplusResePs float64 `gorm:"type:decimal(20,4);comment:每股盈余公积"`
UndistProfitPs float64 `gorm:"type:decimal(20,4);comment:每股未分配利润"`
Diluted2Eps float64 `gorm:"type:decimal(20,4);comment:期末摊薄每股收益"`
Bps float64 `gorm:"type:decimal(20,4);comment:每股净资产"`
Ocfps float64 `gorm:"type:decimal(20,4);comment:每股经营活动产生的现金流量净额"`
Retainedps float64 `gorm:"type:decimal(20,4);comment:每股留存收益"`
Cfps float64 `gorm:"type:decimal(20,4);comment:每股现金流量净额"`
EbitPs float64 `gorm:"type:decimal(20,4);comment:每股息税前利润"`
FcffPs float64 `gorm:"type:decimal(20,4);comment:每股企业自由现金流量"`
FcfePs float64 `gorm:"type:decimal(20,4);comment:每股股东自由现金流量"`
// 利润表相关
ExtraItem float64 `gorm:"type:decimal(20,4);comment:非经常性损益"`
ProfitDedt float64 `gorm:"type:decimal(20,4);comment:扣除非经常性损益后的净利润"`
GrossMargin float64 `gorm:"type:decimal(20,4);comment:毛利"`
OpIncome float64 `gorm:"type:decimal(20,4);comment:经营活动净收益"`
ValuechangeIncome float64 `gorm:"type:decimal(20,4);comment:价值变动净收益"`
InterstIncome float64 `gorm:"type:decimal(20,4);comment:利息费用"`
Daa float64 `gorm:"type:decimal(20,4);comment:折旧与摊销"`
Ebit float64 `gorm:"type:decimal(20,4);comment:息税前利润"`
Ebitda float64 `gorm:"type:decimal(20,4);comment:息税折旧摊销前利润"`
Fcff float64 `gorm:"type:decimal(20,4);comment:企业自由现金流量"`
Fcfe float64 `gorm:"type:decimal(20,4);comment:股权自由现金流量"`
RdExp float64 `gorm:"type:decimal(20,4);comment:研发费用"`
FixedAssets float64 `gorm:"type:decimal(20,4);comment:固定资产合计"`
ProfitPrefinExp float64 `gorm:"type:decimal(20,4);comment:扣除财务费用前营业利润"`
NonOpProfit float64 `gorm:"type:decimal(20,4);comment:非营业利润"`
// 资产负债表相关
CurrentExint float64 `gorm:"type:decimal(20,4);comment:无息流动负债"`
NoncurrentExint float64 `gorm:"type:decimal(20,4);comment:无息非流动负债"`
Interestdebt float64 `gorm:"type:decimal(20,4);comment:带息债务"`
Netdebt float64 `gorm:"type:decimal(20,4);comment:净债务"`
TangibleAsset float64 `gorm:"type:decimal(20,4);comment:有形资产"`
WorkingCapital float64 `gorm:"type:decimal(20,4);comment:营运资金"`
NetworkingCapital float64 `gorm:"type:decimal(20,4);comment:营运流动资本"`
InvestCapital float64 `gorm:"type:decimal(20,4);comment:全部投入资本"`
RetainedEarnings float64 `gorm:"type:decimal(20,4);comment:留存收益"`
// 偿债能力指标
CurrentRatio float64 `gorm:"type:decimal(20,4);comment:流动比率"`
QuickRatio float64 `gorm:"type:decimal(20,4);comment:速动比率"`
CashRatio float64 `gorm:"type:decimal(20,4);comment:保守速动比率"`
DebtToAssets float64 `gorm:"type:decimal(20,4);comment:资产负债率"`
AssetsToEqt float64 `gorm:"type:decimal(20,4);comment:权益乘数"`
DpAssetsToEqt float64 `gorm:"type:decimal(20,4);comment:权益乘数(杜邦分析)"`
DebtToEqt float64 `gorm:"type:decimal(20,4);comment:产权比率"`
EqtToDebt float64 `gorm:"type:decimal(20,4);comment:归属于母公司的股东权益/负债合计"`
OcfToShortdebt float64 `gorm:"type:decimal(20,4);comment:经营活动产生的现金流量净额/流动负债"`
EbitToInterest float64 `gorm:"type:decimal(20,4);comment:已获利息倍数"`
// 运营能力指标
InvturnDays float64 `gorm:"type:decimal(20,4);comment:存货周转天数"`
ArturnDays float64 `gorm:"type:decimal(20,4);comment:应收账款周转天数"`
InvTurn float64 `gorm:"type:decimal(20,4);comment:存货周转率"`
ArTurn float64 `gorm:"type:decimal(20,4);comment:应收账款周转率"`
CaTurn float64 `gorm:"type:decimal(20,4);comment:流动资产周转率"`
FaTurn float64 `gorm:"type:decimal(20,4);comment:固定资产周转率"`
AssetsTurn float64 `gorm:"type:decimal(20,4);comment:总资产周转率"`
TurnDays float64 `gorm:"type:decimal(20,4);comment:营业周期"`
TotalFaTrun float64 `gorm:"type:decimal(20,4);comment:固定资产合计周转率"`
// 盈利能力指标
NetprofitMargin float64 `gorm:"type:decimal(20,4);comment:销售净利率"`
GrossprofitMargin float64 `gorm:"type:decimal(20,4);comment:销售毛利率"`
CogsOfSales float64 `gorm:"type:decimal(20,4);comment:销售成本率"`
ExpenseOfSales float64 `gorm:"type:decimal(20,4);comment:销售期间费用率"`
Roe float64 `gorm:"type:decimal(20,4);comment:净资产收益率"`
RoeWaa float64 `gorm:"type:decimal(20,4);comment:加权平均净资产收益率"`
RoeDt float64 `gorm:"type:decimal(20,4);comment:净资产收益率(扣除非经常损益)"`
Roa float64 `gorm:"type:decimal(20,4);comment:总资产报酬率"`
Npta float64 `gorm:"type:decimal(20,4);comment:总资产净利润"`
Roic float64 `gorm:"type:decimal(20,4);comment:投入资本回报率"`
RoaDp float64 `gorm:"type:decimal(20,4);comment:总资产净利率(杜邦分析)"`
// 结构指标
CaToAssets float64 `gorm:"type:decimal(20,4);comment:流动资产/总资产"`
NcaToAssets float64 `gorm:"type:decimal(20,4);comment:非流动资产/总资产"`
TbassetsToTotalassets float64 `gorm:"type:decimal(20,4);comment:有形资产/总资产"`
IntToTalcap float64 `gorm:"type:decimal(20,4);comment:带息债务/全部投入资本"`
EqtToTalcapital float64 `gorm:"type:decimal(20,4);comment:归属于母公司的股东权益/全部投入资本"`
CurrentdebtToDebt float64 `gorm:"type:decimal(20,4);comment:流动负债/负债合计"`
LongdebToDebt float64 `gorm:"type:decimal(20,4);comment:非流动负债/负债合计"`
TangibleassetToDebt float64 `gorm:"type:decimal(20,4);comment:有形资产/负债合计"`
// 单季度指标
QOpincome float64 `gorm:"type:decimal(20,4);comment:经营活动单季度净收益"`
QInvestincome float64 `gorm:"type:decimal(20,4);comment:价值变动单季度净收益"`
QDtprofit float64 `gorm:"type:decimal(20,4);comment:扣除非经常损益后的单季度净利润"`
QEps float64 `gorm:"type:decimal(20,4);comment:每股收益(单季度)"`
QNetprofitMargin float64 `gorm:"type:decimal(20,4);comment:销售净利率(单季度)"`
QGscaleprofitMargin float64 `gorm:"type:decimal(20,4);comment:销售毛利率(单季度)"`
QExpToSales float64 `gorm:"type:decimal(20,4);comment:销售期间费用率(单季度)"`
QRoe float64 `gorm:"type:decimal(20,4);comment:净资产收益率(单季度)"`
QDtRoe float64 `gorm:"type:decimal(20,4);comment:净资产单季度收益率(扣除非经常损益)"`
QNpta float64 `gorm:"type:decimal(20,4);comment:总资产净利润(单季度)"`
// 同比增长率
BasicEpsYoy float64 `gorm:"type:decimal(20,4);comment:基本每股收益同比增长率(%)"`
DtEpsYoy float64 `gorm:"type:decimal(20,4);comment:稀释每股收益同比增长率(%)"`
CfpsYoy float64 `gorm:"type:decimal(20,4);comment:每股经营活动产生的现金流量净额同比增长率(%)"`
OpYoy float64 `gorm:"type:decimal(20,4);comment:营业利润同比增长率(%)"`
EbtYoy float64 `gorm:"type:decimal(20,4);comment:利润总额同比增长率(%)"`
NetprofitYoy float64 `gorm:"type:decimal(20,4);comment:归属母公司股东的净利润同比增长率(%)"`
DtNetprofitYoy float64 `gorm:"type:decimal(20,4);comment:归属母公司股东的净利润-扣除非经常损益同比增长率(%)"`
OcfYoy float64 `gorm:"type:decimal(20,4);comment:经营活动产生的现金流量净额同比增长率(%)"`
RoeYoy float64 `gorm:"type:decimal(20,4);comment:净资产收益率(摊薄)同比增长率(%)"`
BpsYoy float64 `gorm:"type:decimal(20,4);comment:每股净资产相对年初增长率(%)"`
AssetsYoy float64 `gorm:"type:decimal(20,4);comment:资产总计相对年初增长率(%)"`
EqtYoy float64 `gorm:"type:decimal(20,4);comment:归属母公司的股东权益相对年初增长率(%)"`
TrYoy float64 `gorm:"type:decimal(20,4);comment:营业总收入同比增长率(%)"`
OrYoy float64 `gorm:"type:decimal(20,4);comment:营业收入同比增长率(%)"`
EquityYoy float64 `gorm:"type:decimal(20,4);comment:净资产同比增长率"`
// 其他比率指标
ProfitToGr float64 `gorm:"type:decimal(20,4);comment:净利润/营业总收入"`
SaleexpToGr float64 `gorm:"type:decimal(20,4);comment:销售费用/营业总收入"`
AdminexpOfGr float64 `gorm:"type:decimal(20,4);comment:管理费用/营业总收入"`
FinaexpOfGr float64 `gorm:"type:decimal(20,4);comment:财务费用/营业总收入"`
ImpaiTtm float64 `gorm:"type:decimal(20,4);comment:资产减值损失/营业总收入"`
GcOfGr float64 `gorm:"type:decimal(20,4);comment:营业总成本/营业总收入"`
OpOfGr float64 `gorm:"type:decimal(20,4);comment:营业利润/营业总收入"`
EbitOfGr float64 `gorm:"type:decimal(20,4);comment:息税前利润/营业总收入"`
OpincomeOfEbt float64 `gorm:"type:decimal(20,4);comment:经营活动净收益/利润总额"`
InvestincomeOfEbt float64 `gorm:"type:decimal(20,4);comment:价值变动净收益/利润总额"`
NOpProfitOfEbt float64 `gorm:"type:decimal(20,4);comment:营业外收支净额/利润总额"`
TaxToEbt float64 `gorm:"type:decimal(20,4);comment:所得税/利润总额"`
DtprofitToProfit float64 `gorm:"type:decimal(20,4);comment:扣除非经常损益后的净利润/净利润"`
SalescashToOr float64 `gorm:"type:decimal(20,4);comment:销售商品提供劳务收到的现金/营业收入"`
OcfToOr float64 `gorm:"type:decimal(20,4);comment:经营活动产生的现金流量净额/营业收入"`
OcfToOpincome float64 `gorm:"type:decimal(20,4);comment:经营活动产生的现金流量净额/经营活动净收益"`
CapitalizedToDa float64 `gorm:"type:decimal(20,4);comment:资本支出/折旧和摊销"`
OcfToDebt float64 `gorm:"type:decimal(20,4);comment:经营活动产生的现金流量净额/负债合计"`
OcfToInterestdebt float64 `gorm:"type:decimal(20,4);comment:经营活动产生的现金流量净额/带息债务"`
OcfToNetdebt float64 `gorm:"type:decimal(20,4);comment:经营活动产生的现金流量净额/净债务"`
LongdebtToWorkingcapital float64 `gorm:"type:decimal(20,4);comment:长期债务与营运资金比率"`
EbitdaToDebt float64 `gorm:"type:decimal(20,4);comment:息税折旧摊销前利润/负债合计"`
OpToEbt float64 `gorm:"type:decimal(20,4);comment:营业利润/利润总额"`
NopToEbt float64 `gorm:"type:decimal(20,4);comment:非营业利润/利润总额"`
OcfToProfit float64 `gorm:"type:decimal(20,4);comment:经营活动产生的现金流量净额/营业利润"`
CashToLiqdebt float64 `gorm:"type:decimal(20,4);comment:货币资金/流动负债"`
CashToLiqdebtWithinterest float64 `gorm:"type:decimal(20,4);comment:货币资金/带息流动负债"`
OpToLiqdebt float64 `gorm:"type:decimal(20,4);comment:营业利润/流动负债"`
OpToDebt float64 `gorm:"type:decimal(20,4);comment:营业利润/负债合计"`
ProfitToOp float64 `gorm:"type:decimal(20,4);comment:利润总额/营业收入"`
// 年度化指标
RoeYearly float64 `gorm:"type:decimal(20,4);comment:年化净资产收益率"`
Roa2Yearly float64 `gorm:"type:decimal(20,4);comment:年化总资产报酬率"`
RoaYearly float64 `gorm:"type:decimal(20,4);comment:年化总资产净利率"`
RoicYearly float64 `gorm:"type:decimal(20,4);comment:年化投入资本回报率"`
RoeAvg float64 `gorm:"type:decimal(20,4);comment:平均净资产收益率(增发条件)"`
// 单季度增长比率
QGrYoy float64 `gorm:"type:decimal(20,4);comment:营业总收入同比增长率(%)(单季度)"`
QGrQoq float64 `gorm:"type:decimal(20,4);comment:营业总收入环比增长率(%)(单季度)"`
QSalesYoy float64 `gorm:"type:decimal(20,4);comment:营业收入同比增长率(%)(单季度)"`
QSalesQoq float64 `gorm:"type:decimal(20,4);comment:营业收入环比增长率(%)(单季度)"`
QOpYoy float64 `gorm:"type:decimal(20,4);comment:营业利润同比增长率(%)(单季度)"`
QOpQoq float64 `gorm:"type:decimal(20,4);comment:营业利润环比增长率(%)(单季度)"`
QProfitYoy float64 `gorm:"type:decimal(20,4);comment:净利润同比增长率(%)(单季度)"`
QProfitQoq float64 `gorm:"type:decimal(20,4);comment:净利润环比增长率(%)(单季度)"`
QNetprofitYoy float64 `gorm:"type:decimal(20,4);comment:归属母公司股东的净利润同比增长率(%)(单季度)"`
QNetprofitQoq float64 `gorm:"type:decimal(20,4);comment:归属母公司股东的净利润环比增长率(%)(单季度)"`
// 单季度比率指标
QProfitToGr float64 `gorm:"type:decimal(20,4);comment:净利润/营业总收入(单季度)"`
QSaleexpToGr float64 `gorm:"type:decimal(20,4);comment:销售费用/营业总收入 (单季度)"`
QAdminexpToGr float64 `gorm:"type:decimal(20,4);comment:管理费用/营业总收入 (单季度)"`
QFinaexpToGr float64 `gorm:"type:decimal(20,4);comment:财务费用/营业总收入 (单季度)"`
QImpairToGrTtm float64 `gorm:"type:decimal(20,4);comment:资产减值损失/营业总收入(单季度)"`
QGcToGr float64 `gorm:"type:decimal(20,4);comment:营业总成本/营业总收入 (单季度)"`
QOpToGr float64 `gorm:"type:decimal(20,4);comment:营业利润/营业总收入(单季度)"`
QOpincomeToEbt float64 `gorm:"type:decimal(20,4);comment:经营活动净收益/利润总额(单季度)"`
QInvestincomeToEbt float64 `gorm:"type:decimal(20,4);comment:价值变动净收益/利润总额(单季度)"`
QDtprofitToProfit float64 `gorm:"type:decimal(20,4);comment:扣除非经常损益后的净利润/净利润(单季度)"`
QSalescashToOr float64 `gorm:"type:decimal(20,4);comment:销售商品提供劳务收到的现金/营业收入(单季度)"`
QOcfToSales float64 `gorm:"type:decimal(20,4);comment:经营活动产生的现金流量净额/营业收入(单季度)"`
QOcfToOr float64 `gorm:"type:decimal(20,4);comment:经营活动产生的现金流量净额/经营活动净收益(单季度)"`
// 其他
UpdateFlag string `gorm:"type:varchar(1);comment:更新标识"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt gorm.DeletedAt `gorm:"index"`
}
// TableName 设置表名
func (StockFinaIndicator) TableName() string {
return "fina_indicator"
}