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.

157 lines
4.8 KiB

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