package data_manage

import (
	"eta_gn/eta_task/utils"
	"strings"
	"time"
)

// GetEdbDataTableName 指标数据->存储表
func GetEdbDataTableName(source, subSource int) (tableName string) {
	switch source {
	case utils.DATA_SOURCE_THS:
		tableName = "edb_data_ths"
		if subSource == utils.DATA_SUB_SOURCE_DATE {
			tableName = "edb_data_ths_ds"
		} else {
			tableName = "edb_data_ths"
		}
	case utils.DATA_SOURCE_WIND:
		if subSource == utils.DATA_SUB_SOURCE_DATE {
			tableName = "edb_data_wind_wsd"
		} else {
			tableName = "edb_data_wind"
		}
	case utils.DATA_SOURCE_PB, utils.DATA_SOURCE_PB_FINANCE:
		tableName = "edb_data_pb"
	case utils.DATA_SOURCE_CALCULATE:
		tableName = "edb_data_calculate"
	case utils.DATA_SOURCE_CALCULATE_LJZZY:
		tableName = "edb_data_calculate_ljzzy"
	case utils.DATA_SOURCE_CALCULATE_TBZ:
		tableName = "edb_data_calculate_tbz"
	case utils.DATA_SOURCE_CALCULATE_TCZ:
		tableName = "edb_data_calculate_tcz"
	case utils.DATA_SOURCE_CALCULATE_NSZYDPJJS:
		tableName = "edb_data_calculate_nszydpjjs"
	case utils.DATA_SOURCE_MANUAL:
		tableName = "edb_data_manual"
	case utils.DATA_SOURCE_LZ:
		tableName = "edb_data_lz"
	case utils.DATA_SOURCE_YS:
		tableName = "edb_data_ys"
	case utils.DATA_SOURCE_CALCULATE_HBZ:
		tableName = "edb_data_calculate_hbz"
	case utils.DATA_SOURCE_CALCULATE_HCZ:
		tableName = "edb_data_calculate_hcz"
	case utils.DATA_SOURCE_CALCULATE_BP:
		tableName = "edb_data_calculate_bp"
	case utils.DATA_SOURCE_GL:
		tableName = "edb_data_gl"
	case utils.DATA_SOURCE_ZZ:
		tableName = "edb_data_zz"
	case utils.DATA_SOURCE_DL:
		tableName = "edb_data_dl"
	case utils.DATA_SOURCE_SH:
		tableName = "edb_data_sh"
	case utils.DATA_SOURCE_CFFEX:
		tableName = "edb_data_cffex"
	case utils.DATA_SOURCE_SHFE:
		tableName = "edb_data_ine"
	case utils.DATA_SOURCE_GIE:
		tableName = "edb_data_gie"
	case utils.DATA_SOURCE_CALCULATE_ZJPJ:
		tableName = "edb_data_calculate_zjpj"
	case utils.DATA_SOURCE_CALCULATE_TIME_SHIFT:
		tableName = "edb_data_calculate_time_shift"
	case utils.DATA_SOURCE_CALCULATE_LJZTBPJ:
		tableName = "edb_data_calculate_ljztbpj"
	case utils.DATA_SOURCE_LT:
		tableName = "edb_data_lt"
	case utils.DATA_SOURCE_COAL:
		tableName = "edb_data_coal"
	case utils.DATA_SOURCE_PYTHON:
		tableName = "edb_data_python"
	case utils.DATA_SOURCE_GOOGLE_TRAVEL:
		tableName = "edb_data_google_travel"
	case utils.DATA_SOURCE_PREDICT_CALCULATE:
		tableName = "edb_data_predict_calculate"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_TBZ:
		tableName = "edb_data_predict_calculate_tbz"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_TCZ:
		tableName = "edb_data_predict_calculate_tcz"
	case utils.DATA_SOURCE_MYSTEEL_CHEMICAL:
		tableName = "edb_data_mysteel_chemical"
	case utils.DATA_SOURCE_CALCULATE_CJJX:
		tableName = "edb_data_calculate_cjjx"
	case utils.DATA_SOURCE_EIA_STEO:
		tableName = "edb_data_eia_steo"
	case utils.DATA_SOURCE_CALCULATE_NHCC:
		tableName = "edb_data_calculate_nhcc"
	case utils.DATA_SOURCE_COM_TRADE:
		tableName = "edb_data_com_trade"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_NSZYDPJJS:
		tableName = "edb_data_predict_calculate_nszydpjjs"
	case utils.DATA_SOURCE_CALCULATE_ADJUST:
		tableName = "edb_data_calculate_adjust"
	case utils.DATA_SOURCE_SCI:
		tableName = "edb_data_sci"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_LJZZY:
		tableName = "edb_data_predict_calculate_ljzzy"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_TIME_SHIFT:
		tableName = "edb_data_predict_calculate_time_shift"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_ZJPJ:
		tableName = "edb_data_predict_calculate_zjpj"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_LJZTBPJ:
		tableName = "edb_data_predict_calculate_ljztbpj"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_NHCC:
		tableName = "edb_data_predict_calculate_nhcc"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_CJJX:
		tableName = "edb_data_predict_calculate_cjjx"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_HBZ:
		tableName = "edb_data_predict_calculate_hbz"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_HCZ:
		tableName = "edb_data_predict_calculate_hcz"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_BP:
		tableName = "edb_data_predict_calculate_bp"
	case utils.DATA_SOURCE_CALCULATE_JP:
		tableName = "edb_data_calculate_jp"
	case utils.DATA_SOURCE_CALCULATE_NH:
		tableName = "edb_data_calculate_nh"
	case utils.DATA_SOURCE_CALCULATE_KSZS:
		tableName = "edb_data_calculate_kszs"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_JP:
		tableName = "edb_data_predict_calculate_jp"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_NH:
		tableName = "edb_data_predict_calculate_nh"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_KSZS:
		tableName = "edb_data_predict_calculate_kszs"
	case utils.DATA_SOURCE_BAIINFO:
		tableName = "edb_data_baiinfo"
	case utils.DATA_SOURCE_STOCK_PLANT:
		tableName = "edb_data_stock_plant"
	case utils.DATA_SOURCE_CALCULATE_CORRELATION:
		tableName = "edb_data_calculate_correlation"
	case utils.DATA_SOURCE_NATIONAL_STATISTICS:
		tableName = "edb_data_national_statistics"
	case utils.DATA_SOURCE_CALCULATE_LJZZJ: //累计值转季 -> 61
		tableName = "edb_data_calculate_ljzzj"
	case utils.DATA_SOURCE_CALCULATE_LJZ: //累计值 -> 62
		tableName = "edb_data_calculate_ljz"
	case utils.DATA_SOURCE_CALCULATE_LJZNCZJ: //累计值(年初至今) -> 63
		tableName = "edb_data_calculate_ljznczj"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_LJZZJ: // 预测指标 - 累计值 -> 65
		tableName = "edb_data_predict_calculate_ljzzj"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_LJZ: //预测指标 - 累计值转季->64
		tableName = "edb_data_predict_calculate_ljz"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_LJZNCZJ: //预测指标 - 累计值(年初至今) -> 66
		tableName = "edb_data_predict_calculate_ljznczj"
	case utils.DATA_SOURCE_CALCULATE_STANDARD_DEVIATION: //标准差->67
		tableName = "edb_data_calculate_standard_deviation"
	case utils.DATA_SOURCE_CALCULATE_PERCENTILE: //百分位->68
		tableName = "edb_data_calculate_percentile"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_STANDARD_DEVIATION: //预测标准差->69
		tableName = "edb_data_predict_ccalculate_standard_deviation"
	case utils.DATA_SOURCE_PREDICT_CALCULATE_PERCENTILE: //预测百分位->70
		tableName = "edb_data_predict_ccalculate_percentile"
	case utils.DATA_SOURCE_FUBAO:
		tableName = "edb_data_fubao"
	case utils.DATA_SOURCE_CALCULATE_ZSXY:
		tableName = "edb_data_calculate_zsxy" // 指数修匀->72
	case utils.DATA_SOURCE_PREDICT_CALCULATE_ZSXY:
		tableName = "edb_data_predict_calculate_zsxy" // 预测指数修匀->73
	case utils.DATA_SOURCE_CALCULATE_ZDYFX:
		tableName = "edb_data_calculate_zdyfx" // 自定义分析->74
	case utils.DATA_SOURCE_CALCULATE_RJZ: //日均值75
		tableName = "edb_data_calculate_rjz"
	default:
		edbSource := GetEdbSourceBySourceId(source)
		if edbSource != nil {
			tableName = edbSource.TableName
		}
	}
	return
}

