variety.go 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. package supply_analysis
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/utils"
  5. "fmt"
  6. "time"
  7. "gorm.io/gorm"
  8. )
  9. type Variety struct {
  10. VarietyId int `orm:"column(variety_id);pk" gorm:"primaryKey" `
  11. VarietyName string `description:"品种名称"`
  12. LastUpdateSysUserId int `description:"最后更新人id"`
  13. LastUpdateSysUserRealName string `description:"最后更新人名称"`
  14. ProductionDay int `description:"生产天数"`
  15. SysUserId int `description:"创建人id"`
  16. SysUserRealName string `description:"创建人姓名"`
  17. ModifyTime time.Time `description:"修改时间"`
  18. CreateTime time.Time `description:"创建时间"`
  19. }
  20. func GetVarietyById(id int) (item *Variety, err error) {
  21. sql := `SELECT * FROM variety WHERE variety_id = ?`
  22. err = global.DmSQL["data"].Raw(sql, id).First(&item).Error
  23. return
  24. }
  25. func GetVarietyByName(name string) (item *Variety, err error) {
  26. sql := `SELECT * FROM variety WHERE variety_name = ?`
  27. err = global.DmSQL["data"].Raw(sql, name).First(&item).Error
  28. return
  29. }
  30. func CreateVariety(item *Variety, adminIdList []int) (err error) {
  31. to := global.DmSQL["data"].Begin()
  32. defer func() {
  33. if err != nil {
  34. _ = to.Rollback()
  35. } else {
  36. _ = to.Commit()
  37. }
  38. }()
  39. err = to.Create(item).Error
  40. if err != nil {
  41. return
  42. }
  43. varietyAdminPermissionList := make([]*VarietyAdminPermission, 0)
  44. for _, adminId := range adminIdList {
  45. varietyAdminPermissionList = append(varietyAdminPermissionList, &VarietyAdminPermission{
  46. VarietyId: item.VarietyId,
  47. SysUserId: adminId,
  48. CreateTime: time.Now(),
  49. })
  50. }
  51. if len(varietyAdminPermissionList) > 0 {
  52. err = to.CreateInBatches(varietyAdminPermissionList, utils.MultiAddNum).Error
  53. }
  54. return
  55. }
  56. func EditVariety(item *Variety, adminIdList []int) (err error) {
  57. to := global.DmSQL["data"].Begin()
  58. defer func() {
  59. if err != nil {
  60. _ = to.Rollback()
  61. } else {
  62. _ = to.Commit()
  63. }
  64. }()
  65. err = to.Select("VarietyName", "LastUpdateSysUserId", "LastUpdateSysUserRealName", "ModifyTime").Updates(item).Error
  66. if err != nil {
  67. return
  68. }
  69. sql := `DELETE FROM variety_admin_permission where variety_id = ? `
  70. err = to.Exec(sql, item.VarietyId).Error
  71. if err != nil {
  72. return
  73. }
  74. varietyAdminPermissionList := make([]*VarietyAdminPermission, 0)
  75. for _, adminId := range adminIdList {
  76. varietyAdminPermissionList = append(varietyAdminPermissionList, &VarietyAdminPermission{
  77. VarietyId: item.VarietyId,
  78. SysUserId: adminId,
  79. CreateTime: time.Now(),
  80. })
  81. }
  82. if len(varietyAdminPermissionList) > 0 {
  83. err = to.CreateInBatches(varietyAdminPermissionList, utils.MultiAddNum).Error
  84. }
  85. return
  86. }
  87. type VarietyItem struct {
  88. VarietyId int `orm:"column(variety_id);pk" gorm:"primaryKey" `
  89. VarietyName string `description:"品种名称"`
  90. ProductionDay int `description:"生产天数"`
  91. LastUpdateSysUserId int `description:"最后更新人id"`
  92. LastUpdateSysUserRealName string `description:"最后更新人名称"`
  93. PermissionUserId string `description:"有操作权限的用户id"`
  94. ModifyTime string `description:"修改时间"`
  95. CreateTime string `description:"创建时间"`
  96. Button VarietyButton `gorm:"-" description:"操作按钮权限"`
  97. }
  98. type VarietyButton struct {
  99. Edit bool `description:"操作权限"`
  100. Delete bool `description:"删除权限"`
  101. Analyse bool `description:"分析权限"`
  102. }
  103. func (v *VarietyItem) AfterFind(db *gorm.DB) error {
  104. tmpCreateTime, err := time.Parse(utils.FormatDateWallWithLoc, v.CreateTime)
  105. if err != nil {
  106. return err
  107. }
  108. tmpModifyTime, err := time.Parse(utils.FormatDateWallWithLoc, v.ModifyTime)
  109. if err != nil {
  110. return err
  111. }
  112. v.CreateTime = utils.TimeTransferString(utils.FormatDateTime, tmpCreateTime)
  113. v.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, tmpModifyTime)
  114. return nil
  115. }
  116. func (item Variety) GetListBySuperAdminPage(condition string, pars []interface{}, startSize, pageSize int) (total int, items []*VarietyItem, err error) {
  117. baseSql := ` FROM ( SELECT a.variety_id,a.variety_name,a.last_update_sys_user_id,
  118. a.last_update_sys_user_real_name,a.production_day,a.sys_user_id,a.sys_user_real_name,a.modify_time,a.create_time,LISTAGG(b.sys_user_id, ',') WITHIN GROUP (ORDER BY b.sys_user_id ASC) AS permission_user_id
  119. FROM variety a
  120. LEFT JOIN variety_admin_permission b on a.variety_id=b.variety_id
  121. LEFT JOIN variety_edb_info c on a.variety_id=c.variety_id WHERE 1=1 `
  122. if condition != "" {
  123. baseSql += condition
  124. }
  125. baseSql += ` GROUP BY a.variety_id,a.variety_name,a.last_update_sys_user_id,
  126. a.last_update_sys_user_real_name,a.production_day,a.sys_user_id,a.sys_user_real_name,a.modify_time,a.create_time ) d `
  127. totalSql := `SELECT COUNT(1) total ` + baseSql
  128. err = global.DmSQL["data"].Raw(totalSql, pars...).Scan(&total).Error
  129. if err != nil {
  130. fmt.Println("Count Err:", err)
  131. return
  132. }
  133. listSql := `SELECT * ` + baseSql + ` ORDER BY modify_time DESC,variety_id DESC LIMIT ?,?`
  134. pars = append(pars, startSize)
  135. pars = append(pars, pageSize)
  136. err = global.DmSQL["data"].Raw(listSql, pars...).Find(&items).Error
  137. return
  138. }
  139. func (item Variety) GetListByPage(condition string, pars []interface{}, startSize, pageSize int) (total int, items []*VarietyItem, err error) {
  140. baseSql := ` FROM ( SELECT a.variety_id,a."variety_name",a."production_day",a."last_update_sys_user_id",a."last_update_sys_user_real_name",a."modify_time",a."create_time", LISTAGG(DISTINCT b.sys_user_id , ',') WITHIN GROUP (ORDER BY b.sys_user_id asc) AS permission_user_id
  141. FROM variety a
  142. JOIN variety_admin_permission b on a.variety_id=b.variety_id
  143. JOIN variety_edb_info c on a.variety_id=c.variety_id WHERE 1=1 `
  144. if condition != "" {
  145. baseSql += condition
  146. }
  147. baseSql += ` GROUP BY a.variety_id,a."variety_name",a."production_day",a."last_update_sys_user_id",a."last_update_sys_user_real_name",a."modify_time",a."create_time" ) d `
  148. totalSql := `SELECT COUNT(1) total ` + baseSql
  149. err = global.DmSQL["data"].Raw(totalSql, pars...).Scan(&total).Error
  150. if err != nil {
  151. return
  152. }
  153. listSql := `SELECT * ` + baseSql + ` ORDER BY modify_time DESC,variety_id DESC LIMIT ?,?`
  154. pars = append(pars, startSize)
  155. pars = append(pars, pageSize)
  156. err = global.DmSQL["data"].Raw(listSql, pars...).Scan(&items).Error
  157. return
  158. }
  159. func (variety *Variety) Update(cols []string) (err error) {
  160. err = global.DmSQL["data"].Select(cols).Updates(variety).Error
  161. return
  162. }
  163. func (variety *Variety) Delete() (err error) {
  164. err = global.DmSQL["data"].Delete(variety).Error
  165. return
  166. }
  167. type VarietyView struct {
  168. VarietyId int `orm:"column(future_good_chart_classify_id);pk" gorm:"primaryKey" `
  169. VarietyName string `description:"分类名称"`
  170. ParentId int `description:"父级id"`
  171. }