Переглянути джерело

移除图表刷新无用代码

hsun 3 роки тому
батько
коміт
96f859acb5

+ 0 - 29
models/tables/edb_data/create.go

@@ -1,30 +1 @@
 package edb_data
-
-import (
-	"hongze/hongze_yb/global"
-)
-
-func AddEdbDataThsBySql(sqlStr string) (err error) {
-	err = global.MYSQL["data"].Exec(sqlStr).Error
-	return
-}
-
-func AddEdbDataWindBySql(sqlStr string) (err error) {
-	err = global.MYSQL["data"].Exec(sqlStr).Error
-	return
-}
-
-func AddEdbDataPb(items []*EdbDataPb) (err error) {
-	err = global.MYSQL["data"].Model(EdbDataPb{}).Create(items).Error
-	return
-}
-
-func AddBaseFromSmmIndex(item *BaseFromSmmIndex) (lastId int64, err error) {
-	err = global.MYSQL["data"].Model(BaseFromSmmIndex{}).Create(item).Error
-	return
-}
-
-func AddBaseFromSmmData(item *BaseFromSmmData) (lastId int64, err error) {
-	err = global.MYSQL["data"].Model(BaseFromSmmData{}).Create(item).Error
-	return
-}

+ 0 - 755
models/tables/edb_data/query.go

@@ -6,7 +6,6 @@ import (
 	"hongze/hongze_yb/global"
 	"hongze/hongze_yb/utils"
 	"strconv"
-	"time"
 )
 
 // 指标数据->存储表
@@ -130,436 +129,6 @@ func GetEdbDataList(source, endInfoId int, startDate, endDate string) (list []*E
 	return
 }
 
