SJA工艺
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.

169 lines
5.1 KiB

3 years ago
  1. package models
  2. import (
  3. "LAPP_SJA_ME/db"
  4. "LAPP_SJA_ME/utils"
  5. "errors"
  6. "xorm.io/core"
  7. )
  8. type Weekmodel struct {
  9. Finr int `xorm:"pk comment('工厂号') Int" json:"weekmodel-finr"`
  10. Weekmodelid int `xorm:"pk comment('周模型ID') Int" json:"weekmodel-weekmodelid"`
  11. Datefrom string `xorm:"comment('工作日历') VARCHAR(14)" json:"weekmodel-datefrom"`
  12. Descr string `xorm:"comment('描述') VARCHAR(30)" json:"weekmodel-descr"`
  13. Abrev string `xorm:"comment('简写') VARCHAR(8)" json:"weekmodel-abrev"`
  14. Control int `xorm:"comment('周模块控制') INT" json:"weekmodel-control"`
  15. Loopdays int `xorm:"comment('循环天数') INT" json:"weekmodel-loopdays"`
  16. Lastmodif string `xorm:"comment('最近一次更改时间') VARCHAR(14)" json:"weekmodel-lastmodif"`
  17. Lastuser string `xorm:"comment('最近一次更改人') VARCHAR(20)" json:"weekmodel-lastuser"`
  18. Credatuz string `xorm:"comment('创建时间') VARCHAR(14)" json:"weekmodel-credatuz"`
  19. Valst []Weekmodellst `json:"valst" xorm:"-"`
  20. }
  21. func (t *Weekmodel) TableName() string {
  22. return "weekmodel"
  23. }
  24. // 清除string字段的右侧空格
  25. func (t *Weekmodel) Clipped() {
  26. utils.TrimStruct(t, *t)
  27. }
  28. //增
  29. func (t *Weekmodel) Add() error {
  30. e := db.Eloquent.Master()
  31. countrole := new(Weekmodel)
  32. affw, err := e.Table("weekmodel").ID(core.PK{t.Finr, t.Weekmodelid}).Count(countrole)
  33. if err != nil {
  34. return err
  35. }
  36. if affw > 0 {
  37. return errors.New("数据已经存在!")
  38. }
  39. _, err = e.Table("weekmodel").Insert(t)
  40. if err != nil {
  41. return err
  42. }
  43. //批量插入
  44. for k, _ := range t.Valst {
  45. t.Valst[k].Finr = t.Finr
  46. t.Valst[k].Weekmodelid = t.Weekmodelid
  47. }
  48. alldata := make([]Weekmodellst, 0)
  49. alldata = t.Valst
  50. _, err = e.Table("weekmodellst").Insert(&alldata)
  51. if err != nil {
  52. return err
  53. }
  54. return nil
  55. }
  56. //删
  57. func (t *Weekmodel) Del() bool {
  58. e := db.Eloquent.Master()
  59. _, err := e.ID(core.PK{t.Finr, t.Weekmodelid}).Delete(&Weekmodel{})
  60. if err != nil {
  61. return false
  62. }
  63. count := new(Weekmodellst)
  64. affw, _ := e.Table("weekmodellst").Where("finr = ? and weekmodelid = ?", t.Finr, t.Weekmodelid).Count(count)
  65. if affw > 0 {
  66. _, err = e.Where("finr = ? and weekmodelid = ?", t.Finr, t.Weekmodelid).Delete(&Weekmodellst{})
  67. if err != nil {
  68. return false
  69. }
  70. }
  71. return true
  72. }
  73. //改
  74. func (t *Weekmodel) Update() bool {
  75. e := db.Eloquent.Master()
  76. _, err := e.ID(core.PK{t.Finr, t.Weekmodelid}).Update(t)
  77. if err != nil {
  78. return false
  79. }
  80. if !utils.ValueIsEmpty(t.Valst){
  81. //批量删除
  82. _, err = e.Table("weekmodellst").Where("finr = ? and weekmodelid = ?", t.Finr, t.Weekmodelid).Delete(&Weekmodellst{})
  83. if err != nil {
  84. return false
  85. }
  86. //批量插入
  87. for k, _ := range t.Valst {
  88. t.Valst[k].Finr = t.Finr
  89. t.Valst[k].Weekmodelid = t.Weekmodelid
  90. }
  91. //批量插入
  92. alldata := make([]Weekmodellst, 0)
  93. alldata = t.Valst
  94. _, err = e.Table("weekmodellst").Insert(&alldata)
  95. if err != nil {
  96. return false
  97. }
  98. }
  99. return true
  100. }
  101. type DayAndWeekmodel struct {
  102. Weekmodellst `xorm:"extends"`
  103. Daymodel `xorm:"extends"`
  104. }
  105. //查
  106. func (t *Weekmodel) SelectOne() (Weekmodel, error) {
  107. e := db.Eloquent.Master()
  108. var data Weekmodel
  109. _, err := e.ID(core.PK{t.Finr, t.Weekmodelid}).Get(&data)
  110. if err != nil {
  111. return data, err
  112. }
  113. data.Clipped()
  114. var temlist []Weekmodellst
  115. var datalist []DayAndWeekmodel
  116. err = e.Table("weekmodellst").Join("Left","daymodel","daymodel.daymodelid = weekmodellst.daymodelid and daymodel.finr = weekmodellst.finr").Where("weekmodellst.finr = ? and weekmodellst.weekmodelid = ?", t.Finr, t.Weekmodelid).Find(&datalist)
  117. if err != nil {
  118. return data, err
  119. }
  120. for _, v := range datalist {
  121. dataone := Weekmodellst{}
  122. dataone = v.Weekmodellst
  123. dataone.Descr = v.Daymodel.Descr
  124. temlist = append(temlist,dataone)
  125. }
  126. data.Valst = temlist
  127. return data, nil
  128. }
  129. //分页
  130. func (t *Weekmodel) GetPage(pageSize int, pageIndex int) ([]Weekmodel, int, error) {
  131. data := make([]Weekmodel, 0)
  132. e := db.Eloquent.Master()
  133. table := e.Table("weekmodel").Where("finr = ? ", t.Finr)
  134. where := "where finr = " + "'" + utils.ValueToString(t.Finr, "") + "'"
  135. if t.Weekmodelid >0 {
  136. table = table.And("weekmodelid = ?", t.Weekmodelid)
  137. where += " and weekmodelid = " + "'" + utils.ValueToString(t.Weekmodelid, "") + "'"
  138. }
  139. Offset := (pageIndex - 1) * pageSize
  140. err := e.SQL("SELECT TOP " + utils.ValueToString(pageSize, "") + " weekmodel.* FROM weekmodel " + where + " AND (convert(varchar(10),finr)+convert(varchar(40),weekmodelid) NOT IN (SELECT TOP " + utils.ValueToString(Offset, "") + " convert(varchar(10),finr)+convert(varchar(40),weekmodelid) FROM weekmodel " + where + " ORDER BY credatuz DESC)) ORDER BY credatuz DESC").Find(&data)
  141. pcount := new(Weekmodel)
  142. count, err := table.Count(pcount)
  143. if err != nil {
  144. return data, 0, err
  145. }
  146. for k, _ := range data {
  147. data[k].Clipped()
  148. }
  149. return data, int(count), nil
  150. }
  151. func (t *Weekmodel) SelectArr() ([]Weekmodel, error) {
  152. e := db.Eloquent.Master()
  153. var data []Weekmodel
  154. err := e.Table("weekmodel").Where("finr = ?", t.Finr).Find(&data)
  155. if err != nil {
  156. return data, err
  157. }
  158. return data, nil
  159. }