// GetSourceAndSubSourceTableName 存储表->指标数据
func GetSourceAndSubSourceTableName(tableName, edbCode string) (source, subSource int) {
	switch tableName {
	case "edb_data_ths":
		source = utils.DATA_SOURCE_THS
	case "edb_data_ths_ds":
		source = utils.DATA_SOURCE_THS
		subSource = utils.DATA_SUB_SOURCE_DATE
	case "edb_data_wind":
		source = utils.DATA_SOURCE_WIND
	case "edb_data_wind_wsd":
		source = utils.DATA_SOURCE_WIND
		subSource = utils.DATA_SUB_SOURCE_DATE
	case "edb_data_pb":
		source = utils.DATA_SOURCE_PB
		// 彭博财务
		if strings.Contains(edbCode, "&&") {
			source = utils.DATA_SOURCE_PB_FINANCE
		}
	case "edb_data_calculate":
		source = utils.DATA_SOURCE_CALCULATE
	case "edb_data_calculate_ljzzy":
		source = utils.DATA_SOURCE_CALCULATE_LJZZY
	case "edb_data_calculate_tbz":
		source = utils.DATA_SOURCE_CALCULATE_TBZ
	case "edb_data_calculate_tcz":
		source = utils.DATA_SOURCE_CALCULATE_TCZ
	case "edb_data_calculate_nszydpjjs":
		source = utils.DATA_SOURCE_CALCULATE_NSZYDPJJS
	case "edb_data_manual":
		source = utils.DATA_SOURCE_MANUAL
	case "edb_data_lz":
		source = utils.DATA_SOURCE_LZ
	case "edb_data_ys":
		source = utils.DATA_SOURCE_YS
	case "edb_data_calculate_hbz":
		source = utils.DATA_SOURCE_CALCULATE_HBZ
	case "edb_data_calculate_hcz":
		source = utils.DATA_SOURCE_CALCULATE_HCZ
	case "edb_data_calculate_bp":
		source = utils.DATA_SOURCE_CALCULATE_BP
	case "edb_data_gl":
		source = utils.DATA_SOURCE_GL
	case "edb_data_zz":
		source = utils.DATA_SOURCE_ZZ
	case "edb_data_dl":
		source = utils.DATA_SOURCE_DL
	case "edb_data_sh":
		source = utils.DATA_SOURCE_SH
	case "edb_data_cffex":
		source = utils.DATA_SOURCE_CFFEX
	case "edb_data_ine":
		source = utils.DATA_SOURCE_SHFE
	case "edb_data_gie":
		source = utils.DATA_SOURCE_GIE
	case "edb_data_calculate_zjpj":
		source = utils.DATA_SOURCE_CALCULATE_ZJPJ
	case "edb_data_calculate_time_shift":
		source = utils.DATA_SOURCE_CALCULATE_TIME_SHIFT
	case "edb_data_calculate_ljztbpj":
		source = utils.DATA_SOURCE_CALCULATE_LJZTBPJ
	case "edb_data_lt":
		source = utils.DATA_SOURCE_LT
	case "edb_data_coal":
		source = utils.DATA_SOURCE_COAL
	case "edb_data_python":
		source = utils.DATA_SOURCE_PYTHON
	case "edb_data_google_travel":
		source = utils.DATA_SOURCE_GOOGLE_TRAVEL
	case "edb_data_predict_calculate":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE
	case "edb_data_predict_calculate_tbz":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_TBZ
	case "edb_data_predict_calculate_tcz":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_TCZ
	case "edb_data_mysteel_chemical":
		source = utils.DATA_SOURCE_MYSTEEL_CHEMICAL
	case "edb_data_calculate_cjjx":
		source = utils.DATA_SOURCE_CALCULATE_CJJX
	case "edb_data_eia_steo":
		source = utils.DATA_SOURCE_EIA_STEO
	case "edb_data_calculate_nhcc":
		source = utils.DATA_SOURCE_CALCULATE_NHCC
	case "edb_data_com_trade":
		source = utils.DATA_SOURCE_COM_TRADE
	case "edb_data_predict_calculate_nszydpjjs":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_NSZYDPJJS
	case "edb_data_calculate_adjust":
		source = utils.DATA_SOURCE_CALCULATE_ADJUST
	case "edb_data_sci":
		source = utils.DATA_SOURCE_SCI
	case "edb_data_predict_calculate_ljzzy":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_LJZZY
	case "edb_data_predict_calculate_time_shift":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_TIME_SHIFT
	case "edb_data_predict_calculate_zjpj":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_ZJPJ
	case "edb_data_predict_calculate_ljztbpj":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_LJZTBPJ
	case "edb_data_predict_calculate_nhcc":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_NHCC
	case "edb_data_predict_calculate_cjjx":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_CJJX
	case "edb_data_predict_calculate_hbz":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_HBZ
	case "edb_data_predict_calculate_hcz":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_HCZ
	case "edb_data_predict_calculate_bp":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_BP
	case "edb_data_calculate_jp":
		source = utils.DATA_SOURCE_CALCULATE_JP
	case "edb_data_calculate_nh":
		source = utils.DATA_SOURCE_CALCULATE_NH
	case "edb_data_calculate_kszs":
		source = utils.DATA_SOURCE_CALCULATE_KSZS
	case "edb_data_predict_calculate_jp":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_JP
	case "edb_data_predict_calculate_nh":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_NH
	case "edb_data_predict_calculate_kszs":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_KSZS
	case "edb_data_baiinfo":
		source = utils.DATA_SOURCE_BAIINFO
	case "edb_data_stock_plant":
		source = utils.DATA_SOURCE_STOCK_PLANT
	case "edb_data_calculate_correlation":
		source = utils.DATA_SOURCE_CALCULATE_CORRELATION
	case "edb_data_national_statistics":
		source = utils.DATA_SOURCE_NATIONAL_STATISTICS
	case "edb_data_calculate_ljzzj": //累计值转季 -> 61
		source = utils.DATA_SOURCE_CALCULATE_LJZZJ
	case "edb_data_calculate_ljz": //累计值 -> 62
		source = utils.DATA_SOURCE_CALCULATE_LJZ
	case "edb_data_calculate_ljznczj": //累计值(年初至今) -> 63
		source = utils.DATA_SOURCE_CALCULATE_LJZNCZJ
	case "edb_data_predict_calculate_ljzzj": // 预测指标 - 累计值 -> 65
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_LJZZJ
	case "edb_data_predict_calculate_ljz": //预测指标 - 累计值转季->64
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_LJZ
	case "edb_data_predict_calculate_ljznczj": //预测指标 - 累计值(年初至今) -> 66
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_LJZNCZJ
	case "edb_data_calculate_standard_deviation": //标准差->67
		source = utils.DATA_SOURCE_CALCULATE_STANDARD_DEVIATION
	case "edb_data_calculate_percentile": //百分位->68
		source = utils.DATA_SOURCE_CALCULATE_PERCENTILE
	case "edb_data_predict_ccalculate_standard_deviation": //预测标准差->69
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_STANDARD_DEVIATION
	case "edb_data_predict_ccalculate_percentile": //预测百分位->70
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_PERCENTILE
	case "edb_data_fubao":
		source = utils.DATA_SOURCE_FUBAO
	case "edb_data_calculate_zsxy":
		source = utils.DATA_SOURCE_CALCULATE_ZSXY // 指数修匀->72
	case "edb_data_predict_calculate_zsxy":
		source = utils.DATA_SOURCE_PREDICT_CALCULATE_ZSXY // 预测指数修匀->73
	case "edb_data_calculate_zdyfx":
		source = utils.DATA_SOURCE_CALCULATE_ZDYFX // 自定义分析->74
	case "edb_data_calculate_rjz": //日均值75
		source = utils.DATA_SOURCE_CALCULATE_RJZ
	default:
		edbSource := EdbTableNameSourceMap[tableName]
		if edbSource != nil {
			source = edbSource.EdbSourceId
		}
	}
	return
}

