842 lines
33 KiB
Go
842 lines
33 KiB
Go
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() {
|
|
var fCnt int64
|
|
impl.DBService.Model(&models.StockFinaIndicator{}).Where("ts_code=?", code).Count(&fCnt)
|
|
if fCnt >= 11 {
|
|
continue
|
|
}
|
|
|
|
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)
|
|
}
|
|
}
|