excel_classify.go 14 KB

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