|
@@ -2,9 +2,12 @@ package data_manage
|
|
|
|
|
|
import (
|
|
|
"errors"
|
|
|
+ "eta/eta_api/models/mgo"
|
|
|
"eta/eta_api/utils"
|
|
|
"fmt"
|
|
|
"github.com/beego/beego/v2/client/orm"
|
|
|
+ "go.mongodb.org/mongo-driver/bson"
|
|
|
+ "go.mongodb.org/mongo-driver/mongo"
|
|
|
"strconv"
|
|
|
"time"
|
|
|
)
|
|
@@ -51,8 +54,6 @@ func CreateEdbDataInsertConfigAndData(edbInfo *EdbInfo, date time.Time, value st
|
|
|
}
|
|
|
|
|
|
dateStr := date.Format(utils.FormatDate)
|
|
|
- timestamp := date.UnixNano() / 1e6
|
|
|
- timeStr := fmt.Sprintf("%d", timestamp)
|
|
|
|
|
|
var saveValue string
|
|
|
if value != "" {
|
|
@@ -65,7 +66,6 @@ func CreateEdbDataInsertConfigAndData(edbInfo *EdbInfo, date time.Time, value st
|
|
|
saveValue = utils.SubFloatToString(floatValue, 30)
|
|
|
}
|
|
|
|
|
|
-
|
|
|
to, err := orm.NewOrmUsingDB("data").Begin()
|
|
|
if err != nil {
|
|
|
return
|
|
@@ -132,6 +132,55 @@ func CreateEdbDataInsertConfigAndData(edbInfo *EdbInfo, date time.Time, value st
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 指标明细数据更新
|
|
|
+ if edbInfo.Source == utils.DATA_SOURCE_BUSINESS {
|
|
|
+ dateStr, err = updateInsertConfigValueByMongo(to, edbInfo, oldConfigDate, date, value)
|
|
|
+ } else {
|
|
|
+ dateStr, err = updateInsertConfigValueByMysql(to, edbInfo, oldConfigDate, date, value)
|
|
|
+ }
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 指标信息更新
|
|
|
+ edbInfo.EndDate = dateStr
|
|
|
+ _, err = to.Update(edbInfo, "EndDate")
|
|
|
+
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// updateInsertConfigValueByMysql
|
|
|
+// @Description: 从mysql更新或插入配置值
|
|
|
+// @author: Roc
|
|
|
+// @datetime 2024-05-09 11:05:41
|
|
|
+// @param to orm.TxOrmer
|
|
|
+// @param edbInfo *EdbInfo
|
|
|
+// @param oldConfigDate
|
|
|
+// @param date time.Time
|
|
|
+// @param value string
|
|
|
+// @return dateStr string
|
|
|
+// @return err error
|
|
|
+func updateInsertConfigValueByMysql(to orm.TxOrmer, edbInfo *EdbInfo, oldConfigDate, date time.Time, value string) (dateStr string, err error) {
|
|
|
+ tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
|
|
|
+ if tableName == `` {
|
|
|
+ err = errors.New("找不到该指标的数据表")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ dateStr = date.Format(utils.FormatDate)
|
|
|
+ timestamp := date.UnixNano() / 1e6
|
|
|
+ timeStr := fmt.Sprintf("%d", timestamp)
|
|
|
+ var saveValue string
|
|
|
+ if value != "" {
|
|
|
+ floatValue, e := strconv.ParseFloat(value, 64)
|
|
|
+ if e != nil {
|
|
|
+ err = e
|
|
|
+ fmt.Println("转换失败:", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ saveValue = utils.SubFloatToString(floatValue, 30)
|
|
|
+ }
|
|
|
+
|
|
|
var offsetDate string
|
|
|
// 更改数据
|
|
|
{
|
|
@@ -175,8 +224,115 @@ func CreateEdbDataInsertConfigAndData(edbInfo *EdbInfo, date time.Time, value st
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- edbInfo.EndDate = dateStr
|
|
|
- _, err = to.Update(edbInfo, "EndDate")
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// updateInsertConfigValueByMongo
|
|
|
+// @Description: 从mongo更新或插入配置值
|
|
|
+// @author: Roc
|
|
|
+// @datetime 2024-05-09 11:05:49
|
|
|
+// @param to orm.TxOrmer
|
|
|
+// @param edbInfo *EdbInfo
|
|
|
+// @param oldConfigDate
|
|
|
+// @param newDate time.Time
|
|
|
+// @param value string
|
|
|
+// @return dateStr string
|
|
|
+// @return err error
|
|
|
+func updateInsertConfigValueByMongo(to orm.TxOrmer, edbInfo *EdbInfo, oldConfigDate, newDate time.Time, value string) (dateStr string, err error) {
|
|
|
+ tableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
|
|
|
+ if tableName == `` {
|
|
|
+ err = errors.New("找不到该指标的数据表")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ dateStr = newDate.Format(utils.FormatDate)
|
|
|
+ timestamp := newDate.UnixNano() / 1e6
|
|
|
+ var floatValue float64
|
|
|
+ if value != "" {
|
|
|
+ floatValue, err = strconv.ParseFloat(value, 64)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("转换失败:", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ mogDataObj := mgo.EdbDataBusiness{}
|
|
|
+ coll := mogDataObj.GetCollection()
|
|
|
+
|
|
|
+ var edbDateData *mgo.EdbDataBusiness
|
|
|
+ if !oldConfigDate.IsZero() {
|
|
|
+ // 构建查询条件
|
|
|
+ queryConditions := bson.M{
|
|
|
+ "edb_info_id": edbInfo.EdbInfoId,
|
|
|
+ "data_time": oldConfigDate,
|
|
|
+ }
|
|
|
+
|
|
|
+ edbDateData, err = mogDataObj.GetItem(queryConditions)
|
|
|
+ //if tmpErr != nil && tmpErr == mongo.ErrNoDocuments {
|
|
|
+ // err = tmpErr
|
|
|
+ // return
|
|
|
+ //}
|
|
|
+ if err != nil && err != mongo.ErrNoDocuments {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = nil
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果是没有历史数据,那么就需要增加数据
|
|
|
+ if edbDateData == nil {
|
|
|
+ addDataItem := mgo.EdbDataBusiness{
|
|
|
+ //ID: primitive.ObjectID{},
|
|
|
+ EdbInfoId: edbInfo.EdbInfoId,
|
|
|
+ EdbCode: edbInfo.EdbCode,
|
|
|
+ DataTime: newDate,
|
|
|
+ Value: floatValue,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ DataTimestamp: timestamp,
|
|
|
+ }
|
|
|
+ err = mogDataObj.InsertDataByColl(coll, addDataItem)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("mogDataObj.BatchInsertData() Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 数据清空
|
|
|
+ if value == "" {
|
|
|
+ queryConditions := bson.M{
|
|
|
+ "edb_info_id": edbInfo.EdbInfoId,
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取最新的两条数据
|
|
|
+ tmpDataList, tmpErr := mogDataObj.GetLimitDataList(queryConditions, 2, []string{"-data_time"})
|
|
|
+ if tmpErr != nil {
|
|
|
+ fmt.Println("mogDataObj.GetLimitDataList() Err:" + tmpErr.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 如果并没有两条数据,那么就返回
|
|
|
+ if len(tmpDataList) < 2 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 实际应该是倒数第二条数据的日期
|
|
|
+ dateStr = tmpDataList[1].DataTime.Format(utils.FormatDate)
|
|
|
+
|
|
|
+ // 删除插入的数据
|
|
|
+ err = mogDataObj.RemoveManyByColl(coll, bson.M{"_id": tmpDataList[0].ID})
|
|
|
+
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新配置的数据
|
|
|
+ updateData := bson.M{"$set": bson.M{
|
|
|
+ "value": floatValue,
|
|
|
+ "modify_time": time.Now(),
|
|
|
+ "data_time": newDate,
|
|
|
+ "data_timestamp": timestamp,
|
|
|
+ }}
|
|
|
+ err = mogDataObj.UpdateDataByColl(coll, bson.M{"_id": edbDateData.ID}, updateData)
|
|
|
|
|
|
return
|
|
|
}
|