func GetEdbInfoCalculateTableName(source int) (tableName string) {
	switch source {
	case utils.DATA_SOURCE_CALCULATE:
		tableName = "edb_info_calculate"
	case utils.DATA_SOURCE_CALCULATE_LJZZY:
		tableName = "edb_info_calculate_ljzzy"
	case utils.DATA_SOURCE_CALCULATE_TBZ:
		tableName = "edb_info_calculate_tbz"
	case utils.DATA_SOURCE_CALCULATE_TCZ:
		tableName = "edb_info_calculate_tcz"
	case utils.DATA_SOURCE_CALCULATE_NSZYDPJJS:
		tableName = "edb_info_calculate_nszydpjjs"
	case utils.DATA_SOURCE_CALCULATE_HBZ:
		tableName = "edb_info_calculate_hbz"
	case utils.DATA_SOURCE_CALCULATE_HCZ:
		tableName = "edb_info_calculate_hcz"
	case utils.DATA_SOURCE_CALCULATE_BP:
		tableName = "edb_info_calculate_bp"
	default:
		tableName = GetEdbSourceTableNameBySourceId(source) // 没有对应的从edb_source中取
		return
	}
	return
}

func GetAddSql(edbInfoId, edbCode, dataTime, timestampStr, value string) (addSql string) {
	nowStr := time.Now().Format(utils.FormatDateTime)
	addSql += "("
	addSql += edbInfoId + "," + "'" + edbCode + "'" + "," + "'" + dataTime + "'" + "," + value + "," + "'" + nowStr + "'" +
		"," + "'" + nowStr + "'" + "," + "1"
	addSql += "," + "'" + timestampStr + "'"
	addSql += "),"
	return
}

type EdbDataBase struct {
	EdbDataId     int `gorm:"column:edb_data_id;primaryKey"` //`orm:"column(edb_data_id);pk"`
	EdbInfoId     int
	EdbCode       string
	DataTime      string
	Value         string
	Status        int
	CreateTime    time.Time
	ModifyTime    time.Time
	DataTimestamp int64
}