|
@@ -1286,5 +1286,436 @@ func RefreshEdbDataByDl(edbInfoId int, edbCode, startDate, endDate string) (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,status,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,status,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,status,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,status,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
|
|
|
}
|