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.

150 lines
2.9 KiB

  1. package db
  2. import (
  3. "errors"
  4. "github.com/go-xorm/xorm"
  5. "leit.com/leit_seat_aps/common"
  6. "xorm.io/core"
  7. )
  8. // BOM 头
  9. type Me_bomhead struct {
  10. Finr int `xorm:"pk"`
  11. Bomid string `xorm:"pk"`
  12. Matnr string
  13. Descr string
  14. Bomhead_cval1 string
  15. Bomhead_cval2 string
  16. Bomhead_ival1 int
  17. Bomhead_ival2 int
  18. Bomhead_dval1 float32
  19. Bomhead_dval2 float32
  20. Lastmodif string
  21. Lastuser string
  22. Credatuz string
  23. Itemlst []Me_bomlst `xorm:"-"`
  24. }
  25. func (t *Me_bomhead) Clipped() {
  26. common.TrimStruct(t, *t)
  27. }
  28. func (t *Me_bomhead) TableName() string {
  29. return "me_bomhead"
  30. }
  31. //增
  32. func (t *Me_bomhead) Add() error {
  33. e := G_DbEngine
  34. bomtab := new(Me_bomhead)
  35. affw, err := e.Table("me_bomhead").ID(core.PK{G_FINR, t.Bomid}).Count(bomtab)
  36. if err != nil {
  37. return err
  38. }
  39. if affw > 0 {
  40. return errors.New("数据已经存在!")
  41. }
  42. _, err = e.Table("me_bomhead").Insert(t)
  43. if err != nil {
  44. return err
  45. }
  46. return nil
  47. }
  48. //增
  49. func (t *Me_bomhead) Insert(session *xorm.Session) error {
  50. bomtab := new(Me_bomhead)
  51. affw, err := session.Table("me_bomhead").ID(core.PK{G_FINR, t.Bomid}).Count(bomtab)
  52. if err != nil {
  53. return err
  54. }
  55. if affw > 0 {
  56. return errors.New("数据已经存在!")
  57. }
  58. _, err = session.Table("me_bomhead").Insert(t)
  59. if err != nil {
  60. return err
  61. }
  62. return nil
  63. }
  64. //删
  65. func (t *Me_bomhead) Del() bool {
  66. e := G_DbEngine
  67. _, err := e.ID(core.PK{G_FINR, t.Bomid}).Delete(&Me_bomhead{})
  68. if err != nil {
  69. return false
  70. }
  71. return true
  72. }
  73. //改
  74. func (t *Me_bomhead) Update() bool {
  75. e := G_DbEngine
  76. _, err := e.ID(core.PK{G_FINR, t.Bomid}).Update(t)
  77. if err != nil {
  78. return false
  79. }
  80. return true
  81. }
  82. //更新指定字段
  83. func (t *Me_bomhead) UpdateFields(session *xorm.Session, fields string) (err error) {
  84. if _, err = session.ID(core.PK{G_FINR, t.Bomid}).Cols(fields).Update(t); err != nil {
  85. return
  86. }
  87. return
  88. }
  89. //查
  90. func (t *Me_bomhead) SelectOne() (data Me_bomhead, err error) {
  91. var itemlst []Me_bomlst
  92. e := G_DbEngine
  93. _, err = e.ID(core.PK{G_FINR, t.Bomid}).Get(&data)
  94. if err != nil {
  95. return data, err
  96. }
  97. // 获取值列表
  98. if err = e.Where("finr = ? and bomid = ?",
  99. G_FINR, data.Bomid).OrderBy("position, fmatnr, cmatnr").Find(&itemlst); err != nil {
  100. return
  101. }
  102. for i, _ := range itemlst {
  103. itemlst[i].Clipped()
  104. }
  105. data.Itemlst = itemlst
  106. return data, nil
  107. }
  108. // 获取指定项目的BOM列表
  109. func (t *Me_bomhead) GetAll() (datalst []Me_bomhead, err error) {
  110. var (
  111. i, j int
  112. itemlst []Me_bomlst
  113. )
  114. e := G_DbEngine
  115. if err = e.Where("finr = ?", G_FINR).OrderBy("bomid").Find(&datalst); err != nil {
  116. return
  117. }
  118. for i, _ = range datalst {
  119. datalst[i].Clipped()
  120. // 获取值列表
  121. if err = e.Where("finr = ? and bomid = ?",
  122. G_FINR, datalst[i].Bomid).OrderBy("position, fmatnr, cmatnr").Find(&itemlst); err != nil {
  123. return
  124. }
  125. for j, _ = range itemlst {
  126. itemlst[j].Clipped()
  127. }
  128. datalst[i].Itemlst = itemlst
  129. }
  130. return
  131. }