check_sysmodel_ied_func_fcda.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. package bo
  2. import (
  3. "errors"
  4. "fmt"
  5. "scd_check_tools/logger"
  6. "scd_check_tools/models/enum"
  7. "scd_check_tools/tools"
  8. "strconv"
  9. "github.com/astaxie/beego/orm"
  10. )
  11. //系统内置模型-装置功能点端子管理
  12. type T_data_model_func_fcda struct {
  13. Id int `orm:"pk"`
  14. ModelId int // '模型ID' ,
  15. FuncId int // '功能ID',
  16. FcdaName string // 端子设计名称
  17. FcdaMatchExp string // 端子匹配表达式
  18. Cr int // '创建人' ,
  19. Ct string `orm:"-"` // '创建时间' ,
  20. Ur int // '更新人' ,
  21. Ut string `orm:"-"` // '更新时间'
  22. }
  23. //内置检测模型-装置功能点端子管理
  24. type SysCheckModelIedFuncFcdaMgr struct {
  25. Model T_data_model_func_fcda
  26. DeviceBaseModel
  27. }
  28. var sysCheckModel_iedFuncFcdaDesc = "内置检测模型-装置功能点端子管理"
  29. func init() {
  30. orm.RegisterModel(new(T_data_model_func_fcda))
  31. }
  32. //保存检测模型装置功能信息
  33. func (c *SysCheckModelIedFuncFcdaMgr) Save() (err error) {
  34. dblog := new(SystemLog)
  35. dblog.SetUserInfo(c.GetUserInfo())
  36. dblog.Audittype = enum.AuditType_check_model
  37. dblog.Logtype = enum.LogType_Insert
  38. dblog.Eventtype = enum.OptEventType_Bus
  39. dblog.Eventlevel = enum.OptEventLevel_Hight
  40. db := orm.NewOrm()
  41. hasName, err := c.Exist()
  42. if err != nil {
  43. return err
  44. }
  45. if hasName {
  46. return errors.New("端子名称已存在")
  47. }
  48. if c.Model.Id > 0 {
  49. //编辑
  50. _, err = db.Update(&c.Model)
  51. } else {
  52. //新增
  53. _, err = db.Insert(&c.Model)
  54. }
  55. if err != nil {
  56. logger.Logger.Error(err)
  57. dblog.Description = fmt.Sprintf("保存%s信息失败:%s,操作数据:%+v", sysCheckModel_iedFuncFcdaDesc, err.Error(), c.Model)
  58. dblog.Fail2()
  59. } else {
  60. dblog.Description = fmt.Sprintf("保存%s信息成功,操作数据:%+v", sysCheckModel_iedFuncFcdaDesc, c.Model)
  61. dblog.Success2()
  62. }
  63. return err
  64. }
  65. func (c *SysCheckModelIedFuncFcdaMgr) Exist() (bool, error) {
  66. db := orm.NewOrm()
  67. if c.Model.FcdaName == "" {
  68. return false, errors.New("端子设计名称不能为空")
  69. }
  70. rowset := []orm.Params{}
  71. _, err := db.Raw("select id from t_data_model_func_fcda where model_id=? and func_id=? and fcda_name=?", c.Model.ModelId, c.Model.FuncId, c.Model.FcdaName).Values(&rowset)
  72. if len(rowset) > 0 {
  73. if tools.IsEmpty(c.Model.Id) != tools.IsEmpty(rowset[0]["id"]) {
  74. //端子名称重复
  75. return true, nil
  76. } else {
  77. return false, nil
  78. }
  79. }
  80. return false, err
  81. }
  82. func (c *SysCheckModelIedFuncFcdaMgr) Copy(oldFuncId, newModelId, newFuncId int) error {
  83. db := orm.NewOrm()
  84. rowset := []orm.Params{}
  85. db.Raw("select * from t_data_model_func_fcda where model_id=? and func_id=?", c.Model.ModelId, oldFuncId).Values(&rowset)
  86. for _, row := range rowset {
  87. oldFcdaId, _ := strconv.Atoi(tools.IsEmpty(row["id"]))
  88. //复制端子数据
  89. newFcda := T_data_model_func_fcda{
  90. ModelId: newModelId,
  91. FuncId: newFuncId,
  92. FcdaName: tools.IsEmpty(row["fcda_name"]),
  93. FcdaMatchExp: tools.IsEmpty(row["fcda_match_exp"]),
  94. }
  95. newid, err := db.Insert(&newFcda)
  96. if err != nil {
  97. logger.Logger.Error(err)
  98. return err
  99. }
  100. db.Raw("update t_data_model_fcda_ref set from_func_id=?,from_fcda_id=? where model_id=? and from_func_id=? and from_fcda_id=?", newFuncId, newid, newModelId, oldFuncId, oldFcdaId).Exec()
  101. db.Raw("update t_data_model_fcda_ref set to_func_id=?,to_fcda_id=? where model_id=? and to_func_id=? and to_fcda_id=?", newFuncId, newid, newModelId, oldFuncId, oldFcdaId).Exec()
  102. }
  103. return nil
  104. }
  105. //根据model中指定的id删除
  106. func (c *SysCheckModelIedFuncFcdaMgr) Delete() (err error) {
  107. dblog := new(SystemLog)
  108. dblog.SetUserInfo(c.GetUserInfo())
  109. dblog.Audittype = enum.AuditType_check_model
  110. dblog.Logtype = enum.LogType_Delete
  111. dblog.Eventtype = enum.OptEventType_Bus
  112. dblog.Eventlevel = enum.OptEventLevel_Hight
  113. db := orm.NewOrm()
  114. one := T_data_model_func_fcda{Id: c.Model.Id}
  115. if c.Model.Id > 0 {
  116. db.Read(&one)
  117. _, err = db.Raw("delete from t_data_model_func_fcda where id=?", c.Model.Id).Exec()
  118. } else if c.Model.FuncId > 0 {
  119. _, err = db.Raw("delete from t_data_model_func_fcda where model_id=? and func_id=?", c.Model.ModelId, c.Model.FuncId).Exec()
  120. } else {
  121. _, err = db.Raw("delete from t_data_model_func_fcda where model_id=? ", c.Model.ModelId).Exec()
  122. }
  123. if err != nil {
  124. logger.Logger.Error(err)
  125. dblog.Description = fmt.Sprintf("删除%s(%d)失败:%s", sysCheckModel_iedFuncFcdaDesc, c.Model.ModelId, err.Error())
  126. dblog.Fail2()
  127. } else {
  128. fcdaMgr := new(SysCheckModelFcdaRalationMgr)
  129. fcdaMgr.Model = T_data_model_fcda_ref{ModelId: c.Model.ModelId}
  130. if c.Model.Id > 0 {
  131. fcdaMgr.Model.FromFcdaId = c.Model.Id
  132. } else if c.Model.FuncId > 0 {
  133. fcdaMgr.Model.FromFuncId = c.Model.FuncId
  134. }
  135. fcdaMgr.Delete()
  136. dblog.Description = fmt.Sprintf("删除%s(%d)成功", sysCheckModel_iedFuncFcdaDesc, c.Model.ModelId)
  137. dblog.Success2()
  138. if c.Model.Id > 0 {
  139. //判断端子是否全部删除
  140. if one.FuncId > 0 {
  141. c.Model.ModelId = one.ModelId
  142. c.Model.FuncId = one.FuncId
  143. r, _ := c.GetList()
  144. if len(r) == 0 {
  145. //删除功能定义数据
  146. funcMgr := new(SysCheckModelIedFuncMgr)
  147. funcMgr.Model.Id = one.FuncId
  148. funcMgr.Delete()
  149. }
  150. }
  151. }
  152. }
  153. return err
  154. }
  155. func (c *SysCheckModelIedFuncFcdaMgr) One(id int) (T_data_model_func_fcda, error) {
  156. tmp := T_data_model_func_fcda{Id: id}
  157. db := orm.NewOrm()
  158. err := db.Read(&tmp)
  159. return tmp, err
  160. }
  161. func (c *SysCheckModelIedFuncFcdaMgr) GetList() ([]orm.Params, error) {
  162. o := orm.NewOrm()
  163. sqlParamters := []interface{}{c.Model.ModelId, c.Model.FuncId}
  164. sql := "select t.*,t1.func_name from t_data_model_func_fcda t,t_data_model_func_def t1 where t1.id=t.func_id and t.model_id=? and t.func_id=?"
  165. rowset := []orm.Params{}
  166. _, err := o.Raw(sql, sqlParamters).Values(&rowset)
  167. if err != nil {
  168. logger.Logger.Error(err)
  169. }
  170. return rowset, err
  171. }