|
@@ -181,6 +181,12 @@ func (obj CustomAnalysis) GetEdbType() int {
|
|
|
return utils.CALCULATE_EDB_TYPE
|
|
|
}
|
|
|
|
|
|
+// UpdateEdbDataStr 数据更新结构体
|
|
|
+type UpdateEdbDataStr struct {
|
|
|
+ Value string `description:"数据对应的最新值"`
|
|
|
+ DataTime string `description:"数据对应的日期"`
|
|
|
+}
|
|
|
+
|
|
|
func (obj CustomAnalysis) refresh(to orm.TxOrmer, edbInfo *EdbInfo, dateList []string, dataList []float64) (err error) {
|
|
|
edbInfoId := edbInfo.EdbInfoId
|
|
|
dataTableName := GetEdbDataTableName(edbInfo.Source)
|
|
@@ -207,8 +213,19 @@ func (obj CustomAnalysis) refresh(to orm.TxOrmer, edbInfo *EdbInfo, dateList []s
|
|
|
}
|
|
|
needAddDateMap := make(map[time.Time]int)
|
|
|
|
|
|
+ var isAdd, isUpdate bool
|
|
|
addSql := ` INSERT INTO ` + dataTableName + `(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
|
|
|
- var isAdd bool
|
|
|
+
|
|
|
+ updateEdbDataStrList := make([]UpdateEdbDataStr, 0)
|
|
|
+ updateSql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
|
|
|
+ updateSql = fmt.Sprintf(updateSql, dataTableName)
|
|
|
+ p, err := to.Raw(updateSql).Prepare()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ _ = p.Close()
|
|
|
+ }()
|
|
|
|
|
|
for i, currDateStr := range dateList {
|
|
|
currVal := dataList[i] // 当前日期对应的值
|
|
@@ -226,14 +243,21 @@ func (obj CustomAnalysis) refresh(to orm.TxOrmer, edbInfo *EdbInfo, dateList []s
|
|
|
if ok {
|
|
|
//校验待删除日期数据里面是否存在该元素,如果存在的话,那么移除该日期
|
|
|
delete(removeDataTimeMap, currDateStr)
|
|
|
+ existValDec, _ := decimal.NewFromString(existVal)
|
|
|
+ existVal = existValDec.Round(4).String()
|
|
|
|
|
|
if existVal != saveValue {
|
|
|
- sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
|
|
|
- sql = fmt.Sprintf(sql, dataTableName)
|
|
|
- _, err = to.Raw(sql, saveValue, edbInfoId, currDateStr).Exec()
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
+ isUpdate = true
|
|
|
+ updateEdbDataStrList = append(updateEdbDataStrList, UpdateEdbDataStr{
|
|
|
+ Value: saveValue,
|
|
|
+ DataTime: currDateStr,
|
|
|
+ })
|
|
|
+ //sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
|
|
|
+ //sql = fmt.Sprintf(sql, dataTableName)
|
|
|
+ //_, err = to.Raw(sql, saveValue, edbInfoId, currDateStr).Exec()
|
|
|
+ //if err != nil {
|
|
|
+ // return
|
|
|
+ //}
|
|
|
}
|
|
|
|
|
|
continue
|
|
@@ -267,6 +291,7 @@ func (obj CustomAnalysis) refresh(to orm.TxOrmer, edbInfo *EdbInfo, dateList []s
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 添加指标数据
|
|
|
if isAdd {
|
|
|
addSql = strings.TrimRight(addSql, ",")
|
|
|
_, err = to.Raw(addSql).Exec()
|
|
@@ -275,6 +300,21 @@ func (obj CustomAnalysis) refresh(to orm.TxOrmer, edbInfo *EdbInfo, dateList []s
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // 更新指标数据
|
|
|
+ if isUpdate {
|
|
|
+ for _, v := range updateEdbDataStrList {
|
|
|
+ if v.Value == "" || v.DataTime == "" {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ _, err = p.Exec(v.Value, edbInfoId, v.DataTime)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(reflect.TypeOf(obj).Name(), " update data Err", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -288,7 +328,7 @@ func (obj CustomAnalysis) ResetData(edbInfo *EdbInfo, dateList []string, dataLis
|
|
|
defer func() {
|
|
|
if err != nil {
|
|
|
_ = to.Rollback()
|
|
|
- fmt.Println(reflect.TypeOf(obj).Name(), ";Add,Err:"+err.Error())
|
|
|
+ fmt.Println(reflect.TypeOf(obj).Name(), ";ResetData,Err:"+err.Error())
|
|
|
} else {
|
|
|
_ = to.Commit()
|
|
|
}
|