|
@@ -2,6 +2,7 @@ package backend
|
|
|
|
|
|
import (
|
|
|
"context"
|
|
|
+ "errors"
|
|
|
"kpt-pasture/model"
|
|
|
"kpt-pasture/util"
|
|
|
"net/http"
|
|
@@ -9,6 +10,8 @@ import (
|
|
|
"strings"
|
|
|
"time"
|
|
|
|
|
|
+ "gorm.io/gorm"
|
|
|
+
|
|
|
"gitee.com/xuyiping_admin/pkg/logger/zaplog"
|
|
|
"go.uber.org/zap"
|
|
|
|
|
@@ -184,3 +187,118 @@ func (s *StoreEntry) FocusIndicatorsSet(ctx context.Context, req *pasturePb.Inde
|
|
|
}
|
|
|
return nil
|
|
|
}
|
|
|
+
|
|
|
+func (s *StoreEntry) DataWarningSet(ctx context.Context, req *pasturePb.IndexDataWarningSetRequest) error {
|
|
|
+ userModel, err := s.GetUserModel(ctx)
|
|
|
+ if err != nil {
|
|
|
+ return xerr.WithStack(err)
|
|
|
+ }
|
|
|
+ if len(req.WarningDataSet) <= 0 {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ userDataWarningList := make([]*model.DataWarning, 0)
|
|
|
+ if err = s.DB.Model(new(model.DataWarning)).
|
|
|
+ Where("user_id = ?", userModel.SystemUser.Id).
|
|
|
+ Find(&userDataWarningList).Error; err != nil {
|
|
|
+ if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
+
|
|
|
+ } else {
|
|
|
+ return xerr.WithStack(err)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /*for _, v := range userDataWarningList {
|
|
|
+
|
|
|
+ }*/
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+func (s *StoreEntry) DataWarningList(ctx context.Context) (*pasturePb.IndexDataWarningResponse, error) {
|
|
|
+ userModel, err := s.GetUserModel(ctx)
|
|
|
+ if err != nil {
|
|
|
+ return nil, xerr.WithStack(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ defaultUserDataWarningList, err := s.DefaultDataWarning(ctx)
|
|
|
+ if err != nil {
|
|
|
+ return nil, xerr.WithStack(err)
|
|
|
+ }
|
|
|
+ currentUserDataWarningList := make([]*model.DataWarning, 0)
|
|
|
+ if err = s.DB.Model(new(model.DataWarning)).
|
|
|
+ Where("user_id = ?", userModel.SystemUser.Id).
|
|
|
+ Find(¤tUserDataWarningList).Error; err != nil {
|
|
|
+ return nil, xerr.WithStack(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果用户没有配置自己的预警数据,则使用默认数据
|
|
|
+ if len(currentUserDataWarningList) <= 0 {
|
|
|
+ currentUserDataWarningList = defaultUserDataWarningList
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(currentUserDataWarningList) <= 0 {
|
|
|
+ return nil, xerr.Custom("当前用户未配置预警数据,请联系管理员!")
|
|
|
+ }
|
|
|
+
|
|
|
+ warningIds := make([]int64, 0)
|
|
|
+ warningMap := make(map[int64]*model.DataWarning)
|
|
|
+ dataShow := make([]*pasturePb.WarningDataShow, 0)
|
|
|
+ for _, warningData := range currentUserDataWarningList {
|
|
|
+ dataUpdateTimeFormat := ""
|
|
|
+ if warningData.DataUpdateAt > 0 {
|
|
|
+ dataUpdateTimeFormat = time.Unix(warningData.DataUpdateAt, 0).Format(model.LayoutTime)
|
|
|
+ }
|
|
|
+ dataShow = append(dataShow, &pasturePb.WarningDataShow{
|
|
|
+ Name: warningData.Name,
|
|
|
+ Number: warningData.DataValue,
|
|
|
+ Describe: warningData.Description,
|
|
|
+ DataUpdateTimeFormat: dataUpdateTimeFormat,
|
|
|
+ })
|
|
|
+ warningMap[warningData.Id] = warningData
|
|
|
+ // 如果预警数据更新时间大于预警条件更新时间,则跳过
|
|
|
+ if warningData.DataUpdateAt > warningData.ConditionUpdateAt {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ warningIds = append(warningIds, warningData.Id)
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ dataWaningItems := make([]*model.DataWarningItems, 0)
|
|
|
+ if err = s.DB.Model(new(model.DataWarningItems)).
|
|
|
+ Where("warning_id in (?)", warningIds).
|
|
|
+ Find(&dataWaningItems).Error; err != nil {
|
|
|
+ return nil, xerr.WithStack(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ dataSet := make([]*pasturePb.WarningDataSet, 0)
|
|
|
+ for _, v := range dataWaningItems {
|
|
|
+ warningData := warningMap[v.WarningId]
|
|
|
+ dataSet = append(dataSet, &pasturePb.WarningDataSet{
|
|
|
+ WarningId: int32(v.WarningId),
|
|
|
+ GroupId: v.GroupId,
|
|
|
+ Name: warningData.Name,
|
|
|
+ FieldDesc: v.FieldDesc,
|
|
|
+ Operator: v.Operator,
|
|
|
+ Value: v.Value,
|
|
|
+ Kind: warningData.Kind,
|
|
|
+ IsShow: pasturePb.IsShow_Ok,
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ return &pasturePb.IndexDataWarningResponse{
|
|
|
+ Code: http.StatusOK,
|
|
|
+ Msg: "ok",
|
|
|
+ Data: &pasturePb.DataWarning{
|
|
|
+ DataSet: dataSet,
|
|
|
+ DataShow: dataShow,
|
|
|
+ },
|
|
|
+ }, nil
|
|
|
+}
|
|
|
+
|
|
|
+func (s *StoreEntry) DefaultDataWarning(ctx context.Context) ([]*model.DataWarning, error) {
|
|
|
+ defaultUserDataWarningList := make([]*model.DataWarning, 0)
|
|
|
+ if err := s.DB.Model(new(model.DataWarning)).
|
|
|
+ Where("user_id = ?", model.DefaultUserId).
|
|
|
+ Find(&defaultUserDataWarningList).Error; err != nil {
|
|
|
+ return nil, xerr.WithStack(err)
|
|
|
+ }
|
|
|
+ return defaultUserDataWarningList, nil
|
|
|
+}
|