check_sysmodel_ied_relation.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package bo
  2. import (
  3. "fmt"
  4. "scd_check_tools/logger"
  5. "scd_check_tools/models/enum"
  6. "scd_check_tools/tools"
  7. "strconv"
  8. "sync"
  9. "github.com/astaxie/beego/orm"
  10. )
  11. //系统内置模型-装置关系
  12. type T_data_model_relation_def struct {
  13. Id int `orm:"pk"`
  14. ModelId int // '模型ID' ,
  15. FromIedCode string // '装置类型1;关联代码:device_type',
  16. FromIedName string // '装置名称1',
  17. ToIedName string // '装置名称2',
  18. ToIedCode string // '装置类型2;关联代码:device_type',
  19. InType string // '输入端子类型;SV,GOOSE',
  20. Cr int // '创建人' ,
  21. Ct string `orm:"-"` // '创建时间' ,
  22. Ur int // '更新人' ,
  23. Ut string `orm:"-"` // '更新时间'
  24. }
  25. //内置检测模型-装置类型关系管理对象
  26. type SysCheckModelIedRelationMgr struct {
  27. Model T_data_model_relation_def
  28. DeviceBaseModel
  29. }
  30. var sysCheckModel_iedRelationDesc = "内置检测模型-装置类型关系"
  31. var SysModelRelationList = sync.Map{}
  32. func init() {
  33. orm.RegisterModel(new(T_data_model_relation_def))
  34. }
  35. //保存检测模型装置关系信息
  36. func (c *SysCheckModelIedRelationMgr) Save(nodes map[string]interface{}) (err error) {
  37. if nodes == nil {
  38. return
  39. }
  40. dblog := new(SystemLog)
  41. dblog.SetUserInfo(c.GetUserInfo())
  42. dblog.Audittype = enum.AuditType_check_model
  43. dblog.Logtype = enum.LogType_Insert
  44. dblog.Eventtype = enum.OptEventType_Bus
  45. dblog.Eventlevel = enum.OptEventLevel_Hight
  46. db := orm.NewOrm()
  47. _, err = db.Raw("delete from t_data_model_relation_def where model_id=?", c.Model.ModelId).Exec()
  48. if err != nil {
  49. logger.Logger.Error(err)
  50. dblog.Description = fmt.Sprintf("保存%s信息失败:%s,操作数据:%+v", sysCheckModel_iedRelationDesc, err.Error(), c.Model)
  51. dblog.Fail2()
  52. } else {
  53. tmpMap := map[string]interface{}{}
  54. for _, item2 := range nodes["nodes"].([]interface{}) {
  55. item := item2.(map[string]interface{})
  56. tmpMap[tools.IsEmpty(item["id"])] = item
  57. }
  58. for _, line2 := range nodes["edges"].([]interface{}) {
  59. line := line2.(map[string]interface{})
  60. sourceied := tools.IsEmpty(line["sourceNodeId"])
  61. targetied := tools.IsEmpty(line["targetNodeId"])
  62. isSv := ""
  63. if line["properties"] != nil {
  64. isSv = tools.IsEmpty(line["properties"].(map[string]interface{})["issv"])
  65. }
  66. newm := T_data_model_relation_def{}
  67. newm.ModelId = c.Model.ModelId
  68. newm.Cr, _ = strconv.Atoi(c.GetUserId())
  69. item := tmpMap[sourceied].(map[string]interface{})
  70. newm.FromIedCode = tools.IsEmpty(item["properties"].(map[string]interface{})["ied_type"])
  71. newm.FromIedName = tools.IsEmpty(item["text"].(map[string]interface{})["value"])
  72. if isSv == "" {
  73. newm.InType = "GOOSE"
  74. } else {
  75. newm.InType = isSv
  76. }
  77. item = tmpMap[targetied].(map[string]interface{})
  78. newm.ToIedCode = tools.IsEmpty(item["properties"].(map[string]interface{})["ied_type"])
  79. newm.ToIedName = tools.IsEmpty(item["text"].(map[string]interface{})["value"])
  80. _, err = db.Insert(&newm)
  81. if err != nil {
  82. logger.Logger.Error(err)
  83. return err
  84. }
  85. }
  86. SysModelRelationList.Delete(c.Model.ModelId)
  87. dblog.Description = fmt.Sprintf("保存%s信息成功,操作数据:%+v", sysCheckModel_iedRelationDesc, c.Model)
  88. dblog.Success2()
  89. }
  90. return err
  91. }
  92. //根据model中指定的id删除
  93. func (c *SysCheckModelIedRelationMgr) Delete() (err error) {
  94. dblog := new(SystemLog)
  95. dblog.SetUserInfo(c.GetUserInfo())
  96. dblog.Audittype = enum.AuditType_check_model
  97. dblog.Logtype = enum.LogType_Delete
  98. dblog.Eventtype = enum.OptEventType_Bus
  99. dblog.Eventlevel = enum.OptEventLevel_Hight
  100. db := orm.NewOrm()
  101. _, err = db.Raw("delete from t_data_model_relation_def where model_id=?", c.Model.ModelId).Exec()
  102. if err != nil {
  103. logger.Logger.Error(err)
  104. dblog.Description = fmt.Sprintf("删除%s(%d)失败:%s", sysCheckModel_iedRelationDesc, c.Model.ModelId, err.Error())
  105. dblog.Fail2()
  106. } else {
  107. SysModelRelationList.Delete(c.Model.ModelId)
  108. dblog.Description = fmt.Sprintf("删除%s(%d)成功", sysCheckModel_iedRelationDesc, c.Model.ModelId)
  109. dblog.Success2()
  110. }
  111. return err
  112. }
  113. //复制模型
  114. func (c *SysCheckModelIedRelationMgr) Copy(fromModelId int) (error, int) {
  115. dblog := new(SystemLog)
  116. dblog.SetUserInfo(c.GetUserInfo())
  117. dblog.Audittype = enum.AuditType_check_model
  118. dblog.Logtype = enum.LogType_Query
  119. dblog.Eventtype = enum.OptEventType_Bus
  120. dblog.Eventlevel = enum.OptEventLevel_Low
  121. o := orm.NewOrm()
  122. o.Read(&c.Model)
  123. sql := "insert into t_data_model_defualt(model_name,area_type,vol_id,line_link_style,ied_types,relation_json,is_sys)values(?,?,?,?,?,?,?)"
  124. r, err := o.Raw(sql).Exec()
  125. if err != nil {
  126. logger.Logger.Error(err)
  127. dblog.Description = fmt.Sprintf("复制%s(%d)失败:%s", sysCheckModel_iedRelationDesc, fromModelId, err.Error())
  128. dblog.Fail2()
  129. return err, 0
  130. } else {
  131. dblog.Description = fmt.Sprintf("复制%s(%d)成功", sysCheckModel_iedRelationDesc, fromModelId)
  132. dblog.Success2()
  133. id, _ := r.LastInsertId()
  134. return nil, int(id)
  135. }
  136. return nil, 0
  137. }
  138. //获取指定电压等级下的所有模型
  139. func (c *SysCheckModelIedRelationMgr) GetListByModelid(modelid int) ([]orm.Params, error) {
  140. if v, h := SysModelRelationList.Load(modelid); h {
  141. return v.([]orm.Params), nil
  142. }
  143. o := orm.NewOrm()
  144. sqlParamters := []interface{}{modelid}
  145. sql := "select t.* from t_data_model_relation_def t where t.model_id=?"
  146. rowset := []orm.Params{}
  147. _, err := o.Raw(sql, sqlParamters).Values(&rowset)
  148. if err != nil {
  149. logger.Logger.Error(err)
  150. } else {
  151. SysModelRelationList.Store(modelid, rowset)
  152. }
  153. return rowset, err
  154. }