-
-func GetEdbDataThsByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_ths WHERE edb_code = ? AND data_time = ? `
-	err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
-
-	return
-}
-
-func GetEdbDataWindByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_wind WHERE edb_code=? AND data_time=? `
-	err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
-
-	return
-}
-
-func GetEdbDataPbByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_pb WHERE edb_code=? AND data_time>=? `
-	err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
-
-	return
-}
-
-type ManualEdbdata struct {
-	TradeCode  string    `gorm:"column:TRADE_CODE" description:"指标编码"`
-	Dt         string    `gorm:"column:DT" description:"日期"`
-	Close      string    `gorm:"column:CLOSE" description:"值"`
-	ModifyTime time.Time `gorm:"column:modify_time:" description:"修改时间"`
-}
-
-func GetEdbdataManualByTradeCode(condition string, pars []interface{}) (item []*ManualEdbdata, err error) {
-	sql := ` SELECT  * FROM edbdata WHERE 1=1 `
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY DT DESC `
-	err = global.MYSQL["edb"].Raw(sql, pars).Scan(&item).Error
-
-	return
-}
-
-type EdbDataBase struct {
-	EdbDataId     int `gorm:"column:edb_data_id;primaryKey"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         string
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
-
-type lzSurveyData struct {
-	DataTime   string `gorm:"column:data_time" description:"日期"`
-	InputValue string `gorm:"column:input_value" description:"值"`
-}
-
-func GetLzSurveyDataByTradeCode(condition string, pars []interface{}) (item []*lzSurveyData, err error) {
-	sql := ` SELECT  a.* FROM longzhong_survey_data AS a
-				INNER JOIN longzhong_survey_product AS b ON a.survey_product_id=b.survey_product_id
-				WHERE 1=1 `
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY a.data_time DESC `
-	err = global.MYSQL["edb"].Raw(sql, pars).Scan(&item).Error
-
-	return
-}
-
-func GetEdbDataLzByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_lz WHERE edb_code=? AND data_time=? `
-	err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
-
-	return
-}
-
-type EdbDataPb struct {
-	EdbDataId     int `gorm:"column:edb_data_id;primaryKey"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	Ticker        string
-	Field         string
-	DataTimestamp int64
-}
-
-type BaseFromSmm struct {
-	BaseFromSmmId int `gorm:"column:base_from_smm_id;primaryKey"`
-	Aid           int
-	Name          string
-	Interface     string
-	ApiUpdate     int
-	ApiUpdateType string
-	ApiType       int
-	ApiTypeAll    string
-	Type1         string `gorm:"column:type_1"`
-	Type2         string `gorm:"column:type_2"`
-	Type3         string `gorm:"column:type_3"`
-	ApiStartTime  string
-	ApiUpdateTime string
-	StartTime     string
-	FinishTime    string
-	AuthModule    string
-	AuthLang      string
-	ApiLabel      string
-	Enable        string
-	EditPerson    string
-	EditTime      string
-	AuthDur       int
-	AuthDurType   string
-}
-
-type BaseFromSmmIndex struct {
-	BaseFromSmmIndexId int `gorm:"column:base_from_smm_index_id;primaryKey"`
-	Interface          string
-	Name               string
-	IndexCode          string
-	IndexName          string
-	Type1              string `gorm:"column:type_1"`
-	Type2              string `gorm:"column:type_2"`
-	Type3              string `gorm:"column:type_3"`
-	Frequency          string
-	Unit               string
-	ApiStartTime       string
-	ApiUpdateTime      string
-	StartTime          string
-	FinishTime         string
-	CreateTime         time.Time
-	ModifyTime         time.Time
-}
-
-type BaseFromSmmData struct {
-	SmmDataId          int `gorm:"column:smm_data_id;primaryKey"`
-	BaseFromSmmIndexId int
-	IndexCode          string
-	DataTime           string
-	Value              string
-	CreateTime         time.Time
-	ModifyTime         time.Time
-	DataTimestamp      int64
-}
-
-func GetBaseFromSmmBySmmCode(smmCode string) (item *BaseFromSmm, err error) {
-	sql := `SELECT * FROM base_from_smm WHERE interface = ?`
-	err = global.MYSQL["data"].Raw(sql, smmCode).Scan(&item).Error
-
-	return
-}
-
-func GetBaseFromSmmIndexBySmmCode(smmCode string) (list []*BaseFromSmmIndex, err error) {
-	sql := ` SELECT * FROM base_from_smm_index WHERE interface = ? `
-	err = global.MYSQL["data"].Raw(sql, smmCode).Scan(&list).Error
-
-	return
-}
-
-func GetBaseFromSmmDataAllByIndexCode(indexCode string) (list []*BaseFromSmmData, err error) {
-	sql := `SELECT * FROM base_from_smm_data WHERE index_code=? `
-	err = global.MYSQL["data"].Raw(sql, indexCode).Scan(&list).Error
-
-	return
-}
-
-func GetBaseFromSmmMaxOrMinDate(indexCode string) (min_date, max_date string, err error) {
-	sql := ` SELECT MIN(data_time) AS min_date FROM base_from_smm_data WHERE index_code=? `
-	err = global.MYSQL["data"].Raw(sql, indexCode).Scan(&min_date).Error
-	sql = ` SELECT MAX(data_time) AS max_date FROM base_from_smm_data WHERE index_code=? `
-	err = global.MYSQL["data"].Raw(sql, indexCode).Scan(&max_date).Error
-
-	return
-}
-
-type YsResult struct {
-	Code int64 `json:"Code"`
-	Data struct {
-		CompanyList []interface{} `json:"CompanyList"`
-		Content     [][]string    `json:"Content"`
-		Field       []struct {
-			ColIndex   int64  `json:"ColIndex"`
-			ColumnType string `json:"ColumnType"`
-			Info       string `json:"Info"`
-			IsDate     string `json:"IsDate"`
-			Name       string `json:"Name"`
-			Unit       string `json:"Unit"`
-			DBColName  string `json:"db_col_name"`
-		} `json:"Field"`
-		CountPage   int64  `json:"count_page"`
-		CurrentPage int64  `json:"current_page"`
-		Frequency   string `json:"frequency"`
-		Mindate     string `json:"mindate"`
-		PageNum     int64  `json:"page_num"`
-		Status      int64  `json:"status"`
-		TotalNum    int64  `json:"total_num"`
-	} `json:"Data"`
-	Msg string `json:"Msg"`
-}
-
-type BaseFromSmmDataSimple struct {
-	SmmDataId          int `gorm:"column:smm_data_id;primaryKey"`
-	BaseFromSmmIndexId int
-	IndexCode          string
-	DataTime           string
-	Value              string
-}
-
-type BaseFromDlDataSimple struct {
-	Id        int `gorm:"column:base_from_trade_dalian_index_id;primaryKey"`
-	DealCode  string
-	BuyCode   string
-	SoldCode  string
-	DataTime  string
-	DealValue string
-	BuyValue  string
-	SoldValue string
-}
-
-func GetDlDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromDlDataSimple, err error) {
-	sql := ` SELECT * FROM base_from_trade_dalian_index WHERE 1=1 `
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY data_time DESC `
-	err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
-
-	return
-}
-
-func GetEdbDataDlByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_dl WHERE edb_code=? AND data_time=? `
-	err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
-
-	return
-}
-
-type GlData struct {
-	InputValue string `gorm:"column:DATA_VALUE" description:"日期"`
-	DataTime   string `gorm:"column:DATA_DATE" description:"值"`
-}
-
-func GetGlDataByTradeCode(condition string, pars []interface{}) (item []*GlData, err error) {
-	condition += " AND IS_DELETE=0 "
-	sql := ` SELECT * FROM mb_index_main_data WHERE 1=1 `
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY PUBLISH_TIME DESC `
-	err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
-
-	return
-}
-
-func GetEdbDataGlByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_gl WHERE edb_code=? AND data_time=? `
-	err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
-
-	return
-}
-
-type EdbDataFromLt struct {
-	Close map[int64]interface{} `json:"CLOSE"`
-}
-
-type BaseFromZzDataSimple struct {
-	Id        int `gorm:"column:base_from_trade_zhengzhou_index_id;primaryKey"`
-	DealCode  string
-	BuyCode   string
-	SoldCode  string
-	DataTime  string
-	DealValue string
-	BuyValue  string
-	SoldValue string
-}
-
-func GetZzDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromZzDataSimple, err error) {
-	sql := ` SELECT * FROM base_from_trade_zhengzhou_index WHERE 1=1 `
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY data_time DESC `
-	err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
-
-	return
-}
-
-func GetEdbDataZzByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_zz WHERE edb_code=? AND data_time=? `
-	err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
-	return
-}
-
-type BaseFromShDataSimple struct {
-	Id        int `gorm:"column:base_from_trade_shanghai_index_id;primaryKey"`
-	DealCode  string
-	BuyCode   string
-	SoldCode  string
-	DataTime  string
-	DealValue string
-	BuyValue  string
-	SoldValue string
-}
-
-func GetShDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromShDataSimple, err error) {
-	sql := ` SELECT * FROM base_from_trade_shanghai_index WHERE 1=1 `
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY data_time DESC `
-	err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
-
-	return
-}
-
-func GetEdbDataShByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_sh WHERE edb_code=? AND data_time=? `
-	err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
-
-	return
-}
-
-type BaseFromCffexDataSimple struct {
-	Id        int `gorm:"column:base_from_trade_cffex_index_id;primaryKey"`
-	DealCode  string
-	BuyCode   string
-	SoldCode  string
-	DataTime  string
-	DealValue string
-	BuyValue  string
-	SoldValue string
-}
-
-func GetCffexDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromCffexDataSimple, err error) {
-	sql := ` SELECT * FROM base_from_trade_cffex_index WHERE 1=1 `
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY data_time DESC `
-	err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
-
-	return
-}
-
-func GetEdbDataCffexByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_cffex WHERE edb_code=? AND data_time=? `
-	err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
-
-	return
-}
-
-type BaseFromShfeDataSimple struct {
-	Id        int `gorm:"column:base_from_trade_ine_index_id;primaryKey"`
-	DealCode  string
-	BuyCode   string
-	SoldCode  string
-	DataTime  string
-	DealValue string
-	BuyValue  string
-	SoldValue string
-}
-
-func GetShfeDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromShfeDataSimple, err error) {
-	sql := ` SELECT * FROM base_from_trade_ine_index WHERE 1=1 `
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY data_time DESC `
-	err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
-
-	return
-}
-
-func GetEdbDataShfeByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_ine WHERE edb_code=? AND data_time=? `
-	err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
-
-	return
-}
-
-type BaseFromTradeEicIndex struct {
-	BaseFromEicIndexId     int `gorm:"column:base_from_eic_index_id;primaryKey"`
-	Country                string
-	Type                   string
-	EicCode                string
-	ShortName              string
-	Name                   string
-	Status                 string
-	GasDayStartedOn        string
-	GasInStorage           string
-	GasInStorageCode       string
-	Full                   string
-	FullCode               string
-	Trend                  string
-	TrendCode              string
-	Injection              string
-	InjectionCode          string
-	Withdrawal             string
-	WithdrawalCode         string
-	WorkingGasVolume       string
-	WorkingGasVolumeCode   string
-	InjectionCapacity      string
-	InjectionCapacityCode  string
-	WithdrawalCapacity     string
-	WithdrawalCapacityCode string
-	Info                   string
-	CreateTime             time.Time
-	ModifyTime             time.Time
-}
-
-func GetGieDataByTradeCode(condition string, pars []interface{}) (item []*BaseFromTradeEicIndex, err error) {
-	sql := ` SELECT * FROM base_from_trade_eic_index WHERE 1=1 `
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY gas_day_started_on DESC `
-	err = global.MYSQL["data"].Raw(sql, pars).Scan(&item).Error
-
-	return
-}
-
-func GetEdbDataGieByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_gie WHERE edb_code=? AND data_time=? `
-	err = global.MYSQL["data"].Raw(sql, edbCode, startDate).Scan(&count).Error
-
-	return
-}
-
 type EdbInfoMaxAndMinInfo struct {
 	MinDate     string  `description:"最小日期"`
 	MaxDate     string  `description:"最大日期"`
@@ -580,329 +149,5 @@ func GetEdbInfoMaxAndMinInfo(source int, edbCode string) (item *EdbInfoMaxAndMin
 	sql = fmt.Sprintf(sql, tableName)
 	err = global.MYSQL["data"].Raw(sql, edbCode).Scan(&latest_value).Error
 	item.LatestValue = latest_value
-	return
-}
-
-type EdbInfoCalculateDetail struct {
-	EdbInfoCalculateId int       `gorm:"primaryKey;column:edb_info_calculate_id"`
-	EdbInfoId          int       `description:"指标id"`
-	EdbCode            string    `description:"指标编码"`
-	FromEdbInfoId      int       `description:"计算指标id"`
-	FromEdbCode        string    `description:"计算指标编码"`
-	FromEdbName        string    `description:"计算指标名称"`
-	FromSource         int       `description:"计算指标来源"`
-	FromSourceName     string    `description:"计算指标来源名称"`
-	FromTag            string    `description:"来源指标标签"`
-	Sort               int       `description:"计算指标名称排序"`
-	CreateTime         time.Time `description:"创建时间"`
-	ModifyTime         time.Time `description:"修改时间"`
-	StartDate          string    `description:"开始日期"`
-	EndDate            string    `description:"结束日期"`
-	EdbType            int       `description:"指标类型:1:基础指标,2:计算指标"`
-}
-
-func GetEdbInfoCalculateDetail(edbInfoId, source int) (list []*EdbInfoCalculateDetail, err error) {
-	sql := ` SELECT a.*,b.start_date,b.end_date,b.edb_type FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? ORDER BY sort ASC `
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&list).Error
-
-	return
-}
-
-type EdbInfoSearchData struct {
-	DataTime string	 `description:"数据日期"`
-	Value    float64 `description:"数据"`
-}
-
-//order:1升序,其余值为降序
-func GetEdbDataListAll(condition string, pars []interface{}, source, order int) (item []*EdbInfoSearchData, err error) {
-	sql := ``
-	tableName := GetEdbDataTableName(source)
-	sql = ` SELECT * FROM %s WHERE 1=1 `
-	sql = fmt.Sprintf(sql, tableName)
-
-	if condition != "" {
-		sql += condition
-	}
-	if order == 1 {
-		sql += ` ORDER BY data_time ASC `
-	} else {
-		sql += ` ORDER BY data_time DESC `
-	}
-	err = global.MYSQL["data"].Raw(sql, pars...).Scan(&item).Error
-	// 格式化日期
-	if len(item) > 0 {
-		for _, row := range item {
-			if row.DataTime != "" {
-				row.DataTime = row.DataTime[:10]
-				//tempTime, _ := time.Parse("2006-01-02T00:00:00", row.DataTime)
-				//row.DataTime = tempTime.Format(utils.FormatDate)
-			}
-		}
-	}
-
-	return
-}
-
-
-type CalculateItems struct {
-	EdbInfoId int
-	DataMap   map[string]float64
-}
-
-type EdbInfoCalculateLjzzyDetail struct {
-	EdbInfoCalculateLjzzyId int       `gorm:"column:edb_info_calculate_ljzzy_id;primaryKey"`
-	EdbInfoId               int       `description:"指标id"`
-	EdbCode                 string    `description:"指标编码"`
-	FromEdbInfoId           int       `description:"计算指标id"`
-	FromEdbCode             string    `description:"计算指标编码"`
-	FromEdbName             string    `description:"计算指标名称"`
-	FromSource              int       `description:"计算指标来源"`
-	FromSourceName          string    `description:"计算指标来源名称"`
-	FromTag                 string    `description:"来源指标标签"`
-	Sort                    int       `description:"计算指标名称排序"`
-	CreateTime              time.Time `description:"创建时间"`
-	ModifyTime              time.Time `description:"修改时间"`
-	StartDate               string    `description:"开始日期"`
-	EndDate                 string    `description:"结束日期"`
-}
-
-func GetEdbInfoCalculateLjzzyDetail(edbInfoId int) (item *EdbInfoCalculateLjzzyDetail, err error) {
-	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? `
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&item).Error
-
-	return
-}
-
-
-type EdbInfoCalculateTbzDetail struct {
-	EdbInfoCalculateTbzId int       `gorm:"column:edb_info_calculate_tbz_id;primaryKey"`
-	EdbInfoId             int       `description:"指标id"`
-	EdbCode               string    `description:"指标编码"`
-	FromEdbInfoId         int       `description:"计算指标id"`
-	FromEdbCode           string    `description:"计算指标编码"`
-	FromEdbName           string    `description:"计算指标名称"`
-	FromSource            int       `description:"计算指标来源"`
-	FromSourceName        string    `description:"计算指标来源名称"`
-	FromTag               string    `description:"来源指标标签"`
-	Sort                  int       `description:"计算指标名称排序"`
-	CreateTime            time.Time `description:"创建时间"`
-	ModifyTime            time.Time `description:"修改时间"`
-	StartDate             string    `description:"开始日期"`
-	EndDate               string    `description:"结束日期"`
-}
-
-func GetEdbInfoCalculateTbzDetail(edbInfoId int) (item *EdbInfoCalculateTbzDetail, err error) {
-	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? `
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).First(&item).Error
-
-	return
-}
-
-type EdbInfoCalculateTczDetail struct {
-	EdbInfoCalculateTczId int       `gorm:"column:edb_info_calculate_tcz_id;primaryKey"`
-	EdbInfoId             int       `description:"指标id"`
-	EdbCode               string    `description:"指标编码"`
-	FromEdbInfoId         int       `description:"计算指标id"`
-	FromEdbCode           string    `description:"计算指标编码"`
-	FromEdbName           string    `description:"计算指标名称"`
-	FromSource            int       `description:"计算指标来源"`
-	FromSourceName        string    `description:"计算指标来源名称"`
-	FromTag               string    `description:"来源指标标签"`
-	Sort                  int       `description:"计算指标名称排序"`
-	CreateTime            time.Time `description:"创建时间"`
-	ModifyTime            time.Time `description:"修改时间"`
-	StartDate             string    `description:"开始日期"`
-	EndDate               string    `description:"结束日期"`
-}
-
-func GetEdbInfoCalculateTczDetail(edbInfoId int) (item *EdbInfoCalculateTczDetail, err error) {
-	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? `
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).First(&item).Error
-
-	return
-}
-
-type EdbInfoCalculateNszydpjjsDetail struct {
-	EdbInfoCalculateNszydpjjsId int       `gorm:"column:edb_info_calculate_nszydpjjs_id;primaryKey"`
-	EdbInfoId                   int       `description:"指标id"`
-	EdbCode                     string    `description:"指标编码"`
-	FromEdbInfoId               int       `description:"计算指标id"`
-	FromEdbCode                 string    `description:"计算指标编码"`
-	FromEdbName                 string    `description:"计算指标名称"`
-	FromSource                  int       `description:"计算指标来源"`
-	FromSourceName              string    `description:"计算指标来源名称"`
-	FromTag                     string    `description:"来源指标标签"`
-	Sort                        int       `description:"计算指标名称排序"`
-	CreateTime                  time.Time `description:"创建时间"`
-	ModifyTime                  time.Time `description:"修改时间"`
-	StartDate                   string    `description:"开始日期"`
-	EndDate                     string    `description:"结束日期"`
-}
-
-func GetEdbInfoCalculateNszydpjjsDetail(edbInfoId int) (item *EdbInfoCalculateNszydpjjsDetail, err error) {
-	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? `
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).First(&item).Error
-
-	return
-}
-
-type EdbInfoCalculateHbzDetail struct {
-	EdbInfoCalculateTbzId int       `gorm:"column:edb_info_calculate_tbz_id;primaryKey"`
-	EdbInfoId             int       `description:"指标id"`
-	EdbCode               string    `description:"指标编码"`
-	FromEdbInfoId         int       `description:"计算指标id"`
-	FromEdbCode           string    `description:"计算指标编码"`
-	FromEdbName           string    `description:"计算指标名称"`
-	FromSource            int       `description:"计算指标来源"`
-	FromSourceName        string    `description:"计算指标来源名称"`
-	FromTag               string    `description:"来源指标标签"`
-	Sort                  int       `description:"计算指标名称排序"`
-	CreateTime            time.Time `description:"创建时间"`
-	ModifyTime            time.Time `description:"修改时间"`
-	StartDate             string    `description:"开始日期"`
-	EndDate               string    `description:"结束日期"`
-}
-
-func GetEdbInfoCalculateHbzDetail(edbInfoId int) (item *EdbInfoCalculateTbzDetail, err error) {
-	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? `
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).First(&item).Error
-
-	return
-}
-
-
-type EdbInfoCalculateHczDetail struct {
-	EdbInfoCalculateHczId int       `gorm:"column:edb_info_calculate_hcz_id;primaryKey"`
-	EdbInfoId             int       `description:"指标id"`
-	EdbCode               string    `description:"指标编码"`
-	FromEdbInfoId         int       `description:"计算指标id"`
-	FromEdbCode           string    `description:"计算指标编码"`
-	FromEdbName           string    `description:"计算指标名称"`
-	FromSource            int       `description:"计算指标来源"`
-	FromSourceName        string    `description:"计算指标来源名称"`
-	FromTag               string    `description:"来源指标标签"`
-	Sort                  int       `description:"计算指标名称排序"`
-	CreateTime            time.Time `description:"创建时间"`
-	ModifyTime            time.Time `description:"修改时间"`
-	StartDate             string    `description:"开始日期"`
-	EndDate               string    `description:"结束日期"`
-}
-
-func GetEdbInfoCalculateHczDetail(edbInfoId int) (item *EdbInfoCalculateHczDetail, err error) {
-	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? `
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).First(&item).Error
-
-	return
-}
-
-
-type EdbInfoCalculateBpDetail struct {
-	EdbInfoCalculateBpId int       `gorm:"column:edb_info_calculate_bp_id;primaryKey"`
-	EdbInfoId            int       `description:"指标id"`
-	EdbCode              string    `description:"指标编码"`
-	FromEdbInfoId        int       `description:"计算指标id"`
-	FromEdbCode          string    `description:"计算指标编码"`
-	FromEdbName          string    `description:"计算指标名称"`
-	FromSource           int       `description:"计算指标来源"`
-	FromSourceName       string    `description:"计算指标来源名称"`
-	FromTag              string    `description:"来源指标标签"`
-	Sort                 int       `description:"计算指标名称排序"`
-	CreateTime           time.Time `description:"创建时间"`
-	ModifyTime           time.Time `description:"修改时间"`
-	StartDate            string    `description:"开始日期"`
-	EndDate              string    `description:"结束日期"`
-}
-
-func GetEdbInfoCalculateBpDetail(edbInfoId int) (item *EdbInfoCalculateTbzDetail, err error) {
-	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
-			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
-			WHERE a.edb_info_id=? `
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).First(&item).Error
-
-	return
-}
-
-// EdbDataCalculateZjpj 直接拼接数据结构体
-type EdbDataCalculateZjpj struct {
-	EdbDataId     int `gorm:"column:edb_data_id;primaryKey"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
-
-// GetAllEdbDataCalculateZjpjByEdbInfoId 根据指标id获取全部的数据
-func GetAllEdbDataCalculateZjpjByEdbInfoId(edbInfoId int) (items []*EdbDataCalculateZjpj, err error) {
-	sql := ` SELECT * FROM edb_data_calculate_zjpj WHERE edb_info_id=? ORDER BY data_time DESC `
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&items).Error
-
-	return
-}
-
-// EdbInfoCalculateMapping 计算指标于基础指标,关系表
-type EdbInfoCalculateMapping struct {
-	EdbInfoCalculateMappingId int       `gorm:"column:edb_info_calculate_mapping_id;primaryKey"`
-	EdbInfoId                 int       `description:"计算指标id"`
-	Source                    int       `description:"计算指标来源"`
-	SourceName                string    `description:"计算指标来源名称"`
-	EdbCode                   string    `description:"计算指标编码"`
-	FromEdbInfoId             int       `description:"基础指标id"`
-	FromEdbCode               string    `description:"基础指标编码"`
-	FromEdbName               string    `description:"基础指标名称"`
-	FromSource                int       `description:"基础指标来源"`
-	FromSourceName            string    `description:"基础指标来源名称"`
-	FromTag                   string    `description:"来源指标标签"`
-	Sort                      int       `description:"计算指标名称排序"`
-	CreateTime                time.Time `description:"创建时间"`
-	ModifyTime                time.Time `description:"修改时间"`
-}
-
-// GetEdbInfoCalculateListByCondition 获取指标关系列表
-func GetEdbInfoCalculateListByCondition(condition string, pars []interface{}) (items []*EdbInfoCalculateMapping, err error) {
-	sql := ` SELECT * FROM edb_info_calculate_mapping WHERE 1=1 `
-	if condition != "" {
-		sql += condition
-	}
-	err = global.MYSQL["data"].Raw(sql, pars).Scan(&items).Error
-
-	return
-}
-
-// EdbDataCalculateLjztbpj 累计值同比拼接数据结构体
-type EdbDataCalculateLjztbpj struct {
-	EdbDataId     int `gorm:"column:edb_data_id;primaryKey"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
-
-// GetAllEdbDataCalculateLjztbpjByEdbInfoId 根据指标id获取全部的数据
-func GetAllEdbDataCalculateLjztbpjByEdbInfoId(edbInfoId int) (items []*EdbDataCalculateLjztbpj, err error) {
-	sql := ` SELECT * FROM edb_data_calculate_ljztbpj WHERE edb_info_id=? ORDER BY data_time DESC `
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&items).Error
-
 	return
 }

+ 0 - 42
models/tables/edb_data/update.go

@@ -2,48 +2,6 @@ package edb_data
 
 import "hongze/hongze_yb/global"
 
-func ModifyEdbDataThs(edbInfoId int64, dataTime string, value float64) (err error) {
-	sql := ` UPDATE edb_data_ths SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	err = global.MYSQL["data"].Exec(sql, value, edbInfoId, dataTime).Error
-
-	return
-}
-
-func ModifyEdbDataWind(edbInfoId int64, dataTime string, value float64) (err error) {
-	sql := ` UPDATE edb_data_wind SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	err = global.MYSQL["data"].Exec(sql, value, edbInfoId, dataTime).Error
-
-	return
-}
-
-func ModifyEdbDataPb(edbInfoId int, dataTime string, value float64) (err error) {
-	sql := ` UPDATE edb_data_pb SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	err = global.MYSQL["data"].Exec(sql, value, edbInfoId, dataTime).Error
-
-	return
-}
-
-func ModifyBaseFromSmmData(smmDataId int, value string) (err error) {
-	sql := `UPDATE base_from_smm_data SET value=?,modify_time=NOW() WHERE smm_data_id=? `
-	err = global.MYSQL["data"].Exec(sql, value, smmDataId).Error
-
-	return
-}
-
-func ModifyBaseFromSmmMinDateAndMaxDate(baseFromSmmIndexId int, minDate, maxDate string) (err error) {
-	sql := ` UPDATE base_from_smm_index SET start_date=?,end_date=?,modify_time=NOW() WHERE base_from_smm_index_id=? `
-	err = global.MYSQL["data"].Exec(sql, minDate, maxDate, baseFromSmmIndexId).Error
-
-	return
-}
-
-func ModifyEdbDataGl(edbInfoId int64, dataTime, value string) (err error) {
-	sql := ` UPDATE edb_data_gl SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	err = global.MYSQL["data"].Exec(sql, value, edbInfoId, dataTime).Error
-
-	return
-}
-
 func ModifyEdbInfoMaxAndMinInfo(edbInfoId int, item *EdbInfoMaxAndMinInfo) (err error) {
 	sql := ` UPDATE edb_info SET start_date=?,end_date=?,min_value=?,max_value=?,is_update=2,latest_date=?,latest_value=?,modify_time=NOW() WHERE edb_info_id=? `
 	err = global.MYSQL["data"].Exec(sql, item.MinDate, item.MaxDate, item.MinValue, item.MaxValue, item.MaxDate, item.LatestValue, edbInfoId).Error

+ 0 - 376
services/chart/chart_info.go

@@ -151,382 +151,6 @@ func ModifyChartInfoAndMapping(edbInfoIdStr string, req *chartInfoModel.SaveChar
 	return
 }
 
-// RefreshChartInfo 刷新图表
-func RefreshChartInfo(chartInfoId int) (err error) {
-	var errMsg string
-	defer func() {
-		if err != nil {
-			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "ChartInfoRefresh:"+errMsg, utils.EmailSendToUsers)
-			fmt.Println("ChartInfoRefresh Err:" + errMsg)
-		}
-	}()
-
-	// 获取需要刷新的指标
-	baseEdbInfoArr, calculateInfoArr, err := GetChartInfoRefreshData(chartInfoId)
-	if err != nil {
-		errMsg = "获取需要刷新的指标失败:Err:" + err.Error()
-		return
-	}
-
-	newBaseEdbInfoArr := make([]*edbInfoModel.EdbInfo, 0)
-	baseMap := make(map[int]*edbInfoModel.EdbInfo)
-	for _, bv := range baseEdbInfoArr {
-		if _, ok := baseMap[bv.EdbInfoId]; !ok {
-			newBaseEdbInfoArr = append(newBaseEdbInfoArr, bv)
-		}
-		baseMap[bv.EdbInfoId] = bv
-	}
-
-	fmt.Println("calculateInfoArr:", len(calculateInfoArr))
-
-	newCalculateInfoArr := make([]*edbInfoModel.EdbInfo, 0)
-	calculateMap := make(map[int]*edbInfoModel.EdbInfo)
-	var calculateArr []int
-	for _, bv := range calculateInfoArr {
-		if _, ok := calculateMap[bv.EdbInfoId]; !ok {
-			newCalculateInfoArr = append(newCalculateInfoArr, bv)
-			calculateArr = append(calculateArr, bv.EdbInfoId)
-		}
-		calculateMap[bv.EdbInfoId] = bv
-	}
-	sort.Ints(calculateArr)
-
-	var startDate string
-	for _, bv := range newBaseEdbInfoArr {
-		source := bv.Source
-		edbInfoId := bv.EdbInfoId
-		edbCode := bv.EdbCode
-		startDate = bv.StartDate.Format(utils.FormatDate)
-		sTime, err := time.Parse(utils.FormatDate, bv.EndDate.Format(utils.FormatDate))
-		if err != nil {
-			return err
-		}
-		startDate = sTime.Format(utils.FormatDate)
-
-		fmt.Println("source:", source)
-
-		if source == utils.DATA_SOURCE_THS {
-			endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
-			fmt.Println("DO:RefreshEdbDataByThs")
-			err = RefreshEdbDataByThs(edbInfoId, edbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshEdbDataByThs Err:" + err.Error()
-			}
-		} else if source == utils.DATA_SOURCE_WIND {
-			endDate := time.Now().Format(utils.FormatDate)
-			fmt.Println("DO:RefreshEdbDataByWind")
-			err = RefreshEdbDataByWind(edbInfoId, edbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshEdbDataByWind Err:" + err.Error()
-			}
-		} else if source == utils.DATA_SOURCE_PB {
-			startDate := sTime.Format(utils.FormatDateUnSpace)
-			endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDateUnSpace)
-			fmt.Println("DO:RefreshEdbDataByPb")
-			err = RefreshEdbDataByPb(edbInfoId, edbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshEdbDataByPb Err:" + err.Error()
-			}
-		} else if source == utils.DATA_SOURCE_MANUAL {
-			fmt.Println("DO:RefreshAllEdbDataByManual:" + edbCode)
-			err = RefreshAllEdbDataByManual(edbInfoId, bv.Source, edbCode)
-			if err != nil {
-				errMsg = "RefreshEdbDataByManual Err:" + err.Error()
-			}
-		} else if source == utils.DATA_SOURCE_LZ {
-			endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
-			fmt.Println("DO:RefreshEdbDataByLz")
-			err = RefreshEdbDataByLz(edbInfoId, edbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshEdbDataByLz Err:" + err.Error()
-			}
-		} else if source == utils.DATA_SOURCE_YS {
-			endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
-			fmt.Println("DO:RefreshAllEdbDataByYs")
-			err = RefreshAllEdbDataByYs(edbInfoId, source, edbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshEdbDataByYs Err:" + err.Error()
-			}
-		} else if source == utils.DATA_SOURCE_GL {
-			endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
-			fmt.Println("DO:RefreshEdbDataByGl")
-			err = RefreshEdbDataByGl(edbInfoId, edbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshEdbDataByGl Err:" + err.Error()
-			}
-		} else if source == utils.DATA_SOURCE_LT {
-			endDate := time.Now().Format(utils.FormatDate)
-			fmt.Println("DO:RefreshAllEdbDataByLt")
-			err = RefreshAllEdbDataByLt(edbInfoId, source, edbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshAllEdbDataByLT Err:" + err.Error()
-			}
-		} else if source == utils.DATA_SOURCE_ZZ {
-			endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
-			fmt.Println("DO:RefreshEdbDataByZz")
-			err = RefreshEdbDataByZz(edbInfoId, edbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshAllEdbDataByZz Err:" + err.Error()
-			}
-		} else if source == utils.DATA_SOURCE_DL {
-			endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
-			fmt.Println("DO:RefreshEdbDataByDl")
-			err = RefreshEdbDataByDl(edbInfoId, edbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshAllEdbDataByDl Err:" + err.Error()
-			}
-		} else if source == utils.DATA_SOURCE_SH {
-			endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
-			fmt.Println("DO:RefreshEdbDataBySh")
-			err = RefreshEdbDataBySh(edbInfoId, edbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshAllEdbDataBySh Err:" + err.Error()
-			}
-		} else if source == utils.DATA_SOURCE_CFFEX {
-			endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
-			fmt.Println("DO:RefreshEdbDataByCffex")
-			err = RefreshEdbDataByCffex(edbInfoId, edbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshAllEdbDataByCffex Err:" + err.Error()
-			}
-		} else if source == utils.DATA_SOURCE_SHFE {
-			endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
-			fmt.Println("DO:RefreshEdbDataByShfe")
-			err = RefreshEdbDataByShfe(edbInfoId, edbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshAllEdbDataByShfe Err:" + err.Error()
-			}
-		} else if source == utils.DATA_SOURCE_GIE {
-			endDate := time.Now().AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate)
-			fmt.Println("DO:RefreshEdbDataByGie")
-			err = RefreshEdbDataByGie(edbInfoId, edbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshEdbDataByGie Err:" + err.Error()
-			}
-		}
-
-		maxAndMinItem, err := edbDataModel.GetEdbInfoMaxAndMinInfo(source, edbCode)
-		if err != nil {
-			return err
-		}
-		if maxAndMinItem != nil {
-			err = edbDataModel.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
-			if err != nil {
-				return err
-			}
-		}
-	}
-
-	endDate := "" //计算指标不限制日期
-	//刷新相关计算指标
-
-	for _, v := range calculateArr {
-		edbInfo := calculateMap[v]
-		if edbInfo == nil {
-			return err
-		}
-		edbInfoId := edbInfo.EdbInfoId
-		source := edbInfo.Source
-		edbCode := edbInfo.EdbCode
-
-		if source == utils.DATA_SOURCE_CALCULATE {
-			startDate = edbInfo.StartDate.Format(utils.FormatDate)
-			sTime, err := time.Parse(utils.FormatDate, edbInfo.EndDate.Format(utils.FormatDate))
-			if err != nil {
-				return err
-			}
-			startDate = sTime.Format(utils.FormatDate)
-
-			var edbInfoIdBytes []string
-			calculateMap, err := edbDataModel.GetEdbInfoCalculateDetail(edbInfoId, edbInfo.Source)
-			if err != nil {
-				errMsg = "GetEdbInfoCalculateDetail Err:" + err.Error()
-				return err
-			}
-			var formulaStr string
-			edbInfoList := make([]*edbInfoModel.EdbInfo, 0)
-
-			for _, v := range calculateMap {
-				formulaStr += v.FromTag + ","
-				edbInfoIdBytes = append(edbInfoIdBytes, v.FromTag)
-				edbInfo, _ := edbInfoModel.GetEdbInfoById(v.FromEdbInfoId)
-				edbInfoList = append(edbInfoList, edbInfo)
-			}
-			fmt.Println("DO:RefreshAllCalculate")
-			err = RefreshAllCalculate(edbInfoList, int(edbInfoId), source, edbInfo.EdbCode, edbInfo.CalculateFormula, startDate, endDate, edbInfoIdBytes)
-			if err != nil {
-				errMsg = "RefreshCalculate Err:" + err.Error()
-				return err
-			}
-		} else if source == utils.DATA_SOURCE_CALCULATE_LJZZY { //刷新累计值转月值
-			fmt.Println("DO:GetEdbInfoCalculateLjzzyDetail")
-			calculateLjzzy, err := edbDataModel.GetEdbInfoCalculateLjzzyDetail(edbInfoId)
-			if err != nil {
-				errMsg = "GetEdbInfoCalculateLjzzyDetail Err:" + err.Error()
-				return err
-			}
-			fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateLjzzy.FromEdbInfoId)
-			if err != nil {
-				errMsg = "GetEdbInfoById Err:" + err.Error()
-				return err
-			}
-			startDate = edbInfo.StartDate.Format(utils.FormatDate)
-			endDate = time.Now().Format(utils.FormatDate)
-			fmt.Println("DO:RefreshAllCalculateLjzzy")
-			err = RefreshAllCalculateLjzzy(edbInfoId, source, fromEdbInfo, calculateLjzzy.EdbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshAllCalculateLjzzy Err:" + err.Error()
-				return err
-			}
-		} else if source == utils.DATA_SOURCE_CALCULATE_TBZ { //刷新同比值
-			calculateTbz, err := edbDataModel.GetEdbInfoCalculateTbzDetail(edbInfoId)
-			if err != nil {
-				errMsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
-				return err
-			}
-			fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateTbz.FromEdbInfoId)
-			if err != nil {
-				errMsg = "GetEdbInfoById Err:" + err.Error()
-				return err
-			}
-			startDate = edbInfo.StartDate.Format(utils.FormatDate)
-			endDate = time.Now().Format(utils.FormatDate)
-			fmt.Println("DO:RefreshAllCalculateTbz")
-			err = RefreshAllCalculateTbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshAllCalculateTbz Err:" + err.Error()
-				return err
-			}
-		} else if source == utils.DATA_SOURCE_CALCULATE_TCZ { //同差值
-			calculateTcz, err := edbDataModel.GetEdbInfoCalculateTczDetail(edbInfoId)
-			if err != nil {
-				errMsg = "GetEdbInfoCalculateTczDetail Err:" + err.Error()
-				return err
-			}
-			fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateTcz.FromEdbInfoId)
-			if err != nil {
-				errMsg = "GetEdbInfoById Err:" + err.Error()
-				return err
-			}
-			startDate = edbInfo.StartDate.Format(utils.FormatDate)
-			endDate = time.Now().Format(utils.FormatDate)
-			fmt.Println("DO:RefreshAllCalculateTcz")
-			err = RefreshAllCalculateTcz(edbInfoId, source, fromEdbInfo, calculateTcz.EdbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshCalculateTcz Err:" + err.Error()
-				return err
-			}
-		} else if source == utils.DATA_SOURCE_CALCULATE_NSZYDPJJS { //N数值移动平均计算
-			calculateNszydpjjs, err := edbDataModel.GetEdbInfoCalculateNszydpjjsDetail(edbInfoId)
-			if err != nil {
-				errMsg = "GetEdbInfoCalculateNszydpjjsDetail Err:" + err.Error()
-				return err
-			}
-			fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateNszydpjjs.FromEdbInfoId)
-			if err != nil {
-				errMsg = "GetEdbInfoById Err:" + err.Error()
-				return err
-			}
-			formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
-			startDate = edbInfo.StartDate.Format(utils.FormatDate)
-			fmt.Println("DO:RefreshAllCalculateNszydpjjs")
-			err = RefreshAllCalculateNszydpjjs(edbInfoId, edbInfo.Source, formulaInt, fromEdbInfo, calculateNszydpjjs.EdbCode, startDate)
-			if err != nil {
-				errMsg = "RefreshCalculateNszydpjjs Err:" + err.Error()
-				return err
-			}
-		} else if source == utils.DATA_SOURCE_CALCULATE_HBZ { //刷新环比值
-			calculateTbz, err := edbDataModel.GetEdbInfoCalculateHbzDetail(edbInfoId)
-			if err != nil {
-				errMsg = "GetEdbInfoCalculateHbzDetail Err:" + err.Error()
-				return err
-			}
-			fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateTbz.FromEdbInfoId)
-			if err != nil {
-				errMsg = "GetEdbInfoById Err:" + err.Error()
-				return err
-			}
-			startDate = edbInfo.StartDate.Format(utils.FormatDate)
-			endDate = time.Now().Format(utils.FormatDate)
-			formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
-			fmt.Println("DO:RefreshAllCalculateHbz")
-			err = RefreshAllCalculateHbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
-			if err != nil {
-				errMsg = "RefreshAllCalculateHbz Err:" + err.Error()
-				return err
-			}
-		} else if source == utils.DATA_SOURCE_CALCULATE_HCZ { //刷新环差值
-			calculateTbz, err := edbDataModel.GetEdbInfoCalculateHczDetail(edbInfoId)
-			if err != nil {
-				errMsg = "GetEdbInfoCalculateHczDetail Err:" + err.Error()
-				return err
-			}
-			fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateTbz.FromEdbInfoId)
-			if err != nil {
-				errMsg = "GetEdbInfoById Err:" + err.Error()
-				return err
-			}
-			startDate = edbInfo.StartDate.Format(utils.FormatDate)
-			endDate = time.Now().Format(utils.FormatDate)
-			formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
-			fmt.Println("DO:RefreshAllCalculateHcz")
-			err = RefreshAllCalculateHcz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
-			if err != nil {
-				errMsg = "RefreshAllCalculateHcz Err:" + err.Error()
-				return err
-			}
-		} else if source == utils.DATA_SOURCE_CALCULATE_BP { //刷新变频
-			calculateTbz, err := edbDataModel.GetEdbInfoCalculateBpDetail(edbInfoId)
-			if err != nil {
-				errMsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
-				return err
-			}
-			fromEdbInfo, err := edbInfoModel.GetEdbInfoById(calculateTbz.FromEdbInfoId)
-			if err != nil {
-				errMsg = "GetEdbInfoById Err:" + err.Error()
-				return err
-			}
-			startDate = edbInfo.StartDate.Format(utils.FormatDate)
-			endDate = time.Now().Format(utils.FormatDate)
-			fmt.Println("DO:RefreshAllCalculateBp")
-			err = RefreshAllCalculateBp(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
-			if err != nil {
-				errMsg = "RefreshAllCalculateBp Err:" + err.Error()
-				return err
-			}
-		} else if source == utils.DATA_SOURCE_CALCULATE_ZJPJ { //刷新直接拼接数据
-			fmt.Println("DO:RefreshAllCalculateZjpj")
-			err = RefreshAllCalculateZjpj(edbInfo)
-			if err != nil {
-				errMsg = "RefreshAllCalculateZjpj Err:" + err.Error()
-				return err
-			}
-		} else if source == utils.DATA_SOURCE_CALCULATE_LJZTBPJ { //刷新累计值同比拼接数据
-			fmt.Println("DO:RefreshAllCalculateLjztbpj")
-			err = RefreshAllCalculateLjztbpj(edbInfo)
-			if err != nil {
-				errMsg = "RefreshAllCalculateLjztbpj Err:" + err.Error()
-				return err
-			}
-		}
-
-		maxAndMinItem, err := edbDataModel.GetEdbInfoMaxAndMinInfo(source, edbCode)
-		if err != nil {
-			return err
-		}
-
-		if maxAndMinItem != nil {
-			err = edbDataModel.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
-			if err != nil {
-				return err
-			}
-		}
-		fmt.Println("end calculateArr:", v, time.Now())
-	}
-
-	return
-}
-
 // GetChartInfoRefreshData 获取需要刷新的指标
 func GetChartInfoRefreshData(chartInfoId int) (baseEdbInfoArr, calculateInfoArr []*edbInfoModel.EdbInfo, err error) {
 	sql := ` SELECT b.* FROM chart_edb_mapping AS a

+ 0 - 3665
services/chart/edb_data.go

@@ -1,3680 +1,15 @@
 package chart
 
 import (
-	"crypto/md5"
-	"encoding/hex"
 	"encoding/json"
-	"errors"
 	"fmt"
-	"github.com/shopspring/decimal"
-	"github.com/yidane/formula"
 	"hongze/hongze_yb/global"
-	edbDataModel "hongze/hongze_yb/models/tables/edb_data"
-	edbInfoModel "hongze/hongze_yb/models/tables/edb_info"
 	"hongze/hongze_yb/utils"
 	"io/ioutil"
 	"net/http"
-	"net/url"
-	"reflect"
-	"sort"
-	"strconv"
 	"strings"
-	"time"
 )
 
-type EdbDataFromThs struct {
-	DataVol   int64       	`json:"dataVol"`
-	Errmsg    string      	`json:"errmsg"`
-	Errorcode int64       	`json:"errorcode"`
-	Perf      interface{} 	`json:"perf"`
-	Tables    []struct {
-		ID    []string  	`json:"id"`
-		Time  []string  	`json:"time"`
-		Value []float64 	`json:"value"`
-	}						`json:"tables"`
-}
-
-func RefreshEdbDataByThs(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	HzServerDataUrl := ""
-	if global.CONFIG.Serve.RunMode == "release" {
-		HzServerDataUrl = "http://172.19.173.231:7000/"
-	} else {
-		HzServerDataUrl = "http://139.196.136.213:7000/"
-	}
-
-	thsUrl := HzServerDataUrl + `edbInfo/ths?EdbCode=%s&StartDate=%s&EndDate=%s`
-	thsUrl = fmt.Sprintf(thsUrl, edbCode, startDate, endDate)
-	//utils.FileLog.Info("thsUrl:%s", thsUrl)
-
-	reqRes, err := http.Get(thsUrl)
-	if err != nil {
-		return
-	}
-	defer reqRes.Body.Close()
-	body, err := ioutil.ReadAll(reqRes.Body)
-	if err != nil {
-		return
-	}
-
-	fmt.Println("GetEdbDataByThs body:")
-	fmt.Println(string(body))
-
-	item := new(EdbDataFromThs)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		return
-	}
-	if item.Errorcode != 0 {
-		err = errors.New(string(body))
-		return
-	}
-	if len(item.Tables) > 0 {
-		table := item.Tables[0]
-		dataLen := len(table.Time)
-		addSql := ` INSERT INTO edb_data_ths(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-		nowStr := time.Now().Format(utils.FormatDateTime)
-		var isAdd bool
-		for i := 0; i < dataLen; i++ {
-			eDate := table.Time[i]
-			sValue := table.Value[i]
-
-			count, err := edbDataModel.GetEdbDataThsByCodeAndDate(edbCode, eDate)
-			if err != nil && err != utils.ErrNoRow {
-				return err
-			}
-			if count <= 0 {
-				dataTime, err := time.Parse(utils.FormatDate, eDate)
-				if err != nil {
-
-				}
-				timestamp := dataTime.UnixNano() / 1e6
-				timeStr := fmt.Sprintf("%d", timestamp)
-
-				addSql += "("
-				addSql += strconv.Itoa(edbInfoId) + "," + "'" + edbCode + "'" + "," + "'" + eDate + "'" + "," + utils.SubFloatToString(sValue, 30) + "," + "'" + nowStr + "'" +
-					"," + "'" + nowStr + "'"
-				addSql += "," + "'" + timeStr + "'"
-				addSql += "),"
-				isAdd = true
-			} else {
-				err = edbDataModel.ModifyEdbDataThs(int64(edbInfoId), eDate, sValue)
-				if err != nil {
-					return err
-				}
-			}
-		}
-
-		if isAdd {
-			addSql = strings.TrimRight(addSql, ",")
-			err = edbDataModel.AddEdbDataThsBySql(addSql)
-			if err != nil {
-				fmt.Println("AddEdbDataThs Err", err.Error())
-				return
-			}
-		}
-	}
-
-	return
-}
-
-type EdbDataFromWind struct {
-	Close  map[string]float64 `json:"CLOSE"`
-	Dt     map[string]int64   `json:"DT"`
-	ErrMsg string
-}
-
-func RefreshEdbDataByWind(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	defer func() {
-		if err != nil {
-			fmt.Println("GetEdbDataByWind Err:" + err.Error())
-		}
-	}()
-
-	fmt.Println("startDate,endDate:",startDate,endDate)
-
-	thsUrl := utils.Hz_Data_Url + `edbInfo/wind?EdbCode=%s&StartDate=%s&EndDate=%s`
-	thsUrl = fmt.Sprintf(thsUrl, edbCode, startDate, endDate)
-	//utils.FileLog.Info("thsUrl:%s", thsUrl)
-
-	reqRes, err := http.Get(thsUrl)
-	if err != nil {
-		return
-	}
-	defer reqRes.Body.Close()
-	body, err := ioutil.ReadAll(reqRes.Body)
-	if err != nil {
-		return
-	}
-	
-	fmt.Println("GetEdbDataByThs body:")
-	fmt.Println(string(body))
-	//utils.FileLog.Info("wind result:"+string(body))
-
-	item := new(EdbDataFromWind)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		return
-	}
-	addSql := ` INSERT INTO edb_data_wind(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	nowStr := time.Now().Format(utils.FormatDateTime)
-	var isAdd bool
-	for k, v := range item.Dt {
-		timeStr := fmt.Sprintf("%d", v)
-
-		v = v / 1000
-		t := time.Unix(v, 0)
-		dateTime := t.Format(utils.FormatDate)
-		val := item.Close[k]
-
-		count, err := edbDataModel.GetEdbDataWindByCodeAndDate(edbCode, dateTime)
-		if err != nil && err != utils.ErrNoRow {
-			return err
-		}
-		if count <= 0 {
-			isAdd = true
-			fmt.Println(dateTime)
-			addSql += "("
-			addSql += strconv.Itoa(edbInfoId) + "," + "'" + edbCode + "'" + "," + "'" + dateTime + "'" + "," + utils.SubFloatToString(val, 30) + "," + "'" + nowStr + "'" +
-				"," + "'" + nowStr + "'"
-			addSql += "," + "'" + timeStr + "'"
-			addSql += "),"
-		} else {
-			err = edbDataModel.ModifyEdbDataWind(int64(edbInfoId), dateTime, val)
-			if err != nil {
-				return err
-			}
-		}
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = edbDataModel.AddEdbDataWindBySql(addSql)
-		if err != nil {
-			fmt.Println("AddEdbDataWind Err", err.Error())
-			return
-		}
-	}
-	return
-}
-
-type EdbDataFromPb struct {
-	Date   map[string]int64   `json:"date"`
-	Ticker map[string]string  `json:"ticker"`
-	Field  map[string]string  `json:"field"`
-	Value  map[string]float64 `json:"value"`
-}
-
-func RefreshEdbDataByPb(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	refreshEdbCode := edbCode
-	edbCode = url.QueryEscape(edbCode)
-	bpUrl := utils.Hz_Data_PB_Url + `edbInfo/pb?EdbCode=%s&StartDate=%s&EndDate=%s`
-	bpUrl = fmt.Sprintf(bpUrl, edbCode, startDate, endDate)
-	//utils.FileLog.Info("bpUrl+" + bpUrl)
-
-	reqRes, err := http.Get(bpUrl)
-	if err != nil {
-		return
-	}
-	defer reqRes.Body.Close()
-	body, err := ioutil.ReadAll(reqRes.Body)
-	if err != nil {
-		return
-	}
-	fmt.Println("RefreshEdbDataByPb body:")
-	fmt.Println(string(body))
-	//utils.FileLog.Info("RefreshEdbDataByPb:" + string(body))
-
-	item := new(EdbDataFromPb)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		return
-	}
-	if len(item.Date) > 0 {
-		dateMap := item.Date
-		pbList := make([]*edbDataModel.EdbDataPb, 0)
-		for k, v := range dateMap {
-			timestamp := v
-			v = v / 1000
-			t := time.Unix(v, 0)
-			dateTime := t.Format(utils.FormatDate)
-
-			val := item.Value[k]
-			field := item.Field[k]
-			ticker := item.Ticker[k]
-			if field == "PX_LAST" {
-				//判断数据是否已经存在
-				count, err := edbDataModel.GetEdbDataPbByCodeAndDate(refreshEdbCode, dateTime)
-				if err != nil && err != utils.ErrNoRow {
-					return err
-				}
-				fmt.Println("field:", field)
-				if count <= 0 {
-					item := new(edbDataModel.EdbDataPb)
-					item.EdbCode, _ = url.QueryUnescape(edbCode)
-					item.EdbInfoId = edbInfoId
-					item.CreateTime = time.Now()
-					item.ModifyTime = time.Now()
-					item.DataTime = dateTime
-					item.Value = val
-					item.Status = 1
-					item.Field = field
-					item.Ticker = ticker
-					item.DataTimestamp = timestamp
-					pbList = append(pbList, item)
-				} else {
-					err = edbDataModel.ModifyEdbDataPb(edbInfoId, dateTime, val)
-					if err != nil {
-						return err
-					}
-				}
-			}
-		}
-
-		if len(pbList) > 0 {
-			err = edbDataModel.AddEdbDataPb(pbList)
-			if err != nil {
-				fmt.Println("AddEdbDataPb Err", err.Error())
-				return
-			}
-		}
-	}
-
-	return
-}
-
-//刷新手工指标数据
-func RefreshAllEdbDataByManual(edbInfoId, source int, edbCode string) (err error) {
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	if err != nil {
-		return
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		condition += " AND TRADE_CODE=? "
-		pars = append(pars, edbCode)
-	}
-
-	manualDataList, err := edbDataModel.GetEdbdataManualByTradeCode(condition, pars)
-	//获取指标所有数据
-	existDataList := make([]*edbDataModel.EdbDataBase, 0)
-	dataTableName := edbDataModel.GetEdbDataTableName(source)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&existDataList).Error
-	//_, err = o.Raw(sql, edbInfoId).QueryRows(&existDataList)
-	if err != nil {
-		return err
-	}
-
-	existDataMap := make(map[string]*edbDataModel.EdbDataBase)
-	for _, v := range existDataList {
-		existDataMap[v.DataTime] = v
-	}
-
-	addSql := ` INSERT INTO edb_data_manual(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	manualMap := make(map[string]*edbDataModel.ManualEdbdata)
-	for _, v := range manualDataList {
-		item := v
-		if findItem, ok := existDataMap[v.Dt]; !ok {
-			eDate := item.Dt
-			sValue := item.Close
-
-			dataTime, err := time.Parse(utils.FormatDate, eDate)
-			if err != nil {
-				return err
-			}
-			timestamp := dataTime.UnixNano() / 1e6
-			timeStr := fmt.Sprintf("%d", timestamp)
-
-			addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-			isAdd = true
-		} else {
-			if findItem.Value != item.Close {
-				sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-				sql = fmt.Sprintf(sql, dataTableName)
-				err = tx.Exec(sql, item.Close, edbInfoId, item.Dt).Error
-				//err = global.MYSQL["data"].Exec(sql, item.Close, edbInfoId, item.Dt).Error
-				//_, err = o.Raw(sql, item.Close, edbInfoId, item.Dt).Exec()
-				if err != nil {
-					return err
-				}
-			}
-		}
-		manualMap[v.Dt] = v
-	}
-	for _, v := range existDataList {
-		if _, ok := manualMap[v.DataTime]; !ok {
-			go func() {
-				sql := ` DELETE FROM %s WHERE edb_data_id=? `
-				tableName := edbDataModel.GetEdbDataTableName(utils.DATA_SOURCE_MANUAL)
-				sql = fmt.Sprintf(sql, tableName)
-				err = tx.Exec(sql, v.EdbInfoId).Error
-				//err = global.MYSQL["data"].Exec(sql, edbDataId).Error
-			}()
-			//go DeleteEdbDataByIdAndSource(v.EdbDataId, utils.DATA_SOURCE_MANUAL)
-		}
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		//_, err = o.Raw(addSql).Exec()
-		if err != nil {
-			fmt.Println("RefreshAllEdbDataByManual add Err", err.Error())
-			return
-		}
-	}
-	return
-}
-
-func DeleteEdbDataByIdAndSource(edbDataId, source int) (err error) {
-	sql := ` DELETE FROM %s WHERE edb_data_id=? `
-	tableName := edbDataModel.GetEdbDataTableName(source)
-	sql = fmt.Sprintf(sql, tableName)
-	err = global.MYSQL["data"].Exec(sql, edbDataId).Error
-
-	return
-}
-
-func GetAddSql(edbInfoId, edbCode, dataTime, timestampStr string, value string) (addSql string) {
-	nowStr := time.Now().Format(utils.FormatDateTime)
-	addSql += "("
-	addSql += edbInfoId + "," + "'" + edbCode + "'" + "," + "'" + dataTime + "'" + "," + value + "," + "'" + nowStr + "'" +
-		"," + "'" + nowStr + "'"
-	addSql += "," + "'" + timestampStr + "'"
-	addSql += "),"
-	return
-}
-
-//刷新隆众指标数据
-func RefreshEdbDataByLz(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	if err != nil {
-		return
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		condition += " AND b.lz_code=? "
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND a.data_time>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND a.data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	lzDataList, err := edbDataModel.GetLzSurveyDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_lz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	for _, v := range lzDataList {
-		item := v
-		count, err := edbDataModel.GetEdbDataLzByCodeAndDate(edbCode, v.DataTime)
-		if err != nil && err != utils.ErrNoRow {
-			return err
-		}
-		if count <= 0 {
-			nowStr := time.Now().Format(utils.FormatDateTime)
-			eDate := item.DataTime
-			sValue := item.InputValue
-			dataTime, err := time.Parse(utils.FormatDate, eDate)
-			if err != nil {
-				return err
-			}
-			timestamp := dataTime.UnixNano() / 1e6
-			timeStr := fmt.Sprintf("%d", timestamp)
-			addSql += "("
-			addSql += edbInfoIdStr + "," + "'" + edbCode + "'" + "," + "'" + eDate + "'" + "," + sValue + "," + "'" + nowStr + "'" +
-				"," + "'" + nowStr + "'" + "," + "'" + timeStr + "'"
-			addSql += "),"
-			isAdd = true
-		} else {
-			//edbInfoId int64, dataTime, value string
-			//o := orm.NewOrm()
-			//o.Using("data")
-			sql := ` UPDATE edb_data_lz SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-			err = tx.Exec(sql, v.InputValue, int64(edbInfoId), v.DataTime).Error
-			//_, err = o.Raw(sql, value, edbInfoId, dataTime).Exec()
-
-			//err = ModifyEdbDataLz(int64(edbInfoId), v.DataTime, v.InputValue)
-			if err != nil {
-				return err
-			}
-		}
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		//_, err = o.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-
-	return
-}
-
-//全部刷新有色数据
-func RefreshAllEdbDataByYs(edbInfoId, source int, edbCode, startDate, endDate string) (err error) {
-
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	if err != nil {
-		return
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//获取数据
-	err = SyncSmmIndexDataBase(edbCode, startDate, endDate)
-	if err != nil {
-		err = errors.New("SyncSmmIndexDataBase Err:" + err.Error())
-		return err
-	}
-	//获取已存在指标所有数据
-	existDataList := make([]*edbDataModel.EdbDataBase, 0)
-	dataTableName := edbDataModel.GetEdbDataTableName(source)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&existDataList).Error
-	//_, err = o.Raw(sql, edbInfoId).QueryRows(&existDataList)
-	if err != nil {
-		return err
-	}
-	existDataMap := make(map[string]string)
-	for _, v := range existDataList {
-		existDataMap[v.DataTime] = v.Value
-	}
-
-	smmDateList := make([]*edbDataModel.BaseFromSmmDataSimple, 0)
-	smmSql := ` SELECT * FROM base_from_smm_data WHERE index_code=? AND data_time>=? `
-	err = global.MYSQL["data"].Raw(smmSql, edbCode, startDate).Scan(&existDataList).Error
-	//_, err = o.Raw(smmSql, edbCode, startDate).QueryRows(&smmDateList)
-	if err != nil {
-		return err
-	}
-
-	addSql := ` INSERT INTO edb_data_ys(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	for _, sv := range smmDateList {
-		if existVal, ok := existDataMap[sv.DataTime]; !ok {
-			dataTime, err := time.Parse(utils.FormatDate, sv.DataTime)
-			if err != nil {
-				return err
-			}
-			timestamp := dataTime.UnixNano() / 1e6
-			timeStr := fmt.Sprintf("%d", timestamp)
-			addSql += GetAddSql(edbInfoIdStr, edbCode, sv.DataTime, timeStr, sv.Value)
-			isAdd = true
-		} else {
-			if existVal != sv.Value {
-				sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-				sql = fmt.Sprintf(sql, dataTableName)
-
-				err = tx.Exec(sql, sv.Value, edbInfoId, sv.DataTime).Error
-				//_, err = o.Raw(sql, sv.Value, edbInfoId, sv.DataTime).Exec()
-				if err != nil {
-					return err
-				}
-			}
-		}
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		//_, err = o.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
-
-const (
-	dataUrl = "https://dataapi.smm.cn/GetData/" //data url (中文)
-	//dataUrl = "https://dataapi.smm.cn/GetDataEn/" //data url (english edition)
-	authUrl = "https://platform.smm.cn/usercenter/auth" // auth url (for all)
-)
-
-type TokenResp struct {
-	Code int       `json:"Code"`
-	Msg  string    `json:"Msg"`
-	Data TokenData `json:"Data"`
-}
-
-type TokenData struct {
-	Token string `json:"Token"`
-}
-
-//获取token
-func getToken(userName string, password string) (string, error) {
-	encryptAuth := md5.New()
-	encryptAuth.Write([]byte(password)) //encrypt password with md5
-	newPassword := hex.EncodeToString(encryptAuth.Sum(nil))
-
-	resp, err := http.PostForm(authUrl, url.Values{"user_name": {userName}, "password": {newPassword}})
-	if err != nil {
-		return "", err
-	}
-
-	defer resp.Body.Close()
-
-	body, err := ioutil.ReadAll(resp.Body)
-	if err != nil {
-		fmt.Println("reponse error", err)
-		return "", err
-	}
-
-	var bodyJsonContent TokenResp
-
-	if err = json.Unmarshal([]byte(body), &bodyJsonContent); err != nil {
-		fmt.Println(err, "unmarsal failure")
-		return "", err
-	}
-
-	var token string
-	if bodyJsonContent.Code == 0 {
-		token = bodyJsonContent.Data.Token
-	}
-
-	//print(token)
-	return token, nil
-}
-
-func SyncSmmIndexDataBase(edbCode, startDate, endDate string) (err error) {
-	//utils.FileLog.Info("start:" + time.Now().Format(utils.FormatDateTime))
-
-	var smmCode string
-	if strings.Contains(edbCode, "#") {
-		smmCode = strings.Split(edbCode, "#")[0]
-	} else {
-		smmCode = edbCode
-	}
-	token, err := getToken("pqian@hzinsights.com", "hz123456")
-	if err != nil {
-		fmt.Println(err)
-		return
-	}
-	baseSmmItem, err := edbDataModel.GetBaseFromSmmBySmmCode(smmCode)
-	if err != nil {
-		fmt.Println(err)
-		return
-	}
-
-	if baseSmmItem == nil {
-		err = errors.New("GetBaseFromSmmBySmmCode Err:" + err.Error())
-		return
-	}
-
-	smmIndexAll, err := edbDataModel.GetBaseFromSmmIndexBySmmCode(smmCode)
-	if err != nil {
-		fmt.Println("GetBaseFromSmmIndex Err:" + err.Error())
-		return
-	}
-	existIndexMap := make(map[string]*edbDataModel.BaseFromSmmIndex)
-	for _, item := range smmIndexAll {
-		existIndexMap[item.IndexCode] = item
-	}
-
-	ysItem, err := getApiData(token, edbCode, startDate, endDate)
-	if err != nil {
-		fmt.Println(err)
-		return
-	}
-	if ysItem != nil && ysItem.Code == 200 {
-
-		frequency := ysItem.Data.Frequency
-
-		indexMap := make(map[string]int)
-		smmIndexIdMap := make(map[int]int)
-		indexCodeMap := make(map[int]string)
-
-		indexKey := 0
-		var isDateIndex int
-		for fk, fv := range ysItem.Data.Field {
-			if fv.IsDate == "1" {
-				isDateIndex = fk
-			} else {
-				if !strings.Contains(fv.Name, "产品名称") &&
-					!strings.Contains(fv.Name, "单位") &&
-					!strings.Contains(fv.Name, "时间") &&
-					!strings.Contains(fv.Name, "备注") {
-
-					indexMap[fv.DBColName] = fk
-
-					indexKey += 1
-					indexCode := smmCode + "#" + strconv.Itoa(indexKey)
-
-					if findItem, ok := existIndexMap[indexCode]; !ok {
-						ssmIndex := new(edbDataModel.BaseFromSmmIndex)
-						ssmIndex.Interface = smmCode
-						ssmIndex.Name = baseSmmItem.Name
-						ssmIndex.IndexCode = indexCode
-						ssmIndex.IndexName = baseSmmItem.Name + "_" + fv.Name
-						ssmIndex.Type1 = baseSmmItem.Type1
-						ssmIndex.Type2 = baseSmmItem.Type2
-						ssmIndex.Type3 = baseSmmItem.Type3
-						ssmIndex.Frequency = frequency
-						ssmIndex.Unit = fv.Unit
-						ssmIndex.ApiStartTime = baseSmmItem.ApiStartTime
-						ssmIndex.ApiUpdateTime = baseSmmItem.ApiUpdateTime
-						ssmIndex.StartTime = baseSmmItem.StartTime
-						ssmIndex.FinishTime = baseSmmItem.FinishTime
-						ssmIndex.CreateTime = time.Now()
-						ssmIndex.ModifyTime = time.Now()
-						lastIndexId, err := edbDataModel.AddBaseFromSmmIndex(ssmIndex)
-						if err != nil {
-							err = errors.New("AddBaseFromSmmIndex Err:" + err.Error())
-							return err
-						}
-						smmIndexIdMap[fk] = int(lastIndexId)
-						indexCodeMap[fk] = indexCode
-					} else {
-						smmIndexIdMap[fk] = findItem.BaseFromSmmIndexId
-						indexCodeMap[fk] = findItem.IndexCode
-					}
-				}
-			}
-		}
-
-		existDataMap := make(map[string]*edbDataModel.BaseFromSmmData)
-		for _, mv := range indexCodeMap {
-			indexCode := mv
-			dataAllList, err := edbDataModel.GetBaseFromSmmDataAllByIndexCode(indexCode)
-			if err != nil {
-				err = errors.New("GetBaseFromSmmData Err:" + err.Error())
-				return err
-			}
-			for _, item := range dataAllList {
-				key := item.IndexCode + item.DataTime
-				existDataMap[key] = item
-			}
-		}
-
-		addExistDataMap := make(map[string]string)
-
-		for _, dv := range ysItem.Data.Content {
-			var dataTime string
-			dataTime = dv[isDateIndex]
-			if strings.Contains(dataTime, "Q1") {
-				dataTime = strings.Replace(dataTime, "Q1", "-01", -1)
-				dataTime += "-31"
-			}
-			if strings.Contains(dataTime, "Q2") {
-				dataTime = strings.Replace(dataTime, "Q2", "-06", -1)
-				dataTime += "-30"
-			}
-			if strings.Contains(dataTime, "Q3") {
-				dataTime = strings.Replace(dataTime, "Q3", "-09", -1)
-				dataTime += "-30"
-			}
-			if strings.Contains(dataTime, "Q4") {
-				dataTime = strings.Replace(dataTime, "Q4", "-12", -1)
-				dataTime += "-31"
-			}
-
-			if strings.Contains(dataTime, "H1") {
-				dataTime = strings.Replace(dataTime, "H1", "-06", -1)
-				dataTime += "-30"
-			}
-
-			if strings.Contains(dataTime, "H2") {
-				dataTime = strings.Replace(dataTime, "H2", "-12", -1)
-				dataTime += "-31"
-			}
-
-			if frequency == "月" {
-				monthDate, err := time.Parse("2006-01", dataTime)
-				if err != nil {
-					fmt.Println("time.Parse:" + err.Error())
-				}
-				lastTime := monthDate.AddDate(0, 1, -1)
-				lastYear, lastMonth, lastDay := lastTime.Date()
-				var lastDate string
-				if int(lastMonth) < 10 {
-					lastDate = strconv.Itoa(lastYear) + "-" + "0" + strconv.Itoa(int(lastMonth)) + "-" + strconv.Itoa(lastDay)
-				} else {
-					lastDate = strconv.Itoa(lastYear) + "-" + strconv.Itoa(int(lastMonth)) + "-" + strconv.Itoa(lastDay)
-				}
-				dataTime = lastDate
-			} else if frequency == "年" {
-				dataTime = dataTime + "-12-31"
-			}
-			saveDataTime, err := time.Parse(utils.FormatDate, dataTime)
-			if err != nil {
-				err = errors.New("time.Parse Err:" + err.Error())
-				return err
-			}
-			timestamp := saveDataTime.UnixNano() / 1e6
-			//循环指标
-			for _, v := range indexMap {
-
-				indexCode := indexCodeMap[v]
-				smmIndexId := smmIndexIdMap[v]
-				dataVal := dv[v]
-
-				if indexCode != "" {
-
-					key := indexCode + dataTime
-					val := strings.Replace(dataVal, ",", "", -1)
-					if findData, dataOk := existDataMap[key]; !dataOk {
-						if _, addOK := addExistDataMap[key]; !addOK {
-							if val != "" && val != "-" {
-								dataItem := new(edbDataModel.BaseFromSmmData)
-								dataItem.BaseFromSmmIndexId = smmIndexId
-								dataItem.IndexCode = indexCode
-								dataItem.DataTime = dataTime
-								dataItem.Value = val
-								dataItem.CreateTime = time.Now()
-								dataItem.ModifyTime = time.Now()
-								dataItem.DataTimestamp = timestamp
-								_, err = edbDataModel.AddBaseFromSmmData(dataItem)
-								if err != nil && !strings.Contains(err.Error(), "idx_index_code_date") {
-									fmt.Println("AddBaseFromSmmData Err:" + err.Error())
-									err = errors.New("AddBaseFromSmmData Err:" + err.Error())
-									return err
-								}
-							}
-						}
-					} else {
-						if findData != nil && findData.Value != val { //修改
-							if _, addOK := addExistDataMap[key]; !addOK {
-								if val != "" && val != "-" {
-									err = edbDataModel.ModifyBaseFromSmmData(findData.SmmDataId, val)
-									if err != nil {
-										err = errors.New("ModifyBaseFromSmmData Err:" + err.Error())
-										return err
-									}
-								}
-							}
-						}
-					}
-					addExistDataMap[key] = key
-				}
-			}
-		}
-
-		//修改数据开始,结束日期
-		{
-			indexList, err := edbDataModel.GetBaseFromSmmIndexBySmmCode(smmCode)
-			if err != nil {
-				fmt.Println("GetBaseFromSmmIndexBySmmCode Err:" + err.Error())
-			}
-			for _, sv := range indexList {
-				minDate, maxDate, err := edbDataModel.GetBaseFromSmmMaxOrMinDate(sv.IndexCode)
-				if err != nil {
-					fmt.Println("GetEdbDataSmmMaxOrMinDate Err:" + err.Error())
-				} else {
-					err = edbDataModel.ModifyBaseFromSmmMinDateAndMaxDate(sv.BaseFromSmmIndexId, minDate, maxDate)
-					if err != nil {
-						fmt.Println("ModifyBaseFromSmmMinDateAndMaxDate Err:" + err.Error())
-					}
-				}
-			}
-		}
-	}
-
-	return
-}
-
-/*
- * request data
- * sdatetime,edatetime ==>format:yyyy-mm-dd,
- * apiName ==> data.metal.com(for english)/data.smm.cn (for chinese)
- */
-func getApiData(token string, apiName string, sdatetime string, edatetime string) (item *edbDataModel.YsResult, err error) {
-	reqUrl := dataUrl + apiName
-	resp, err := http.PostForm(reqUrl, url.Values{"token": {token}, "sdatetime": {sdatetime}, "edatetime": {edatetime}})
-	if err != nil {
-		return nil, err
-	}
-
-	defer resp.Body.Close()
-	body, err := ioutil.ReadAll(resp.Body)
-	if err != nil {
-		fmt.Println("response error")
-		return nil, err
-	}
-	//utils.FileLog.Info("ys result:" + string(body))
-	dataJsonContent := new(edbDataModel.YsResult)
-	if err = json.Unmarshal([]byte(body), &dataJsonContent); err != nil {
-		fmt.Println(err, "data unmarshal failure")
-		return nil, err
-	}
-
-	if dataJsonContent.Code == 200 && len(dataJsonContent.Data.Content) > 0 {
-		return dataJsonContent, nil
-	} else {
-		err = errors.New("code:" + strconv.Itoa(int(dataJsonContent.Code)) + "msg:" + dataJsonContent.Msg)
-	}
-	return nil, nil
-}
-
-func RefreshEdbDataByGl(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	if err != nil {
-		return
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		condition += " AND INDEX_CODE=? "
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND DATA_DATE>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND DATA_DATE<=? "
-		pars = append(pars, endDate)
-	}
-
-	glDataList, err := edbDataModel.GetGlDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_gl(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range glDataList {
-		item := v
-		if _, ok := existMap[v.DataTime]; !ok {
-			count, err := edbDataModel.GetEdbDataGlByCodeAndDate(edbCode, v.DataTime)
-			if err != nil && err != utils.ErrNoRow {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.DataTime
-				sValue := item.InputValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				updateSql := ` UPDATE edb_data_gl SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-				//err = global.MYSQL["data"].Exec(sql, value, edbInfoId, dataTime).Error
-				err = tx.Exec(updateSql, v.InputValue, edbInfoId, v.DataTime).Error
-				//err = edbDataModel.ModifyEdbDataGl(int64(edbInfoId), v.DataTime, v.InputValue)
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.DataTime] = v.InputValue
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		//_, err = o.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
-
-// RefreshEdbDataByZz 刷新路透社数据
-func RefreshAllEdbDataByLt(edbInfoId, source int, edbCode, startDate, endDate string) (err error) {
-	// 获取路透社数据
-	ltDataList, err := QueryEdbDataByLt(edbCode, startDate, endDate)
-	if err != nil {
-		return
-	}
-
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	//获取指标所有数据
-	dataList := make([]*edbDataModel.EdbDataBase, 0)
-	dataTableName := edbDataModel.GetEdbDataTableName(source)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	err = global.MYSQL["data"].Raw(sql, dataTableName).Scan(&dataList).Error
-	//_, err = o.Raw(sql, edbInfoId).QueryRows(&dataList)
-	if err != nil {
-		return err
-	}
-	dataMap := make(map[string]string)
-	for _, v := range dataList {
-		dataMap[v.DataTime] = v.Value
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-
-	addSql := ` INSERT INTO edb_data_lt(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-
-	for timestampInt, edbValue := range ltDataList {
-		dataTime := time.Unix(timestampInt/1000, 0)
-
-		//校验数据类型对不对
-		valType := reflect.TypeOf(edbValue)
-		if valType == nil {
-			continue
-		}
-		if valType.String() != "float64" {
-			continue
-		}
-		sValue := edbValue.(float64)
-
-		eDate := dataTime.Format(utils.FormatDate)
-		if err != nil {
-			return err
-		}
-
-		saveValue := utils.SubFloatToString(sValue, 30)
-		if existVal, ok := dataMap[eDate]; !ok {
-			timestamp := dataTime.UnixNano() / 1e6
-			timeStr := fmt.Sprintf("%d", timestamp)
-
-			addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, saveValue)
-			isAdd = true
-		} else {
-			if existVal != saveValue {
-				sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-				sql = fmt.Sprintf(sql, dataTableName)
-				err = tx.Exec(sql, sValue, edbInfoId, eDate).Error
-				//_, err = o.Raw(sql, sValue, edbInfoId, eDate).Exec()
-				if err != nil {
-					return err
-				}
-			}
-		}
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		//_, err = o.Raw(addSql).Exec()
-		if err != nil {
-			fmt.Println("RefreshAllEdbDataByLt add Err", err.Error())
-			return
-		}
-	}
-	return
-}
-
-// QueryEdbDataByLt 获取路透社数据
-func QueryEdbDataByLt(edbCode, startDate, endDate string) (dataList map[int64]interface{}, err error) {
-	dataList = make(map[int64]interface{})
-
-	ltUrl := utils.Hz_Data_LT_Url + `edbInfo/ek?EdbCode=%s&StartDate=%s&EndDate=%s`
-	ltUrl = fmt.Sprintf(ltUrl, edbCode, startDate, endDate)
-	//utils.FileLogData.Info("ltUrl:%s", ltUrl)
-	//body, err := http.Get(ltUrl)
-
-	reqRes, err := http.Get(ltUrl)
-	if err != nil {
-		return
-	}
-	defer reqRes.Body.Close()
-	body, err := ioutil.ReadAll(reqRes.Body)
-	if err != nil {
-		return
-	}
-
-	//utils.FileLogData.Info("lt result:%s", string(body))
-
-	//if err != nil {
-	//	return
-	//}
-	//fmt.Println(string(body))
-	item := new(edbDataModel.EdbDataFromLt)
-	err = json.Unmarshal(body, &item)
-
-	if err != nil {
-		return
-	}
-	dataList = item.Close
-	return
-}
-
-// RefreshEdbDataByZz 刷新郑商所指标数据
-func RefreshEdbDataByZz(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	if err != nil {
-		return
-	}
-	var suffix string
-	if strings.Contains(edbCode, "deal") {
-		suffix = "deal"
-	} else if strings.Contains(edbCode, "buy") {
-		suffix = "buy"
-	} else if strings.Contains(edbCode, "sold") {
-		suffix = "sold"
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		if suffix == "deal" {
-			condition += " AND deal_code=? "
-		} else if suffix == "buy" {
-			condition += " AND buy_code=? "
-		} else {
-			condition += " AND sold_code=? "
-		}
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	glDataList, err := edbDataModel.GetZzDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_zz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range glDataList {
-		var value string
-		if suffix == "deal" {
-			value = v.DealValue
-		} else if suffix == "buy" {
-			value = v.BuyValue
-		} else {
-			value = v.SoldValue
-		}
-		item := v
-		itemValue := value
-		if _, ok := existMap[v.DataTime]; !ok {
-			count, err := edbDataModel.GetEdbDataZzByCodeAndDate(edbCode, v.DataTime)
-			if err != nil && err != utils.ErrNoRow {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.DataTime
-				sValue := itemValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				updateSql := ` UPDATE edb_data_zz SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-				err = tx.Exec(updateSql, value, edbInfoId, v.DataTime).Error
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.DataTime] = value
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		//_, err = o.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
-
-func RefreshEdbDataByDl(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	if err != nil {
-		return
-	}
-	var suffix string
-	if strings.Contains(edbCode, "deal") {
-		suffix = "deal"
-	} else if strings.Contains(edbCode, "buy") {
-		suffix = "buy"
-	} else if strings.Contains(edbCode, "sold") {
-		suffix = "sold"
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		if suffix == "deal" {
-			condition += " AND deal_code=? "
-		} else if suffix == "buy" {
-			condition += " AND buy_code=? "
-		} else {
-			condition += " AND sold_code=? "
-		}
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	glDataList, err := edbDataModel.GetDlDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_dl(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range glDataList {
-		var value string
-		if suffix == "deal" {
-			value = v.DealValue
-		} else if suffix == "buy" {
-			value = v.BuyValue
-		} else {
-			value = v.SoldValue
-		}
-		item := v
-		itemValue := value
-		if _, ok := existMap[v.DataTime]; !ok {
-			count, err := edbDataModel.GetEdbDataDlByCodeAndDate(edbCode, v.DataTime)
-			if err != nil && err != utils.ErrNoRow {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.DataTime
-				sValue := itemValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				updataSql := ` UPDATE edb_data_dl SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-				err = tx.Exec(updataSql, value, edbInfoId, v.DataTime).Error
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.DataTime] = value
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		if err != nil {
-			return err
-		}
-	}
-
-	return
-}
-
-// RefreshEdbDataBySh 刷新上期所指标数据
-func RefreshEdbDataBySh(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-	if err != nil {
-		return
-	}
-	var suffix string
-	if strings.Contains(edbCode, "deal") {
-		suffix = "deal"
-	} else if strings.Contains(edbCode, "buy") {
-		suffix = "buy"
-	} else if strings.Contains(edbCode, "sold") {
-		suffix = "sold"
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		if suffix == "deal" {
-			condition += " AND deal_code=? "
-		} else if suffix == "buy" {
-			condition += " AND buy_code=? "
-		} else {
-			condition += " AND sold_code=? "
-		}
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	glDataList, err := edbDataModel.GetShDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_sh(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range glDataList {
-		var value string
-		if suffix == "deal" {
-			value = v.DealValue
-		} else if suffix == "buy" {
-			value = v.BuyValue
-		} else {
-			value = v.SoldValue
-		}
-		item := v
-		itemValue := value
-		if _, ok := existMap[v.DataTime]; !ok {
-			count, err := edbDataModel.GetEdbDataShByCodeAndDate(edbCode, v.DataTime)
-			if err != nil && err != utils.ErrNoRow {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.DataTime
-				sValue := itemValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				updataSql := ` UPDATE edb_data_sh SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-				err = tx.Exec(updataSql, value, edbInfoId, v.DataTime).Error
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.DataTime] = value
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		//_, err = o.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-
-	return
-}
-
-// RefreshEdbDataByCffex 刷新中金所指标数据
-func RefreshEdbDataByCffex(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-	if err != nil {
-		return
-	}
-	var suffix string
-	if strings.Contains(edbCode, "deal") {
-		suffix = "deal"
-	} else if strings.Contains(edbCode, "buy") {
-		suffix = "buy"
-	} else if strings.Contains(edbCode, "sold") {
-		suffix = "sold"
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		if suffix == "deal" {
-			condition += " AND deal_code=? "
-		} else if suffix == "buy" {
-			condition += " AND buy_code=? "
-		} else {
-			condition += " AND sold_code=? "
-		}
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	glDataList, err := edbDataModel.GetCffexDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_cffex(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range glDataList {
-		var value string
-		if suffix == "deal" {
-			value = v.DealValue
-		} else if suffix == "buy" {
-			value = v.BuyValue
-		} else {
-			value = v.SoldValue
-		}
-		item := v
-		itemValue := value
-		if _, ok := existMap[v.DataTime]; !ok {
-			count, err := edbDataModel.GetEdbDataCffexByCodeAndDate(edbCode, v.DataTime)
-			if err != nil && err != utils.ErrNoRow {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.DataTime
-				sValue := itemValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				updateSql := ` UPDATE edb_data_cffex SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-				err = tx.Exec(updateSql, value, edbInfoId, v.DataTime).Error
-
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.DataTime] = value
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		//_, err = o.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
-
-// RefreshEdbDataByShfe 刷新上期能源指标数据
-func RefreshEdbDataByShfe(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	if err != nil {
-		return
-	}
-	var suffix string
-	if strings.Contains(edbCode, "deal") {
-		suffix = "deal"
-	} else if strings.Contains(edbCode, "buy") {
-		suffix = "buy"
-	} else if strings.Contains(edbCode, "sold") {
-		suffix = "sold"
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		if suffix == "deal" {
-			condition += " AND deal_code=? "
-		} else if suffix == "buy" {
-			condition += " AND buy_code=? "
-		} else {
-			condition += " AND sold_code=? "
-		}
-		pars = append(pars, edbCode)
-	}
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	glDataList, err := edbDataModel.GetShfeDataByTradeCode(condition, pars)
-
-	addSql := ` INSERT INTO edb_data_ine(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range glDataList {
-		var value string
-		if suffix == "deal" {
-			value = v.DealValue
-		} else if suffix == "buy" {
-			value = v.BuyValue
-		} else {
-			value = v.SoldValue
-		}
-		item := v
-		itemValue := value
-		if _, ok := existMap[v.DataTime]; !ok {
-			count, err := edbDataModel.GetEdbDataShfeByCodeAndDate(edbCode, v.DataTime)
-			if err != nil && err != utils.ErrNoRow {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.DataTime
-				sValue := itemValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				updateSql := ` UPDATE edb_data_ine SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-				err = tx.Exec(updateSql, value, edbInfoId, v.DataTime).Error
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.DataTime] = value
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
-
-// RefreshEdbDataByGie 刷新欧洲天然气指标数据
-func RefreshEdbDataByGie(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	if err != nil {
-		fmt.Println("refresh err:", err)
-		return
-	}
-	var suffix string
-	l := len(edbCode)
-	if strings.Contains(edbCode[l-2:], "GS") {
-		suffix = "GS"
-	} else if strings.Contains(edbCode[l-1:], "F") {
-		suffix = "F"
-	} else if strings.Contains(edbCode[l-1:], "T") {
-		suffix = "T"
-	} else if strings.Contains(edbCode[l-2:], "In") {
-		suffix = "In"
-	} else if strings.Contains(edbCode[l-3:], "Out") {
-		suffix = "Out"
-	} else if strings.Contains(edbCode[l-3:], "WGV") {
-		suffix = "WGV"
-	} else if strings.Contains(edbCode[l-2:], "IC") {
-		suffix = "IC"
-	} else if strings.Contains(edbCode[l-2:], "WC") {
-		suffix = "WC"
-	} else {
-		suffix = ""
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-	var condition string
-	var pars []interface{}
-
-	if edbCode != "" {
-		condition += " AND eic_code=? "
-		pars = append(pars, edbCode[:l-len(suffix)])
-	}
-
-	if startDate != "" {
-		condition += " AND gas_day_started_on>=? "
-		pars = append(pars, startDate)
-	}
-
-	if endDate != "" {
-		condition += " AND gas_day_started_on<=? "
-		pars = append(pars, endDate)
-	}
-
-	eicDataList, err := edbDataModel.GetGieDataByTradeCode(condition, pars)
-	fmt.Println("eicDataList", len(eicDataList))
-	addSql := ` INSERT INTO edb_data_gie(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	for _, v := range eicDataList {
-		var value string
-		if suffix == "GS" {
-			value = v.GasInStorage
-		} else if suffix == "F" {
-			value = v.Full
-		} else if suffix == "T" {
-			value = v.Trend
-		} else if suffix == "In" {
-			value = v.Injection
-		} else if suffix == "Out" {
-			value = v.Withdrawal
-		} else if suffix == "WGV" {
-			value = v.WorkingGasVolume
-		} else if suffix == "IC" {
-			value = v.InjectionCapacity
-		} else if suffix == "WC" {
-			value = v.WithdrawalCapacity
-		}
-		item := v
-		itemValue := value
-		if _, ok := existMap[v.GasDayStartedOn]; !ok {
-			count, err := edbDataModel.GetEdbDataGieByCodeAndDate(edbCode, v.GasDayStartedOn)
-			if err != nil && err != utils.ErrNoRow {
-				return err
-			}
-			if count <= 0 {
-				eDate := item.GasDayStartedOn
-				sValue := itemValue
-				if sValue != "" {
-					dataTime, err := time.Parse(utils.FormatDate, eDate)
-					if err != nil {
-						return err
-					}
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, sValue)
-					isAdd = true
-				}
-			} else {
-				updateSql := ` UPDATE edb_data_gie SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-				err = tx.Exec(updateSql, value, edbInfoId, v.GasDayStartedOn).Error
-				if err != nil {
-					return err
-				}
-			}
-		}
-		existMap[v.GasDayStartedOn] = value
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
-
-
-//刷新全部数据
-func RefreshAllCalculate(edbInfoIdArr []*edbInfoModel.EdbInfo, edbInfoId, source int, edbCode, formulaStr, startDate, endDate string, edbInfoIdBytes []string) (err error) {
-
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	fmt.Println(startDate, endDate)
-	saveDataMap := make(map[string]map[int]float64)
-	for _, v := range edbInfoIdArr {
-		var condition string
-		var pars []interface{}
-		condition += " AND edb_info_id=? "
-		pars = append(pars, v.EdbInfoId)
-		if startDate != "" {
-			condition += " AND data_time>=? "
-			pars = append(pars, startDate)
-		}
-		if endDate != "" {
-			condition += " AND data_time<=? "
-			pars = append(pars, endDate)
-		}
-		fmt.Println("v.Source:", v.Source)
-		dataList, err := edbDataModel.GetEdbDataListAll(condition, pars, v.Source, 1)
-		if err != nil {
-			return err
-		}
-		dataMap := make(map[string]float64)
-		for _, dv := range dataList {
-			if val, ok := saveDataMap[dv.DataTime]; ok {
-				if _, ok := val[v.EdbInfoId]; !ok {
-					val[v.EdbInfoId] = dv.Value
-				}
-			} else {
-				temp := make(map[int]float64)
-				temp[v.EdbInfoId] = dv.Value
-				saveDataMap[dv.DataTime] = temp
-			}
-		}
-		item := new(edbDataModel.CalculateItems)
-		item.EdbInfoId = v.EdbInfoId
-		item.DataMap = dataMap
-	}
-
-	formulaMap := CheckFormula(formulaStr)
-	addSql := ` INSERT INTO edb_data_calculate(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-
-	//获取指标所有数据
-	dataList := make([]*edbDataModel.EdbDataBase, 0)
-	dataTableName := edbDataModel.GetEdbDataTableName(source)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&dataList).Error
-	//_, err = o.Raw(sql, edbInfoId).QueryRows(&dataList)
-	if err != nil {
-		return err
-	}
-	dataMap := make(map[string]string)
-	for _, v := range dataList {
-		dataMap[v.DataTime] = v.Value
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	existDataMap := make(map[string]string)
-	for sk, sv := range saveDataMap {
-		fmt.Println(sk, sv)
-		formulaStr = strings.ToUpper(formulaStr)
-		formulaFormStr := ReplaceFormula(edbInfoIdArr, sv, formulaMap, formulaStr, edbInfoIdBytes)
-		if formulaFormStr != "" {
-			//utils.FileLog.Info("formulaFormStr:%s", formulaFormStr)
-			expression := formula.NewExpression(formulaFormStr)
-			calResult, err := expression.Evaluate()
-			if err != nil {
-				err = errors.New("计算失败:Err:" + err.Error() + ";formulaStr:" + formulaFormStr)
-				fmt.Println(err)
-				return err
-			}
-			calVal, err := calResult.Float64()
-			if err != nil {
-				err = errors.New("计算失败:获取计算值失败 Err:" + err.Error() + ";formulaStr:" + formulaFormStr)
-				fmt.Println(err)
-				return err
-			}
-
-			saveValue := utils.SubFloatToString(calVal, 4)
-			if existVal, ok := dataMap[sk]; !ok {
-				dataTime, _ := time.Parse(utils.FormatDate, sk)
-				timestamp := dataTime.UnixNano() / 1e6
-				timeStr := fmt.Sprintf("%d", timestamp)
-
-				if _, existOk := existDataMap[sk]; !existOk {
-					addSql += GetAddSql(edbInfoIdStr, edbCode, sk, timeStr, saveValue)
-					isAdd = true
-				}
-				existDataMap[sk] = sk
-			} else {
-				if existVal != saveValue {
-					sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-					sql = fmt.Sprintf(sql, dataTableName)
-					err = tx.Exec(sql, saveValue, edbInfoId, sk).Error
-					//_, err = o.Raw(sql, saveValue, edbInfoId, sk).Exec()
-					if err != nil {
-						return err
-					}
-				}
-			}
-		}
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		//_, err = o.Raw(addSql).Exec()
-		if err != nil {
-			fmt.Println("RefreshAllCalculate add Err", err.Error())
-			return
-		}
-	}
-	return
-}
-
-func CheckFormula(formula string) map[string]string {
-	mathFormula := []string{"MAX", "MIN", "ABS", "ACOS", "ASIN", "CEIL", "MOD", "POW", "ROUND", "SIGN", "SIN", "TAN", "LOG10", "LOG2", "LOG"}
-
-	str := strings.ToUpper(formula)
-	for _, v := range mathFormula {
-		str = strings.Replace(str, v, "", -1)
-	}
-	str = strings.Replace(str, "(", "", -1)
-	str = strings.Replace(str, ")", "", -1)
-
-	byteMap := make(map[string]string)
-	for i := 0; i < len(str); i++ {
-		byteInt := str[i]
-		if byteInt >= 65 && byteInt <= 90 {
-			byteStr := string(byteInt)
-			if _, ok := byteMap[byteStr]; !ok {
-				byteMap[byteStr] = byteStr
-			}
-		}
-	}
-	return byteMap
-}
-
-func GetFormulaMap() map[string]string {
-	funMap := make(map[string]string)
-	funMap["MAX"] = "[@@]"
-	funMap["MIN"] = "[@!]"
-	funMap["ABS"] = "[@#]"
-	funMap["CEIL"] = "[@$]"
-	funMap["COS"] = "[@%]"
-	funMap["FLOOR"] = "[@^]"
-	funMap["MOD"] = "[@&]"
-	funMap["POW"] = "[@*]"
-	funMap["ROUND"] = "[@(]"
-	return funMap
-}
-
-func ReplaceFormula(edbInfoIdArr []*edbInfoModel.EdbInfo, valArr map[int]float64, formulaMap map[string]string, formulaStr string, edbInfoIdBytes []string) string {
-	funMap := GetFormulaMap()
-	for k, v := range funMap {
-		formulaStr = strings.Replace(formulaStr, k, v, -1)
-	}
-
-	replaceCount := 0
-	for dk, dv := range edbInfoIdArr {
-		if dk == 0 {
-			dKey := edbInfoIdBytes[dk]
-			if _, ok := formulaMap[dKey]; ok { //公式中存在
-				if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
-					dvStr := fmt.Sprintf("%v", val)
-					formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
-					replaceCount++
-				}
-			}
-		}
-		if dk == 1 {
-			dKey := edbInfoIdBytes[dk]
-			if _, ok := formulaMap[dKey]; ok { //公式中存在
-				if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
-					dvStr := fmt.Sprintf("%v", val)
-					formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
-					replaceCount++
-				}
-			}
-		}
-		if dk == 2 {
-			dKey := edbInfoIdBytes[dk]
-			if _, ok := formulaMap[dKey]; ok { //公式中存在
-				if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
-					dvStr := fmt.Sprintf("%v", val)
-					formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
-					replaceCount++
-				}
-			}
-		}
-		if dk == 3 {
-			dKey := edbInfoIdBytes[dk]
-			if _, ok := formulaMap[dKey]; ok { //公式中存在
-				if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
-					dvStr := fmt.Sprintf("%v", val)
-					formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
-					replaceCount++
-				}
-			}
-		}
-		if dk == 4 {
-			dKey := edbInfoIdBytes[dk]
-			if _, ok := formulaMap[dKey]; ok { //公式中存在
-				if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
-					dvStr := fmt.Sprintf("%v", val)
-					formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
-					replaceCount++
-				}
-			}
-		}
-		if dk == 5 {
-			dKey := edbInfoIdBytes[dk]
-			if _, ok := formulaMap[dKey]; ok { //公式中存在
-				if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
-					dvStr := fmt.Sprintf("%v", val)
-					formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
-					replaceCount++
-				}
-			}
-		}
-		if dk == 6 {
-			dKey := edbInfoIdBytes[dk]
-			if _, ok := formulaMap[dKey]; ok { //公式中存在
-				if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
-					dvStr := fmt.Sprintf("%v", val)
-					formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
-					replaceCount++
-				}
-			}
-		}
-		if dk == 7 {
-			dKey := edbInfoIdBytes[dk]
-			if _, ok := formulaMap[dKey]; ok { //公式中存在
-				if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
-					dvStr := fmt.Sprintf("%v", val)
-					formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
-					replaceCount++
-				}
-			}
-		}
-		if dk == 8 {
-			dKey := edbInfoIdBytes[dk]
-			if _, ok := formulaMap[dKey]; ok { //公式中存在
-				if val, valOk := valArr[dv.EdbInfoId]; valOk { //值存在
-					dvStr := fmt.Sprintf("%v", val)
-					formulaStr = strings.Replace(formulaStr, dKey, dvStr, -1)
-					replaceCount++
-				}
-			}
-		}
-	}
-	for k, v := range funMap {
-		formulaStr = strings.Replace(formulaStr, v, k, -1)
-	}
-	if replaceCount == len(formulaMap) {
-		return formulaStr
-	} else {
-		return ""
-	}
-}
-
-func RefreshAllCalculateLjzzy(edbInfoId, source int, fromEdbInfo *edbInfoModel.EdbInfo, edbCode, startDate, endDate string) (err error) {
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	if err != nil {
-		return
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	fmt.Println(edbInfoIdStr)
-	//计算数据
-	var condition string
-	var pars []interface{}
-	condition += " AND edb_info_id=? "
-	pars = append(pars, fromEdbInfo.EdbInfoId)
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	dataList, err := edbDataModel.GetEdbDataListAll(condition, pars, fromEdbInfo.Source, 1)
-	if err != nil {
-		return err
-	}
-
-	yearMap := make(map[int]map[int]*edbDataModel.EdbInfoSearchData)
-	dataLen := len(dataList)
-	for i := 0; i < dataLen; i++ {
-		item := dataList[i]
-		//日其中获取年
-		itemDate, err := time.Parse(utils.FormatDate, item.DataTime)
-		if err != nil {
-			return err
-		}
-		year := itemDate.Year()
-		month := int(itemDate.Month())
-		if monthMap, yok := yearMap[year]; yok {
-			monthMap[month] = item
-			yearMap[year] = monthMap
-		} else {
-			monthMap = make(map[int]*edbDataModel.EdbInfoSearchData)
-			monthMap[month] = item
-			yearMap[year] = monthMap
-		}
-	}
-
-	addSql := ` INSERT INTO edb_data_calculate_ljzzy(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	//获取指标所有数据
-	existDataList := make([]*edbDataModel.EdbDataBase, 0)
-	dataTableName := edbDataModel.GetEdbDataTableName(source)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&existDataList).Error
-	//_, err = o.Raw(sql, edbInfoId).QueryRows(&existDataList)
-	if err != nil {
-		return err
-	}
-	dataMap := make(map[string]string)
-	for _, v := range existDataList {
-		dataMap[v.DataTime] = v.Value
-	}
-	existDataMap := make(map[string]string)
-
-	for yk, yv := range yearMap {
-		_, oneMonthOk := yv[1]
-		_, twoMonthOk := yv[2]
-		if !oneMonthOk && !twoMonthOk {
-			continue
-		}
-		for i := 1; i <= 12; i++ {
-			//fmt.Println(yk, i, yv[i])
-			dataCurrentItem := yv[i]
-			var date string
-			var val float64
-			if i == 1 || i == 2 {
-				if _, mok := yv[1]; mok { //1月有值
-					if i == 1 {
-						date = dataCurrentItem.DataTime
-						val, _ = decimal.NewFromFloat(dataCurrentItem.Value).Float64() //a.Div(b).Float64()
-					}
-					if i == 2 {
-						dataOneItem := yv[1]
-						if dataCurrentItem != nil && dataOneItem != nil {
-							date = dataCurrentItem.DataTime
-							twoMonth := decimal.NewFromFloat(dataCurrentItem.Value)
-							oneMonth := decimal.NewFromFloat(dataOneItem.Value)
-							val, _ = twoMonth.Sub(oneMonth).Float64()
-						}
-					}
-				} else { //1月无值
-					dataTwoItem := yv[2]
-					if i == 1 {
-						date = strconv.Itoa(yk) + "-01-31"
-						a := decimal.NewFromFloat(dataTwoItem.Value)
-						b := decimal.NewFromFloat(2.0)
-						val, _ = a.Div(b).Float64()
-					}
-					if i == 2 {
-						date = dataCurrentItem.DataTime
-						a := decimal.NewFromFloat(dataTwoItem.Value)
-						b := decimal.NewFromFloat(2.0)
-						val, _ = a.Div(b).Float64()
-					}
-				}
-			} else {
-				dataPreItem := yv[i-1]
-				if dataCurrentItem != nil && dataPreItem != nil {
-					date = dataCurrentItem.DataTime
-					//val =  dataCurrentItem.Value - dataPreItem.Value
-					a := decimal.NewFromFloat(dataCurrentItem.Value)
-					b := decimal.NewFromFloat(dataPreItem.Value)
-					val, _ = a.Sub(b).Float64()
-				}
-			}
-			if date != "" {
-				saveValue := utils.SubFloatToString(val, 4)
-				//判断数据是否存在
-				if existVal, ok := dataMap[date]; !ok {
-					dataTime, _ := time.Parse(utils.FormatDate, date)
-					timestamp := dataTime.UnixNano() / 1e6
-					timeStr := fmt.Sprintf("%d", timestamp)
-					if _, existOk := existDataMap[date]; !existOk {
-						addSql += GetAddSql(edbInfoIdStr, edbCode, date, timeStr, saveValue)
-						isAdd = true
-					}
-					existDataMap[date] = date
-				} else {
-					if existVal != saveValue {
-						sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-						sql = fmt.Sprintf(sql, dataTableName)
-						err = tx.Exec(sql, saveValue, edbInfoId, date).Error
-						//_, err = o.Raw(sql, saveValue, edbInfoId, date).Exec()
-						if err != nil {
-							return err
-						}
-					}
-				}
-			}
-		}
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		//_, err = o.Raw(addSql).Exec()
-		if err != nil {
-			fmt.Println("RefreshAllCalculateLjzzy add Err", err.Error())
-			return
-		}
-	}
-	return
-}
-
-func RefreshAllCalculateTbz(edbInfoId, source int, fromEdbInfo *edbInfoModel.EdbInfo, edbCode, startDate, endDate string) (err error) {
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	if err != nil {
-		return
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-
-	//计算数据
-	var condition string
-	var pars []interface{}
-	condition += " AND edb_info_id=? "
-	pars = append(pars, fromEdbInfo.EdbInfoId)
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-	fmt.Println("GetEdbDataListAll--start")
-	dataList, err := edbDataModel.GetEdbDataListAll(condition, pars, fromEdbInfo.Source, 0)
-	if err != nil {
-		return err
-	}
-	fmt.Println("GetEdbDataListAll--end")
-	var dateArr []string
-	dataMap := make(map[string]*edbDataModel.EdbInfoSearchData)
-	for _, v := range dataList {
-		dateArr = append(dateArr, v.DataTime)
-		dataMap[v.DataTime] = v
-	}
-	fmt.Println("source:", source)
-	//获取指标所有数据
-	existDataList := make([]*edbDataModel.EdbDataBase, 0)
-	dataTableName := edbDataModel.GetEdbDataTableName(source)
-	fmt.Println("dataTableName:", dataTableName)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&existDataList).Error
-	//_, err = o.Raw(sql, edbInfoId).QueryRows(&existDataList)
-	if err != nil {
-		return err
-	}
-	existDataMap := make(map[string]string)
-	for _, v := range existDataList {
-		existDataMap[v.DataTime] = v.Value
-	}
-	//fmt.Println("existDataMap:", existDataMap)
-	addSql := ` INSERT INTO edb_data_calculate_tbz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	existAddDataMap := make(map[string]string)
-	for _, av := range dateArr {
-		currentItem := dataMap[av]
-		if currentItem != nil {
-			//当前日期
-			currentDate, err := time.Parse(utils.FormatDate, av)
-			if err != nil {
-				return err
-			}
-			//上一年的日期
-			preDate := currentDate.AddDate(-1, 0, 0)
-			preDateStr := preDate.Format(utils.FormatDate)
-			if findItem, ok := dataMap[preDateStr]; ok { //上一年同期找到
-				//dataTime, _ := time.Parse(utils.FormatDate, date)
-				timestamp := currentDate.UnixNano() / 1e6
-				timestampStr := fmt.Sprintf("%d", timestamp)
-				val := TbzDiv(currentItem.Value, findItem.Value)
-				if existVal, ok := existDataMap[av]; !ok {
-					if _, existOk := existAddDataMap[av]; !existOk {
-						addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-						isAdd = true
-					}
-					existAddDataMap[av] = av
-				} else {
-					if existVal != val {
-						sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-						sql = fmt.Sprintf(sql, dataTableName)
-						err = tx.Exec(sql, val, edbInfoId, av).Error
-						//_, err = o.Raw(sql, val, edbInfoId, av).Exec()
-						if err != nil {
-							return err
-						}
-					}
-				}
-				continue
-			} else {
-				if fromEdbInfo.Frequency == "月度" { //向上和向下,各找一个月
-					for i := 0; i <= 35; i++ {
-						nextDateDay := preDate.AddDate(0, 0, i)
-						nextDateDayStr := nextDateDay.Format(utils.FormatDate)
-						if findItem, ok := dataMap[nextDateDayStr]; ok { //上一年同期->下一个月找到
-							timestamp := currentDate.UnixNano() / 1e6
-							timestampStr := fmt.Sprintf("%d", timestamp)
-							val := TbzDiv(currentItem.Value, findItem.Value)
-
-							if existVal, ok := existDataMap[av]; !ok {
-								if _, existOk := existAddDataMap[av]; !existOk {
-									addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-									isAdd = true
-								}
-								existAddDataMap[av] = av
-							} else {
-								if existVal != val {
-									sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-									sql = fmt.Sprintf(sql, dataTableName)
-									err = tx.Exec(sql, val, edbInfoId, av).Error
-									//_, err = o.Raw(sql, val, edbInfoId, av).Exec()
-									if err != nil {
-										return err
-									}
-								}
-							}
-							break
-						} else {
-							preDateDay := preDate.AddDate(0, 0, -i)
-							preDateDayStr := preDateDay.Format(utils.FormatDate)
-							if findItem, ok := dataMap[preDateDayStr]; ok { //上一年同期->上一个月找到
-								timestamp := currentDate.UnixNano() / 1e6
-								timestampStr := fmt.Sprintf("%d", timestamp)
-								val := TbzDiv(currentItem.Value, findItem.Value)
-
-								if existVal, ok := existDataMap[av]; !ok {
-									if _, existOk := existAddDataMap[av]; !existOk {
-										addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-										isAdd = true
-									}
-									existAddDataMap[av] = av
-								} else {
-									if existVal != val {
-										sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-										sql = fmt.Sprintf(sql, dataTableName)
-										err = tx.Exec(sql, val, edbInfoId, av).Error
-										//_, err = o.Raw(sql, val, edbInfoId, av).Exec()
-										if err != nil {
-											return err
-										}
-									}
-								}
-								break
-							}
-						}
-					}
-				} else if fromEdbInfo.Frequency == "季度" || fromEdbInfo.Frequency == "年度" {
-					if findItem, ok := dataMap[preDateStr]; ok { //上一年同期->下一个月找到
-						timestamp := currentDate.UnixNano() / 1e6
-						timestampStr := fmt.Sprintf("%d", timestamp)
-						val := TbzDiv(currentItem.Value, findItem.Value)
-
-						if existVal, ok := existDataMap[av]; !ok {
-							if _, existOk := existAddDataMap[av]; !existOk {
-								addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-								isAdd = true
-							}
-							existAddDataMap[av] = av
-						} else {
-							if existVal != val {
-								sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-								sql = fmt.Sprintf(sql, dataTableName)
-								err = tx.Exec(sql, val, edbInfoId, av).Error
-								//_, err = o.Raw(sql, val, edbInfoId, av).Exec()
-								if err != nil {
-									return err
-								}
-							}
-						}
-						break
-					}
-				} else {
-					nextDateDay := preDate.AddDate(0, 0, 1)
-					nextDateDayStr := nextDateDay.Format(utils.FormatDate)
-
-					preDateDay := preDate.AddDate(0, 0, -1)
-					preDateDayStr := preDateDay.Format(utils.FormatDate)
-
-					for i := 0; i < 35; i++ {
-						if i >= 1 {
-							nextDateDay = nextDateDay.AddDate(0, 0, i)
-							nextDateDayStr = nextDateDay.Format(utils.FormatDate)
-						}
-						if findItem, ok := dataMap[nextDateDayStr]; ok { //上一年同期->下一个月找到
-							timestamp := currentDate.UnixNano() / 1e6
-							timestampStr := fmt.Sprintf("%d", timestamp)
-							val := TbzDiv(currentItem.Value, findItem.Value)
-
-							if existVal, ok := existDataMap[av]; !ok {
-								if _, existOk := existAddDataMap[av]; !existOk {
-									addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-									isAdd = true
-								}
-								existAddDataMap[av] = av
-							} else {
-								if existVal != val {
-									sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-									sql = fmt.Sprintf(sql, dataTableName)
-									err = tx.Exec(sql, val, edbInfoId, av).Error
-									//_, err = o.Raw(sql, val, edbInfoId, av).Exec()
-									if err != nil {
-										return err
-									}
-								}
-							}
-							break
-						} else {
-							if i >= 1 {
-								preDateDay = preDate.AddDate(0, 0, -i)
-								preDateDayStr = nextDateDay.Format(utils.FormatDate)
-							}
-							if findItem, ok := dataMap[preDateDayStr]; ok { //上一年同期->上一个月找到
-								timestamp := currentDate.UnixNano() / 1e6
-								timestampStr := fmt.Sprintf("%d", timestamp)
-								val := TbzDiv(currentItem.Value, findItem.Value)
-
-								if existVal, ok := existDataMap[av]; !ok {
-									if _, existOk := existAddDataMap[av]; !existOk {
-										addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-										isAdd = true
-									}
-									existAddDataMap[av] = av
-								} else {
-									if existVal != val {
-										sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-										sql = fmt.Sprintf(sql, dataTableName)
-										err = tx.Exec(sql, val, edbInfoId, av).Error
-										//_, err = o.Raw(sql, val, edbInfoId, av).Exec()
-										if err != nil {
-											return err
-										}
-									}
-								}
-								break
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		//_, err = o.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
-
-func TbzDiv(a, b float64) string {
-	var valStr string
-	if b != 0 {
-		af := decimal.NewFromFloat(float64(a))
-		bf := decimal.NewFromFloat(float64(b))
-		val, _ := af.Div(bf).Float64()
-		val = val - 1
-		valStr = utils.SubFloatToString(val, 4)
-	} else {
-		valStr = "0"
-	}
-	return valStr
-}
-
-//刷新全部同差值数据
-func RefreshAllCalculateTcz(edbInfoId, source int, fromEdbInfo *edbInfoModel.EdbInfo, edbCode, startDate, endDate string) (err error) {
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	if err != nil {
-		return
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-
-	//计算数据
-	var condition string
-	var pars []interface{}
-	condition += " AND edb_info_id=? "
-	pars = append(pars, fromEdbInfo.EdbInfoId)
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	dataList, err := edbDataModel.GetEdbDataListAll(condition, pars, fromEdbInfo.Source, 0)
-	if err != nil {
-		return err
-	}
-	var dateArr []string
-	dataMap := make(map[string]*edbDataModel.EdbInfoSearchData)
-	for _, v := range dataList {
-		dateArr = append(dateArr, v.DataTime)
-		dataMap[v.DataTime] = v
-	}
-	//获取指标所有数据
-	existDataList := make([]*edbDataModel.EdbDataBase, 0)
-	dataTableName := edbDataModel.GetEdbDataTableName(source)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&existDataList).Error
-	//_, err = o.Raw(sql, edbInfoId).QueryRows(&existDataList)
-	if err != nil {
-		return err
-	}
-	existDataMap := make(map[string]string)
-	for _, v := range existDataList {
-		existDataMap[v.DataTime] = v.Value
-	}
-
-	addSql := ` INSERT INTO edb_data_calculate_tcz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	existAddDataMap := make(map[string]string)
-	for _, av := range dateArr {
-		currentItem := dataMap[av]
-		if currentItem != nil {
-			//当前日期
-			currentDate, err := time.Parse(utils.FormatDate, av)
-			if err != nil {
-				return err
-			}
-			//上一年的日期
-			preDate := currentDate.AddDate(-1, 0, 0)
-			preDateStr := preDate.Format(utils.FormatDate)
-			if findItem, ok := dataMap[preDateStr]; ok { //上一年同期找到
-				//dataTime, _ := time.Parse(utils.FormatDate, date)
-				timestamp := currentDate.UnixNano() / 1e6
-				timestampStr := fmt.Sprintf("%d", timestamp)
-				val := TczSub(currentItem.Value, findItem.Value)
-
-				if existVal, ok := existDataMap[av]; !ok {
-					if _, existOk := existAddDataMap[av]; !existOk {
-						addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-						isAdd = true
-					}
-					existAddDataMap[av] = av
-				} else {
-					if existVal != val {
-						sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-						sql = fmt.Sprintf(sql, dataTableName)
-						err = tx.Exec(sql, val, edbInfoId, av).Error
-						//_, err = o.Raw(sql, val, edbInfoId, av).Exec()
-						if err != nil {
-							return err
-						}
-					}
-				}
-				//utils.FileLog.Info("同期找到:" + av + ";" + preDateStr)
-				continue
-			} else {
-				if fromEdbInfo.Frequency == "月度" { //向上和向下,各找一个月
-					for i := 0; i <= 35; i++ {
-						nextDateDay := preDate.AddDate(0, 0, 1)
-						nextDateDayStr := nextDateDay.Format(utils.FormatDate)
-						if findItem, ok := dataMap[nextDateDayStr]; ok { //上一年同期->下一个月找到
-							timestamp := currentDate.UnixNano() / 1e6
-							timestampStr := fmt.Sprintf("%d", timestamp)
-							val := TczSub(currentItem.Value, findItem.Value)
-
-							if existVal, ok := existDataMap[av]; !ok {
-								if _, existOk := existAddDataMap[av]; !existOk {
-									addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-									isAdd = true
-								}
-								existAddDataMap[av] = av
-							} else {
-								if existVal != val {
-									sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-									sql = fmt.Sprintf(sql, dataTableName)
-									err = tx.Exec(sql, val, edbInfoId, av).Error
-									//_, err = o.Raw(sql, val, edbInfoId, av).Exec()
-									if err != nil {
-										return err
-									}
-								}
-							}
-							break
-						} else {
-							preDateDay := preDate.AddDate(0, 0, -1)
-							preDateDayStr := preDateDay.Format(utils.FormatDate)
-							if findItem, ok := dataMap[preDateDayStr]; ok { //上一年同期->上一个月找到
-								timestamp := currentDate.UnixNano() / 1e6
-								timestampStr := fmt.Sprintf("%d", timestamp)
-								val := TczSub(currentItem.Value, findItem.Value)
-
-								if existVal, ok := existDataMap[av]; !ok {
-									if _, existOk := existAddDataMap[av]; !existOk {
-										addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-										isAdd = true
-									}
-									existAddDataMap[av] = av
-								} else {
-									if existVal != val {
-										sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-										sql = fmt.Sprintf(sql, dataTableName)
-										err = tx.Exec(sql, val, edbInfoId, av).Error
-										//_, err = o.Raw(sql, val, edbInfoId, av).Exec()
-										if err != nil {
-											return err
-										}
-									}
-								}
-								break
-							}
-						}
-					}
-				} else if fromEdbInfo.Frequency == "季度" || fromEdbInfo.Frequency == "年度" {
-					if findItem, ok := dataMap[preDateStr]; ok { //上一年同期->下一个月找到
-						timestamp := currentDate.UnixNano() / 1e6
-						timestampStr := fmt.Sprintf("%d", timestamp)
-						val := TczSub(currentItem.Value, findItem.Value)
-
-						if existVal, ok := existDataMap[av]; !ok {
-							if _, existOk := existAddDataMap[av]; !existOk {
-								addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-								isAdd = true
-							}
-							existAddDataMap[av] = av
-						} else {
-							if existVal != val {
-								sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-								sql = fmt.Sprintf(sql, dataTableName)
-								err = tx.Exec(sql, val, edbInfoId, av).Error
-								//_, err = o.Raw(sql, val, edbInfoId, av).Exec()
-								if err != nil {
-									return err
-								}
-							}
-						}
-						break
-					}
-				} else {
-					for i := 0; i < 35; i++ {
-						nextDateDay := preDate.AddDate(0, 0, 1)
-						nextDateDayStr := nextDateDay.Format(utils.FormatDate)
-						if findItem, ok := dataMap[nextDateDayStr]; ok { //上一年同期->下一个月找到
-							timestamp := currentDate.UnixNano() / 1e6
-							timestampStr := fmt.Sprintf("%d", timestamp)
-							val := TczSub(currentItem.Value, findItem.Value)
-
-							if existVal, ok := existDataMap[av]; !ok {
-								if _, existOk := existAddDataMap[av]; !existOk {
-									addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-									isAdd = true
-								}
-								existAddDataMap[av] = av
-							} else {
-								if existVal != val {
-									sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-									sql = fmt.Sprintf(sql, dataTableName)
-									err = tx.Exec(sql, val, edbInfoId, av).Error
-									//_, err = o.Raw(sql, val, edbInfoId, av).Exec()
-									if err != nil {
-										return err
-									}
-								}
-							}
-							break
-						} else {
-							preDateDay := preDate.AddDate(0, 0, -1)
-							preDateDayStr := preDateDay.Format(utils.FormatDate)
-							if findItem, ok := dataMap[preDateDayStr]; ok { //上一年同期->上一个月找到
-								timestamp := currentDate.UnixNano() / 1e6
-								timestampStr := fmt.Sprintf("%d", timestamp)
-								val := TczSub(currentItem.Value, findItem.Value)
-
-								if existVal, ok := existDataMap[av]; !ok {
-									if _, existOk := existAddDataMap[av]; !existOk {
-										addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, val)
-										isAdd = true
-									}
-									existAddDataMap[av] = av
-								} else {
-									if existVal != val {
-										sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-										sql = fmt.Sprintf(sql, dataTableName)
-										err = tx.Exec(sql, val, edbInfoId, av).Error
-										//_, err = o.Raw(sql, val, edbInfoId, av).Exec()
-										if err != nil {
-											return err
-										}
-									}
-								}
-								break
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		//_, err = o.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
-
-func TczSub(a, b float64) string {
-	af := decimal.NewFromFloat(float64(a))
-	fmt.Println(af)
-	bf := decimal.NewFromFloat(float64(b))
-	val, _ := af.Sub(bf).Float64()
-	valStr := utils.SubFloatToString(val, 4)
-	return valStr
-}
-
-//刷新全部N数值移动平均计算
-func RefreshAllCalculateNszydpjjs(edbInfoId, source, formulaInt int, fromEdbInfo *edbInfoModel.EdbInfo, edbCode, startDate string) (err error) {
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			fmt.Println("RefreshCalculateNszydpjjs Err:" + err.Error())
-			//utils.FileLog.Info("RefreshCalculateNszydpjjs Err:" + err.Error())
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	if err != nil {
-		return
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	fmt.Println(edbInfoIdStr)
-	//计算数据
-	var condition string
-	var pars []interface{}
-	condition += " AND edb_info_id=? "
-	pars = append(pars, edbInfoId)
-
-	existDataList, err := edbDataModel.GetEdbDataListAll(condition, pars, source, 0)
-	if err != nil {
-		fmt.Println("existDataList GetEdbDataListAll Err:" + err.Error())
-		return err
-	}
-
-	existDataMap := make(map[string]*edbDataModel.EdbInfoSearchData)
-	for _, v := range existDataList {
-		existDataMap[v.DataTime] = v
-	}
-
-	//计算来源数据
-	var fromCondition string
-	var fromPars []interface{}
-	fromCondition += " AND edb_info_id=? "
-	fromPars = append(fromPars, fromEdbInfo.EdbInfoId)
-	fromCondition += " AND data_time>=? "
-	fromPars = append(fromPars, startDate)
-
-	fmt.Println("fromPars:", fromPars)
-	fromDataList, err := edbDataModel.GetEdbDataListAll(fromCondition, fromPars, fromEdbInfo.Source, 0)
-	if err != nil {
-		fmt.Println("from GetEdbDataListAll Err:" + err.Error())
-		return err
-	}
-
-	var fromDateArr []string
-	fromDataMap := make(map[string]*edbDataModel.EdbInfoSearchData)
-	for _, v := range fromDataList {
-		fromDateArr = append(fromDateArr, v.DataTime)
-		fromDataMap[v.DataTime] = v
-	}
-
-	addSql := ` INSERT INTO edb_data_calculate_nszydpjjs(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	dataTableName := edbDataModel.GetEdbDataTableName(source)
-	arrLen := len(fromDateArr)
-	existAddDataMap := make(map[string]string)
-	for ak, av := range fromDateArr {
-		//处理第一个值
-		var valArr []float64
-		if findItem, ok := fromDataMap[av]; ok {
-			valArr = append(valArr, findItem.Value)
-		} else {
-			continue
-		}
-		if ak+1 != arrLen {
-			//处理除第一个值之外的N-1个值
-			for i := 1; i < formulaInt; i++ {
-				arrIndex := ak + i
-				if arrIndex >= arrLen {
-					break
-				}
-				arrVal := fromDateArr[arrIndex]
-				if findItem, ok := fromDataMap[arrVal]; ok {
-					valArr = append(valArr, findItem.Value)
-				} else {
-					continue
-				}
-			}
-		}
-		valArrLen := len(valArr)
-		//var totalVal float64
-		totalVal := decimal.NewFromFloat(0.00)
-		for _, v := range valArr {
-			newDecimal := decimal.NewFromFloat(v)
-			totalVal = totalVal.Add(newDecimal)
-		}
-		af := totalVal //decimal.NewFromFloat(totalVal)
-		bf := decimal.NewFromFloat(float64(valArrLen))
-		val, _ := af.Div(bf).Float64()
-		valStr := utils.SubFloatToString(val, 4)
-
-		if existVal, existOk := existDataMap[av]; !existOk {
-			currentDate, err := time.Parse(utils.FormatDate, av)
-			if err != nil {
-				return err
-			}
-			timestamp := currentDate.UnixNano() / 1e6
-			timestampStr := fmt.Sprintf("%d", timestamp)
-			if _, existOk := existAddDataMap[av]; !existOk {
-				addSql += GetAddSql(edbInfoIdStr, edbCode, av, timestampStr, valStr)
-				isAdd = true
-			}
-			existAddDataMap[av] = av
-		} else {
-			saveValue := utils.SubFloatToString(existVal.Value, 30)
-			if saveValue != valStr {
-				sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-				sql = fmt.Sprintf(sql, dataTableName)
-				err = tx.Exec(sql, val, edbInfoId, av).Error
-				//_, err = o.Raw(sql, val, edbInfoId, av).Exec()
-				if err != nil {
-					return err
-				}
-			}
-		}
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		//utils.FileLog.Info("addSql:" + addSql)
-		//_, err = o.Raw(addSql).Exec()
-		err = tx.Exec(addSql).Error
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
-
-//刷新所有环比值数据
-func RefreshAllCalculateHbz(edbInfoId, source int, fromEdbInfo *edbInfoModel.EdbInfo, edbCode, startDate, endDate string, formulaInt int) (err error) {
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	if err != nil {
-		return
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-
-	//计算数据
-	var condition string
-	var pars []interface{}
-	condition += " AND edb_info_id=? "
-	pars = append(pars, fromEdbInfo.EdbInfoId)
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	dataList, err := edbDataModel.GetEdbDataListAll(condition, pars, fromEdbInfo.Source, 0)
-	if err != nil {
-		return err
-	}
-	var dateArr []string
-	dataMap := make(map[string]*edbDataModel.EdbInfoSearchData)
-	for _, v := range dataList {
-		dateArr = append(dateArr, v.DataTime)
-		dataMap[v.DataTime] = v
-	}
-	fmt.Println("source:", source)
-	//获取指标所有数据
-	existDataList := make([]*edbDataModel.EdbDataBase, 0)
-	dataTableName := edbDataModel.GetEdbDataTableName(source)
-	fmt.Println("dataTableName:", dataTableName)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&existDataList).Error
-	//_, err = o.Raw(sql, edbInfoId).QueryRows(&existDataList)
-	if err != nil {
-		return err
-	}
-	existDataMap := make(map[string]string)
-	for _, v := range existDataList {
-		existDataMap[v.DataTime] = v.Value
-	}
-	addSql := ` INSERT INTO edb_data_calculate_hbz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	dataLen := len(dataList)
-	fmt.Println("dataLen:", dataLen)
-	for i := 0; i < dataLen; i++ {
-		j := i + formulaInt
-		if j < dataLen {
-			//当期
-			currentItem := dataList[i]
-			preItem := dataList[j]
-			if currentItem != nil && preItem != nil {
-				existKey := edbCode + currentItem.DataTime
-
-				if _, ok := existMap[existKey]; !ok {
-					currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
-					timestamp := currentDate.UnixNano() / 1e6
-					timestampStr := fmt.Sprintf("%d", timestamp)
-					val := HbzDiv(currentItem.Value, preItem.Value)
-					if val != "" {
-						if existVal, findOk := existDataMap[currentItem.DataTime]; !findOk {
-							addSql += GetAddSql(edbInfoIdStr, edbCode, currentItem.DataTime, timestampStr, val)
-							isAdd = true
-						} else {
-							if existVal != val {
-								sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-								sql = fmt.Sprintf(sql, dataTableName)
-								err = tx.Exec(sql, val, edbInfoId, currentItem.DataTime).Error
-								//_, err = o.Raw(sql, val, edbInfoId, currentItem.DataTime).Exec()
-								if err != nil {
-									return err
-								}
-							}
-						}
-					}
-				}
-				existMap[existKey] = currentItem.DataTime
-			}
-		}
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		//_, err = o.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
-
-//环比值,current:当期,pre:上期 公式: (当期-上期)/上期
-func HbzDiv(current, pre float64) string {
-	if pre == 0 {
-		return ""
-	}
-	currentVal := decimal.NewFromFloat(float64(current))
-	preVal := decimal.NewFromFloat(float64(pre))
-	val, _ := currentVal.Sub(preVal).Div(preVal).Float64()
-	valStr := utils.SubFloatToString(val, 4)
-	return valStr
-}
-
-
-//刷新所有环差值数据
-func RefreshAllCalculateHcz(edbInfoId, source int, fromEdbInfo *edbInfoModel.EdbInfo, edbCode, startDate, endDate string, formulaInt int) (err error) {
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	if err != nil {
-		return
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-
-	//计算数据
-	var condition string
-	var pars []interface{}
-	condition += " AND edb_info_id=? "
-	pars = append(pars, fromEdbInfo.EdbInfoId)
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	dataList, err := edbDataModel.GetEdbDataListAll(condition, pars, fromEdbInfo.Source, 0)
-	if err != nil {
-		return err
-	}
-	var dateArr []string
-	dataMap := make(map[string]*edbDataModel.EdbInfoSearchData)
-	for _, v := range dataList {
-		dateArr = append(dateArr, v.DataTime)
-		dataMap[v.DataTime] = v
-	}
-	fmt.Println("source:", source)
-	//获取指标所有数据
-	existDataList := make([]*edbDataModel.EdbDataBase, 0)
-	dataTableName := edbDataModel.GetEdbDataTableName(source)
-	fmt.Println("dataTableName:", dataTableName)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&existDataList).Error
-	//_, err = o.Raw(sql, edbInfoId).QueryRows(&existDataList)
-	if err != nil {
-		return err
-	}
-	existDataMap := make(map[string]string)
-	for _, v := range existDataList {
-		existDataMap[v.DataTime] = v.Value
-	}
-	//fmt.Println("existDataMap:", existDataMap)
-	addSql := ` INSERT INTO edb_data_calculate_hcz(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-	existMap := make(map[string]string)
-	dataLen := len(dataList)
-	fmt.Println("dataLen:", dataLen)
-	for i := 0; i < dataLen; i++ {
-		j := i + formulaInt
-		if j < dataLen {
-			//当期
-			currentItem := dataList[i]
-			preItem := dataList[j]
-			if currentItem != nil && preItem != nil {
-				existKey := edbCode + currentItem.DataTime
-				if _, ok := existMap[existKey]; !ok {
-					currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
-					timestamp := currentDate.UnixNano() / 1e6
-					timestampStr := fmt.Sprintf("%d", timestamp)
-					val := HczDiv(currentItem.Value, preItem.Value)
-					if val != "" {
-						if existVal, findOk := existDataMap[currentItem.DataTime]; !findOk {
-							addSql += GetAddSql(edbInfoIdStr, edbCode, currentItem.DataTime, timestampStr, val)
-							isAdd = true
-						} else {
-							if existVal != val {
-								sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-								sql = fmt.Sprintf(sql, dataTableName)
-								err = tx.Exec(sql, val, edbInfoId, currentItem.DataTime).Error
-								//_, err = o.Raw(sql, val, edbInfoId, currentItem.DataTime).Exec()
-								if err != nil {
-									return err
-								}
-							}
-						}
-					}
-				}
-				existMap[existKey] = currentItem.DataTime
-			}
-		}
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		//_, err = o.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
-
-//环差值,current:当期,pre:上期 公式:当期-上期
-func HczDiv(current, pre float64) string {
-	if pre == 0 {
-		return ""
-	}
-	currentVal := decimal.NewFromFloat(current)
-	preVal := decimal.NewFromFloat(pre)
-	val, _ := currentVal.Sub(preVal).Float64()
-	valStr := utils.SubFloatToString(val, 4)
-	return valStr
-}
-
-
-//刷新所有变频数据
-func RefreshAllCalculateBp(edbInfoId, source int, fromEdbInfo *edbInfoModel.EdbInfo, edbCode, startDate, endDate string) (err error) {
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	if err != nil {
-		return
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-
-	//计算数据
-	var condition string
-	var pars []interface{}
-	condition += " AND edb_info_id=? "
-	pars = append(pars, fromEdbInfo.EdbInfoId)
-
-	if startDate != "" {
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
-	}
-	if endDate != "" {
-		condition += " AND data_time<=? "
-		pars = append(pars, endDate)
-	}
-
-	dataList, err := edbDataModel.GetEdbDataListAll(condition, pars, fromEdbInfo.Source, 0)
-	if err != nil {
-		return err
-	}
-	var dateArr []string
-	dataMap := make(map[string]*edbDataModel.EdbInfoSearchData)
-	for _, v := range dataList {
-		dateArr = append(dateArr, v.DataTime)
-		dataMap[v.DataTime] = v
-	}
-	fmt.Println("source:", source)
-	//获取指标所有数据
-	existDataList := make([]*edbDataModel.EdbDataBase, 0)
-	dataTableName := edbDataModel.GetEdbDataTableName(source)
-	fmt.Println("dataTableName:", dataTableName)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	err = tx.Raw(sql, edbInfoId).Scan(&existDataList).Error
-	//_, err = o.Raw(sql, edbInfoId).QueryRows(&existDataList)
-	if err != nil {
-		return err
-	}
-	existDataMap := make(map[string]string)
-	for _, v := range existDataList {
-		existDataMap[v.DataTime] = v.Value
-	}
-	//fmt.Println("existDataMap:", existDataMap)
-	addSql := ` INSERT INTO edb_data_calculate_bp(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-	var isAdd bool
-
-	existMap := make(map[string]string)
-	dataLen := len(dataList)
-	for i := 0; i < dataLen; i++ {
-		//当期
-		currentItem := dataList[i]
-		currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
-		var day int
-		var preItem *edbDataModel.EdbInfoSearchData
-		var preDate time.Time
-		if i == 0 {
-			day = int(time.Now().Sub(currentDate).Hours() / float64(24))
-			preDate = time.Now()
-		} else {
-			j := i + 1
-			if j < dataLen {
-				preItem = dataList[j]
-				preDate, _ = time.Parse(utils.FormatDate, preItem.DataTime)
-				day = int(currentDate.Sub(preDate).Hours() / float64(24))
-			}
-		}
-		for k := 0; k <= day; k++ {
-			needDay := preDate.AddDate(0, 0, -k)
-			needDayStr := needDay.Format(utils.FormatDate)
-			existKey := edbCode + needDayStr
-			if _, ok := existMap[existKey]; !ok {
-				timestamp := needDay.UnixNano() / 1e6
-				timestampStr := fmt.Sprintf("%d", timestamp)
-				valStr := decimal.NewFromFloat(currentItem.Value).String()
-				if existVal, ok := existDataMap[needDayStr]; !ok {
-					addSql += GetAddSql(edbInfoIdStr, edbCode, needDayStr, timestampStr, valStr)
-				} else {
-					if existVal != valStr {
-						sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-						sql = fmt.Sprintf(sql, dataTableName)
-						err = tx.Exec(sql, valStr, edbInfoId, needDay).Error
-						//_, err = o.Raw(sql, valStr, edbInfoId, needDay).Exec()
-						if err != nil {
-							return err
-						}
-					}
-				}
-			}
-			existMap[existKey] = needDayStr
-		}
-		existKey := edbCode + currentItem.DataTime
-		if _, ok := existMap[existKey]; !ok {
-			currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
-			timestamp := currentDate.UnixNano() / 1e6
-			timestampStr := fmt.Sprintf("%d", timestamp)
-			valStr := decimal.NewFromFloat(currentItem.Value).String()
-			if existVal, ok := existDataMap[currentItem.DataTime]; !ok {
-				addSql += GetAddSql(edbInfoIdStr, edbCode, currentItem.DataTime, timestampStr, valStr)
-			} else {
-				if existVal != valStr {
-					sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-					sql = fmt.Sprintf(sql, dataTableName)
-					err = tx.Exec(sql, valStr, edbInfoId, currentItem.DataTime).Error
-					//_, err = o.Raw(sql, valStr, edbInfoId, currentItem.DataTime).Exec()
-					if err != nil {
-						return err
-					}
-				}
-			}
-		}
-		existMap[existKey] = currentItem.DataTime
-	}
-
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = tx.Exec(addSql).Error
-		//_, err = o.Raw(addSql).Exec()
-		if err != nil {
-			return err
-		}
-	}
-	return
-}
-
-
-// RefreshAllCalculateZjpj 刷新所有 直接拼接 数据
-func RefreshAllCalculateZjpj(edbInfo *edbInfoModel.EdbInfo) (err error) {
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	//查询当前指标现有的数据
-	var condition string
-	var pars []interface{}
-	condition += " AND edb_info_id=? "
-	pars = append(pars, edbInfo.EdbInfoId)
-
-	dataList, err := edbDataModel.GetAllEdbDataCalculateZjpjByEdbInfoId(edbInfo.EdbInfoId)
-	if err != nil {
-		return err
-	}
-	var dateArr []string
-	dataMap := make(map[string]*edbDataModel.EdbDataCalculateZjpj)
-	removeDataTimeMap := make(map[string]int) //需要移除的日期数据
-	for _, v := range dataList {
-		dateArr = append(dateArr, v.DataTime)
-		dataMap[v.DataTime] = v
-		removeDataTimeMap[v.DataTime] = 1
-	}
-
-	//查询关联指标信息
-	var existCondition string
-	var existPars []interface{}
-	existCondition += " AND edb_info_id=? "
-	existPars = append(existPars, edbInfo.EdbInfoId)
-	existList, err := edbDataModel.GetEdbInfoCalculateListByCondition(existCondition, existPars)
-	if err != nil {
-		err = errors.New("判断指标是否改变失败,Err:" + err.Error())
-		return
-	}
-
-	var existItemA, existItemB *edbDataModel.EdbInfoCalculateMapping
-	for _, existItem := range existList {
-		if existItem.FromTag == "A" {
-			existItemA = existItem
-		} else if existItem.FromTag == "B" {
-			existItemB = existItem
-		}
-	}
-
-	addDataList := make([]*edbDataModel.EdbDataCalculateZjpj, 0)
-	//第一个指标
-	{
-		var condition string
-		var pars []interface{}
-
-		condition += " AND data_time < ? AND edb_info_id=? "
-		pars = append(pars, edbInfo.CalculateFormula, existItemA.FromEdbInfoId)
-
-		//第一个指标的数据列表
-		firstDataList, tmpErr := edbDataModel.GetEdbDataListAll(condition, pars, existItemA.FromSource, 0)
-		if tmpErr != nil {
-			return tmpErr
-		}
-
-		for _, v := range firstDataList {
-			//校验待删除日期数据里面是否存在该元素,如果存在的话,那么移除该元素
-			if _, ok := removeDataTimeMap[v.DataTime]; ok {
-				delete(removeDataTimeMap, v.DataTime)
-			}
-			//时间戳
-			if edbData, ok := dataMap[v.DataTime]; ok {
-				if edbData.Value != v.Value {
-					//更新指标数据
-					edbData.Value = v.Value
-					tempErr := tx.Model(edbDataModel.EdbDataCalculateZjpj{}).Where("edb_data_id = ?", edbData.EdbDataId).Updates(edbDataModel.EdbDataCalculateZjpj{Value: v.Value}).Error
-					if tempErr != nil {
-						fmt.Println("tmpErr:", tmpErr)
-					}
-					//o.Update(edbData, "Value")
-				}
-			} else {
-				//时间戳
-				currentDate, _ := time.Parse(utils.FormatDate, v.DataTime)
-				timestamp := currentDate.UnixNano() / 1e6
-
-				edbDataZjpj := &edbDataModel.EdbDataCalculateZjpj{
-					EdbInfoId:     edbInfo.EdbInfoId,
-					EdbCode:       edbInfo.EdbCode,
-					DataTime:      v.DataTime,
-					Value:         v.Value,
-					Status:        1,
-					CreateTime:    time.Now(),
-					ModifyTime:    time.Now(),
-					DataTimestamp: timestamp,
-				}
-				addDataList = append(addDataList, edbDataZjpj)
-			}
-		}
-	}
-
-	//第二个指标
-	{
-		condition = ``
-		pars = make([]interface{}, 0)
-
-		condition += " AND data_time >= ? AND edb_info_id = ? "
-		pars = append(pars, edbInfo.CalculateFormula, existItemB.FromEdbInfoId)
-
-		//第二个指标的数据列表
-		secondDataList, tmpErr := edbDataModel.GetEdbDataListAll(condition, pars, existItemB.FromSource, 0)
-		if tmpErr != nil {
-			return tmpErr
-		}
-
-		for _, v := range secondDataList {
-			//校验待删除日期数据里面是否存在该元素,如果存在的话,那么移除该元素
-			if _, ok := removeDataTimeMap[v.DataTime]; ok {
-				delete(removeDataTimeMap, v.DataTime)
-			}
-
-			if edbData, ok := dataMap[v.DataTime]; ok {
-				if edbData.Value != v.Value {
-					//更新指标数据
-					edbData.Value = v.Value
-					edbData.ModifyTime = time.Now()
-					tempErr := tx.Model(edbDataModel.EdbDataCalculateZjpj{}).Where("edb_data_id = ?", edbData.EdbDataId).Updates(edbDataModel.EdbDataCalculateZjpj{Value: v.Value, ModifyTime: time.Now()}).Error
-					if tempErr != nil {
-						fmt.Println("tmpErr:", tmpErr)
-					}
-					//_, tmpErr := o.Update(edbData, "Value", "ModifyTime")
-					//if tmpErr != nil {
-					//	fmt.Println("tmpErr:", tmpErr)
-					//}
-				}
-			} else {
-				//时间戳
-				currentDate, _ := time.Parse(utils.FormatDate, v.DataTime)
-				timestamp := currentDate.UnixNano() / 1e6
-
-				edbDataZjpj := &edbDataModel.EdbDataCalculateZjpj{
-					EdbInfoId:     edbInfo.EdbInfoId,
-					EdbCode:       edbInfo.EdbCode,
-					DataTime:      v.DataTime,
-					Value:         v.Value,
-					Status:        1,
-					CreateTime:    time.Now(),
-					ModifyTime:    time.Now(),
-					DataTimestamp: timestamp,
-				}
-				addDataList = append(addDataList, edbDataZjpj)
-			}
-		}
-	}
-
-	//删除已经不存在的累计同比拼接指标数据(由于同比值当日的数据删除了)
-	{
-		removeDateList := make([]string, 0)
-		for dateTime := range removeDataTimeMap {
-			removeDateList = append(removeDateList, dateTime)
-		}
-		if len(removeDateList) > 0 {
-			removeDateStr := strings.Join(removeDateList, `","`)
-			removeDateStr = `"` + removeDateStr + `"`
-			//如果拼接指标变更了,那么需要删除所有的指标数据
-			tableName := edbDataModel.GetEdbDataTableName(edbInfo.Source)
-			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
-
-			err = tx.Exec(sql, edbInfo.EdbInfoId).Error
-			//_, err = o.Raw(sql, edbInfo.EdbInfoId).Exec()
-			if err != nil {
-				err = errors.New("删除不存在的直接拼接指标数据失败,Err:" + err.Error())
-				return
-			}
-		}
-	}
-
-	//数据入库
-	tmpAddDataList := make([]*edbDataModel.EdbDataCalculateZjpj, 0)
-	for _, v := range addDataList {
-		tmpAddDataList = append(tmpAddDataList, v)
-
-		if len(tmpAddDataList) >= 200 {
-			tmpErr := tx.Create(tmpAddDataList).Error
-			//_, tmpErr := o.InsertMulti(len(tmpAddDataList), tmpAddDataList)
-			if tmpErr != nil {
-				err = tmpErr
-				return
-			}
-			//重新初始化需要加入的数据切片
-			tmpAddDataList = make([]*edbDataModel.EdbDataCalculateZjpj, 0)
-		}
-	}
-	//最后如果还有需要新增的数据,那么就统一入库
-	if len(tmpAddDataList) > 0 {
-		tmpErr := tx.Create(tmpAddDataList).Error
-		//_, tmpErr := o.InsertMulti(len(tmpAddDataList), tmpAddDataList)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-	}
-	return
-}
-
-// RefreshAllCalculateLjztbpj 刷新所有 累计值同比拼接 数据
-func RefreshAllCalculateLjztbpj(edbInfo *edbInfoModel.EdbInfo) (err error) {
-	tx := global.MYSQL["data"].Begin()
-	defer func() {
-		if err != nil {
-			tx.Rollback()
-		} else {
-			tx.Commit()
-		}
-	}()
-
-	//查询当前指标现有的数据
-	var condition string
-	var pars []interface{}
-	condition += " AND edb_info_id=? "
-	pars = append(pars, edbInfo.EdbInfoId)
-
-	//所有的数据
-	dataList, err := edbDataModel.GetAllEdbDataCalculateLjztbpjByEdbInfoId(edbInfo.EdbInfoId)
-	if err != nil {
-		return err
-	}
-
-	//待拼接指标map
-	pjDataMap := make(map[string]float64)     //需要入库的数据
-	nowEdbDataMap := make(map[string]float64) //当前指标的数据(已经在库里了,不需要重新)
-	//拼接指标的日期切片数据
-	pjEdbDataTimeList := make([]string, 0)
-
-	dataMap := make(map[string]*edbDataModel.EdbDataCalculateLjztbpj)
-	for _, v := range dataList {
-		pjEdbDataTimeList = append(pjEdbDataTimeList, v.DataTime)
-		dataMap[v.DataTime] = v
-		nowEdbDataMap[v.DataTime] = v.Value
-	}
-
-	//查询关联指标信息
-	var existCondition string
-	var existPars []interface{}
-	existCondition += " AND edb_info_id=? "
-	existPars = append(existPars, edbInfo.EdbInfoId)
-	existList, err := edbDataModel.GetEdbInfoCalculateListByCondition(existCondition, existPars)
-	if err != nil {
-		err = errors.New("判断指标是否改变失败,Err:" + err.Error())
-		return
-	}
-
-	var existItemA, existItemB *edbDataModel.EdbInfoCalculateMapping
-	for _, existItem := range existList {
-		if existItem.FromTag == "A" {
-			existItemA = existItem
-		} else if existItem.FromTag == "B" {
-			existItemB = existItem
-		}
-	}
-	// 原数据开始计算日期
-	startCalculationDate, _ := time.ParseInLocation(utils.FormatDate, edbInfo.CalculateFormula, time.Local)
-
-	//待拼接指标
-	{
-		var condition string
-		var pars []interface{}
-
-		condition += " AND data_time <= ? AND edb_info_id=? "
-		pars = append(pars, startCalculationDate, existItemA.FromEdbInfoId)
-
-		//第一个指标的数据列表
-		firstDataList, tmpErr := edbDataModel.GetEdbDataListAll(condition, pars, existItemA.FromSource, 0)
-		if tmpErr != nil {
-			return tmpErr
-		}
-
-		for _, v := range firstDataList {
-			//时间戳
-			if edbData, ok := dataMap[v.DataTime]; ok {
-				if edbData.Value != v.Value {
-					//更新指标数据
-					edbData.Value = v.Value
-					//tempErr := tx.Model()
-					//o.Update(edbData, "Value")
-					tempErr := tx.Model(edbDataModel.EdbDataCalculateLjztbpj{}).Where("edb_data_id = ?", edbData.EdbDataId).Updates(edbDataModel.EdbDataCalculateLjztbpj{Value: v.Value}).Error
-					if tempErr != nil {
-						fmt.Println("tmpErr:", tmpErr)
-					}
-
-					//将新的数据存入已入库指标map里面,以便后续计算
-					nowEdbDataMap[edbData.DataTime] = v.Value
-				}
-			}
-		}
-	}
-
-	//同比值指标map
-	tbzEdbDataMap := make(map[string]float64)
-
-	//同比值日期切片列表
-	tbzEdbDataTimeList := make([]string, 0)
-
-	//同比值指标
-	{
-		var condition string
-		var pars []interface{}
-
-		condition += " AND data_time > ? AND edb_info_id = ? "
-		pars = append(pars, startCalculationDate, existItemB.FromEdbInfoId)
-
-		//第二个指标的数据列表
-		secondDataList, tmpErr := edbDataModel.GetEdbDataListAll(condition, pars, existItemB.FromSource, 0)
-		if tmpErr != nil {
-			return tmpErr
-		}
-
-		for _, v := range secondDataList {
-			tbzEdbDataMap[v.DataTime] = v.Value
-			tbzEdbDataTimeList = append(tbzEdbDataTimeList, v.DataTime)
-		}
-	}
-
-	sort.Strings(tbzEdbDataTimeList)
-
-	// 遍历现有的数据,判断拼接指标中是否存在该日期数据,如果拼接指标无此数据,那么需要删除该日期数据(日期的判断:需要在开始计算日期之后)
-	removeDateList := make([]string, 0)
-	for nowEdbDate := range nowEdbDataMap {
-		nowEdbDateTime, _ := time.ParseInLocation(utils.FormatDate, nowEdbDate, time.Local)
-		//校验日期 需要 大于 拼接前日期
-		if startCalculationDate.Before(nowEdbDateTime) {
-			if _, ok := tbzEdbDataMap[nowEdbDate]; !ok {
-				// 同比指标中,不存在该日期数据,那么需要移除 现有数据 中该日期的数据
-				removeDateList = append(removeDateList, nowEdbDate)
-			}
-		}
-	}
-
-	//待修改的指标数据map(index:日期,value:值)
-	updateEdbDataMap := make(map[string]float64)
-	for _, v := range tbzEdbDataTimeList {
-		tbzDataTime, _ := time.ParseInLocation(utils.FormatDate, v, time.Local)
-
-		//获取拼接指标上一年同一天的数据
-		var pjDataTime time.Time
-		if tbzDataTime.Month() == 2 {
-			pjDataTime = tbzDataTime.AddDate(0, -11, 0)
-			pjDataTime = time.Date(pjDataTime.Year(), pjDataTime.Month(), 1, 0, 0, 0, 0, time.Now().Location()).AddDate(0, 0, -1)
-		} else {
-			pjDataTime = tbzDataTime.AddDate(-1, 0, 0)
-		}
-
-		//校验现有数据中,是否存在该日期的数据,如果存在的话,那么就要去校验 最新计算数据 与 现有数据 是否一致
-		if nowEdbDataValue, isHas := nowEdbDataMap[v]; isHas {
-			//获取去年今日的数据,获取到后,然后是去修改该日期的数据
-			if lastYearEdbDataValue, ok := nowEdbDataMap[pjDataTime.Format(utils.FormatDate)]; ok {
-
-				if v == "2021-08-31" {
-					fmt.Println("进来了")
-				}
-				tbzDataValue := tbzEdbDataMap[v] //同比值
-				currValue := lastYearEdbDataValue * (1 + tbzDataValue/100)
-				currValue, _ = decimal.NewFromFloat(currValue).Truncate(4).Float64() //保留4位小数
-				//如果计算出来的值与库里面的值不匹配,那么就去修改该值
-				if nowEdbDataValue != currValue {
-					//将计算后的数据存入待拼接指标map里面,以便后续计算
-					updateEdbDataMap[v] = currValue
-				}
-			}
-		} else {
-			//因为 现有数据中 不存在该日期数据,那么需要做新增数据处理
-
-			//如果去年今日存在该数据,那么就去计算当前的数据
-			if pjDataValue, ok := nowEdbDataMap[pjDataTime.Format(utils.FormatDate)]; ok {
-				tbzDataValue := tbzEdbDataMap[v] //同比值
-				currValue := pjDataValue * (1 + tbzDataValue/100)
-
-				currValue, _ = decimal.NewFromFloat(currValue).Truncate(4).Float64()
-				//将计算后的数据存入已入库指标map里面,以便后续计算
-				nowEdbDataMap[v] = currValue
-
-				//将计算后的数据存入待拼接指标map里面,以便后续入库
-				pjDataMap[v] = currValue
-				pjEdbDataTimeList = append(pjEdbDataTimeList, v)
-			}
-		}
-	}
-
-	//新增的数据入库
-	{
-		addDataList := make([]*edbDataModel.EdbDataCalculateLjztbpj, 0)
-		for dataTime, dataValue := range pjDataMap {
-			//时间戳
-			currentDate, _ := time.Parse(utils.FormatDate, dataTime)
-			timestamp := currentDate.UnixNano() / 1e6
-
-			edbDataLjztbpj := &edbDataModel.EdbDataCalculateLjztbpj{
-				EdbInfoId:     edbInfo.EdbInfoId,
-				EdbCode:       edbInfo.EdbCode,
-				DataTime:      dataTime,
-				Value:         dataValue,
-				Status:        1,
-				CreateTime:    time.Now(),
-				ModifyTime:    time.Now(),
-				DataTimestamp: timestamp,
-			}
-			addDataList = append(addDataList, edbDataLjztbpj)
-		}
-
-		tmpAddDataList := make([]*edbDataModel.EdbDataCalculateLjztbpj, 0)
-		for _, v := range addDataList {
-			tmpAddDataList = append(tmpAddDataList, v)
-
-			if len(tmpAddDataList) >= 200 {
-				tmpErr := tx.Create(tmpAddDataList).Error
-				//_, tmpErr := o.InsertMulti(len(tmpAddDataList), tmpAddDataList)
-				if tmpErr != nil {
-					err = tmpErr
-					return
-				}
-				//重新初始化需要加入的数据切片
-				tmpAddDataList = make([]*edbDataModel.EdbDataCalculateLjztbpj, 0)
-			}
-		}
-		//最后如果还有需要新增的数据,那么就统一入库
-		if len(tmpAddDataList) > 0 {
-			tmpErr := tx.Create(tmpAddDataList).Error
-			//_, tmpErr := o.InsertMulti(len(tmpAddDataList), tmpAddDataList)
-			if tmpErr != nil {
-				err = tmpErr
-				return
-			}
-		}
-	}
-
-	//删除已经不存在的累计同比拼接指标数据(由于同比值当日的数据删除了)
-	{
-		if len(removeDateList) > 0 {
-			removeDateStr := strings.Join(removeDateList, `","`)
-			removeDateStr = `"` + removeDateStr + `"`
-			//如果拼接指标变更了,那么需要删除所有的指标数据
-			tableName := edbDataModel.GetEdbDataTableName(edbInfo.Source)
-			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
-
-			err = tx.Exec(sql, edbInfo.EdbInfoId).Error
-			//_, err = o.Raw(sql, edbInfo.EdbInfoId).Exec()
-			if err != nil {
-				err = errors.New("删除不存在的累计值同比拼接指标数据失败,Err:" + err.Error())
-				return
-			}
-		}
-	}
-
-	//修改现有的数据中对应的值
-	{
-		tableName := edbDataModel.GetEdbDataTableName(edbInfo.Source)
-		for edbDate, edbDataValue := range updateEdbDataMap {
-			sql := fmt.Sprintf(` UPDATE  %s set value = ?,modify_time=now() WHERE edb_info_id = ? and data_time = ? `, tableName)
-
-			err = tx.Exec(sql, edbDataValue, edbInfo.EdbInfoId, edbDate).Error
-			//_, err = o.Raw(sql, edbDataValue, edbInfo.EdbInfoId, edbDate).Exec()
-			if err != nil {
-				err = errors.New("更新现有的累计值同比拼接指标数据失败,Err:" + err.Error())
-				return
-			}
-		}
-	}
-	return
-}
-
 type RefreshResponse struct {
 	Ret         int
 	Msg         string