public_chart_classify.go 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. package data_manage
  2. import (
  3. "eta_gn/eta_api/global"
  4. "fmt"
  5. "time"
  6. )
  7. // ChartPublicClassify
  8. // @Description: 公共分类
  9. type ChartPublicClassify struct {
  10. ChartPublicClassifyId int `gorm:"primaryKey" `
  11. Source int `description:"分类来源: 1-图库; 2-商品价格曲线; 3-相关性图表; 6-拟合方程图表; 7-统计特征"`
  12. ChartPublicClassifyName string `description:"分类名称"`
  13. ParentId int `description:"父级id"`
  14. HasData int `description:"是否含有指标数据"`
  15. RootId int `description:"顶级id"`
  16. CreateTime time.Time `description:"创建时间"`
  17. ModifyTime time.Time `description:"修改时间"`
  18. SysUserId int `description:"创建人id"`
  19. SysUserRealName string `description:"创建人姓名"`
  20. Level int `description:"层级"`
  21. UniqueCode string `description:"唯一编码"`
  22. Sort int `description:"排序字段,越小越靠前,默认值:10"`
  23. LastModifyUserId int `description:"最后修改人ID"`
  24. LastModifyUserRealName string `description:"最后修改人姓名"`
  25. ChartPublicClassifyNamePath string `description:"分类名称的完整路径,格式为:父级分类名称|当前分类名称"`
  26. ChartPublicClassifyIdPath string `description:"分类的完整路径,格式为:父级ID,当前ID"`
  27. }
  28. func (m ChartPublicClassify) ToChartClassifyItems() *ChartClassifyItems {
  29. return &ChartClassifyItems{
  30. ChartClassifyId: m.ChartPublicClassifyId,
  31. //ChartInfoId: 0,
  32. ChartClassifyName: m.ChartPublicClassifyName,
  33. ChartClassifyNameEn: m.ChartPublicClassifyName,
  34. ParentId: m.ParentId,
  35. Level: m.Level,
  36. Sort: m.Sort,
  37. UniqueCode: m.UniqueCode,
  38. Source: m.Source,
  39. //SourceName: "",
  40. SysUserId: m.SysUserId,
  41. SysUserRealName: m.SysUserRealName,
  42. //DateType: 0,
  43. //StartDate: "",
  44. //EndDate: "",
  45. //ChartType: 0,
  46. //Calendar: "",
  47. //SeasonStartDate: "",
  48. //SeasonEndDate: "",
  49. Children: nil,
  50. Button: ChartClassifyItemsButton{},
  51. IsJoinPermission: 0,
  52. HaveOperaAuth: false,
  53. ChartClassifyIdPath: m.ChartPublicClassifyIdPath,
  54. }
  55. }
  56. // Add
  57. // @Description: 添加分类
  58. // @author: Roc
  59. // @receiver m
  60. // @datetime 2024-12-04 17:00:18
  61. // @return err error
  62. func (m *ChartPublicClassify) Add() (err error) {
  63. err = global.DmSQL["data"].Create(m).Error
  64. return
  65. }
  66. // Update
  67. // @Description: 更新分类基础信息
  68. // @author: Roc
  69. // @receiver m
  70. // @datetime 2024-12-04 17:01:51
  71. // @param cols []string
  72. // @return err error
  73. func (m *ChartPublicClassify) Update(cols []string) (err error) {
  74. err = global.DmSQL["data"].Select(cols).Updates(m).Error
  75. return
  76. }
  77. // GetChartClassifyById
  78. // @Description: 根据id获取分类
  79. // @author: Roc
  80. // @receiver m
  81. // @datetime 2024-12-04 16:56:15
  82. // @param classifyId int
  83. // @return item *ChartPublicClassify
  84. // @return err error
  85. func (m ChartPublicClassify) GetChartClassifyById(classifyId int) (item *ChartPublicClassify, err error) {
  86. sql := `SELECT * FROM chart_public_classify WHERE chart_public_classify_id=? `
  87. err = global.DmSQL["data"].Raw(sql, classifyId).First(&item).Error
  88. return
  89. }
  90. // GetEdbClassifyByIdList
  91. // @Description: 根据id列表获取分类列表
  92. // @author: Roc
  93. // @receiver m
  94. // @datetime 2024-12-04 16:56:15
  95. // @param classifyIdList []int
  96. // @return items []*ChartPublicClassify
  97. // @return err error
  98. func (m ChartPublicClassify) GetEdbClassifyByIdList(classifyIdList []int) (items []*ChartPublicClassify, err error) {
  99. if len(classifyIdList) <= 0 {
  100. return
  101. }
  102. sql := `SELECT * FROM chart_public_classify WHERE chart_public_classify_id in (?) `
  103. err = global.DmSQL["data"].Raw(sql, classifyIdList).Find(&items).Error
  104. return
  105. }
  106. // GetChartClassifyListByParentId
  107. // @Description: 根据父级id获取下级分类列表
  108. // @author: Roc
  109. // @receiver m
  110. // @datetime 2024-12-03 13:57:48
  111. // @param parentId int
  112. // @param source int8
  113. // @return items []*ChartPublicClassify
  114. // @return err error
  115. func (m ChartPublicClassify) GetChartClassifyListByParentId(parentId int, source int8) (items []*ChartPublicClassify, err error) {
  116. o := global.DmSQL["data"]
  117. sql := `SELECT * FROM chart_public_classify WHERE parent_id=? AND source = ? order by sort asc,chart_public_classify_id asc `
  118. err = o.Raw(sql, parentId, source).Find(&items).Error
  119. return
  120. }
  121. // GetChartClassifyItemsByParentId
  122. // @Description: 根据父级id获取下级分类列表(结构型的)
  123. // @author: Roc
  124. // @receiver m
  125. // @datetime 2024-12-03 13:56:18
  126. // @param parentId int
  127. // @param source int8
  128. // @return items []*ChartClassifyItems
  129. // @return err error
  130. func (m ChartPublicClassify) GetChartClassifyItemsByParentId(parentId int, source int8) (items []*ChartClassifyItems, err error) {
  131. list, err := m.GetChartClassifyListByParentId(parentId, source)
  132. if err != nil {
  133. return
  134. }
  135. for _, v := range list {
  136. items = append(items, v.ToChartClassifyItems())
  137. }
  138. return
  139. }
  140. // GetChartClassifyListByParentId
  141. // @Description: 根据父级id获取下级分类列表
  142. // @author: Roc
  143. // @receiver m
  144. // @datetime 2024-12-03 13:57:48
  145. // @param parentId int
  146. // @param source int8
  147. // @return items []*ChartPublicClassify
  148. // @return err error
  149. func (m ChartPublicClassify) GetChartClassifyListByType(source int8) (items []*ChartPublicClassify, err error) {
  150. o := global.DmSQL["data"]
  151. sql := `SELECT * FROM chart_public_classify WHERE source = ? order by sort asc,chart_public_classify_id asc `
  152. err = o.Raw(sql, source).Find(&items).Error
  153. return
  154. }
  155. // GetAllChartClassifyByType 根据类型获取分类列表
  156. func (m ChartPublicClassify) GetAllChartClassifyByType(source int8) (items []*ChartClassifyItems, err error) {
  157. list, err := m.GetChartClassifyListByType(int8(source))
  158. if err != nil {
  159. return
  160. }
  161. for _, v := range list {
  162. items = append(items, v.ToChartClassifyItems())
  163. }
  164. return
  165. }
  166. func (m ChartPublicClassify) GetChartClassifyCount(classifyName string, parentId int, source int) (count int, err error) {
  167. sql := `SELECT COUNT(1) AS count FROM chart_public_classify WHERE parent_id=? AND chart_public_classify_name=? AND source = ? `
  168. err = global.DmSQL["data"].Raw(sql, parentId, classifyName, source).Scan(&count).Error
  169. return
  170. }
  171. // UpdateChartClassifyNameAndNamePath
  172. // @Description: 更新分类信息
  173. // @author: Roc
  174. // @receiver m
  175. // @datetime 2024-12-05 09:27:33
  176. // @param cols []string
  177. // @param oldClassifyNamePath string
  178. // @param newClassifyNamePath string
  179. // @return err error
  180. func (m *ChartPublicClassify) UpdateChartClassifyNameAndNamePath(cols []string, oldClassifyNamePath, newClassifyNamePath string) (err error) {
  181. tx := global.DmSQL["data"].Begin()
  182. defer func() {
  183. if err != nil {
  184. _ = tx.Rollback()
  185. return
  186. }
  187. _ = tx.Commit()
  188. }()
  189. // 变更分类信息
  190. err = tx.Select(cols).Updates(m).Error
  191. if err != nil {
  192. return
  193. }
  194. // 更改子分类的完整的路径
  195. if oldClassifyNamePath != `` && newClassifyNamePath != `` {
  196. sql := `UPDATE chart_public_classify SET chart_public_classify_name_path = REPLACE(chart_public_classify_name_path,?,?) WHERE chart_public_classify_id_path LIKE ?`
  197. err = tx.Exec(sql, oldClassifyNamePath, newClassifyNamePath, fmt.Sprint(m.ChartPublicClassifyIdPath+`,%`)).Error
  198. if err != nil {
  199. return
  200. }
  201. }
  202. return
  203. }
  204. // GetChartClassifyMaxSort 获取分类下最大的排序数
  205. func (m ChartPublicClassify) GetChartClassifyMaxSort(parentId int, source int) (sort int, err error) {
  206. sql := `SELECT COALESCE(Max(sort), 0) AS sort FROM chart_public_classify WHERE parent_id=? AND source=? `
  207. err = global.DmSQL["data"].Raw(sql, parentId, source).Scan(&sort).Error
  208. return
  209. }
  210. // GetChartInfoCountByClassifyIdList
  211. // @Description: 根据公共分类id集合获取名下指标数量
  212. // @author: Roc
  213. // @receiver m
  214. // @datetime 2024-12-05 09:59:56
  215. // @param classifyIdList []int
  216. // @return count int
  217. // @return err error
  218. func (m ChartPublicClassify) GetChartInfoCountByClassifyIdList(classifyIdList []int) (count int, err error) {
  219. if len(classifyIdList) <= 0 {
  220. return
  221. }
  222. sql := `SELECT COUNT(1) total FROM chart_info WHERE chart_public_classify_id IN (?) `
  223. err = global.DmSQL["data"].Raw(sql, classifyIdList).Scan(&count).Error
  224. return
  225. }
  226. func (m *ChartPublicClassify) GetAllChildClassifyIdList() (items []int, err error) {
  227. sql := ` SELECT chart_public_classify_id FROM chart_public_classify WHERE chart_public_classify_id_path LIKE ? ORDER BY create_time DESC `
  228. err = global.DmSQL["data"].Raw(sql, fmt.Sprint(m.ChartPublicClassifyIdPath+`,%`)).Scan(&items).Error
  229. return
  230. }
  231. // BatchesDel
  232. // @Description: 根据分类id批量删除
  233. // @author: Roc
  234. // @receiver m
  235. // @datetime 2024-12-05 11:13:06
  236. // @param classifyIdList []int
  237. // @return err error
  238. func (m *ChartPublicClassify) BatchesDel(classifyIdList []int) (err error) {
  239. sql := ` DELETE FROM chart_public_classify WHERE chart_public_classify_id IN (?) `
  240. err = global.DmSQL["data"].Exec(sql, classifyIdList).Error
  241. return
  242. }
  243. // GetChartPublicClassifyByParentIdAndName 根据父级ID和名称获取分类
  244. func GetChartPublicClassifyByParentIdAndName(source, parentId int, classifyName string, classifyId int) (item *ChartClassify, err error) {
  245. o := global.DmSQL["data"]
  246. sql := `SELECT * FROM chart_public_classify WHERE source = ? AND parent_id = ? AND chart_public_classify_name = ? AND chart_public_classify_id <> ? LIMIT 1`
  247. err = o.Raw(sql, source, parentId, classifyName, classifyId).First(&item).Error
  248. return
  249. }