|
@@ -64,7 +64,7 @@ func GetFutureGoodEdbDataList(condition string, pars []interface{}) (list []*Fut
|
|
|
}
|
|
|
|
|
|
// AddEdbDataFromWind 添加wind商品指标数据
|
|
|
-func AddEdbDataFromWind(futureGoodEdbInfoId int, edbCode string, item *services.FutureGoodDataFromWind) (err error) {
|
|
|
+func AddEdbDataFromWind(futureGoodEdbInfoId int, edbCode string, item *services.FutureGoodDataFromThs) (err error) {
|
|
|
var errMsg string
|
|
|
o := orm.NewOrm()
|
|
|
defer func() {
|
|
@@ -76,23 +76,32 @@ func AddEdbDataFromWind(futureGoodEdbInfoId int, edbCode string, item *services.
|
|
|
|
|
|
var isAdd bool
|
|
|
addSql := ` INSERT INTO future_good_edb_data(future_good_edb_info_id,future_good_edb_code,data_time,trade_code,open,high,low,close,volume,amt,oi,settle,create_time,modify_time,data_timestamp) values `
|
|
|
- for k, v := range item.Dt {
|
|
|
- timeStr := fmt.Sprintf("%d", v)
|
|
|
- v = v / 1000
|
|
|
- t := time.Unix(v, 0)
|
|
|
- dateTime := t.Format(utils.FormatDate)
|
|
|
- tradeCode := item.TradeCode[k]
|
|
|
- open := utils.SubFloatToString(item.Open[k], 20)
|
|
|
- high := utils.SubFloatToString(item.High[k], 20)
|
|
|
- low := utils.SubFloatToString(item.Low[k], 20)
|
|
|
- closeVal := utils.SubFloatToString(item.Close[k], 20)
|
|
|
- volume := utils.SubFloatToString(item.Volume[k], 20)
|
|
|
- amt := utils.SubFloatToString(item.Amt[k], 20)
|
|
|
- oi := utils.SubFloatToString(item.Oi[k], 20)
|
|
|
- settle := utils.SubFloatToString(item.Settle[k], 20)
|
|
|
- addSql += GetAddSql(strconv.Itoa(futureGoodEdbInfoId), edbCode, dateTime, tradeCode, open, high, low, closeVal, volume, amt, oi, settle, timeStr)
|
|
|
+
|
|
|
+ table := item.Tables
|
|
|
+ dataLen := len(table.Time)
|
|
|
+ for k := 0; k < dataLen; k++ {
|
|
|
+ eDate := table.Time[k]
|
|
|
+ dataTime, err := time.Parse(utils.FormatDate, eDate)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = " time.Parse :" + err.Error()
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ timestamp := dataTime.UnixNano() / 1e6
|
|
|
+ timeStr := fmt.Sprintf("%d", timestamp)
|
|
|
+
|
|
|
+ tradeCode := ``
|
|
|
+ open := utils.SubFloatToString(table.Open[k], 20)
|
|
|
+ high := utils.SubFloatToString(table.High[k], 20)
|
|
|
+ low := utils.SubFloatToString(table.Low[k], 20)
|
|
|
+ closeVal := utils.SubFloatToString(table.Close[k], 20)
|
|
|
+ volume := utils.SubFloatToString(table.Volume[k], 20)
|
|
|
+ amt := utils.SubFloatToString(table.Amount[k], 20)
|
|
|
+ oi := utils.SubFloatToString(table.Ccl[k], 20)
|
|
|
+ settle := utils.SubFloatToString(table.Settlement[k], 20)
|
|
|
+ addSql += GetAddSql(strconv.Itoa(futureGoodEdbInfoId), edbCode, eDate, tradeCode, open, high, low, closeVal, volume, amt, oi, settle, timeStr)
|
|
|
|
|
|
isAdd = true
|
|
|
+
|
|
|
}
|
|
|
|
|
|
if isAdd {
|
|
@@ -113,8 +122,8 @@ type RefreshFutureEdbEdbInfoReq struct {
|
|
|
StartDate string `description:"开始日期"`
|
|
|
}
|
|
|
|
|
|
-// RefreshFutureGoodEdbDataFromWind 刷新wind期货指标数据
|
|
|
-func RefreshFutureGoodEdbDataFromWind(futureGoodEdbInfoId int, edbCode, startDate string, item *services.FutureGoodDataFromThs) (err error) {
|
|
|
+// RefreshFutureGoodEdbDataFromThs 刷新wind期货指标数据
|
|
|
+func RefreshFutureGoodEdbDataFromThs(futureGoodEdbInfoId int, edbCode, startDate string, item *services.FutureGoodDataFromThs) (err error) {
|
|
|
o := orm.NewOrm()
|
|
|
to, err := o.Begin()
|
|
|
if err != nil {
|
|
@@ -159,26 +168,34 @@ func RefreshFutureGoodEdbDataFromWind(futureGoodEdbInfoId int, edbCode, startDat
|
|
|
var isAdd bool
|
|
|
addMap := make(map[string]string)
|
|
|
|
|
|
- for k, v := range item.Dt {
|
|
|
- timeStr := fmt.Sprintf("%d", v)
|
|
|
- v = v / 1000
|
|
|
- t := time.Unix(v, 0)
|
|
|
- dateTime := t.Format(utils.FormatDate)
|
|
|
- tradeCode := item.TradeCode[k]
|
|
|
- open := utils.SubFloatToString(item.Open[k], 20)
|
|
|
- high := utils.SubFloatToString(item.High[k], 20)
|
|
|
- low := utils.SubFloatToString(item.Low[k], 20)
|
|
|
- closeVal := utils.SubFloatToString(item.Close[k], 20)
|
|
|
- volume := utils.SubFloatToString(item.Volume[k], 20)
|
|
|
- amt := utils.SubFloatToString(item.Amount[k], 20)
|
|
|
- oi := utils.SubFloatToString(item.Ccl[k], 20)
|
|
|
- settle := utils.SubFloatToString(item.Settlement[k], 20)
|
|
|
-
|
|
|
- if findItem, ok := existMap[dateTime]; !ok {
|
|
|
- if _, existOk := addMap[dateTime]; !existOk {
|
|
|
- addSql += GetAddSql(strconv.Itoa(futureGoodEdbInfoId), edbCode, dateTime, tradeCode, open, high, low, closeVal, volume, amt, oi, settle, timeStr)
|
|
|
-
|
|
|
- addMap[dateTime] = "1"
|
|
|
+ table := item.Tables
|
|
|
+ dataLen := len(table.Time)
|
|
|
+ for k := 0; k < dataLen; k++ {
|
|
|
+ eDate := table.Time[k]
|
|
|
+ dataTime, tmpErr := time.Parse(utils.FormatDate, eDate)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ timestamp := dataTime.UnixNano() / 1e6
|
|
|
+ timeStr := fmt.Sprintf("%d", timestamp)
|
|
|
+
|
|
|
+ tradeCode := ``
|
|
|
+ open := utils.SubFloatToString(table.Open[k], 20)
|
|
|
+ high := utils.SubFloatToString(table.High[k], 20)
|
|
|
+ low := utils.SubFloatToString(table.Low[k], 20)
|
|
|
+ closeVal := utils.SubFloatToString(table.Close[k], 20)
|
|
|
+ volume := utils.SubFloatToString(table.Volume[k], 20)
|
|
|
+ amt := utils.SubFloatToString(table.Amount[k], 20)
|
|
|
+ oi := utils.SubFloatToString(table.Ccl[k], 20)
|
|
|
+ settle := utils.SubFloatToString(table.Settlement[k], 20)
|
|
|
+ addSql += GetAddSql(strconv.Itoa(futureGoodEdbInfoId), edbCode, eDate, tradeCode, open, high, low, closeVal, volume, amt, oi, settle, timeStr)
|
|
|
+
|
|
|
+ if findItem, ok := existMap[eDate]; !ok {
|
|
|
+ if _, existOk := addMap[eDate]; !existOk {
|
|
|
+ addSql += GetAddSql(strconv.Itoa(futureGoodEdbInfoId), edbCode, eDate, tradeCode, open, high, low, closeVal, volume, amt, oi, settle, timeStr)
|
|
|
+
|
|
|
+ addMap[eDate] = "1"
|
|
|
}
|
|
|
isAdd = true
|
|
|
} else {
|
|
@@ -189,35 +206,35 @@ func RefreshFutureGoodEdbDataFromWind(futureGoodEdbInfoId int, edbCode, startDat
|
|
|
updateCol = append(updateCol, "TradeCode")
|
|
|
}
|
|
|
if utils.SubFloatToString(findItem.Open, 30) != open {
|
|
|
- findItem.Open = item.Open[k]
|
|
|
+ findItem.Open = table.Open[k]
|
|
|
updateCol = append(updateCol, "Open")
|
|
|
}
|
|
|
if utils.SubFloatToString(findItem.High, 30) != high {
|
|
|
- findItem.High = item.High[k]
|
|
|
+ findItem.High = table.High[k]
|
|
|
updateCol = append(updateCol, "High")
|
|
|
}
|
|
|
if utils.SubFloatToString(findItem.Low, 30) != low {
|
|
|
- findItem.Low = item.Low[k]
|
|
|
+ findItem.Low = table.Low[k]
|
|
|
updateCol = append(updateCol, "Low")
|
|
|
}
|
|
|
if utils.SubFloatToString(findItem.Close, 30) != closeVal {
|
|
|
- findItem.Close = item.Close[k]
|
|
|
+ findItem.Close = table.Close[k]
|
|
|
updateCol = append(updateCol, "Close")
|
|
|
}
|
|
|
if utils.SubFloatToString(findItem.Volume, 30) != volume {
|
|
|
- findItem.Volume = item.Volume[k]
|
|
|
+ findItem.Volume = table.Volume[k]
|
|
|
updateCol = append(updateCol, "Volume")
|
|
|
}
|
|
|
if utils.SubFloatToString(findItem.Amt, 30) != amt {
|
|
|
- findItem.Amt = item.Amt[k]
|
|
|
+ findItem.Amt = table.Amount[k]
|
|
|
updateCol = append(updateCol, "Amt")
|
|
|
}
|
|
|
if utils.SubFloatToString(findItem.Oi, 30) != oi {
|
|
|
- findItem.Oi = item.Oi[k]
|
|
|
+ findItem.Oi = table.Ccl[k]
|
|
|
updateCol = append(updateCol, "Oi")
|
|
|
}
|
|
|
if utils.SubFloatToString(findItem.Settle, 30) != settle {
|
|
|
- findItem.Settle = item.Settle[k]
|
|
|
+ findItem.Settle = table.Settlement[k]
|
|
|
updateCol = append(updateCol, "Settle")
|
|
|
}
|
|
|
|
|
@@ -229,7 +246,9 @@ func RefreshFutureGoodEdbDataFromWind(futureGoodEdbInfoId int, edbCode, startDat
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
if isAdd {
|
|
|
addSql = strings.TrimRight(addSql, ",")
|
|
|
_, err = to.Raw(addSql).Exec()
|