GAAS GFrame项目web后台
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.

207 lines
6.1 KiB

  1. package models
  2. import (
  3. "LAPP_GAAS_GFrame_BACKEND/db"
  4. "LAPP_GAAS_GFrame_BACKEND/utils"
  5. "xorm.io/core"
  6. )
  7. type PmTemplate struct {
  8. Finr int `json:"pm_template-finr" xorm:"not null pk INT(4)"`
  9. Maintemplatenr int `json:"pm_template-maintemplatenr" xorm:"not null pk INT(4)"`
  10. Descr string `json:"pm_template-descr" xorm:"not null VARCHAR(40)"`
  11. Trackbydate int `json:"pm_template-trackbydate" xorm:"not null SMALLINT(2)"`
  12. Trackbyprimeter int `json:"pm_template-trackbyprimeter" xorm:"not null SMALLINT(2)"`
  13. Primeteruom string `json:"pm_template-primeteruom" xorm:"not null VARCHAR(20)"`
  14. Trackbysecmeter int `json:"pm_template-trackbysecmeter" xorm:"not null SMALLINT(2)"`
  15. Secmeteruom string `json:"pm_template-secmeteruom" xorm:"not null VARCHAR(20)"`
  16. Lastmodif string `json:"pm_template-lastmodif" xorm:"not null VARCHAR(14)"`
  17. Lastuser string `json:"pm_template-lastuser" xorm:"not null VARCHAR(20)"`
  18. Credatuz string `json:"pm_template-credatuz" xorm:"not null VARCHAR(14)"`
  19. Valst []PmService `json:"valst" xorm:"-"`
  20. UnValst []PmService `json:"unvalst" xorm:"-"`
  21. }
  22. func (t *PmTemplate) TableName() string {
  23. return "pm_template"
  24. }
  25. // 清除string字段的右侧空格
  26. func (t *PmTemplate) Clipped() {
  27. utils.TrimStruct(t, *t)
  28. }
  29. //增
  30. func (t *PmTemplate) Add() error {
  31. e := db.Eloquent.Master()
  32. snr := new(Snrtab)
  33. snr.Finr = t.Finr
  34. //生成ID
  35. Maintemplatenr, err := snr.GetNextSnr("Templateid")
  36. t.Maintemplatenr = utils.ValueToInt(Maintemplatenr,0)
  37. _, err = e.Table("pm_template").Insert(t)
  38. if err != nil {
  39. return err
  40. }
  41. //批量插入
  42. alldata := make([]PmTemplateServicelst, 0)
  43. for k, v := range t.Valst {
  44. one := PmTemplateServicelst{}
  45. one.Finr = t.Finr
  46. one.Pos = k + 1
  47. one.Descr = v.Descr
  48. one.Maintemplatenr = t.Maintemplatenr
  49. one.Mainservicenr = utils.ValueToInt(v.Mainserviceid, 0)
  50. one.Credatuz = t.Credatuz
  51. one.Lastuser = t.Lastuser
  52. one.Lastmodif = t.Lastmodif
  53. alldata = append(alldata, one)
  54. }
  55. _, err = e.Table("pm_template_servicelst").Insert(&alldata)
  56. if err != nil {
  57. return err
  58. }
  59. return nil
  60. }
  61. //删
  62. func (t *PmTemplate) Del() error {
  63. e := db.Eloquent.Master()
  64. _, err := e.Where("finr = ? and maintemplatenr = ?", t.Finr, t.Maintemplatenr).Delete(&PmTemplate{})
  65. if err != nil {
  66. return err
  67. }
  68. countrole := new(PmTemplateServicelst)
  69. affw, _ := e.Table("pm_template_servicelst").Where("finr = ? and maintemplatenr = ?", t.Finr, t.Maintemplatenr).Count(countrole)
  70. if affw > 0 {
  71. _, err = e.Where("finr = ? and maintemplatenr = ?", t.Finr, t.Maintemplatenr).Delete(&PmTemplateServicelst{})
  72. if err != nil {
  73. return err
  74. }
  75. }
  76. return nil
  77. }
  78. //改
  79. func (t *PmTemplate) Update() error {
  80. e := db.Eloquent.Master()
  81. _, err := e.ID(core.PK{t.Finr, t.Maintemplatenr}).Update(t)
  82. if err != nil {
  83. return err
  84. }
  85. //批量删除
  86. _, err = e.Table("pm_template_servicelst").Where("finr = ? and maintemplatenr = ?", t.Finr, t.Maintemplatenr).Delete(&PmTemplateServicelst{})
  87. if err != nil {
  88. return err
  89. }
  90. //批量插入
  91. alldata := make([]PmTemplateServicelst, 0)
  92. for k, v := range t.Valst {
  93. one := PmTemplateServicelst{}
  94. one.Finr = t.Finr
  95. one.Pos = k + 1
  96. one.Descr = v.Descr
  97. one.Maintemplatenr = t.Maintemplatenr
  98. one.Mainservicenr = utils.ValueToInt(v.Mainserviceid, 0)
  99. one.Credatuz = t.Credatuz
  100. one.Lastuser = t.Lastuser
  101. one.Lastmodif = t.Lastmodif
  102. alldata = append(alldata, one)
  103. }
  104. _, err = e.Table("pm_template_servicelst").Insert(&alldata)
  105. if err != nil {
  106. return err
  107. }
  108. return nil
  109. }
  110. type TemplateService struct {
  111. PmTemplateServicelst `xorm:"extends"`
  112. PmService `xorm:"extends"`
  113. }
  114. //查
  115. func (t *PmTemplate) SelectOne() (PmTemplate, error) {
  116. e := db.Eloquent.Master()
  117. var data PmTemplate
  118. _, err := e.ID(core.PK{t.Finr, t.Maintemplatenr}).Get(&data)
  119. if err != nil {
  120. return data, err
  121. }
  122. var datalist []PmService
  123. var tem []TemplateService
  124. err = e.Table("pm_template_servicelst").Join("left", "pm_service", "pm_template_servicelst.finr=pm_service.finr and pm_template_servicelst.mainservicenr=pm_service.mainserviceid").Where("pm_template_servicelst.finr = ? and pm_template_servicelst.maintemplatenr = ?", t.Finr, t.Maintemplatenr).Find(&tem)
  125. if err != nil {
  126. return data, err
  127. }
  128. var maintemplatenrs []int
  129. for _, v := range tem {
  130. dataone := PmService{}
  131. dataone.Mainserviceid = v.Mainserviceid
  132. dataone.Descr = v.PmService.Descr
  133. maintemplatenrs = append(maintemplatenrs, v.Maintemplatenr)
  134. datalist = append(datalist, dataone)
  135. }
  136. data.Valst = datalist
  137. var attrdata []PmService
  138. err = e.Table("pm_service").NotIn("mainserviceid", maintemplatenrs).Where("finr = ?", t.Finr).Find(&attrdata)
  139. if err != nil {
  140. return data, err
  141. }
  142. data.UnValst = attrdata
  143. return data, nil
  144. }
  145. //查所有
  146. func (t *PmTemplate) SelectAll() ([]PmService, error) {
  147. e := db.Eloquent.Master()
  148. var data []PmService
  149. err := e.Table("pm_service").Where("finr = ?", t.Finr).Find(&data)
  150. if err != nil {
  151. return data, err
  152. }
  153. return data, nil
  154. }
  155. //查所有模板
  156. func (t *PmTemplate) SelectArr() ([]PmTemplate, error) {
  157. e := db.Eloquent.Master()
  158. data := make([]PmTemplate, 0)
  159. err := e.Table("pm_template").Where("finr = ?", t.Finr).Find(&data)
  160. if err != nil {
  161. return data, err
  162. }
  163. return data, nil
  164. }
  165. //分页
  166. func (t *PmTemplate) GetPage(descr string, pageSize int, pageIndex int) ([]PmTemplate, int, error) {
  167. data := make([]PmTemplate, 0)
  168. e := db.Eloquent.Master()
  169. table := e.Table("pm_template").Where("finr = ? ", t.Finr)
  170. parameters := make([]interface{}, 0)
  171. where := ""
  172. parameters = append(parameters, t.Finr)
  173. if descr != "" {
  174. table = table.And("descr like concat('%',?,'%')", descr)
  175. where += " and descr like concat('%',?,'%')"
  176. parameters = append(parameters, descr)
  177. }
  178. parameters = append(parameters, (pageIndex-1)*pageSize, pageSize)
  179. err := e.SQL("SELECT * FROM (SELECT * FROM pm_template where finr = ?"+where+") t order by maintemplatenr offset ? row fetch next ? row only", parameters...).Find(&data)
  180. if err != nil {
  181. return data, 0, err
  182. }
  183. count, err := table.Count(new(PmTemplate))
  184. if err != nil {
  185. return nil, 0, err
  186. }
  187. for k, _ := range data {
  188. data[k].Clipped()
  189. }
  190. return data, int(count), nil
  191. }