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.

122 lines
3.0 KiB

  1. package db
  2. import (
  3. "errors"
  4. "leit.com/leit_seat_aps/common"
  5. "xorm.io/core"
  6. )
  7. //零件表
  8. type Me_part struct {
  9. Finr int `xorm:"pk"`
  10. Partid string `xorm:"pk"`
  11. Projnr string `xorm:"pk"`
  12. Custpartid string
  13. Intpartid string
  14. Oripartid string
  15. Ai string
  16. Status string
  17. Descr1 string
  18. Descr2 string
  19. Uom string
  20. Lastmodif string
  21. Lastuser string
  22. Credatuz string
  23. Attrlst []Me_part_atcodlst `xorm:"-"`
  24. }
  25. func (t *Me_part) Clipped() {
  26. common.TrimStruct(t, *t)
  27. }
  28. func (t *Me_part) TableName() string {
  29. return "me_part"
  30. }
  31. //增
  32. func (t *Me_part) Add() error {
  33. e := G_DbEngine
  34. partab := new(Me_part)
  35. affw, err := e.Table("me_part").ID(core.PK{G_FINR, t.Partid, t.Projnr}).Count(partab)
  36. if err != nil {
  37. return err
  38. }
  39. if affw > 0 {
  40. return errors.New("数据已经存在!")
  41. }
  42. _, err = e.Table("me_part").Insert(t)
  43. if err != nil {
  44. return err
  45. }
  46. return nil
  47. }
  48. //删
  49. func (t *Me_part) Del() bool {
  50. e := G_DbEngine
  51. _, err := e.ID(core.PK{G_FINR, t.Partid, t.Projnr}).Delete(&Me_part{})
  52. if err != nil {
  53. return false
  54. }
  55. return true
  56. }
  57. //改
  58. func (t *Me_part) Update() bool {
  59. e := G_DbEngine
  60. _, err := e.ID(core.PK{G_FINR, t.Partid, t.Projnr}).Update(t)
  61. if err != nil {
  62. return false
  63. }
  64. return true
  65. }
  66. //查
  67. func (t *Me_part) SelectOne() (data Me_part, err error) {
  68. var attrlst []Me_part_atcodlst
  69. e := G_DbEngine
  70. _, err = e.ID(core.PK{G_FINR, t.Partid, t.Projnr}).Get(&data)
  71. if err != nil {
  72. return data, err
  73. }
  74. data.Clipped()
  75. // 获取值列表
  76. if err = e.Table("me_part_atcodlst").Join("left", "me_part_atcodver", "me_part_atcodlst.finr = me_part_atcodver.finr and me_part_atcodlst.version = me_part_atcodver.version").Where("me_part_atcodlst.finr = ? and me_part_atcodlst.partid = ? and me_part_atcodlst.projnr = ? and me_part_atcodver.released = ?",
  77. G_FINR, data.Partid, data.Projnr, 1).OrderBy("me_part_atcodlst.attrcode").Find(&attrlst); err != nil {
  78. return
  79. }
  80. for i, _ := range attrlst {
  81. attrlst[i].Clipped()
  82. }
  83. data.Attrlst = attrlst
  84. return data, nil
  85. }
  86. // 获取指定项目的零件族列表
  87. func (t *Me_part) GetProjectAll(projnr string) (datalst []Me_part, err error) {
  88. var i, j int
  89. e := G_DbEngine
  90. if err = e.Where("finr = ? and projnr = ?", G_FINR, projnr).OrderBy("partid").Find(&datalst); err != nil {
  91. return
  92. }
  93. // 遍历属性获取属性值列表
  94. for i, _ = range datalst {
  95. datalst[i].Clipped()
  96. datalst[i].Attrlst = []Me_part_atcodlst{}
  97. // 获取值列表
  98. if err = e.Table("me_part_atcodlst").Join("left", "me_part_atcodver", "me_part_atcodlst.finr = me_part_atcodver.finr and me_part_atcodlst.version = me_part_atcodver.version").Where("me_part_atcodlst.finr = ? and me_part_atcodlst.partid = ? and me_part_atcodlst.projnr = ? and me_part_atcodver.released = ?",
  99. G_FINR, datalst[i].Partid, datalst[i].Projnr, 1).OrderBy("me_part_atcodlst.attrcode").Find(&datalst[i].Attrlst); err != nil {
  100. return
  101. }
  102. for j, _ = range datalst[i].Attrlst {
  103. datalst[i].Attrlst[j].Clipped()
  104. }
  105. }
  106. return
  107. }