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.

228 lines
7.3 KiB

  1. package models
  2. import (
  3. "LAPP_LF_MOM_BACKEND/db"
  4. "LAPP_LF_MOM_BACKEND/utils"
  5. "xorm.io/core"
  6. )
  7. type PmAsset struct {
  8. Finr int `xorm:"not null pk INT(4)" json:"pm_asset-finr"`
  9. Assetid int `xorm:"not null pk INT(4)" json:"pm_asset-assetid"`
  10. Descr string `xorm:"VARCHAR(40)" json:"pm_asset-descr"`
  11. Assetname string `xorm:"VARCHAR(18)" json:"pm_asset-assetname"`
  12. Assettype string `xorm:"VARCHAR(20)" json:"pm_asset-assettype"`
  13. Model string `xorm:"VARCHAR(14)" json:"pm_asset-model"`
  14. Year string `xorm:"VARCHAR(4)" json:"pm_asset-year"`
  15. Serialno string `xorm:"VARCHAR(40)" json:"pm_asset-serialno"`
  16. Tagno string `xorm:"VARCHAR(40)" json:"pm_asset-tagno"`
  17. Maker string `xorm:"VARCHAR(40)" json:"pm_asset-maker"`
  18. Locaid int `xorm:"not null INT(4)" json:"pm_asset-locaid"`
  19. Assetstatus int `xorm:"not null INT(4)" json:"pm_asset-assetstatus"`
  20. Operator int `xorm:"not null INT(4)" json:"pm_asset-operator"`
  21. Weekmodelid int `xorm:"not null INT(4)" json:"pm_asset-weekmodelid"`
  22. Workcalendarid int `xorm:"not null INT(4)" json:"pm_asset-workcalendarid"`
  23. Costcenterid string `xorm:"VARCHAR(12)" json:"pm_asset-costcenterid"`
  24. Lastmodif string `xorm:"VARCHAR(14)" json:"pm_asset-lastmodif"`
  25. Lastuser string `xorm:"VARCHAR(20)" json:"pm_asset-lastuser"`
  26. Credatuz string `xorm:"VARCHAR(14)" json:"pm_asset-credatuz"`
  27. Valst []PmTemplate `json:"valst" xorm:"-"`
  28. UnValst []PmTemplate `json:"unvalst" xorm:"-"`
  29. }
  30. func (t *PmAsset) TableName() string {
  31. return "pm_asset"
  32. }
  33. // 清除string字段的右侧空格
  34. func (t *PmAsset) Clipped() {
  35. utils.TrimStruct(t, *t)
  36. }
  37. //增
  38. func (t *PmAsset) Add() error {
  39. e := db.Eloquent.Master()
  40. snr := new(Snrtab)
  41. snr.Finr = t.Finr
  42. affw, err := snr.GetNextSnr("Assetid")
  43. if err != nil {
  44. return err
  45. }
  46. t.Assetid = utils.ValueToInt(affw, 0)
  47. _, err = e.Table("pm_asset").Insert(t)
  48. if err != nil {
  49. return err
  50. }
  51. //批量插入
  52. alldata := make([]PmAssetTemplatelst, 0)
  53. for k, v := range t.Valst {
  54. dataone := PmAssetTemplatelst{}
  55. dataone.Finr = t.Finr
  56. dataone.Assetid = t.Assetid
  57. dataone.Maintemplatenr = v.Maintemplatenr
  58. dataone.Pos = k + 1
  59. dataone.Credatuz = t.Credatuz
  60. dataone.Lastmodif = t.Lastmodif
  61. dataone.Lastuser = t.Lastmodif
  62. alldata = append(alldata, dataone)
  63. }
  64. _, err = e.Table("pm_asset_templatelst").Insert(&alldata)
  65. if err != nil {
  66. return err
  67. }
  68. return nil
  69. }
  70. //删
  71. func (t *PmAsset) Del() error {
  72. e := db.Eloquent.Master()
  73. _, err := e.Where("finr = ? and assetid = ?", t.Finr, t.Assetid).Delete(&PmAsset{})
  74. if err != nil {
  75. return err
  76. }
  77. countrole := new(PmAssetTemplatelst)
  78. affw, _ := e.Table("pm_asset_templatelst").Where("finr = ? and assetid = ?", t.Finr, t.Assetid).Count(countrole)
  79. if affw > 0 {
  80. _, err = e.Where("finr = ? and assetid = ?", t.Finr, t.Assetid).Delete(&PmAssetTemplatelst{})
  81. if err != nil {
  82. return err
  83. }
  84. }
  85. return nil
  86. }
  87. //改
  88. func (t *PmAsset) Update() error {
  89. e := db.Eloquent.Master()
  90. _, err := e.ID(core.PK{t.Finr, t.Assetid}).Update(t)
  91. if err != nil {
  92. return err
  93. }
  94. //批量删除
  95. _, err = e.Table("pm_asset_templatelst").Where("finr = ? and assetid = ?", t.Finr, t.Assetid).Delete(&PmAssetTemplatelst{})
  96. if err != nil {
  97. return err
  98. }
  99. //批量插入
  100. alldata := make([]PmAssetTemplatelst, 0)
  101. for k, v := range t.Valst {
  102. dataone := PmAssetTemplatelst{}
  103. dataone.Finr = t.Finr
  104. dataone.Assetid = t.Assetid
  105. dataone.Maintemplatenr = v.Maintemplatenr
  106. dataone.Pos = k + 1
  107. dataone.Credatuz = t.Credatuz
  108. dataone.Lastmodif = t.Lastmodif
  109. dataone.Lastuser = t.Lastmodif
  110. alldata = append(alldata, dataone)
  111. }
  112. _, err = e.Table("pm_asset_templatelst").Insert(&alldata)
  113. if err != nil {
  114. return err
  115. }
  116. return nil
  117. }
  118. type TemplateAsset struct {
  119. PmAssetTemplatelst `xorm:"extends"`
  120. PmTemplate `xorm:"extends"`
  121. }
  122. //查
  123. func (t *PmAsset) SelectOne() (PmAsset, error) {
  124. e := db.Eloquent.Master()
  125. var data PmAsset
  126. _, err := e.ID(core.PK{t.Finr, t.Assetid}).Get(&data)
  127. if err != nil {
  128. return data, err
  129. }
  130. var datalist []PmTemplate
  131. var tem []TemplateAsset
  132. err = e.Table("pm_asset_templatelst").Join("left", "pm_template", "pm_asset_templatelst.finr=pm_template.finr and pm_asset_templatelst.maintemplatenr=pm_template.maintemplatenr").Where("pm_asset_templatelst.finr = ? and pm_asset_templatelst.assetid = ?", t.Finr, t.Assetid).Find(&tem)
  133. if err != nil {
  134. return data, err
  135. }
  136. var Maintemplatenrs []int
  137. for _, v := range tem {
  138. dataone := PmTemplate{}
  139. dataone.Maintemplatenr = v.PmAssetTemplatelst.Maintemplatenr
  140. dataone.Descr = v.PmTemplate.Descr
  141. Maintemplatenrs = append(Maintemplatenrs, v.PmAssetTemplatelst.Maintemplatenr)
  142. datalist = append(datalist, dataone)
  143. }
  144. data.Valst = datalist
  145. var templatedata []PmTemplate
  146. err = e.Table("pm_template").NotIn("maintemplatenr", Maintemplatenrs).Where("finr = ?", t.Finr).Find(&templatedata)
  147. if err != nil {
  148. return data, err
  149. }
  150. data.UnValst = templatedata
  151. return data, nil
  152. }
  153. //查所有
  154. func (t *PmAsset) SelectAll() ([]PmAsset, error) {
  155. e := db.Eloquent.Master()
  156. var data []PmAsset
  157. err := e.Table("pm_asset").Where("finr = ?", t.Finr).Find(&data)
  158. if err != nil {
  159. return data, err
  160. }
  161. return data, nil
  162. }
  163. //分页
  164. func (t *PmAsset) GetPage(descr string, pageSize int, pageIndex int) ([]PmAsset, int, error) {
  165. data := make([]PmAsset, 0)
  166. e := db.Eloquent.Master()
  167. table := e.Table("pm_asset").Where("finr = ? ", t.Finr)
  168. parameters := make([]interface{}, 0)
  169. where := ""
  170. parameters = append(parameters, t.Finr)
  171. if descr != "" {
  172. table = table.And("descr like concat('%',?,'%')", descr)
  173. where += " and descr like concat('%',?,'%')"
  174. parameters = append(parameters, descr)
  175. }
  176. parameters = append(parameters, (pageIndex-1)*pageSize, pageSize)
  177. err := e.SQL("SELECT * FROM (SELECT * FROM pm_asset where finr = ?"+where+") t order by assetid offset ? row fetch next ? row only", parameters...).Find(&data)
  178. if err != nil {
  179. return data, 0, err
  180. }
  181. count, err := table.Count(new(PmAsset))
  182. if err != nil {
  183. return nil, 0, err
  184. }
  185. for k, _ := range data {
  186. data[k].Clipped()
  187. }
  188. return data, int(count), nil
  189. }
  190. //查资产对应的服务
  191. func (t *PmAsset) SelectServices() ([]PmService, error) {
  192. data := make([]CreateData, 0)
  193. serves := make([]PmService, 0)
  194. //第一步,多表联查出所有的数据
  195. e := db.Eloquent.Master()
  196. query := e.Table("pm_asset")
  197. query = query.Join("INNER", "pm_asset_templatelst", "pm_asset.finr = pm_asset_templatelst.finr and pm_asset.assetid = pm_asset_templatelst.assetid")
  198. query = query.Join("INNER", "pm_template", "pm_template.finr = pm_asset_templatelst.finr and pm_template.maintemplatenr = pm_asset_templatelst.maintemplatenr")
  199. query = query.Join("INNER", "pm_template_servicelst", "pm_template.finr = pm_template_servicelst.finr and pm_template.maintemplatenr = pm_template_servicelst.maintemplatenr")
  200. query = query.Join("INNER", "pm_service", "pm_service.finr = pm_template_servicelst.finr and pm_service.mainserviceid = pm_template_servicelst.mainservicenr")
  201. err := query.Where("pm_asset.finr = ? and pm_asset.assetid = ?", t.Finr, t.Assetid).Find(&data)
  202. if err != nil {
  203. return serves, err
  204. }
  205. for _, v := range data {
  206. one := PmService{}
  207. one = v.PmService
  208. serves = append(serves, one)
  209. }
  210. return serves, nil
  211. }