123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- package bo
- import (
- "errors"
- "fmt"
- "scd_check_tools/logger"
- "scd_check_tools/models/enum"
- "scd_check_tools/tools"
- "strconv"
- "sync"
- "github.com/astaxie/beego/orm"
- )
- //系统内置模型-装置功能管理
- type T_data_model_func_def struct {
- Id int `orm:"pk"`
- ModelId int // '模型ID' ,
- IedType string // '装置类型;关联代码:device_type',
- FuncName string // '功能名称',
- FuncFcdaId int `orm:"-"`
- FcdaName string `orm:"-"` // 端子设计名称
- FcdaMatchExp string `orm:"-"` // 端子匹配表达式
- Cr int // '创建人' ,
- Ct string `orm:"-"` // '创建时间' ,
- Ur int // '更新人' ,
- Ut string `orm:"-"` // '更新时间'
- }
- //内置检测模型-装置功能管理对象
- type SysCheckModelIedFuncMgr struct {
- Model T_data_model_func_def
- DeviceBaseModel
- }
- var sysCheckModel_iedFuncDesc = "内置检测模型-装置功能管理"
- var SysModelFuncList = sync.Map{}
- func init() {
- orm.RegisterModel(new(T_data_model_func_def))
- }
- //保存检测模型装置功能信息
- func (c *SysCheckModelIedFuncMgr) Save() (err error) {
- dblog := new(SystemLog)
- dblog.SetUserInfo(c.GetUserInfo())
- dblog.Audittype = enum.AuditType_check_model
- dblog.Logtype = enum.LogType_Insert
- dblog.Eventtype = enum.OptEventType_Bus
- dblog.Eventlevel = enum.OptEventLevel_Hight
- db := orm.NewOrm()
- hasName, err := c.Exist()
- if err != nil {
- return err
- }
- if hasName {
- return errors.New("功能名称已存在")
- }
- db.Begin()
- if c.Model.Id > 0 {
- //编辑
- _, err = db.Update(&c.Model)
- } else {
- //新增
- _, err = db.Insert(&c.Model)
- }
- if err != nil {
- logger.Logger.Error(err)
- dblog.Description = fmt.Sprintf("保存%s信息失败:%s,操作数据:%+v", sysCheckModel_iedFuncDesc, err.Error(), c.Model)
- dblog.Fail2()
- } else {
- //保存功能-端子定义
- fcdaMgr := new(SysCheckModelIedFuncFcdaMgr)
- fcdaMgr.Model = T_data_model_func_fcda{ModelId: c.Model.ModelId}
- fcdaMgr.Model.Id = c.Model.FuncFcdaId
- fcdaMgr.Model.FcdaMatchExp = c.Model.FcdaMatchExp
- fcdaMgr.Model.FcdaName = c.Model.FcdaName
- err = fcdaMgr.Save()
- if err != nil {
- db.Rollback()
- logger.Logger.Error(err)
- dblog.Description = fmt.Sprintf("保存%s信息失败:%s,操作数据:%+v", sysCheckModel_iedFuncDesc, err.Error(), c.Model)
- dblog.Fail2()
- return
- }
- db.Commit()
- dblog.Description = fmt.Sprintf("保存%s信息成功,操作数据:%+v", sysCheckModel_iedFuncDesc, c.Model)
- dblog.Success2()
- }
- return err
- }
- func (c *SysCheckModelIedFuncMgr) Exist() (bool, error) {
- db := orm.NewOrm()
- if c.Model.FuncName == "" {
- return false, errors.New("功能名称不能为空")
- }
- rowset := []orm.Params{}
- _, err := db.Raw("select id from t_data_model_func_def where model_id=? and ied_type=? and func_name=?", c.Model.ModelId, c.Model.IedType, c.Model.FuncName).Values(&rowset)
- if len(rowset) > 0 {
- if tools.IsEmpty(c.Model.Id) != tools.IsEmpty(rowset[0]["id"]) {
- return false, nil
- } else {
- return true, nil
- }
- }
- return false, err
- }
- //根据model中指定的id删除
- func (c *SysCheckModelIedFuncMgr) Delete() (err error) {
- dblog := new(SystemLog)
- dblog.SetUserInfo(c.GetUserInfo())
- dblog.Audittype = enum.AuditType_check_model
- dblog.Logtype = enum.LogType_Delete
- dblog.Eventtype = enum.OptEventType_Bus
- dblog.Eventlevel = enum.OptEventLevel_Hight
- db := orm.NewOrm()
- funcLst := []orm.Params{}
- if c.Model.Id > 0 {
- _, err = db.Raw("delete from t_data_model_func_def where id=?", c.Model.Id).Exec()
- } else if c.Model.IedType != "" {
- //删除指定装置类型的数据
- db.Raw("select id from t_data_model_func_def where model_id=? and ied_type=?", c.Model.ModelId, c.Model.IedType).Values(&funcLst)
- _, err = db.Raw("delete from t_data_model_func_def where model_id=? and ied_type=?", c.Model.ModelId, c.Model.IedType).Exec()
- } else {
- _, err = db.Raw("delete from t_data_model_func_def where model_id=?", c.Model.ModelId).Exec()
- }
- if err != nil {
- logger.Logger.Error(err)
- dblog.Description = fmt.Sprintf("删除%s(%d)失败:%s", sysCheckModel_iedFuncDesc, c.Model.ModelId, err.Error())
- dblog.Fail2()
- } else {
- fcdaMgr := new(SysCheckModelIedFuncFcdaMgr)
- fcdaMgr.Model = T_data_model_func_fcda{ModelId: c.Model.ModelId}
- if c.Model.Id > 0 {
- fcdaMgr.Model.FuncId = c.Model.Id
- }
- if c.Model.IedType != "" {
- //删除所有功能的相关数据
- for _, row := range funcLst {
- fcdaMgr.Model.FuncId, _ = strconv.Atoi(tools.IsEmpty(row["id"]))
- fcdaMgr.Delete()
- }
- } else {
- fcdaMgr.Delete()
- }
- SysModelRelationList.Delete(c.Model.ModelId)
- dblog.Description = fmt.Sprintf("删除%s(%d)成功", sysCheckModel_iedFuncDesc, c.Model.ModelId)
- dblog.Success2()
- }
- return err
- }
- func (c *SysCheckModelIedFuncMgr) GetListByModelid(modelid int) ([]orm.Params, error) {
- if v, h := SysModelFuncList.Load(modelid); h {
- return v.([]orm.Params), nil
- }
- o := orm.NewOrm()
- sqlParamters := []interface{}{modelid}
- sql := "select t.* from t_data_model_func_def t where t.model_id=?"
- rowset := []orm.Params{}
- _, err := o.Raw(sql, sqlParamters).Values(&rowset)
- if err != nil {
- logger.Logger.Error(err)
- } else {
- SysModelFuncList.Store(modelid, rowset)
- }
- return rowset, err
- }
|