excel_classify.go 10 KB

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