base_from_business_data.go 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. package mgo
  2. import (
  3. "context"
  4. "errors"
  5. "eta_gn/eta_chart_lib/utils"
  6. "fmt"
  7. "github.com/qiniu/qmgo"
  8. "go.mongodb.org/mongo-driver/bson"
  9. "go.mongodb.org/mongo-driver/bson/primitive"
  10. "time"
  11. )
  12. type BaseFromBusinessData struct {
  13. ID primitive.ObjectID `json:"_id" bson:"_id,omitempty"` // 文档id
  14. BaseFromBusinessIndexId int64 `json:"base_from_business_index_id" bson:"base_from_business_index_id"` // 指标id
  15. IndexCode string `json:"index_code" bson:"index_code"` // 指标编码
  16. DataTime time.Time `json:"data_time" bson:"data_time"` // 数据日期
  17. Value float64 `json:"value" bson:"value"` // 数据值
  18. CreateTime time.Time `json:"create_time" bson:"create_time"` // 创建时间
  19. ModifyTime time.Time `json:"modify_time" bson:"modify_time"` // 修改时间
  20. }
  21. func (m *BaseFromBusinessData) CollectionName() string {
  22. return "base_from_business_data"
  23. }
  24. func (m *BaseFromBusinessData) DataBaseName() string {
  25. return utils.MgoDataDbName
  26. }
  27. func (m *BaseFromBusinessData) GetCollection() *qmgo.Collection {
  28. db := utils.MgoDataCli.Database(m.DataBaseName())
  29. return db.Collection(m.CollectionName())
  30. }
  31. func (m *BaseFromBusinessData) GetAllDataList(whereParams interface{}, sort []string) (result []*BaseFromBusinessData, err error) {
  32. if utils.MgoDataCli == nil {
  33. err = errors.New("mongodb连接失败")
  34. return
  35. }
  36. db := utils.MgoDataCli.Database(m.DataBaseName())
  37. coll := db.Collection(m.CollectionName())
  38. ctx := context.TODO()
  39. if err != nil {
  40. fmt.Println("MgoGetColl Err:", err.Error())
  41. return
  42. }
  43. err = coll.Find(ctx, whereParams).Sort(sort...).All(&result)
  44. if err != nil {
  45. return
  46. }
  47. for _, v := range result {
  48. v.DataTime = v.DataTime.In(time.Local)
  49. v.CreateTime = v.CreateTime.In(time.Local)
  50. v.ModifyTime = v.ModifyTime.In(time.Local)
  51. }
  52. return
  53. }
  54. func (m *BaseFromBusinessData) GetLimitDataList(whereParams interface{}, size int64, sort []string) (result []*BaseFromBusinessData, err error) {
  55. if utils.MgoDataCli == nil {
  56. err = errors.New("mongodb连接失败")
  57. return
  58. }
  59. db := utils.MgoDataCli.Database(m.DataBaseName())
  60. coll := db.Collection(m.CollectionName())
  61. ctx := context.TODO()
  62. if err != nil {
  63. fmt.Println("MgoGetColl Err:", err.Error())
  64. return
  65. }
  66. err = coll.Find(ctx, whereParams).Sort(sort...).Limit(size).All(&result)
  67. if err != nil {
  68. return
  69. }
  70. for _, v := range result {
  71. v.DataTime = v.DataTime.In(time.Local)
  72. v.CreateTime = v.CreateTime.In(time.Local)
  73. v.ModifyTime = v.ModifyTime.In(time.Local)
  74. }
  75. return
  76. }
  77. func (m *BaseFromBusinessData) GetPageDataList(whereParams interface{}, startSize, size int64, sort []string) (result []*BaseFromBusinessData, err error) {
  78. if utils.MgoDataCli == nil {
  79. err = errors.New("mongodb连接失败")
  80. return
  81. }
  82. db := utils.MgoDataCli.Database(m.DataBaseName())
  83. coll := db.Collection(m.CollectionName())
  84. ctx := context.TODO()
  85. if err != nil {
  86. fmt.Println("MgoGetColl Err:", err.Error())
  87. return
  88. }
  89. err = coll.Find(ctx, whereParams).Sort(sort...).Skip(startSize).Limit(size).All(&result)
  90. if err != nil {
  91. return
  92. }
  93. for _, v := range result {
  94. v.DataTime = v.DataTime.In(time.Local)
  95. v.CreateTime = v.CreateTime.In(time.Local)
  96. v.ModifyTime = v.ModifyTime.In(time.Local)
  97. }
  98. return
  99. }
  100. func (m *BaseFromBusinessData) GetCountDataList(whereParams interface{}) (count int64, err error) {
  101. if utils.MgoDataCli == nil {
  102. err = errors.New("mongodb连接失败")
  103. return
  104. }
  105. db := utils.MgoDataCli.Database(m.DataBaseName())
  106. coll := db.Collection(m.CollectionName())
  107. ctx := context.TODO()
  108. if err != nil {
  109. fmt.Println("MgoGetColl Err:", err.Error())
  110. return
  111. }
  112. count, err = coll.Find(ctx, whereParams).Count()
  113. return
  114. }
  115. func (m *BaseFromBusinessData) BatchInsertData(dataList interface{}) (err error) {
  116. db := utils.MgoDataCli.Database(m.DataBaseName())
  117. coll := db.Collection(m.CollectionName())
  118. ctx := context.TODO()
  119. _, err = coll.InsertMany(ctx, dataList)
  120. if err != nil {
  121. fmt.Println("BatchInsertData:Err:" + err.Error())
  122. return
  123. }
  124. return
  125. }
  126. func (m *BaseFromBusinessData) UpdateDataByColl(coll *qmgo.Collection, whereParams, updateParams interface{}) (err error) {
  127. ctx := context.TODO()
  128. err = coll.UpdateOne(ctx, whereParams, updateParams)
  129. if err != nil {
  130. fmt.Println("UpdateDataByColl:Err:" + err.Error())
  131. return
  132. }
  133. return
  134. }
  135. func (m *BaseFromBusinessData) UpdateData(whereParams, updateParams interface{}) (err error) {
  136. db := utils.MgoDataCli.Database(m.DataBaseName())
  137. coll := db.Collection(m.CollectionName())
  138. ctx := context.TODO()
  139. err = coll.UpdateOne(ctx, whereParams, updateParams)
  140. if err != nil {
  141. fmt.Println("UpdateData:Err:" + err.Error())
  142. return
  143. }
  144. return
  145. }
  146. func (m *BaseFromBusinessData) HandleData(addDataList, updateDataList []BaseFromBusinessData) (result interface{}, err error) {
  147. ctx := context.TODO()
  148. callback := func(sessCtx context.Context) (interface{}, error) {
  149. db := utils.MgoDataCli.Database(m.DataBaseName())
  150. coll := db.Collection(m.CollectionName())
  151. if len(addDataList) > 0 {
  152. _, err = coll.InsertMany(sessCtx, addDataList)
  153. if err != nil {
  154. return nil, err
  155. }
  156. }
  157. if len(updateDataList) > 0 {
  158. for _, v := range updateDataList {
  159. err = coll.UpdateOne(ctx, bson.M{"_id": v.ID}, bson.M{"$set": bson.M{"value": v.Value, "modify_time": v.ModifyTime}})
  160. if err != nil {
  161. fmt.Println("BatchInsertData:Err:" + err.Error())
  162. return nil, err
  163. }
  164. }
  165. }
  166. return nil, nil
  167. }
  168. result, err = utils.MgoDataCli.DoTransaction(ctx, callback)
  169. return
  170. }
  171. func (m *BaseFromBusinessData) GetEdbInfoMaxAndMinInfo(whereParams interface{}) (result EdbInfoMaxAndMinInfo, err error) {
  172. if utils.MgoDataCli == nil {
  173. err = errors.New("mongodb连接失败")
  174. return
  175. }
  176. db := utils.MgoDataCli.Database(m.DataBaseName())
  177. coll := db.Collection(m.CollectionName())
  178. ctx := context.TODO()
  179. if err != nil {
  180. fmt.Println("MgoGetColl Err:", err.Error())
  181. return
  182. }
  183. err = coll.Aggregate(ctx, whereParams).One(&result)
  184. if err != nil {
  185. return
  186. }
  187. result.MinDate = result.MinDate.In(time.Local)
  188. result.MaxDate = result.MaxDate.In(time.Local)
  189. result.LatestDate = result.LatestDate.In(time.Local)
  190. return
  191. }
  192. func (m *BaseFromBusinessData) GetLatestValue(whereParams, selectParam interface{}) (latestValue LatestValue, err error) {
  193. if utils.MgoDataCli == nil {
  194. err = errors.New("mongodb连接失败")
  195. return
  196. }
  197. db := utils.MgoDataCli.Database(m.DataBaseName())
  198. coll := db.Collection(m.CollectionName())
  199. ctx := context.TODO()
  200. if err != nil {
  201. fmt.Println("MgoGetColl Err:", err.Error())
  202. return
  203. }
  204. err = coll.Find(ctx, whereParams).Select(selectParam).One(&latestValue)
  205. return
  206. }