excel_classify.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. package excel
  2. import (
  3. "eta/eta_chart_lib/global"
  4. "eta/eta_chart_lib/utils"
  5. "fmt"
  6. "time"
  7. )
  8. // ExcelClassify excel表格分类
  9. type ExcelClassify struct {
  10. //ExcelClassifyId int `orm:"column(excel_classify_id);pk"`
  11. ExcelClassifyId int `gorm:"column:excel_classify_id;primaryKey"`
  12. Source int `description:"表格来源,1:excel插件的表格,2:自定义表格,3:混合表格,4:自定义分析,默认:1"`
  13. ExcelClassifyName string `description:"分类名称"`
  14. ParentId int `description:"父级id"`
  15. SysUserId int `description:"创建人id"`
  16. SysUserRealName string `description:"创建人姓名"`
  17. Level int `description:"层级"`
  18. UniqueCode string `description:"唯一编码"`
  19. Sort int `description:"排序字段,越小越靠前,默认值:10"`
  20. IsDelete int `description:"排序字段,越小越靠前,默认值:10"`
  21. CreateTime time.Time `description:"创建时间"`
  22. ModifyTime time.Time `description:"修改时间"`
  23. IsJoinPermission int `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
  24. }
  25. // AddExcelClassify 添加excel分类
  26. func AddExcelClassify(item *ExcelClassify) (lastId int64, err error) {
  27. //o := orm.NewOrmUsingDB("data")
  28. //lastId, err = o.Insert(item)
  29. //if err != nil {
  30. // return
  31. //}
  32. //item.ExcelClassifyId = int(lastId)
  33. err = global.DbMap[utils.DbNameIndex].Create(&item).Error
  34. return
  35. }
  36. // GetExcelClassifyCount 获取同级分类下存在同名分类的数量
  37. func GetExcelClassifyCount(ExcelClassifyName string, parentId, source int) (count int, err error) {
  38. //o := orm.NewOrmUsingDB("data")
  39. sql := `SELECT COUNT(1) AS count FROM excel_classify WHERE parent_id=? AND source = ? AND excel_classify_name=? AND is_delete=0 `
  40. //err = o.Raw(sql, parentId, source, ExcelClassifyName).QueryRow(&count)
  41. err = global.DbMap[utils.DbNameIndex].Raw(sql, parentId, source, ExcelClassifyName).Scan(&count).Error
  42. return
  43. }
  44. func GetExcelClassifyById(classifyId int) (item *ExcelClassify, err error) {
  45. //o := orm.NewOrmUsingDB("data")
  46. sql := `SELECT * FROM excel_classify WHERE excel_classify_id=? AND is_delete=0 `
  47. //err = o.Raw(sql, classifyId).QueryRow(&item)
  48. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).First(&item).Error
  49. return
  50. }
  51. // GetExcelClassifyByIdList
  52. // @Description: 根据分类id列表获取所有分类信息
  53. // @author: Roc
  54. // @datetime 2024-04-07 16:24:04
  55. // @param classifyIdList []int
  56. // @return items []*ExcelClassify
  57. // @return err error
  58. func GetExcelClassifyByIdList(classifyIdList []int) (items []*ExcelClassify, err error) {
  59. num := len(classifyIdList)
  60. if num <= 0 {
  61. return
  62. }
  63. //o := orm.NewOrmUsingDB("data")
  64. //sql := `SELECT * FROM excel_classify WHERE excel_classify_id in (` + utils.GetOrmInReplace(num) + `) AND is_delete=0 `
  65. //_, err = o.Raw(sql, classifyIdList).QueryRows(&items)
  66. sql := `SELECT * FROM excel_classify WHERE excel_classify_id in ? AND is_delete=0 `
  67. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyIdList).Find(&items).Error
  68. return
  69. }
  70. // GetExcelClassifyBySourceAndIsJoinPermission
  71. // @Description: 根据分类id列表获取所有分类信息
  72. // @author: Roc
  73. // @datetime 2024-04-07 16:24:04
  74. // @param classifyIdList []int
  75. // @return items []*ExcelClassify
  76. // @return err error
  77. func GetExcelClassifyBySourceAndIsJoinPermission(source, isJoinPermission int) (items []*ExcelClassify, err error) {
  78. //o := orm.NewOrmUsingDB("data")
  79. sql := `SELECT * FROM excel_classify WHERE source = ? AND is_join_permission = ? `
  80. //_, err = o.Raw(sql, source, isJoinPermission).QueryRows(&items)
  81. err = global.DbMap[utils.DbNameIndex].Raw(sql, source, isJoinPermission).Find(&items).Error
  82. return
  83. }
  84. func GetChildClassifyById(classifyId int) (items []*ExcelClassify, err error) {
  85. //o := orm.NewOrmUsingDB("data")
  86. sql := `SELECT * FROM excel_classify WHERE parent_id=? AND is_delete=0 `
  87. //_, err = o.Raw(sql, classifyId).QueryRows(&items)
  88. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).Find(&items).Error
  89. return
  90. }
  91. func GetExcelClassifyByParentId(parentId, source int) (items []*ExcelClassifyItems, err error) {
  92. //o := orm.NewOrmUsingDB("data")
  93. sql := ` SELECT * FROM excel_classify WHERE parent_id=? AND source = ? AND is_delete=0 order by sort asc,excel_classify_id asc`
  94. //_, err = o.Raw(sql, parentId, source).QueryRows(&items)
  95. err = global.DbMap[utils.DbNameIndex].Raw(sql, parentId, source).Find(&items).Error
  96. return
  97. }
  98. func GetExcelClassifyBySource(source int) (items []*ExcelClassifyItems, err error) {
  99. //o := orm.NewOrmUsingDB("data")
  100. sql := ` SELECT * FROM excel_classify WHERE source = ? AND is_delete=0 order by sort asc,excel_classify_id asc`
  101. //_, err = o.Raw(sql, source).QueryRows(&items)
  102. err = global.DbMap[utils.DbNameIndex].Raw(sql, source).Find(&items).Error
  103. return
  104. }
  105. func GetExcelClassifyBySourceOrderByLevel(source int) (items []*ExcelClassifyItems, err error) {
  106. //o := orm.NewOrmUsingDB("data")
  107. sql := ` SELECT * FROM excel_classify WHERE source = ? AND is_delete=0 order by level asc, sort asc,excel_classify_id asc`
  108. //_, err = o.Raw(sql, source).QueryRows(&items)
  109. err = global.DbMap[utils.DbNameIndex].Raw(sql, source).Find(&items).Error
  110. return
  111. }
  112. func GetExcelClassifyAll() (items []*ExcelClassifyItems, err error) {
  113. //o := orm.NewOrmUsingDB("data")
  114. sql := ` SELECT * FROM excel_classify WHERE parent_id<>0 AND is_delete=0 order by sort asc,excel_classify_id asc`
  115. //_, err = o.Raw(sql).QueryRows(&items)
  116. err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&items).Error
  117. return
  118. }
  119. type ExcelClassifyItems struct {
  120. ExcelClassifyId int `description:"分类id"`
  121. ExcelInfoId int `description:"表格id"`
  122. ExcelClassifyName string
  123. ParentId int
  124. Level int `description:"层级"`
  125. Sort int `description:"排序字段,越小越靠前,默认值:10"`
  126. UniqueCode string `description:"唯一编码"`
  127. SysUserId int `description:"创建人id"`
  128. SysUserRealName string `description:"创建人姓名"`
  129. StartDate string `description:"自定义开始日期"`
  130. Children []*ExcelClassifyItems
  131. IsJoinPermission int `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
  132. HaveOperaAuth bool `description:"是否有数据权限"`
  133. }
  134. func GetExcelClassifyByCondition(condition string, pars []interface{}) (item *ExcelClassify, err error) {
  135. //o := orm.NewOrmUsingDB("data")
  136. sql := ` SELECT * FROM excel_classify WHERE 1=1 AND is_delete=0 `
  137. if condition != "" {
  138. sql += condition
  139. }
  140. //err = o.Raw(sql, pars).QueryRow(&item)
  141. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).First(&item).Error
  142. return
  143. }
  144. // GetNextExcelClassifyByCondition 获取下一个分类
  145. func GetNextExcelClassifyByCondition(condition string, pars []interface{}) (item *ExcelClassify, err error) {
  146. //o := orm.NewOrmUsingDB("data")
  147. sql := ` SELECT * FROM excel_classify WHERE 1=1 AND is_delete=0 `
  148. if condition != "" {
  149. sql += condition
  150. }
  151. sql += " ORDER BY sort asc , create_time ASC LIMIT 1 "
  152. //err = o.Raw(sql, pars).QueryRow(&item)
  153. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).First(&item).Error
  154. return
  155. }
  156. // GetFirstExcelClassifyByParentId 获取当前父级图表分类下的排序第一条的数据
  157. func GetFirstExcelClassifyByParentId(parentId int) (item *ExcelClassify, err error) {
  158. //o := orm.NewOrmUsingDB("data")
  159. sql := ` SELECT * FROM excel_classify WHERE parent_id=? AND is_delete=0 order by sort asc,excel_classify_id asc limit 1`
  160. //err = o.Raw(sql, parentId).QueryRow(&item)
  161. err = global.DbMap[utils.DbNameIndex].Raw(sql, parentId).First(&item).Error
  162. return
  163. }
  164. // UpdateExcelClassifySortByParentId 根据图表父类id更新排序
  165. func UpdateExcelClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string, source int) (err error) {
  166. //o := orm.NewOrmUsingDB("data")
  167. sql := ` update excel_classify set sort = ` + updateSort + ` WHERE parent_id=? and source=? and sort > ? AND is_delete=0 `
  168. if classifyId > 0 {
  169. sql += ` or ( excel_classify_id > ` + fmt.Sprint(classifyId) + ` and sort= ` + fmt.Sprint(nowSort) + `)`
  170. }
  171. //_, err = o.Raw(sql, parentId, source, nowSort).Exec()
  172. err = global.DbMap[utils.DbNameIndex].Exec(sql, parentId, source, nowSort).Error
  173. return
  174. }
  175. // Update 更新图表分类基础信息
  176. func (ExcelClassify *ExcelClassify) Update(cols []string) (err error) {
  177. //o := orm.NewOrmUsingDB("data")
  178. //_, err = o.Update(ExcelClassify, cols...)
  179. err = global.DbMap[utils.DbNameIndex].Model(&ExcelClassify).Select(cols).Updates(&ExcelClassify).Error
  180. return
  181. }
  182. // GetExcelClassifyMaxSort 获取图表分类下最大的排序数
  183. func GetExcelClassifyMaxSort(parentId int, source int) (sort int, err error) {
  184. //o := orm.NewOrmUsingDB("data")
  185. sql := `SELECT Max(sort) AS sort FROM excel_classify WHERE parent_id=? AND source = ? AND is_delete=0 `
  186. //err = o.Raw(sql, parentId, source).QueryRow(&sort)
  187. err = global.DbMap[utils.DbNameIndex].Raw(sql, parentId, source).Scan(&sort).Error
  188. return
  189. }
  190. type ExcelClassifyView struct {
  191. ExcelClassifyId int `orm:"column(excel_classify_id);pk"`
  192. ExcelClassifyName string `description:"分类名称"`
  193. ParentId int `description:"父级id"`
  194. }
  195. func GetExcelClassifyViewById(classifyId int) (item *ExcelClassifyView, err error) {
  196. //o := orm.NewOrmUsingDB("data")
  197. sql := `SELECT * FROM excel_classify WHERE excel_classify_id=? AND is_delete=0 `
  198. //err = o.Raw(sql, classifyId).QueryRow(&item)
  199. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).First(&item).Error
  200. return
  201. }
  202. // ExcelClassifyItemBySort 自定义比较函数,按年龄从小到大排序
  203. func ExcelClassifyItemBySort(p1, p2 *ExcelClassifyItems) bool {
  204. return p1.Sort < p2.Sort
  205. }
  206. // GetClassifyByIdList
  207. // @Description: 根据分类ID列表获取分类列表
  208. // @author: Roc
  209. // @datetime 2024-04-02 19:40:30
  210. // @param classifyIdList []int
  211. // @return items []*ExcelClassify
  212. // @return err error
  213. func GetClassifyByIdList(classifyIdList []int) (items []*ExcelClassify, err error) {
  214. num := len(classifyIdList)
  215. if num <= 0 {
  216. return
  217. }
  218. //o := orm.NewOrmUsingDB("data")
  219. //sql := `SELECT * FROM excel_classify WHERE excel_classify_id in (` + utils.GetOrmInReplace(num) + `) AND is_delete=0 `
  220. sql := `SELECT * FROM excel_classify WHERE excel_classify_id in ? AND is_delete=0 `
  221. //_, err = o.Raw(sql, classifyIdList).QueryRows(&items)
  222. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyIdList).Find(&items).Error
  223. return
  224. }