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.

118 lines
2.7 KiB

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