GAAS GFrame项目web后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
4.1 KiB

  1. package models
  2. import (
  3. "LAPP_GAAS_GFrame_BACKEND/db"
  4. "LAPP_GAAS_GFrame_BACKEND/utils"
  5. "errors"
  6. "strconv"
  7. "xorm.io/core"
  8. )
  9. type Stdeftab struct {
  10. Finr int `xorm:"pk comment('工厂号') Int" json:"stdeftab-finr"`
  11. Stdeftyp string `xorm:"pk comment('种类') VARCHAR(15)" json:"stdeftab-stdeftyp"`
  12. Statid string `xorm:"pk comment('标识') VARCHAR(30)" json:"stdeftab-statid"`
  13. Lang string `xorm:"pk comment('语言') VARCHAR(3)" json:"stdeftab-lang"`
  14. Bez string `xorm:"comment('名称') VARCHAR(30)" json:"stdeftab-bez"`
  15. Lastmodif string `xorm:"comment('最近一次更改时间') VARCHAR(14)" json:"stdeftab-lastmodif"`
  16. Lastuser string `xorm:"comment('最近一次更改人') VARCHAR(20)" json:"stdeftab-lastuser"`
  17. Credatuz string `xorm:"comment('创建时间') VARCHAR(14)" json:"stdeftab-credatuz"`
  18. }
  19. type StdeftabTemp struct {
  20. *Stdeftab
  21. Stdeftyp int `json:"stdeftab-stdeftyp"`
  22. }
  23. func (t *Stdeftab) TableName() string {
  24. return "stdeftab"
  25. }
  26. // 清除string字段的右侧空格
  27. func (t *Stdeftab) Clipped() {
  28. utils.TrimStruct(t, *t)
  29. }
  30. //增
  31. func (t *Stdeftab) Add() error {
  32. e := db.Eloquent.Master()
  33. count := new(Stdeftab)
  34. affw, err := e.Table("stdeftab").ID(core.PK{t.Finr, t.Stdeftyp, t.Statid, t.Lang}).Count(count)
  35. if err != nil {
  36. return err
  37. }
  38. if affw > 0 {
  39. return errors.New("数据已经存在!")
  40. }
  41. _, err = e.Table("stdeftab").Insert(t)
  42. if err != nil {
  43. return err
  44. }
  45. return nil
  46. }
  47. //删
  48. func (t *Stdeftab) Del() bool {
  49. e := db.Eloquent.Master()
  50. _, err := e.ID(core.PK{t.Finr, t.Stdeftyp, t.Statid, t.Lang}).Delete(&Stdeftab{})
  51. if err != nil {
  52. return false
  53. }
  54. return true
  55. }
  56. //改
  57. func (t *Stdeftab) Update() bool {
  58. e := db.Eloquent.Master()
  59. _, err := e.ID(core.PK{t.Finr, t.Stdeftyp, t.Statid, t.Lang}).Update(t)
  60. if err != nil {
  61. return false
  62. }
  63. return true
  64. }
  65. //查
  66. func (t *Stdeftab) SelectOne() (Stdeftab, error) {
  67. e := db.Eloquent.Master()
  68. var data Stdeftab
  69. _, err := e.ID(core.PK{t.Finr, t.Stdeftyp, t.Statid, t.Lang}).Get(&data)
  70. if err != nil {
  71. return data, err
  72. }
  73. return data, nil
  74. }
  75. //分页
  76. func (t *Stdeftab) GetPage(pageSize int, pageIndex int) ([]Stdeftab, int, error) {
  77. data := make([]Stdeftab, 0)
  78. e := db.Eloquent.Master()
  79. table := e.Table("stdeftab").Where("finr = ? ", t.Finr)
  80. where := "where finr = " + "'" + utils.ValueToString(t.Finr, "") + "'"
  81. Offset := (pageIndex - 1) * pageSize
  82. err := e.SQL("SELECT TOP " + utils.ValueToString(pageSize, "") + " stdeftab.* FROM stdeftab " + where + " AND (convert(varchar(10),finr)+convert(varchar(40),stdeftyp)+convert(varchar(40),statid)+convert(varchar(40),lang) NOT IN (SELECT TOP " + utils.ValueToString(Offset, "") + " convert(varchar(10),finr)+convert(varchar(40),stdeftyp)+convert(varchar(40),statid)+convert(varchar(40),lang) FROM stdeftab " + where + " ORDER BY credatuz DESC)) ORDER BY credatuz DESC").Find(&data)
  83. pcount := new(Stdeftab)
  84. count, err := table.Count(pcount)
  85. if err != nil {
  86. return data, 0, err
  87. }
  88. for k, _ := range data {
  89. data[k].Clipped()
  90. }
  91. return data, int(count), nil
  92. }
  93. //查询当前Stdeftabs集合
  94. //TODO 添加一张表 做类型判断
  95. func (t *Stdeftab) SelectArr() ([]interface{}, error) {
  96. e := db.Eloquent.Master()
  97. var data []Stdeftab
  98. err := e.Where("finr = ? and statid =?", t.Finr, t.Statid).Find(&data)
  99. if err != nil {
  100. return nil, err
  101. }
  102. result := make([]interface{}, 0)
  103. //TODO 该处为临时处理
  104. for k, _ := range data {
  105. data[k].Clipped()
  106. if t.Statid == "log-vendor-status" {
  107. var stdeftabTemp StdeftabTemp
  108. stdeftabTemp.Stdeftab = &data[k]
  109. v, _ := strconv.Atoi(data[k].Stdeftyp)
  110. stdeftabTemp.Stdeftyp = v
  111. result = append(result, stdeftabTemp)
  112. } else {
  113. result = append(result, data[k])
  114. }
  115. }
  116. return result, nil
  117. }
  118. //查询当前Stdeftabs集合
  119. func (t *Stdeftab) SelectAll(arr []string) (map[string][]Stdeftab, error) {
  120. e := db.Eloquent.Master()
  121. dataMap := map[string][]Stdeftab{}
  122. var data []Stdeftab
  123. err := e.In("statid", arr).Where("finr = ?", t.Finr).Find(&data)
  124. if err != nil {
  125. return dataMap, err
  126. }
  127. for _, v := range data {
  128. v.Clipped()
  129. key := v.Statid
  130. dataMap[key] = append(dataMap[key], v)
  131. }
  132. return dataMap, nil
  133. }