public_edb_classify.go 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. package data_manage
  2. import (
  3. "eta_gn/eta_api/global"
  4. "fmt"
  5. "time"
  6. )
  7. // EdbPublicClassify
  8. // @Description: 公共分类
  9. type EdbPublicClassify struct {
  10. EdbPublicClassifyId int `gorm:"primaryKey" `
  11. ClassifyType uint8 `description:"分类类型,0:普通指标分类,1:预测指标分类,2:指标加工的分类(普通指标的计算指标)"`
  12. EdbPublicClassifyName 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. EdbPublicClassifyNamePath string `description:"分类名称的完整路径,格式为:父级分类名称|当前分类名称"`
  26. EdbPublicClassifyIdPath string `description:"分类的完整路径,格式为:父级ID,当前ID"`
  27. }
  28. func (m EdbPublicClassify) ToEdbClassifyItems() *EdbClassifyItems {
  29. return &EdbClassifyItems{
  30. ClassifyId: m.EdbPublicClassifyId,
  31. //EdbInfoId: 0,
  32. ClassifyType: m.ClassifyType,
  33. ClassifyName: m.EdbPublicClassifyName,
  34. ClassifyNameEn: m.EdbPublicClassifyName,
  35. ParentId: m.ParentId,
  36. RootId: m.RootId,
  37. Level: m.Level,
  38. Sort: m.Sort,
  39. UniqueCode: m.UniqueCode,
  40. //Source: 0,
  41. //SourceName: "",
  42. SysUserId: m.SysUserId,
  43. SysUserRealName: m.SysUserRealName,
  44. //StartDate: "",
  45. //EdbCode: "",
  46. //EdbType: 0,
  47. //Children: nil,
  48. //Button: EdbClassifyItemsButton{},
  49. //IsJoinPermission: 0,
  50. //HaveOperaAuth: false,
  51. ClassifyIdPath: m.EdbPublicClassifyIdPath,
  52. }
  53. }
  54. // Add
  55. // @Description: 添加分类
  56. // @author: Roc
  57. // @receiver m
  58. // @datetime 2024-12-04 17:00:18
  59. // @return err error
  60. func (m *EdbPublicClassify) Add() (err error) {
  61. err = global.DmSQL["data"].Create(m).Error
  62. return
  63. }
  64. // Update
  65. // @Description: 更新分类基础信息
  66. // @author: Roc
  67. // @receiver m
  68. // @datetime 2024-12-04 17:01:51
  69. // @param cols []string
  70. // @return err error
  71. func (m *EdbPublicClassify) Update(cols []string) (err error) {
  72. err = global.DmSQL["data"].Select(cols).Updates(m).Error
  73. return
  74. }
  75. // GetEdbClassifyById
  76. // @Description: 根据id获取分类
  77. // @author: Roc
  78. // @receiver m
  79. // @datetime 2024-12-04 16:56:15
  80. // @param classifyId int
  81. // @return item *EdbPublicClassify
  82. // @return err error
  83. func (m EdbPublicClassify) GetEdbClassifyById(classifyId int) (item *EdbPublicClassify, err error) {
  84. sql := `SELECT * FROM edb_public_classify WHERE edb_public_classify_id=? `
  85. err = global.DmSQL["data"].Raw(sql, classifyId).First(&item).Error
  86. return
  87. }
  88. // GetEdbClassifyListByParentId
  89. // @Description: 根据父级id获取下级分类列表
  90. // @author: Roc
  91. // @receiver m
  92. // @datetime 2024-12-03 13:57:48
  93. // @param parentId int
  94. // @param classifyType int8
  95. // @return items []*EdbPublicClassify
  96. // @return err error
  97. func (m EdbPublicClassify) GetEdbClassifyListByParentId(parentId int, classifyType int8) (items []*EdbPublicClassify, err error) {
  98. o := global.DmSQL["data"]
  99. sql := `SELECT * FROM edb_public_classify WHERE parent_id=? AND classify_type = ? order by sort asc,edb_public_classify_id asc `
  100. err = o.Raw(sql, parentId, classifyType).Find(&items).Error
  101. return
  102. }
  103. // GetEdbClassifyItemsByParentId
  104. // @Description: 根据父级id获取下级分类列表(结构型的)
  105. // @author: Roc
  106. // @receiver m
  107. // @datetime 2024-12-03 13:56:18
  108. // @param parentId int
  109. // @param classifyType int8
  110. // @return items []*EdbClassifyItems
  111. // @return err error
  112. func (m EdbPublicClassify) GetEdbClassifyItemsByParentId(parentId int, classifyType int8) (items []*EdbClassifyItems, err error) {
  113. list, err := m.GetEdbClassifyListByParentId(parentId, classifyType)
  114. if err != nil {
  115. return
  116. }
  117. for _, v := range list {
  118. items = append(items, v.ToEdbClassifyItems())
  119. }
  120. return
  121. }
  122. // GetEdbClassifyListByParentId
  123. // @Description: 根据父级id获取下级分类列表
  124. // @author: Roc
  125. // @receiver m
  126. // @datetime 2024-12-03 13:57:48
  127. // @param parentId int
  128. // @param classifyType int8
  129. // @return items []*EdbPublicClassify
  130. // @return err error
  131. func (m EdbPublicClassify) GetEdbClassifyListByType(classifyType int8) (items []*EdbPublicClassify, err error) {
  132. o := global.DmSQL["data"]
  133. sql := `SELECT * FROM edb_public_classify WHERE classify_type = ? order by sort asc,edb_public_classify_id asc `
  134. err = o.Raw(sql, classifyType).Find(&items).Error
  135. return
  136. }
  137. // GetAllEdbClassifyByType 根据类型获取分类列表
  138. func (m EdbPublicClassify) GetAllEdbClassifyByType(classifyType int8) (items []*EdbClassifyItems, err error) {
  139. list, err := m.GetEdbClassifyListByType(int8(classifyType))
  140. if err != nil {
  141. return
  142. }
  143. for _, v := range list {
  144. items = append(items, v.ToEdbClassifyItems())
  145. }
  146. return
  147. }
  148. func (m EdbPublicClassify) GetEdbClassifyCount(classifyName string, parentId int, classifyType uint8) (count int, err error) {
  149. sql := `SELECT COUNT(1) AS count FROM edb_public_classify WHERE parent_id=? AND edb_public_classify_name=? AND classify_type = ? `
  150. err = global.DmSQL["data"].Raw(sql, parentId, classifyName, classifyType).Scan(&count).Error
  151. return
  152. }
  153. // UpdateEdbClassifyNameAndNamePath
  154. // @Description: 更新分类信息
  155. // @author: Roc
  156. // @receiver m
  157. // @datetime 2024-12-05 09:27:33
  158. // @param cols []string
  159. // @param oldClassifyNamePath string
  160. // @param newClassifyNamePath string
  161. // @return err error
  162. func (m *EdbPublicClassify) UpdateEdbClassifyNameAndNamePath(cols []string, oldClassifyNamePath, newClassifyNamePath string) (err error) {
  163. tx := global.DmSQL["data"].Begin()
  164. defer func() {
  165. if err != nil {
  166. _ = tx.Rollback()
  167. return
  168. }
  169. _ = tx.Commit()
  170. }()
  171. // 变更分类信息
  172. err = tx.Select(cols).Updates(m).Error
  173. if err != nil {
  174. return
  175. }
  176. // 更改子分类的完整的路径
  177. if oldClassifyNamePath != `` && newClassifyNamePath != `` {
  178. sql := `UPDATE edb_public_classify SET edb_public_classify_name_path = REPLACE(edb_public_classify_name_path,?,?) WHERE edb_public_classify_id_path LIKE ?`
  179. err = tx.Exec(sql, oldClassifyNamePath, newClassifyNamePath, fmt.Sprint(m.EdbPublicClassifyIdPath+`,%`)).Error
  180. if err != nil {
  181. return
  182. }
  183. }
  184. return
  185. }
  186. // GetEdbClassifyMaxSort 获取分类下最大的排序数
  187. func (m EdbPublicClassify) GetEdbClassifyMaxSort(parentId int, classifyType uint8) (sort int, err error) {
  188. sql := `SELECT COALESCE(Max(sort), 0) AS sort FROM edb_public_classify WHERE parent_id=? AND classify_type=? `
  189. err = global.DmSQL["data"].Raw(sql, parentId, classifyType).Scan(&sort).Error
  190. return
  191. }
  192. // GetEdbInfoCountByClassifyIdList
  193. // @Description: 根据公共分类id集合获取名下指标数量
  194. // @author: Roc
  195. // @receiver m
  196. // @datetime 2024-12-05 09:59:56
  197. // @param classifyIdList []int
  198. // @return count int
  199. // @return err error
  200. func (m EdbPublicClassify) GetEdbInfoCountByClassifyIdList(classifyIdList []int) (count int, err error) {
  201. if len(classifyIdList) <= 0 {
  202. return
  203. }
  204. sql := `SELECT COUNT(1) total FROM edb_info WHERE edb_public_classify_id IN (?) `
  205. err = global.DmSQL["data"].Raw(sql, classifyIdList).Scan(&count).Error
  206. return
  207. }
  208. func (m *EdbPublicClassify) GetAllChildClassifyIdList() (items []int, err error) {
  209. sql := ` SELECT edb_public_classify_id FROM edb_public_classify WHERE edb_public_classify_id_path LIKE ? ORDER BY create_time DESC `
  210. err = global.DmSQL["data"].Raw(sql, fmt.Sprint(m.EdbPublicClassifyIdPath+`,%`)).Scan(&items).Error
  211. return
  212. }
  213. // BatchesDel
  214. // @Description: 根据分类id批量删除
  215. // @author: Roc
  216. // @receiver m
  217. // @datetime 2024-12-05 11:13:06
  218. // @param classifyIdList []int
  219. // @return err error
  220. func (m *EdbPublicClassify) BatchesDel(classifyIdList []int) (err error) {
  221. sql := ` DELETE FROM edb_public_classify WHERE edb_public_classify_id IN (?) `
  222. err = global.DmSQL["data"].Exec(sql, classifyIdList).Error
  223. return
  224. }