longyu пре 3 година
родитељ
комит
bdaffab48c

+ 4 - 0
models/base_from_lt.go

@@ -0,0 +1,4 @@
+package models
+
+//路透
+

+ 3 - 0
models/base_from_lz.go

@@ -0,0 +1,3 @@
+package models
+
+//隆众

+ 164 - 0
models/base_from_manual.go

@@ -0,0 +1,164 @@
+package models
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_edb_lib/utils"
+	"strconv"
+	"strings"
+	"time"
+)
+
+//弘则手工数据
+
+type ManualEdbdata struct {
+	TradeCode  string    `orm:"column(TRADE_CODE);pk" description:"指标编码"`
+	Dt         string    `orm:"column(DT)" description:"日期"`
+	Close      string    `orm:"column(CLOSE)" description:"值"`
+	ModifyTime time.Time `orm:"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 `
+	o := orm.NewOrmUsingDB("edb")
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}
+
+//新增弘则手工指标数据
+func AddEdbDataFromManual(edbCode string) (err error) {
+	o := orm.NewOrm()
+
+	var condition string
+	var pars []interface{}
+
+	if edbCode != "" {
+		condition += " AND TRADE_CODE=? "
+		pars = append(pars, edbCode)
+	}
+
+	manualDataList, err := GetEdbdataManualByTradeCode(condition, pars)
+	if err != nil {
+		return
+	}
+	dataLen := len(manualDataList)
+
+	if dataLen > 0 {
+		var isAdd bool
+		addSql := ` INSERT INTO edb_data_manual(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+		for i := 0; i < dataLen; i++ {
+			item := manualDataList[i]
+			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("0", edbCode, eDate, timeStr, sValue)
+			isAdd = true
+		}
+		if isAdd {
+			addSql = strings.TrimRight(addSql, ",")
+			_, err = o.Raw(addSql).Exec()
+			if err != nil {
+				return
+			}
+		}
+	}
+	return
+}
+
+//刷新手工指标数据
+func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err error) {
+	source := utils.DATA_SOURCE_MANUAL
+	o := orm.NewOrm()
+	if err != nil {
+		return
+	}
+	edbInfoIdStr := strconv.Itoa(edbInfoId)
+	//计算数据
+	var condition string
+	var pars []interface{}
+
+	if edbCode != "" {
+		condition += " AND TRADE_CODE=? "
+		pars = append(pars, edbCode)
+	}
+
+	if startDate != "" {
+		condition += " AND DT>=? "
+		pars = append(pars, startDate)
+	}
+
+	manualDataList, err := GetEdbdataManualByTradeCode(condition, pars)
+
+	var existCondition string
+	var existPars []interface{}
+
+	existCondition += " AND edb_info_id=? "
+	existPars = append(existPars, edbInfoId)
+	if startDate != "" {
+		existCondition += " AND data_time>=? "
+		existPars = append(existPars, startDate)
+	}
+
+	existList, err := GetEdbDataByCondition(source, existCondition, existPars)
+	if err != nil {
+		return err
+	}
+	existMap := make(map[string]*EdbInfoSearchData)
+	for _, v := range existList {
+		existMap[v.DataTime] = v
+	}
+
+	addSql := ` INSERT INTO edb_data_manual(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	var isAdd bool
+	manualMap := make(map[string]*ManualEdbdata)
+	fmt.Println("manualDataList:", len(manualDataList))
+	for _, v := range manualDataList {
+		item := v
+		fmt.Println("Item:", item.Dt, item.Close, item.TradeCode, item.ModifyTime)
+		if findItem, ok := existMap[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 != nil && utils.SubFloatToString(findItem.Value, 30) != item.Close {
+				err = ModifyEdbDataById(source, findItem.EdbDataId, item.Close)
+				if err != nil {
+					return err
+				}
+			}
+		}
+		manualMap[v.Dt] = v
+	}
+	for _, v := range existList {
+		if _, ok := manualMap[v.DataTime]; !ok {
+			go DeleteEdbDataById(v.EdbDataId, utils.DATA_SOURCE_MANUAL)
+		}
+	}
+	if isAdd {
+		addSql = strings.TrimRight(addSql, ",")
+		_, err = o.Raw(addSql).Exec()
+		if err != nil {
+			fmt.Println("RefreshAllEdbDataByManual add Err", err.Error())
+			return
+		}
+	}
+	return
+}

+ 3 - 0
models/base_from_mysteel.go

@@ -0,0 +1,3 @@
+package models
+
+//钢联

+ 3 - 0
models/base_from_smm.go

@@ -0,0 +1,3 @@
+package models
+
+//有色网

+ 9 - 3
models/base_from_ths.go

@@ -64,10 +64,16 @@ func RefreshEdbDataFromThs(edbInfoId int, edbCode, startDate string, item *servi
 
 		condition += " AND edb_info_id=? "
 		pars = append(pars, edbInfoId)
+		if startDate!="" {
+			condition += " AND data_time>=? "
+			pars = append(pars, startDate)
+		}
 
-		condition += " AND data_time>=? "
-		pars = append(pars, startDate)
 		existList, err := GetEdbDataByCondition(source, condition, pars)
+		if err != nil {
+			return err
+		}
+
 		existMap := make(map[string]*EdbInfoSearchData)
 		for _, v := range existList {
 			existMap[v.DataTime] = v
@@ -113,4 +119,4 @@ func RefreshEdbDataFromThs(edbInfoId int, edbCode, startDate string, item *servi
 		}
 	}
 	return
-}
+}

+ 5 - 2
models/base_from_wind.go

@@ -55,8 +55,11 @@ func RefreshEdbDataFromWind(edbInfoId int, edbCode, startDate string, item *serv
 	condition += " AND edb_info_id=? "
 	pars = append(pars, edbInfoId)
 
-	condition += " AND data_time>=? "
-	pars = append(pars, startDate)
+	if startDate!="" {
+		condition += " AND data_time>=? "
+		pars = append(pars, startDate)
+	}
+
 	existList, err := GetEdbDataByCondition(source, condition, pars)
 	existMap := make(map[string]*EdbInfoSearchData)
 	for _, v := range existList {

+ 10 - 0
models/edb_data_base.go

@@ -93,3 +93,13 @@ func ModifyEdbDataById(source, edbDataId int, value string) (err error) {
 	_, err = o.Raw(sql, value, edbDataId).Exec()
 	return
 }
+
+func DeleteEdbDataById(source,edbDataId int) (err error) {
+	sql := ` DELETE FROM %s WHERE edb_data_id=? `
+	tableName := GetEdbDataTableName(source)
+	sql = fmt.Sprintf(sql, tableName)
+
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, edbDataId).Exec()
+	return
+}