SJA APS后端代码
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.

127 lines
3.0 KiB

  1. package db
  2. import (
  3. "errors"
  4. "leit.com/leit_seat_aps/common"
  5. "strings"
  6. "xorm.io/core"
  7. )
  8. //属性表
  9. type Me_attribute struct {
  10. Finr int `xorm:"pk" json:"me_attribute.finr"`
  11. Attrcode int `xorm:"pk" json:"me_attribute.attrcode"`
  12. Attrname string `json:"me_attribute.attrname"`
  13. Descr string `json:"me_attribute.descr"`
  14. Shortcode string `json:"me_attribute.shortcode"`
  15. Attrtype int `json:"me_attribute.attrtype"`
  16. Valformat string `json:"me_attribute.valformat"`
  17. Lastmodif string `json:"me_attribute.lastmodif"`
  18. Lastuser string `json:"me_attribute.lastuser"`
  19. Credatuz string `json:"me_attribute.credatuz"`
  20. Valst []Me_attribute_valst `json:"valst" xorm:"-"`
  21. }
  22. func (t *Me_attribute) Clipped() {
  23. common.TrimStruct(t, *t)
  24. }
  25. func (t *Me_attribute) TableName() string {
  26. return "me_attribute"
  27. }
  28. //增
  29. func (t *Me_attribute) Add() error {
  30. e := G_DbEngine
  31. attrtab := new(Me_attribute)
  32. affw, err := e.Table("me_attribute").ID(core.PK{G_FINR, t.Attrcode}).Count(attrtab)
  33. if err != nil {
  34. return err
  35. }
  36. if affw > 0 {
  37. return errors.New("数据已经存在!")
  38. }
  39. _, err = e.Table("me_attribute").Insert(t)
  40. if err != nil {
  41. return err
  42. }
  43. return nil
  44. }
  45. //删
  46. func (t *Me_attribute) Del() bool {
  47. e := G_DbEngine
  48. _, err := e.ID(core.PK{G_FINR, t.Attrcode}).Delete(&Me_attribute{})
  49. if err != nil {
  50. return false
  51. }
  52. return true
  53. }
  54. //改
  55. func (t *Me_attribute) Update() bool {
  56. e := G_DbEngine
  57. _, err := e.ID(core.PK{G_FINR, t.Attrcode}).Update(t)
  58. if err != nil {
  59. return false
  60. }
  61. return true
  62. }
  63. //查
  64. func (t *Me_attribute) SelectOne() (data Me_attribute, err error) {
  65. var valst []Me_attribute_valst
  66. e := G_DbEngine
  67. _, err = e.ID(core.PK{G_FINR, t.Attrcode}).Get(&data)
  68. if err != nil {
  69. return data, err
  70. }
  71. data.Clipped()
  72. // 获取值列表
  73. if err = e.Where("finr = ? and attrcode = ?", G_FINR, t.Attrcode).OrderBy("pos").Find(&valst); err != nil {
  74. return
  75. }
  76. for i, _ := range valst {
  77. valst[i].Clipped()
  78. }
  79. data.Valst = valst
  80. return data, nil
  81. }
  82. // 获取指定类型的属性列表
  83. func (t *Me_attribute) GetTypeAttributes(attrtype int) (datalst []Me_attribute, err error) {
  84. var i, j int
  85. e := G_DbEngine
  86. if err = e.Where("finr = ? and attrtype = ?", G_FINR, attrtype).OrderBy("attrcode").Find(&datalst); err != nil {
  87. return
  88. }
  89. // 遍历属性获取属性值列表
  90. for i, _ = range datalst {
  91. datalst[i].Clipped()
  92. datalst[i].Valst = make([]Me_attribute_valst, 0)
  93. // 获取值列表
  94. if err = e.Where("finr = ? and attrcode = ?", G_FINR, datalst[i].Attrcode).OrderBy("pos").Find(&datalst[i].Valst); err != nil {
  95. return
  96. }
  97. for j, _ = range datalst[i].Valst {
  98. datalst[i].Valst[j].Clipped()
  99. }
  100. }
  101. return
  102. }
  103. // 获取指定属性值的位置
  104. func (t *Me_attribute) GetValuePos(cval string) int {
  105. var i int
  106. for i = 0; i < len(t.Valst); i++ {
  107. if strings.TrimSpace(cval) == strings.TrimSpace(t.Valst[i].Shortcode) {
  108. return i
  109. }
  110. }
  111. return -1
  112. }