base_from_baiinfo_classify.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. package data_manage
  2. import (
  3. "database/sql"
  4. "eta/eta_api/global"
  5. "eta/eta_api/utils"
  6. "fmt"
  7. "time"
  8. )
  9. // BaseFromBaiinfoClassify SMM原始数据分类表
  10. type BaseFromBaiinfoClassify struct {
  11. ClassifyId int `gorm:"column:classify_id;primaryKey"`
  12. //ClassifyId int `orm:"column(classify_id);pk"`
  13. ClassifyName string `description:"分类名称"`
  14. ParentId int `description:"父级id"`
  15. SysUserId int `description:"创建人id"`
  16. SysUserRealName string `description:"创建人姓名"`
  17. Level int `description:"层级"`
  18. Sort int `description:"排序字段,越小越靠前,默认值:10"`
  19. ModifyTime time.Time `description:"修改时间"`
  20. CreateTime time.Time `description:"创建时间"`
  21. ClassifyNameEn string `description:"英文分类名称"`
  22. }
  23. // AddBaseFromBaiinfoClassify 添加SMM原始数据分类
  24. func AddBaseFromBaiinfoClassify(item *BaseFromBaiinfoClassify) (lastId int64, err error) {
  25. err = global.DbMap[utils.DbNameIndex].Create(item).Error
  26. lastId = int64(item.ClassifyId)
  27. return
  28. }
  29. // GetBaseFromBaiinfoClassifyCount 获取分类名称的个数
  30. func GetBaseFromBaiinfoClassifyCount(classifyName string, parentId int) (count int, err error) {
  31. sqlStr := `SELECT COUNT(1) AS count FROM base_from_baiinfo_classify WHERE classify_name=? AND parent_id=? `
  32. var totalNull sql.NullInt64
  33. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, classifyName, parentId).Scan(&totalNull).Error
  34. if !totalNull.Valid {
  35. count = 0
  36. } else {
  37. count = int(totalNull.Int64)
  38. }
  39. return
  40. }
  41. // GetBaseFromBaiinfoClassifyEnCount
  42. // @Description: 获取英文分类名称的个数
  43. // @author: Roc
  44. // @datetime 2024-04-16 16:54:05
  45. // @param classifyNameEn string
  46. // @param parentId int
  47. // @return count int
  48. // @return err error
  49. func GetBaseFromBaiinfoClassifyEnCount(classifyNameEn string, parentId int) (count int, err error) {
  50. sqlStr := `SELECT COUNT(1) AS count FROM base_from_baiinfo_classify WHERE classify_name_en = ? AND parent_id=? `
  51. var totalNull sql.NullInt64
  52. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, classifyNameEn, parentId).Scan(&totalNull).Error
  53. if !totalNull.Valid {
  54. count = 0
  55. } else {
  56. count = int(totalNull.Int64)
  57. }
  58. return
  59. }
  60. // GetBaseFromBaiinfoClassifyById 通过分类id的获取分类信息
  61. func GetBaseFromBaiinfoClassifyById(classifyId int) (item *BaseFromBaiinfoClassify, err error) {
  62. sql := `SELECT * FROM base_from_baiinfo_classify WHERE classify_id=? `
  63. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).First(&item).Error
  64. return
  65. }
  66. // EditBaseFromBaiinfoClassify 修改SMM原始数据分类
  67. func EditBaseFromBaiinfoClassify(classifyId int, classifyName string) (err error) {
  68. sql := `UPDATE base_from_baiinfo_classify SET classify_name=?,modify_time=NOW() WHERE classify_id=? `
  69. err = global.DbMap[utils.DbNameIndex].Exec(sql, classifyName, classifyId).Error
  70. return
  71. }
  72. // EditBaseFromBaiinfoClassifyEn
  73. // @Description: 修改SMM原始数据英文分类
  74. // @author: Roc
  75. // @datetime 2024-04-16 16:54:39
  76. // @param classifyId int
  77. // @param classifyNameEn string
  78. // @return err error
  79. func EditBaseFromBaiinfoClassifyEn(classifyId int, classifyNameEn string) (err error) {
  80. sql := `UPDATE base_from_baiinfo_classify SET classify_name_en = ?,modify_time=NOW() WHERE classify_id=? `
  81. err = global.DbMap[utils.DbNameIndex].Exec(sql, classifyNameEn, classifyId).Error
  82. return
  83. }
  84. // UpdateBaseFromBaiinfoClassifySort 修改SMM原始数据分类的排序
  85. func UpdateBaseFromBaiinfoClassifySort(classifyId int) (err error) {
  86. sql := `UPDATE base_from_baiinfo_classify SET sort=classify_id, modify_time=NOW() WHERE classify_id=? `
  87. err = global.DbMap[utils.DbNameIndex].Exec(sql, classifyId).Error
  88. return
  89. }
  90. type BaseFromBaiinfoClassifyItems struct {
  91. ClassifyId int `description:"分类ID"`
  92. BaseFromBaiinfoIndexId int `description:"指标类型ID"`
  93. BaseFromBaiinfoIndexCode string `description:"指标唯一编码"`
  94. ClassifyName string `description:"分类名称"`
  95. ClassifyNameEn string `description:"英文分类名称"`
  96. ParentId int `description:"父级id"`
  97. Level int `description:"层级"`
  98. Sort int `description:"排序字段,越小越靠前,默认值:10"`
  99. //UniqueCode string `description:"唯一编码"`
  100. //ModifyTime time.Time `description:"修改时间"`
  101. //CreateTime time.Time `description:"创建时间"`
  102. Children []*BaseFromBaiinfoClassifyItems `description:"下级" gorm:"-"`
  103. }
  104. type BaseFromBaiinfoClassifyNameItems struct {
  105. ClassifyId int `description:"分类ID"`
  106. ClassifyName string `description:"分类名称"`
  107. ParentId int `description:"父级id"`
  108. Children []*BaseFromBaiinfoClassifyNameItems `description:"下级"`
  109. }
  110. type BaseFromBaiinfoClassifyResp struct {
  111. List []*BaseFromBaiinfoClassifyItems
  112. }
  113. type BaseFromBaiinfoClassifyNameResp struct {
  114. List []*BaseFromBaiinfoClassifyNameItems
  115. }
  116. type BaseFromBaiinfoClassifyItemsButton struct {
  117. AddButton bool `description:"是否可添加"`
  118. OpButton bool `description:"是否可编辑"`
  119. DeleteButton bool `description:"是否可删除"`
  120. MoveButton bool `description:"是否可移动"`
  121. }
  122. // GetBaseFromBaiinfoClassifyByParentId 根据上级id获取当下的分类列表数据
  123. func GetBaseFromBaiinfoClassifyByParentId(parentId int) (items []*BaseFromBaiinfoClassifyItems, err error) {
  124. sql := ` SELECT * FROM base_from_baiinfo_classify WHERE parent_id=? order by sort asc,classify_id asc`
  125. err = global.DbMap[utils.DbNameIndex].Raw(sql, parentId).Find(&items).Error
  126. return
  127. }
  128. // GetAllBaseFromBaiinfoClassify 获取所有的分类列表数据
  129. func GetAllBaseFromBaiinfoClassify() (items []*BaseFromBaiinfoClassifyItems, err error) {
  130. sql := ` SELECT * FROM base_from_baiinfo_classify WHERE parent_id <> 0 order by sort asc,classify_id asc`
  131. err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&items).Error
  132. return
  133. }
  134. type DeleteBaseFromBaiinfoClassifyReq struct {
  135. ClassifyId int `description:"分类id"`
  136. EdbInfoId int `description:"指标id"`
  137. }
  138. type BaseFromBaiinfoClassifyListResp struct {
  139. AllNodes []*BaseFromBaiinfoClassifyItems
  140. CanOpClassify bool `description:"是否允许操作分类"`
  141. }
  142. type BaseFromBaiinfoClassifySimplify struct {
  143. ClassifyId int `description:"分类id"`
  144. ClassifyName string `description:"分类名称"`
  145. ParentId int
  146. }
  147. // GetFirstBaseFromBaiinfoClassify 获取当前分类下,且排序数相同 的排序第一条的数据
  148. func GetFirstBaseFromBaiinfoClassify() (item *BaseFromBaiinfoClassify, err error) {
  149. sql := ` SELECT * FROM base_from_baiinfo_classify order by sort asc,classify_id asc limit 1`
  150. err = global.DbMap[utils.DbNameIndex].Raw(sql).First(&item).Error
  151. return
  152. }
  153. // UpdateBaseFromBaiinfoClassifySortByClassifyId 根据分类id更新排序
  154. func UpdateBaseFromBaiinfoClassifySortByClassifyId(parentId, classifyId, nowSort int, updateSort string) (err error) {
  155. sql := ` update base_from_baiinfo_classify set sort = ` + updateSort + ` WHERE parent_id=? AND sort > ? `
  156. if classifyId > 0 {
  157. sql += ` or ( classify_id > ` + fmt.Sprint(classifyId) + ` and sort = ` + fmt.Sprint(nowSort) + `)`
  158. }
  159. err = global.DbMap[utils.DbNameIndex].Exec(sql, parentId, nowSort).Error
  160. return
  161. }
  162. // MoveUpBaiinfoIndexClassifyBySort 往上移动
  163. func MoveUpBaiinfoIndexClassifyBySort(parentId, nextSort, currentSort int) (err error) {
  164. sql := `update base_from_baiinfo_classify set sort = sort + 1 where parent_id=? and sort >= ? and sort< ?`
  165. err = global.DbMap[utils.DbNameIndex].Exec(sql, parentId, nextSort, currentSort).Error
  166. return
  167. }
  168. // MoveDownBaiinfoIndexClassifyBySort 往下移动
  169. func MoveDownBaiinfoIndexClassifyBySort(parentId, prevSort, currentSort int) (err error) {
  170. sql := `update base_from_baiinfo_classify set sort = sort - 1 where parent_id=? and sort <= ? and sort> ? `
  171. err = global.DbMap[utils.DbNameIndex].Exec(sql, parentId, prevSort, currentSort).Error
  172. return
  173. }
  174. // GetBaiinfoIndexClassifyMinSort 获取最小不等于0的排序
  175. func GetBaiinfoIndexClassifyMinSort(parentId int) (sort int, err error) {
  176. sqlStr := `select min(sort) from base_from_baiinfo_classify where parent_id=? and sort <> 0 `
  177. var totalNull sql.NullInt64
  178. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, parentId).Scan(&totalNull).Error
  179. if !totalNull.Valid {
  180. sort = 0
  181. } else {
  182. sort = int(totalNull.Int64)
  183. }
  184. return
  185. }
  186. // Update 更新分类基础信息
  187. func (BaseFromBaiinfoClassify *BaseFromBaiinfoClassify) Update(cols []string) (err error) {
  188. err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(BaseFromBaiinfoClassify).Error
  189. return
  190. }
  191. type AddBaiinfoClassifyResp struct {
  192. ClassifyId int
  193. }
  194. // DeleteBaiinfoClassifyByClassifyId 根据分类id删除对应的指标分类
  195. func DeleteBaiinfoClassifyByClassifyId(classifyIdList []int) (err error) {
  196. num := len(classifyIdList)
  197. if num <= 0 {
  198. return
  199. }
  200. //删除分类
  201. sql := `DELETE FROM base_from_baiinfo_classify WHERE classify_id IN (` + utils.GetOrmInReplace(num) + `) `
  202. err = global.DbMap[utils.DbNameIndex].Exec(sql, classifyIdList).Error
  203. return
  204. }
  205. // AddBaiinfoClassifyMulti 批量新增SMM类别
  206. func AddBaiinfoClassifyMulti(list []*BaseFromBaiinfoClassify) (err error) {
  207. err = global.DbMap[utils.DbNameIndex].CreateInBatches(list, len(list)).Error
  208. return
  209. }
  210. // InitBaiinfoClassifySort 初始化sort值
  211. func InitBaiinfoClassifySort() (err error) {
  212. sql := `UPDATE base_from_baiinfo_classify
  213. SET modify_time=NOW(), sort = classify_id`
  214. err = global.DbMap[utils.DbNameIndex].Exec(sql).Error
  215. return
  216. }
  217. // InitBaiinfoIndexClassifyId 历史数据的classifyId值
  218. func InitBaiinfoIndexClassifyId() (err error) {
  219. sql := `UPDATE base_from_baiinfo_index s
  220. LEFT JOIN (
  221. SELECT
  222. c1.classify_id,
  223. CONCAT( c2.classify_name, c1.classify_name ) AS type_name
  224. FROM
  225. base_from_baiinfo_classify c1
  226. LEFT JOIN base_from_baiinfo_classify c2 ON c1.parent_id = c2.classify_id
  227. ) AS t ON CONCAT( s.type_2, s.type_3 ) = t.type_name
  228. SET s.classify_id = t.classify_id, s.modify_time=NOW() where s.type_2 <>""`
  229. err = global.DbMap[utils.DbNameIndex].Exec(sql).Error
  230. return
  231. }