deviceLogic.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. package logic
  2. import (
  3. "git.rtzhtech.cn/iss/public-lib/dao"
  4. "git.rtzhtech.cn/iss/public-lib/dto"
  5. "git.rtzhtech.cn/iss/public-lib/model"
  6. "git.rtzhtech.cn/iss/public-lib/svc"
  7. "github.com/gogf/gf/v2/util/gconv"
  8. "gorm.io/gen/field"
  9. )
  10. type DeviceLogic struct {
  11. //ctx context.Context
  12. SvcCtx *svc.ServiceContext
  13. }
  14. // NewDeviceLogic
  15. // @Description: 设备
  16. // @return *DeviceLogic
  17. func NewDeviceLogic() *DeviceLogic {
  18. return &DeviceLogic{
  19. //ctx: ctx,
  20. SvcCtx: svc.SvcCtx,
  21. }
  22. }
  23. // AddDevice
  24. // @Description: 添加
  25. // @receiver l
  26. // @param in
  27. // @return error
  28. func (l *DeviceLogic) AddDevice(in *model.DevDevinfo) error {
  29. in.ID = 0
  30. err := l.SvcCtx.DevDevinfo.Create(in)
  31. return err
  32. }
  33. //func (l *DeviceLogic) AddDevice2(in *model.DevDevinfo) error {
  34. // m := gconv.Map(in)
  35. // err := l.SvcCtx.DevDevinfo.Base.Replace(m)
  36. // return err
  37. //}
  38. // DelDevice
  39. // @Description: 删除
  40. // @receiver l
  41. // @param deviceId
  42. // @return error
  43. func (l *DeviceLogic) DelDevice(deviceId int32) error {
  44. do := l.SvcCtx.DevDevinfo
  45. _devMpinfo := l.SvcCtx.DevMpinfo
  46. _devCpinfo := l.SvcCtx.DevCpinfo
  47. mpInfoLogic := NewMpInfoLogic()
  48. cpInfoLogic := NewCpInfoLogic()
  49. //删除测点
  50. var mpId []int64
  51. _devMpinfo.Select(_devMpinfo.Mpid).Where(_devMpinfo.Deviceid.Eq(deviceId)).Scan(&mpId)
  52. for _, v := range mpId {
  53. mpInfoLogic.DelMpInfo(v)
  54. }
  55. //删除动作点
  56. var cpId []int64
  57. _devCpinfo.Select(_devCpinfo.Cpid).Where(_devCpinfo.Deviceid.Eq(deviceId)).Scan(&cpId)
  58. for _, v := range cpId {
  59. cpInfoLogic.DelCpInfo(v)
  60. }
  61. _, err := do.Where(do.Deviceid.Eq(deviceId)).Delete()
  62. return err
  63. }
  64. // ModifyDevice
  65. // @Description: 修改
  66. // @receiver l
  67. // @param in
  68. // @param fields 更新字段,当field为null时,更新in的全部字段
  69. // @return error
  70. func (l *DeviceLogic) ModifyDevice(in *model.DevDevinfo, fields ...string) error {
  71. do := l.SvcCtx.DevDevinfo
  72. var err error
  73. _do := do.Omit(do.ID).Where(do.Deviceid.Eq(in.Deviceid))
  74. if fields == nil {
  75. m := gconv.Map(in)
  76. _, err = _do.Updates(m)
  77. return err
  78. }
  79. var fieldList []field.Expr
  80. for _, v := range fields {
  81. _f, ok := do.GetFieldByName(v)
  82. if ok {
  83. fieldList = append(fieldList, _f)
  84. }
  85. }
  86. _, err = _do.Select(fieldList...).Updates(in)
  87. return err
  88. }
  89. func (l *DeviceLogic) getDeviceCond(req *dto.GetDeviceReq) *dao.Condition {
  90. _dao := l.SvcCtx.DevDevinfo
  91. cond := NewCondition(&req.LimitPage)
  92. if req.AppId > 0 {
  93. cond.Where[_dao.Appid.String()] = req.AppId
  94. }
  95. if req.DeviceName != "" {
  96. cond.Where[_dao.Devicename.String()+" like ?"] = "%" + req.DeviceName + "%"
  97. }
  98. return cond
  99. }
  100. // GetDeviceInfo
  101. // @Description: 分页查询
  102. // @receiver l
  103. // @param where 查询条件
  104. // @param page
  105. // @param limit
  106. // @return []*model.DevDevinfo
  107. // @return error
  108. func (l *DeviceLogic) GetDeviceInfo(req *dto.GetDeviceReq) (*dto.GetDeviceResp, error) {
  109. cond := l.getDeviceCond(req)
  110. resp := &dto.GetDeviceResp{}
  111. err := l.SvcCtx.DevDevinfo.Base.Find(cond, &resp.List)
  112. if err != nil {
  113. return nil, err
  114. }
  115. err = l.SvcCtx.DevDevinfo.Base.Count(cond, &resp.Total)
  116. return resp, err
  117. }
  118. // GetDeviceCount
  119. // @Description:查询满足条件的总数
  120. // @receiver l
  121. // @param where 查询条件
  122. // @return int64
  123. // @return error
  124. func (l *DeviceLogic) GetDeviceCount(req *dto.GetDeviceReq) (int64, error) {
  125. cond := l.getDeviceCond(req)
  126. var count int64
  127. err := l.SvcCtx.DevDevinfo.Base.Count(cond, &count)
  128. if err != nil {
  129. return 0, err
  130. }
  131. return count, err
  132. }