Initial commit
This commit is contained in:
836
internal/logic/a/fina_indicator.go
Normal file
836
internal/logic/a/fina_indicator.go
Normal file
@@ -0,0 +1,836 @@
|
||||
package a
|
||||
|
||||
import (
|
||||
"log"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"git.apinb.com/bsm-sdk/core/utils"
|
||||
"git.apinb.com/dataset/stock/internal/impl"
|
||||
"git.apinb.com/dataset/stock/internal/models"
|
||||
tushare "github.com/ShawnRong/tushare-go"
|
||||
)
|
||||
|
||||
var PeriodArgs []string = []string{
|
||||
"20230331",
|
||||
"20230630",
|
||||
"20230930",
|
||||
"20231231",
|
||||
"20240331",
|
||||
"20240630",
|
||||
"20240930",
|
||||
"20241231",
|
||||
"20250331",
|
||||
"20250630",
|
||||
"20250930",
|
||||
"20251231",
|
||||
}
|
||||
|
||||
func SetFinaIndicator(code, period string) (*tushare.APIResponse, error) {
|
||||
params := map[string]string{
|
||||
"ts_code": code,
|
||||
"period": period,
|
||||
}
|
||||
|
||||
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", ",")
|
||||
return TushareClient.FinaIndicator(params, fields)
|
||||
}
|
||||
|
||||
func ExistFinaIndicator(code, period string) bool {
|
||||
var cnt int64
|
||||
impl.DBService.Model(&models.StockFinaIndicator{}).Where("ts_code=? and period=?", code, utils.String2Int(period)).Count(&cnt)
|
||||
if cnt == 0 {
|
||||
return false
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
func ReFinaIndicator(in *tushare.APIResponse) (bool, map[string]any) {
|
||||
fiLen := len(in.Data.Items)
|
||||
if fiLen == 0 {
|
||||
return false, nil
|
||||
}
|
||||
|
||||
itemData := make(map[string]any)
|
||||
for i := 0; i < len(in.Data.Items[0]); i++ {
|
||||
itemData[in.Data.Fields[i]] = in.Data.Items[0][i]
|
||||
}
|
||||
|
||||
if itemData == nil {
|
||||
return false, nil
|
||||
}
|
||||
|
||||
return true, itemData
|
||||
|
||||
}
|
||||
|
||||
func GetFinaIndicator() {
|
||||
for _, code := range GetStockCodes() {
|
||||
|
||||
for _, period := range PeriodArgs {
|
||||
// 请求API
|
||||
reply, err := SetFinaIndicator(code, period)
|
||||
if err != nil {
|
||||
log.Println("ERROR", "GetFinaIndicator", err)
|
||||
continue
|
||||
}
|
||||
|
||||
if ok, item := ReFinaIndicator(reply); ok {
|
||||
exist := ExistFinaIndicator(code, period)
|
||||
if !exist {
|
||||
CreateFinaIndicator(code, period, item)
|
||||
} else {
|
||||
UpdateFinaIndicator(code, period, item)
|
||||
}
|
||||
}
|
||||
|
||||
for _, item := range reply.Data.Items {
|
||||
// 重构数据
|
||||
itemData := make(map[string]any)
|
||||
for i := 0; i < len(item); i++ {
|
||||
itemData[reply.Data.Fields[i]] = item[i]
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
time.Sleep(200 * time.Microsecond)
|
||||
}
|
||||
}
|
||||
|
||||
func CreateFinaIndicator(code, period string, itemData map[string]any) {
|
||||
// 不存在则创建
|
||||
data := models.StockFinaIndicator{
|
||||
TsCode: code,
|
||||
Period: utils.String2Int(period),
|
||||
AnnDate: utils.AnyToString(itemData["ann_date"]),
|
||||
EndDate: utils.AnyToString(itemData["end_date"]),
|
||||
|
||||
// 每股指标
|
||||
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),
|
||||
}
|
||||
|
||||
impl.DBService.Create(&data)
|
||||
}
|
||||
|
||||
func UpdateFinaIndicator(code, period string, item map[string]any) {
|
||||
var old models.StockFinaIndicator
|
||||
err := impl.DBService.Model(&models.StockFinaIndicator{}).Where("ts_code=? and period=?", code, utils.String2Int(period)).First(&old).Error
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
upd := make(map[string]any)
|
||||
|
||||
// Compare each field and only add to update if different
|
||||
// Date fields
|
||||
if old.AnnDate != utils.AnyToString(item["ann_date"]) {
|
||||
upd["ann_date"] = utils.AnyToString(item["ann_date"])
|
||||
}
|
||||
if old.EndDate != utils.AnyToString(item["end_date"]) {
|
||||
upd["end_date"] = utils.AnyToString(item["end_date"])
|
||||
}
|
||||
|
||||
// 每股指标
|
||||
if old.Eps != Any2Float(item["eps"]) {
|
||||
upd["eps"] = Any2Float(item["eps"])
|
||||
}
|
||||
if old.DtEps != Any2Float(item["dt_eps"]) {
|
||||
upd["dt_eps"] = Any2Float(item["dt_eps"])
|
||||
}
|
||||
if old.TotalRevenuePs != Any2Float(item["total_revenue_ps"]) {
|
||||
upd["total_revenue_ps"] = Any2Float(item["total_revenue_ps"])
|
||||
}
|
||||
if old.RevenuePs != Any2Float(item["revenue_ps"]) {
|
||||
upd["revenue_ps"] = Any2Float(item["revenue_ps"])
|
||||
}
|
||||
if old.CapitalResePs != Any2Float(item["capital_rese_ps"]) {
|
||||
upd["capital_rese_ps"] = Any2Float(item["capital_rese_ps"])
|
||||
}
|
||||
if old.SurplusResePs != Any2Float(item["surplus_rese_ps"]) {
|
||||
upd["surplus_rese_ps"] = Any2Float(item["surplus_rese_ps"])
|
||||
}
|
||||
if old.UndistProfitPs != Any2Float(item["undist_profit_ps"]) {
|
||||
upd["undist_profit_ps"] = Any2Float(item["undist_profit_ps"])
|
||||
}
|
||||
if old.Diluted2Eps != Any2Float(item["diluted2_eps"]) {
|
||||
upd["diluted2_eps"] = Any2Float(item["diluted2_eps"])
|
||||
}
|
||||
if old.Bps != Any2Float(item["bps"]) {
|
||||
upd["bps"] = Any2Float(item["bps"])
|
||||
}
|
||||
if old.Ocfps != Any2Float(item["ocfps"]) {
|
||||
upd["ocfps"] = Any2Float(item["ocfps"])
|
||||
}
|
||||
if old.Retainedps != Any2Float(item["retainedps"]) {
|
||||
upd["retainedps"] = Any2Float(item["retainedps"])
|
||||
}
|
||||
if old.Cfps != Any2Float(item["cfps"]) {
|
||||
upd["cfps"] = Any2Float(item["cfps"])
|
||||
}
|
||||
if old.EbitPs != Any2Float(item["ebit_ps"]) {
|
||||
upd["ebit_ps"] = Any2Float(item["ebit_ps"])
|
||||
}
|
||||
if old.FcffPs != Any2Float(item["fcff_ps"]) {
|
||||
upd["fcff_ps"] = Any2Float(item["fcff_ps"])
|
||||
}
|
||||
if old.FcfePs != Any2Float(item["fcfe_ps"]) {
|
||||
upd["fcfe_ps"] = Any2Float(item["fcfe_ps"])
|
||||
}
|
||||
|
||||
// 利润表相关
|
||||
if old.ExtraItem != Any2Float(item["extra_item"]) {
|
||||
upd["extra_item"] = Any2Float(item["extra_item"])
|
||||
}
|
||||
if old.ProfitDedt != Any2Float(item["profit_dedt"]) {
|
||||
upd["profit_dedt"] = Any2Float(item["profit_dedt"])
|
||||
}
|
||||
if old.GrossMargin != Any2Float(item["gross_margin"]) {
|
||||
upd["gross_margin"] = Any2Float(item["gross_margin"])
|
||||
}
|
||||
if old.OpIncome != Any2Float(item["op_income"]) {
|
||||
upd["op_income"] = Any2Float(item["op_income"])
|
||||
}
|
||||
if old.ValuechangeIncome != Any2Float(item["valuechange_income"]) {
|
||||
upd["valuechange_income"] = Any2Float(item["valuechange_income"])
|
||||
}
|
||||
if old.InterstIncome != Any2Float(item["interst_income"]) {
|
||||
upd["interst_income"] = Any2Float(item["interst_income"])
|
||||
}
|
||||
if old.Daa != Any2Float(item["daa"]) {
|
||||
upd["daa"] = Any2Float(item["daa"])
|
||||
}
|
||||
if old.Ebit != Any2Float(item["ebit"]) {
|
||||
upd["ebit"] = Any2Float(item["ebit"])
|
||||
}
|
||||
if old.Ebitda != Any2Float(item["ebitda"]) {
|
||||
upd["ebitda"] = Any2Float(item["ebitda"])
|
||||
}
|
||||
if old.Fcff != Any2Float(item["fcff"]) {
|
||||
upd["fcff"] = Any2Float(item["fcff"])
|
||||
}
|
||||
if old.Fcfe != Any2Float(item["fcfe"]) {
|
||||
upd["fcfe"] = Any2Float(item["fcfe"])
|
||||
}
|
||||
if old.RdExp != Any2Float(item["rd_exp"]) {
|
||||
upd["rd_exp"] = Any2Float(item["rd_exp"])
|
||||
}
|
||||
if old.FixedAssets != Any2Float(item["fixed_assets"]) {
|
||||
upd["fixed_assets"] = Any2Float(item["fixed_assets"])
|
||||
}
|
||||
if old.ProfitPrefinExp != Any2Float(item["profit_prefin_exp"]) {
|
||||
upd["profit_prefin_exp"] = Any2Float(item["profit_prefin_exp"])
|
||||
}
|
||||
if old.NonOpProfit != Any2Float(item["non_op_profit"]) {
|
||||
upd["non_op_profit"] = Any2Float(item["non_op_profit"])
|
||||
}
|
||||
|
||||
// 资产负债表相关
|
||||
if old.CurrentExint != Any2Float(item["current_exint"]) {
|
||||
upd["current_exint"] = Any2Float(item["current_exint"])
|
||||
}
|
||||
if old.NoncurrentExint != Any2Float(item["noncurrent_exint"]) {
|
||||
upd["noncurrent_exint"] = Any2Float(item["noncurrent_exint"])
|
||||
}
|
||||
if old.Interestdebt != Any2Float(item["interestdebt"]) {
|
||||
upd["interestdebt"] = Any2Float(item["interestdebt"])
|
||||
}
|
||||
if old.Netdebt != Any2Float(item["netdebt"]) {
|
||||
upd["netdebt"] = Any2Float(item["netdebt"])
|
||||
}
|
||||
if old.TangibleAsset != Any2Float(item["tangible_asset"]) {
|
||||
upd["tangible_asset"] = Any2Float(item["tangible_asset"])
|
||||
}
|
||||
if old.WorkingCapital != Any2Float(item["working_capital"]) {
|
||||
upd["working_capital"] = Any2Float(item["working_capital"])
|
||||
}
|
||||
if old.NetworkingCapital != Any2Float(item["networking_capital"]) {
|
||||
upd["networking_capital"] = Any2Float(item["networking_capital"])
|
||||
}
|
||||
if old.InvestCapital != Any2Float(item["invest_capital"]) {
|
||||
upd["invest_capital"] = Any2Float(item["invest_capital"])
|
||||
}
|
||||
if old.RetainedEarnings != Any2Float(item["retained_earnings"]) {
|
||||
upd["retained_earnings"] = Any2Float(item["retained_earnings"])
|
||||
}
|
||||
|
||||
// 偿债能力指标
|
||||
if old.CurrentRatio != Any2Float(item["current_ratio"]) {
|
||||
upd["current_ratio"] = Any2Float(item["current_ratio"])
|
||||
}
|
||||
if old.QuickRatio != Any2Float(item["quick_ratio"]) {
|
||||
upd["quick_ratio"] = Any2Float(item["quick_ratio"])
|
||||
}
|
||||
if old.CashRatio != Any2Float(item["cash_ratio"]) {
|
||||
upd["cash_ratio"] = Any2Float(item["cash_ratio"])
|
||||
}
|
||||
if old.DebtToAssets != Any2Float(item["debt_to_assets"]) {
|
||||
upd["debt_to_assets"] = Any2Float(item["debt_to_assets"])
|
||||
}
|
||||
if old.AssetsToEqt != Any2Float(item["assets_to_eqt"]) {
|
||||
upd["assets_to_eqt"] = Any2Float(item["assets_to_eqt"])
|
||||
}
|
||||
if old.DpAssetsToEqt != Any2Float(item["dp_assets_to_eqt"]) {
|
||||
upd["dp_assets_to_eqt"] = Any2Float(item["dp_assets_to_eqt"])
|
||||
}
|
||||
if old.DebtToEqt != Any2Float(item["debt_to_eqt"]) {
|
||||
upd["debt_to_eqt"] = Any2Float(item["debt_to_eqt"])
|
||||
}
|
||||
if old.EqtToDebt != Any2Float(item["eqt_to_debt"]) {
|
||||
upd["eqt_to_debt"] = Any2Float(item["eqt_to_debt"])
|
||||
}
|
||||
if old.OcfToShortdebt != Any2Float(item["ocf_to_shortdebt"]) {
|
||||
upd["ocf_to_shortdebt"] = Any2Float(item["ocf_to_shortdebt"])
|
||||
}
|
||||
if old.EbitToInterest != Any2Float(item["ebit_to_interest"]) {
|
||||
upd["ebit_to_interest"] = Any2Float(item["ebit_to_interest"])
|
||||
}
|
||||
|
||||
// 运营能力指标
|
||||
if old.InvturnDays != Any2Float(item["invturn_days"]) {
|
||||
upd["invturn_days"] = Any2Float(item["invturn_days"])
|
||||
}
|
||||
if old.ArturnDays != Any2Float(item["arturn_days"]) {
|
||||
upd["arturn_days"] = Any2Float(item["arturn_days"])
|
||||
}
|
||||
if old.InvTurn != Any2Float(item["inv_turn"]) {
|
||||
upd["inv_turn"] = Any2Float(item["inv_turn"])
|
||||
}
|
||||
if old.ArTurn != Any2Float(item["ar_turn"]) {
|
||||
upd["ar_turn"] = Any2Float(item["ar_turn"])
|
||||
}
|
||||
if old.CaTurn != Any2Float(item["ca_turn"]) {
|
||||
upd["ca_turn"] = Any2Float(item["ca_turn"])
|
||||
}
|
||||
if old.FaTurn != Any2Float(item["fa_turn"]) {
|
||||
upd["fa_turn"] = Any2Float(item["fa_turn"])
|
||||
}
|
||||
if old.AssetsTurn != Any2Float(item["assets_turn"]) {
|
||||
upd["assets_turn"] = Any2Float(item["assets_turn"])
|
||||
}
|
||||
if old.TurnDays != Any2Float(item["turn_days"]) {
|
||||
upd["turn_days"] = Any2Float(item["turn_days"])
|
||||
}
|
||||
if old.TotalFaTrun != Any2Float(item["total_fa_trun"]) {
|
||||
upd["total_fa_trun"] = Any2Float(item["total_fa_trun"])
|
||||
}
|
||||
|
||||
// 盈利能力指标
|
||||
if old.NetprofitMargin != Any2Float(item["netprofit_margin"]) {
|
||||
upd["netprofit_margin"] = Any2Float(item["netprofit_margin"])
|
||||
}
|
||||
if old.GrossprofitMargin != Any2Float(item["grossprofit_margin"]) {
|
||||
upd["grossprofit_margin"] = Any2Float(item["grossprofit_margin"])
|
||||
}
|
||||
if old.CogsOfSales != Any2Float(item["cogs_of_sales"]) {
|
||||
upd["cogs_of_sales"] = Any2Float(item["cogs_of_sales"])
|
||||
}
|
||||
if old.ExpenseOfSales != Any2Float(item["expense_of_sales"]) {
|
||||
upd["expense_of_sales"] = Any2Float(item["expense_of_sales"])
|
||||
}
|
||||
if old.Roe != Any2Float(item["roe"]) {
|
||||
upd["roe"] = Any2Float(item["roe"])
|
||||
}
|
||||
if old.RoeWaa != Any2Float(item["roe_waa"]) {
|
||||
upd["roe_waa"] = Any2Float(item["roe_waa"])
|
||||
}
|
||||
if old.RoeDt != Any2Float(item["roe_dt"]) {
|
||||
upd["roe_dt"] = Any2Float(item["roe_dt"])
|
||||
}
|
||||
if old.Roa != Any2Float(item["roa"]) {
|
||||
upd["roa"] = Any2Float(item["roa"])
|
||||
}
|
||||
if old.Npta != Any2Float(item["npta"]) {
|
||||
upd["npta"] = Any2Float(item["npta"])
|
||||
}
|
||||
if old.Roic != Any2Float(item["roic"]) {
|
||||
upd["roic"] = Any2Float(item["roic"])
|
||||
}
|
||||
if old.RoaDp != Any2Float(item["roa_dp"]) {
|
||||
upd["roa_dp"] = Any2Float(item["roa_dp"])
|
||||
}
|
||||
|
||||
// 结构指标
|
||||
if old.CaToAssets != Any2Float(item["ca_to_assets"]) {
|
||||
upd["ca_to_assets"] = Any2Float(item["ca_to_assets"])
|
||||
}
|
||||
if old.NcaToAssets != Any2Float(item["nca_to_assets"]) {
|
||||
upd["nca_to_assets"] = Any2Float(item["nca_to_assets"])
|
||||
}
|
||||
if old.TbassetsToTotalassets != Any2Float(item["tbassets_to_totalassets"]) {
|
||||
upd["tbassets_to_totalassets"] = Any2Float(item["tbassets_to_totalassets"])
|
||||
}
|
||||
if old.IntToTalcap != Any2Float(item["int_to_talcap"]) {
|
||||
upd["int_to_talcap"] = Any2Float(item["int_to_talcap"])
|
||||
}
|
||||
if old.EqtToTalcapital != Any2Float(item["eqt_to_talcapital"]) {
|
||||
upd["eqt_to_talcapital"] = Any2Float(item["eqt_to_talcapital"])
|
||||
}
|
||||
if old.CurrentdebtToDebt != Any2Float(item["currentdebt_to_debt"]) {
|
||||
upd["currentdebt_to_debt"] = Any2Float(item["currentdebt_to_debt"])
|
||||
}
|
||||
if old.LongdebToDebt != Any2Float(item["longdeb_to_debt"]) {
|
||||
upd["longdeb_to_debt"] = Any2Float(item["longdeb_to_debt"])
|
||||
}
|
||||
if old.TangibleassetToDebt != Any2Float(item["tangibleasset_to_debt"]) {
|
||||
upd["tangibleasset_to_debt"] = Any2Float(item["tangibleasset_to_debt"])
|
||||
}
|
||||
|
||||
// 单季度指标
|
||||
if old.QOpincome != Any2Float(item["q_opincome"]) {
|
||||
upd["q_opincome"] = Any2Float(item["q_opincome"])
|
||||
}
|
||||
if old.QInvestincome != Any2Float(item["q_investincome"]) {
|
||||
upd["q_investincome"] = Any2Float(item["q_investincome"])
|
||||
}
|
||||
if old.QDtprofit != Any2Float(item["q_dtprofit"]) {
|
||||
upd["q_dtprofit"] = Any2Float(item["q_dtprofit"])
|
||||
}
|
||||
if old.QEps != Any2Float(item["q_eps"]) {
|
||||
upd["q_eps"] = Any2Float(item["q_eps"])
|
||||
}
|
||||
if old.QNetprofitMargin != Any2Float(item["q_netprofit_margin"]) {
|
||||
upd["q_netprofit_margin"] = Any2Float(item["q_netprofit_margin"])
|
||||
}
|
||||
if old.QGscaleprofitMargin != Any2Float(item["q_gsprofit_margin"]) {
|
||||
upd["q_gsprofit_margin"] = Any2Float(item["q_gsprofit_margin"])
|
||||
}
|
||||
if old.QExpToSales != Any2Float(item["q_exp_to_sales"]) {
|
||||
upd["q_exp_to_sales"] = Any2Float(item["q_exp_to_sales"])
|
||||
}
|
||||
if old.QRoe != Any2Float(item["q_roe"]) {
|
||||
upd["q_roe"] = Any2Float(item["q_roe"])
|
||||
}
|
||||
if old.QDtRoe != Any2Float(item["q_dt_roe"]) {
|
||||
upd["q_dt_roe"] = Any2Float(item["q_dt_roe"])
|
||||
}
|
||||
if old.QNpta != Any2Float(item["q_npta"]) {
|
||||
upd["q_npta"] = Any2Float(item["q_npta"])
|
||||
}
|
||||
|
||||
// 同比增长率
|
||||
if old.BasicEpsYoy != Any2Float(item["basic_eps_yoy"]) {
|
||||
upd["basic_eps_yoy"] = Any2Float(item["basic_eps_yoy"])
|
||||
}
|
||||
if old.DtEpsYoy != Any2Float(item["dt_eps_yoy"]) {
|
||||
upd["dt_eps_yoy"] = Any2Float(item["dt_eps_yoy"])
|
||||
}
|
||||
if old.CfpsYoy != Any2Float(item["cfps_yoy"]) {
|
||||
upd["cfps_yoy"] = Any2Float(item["cfps_yoy"])
|
||||
}
|
||||
if old.OpYoy != Any2Float(item["op_yoy"]) {
|
||||
upd["op_yoy"] = Any2Float(item["op_yoy"])
|
||||
}
|
||||
if old.EbtYoy != Any2Float(item["ebt_yoy"]) {
|
||||
upd["ebt_yoy"] = Any2Float(item["ebt_yoy"])
|
||||
}
|
||||
if old.NetprofitYoy != Any2Float(item["netprofit_yoy"]) {
|
||||
upd["netprofit_yoy"] = Any2Float(item["netprofit_yoy"])
|
||||
}
|
||||
if old.DtNetprofitYoy != Any2Float(item["dt_netprofit_yoy"]) {
|
||||
upd["dt_netprofit_yoy"] = Any2Float(item["dt_netprofit_yoy"])
|
||||
}
|
||||
if old.OcfYoy != Any2Float(item["ocf_yoy"]) {
|
||||
upd["ocf_yoy"] = Any2Float(item["ocf_yoy"])
|
||||
}
|
||||
if old.RoeYoy != Any2Float(item["roe_yoy"]) {
|
||||
upd["roe_yoy"] = Any2Float(item["roe_yoy"])
|
||||
}
|
||||
if old.BpsYoy != Any2Float(item["bps_yoy"]) {
|
||||
upd["bps_yoy"] = Any2Float(item["bps_yoy"])
|
||||
}
|
||||
if old.AssetsYoy != Any2Float(item["assets_yoy"]) {
|
||||
upd["assets_yoy"] = Any2Float(item["assets_yoy"])
|
||||
}
|
||||
if old.EqtYoy != Any2Float(item["eqt_yoy"]) {
|
||||
upd["eqt_yoy"] = Any2Float(item["eqt_yoy"])
|
||||
}
|
||||
if old.TrYoy != Any2Float(item["tr_yoy"]) {
|
||||
upd["tr_yoy"] = Any2Float(item["tr_yoy"])
|
||||
}
|
||||
if old.OrYoy != Any2Float(item["or_yoy"]) {
|
||||
upd["or_yoy"] = Any2Float(item["or_yoy"])
|
||||
}
|
||||
if old.EquityYoy != Any2Float(item["equity_yoy"]) {
|
||||
upd["equity_yoy"] = Any2Float(item["equity_yoy"])
|
||||
}
|
||||
|
||||
// 其他比率指标
|
||||
if old.ProfitToGr != Any2Float(item["profit_to_gr"]) {
|
||||
upd["profit_to_gr"] = Any2Float(item["profit_to_gr"])
|
||||
}
|
||||
if old.SaleexpToGr != Any2Float(item["saleexp_to_gr"]) {
|
||||
upd["saleexp_to_gr"] = Any2Float(item["saleexp_to_gr"])
|
||||
}
|
||||
if old.AdminexpOfGr != Any2Float(item["adminexp_of_gr"]) {
|
||||
upd["adminexp_of_gr"] = Any2Float(item["adminexp_of_gr"])
|
||||
}
|
||||
if old.FinaexpOfGr != Any2Float(item["finaexp_of_gr"]) {
|
||||
upd["finaexp_of_gr"] = Any2Float(item["finaexp_of_gr"])
|
||||
}
|
||||
if old.ImpaiTtm != Any2Float(item["impai_ttm"]) {
|
||||
upd["impai_ttm"] = Any2Float(item["impai_ttm"])
|
||||
}
|
||||
if old.GcOfGr != Any2Float(item["gc_of_gr"]) {
|
||||
upd["gc_of_gr"] = Any2Float(item["gc_of_gr"])
|
||||
}
|
||||
if old.OpOfGr != Any2Float(item["op_of_gr"]) {
|
||||
upd["op_of_gr"] = Any2Float(item["op_of_gr"])
|
||||
}
|
||||
if old.EbitOfGr != Any2Float(item["ebit_of_gr"]) {
|
||||
upd["ebit_of_gr"] = Any2Float(item["ebit_of_gr"])
|
||||
}
|
||||
if old.OpincomeOfEbt != Any2Float(item["opincome_of_ebt"]) {
|
||||
upd["opincome_of_ebt"] = Any2Float(item["opincome_of_ebt"])
|
||||
}
|
||||
if old.InvestincomeOfEbt != Any2Float(item["investincome_of_ebt"]) {
|
||||
upd["investincome_of_ebt"] = Any2Float(item["investincome_of_ebt"])
|
||||
}
|
||||
if old.NOpProfitOfEbt != Any2Float(item["n_op_profit_of_ebt"]) {
|
||||
upd["n_op_profit_of_ebt"] = Any2Float(item["n_op_profit_of_ebt"])
|
||||
}
|
||||
if old.TaxToEbt != Any2Float(item["tax_to_ebt"]) {
|
||||
upd["tax_to_ebt"] = Any2Float(item["tax_to_ebt"])
|
||||
}
|
||||
if old.DtprofitToProfit != Any2Float(item["dtprofit_to_profit"]) {
|
||||
upd["dtprofit_to_profit"] = Any2Float(item["dtprofit_to_profit"])
|
||||
}
|
||||
if old.SalescashToOr != Any2Float(item["salescash_to_or"]) {
|
||||
upd["salescash_to_or"] = Any2Float(item["salescash_to_or"])
|
||||
}
|
||||
if old.OcfToOr != Any2Float(item["ocf_to_or"]) {
|
||||
upd["ocf_to_or"] = Any2Float(item["ocf_to_or"])
|
||||
}
|
||||
if old.OcfToOpincome != Any2Float(item["ocf_to_opincome"]) {
|
||||
upd["ocf_to_opincome"] = Any2Float(item["ocf_to_opincome"])
|
||||
}
|
||||
if old.CapitalizedToDa != Any2Float(item["capitalized_to_da"]) {
|
||||
upd["capitalized_to_da"] = Any2Float(item["capitalized_to_da"])
|
||||
}
|
||||
if old.OcfToDebt != Any2Float(item["ocf_to_debt"]) {
|
||||
upd["ocf_to_debt"] = Any2Float(item["ocf_to_debt"])
|
||||
}
|
||||
if old.OcfToInterestdebt != Any2Float(item["ocf_to_interestdebt"]) {
|
||||
upd["ocf_to_interestdebt"] = Any2Float(item["ocf_to_interestdebt"])
|
||||
}
|
||||
if old.OcfToNetdebt != Any2Float(item["ocf_to_netdebt"]) {
|
||||
upd["ocf_to_netdebt"] = Any2Float(item["ocf_to_netdebt"])
|
||||
}
|
||||
if old.LongdebtToWorkingcapital != Any2Float(item["longdebt_to_workingcapital"]) {
|
||||
upd["longdebt_to_workingcapital"] = Any2Float(item["longdebt_to_workingcapital"])
|
||||
}
|
||||
if old.EbitdaToDebt != Any2Float(item["ebitda_to_debt"]) {
|
||||
upd["ebitda_to_debt"] = Any2Float(item["ebitda_to_debt"])
|
||||
}
|
||||
if old.OpToEbt != Any2Float(item["op_to_ebt"]) {
|
||||
upd["op_to_ebt"] = Any2Float(item["op_to_ebt"])
|
||||
}
|
||||
if old.NopToEbt != Any2Float(item["nop_to_ebt"]) {
|
||||
upd["nop_to_ebt"] = Any2Float(item["nop_to_ebt"])
|
||||
}
|
||||
if old.OcfToProfit != Any2Float(item["ocf_to_profit"]) {
|
||||
upd["ocf_to_profit"] = Any2Float(item["ocf_to_profit"])
|
||||
}
|
||||
if old.CashToLiqdebt != Any2Float(item["cash_to_liqdebt"]) {
|
||||
upd["cash_to_liqdebt"] = Any2Float(item["cash_to_liqdebt"])
|
||||
}
|
||||
if old.CashToLiqdebtWithinterest != Any2Float(item["cash_to_liqdebt_withinterest"]) {
|
||||
upd["cash_to_liqdebt_withinterest"] = Any2Float(item["cash_to_liqdebt_withinterest"])
|
||||
}
|
||||
if old.OpToLiqdebt != Any2Float(item["op_to_liqdebt"]) {
|
||||
upd["op_to_liqdebt"] = Any2Float(item["op_to_liqdebt"])
|
||||
}
|
||||
if old.OpToDebt != Any2Float(item["op_to_debt"]) {
|
||||
upd["op_to_debt"] = Any2Float(item["op_to_debt"])
|
||||
}
|
||||
if old.ProfitToOp != Any2Float(item["profit_to_op"]) {
|
||||
upd["profit_to_op"] = Any2Float(item["profit_to_op"])
|
||||
}
|
||||
|
||||
// 年度化指标
|
||||
if old.RoeYearly != Any2Float(item["roe_yearly"]) {
|
||||
upd["roe_yearly"] = Any2Float(item["roe_yearly"])
|
||||
}
|
||||
if old.Roa2Yearly != Any2Float(item["roa2_yearly"]) {
|
||||
upd["roa2_yearly"] = Any2Float(item["roa2_yearly"])
|
||||
}
|
||||
if old.RoaYearly != Any2Float(item["roa_yearly"]) {
|
||||
upd["roa_yearly"] = Any2Float(item["roa_yearly"])
|
||||
}
|
||||
if old.RoicYearly != Any2Float(item["roic_yearly"]) {
|
||||
upd["roic_yearly"] = Any2Float(item["roic_yearly"])
|
||||
}
|
||||
if old.RoeAvg != Any2Float(item["roe_avg"]) {
|
||||
upd["roe_avg"] = Any2Float(item["roe_avg"])
|
||||
}
|
||||
|
||||
// 单季度增长比率
|
||||
if old.QGrYoy != Any2Float(item["q_gr_yoy"]) {
|
||||
upd["q_gr_yoy"] = Any2Float(item["q_gr_yoy"])
|
||||
}
|
||||
if old.QGrQoq != Any2Float(item["q_gr_qoq"]) {
|
||||
upd["q_gr_qoq"] = Any2Float(item["q_gr_qoq"])
|
||||
}
|
||||
if old.QSalesYoy != Any2Float(item["q_sales_yoy"]) {
|
||||
upd["q_sales_yoy"] = Any2Float(item["q_sales_yoy"])
|
||||
}
|
||||
if old.QSalesQoq != Any2Float(item["q_sales_qoq"]) {
|
||||
upd["q_sales_qoq"] = Any2Float(item["q_sales_qoq"])
|
||||
}
|
||||
if old.QOpYoy != Any2Float(item["q_op_yoy"]) {
|
||||
upd["q_op_yoy"] = Any2Float(item["q_op_yoy"])
|
||||
}
|
||||
if old.QOpQoq != Any2Float(item["q_op_qoq"]) {
|
||||
upd["q_op_qoq"] = Any2Float(item["q_op_qoq"])
|
||||
}
|
||||
if old.QProfitYoy != Any2Float(item["q_profit_yoy"]) {
|
||||
upd["q_profit_yoy"] = Any2Float(item["q_profit_yoy"])
|
||||
}
|
||||
if old.QProfitQoq != Any2Float(item["q_profit_qoq"]) {
|
||||
upd["q_profit_qoq"] = Any2Float(item["q_profit_qoq"])
|
||||
}
|
||||
if old.QNetprofitYoy != Any2Float(item["q_netprofit_yoy"]) {
|
||||
upd["q_netprofit_yoy"] = Any2Float(item["q_netprofit_yoy"])
|
||||
}
|
||||
if old.QNetprofitQoq != Any2Float(item["q_netprofit_qoq"]) {
|
||||
upd["q_netprofit_qoq"] = Any2Float(item["q_netprofit_qoq"])
|
||||
}
|
||||
|
||||
// 单季度比率指标
|
||||
if old.QProfitToGr != Any2Float(item["q_profit_to_gr"]) {
|
||||
upd["q_profit_to_gr"] = Any2Float(item["q_profit_to_gr"])
|
||||
}
|
||||
if old.QSaleexpToGr != Any2Float(item["q_saleexp_to_gr"]) {
|
||||
upd["q_saleexp_to_gr"] = Any2Float(item["q_saleexp_to_gr"])
|
||||
}
|
||||
if old.QAdminexpToGr != Any2Float(item["q_adminexp_to_gr"]) {
|
||||
upd["q_adminexp_to_gr"] = Any2Float(item["q_adminexp_to_gr"])
|
||||
}
|
||||
if old.QFinaexpToGr != Any2Float(item["q_finaexp_to_gr"]) {
|
||||
upd["q_finaexp_to_gr"] = Any2Float(item["q_finaexp_to_gr"])
|
||||
}
|
||||
if old.QImpairToGrTtm != Any2Float(item["q_impair_to_gr_ttm"]) {
|
||||
upd["q_impair_to_gr_ttm"] = Any2Float(item["q_impair_to_gr_ttm"])
|
||||
}
|
||||
if old.QGcToGr != Any2Float(item["q_gc_to_gr"]) {
|
||||
upd["q_gc_to_gr"] = Any2Float(item["q_gc_to_gr"])
|
||||
}
|
||||
if old.QOpToGr != Any2Float(item["q_op_to_gr"]) {
|
||||
upd["q_op_to_gr"] = Any2Float(item["q_op_to_gr"])
|
||||
}
|
||||
if old.QOpincomeToEbt != Any2Float(item["q_opincome_to_ebt"]) {
|
||||
upd["q_opincome_to_ebt"] = Any2Float(item["q_opincome_to_ebt"])
|
||||
}
|
||||
if old.QInvestincomeToEbt != Any2Float(item["q_investincome_to_ebt"]) {
|
||||
upd["q_investincome_to_ebt"] = Any2Float(item["q_investincome_to_ebt"])
|
||||
}
|
||||
if old.QDtprofitToProfit != Any2Float(item["q_dtprofit_to_profit"]) {
|
||||
upd["q_dtprofit_to_profit"] = Any2Float(item["q_dtprofit_to_profit"])
|
||||
}
|
||||
if old.QSalescashToOr != Any2Float(item["q_salescash_to_or"]) {
|
||||
upd["q_salescash_to_or"] = Any2Float(item["q_salescash_to_or"])
|
||||
}
|
||||
if old.QOcfToSales != Any2Float(item["q_ocf_to_sales"]) {
|
||||
upd["q_ocf_to_sales"] = Any2Float(item["q_ocf_to_sales"])
|
||||
}
|
||||
if old.QOcfToOr != Any2Float(item["q_ocf_to_or"]) {
|
||||
upd["q_ocf_to_or"] = Any2Float(item["q_ocf_to_or"])
|
||||
}
|
||||
|
||||
// 其他
|
||||
if old.UpdateFlag != item["update_flag"].(string) {
|
||||
upd["update_flag"] = item["update_flag"].(string)
|
||||
}
|
||||
|
||||
// Only perform update if there are actual changes
|
||||
if len(upd) > 0 {
|
||||
impl.DBService.Model(&models.StockFinaIndicator{}).Where("ts_code=? and period=?", code, utils.String2Int(period)).Updates(upd)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user