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.

173 lines
3.8 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 Printheadtab struct {
  10. Finr int `xorm:"pk"`
  11. Printheadid string `xorm:"pk"`
  12. Printerid string
  13. Printfiletype string
  14. Printobjid string
  15. Printobjtype string
  16. Status string
  17. Templatefile string
  18. Printcopies int
  19. Printedtime string
  20. Printedcopies int
  21. Orientation int
  22. Lastmodif string
  23. Lastuser string
  24. Credatuz string
  25. Itemlst []Printdetailtab `xorm:"-"`
  26. }
  27. func (t *Printheadtab) Clipped() {
  28. common.TrimStruct(t, *t)
  29. }
  30. func (t *Printheadtab) TableName() string {
  31. return "printheadtab"
  32. }
  33. //增
  34. func (t *Printheadtab) Add() error {
  35. e := G_DbEngine
  36. printheadtab := new(Printheadtab)
  37. affw, err := e.Table("printheadtab").ID(core.PK{G_FINR, t.Printheadid}).Count(printheadtab)
  38. if err != nil {
  39. return err
  40. }
  41. if affw > 0 {
  42. return errors.New("数据已经存在!")
  43. }
  44. _, err = e.Table("printheadtab").Insert(t)
  45. if err != nil {
  46. return err
  47. }
  48. return nil
  49. }
  50. //增
  51. func (t *Printheadtab) Insert(session *xorm.Session) error {
  52. printheadtab := new(Printheadtab)
  53. affw, err := session.Table("printheadtab").ID(core.PK{G_FINR, t.Printheadid}).Count(printheadtab)
  54. if err != nil {
  55. return err
  56. }
  57. if affw > 0 {
  58. return errors.New("数据已经存在!")
  59. }
  60. _, err = session.Table("printheadtab").Insert(t)
  61. if err != nil {
  62. return err
  63. }
  64. return nil
  65. }
  66. //删
  67. func (t *Printheadtab) Del() bool {
  68. e := G_DbEngine
  69. _, err := e.ID(core.PK{G_FINR, t.Printheadid}).Delete(&Printheadtab{})
  70. if err != nil {
  71. return false
  72. }
  73. return true
  74. }
  75. //改
  76. func (t *Printheadtab) Update() bool {
  77. e := G_DbEngine
  78. _, err := e.ID(core.PK{G_FINR, t.Printheadid}).Update(t)
  79. if err != nil {
  80. return false
  81. }
  82. return true
  83. }
  84. //更新指定字段
  85. func (t *Printheadtab) UpdateFields(session *xorm.Session, fields string) (err error) {
  86. if _, err = session.Table("printheadtab").ID(core.PK{G_FINR, t.Printheadid}).Cols(fields).Update(t); err != nil {
  87. return
  88. }
  89. return
  90. }
  91. //查
  92. func (t *Printheadtab) SelectOne() (data Printheadtab, err error) {
  93. var (
  94. i int
  95. itemlst []Printdetailtab
  96. )
  97. e := G_DbEngine
  98. _, err = e.ID(core.PK{G_FINR, t.Printheadid}).Get(&data)
  99. if err != nil {
  100. return
  101. }
  102. // 获取明细列表
  103. data.Clipped()
  104. if err = e.Where("finr = ? and printheadid = ?",
  105. G_FINR, t.Printheadid).OrderBy("pos").Find(&itemlst); err != nil {
  106. return
  107. }
  108. for i, _ = range itemlst {
  109. itemlst[i].Clipped()
  110. }
  111. data.Itemlst = itemlst
  112. return data, nil
  113. }
  114. // 获取指定类型的开口打印头
  115. func (t *Printheadtab) GetOpenSheetOnes() (datalst []Printheadtab, err error) {
  116. var (
  117. i, j int
  118. itemlst []Printdetailtab
  119. statusarray []string
  120. )
  121. e := G_DbEngine
  122. statusarray = make([]string, 2)
  123. statusarray[0] = "N" // 新建
  124. statusarray[1] = "R" // 重打
  125. // 获取指定类型的开口打印头
  126. if err = e.Where("finr = ? and printfiletype = ?",
  127. G_FINR, "EXCEL").In("status", statusarray).Asc("credatuz").Find(&datalst); err != nil {
  128. return
  129. }
  130. for i = 0; i < len(datalst); i++ {
  131. datalst[i].Clipped()
  132. // 获取明细列表
  133. itemlst = []Printdetailtab{}
  134. if err = e.Where("finr = ? and printheadid = ?",
  135. G_FINR, t.Printheadid).OrderBy("pos").Find(&itemlst); err != nil {
  136. return
  137. }
  138. for j = 0; j < len(itemlst); j++ {
  139. itemlst[j].Clipped()
  140. }
  141. datalst[i].Itemlst = itemlst
  142. }
  143. return datalst, nil
  144. }
  145. //删除七天前的打印记录及其明细
  146. func (t *Printheadtab) DelBefore7DayRecords(daytime string) bool {
  147. e := G_DbEngine
  148. _, err := e.Table("printheadtab").Where("fint = ? and credatuz < ?", G_FINR, daytime).Delete(&Printheadtab{})
  149. if err != nil {
  150. return false
  151. }
  152. _, err = e.Table("printdetailtab").Where("fint = ? and credatuz < ?", G_FINR, daytime).Delete(&Printdetailtab{})
  153. if err != nil {
  154. return false
  155. }
  156. return true
  157. }