Przeglądaj źródła

修改mongodb中的字段类型

xyxie 1 rok temu
rodzic
commit
cb88a5f622

+ 15 - 2
models/chart_info.go

@@ -1,7 +1,7 @@
 package models
 package models
 
 
 import (
 import (
-	"eta/eta_forum_hub/models/mgodb"
+	"eta/eta_forum_hub/models/system"
 	"eta/eta_forum_hub/utils"
 	"eta/eta_forum_hub/utils"
 	"fmt"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/beego/beego/v2/client/orm"
@@ -1069,12 +1069,25 @@ type AddChartReq struct {
 	EdbInfoDataList         []*AddEdbDataReq
 	EdbInfoDataList         []*AddEdbDataReq
 	ChartEdbMapping         []*ChartEdbMapping
 	ChartEdbMapping         []*ChartEdbMapping
 	EdbInfoCalculateMapping []*EdbInfoCalculateMapping
 	EdbInfoCalculateMapping []*EdbInfoCalculateMapping
+	CreatorInfo             *system.Admin //创建者的账号信息
+	UploaderInfo            *system.Admin //上传者的账号信息
 }
 }
 
 
 type AddEdbDataReq struct {
 type AddEdbDataReq struct {
 	EdbCode  string
 	EdbCode  string
 	EdbType  int
 	EdbType  int
-	DataList []*mgodb.EdbDataBase
+	DataList []*EdbDataBase
+}
+
+type EdbDataBase struct {
+	EdbInfoId     int
+	EdbCode       string
+	DataTime      string
+	Value         string
+	Status        int
+	CreateTime    time.Time
+	ModifyTime    time.Time
+	DataTimestamp int64
 }
 }
 
 
 type DeleteChartReq struct {
 type DeleteChartReq struct {

+ 16 - 14
models/mgodb/edb_data_base.go

@@ -4,25 +4,27 @@ import (
 	"context"
 	"context"
 	"eta/eta_forum_hub/utils"
 	"eta/eta_forum_hub/utils"
 	"go.mongodb.org/mongo-driver/bson"
 	"go.mongodb.org/mongo-driver/bson"
+	"go.mongodb.org/mongo-driver/bson/primitive"
 	"go.mongodb.org/mongo-driver/mongo/options"
 	"go.mongodb.org/mongo-driver/mongo/options"
 	"time"
 	"time"
 )
 )
 
 
 type EdbDataBase struct {
 type EdbDataBase struct {
-	EdbInfoId     int    `bson:"edb_info_id"`
-	EdbCode       string `bson:"edb_code"`
-	DataTime      string `bson:"data_time"`
-	Value         string `bson:"value"`
-	Status        int    `bson:"status"`
-	CreateTime    string `bson:"create_time"`
-	ModifyTime    string `bson:"modify_time"`
-	DataTimestamp int64  `bson:"data_timestamp"`
+	EdbDataId     primitive.ObjectID `bson:"_id,omitempty"`
+	EdbInfoId     int                `bson:"edb_info_id"`
+	EdbCode       string             `bson:"edb_code"`
+	DataTime      time.Time          `bson:"data_time"`
+	Value         float64            `bson:"value"`
+	Status        int                `bson:"status"`
+	CreateTime    time.Time          `bson:"create_time"`
+	ModifyTime    time.Time          `bson:"modify_time"`
+	DataTimestamp int64              `bson:"data_timestamp"`
 }
 }
 
 
 type EdbInfoSearchData struct {
 type EdbInfoSearchData struct {
-	DataTime string  `description:"数据日期" bson:"data_time"`
-	Value    float64 `description:"数据" bson:"value"`
-	EdbCode  string  `description:"指标编码" bson:"edb_code"`
+	DataTime time.Time `description:"数据日期" bson:"data_time"`
+	Value    float64   `description:"数据" bson:"value"`
+	EdbCode  string    `description:"指标编码" bson:"edb_code"`
 }
 }
 
 
 func GetEdbDataBaseByEdbInfoId(edbInfoId int) (items []*EdbDataBase, err error) {
 func GetEdbDataBaseByEdbInfoId(edbInfoId int) (items []*EdbDataBase, err error) {
@@ -110,9 +112,9 @@ func DeleteEdbInfoDataByEdbInfoId(edbInfoId int) (err error) {
 }
 }
 
 
 // 更新指标的值
 // 更新指标的值
-func ModifyValueEdbDataValue(edbCode string, dataTime string, value string) (err error) {
-	filter := bson.D{{"edb_code", edbCode}, {"data_time", dataTime}}
-	update := bson.D{{"$set", bson.D{{"value", value}, {"modify_time", time.Now().Format("2006-01-02 15:04:05")}}}}
+func ModifyValueEdbDataValue(edbDataId primitive.ObjectID, value float64) (err error) {
+	filter := bson.D{{"_id", edbDataId}}
+	update := bson.D{{"$set", bson.D{{"value", value}, {"modify_time", time.Now()}}}}
 	db := NewMgo(utils.MONGODB_COMMUNITY, "edb_data_base", MgoClient)
 	db := NewMgo(utils.MONGODB_COMMUNITY, "edb_data_base", MgoClient)
 	_, err = db.UpdateOne(filter, update)
 	_, err = db.UpdateOne(filter, update)
 	return
 	return

+ 4 - 3
models/mgodb/edb_data_calculate.go

@@ -4,6 +4,7 @@ import (
 	"context"
 	"context"
 	"eta/eta_forum_hub/utils"
 	"eta/eta_forum_hub/utils"
 	"go.mongodb.org/mongo-driver/bson"
 	"go.mongodb.org/mongo-driver/bson"
+	"go.mongodb.org/mongo-driver/bson/primitive"
 	"go.mongodb.org/mongo-driver/mongo/options"
 	"go.mongodb.org/mongo-driver/mongo/options"
 	"time"
 	"time"
 )
 )
@@ -93,9 +94,9 @@ func DeleteEdbInfoCalculateDataByEdbInfoId(edbInfoId int) (err error) {
 }
 }
 
 
 // 更新指标的值
 // 更新指标的值
-func ModifyValueEdbCalculateDataValue(edbCode string, dataTime string, value string) (err error) {
-	filter := bson.D{{"edb_code", edbCode}, {"data_time", dataTime}}
-	update := bson.D{{"$set", bson.D{{"value", value}, {"modify_time", time.Now().Format("2006-01-02 15:04:05")}}}}
+func ModifyValueEdbCalculateDataValue(edbDataId primitive.ObjectID, value float64) (err error) {
+	filter := bson.D{{"_id", edbDataId}}
+	update := bson.D{{"$set", bson.D{{"value", value}, {"modify_time", time.Now()}}}}
 	db := NewMgo(utils.MONGODB_COMMUNITY, "edb_data_calculate", MgoClient)
 	db := NewMgo(utils.MONGODB_COMMUNITY, "edb_data_calculate", MgoClient)
 	_, err = db.UpdateOne(filter, update)
 	_, err = db.UpdateOne(filter, update)
 	return
 	return

+ 13 - 4
services/chart_info.go

@@ -3,6 +3,7 @@ package services
 import (
 import (
 	"errors"
 	"errors"
 	"eta/eta_forum_hub/models"
 	"eta/eta_forum_hub/models"
+	"eta/eta_forum_hub/models/system"
 	"eta/eta_forum_hub/services/elastic"
 	"eta/eta_forum_hub/services/elastic"
 	"eta/eta_forum_hub/utils"
 	"eta/eta_forum_hub/utils"
 	"fmt"
 	"fmt"
@@ -81,11 +82,21 @@ func AddChartInfo(req *models.AddChartReq, sysUserId int, sysUserRealName string
 	}
 	}
 	edbInfoIdStr := strings.Join(edbInfoIdArrStr, ",")
 	edbInfoIdStr := strings.Join(edbInfoIdArrStr, ",")
 
 
+	chartInfo.SysUserId = req.ChartInfo.SysUserId
+	chartInfo.SysUserRealName = req.ChartInfo.SysUserRealName
+	// 查询创建者信息
+	if req.CreatorInfo != nil {
+		creator, _ := system.GetAdminByAdminName(req.CreatorInfo.AdminName)
+		if creator != nil {
+			chartInfo.SysUserId = creator.AdminId
+			chartInfo.SysUserRealName = creator.RealName
+		}
+	}
+
 	chartInfo = new(models.ChartInfo)
 	chartInfo = new(models.ChartInfo)
 	chartInfo.ChartName = req.ChartInfo.ChartName
 	chartInfo.ChartName = req.ChartInfo.ChartName
 	chartInfo.EdbInfoIds = edbInfoIdStr
 	chartInfo.EdbInfoIds = edbInfoIdStr
-	chartInfo.SysUserId = req.ChartInfo.SysUserId
-	chartInfo.SysUserRealName = req.ChartInfo.SysUserRealName
+
 	chartInfo.CreateTime = time.Now()
 	chartInfo.CreateTime = time.Now()
 	chartInfo.ModifyTime = time.Now()
 	chartInfo.ModifyTime = time.Now()
 	chartInfo.IsSetName = req.ChartInfo.IsSetName
 	chartInfo.IsSetName = req.ChartInfo.IsSetName
@@ -277,8 +288,6 @@ func UpdateChartInfoAndEdbInfo(req *models.AddChartReq, sysUserId int, sysUserRe
 
 
 	chartInfo.ChartName = req.ChartInfo.ChartName
 	chartInfo.ChartName = req.ChartInfo.ChartName
 	chartInfo.EdbInfoIds = edbInfoIdStr
 	chartInfo.EdbInfoIds = edbInfoIdStr
-	chartInfo.SysUserId = req.ChartInfo.SysUserId
-	chartInfo.SysUserRealName = req.ChartInfo.SysUserRealName
 	chartInfo.ModifyTime = time.Now()
 	chartInfo.ModifyTime = time.Now()
 	chartInfo.IsSetName = req.ChartInfo.IsSetName
 	chartInfo.IsSetName = req.ChartInfo.IsSetName
 	chartInfo.DateType = req.ChartInfo.DateType
 	chartInfo.DateType = req.ChartInfo.DateType

+ 49 - 16
services/edb_data.go

@@ -3,7 +3,10 @@ package services
 import (
 import (
 	"eta/eta_forum_hub/models"
 	"eta/eta_forum_hub/models"
 	"eta/eta_forum_hub/models/mgodb"
 	"eta/eta_forum_hub/models/mgodb"
+	"eta/eta_forum_hub/utils"
 	"fmt"
 	"fmt"
+	"strconv"
+	"time"
 )
 )
 
 
 func BatchAddOrUpdateEdbData(req []*models.AddEdbDataReq) (err error) {
 func BatchAddOrUpdateEdbData(req []*models.AddEdbDataReq) (err error) {
@@ -23,24 +26,39 @@ func BatchAddOrUpdateEdbData(req []*models.AddEdbDataReq) (err error) {
 	return
 	return
 }
 }
 
 
-func AddOrUpdateEdbData(edbCode string, dataList []*mgodb.EdbDataBase) (err error) {
+func AddOrUpdateEdbData(edbCode string, dataList []*models.EdbDataBase) (err error) {
 	addList := make([]interface{}, 0)
 	addList := make([]interface{}, 0)
 	existList, err := mgodb.GetEdbDataBaseByEdbCode(edbCode)
 	existList, err := mgodb.GetEdbDataBaseByEdbCode(edbCode)
 	if err != nil {
 	if err != nil {
 		err = fmt.Errorf("查询指标数据出错 error, %v", err)
 		err = fmt.Errorf("查询指标数据出错 error, %v", err)
 		return
 		return
 	}
 	}
-	existMap := make(map[string]string, len(existList))
+	existMap := make(map[time.Time]*mgodb.EdbDataBase, len(existList))
 	for _, exist := range existList {
 	for _, exist := range existList {
-		existMap[exist.DataTime] = exist.Value
+		existMap[exist.DataTime] = exist
 	}
 	}
 	for _, v := range dataList {
 	for _, v := range dataList {
-		if oldVal, ok := existMap[v.DataTime]; !ok {
-			v.EdbInfoId = 0
-			addList = append(addList, v)
+		dataTime, e := time.ParseInLocation(utils.FormatDate, v.DataTime, time.Local)
+		if e != nil {
+			err = fmt.Errorf("时间格式化出错 error, %v", e)
+			return
+		}
+		val, e := strconv.ParseFloat(v.Value, 64)
+		if e != nil {
+			err = fmt.Errorf("指标数据格式化出错 error, %v", e)
+			return
+		}
+		if oldObj, ok := existMap[dataTime]; !ok {
+			tmp := &mgodb.EdbDataBase{
+				DataTime:   dataTime,
+				Value:      val,
+				CreateTime: time.Now(),
+				ModifyTime: time.Now(),
+			}
+			addList = append(addList, tmp)
 		} else {
 		} else {
-			if v.Value != oldVal {
-				err = mgodb.ModifyValueEdbDataValue(v.EdbCode, v.DataTime, v.Value)
+			if val != oldObj.Value {
+				err = mgodb.ModifyValueEdbDataValue(oldObj.EdbDataId, val)
 				if err != nil {
 				if err != nil {
 					err = fmt.Errorf("更新指标数据出错 error, %v", err)
 					err = fmt.Errorf("更新指标数据出错 error, %v", err)
 					return
 					return
@@ -54,24 +72,39 @@ func AddOrUpdateEdbData(edbCode string, dataList []*mgodb.EdbDataBase) (err erro
 	return
 	return
 }
 }
 
 
-func AddOrUpdateEdbDataCalculate(edbCode string, dataList []*mgodb.EdbDataBase) (err error) {
+func AddOrUpdateEdbDataCalculate(edbCode string, dataList []*models.EdbDataBase) (err error) {
 	addList := make([]interface{}, 0)
 	addList := make([]interface{}, 0)
 	existList, err := mgodb.GetEdbDataCalculateByEdbCode(edbCode)
 	existList, err := mgodb.GetEdbDataCalculateByEdbCode(edbCode)
 	if err != nil {
 	if err != nil {
 		err = fmt.Errorf("查询指标数据出错 error, %v", err)
 		err = fmt.Errorf("查询指标数据出错 error, %v", err)
 		return
 		return
 	}
 	}
-	existMap := make(map[string]string, len(existList))
+	existMap := make(map[time.Time]*mgodb.EdbDataBase, len(existList))
 	for _, exist := range existList {
 	for _, exist := range existList {
-		existMap[exist.DataTime] = exist.Value
+		existMap[exist.DataTime] = exist
 	}
 	}
 	for _, v := range dataList {
 	for _, v := range dataList {
-		if oldVal, ok := existMap[v.DataTime]; !ok {
-			v.EdbInfoId = 0
-			addList = append(addList, v)
+		dataTime, e := time.ParseInLocation(utils.FormatDate, v.DataTime, time.Local)
+		if e != nil {
+			err = fmt.Errorf("时间格式化出错 error, %v", e)
+			return
+		}
+		val, e := strconv.ParseFloat(v.Value, 64)
+		if e != nil {
+			err = fmt.Errorf("指标数据格式化出错 error, %v", e)
+			return
+		}
+		if oldObj, ok := existMap[dataTime]; !ok {
+			tmp := &mgodb.EdbDataBase{
+				DataTime:   dataTime,
+				Value:      val,
+				CreateTime: time.Now(),
+				ModifyTime: time.Now(),
+			}
+			addList = append(addList, tmp)
 		} else {
 		} else {
-			if v.Value != oldVal {
-				err = mgodb.ModifyValueEdbCalculateDataValue(v.EdbCode, v.DataTime, v.Value)
+			if val != oldObj.Value {
+				err = mgodb.ModifyValueEdbCalculateDataValue(oldObj.EdbDataId, val)
 				if err != nil {
 				if err != nil {
 					err = fmt.Errorf("更新指标数据出错 error, %v", err)
 					err = fmt.Errorf("更新指标数据出错 error, %v", err)
 					return
 					return