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.

176 lines
3.6 KiB

  1. package db
  2. import (
  3. "errors"
  4. "github.com/go-xorm/xorm"
  5. "leit.com/leit_seat_aps/common"
  6. "strings"
  7. "xorm.io/core"
  8. )
  9. // 计划原材料
  10. type Pln_material struct {
  11. Finr int `xorm:"pk"`
  12. Materialid string `xorm:"pk"`
  13. Projnr string `xorm:"pk"`
  14. Cust_materialid string
  15. Active int
  16. Descr1 string
  17. Descr2 string
  18. Uom string
  19. Materialtype string
  20. Aggregatedemand int
  21. Aggtomonth int
  22. Aggtoweek int
  23. Aggtoday int
  24. Aggtohour int
  25. Genworkorder int
  26. Orderaggtype string
  27. Runmrp int
  28. Leadtime int
  29. Timeuom string
  30. Worklineid string
  31. Jph float32
  32. Lastmodif string
  33. Lastuser string
  34. Credatuz string
  35. }
  36. func (t *Pln_material) Clipped() {
  37. common.TrimStruct(t, *t)
  38. }
  39. func (t *Pln_material) TableName() string {
  40. return "pln_material"
  41. }
  42. //增
  43. func (t *Pln_material) Add() error {
  44. e := G_DbEngine
  45. mattab := new(Pln_material)
  46. affw, err := e.Table("pln_material").ID(core.PK{G_FINR, t.Materialid, t.Projnr}).Count(mattab)
  47. if err != nil {
  48. return err
  49. }
  50. if affw > 0 {
  51. return errors.New("数据已经存在!")
  52. }
  53. _, err = e.Table("pln_material").Insert(t)
  54. if err != nil {
  55. return err
  56. }
  57. return nil
  58. }
  59. //增
  60. func (t *Pln_material) Insert(session *xorm.Session) error {
  61. mattab := new(Pln_material)
  62. affw, err := session.Table("pln_material").ID(core.PK{G_FINR, t.Materialid, t.Projnr}).Count(mattab)
  63. if err != nil {
  64. return err
  65. }
  66. if affw > 0 {
  67. return errors.New("数据已经存在!")
  68. }
  69. _, err = session.Table("pln_material").Insert(t)
  70. if err != nil {
  71. return err
  72. }
  73. return nil
  74. }
  75. //删
  76. func (t *Pln_material) Del() bool {
  77. e := G_DbEngine
  78. _, err := e.ID(core.PK{G_FINR, t.Materialid, t.Projnr}).Delete(&Pln_material{})
  79. if err != nil {
  80. return false
  81. }
  82. return true
  83. }
  84. //改
  85. func (t *Pln_material) Update() bool {
  86. e := G_DbEngine
  87. _, err := e.ID(core.PK{G_FINR, t.Materialid, t.Projnr}).Update(t)
  88. if err != nil {
  89. return false
  90. }
  91. return true
  92. }
  93. //更新指定字段
  94. func (t *Pln_material) UpdateFields(session *xorm.Session, fields string) (err error) {
  95. if _, err = session.ID(core.PK{G_FINR, t.Materialid, t.Projnr}).Cols(fields).Update(t); err != nil {
  96. return
  97. }
  98. return
  99. }
  100. //查
  101. func (t *Pln_material) SelectOne() (data Pln_material, err error) {
  102. e := G_DbEngine
  103. _, err = e.ID(core.PK{G_FINR, t.Materialid, t.Projnr}).Get(&data)
  104. if err != nil {
  105. return data, err
  106. }
  107. return data, nil
  108. }
  109. // 获取指定项目的物料列表
  110. func (t *Pln_material) GetAll() (datalst []Pln_material, err error) {
  111. var i int
  112. e := G_DbEngine
  113. if err = e.Where("finr = ? and active = ?", G_FINR, 1).OrderBy("materialid").Find(&datalst); err != nil {
  114. return
  115. }
  116. for i, _ = range datalst {
  117. datalst[i].Clipped()
  118. }
  119. return
  120. }
  121. // 获取指定项目的物料列表
  122. func (t *Pln_material) GetProjectAll(projnr string) (datalst []Pln_material, err error) {
  123. var i int
  124. e := G_DbEngine
  125. if err = e.Where("finr = ? and projnr = ? and active = ?", G_FINR, projnr, 1).OrderBy("materialid").Find(&datalst); err != nil {
  126. return
  127. }
  128. for i, _ = range datalst {
  129. datalst[i].Clipped()
  130. }
  131. return
  132. }
  133. // 获取物料以秒计算的生产提前期
  134. func (t *Pln_material) GetLeadTimeInSecond() (lt int) {
  135. switch strings.ToUpper(strings.TrimSpace(t.Timeuom)) {
  136. case "S":
  137. lt = t.Leadtime
  138. case "SEC":
  139. lt = t.Leadtime
  140. case "SECOND":
  141. lt = t.Leadtime
  142. case "M":
  143. lt = t.Leadtime * 60
  144. case "MIN":
  145. lt = t.Leadtime * 60
  146. case "MINUTE":
  147. lt = t.Leadtime * 60
  148. case "H":
  149. lt = t.Leadtime * 60 * 60
  150. case "HOUR":
  151. lt = t.Leadtime * 60 * 60
  152. case "D":
  153. lt = t.Leadtime * 60 * 60 * 24
  154. case "DAY":
  155. lt = t.Leadtime * 60 * 60 * 24
  156. default:
  157. lt = t.Leadtime
  158. }
  159. return
  160. }