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.

219 lines
5.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. //发运包装单表
  9. type Jit_shiporder struct {
  10. Finr int `xorm:"pk" json:"jit_shiporder.finr"`
  11. Shiporderid string `xorm:"pk" json:"jit_shiporder.shiporderid"`
  12. Shiptemplateid string `json:"jit_shiporder.shiptemplateid"`
  13. Projnr string `json:"jit_shiporder.projnr"`
  14. Status int `json:"jit_shiporder.status"`
  15. Shiptype string `json:"jit_shiporder.shiptype"`
  16. Orderinfo string `json:"jit_shiporder.orderinfo"`
  17. Printerid string `json:"jit_shiporder.printerid"`
  18. Templatefile string `json:"jit_shiporder.templatefile"`
  19. Planqty int `json:"jit_shiporder.planqty"`
  20. Actqty int `json:"jit_shiporder.actqty"`
  21. Opentime string `json:"jit_shiporder.opentime"`
  22. Closetime string `json:"jit_shiporder.closetime"`
  23. Operator string `json:"jit_shiporder.operator"`
  24. Lastmodif string `json:"jit_shiporder.lastmodif"`
  25. Lastuser string `json:"jit_shiporder.lastuser"`
  26. Credatuz string `json:"jit_shiporder.credatuz"`
  27. Itemlst []Jit_shiporder_itemlst `json:"itemlst" xorm:"-"`
  28. }
  29. func (t *Jit_shiporder) Clipped() {
  30. common.TrimStruct(t, *t)
  31. }
  32. func (t *Jit_shiporder) TableName() string {
  33. return "jit_shiporder"
  34. }
  35. //增
  36. func (t *Jit_shiporder) Add() (err error) {
  37. var (
  38. i int
  39. affw int64
  40. spotab Jit_shiporder
  41. )
  42. e := G_DbEngine
  43. spotab = Jit_shiporder{}
  44. affw, err = e.Table("jit_shiporder").ID(core.PK{G_FINR, t.Shiporderid}).Count(spotab)
  45. if err != nil {
  46. return err
  47. }
  48. if affw > 0 {
  49. return errors.New("数据已经存在!")
  50. }
  51. _, err = e.Table("jit_shiporder").Insert(t)
  52. if err != nil {
  53. return err
  54. }
  55. // 遍历子项并插入
  56. for i = 0; i < len(t.Itemlst); i++ {
  57. if err = t.Itemlst[i].Add(); err != nil {
  58. return
  59. }
  60. }
  61. return nil
  62. }
  63. //增
  64. func (t *Jit_shiporder) Insert(session *xorm.Session) (err error) {
  65. var (
  66. i int
  67. affw int64
  68. spotab Jit_shiporder
  69. )
  70. spotab = Jit_shiporder{}
  71. affw, err = session.Table("jit_shiporder").ID(core.PK{G_FINR, t.Shiporderid}).Count(spotab)
  72. if err != nil {
  73. return err
  74. }
  75. if affw > 0 {
  76. return errors.New("数据已经存在!")
  77. }
  78. _, err = session.Table("jit_shiporder").Insert(t)
  79. if err != nil {
  80. return err
  81. }
  82. // 遍历子项并插入
  83. for i = 0; i < len(t.Itemlst); i++ {
  84. if err = t.Itemlst[i].Insert(session); err != nil {
  85. return
  86. }
  87. }
  88. return nil
  89. }
  90. //删
  91. func (t *Jit_shiporder) Del() bool {
  92. e := G_DbEngine
  93. _, err := e.ID(core.PK{G_FINR, t.Shiporderid}).Delete(&Jit_shiporder{})
  94. if err != nil {
  95. return false
  96. }
  97. return true
  98. }
  99. //改
  100. func (t *Jit_shiporder) Update() bool {
  101. e := G_DbEngine
  102. _, err := e.ID(core.PK{G_FINR, t.Shiporderid}).Update(t)
  103. if err != nil {
  104. return false
  105. }
  106. return true
  107. }
  108. //更新指定字段
  109. func (t *Jit_shiporder) UpdateFields(session *xorm.Session, fields string) (err error) {
  110. if _, err = session.Table("jit_shiporder").ID(core.PK{G_FINR, t.Shiporderid}).Cols(fields).Update(t); err != nil {
  111. return
  112. }
  113. return
  114. }
  115. //查
  116. func (t *Jit_shiporder) SelectOne() (data Jit_shiporder, err error) {
  117. var i, j int
  118. e := G_DbEngine
  119. _, err = e.ID(core.PK{G_FINR, t.Shiporderid}).Get(&data)
  120. if err != nil {
  121. return data, err
  122. }
  123. data.Clipped()
  124. // 获取值列表
  125. if err = e.Where("finr = ? and shiporderid = ? ",
  126. G_FINR, data.Shiporderid).OrderBy("pos").Find(&data.Itemlst); err != nil {
  127. return
  128. }
  129. for i, _ = range data.Itemlst {
  130. data.Itemlst[i].Clipped()
  131. if err = e.Where("finr = ? and shiporderid = ? and packtypeid = ?",
  132. G_FINR, data.Shiporderid, data.Itemlst[i].Packtypeid).OrderBy("packorderid").Find(&data.Itemlst[i].Itemlst); err != nil {
  133. return
  134. }
  135. for j, _ = range data.Itemlst[i].Itemlst {
  136. data.Itemlst[i].Itemlst[j].Clipped()
  137. }
  138. }
  139. return data, nil
  140. }
  141. //查
  142. func (t *Jit_shiporder) SelectOneBySession(session *xorm.Session) (data Jit_shiporder, err error) {
  143. var i, j int
  144. _, err = session.ID(core.PK{G_FINR, t.Shiporderid}).Get(&data)
  145. if err != nil {
  146. return data, err
  147. }
  148. // 获取值列表
  149. if err = session.Where("finr = ? and shiporderid = ? ",
  150. G_FINR, data.Shiporderid).OrderBy("pos").Find(&data.Itemlst); err != nil {
  151. return
  152. }
  153. for i, _ = range data.Itemlst {
  154. data.Itemlst[i].Clipped()
  155. if err = session.Where("finr = ? and shiporderid = ? and packtypeid = ?",
  156. G_FINR, data.Shiporderid, data.Itemlst[i].Packtypeid).OrderBy("packorderid").Find(&data.Itemlst[i].Itemlst); err != nil {
  157. return
  158. }
  159. for j, _ = range data.Itemlst[i].Itemlst {
  160. data.Itemlst[i].Itemlst[j].Clipped()
  161. }
  162. }
  163. return data, nil
  164. }
  165. // 指定项目状态为20的开口发运车
  166. func (t *Jit_shiporder) GetOpenShipOrders(projnr string) (datalst []Jit_shiporder, err error) {
  167. var i, j, k int
  168. e := G_DbEngine
  169. if err = e.Where("finr = ? and projnr = ? and status >= ? and status <= ? and shiptype != ?",
  170. G_FINR, projnr, common.SPO_STATUS_UNPLANNED, common.SPO_STATUS_PLANNED, "REO").OrderBy("shiporderid").Find(&datalst); err != nil {
  171. return
  172. }
  173. // 获取发运车子项列表
  174. for i = 0; i < len(datalst); i++ {
  175. datalst[i].Clipped()
  176. if err = e.Where("finr = ? and shiporderid = ? ",
  177. G_FINR, datalst[i].Shiporderid).OrderBy("pos").Find(&datalst[i].Itemlst); err != nil {
  178. return
  179. }
  180. // 获取发运车子项的包装单数据
  181. for j, _ = range datalst[i].Itemlst {
  182. datalst[i].Itemlst[j].Clipped()
  183. if err = e.Where("finr = ? and shiporderid = ? and packtypeid = ?",
  184. G_FINR, datalst[i].Shiporderid, datalst[i].Itemlst[j].Packtypeid).OrderBy("packorderid").Find(&datalst[i].Itemlst[j].Itemlst); err != nil {
  185. return
  186. }
  187. for k, _ = range datalst[i].Itemlst[j].Itemlst {
  188. datalst[i].Itemlst[j].Itemlst[k].Clipped()
  189. }
  190. }
  191. }
  192. return
  193. }