material_classify.go 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. package material
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "time"
  6. )
  7. type MaterialClassify struct {
  8. ClassifyId int `orm:"column(classify_id);pk"`
  9. ClassifyName string `description:"分类名称"`
  10. ParentId int `description:"父级id"`
  11. CreateTime time.Time `description:"创建时间"`
  12. ModifyTime time.Time `description:"修改时间"`
  13. SysUserId int `description:"创建人id"`
  14. SysUserRealName string `description:"创建人姓名"`
  15. Level int `description:"层级"`
  16. Sort int `description:"排序字段,越小越靠前,默认值:10"`
  17. }
  18. func AddMaterialClassify(item *MaterialClassify) (lastId int64, err error) {
  19. o := orm.NewOrmUsingDB("rddp")
  20. lastId, err = o.Insert(item)
  21. return
  22. }
  23. // GetMaterialClassifyByParentId
  24. func GetMaterialClassifyByParentId(parentId int) (items []*MaterialClassifyItems, err error) {
  25. o := orm.NewOrmUsingDB("rddp")
  26. sql := ` SELECT * FROM material_classify WHERE parent_id=? order by sort asc,classify_id asc`
  27. _, err = o.Raw(sql, parentId).QueryRows(&items)
  28. return
  29. }
  30. // GetMaterialClassifyAll
  31. func GetMaterialClassifyAll() (items []*MaterialClassifyItems, err error) {
  32. o := orm.NewOrmUsingDB("rddp")
  33. sql := ` SELECT * FROM material_classify WHERE parent_id<>0 order by sort asc,classify_id asc`
  34. _, err = o.Raw(sql).QueryRows(&items)
  35. return
  36. }
  37. type MaterialClassifyItems struct {
  38. ClassifyId int `orm:"column(classify_id);pk"`
  39. ClassifyName string `description:"分类名称"`
  40. ParentId int `description:"父级id"`
  41. CreateTime time.Time `description:"创建时间"`
  42. ModifyTime time.Time `description:"修改时间"`
  43. SysUserId int `description:"创建人id"`
  44. SysUserName string `description:"创建人姓名"`
  45. Level int `description:"层级"`
  46. Sort int `description:"排序字段,越小越靠前,默认值:10"`
  47. Children []*MaterialClassifyItems
  48. }
  49. type MaterialClassifyListResp struct {
  50. AllNodes []*MaterialClassifyItems
  51. }
  52. type AddMaterialClassifyReq struct {
  53. ClassifyName string `description:"分类名称"`
  54. ParentId int `description:"父级id,第一级传0"`
  55. Level int `description:"层级,第一级传0,其余传上一级的层级"`
  56. ChartPermissionId int `description:"品种id"`
  57. ChartPermissionName string `description:"品种名称"`
  58. }
  59. func GetMaterialClassifyCount(ClassifyName string, parentId int) (count int, err error) {
  60. o := orm.NewOrmUsingDB("rddp")
  61. sql := `SELECT COUNT(1) AS count FROM material_classify WHERE parent_id=? AND classify_name=? `
  62. err = o.Raw(sql, parentId, ClassifyName).QueryRow(&count)
  63. return
  64. }
  65. // GetMaterialClassifyMaxSort 获取沙盘分类下最大的排序数
  66. func GetMaterialClassifyMaxSort(parentId int) (sort int, err error) {
  67. o := orm.NewOrmUsingDB("rddp")
  68. sql := `SELECT Max(sort) AS sort FROM material_classify WHERE parent_id=? `
  69. err = o.Raw(sql, parentId).QueryRow(&sort)
  70. return
  71. }
  72. type EditMaterialClassifyReq struct {
  73. ClassifyName string `description:"分类名称"`
  74. ClassifyId int `description:"分类id"`
  75. ChartPermissionId int `description:"品种id"`
  76. ChartPermissionName string `description:"品种名称"`
  77. }
  78. func GetMaterialClassifyById(classifyId int) (item *MaterialClassify, err error) {
  79. o := orm.NewOrmUsingDB("rddp")
  80. sql := `SELECT * FROM material_classify WHERE classify_id=? `
  81. err = o.Raw(sql, classifyId).QueryRow(&item)
  82. return
  83. }
  84. func EditMaterialClassify(classifyId, ChartPermissionId int, ClassifyName, ChartPermissionName string) (err error) {
  85. o := orm.NewOrmUsingDB("rddp")
  86. sql := `UPDATE material_classify SET classify_name=?,chart_permission_id = ?, chart_permission_name = ?, modify_time=NOW() WHERE classify_id=? `
  87. _, err = o.Raw(sql, ClassifyName, ChartPermissionId, ChartPermissionName, classifyId).Exec()
  88. return
  89. }
  90. type MaterialClassifyDeleteCheckReq struct {
  91. ClassifyId int `description:"分类id"`
  92. }
  93. func GetMaterialInfoCountByClassifyId(classifyId int) (count int, err error) {
  94. o := orm.NewOrmUsingDB("rddp")
  95. sql := ` SELECT COUNT(1) AS count FROM sandbox AS a
  96. WHERE a.classify_id IN(
  97. SELECT t.classify_id FROM
  98. (
  99. SELECT rd.*
  100. FROM (SELECT * FROM material_classify WHERE parent_id IS NOT NULL) rd,
  101. (SELECT @pid := ?) pd
  102. WHERE FIND_IN_SET(parent_id, @pid) > 0
  103. AND @pid := CONCAT(@pid, ',', classify_id)
  104. UNION SELECT * FROM material_classify WHERE classify_id = @pid
  105. )AS t
  106. ) AND a.is_delete = 0 `
  107. err = o.Raw(sql, classifyId).QueryRow(&count)
  108. return
  109. }
  110. type MaterialClassifyDeleteCheckResp struct {
  111. DeleteStatus int `description:"检测状态:0:默认值,如果为0,继续走其他校验,1:该分类下关联图表不可删除,2:确认删除当前目录及包含的子目录吗"`
  112. TipsMsg string `description:"提示信息"`
  113. }
  114. type DeleteMaterialClassifyReq struct {
  115. ClassifyId int `description:"分类id"`
  116. MaterialId int `description:"素材id"`
  117. }
  118. func DeleteMaterialClassify(classifyId int) (err error) {
  119. o := orm.NewOrmUsingDB("rddp")
  120. sql := ` DELETE FROM material_classify
  121. WHERE classify_id IN(
  122. SELECT t.classify_id FROM
  123. (
  124. SELECT rd.*
  125. FROM (SELECT * FROM material_classify WHERE parent_id IS NOT NULL) rd,
  126. (SELECT @pid := ?) pd
  127. WHERE FIND_IN_SET(parent_id, @pid) > 0
  128. AND @pid := CONCAT(@pid, ',', classify_id)
  129. UNION SELECT * FROM material_classify WHERE classify_id = @pid
  130. )AS t
  131. ) `
  132. _, err = o.Raw(sql, classifyId).Exec()
  133. return
  134. }
  135. // MoveMaterialClassifyReq 移动沙盘分类请求参数
  136. type MoveMaterialClassifyReq struct {
  137. ClassifyId int `description:"分类id"`
  138. MaterialId int `description:"沙盘ID"`
  139. ParentClassifyId int `description:"父级分类id 移动沙盘时为目标分类id"`
  140. PrevId int `description:"上一个兄弟节点分类id"`
  141. NextId int `description:"下一个兄弟节点分类id"`
  142. PrevType int `description:"上一个兄弟节点类型 1分类 2沙盘 "`
  143. NextType int `description:"上一个兄弟节点类型 1分类 2沙盘 "`
  144. }
  145. // UpdateMaterialClassifySortByParentId 根据沙盘父类id更新排序
  146. func UpdateMaterialClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string) (err error) {
  147. o := orm.NewOrmUsingDB("rddp")
  148. sql := ` update material_classify set sort = ` + updateSort + ` WHERE parent_id=? and sort > ? `
  149. if classifyId > 0 {
  150. sql += ` or ( classify_id > ` + fmt.Sprint(classifyId) + ` and sort= ` + fmt.Sprint(nowSort) + `)`
  151. }
  152. _, err = o.Raw(sql, parentId, nowSort).Exec()
  153. return
  154. }
  155. // GetFirstMaterialClassifyByParentId 获取当前父级沙盘分类下的排序第一条的数据
  156. func GetFirstMaterialClassifyByParentId(parentId int) (item *MaterialClassify, err error) {
  157. o := orm.NewOrmUsingDB("rddp")
  158. sql := ` SELECT * FROM material_classify WHERE parent_id=? order by sort asc,classify_id asc limit 1`
  159. err = o.Raw(sql, parentId).QueryRow(&item)
  160. return
  161. }
  162. // Update 更新沙盘分类基础信息
  163. func (MaterialClassify *MaterialClassify) Update(cols []string) (err error) {
  164. o := orm.NewOrmUsingDB("rddp")
  165. _, err = o.Update(MaterialClassify, cols...)
  166. return
  167. }
  168. // GetMaterialClassifyAndInfoByParentId
  169. func GetMaterialClassifyAndInfoByParentId(parentId int) (items []*MaterialClassifyItems, err error) {
  170. o := orm.NewOrmUsingDB("rddp")
  171. sql := ` SELECT
  172. 0 AS sandbox_id,
  173. classify_id,
  174. classify_name,
  175. parent_id,
  176. create_time,
  177. modify_time,
  178. sys_user_id,
  179. sys_user_real_name AS sys_user_name,
  180. sort,
  181. level,
  182. chart_permission_id,
  183. chart_permission_name,
  184. 0 AS is_delete
  185. FROM
  186. material_classify
  187. WHERE
  188. parent_id = ? UNION ALL
  189. SELECT
  190. sandbox_id,
  191. classify_id,
  192. name AS classify_name,
  193. 0 AS parent_id,
  194. create_time,
  195. modify_time,
  196. sys_user_id,
  197. sys_user_name,
  198. sort,
  199. 0 AS level,
  200. chart_permission_id,
  201. chart_permission_name,
  202. is_delete
  203. FROM
  204. sandbox
  205. WHERE
  206. classify_id = ? AND is_delete = 0
  207. ORDER BY
  208. sort ASC,
  209. classify_id ASC`
  210. _, err = o.Raw(sql, parentId, parentId).QueryRows(&items)
  211. return
  212. }
  213. type SandboxLinkCheckReq struct {
  214. EdbInfoIdList []int `description:"指标id列表"`
  215. ChartInfoIdList []int `description:"图库id列表"`
  216. ReportIdList []int `description:"报告id列表"`
  217. }
  218. type SandboxLinkCheckItem struct {
  219. Id int `description:"id"`
  220. Name string `description:"名称"`
  221. UniqueCode string `description:"唯一编码"`
  222. ClassifyId int `description:"分类id"`
  223. }
  224. type SandboxLinkCheckResp struct {
  225. EdbInfoIdList []*SandboxLinkCheckItem `description:"指标id列表"`
  226. ChartInfoIdList []*SandboxLinkCheckItem `description:"图库id列表"`
  227. ReportIdList []*SandboxLinkCheckItem `description:"报告id列表"`
  228. }
  229. // 获取所有子级分类id
  230. func GetMaterialClassifySubcategories(classifyId int) (Ids string, err error) {
  231. o := orm.NewOrmUsingDB("rddp")
  232. sql := `SELECT GROUP_CONCAT(classify_id) AS ids
  233. FROM (
  234. SELECT @pv := ? AS classify_id
  235. UNION ALL
  236. SELECT sc.classify_id
  237. FROM material_classify sc
  238. JOIN (SELECT @pv := ?) initial
  239. WHERE sc.parent_id = @pv
  240. ) subcategories; `
  241. err = o.Raw(sql, classifyId, classifyId).QueryRow(&Ids)
  242. return
  243. }
  244. // UpdateMaterialClassifyChartPermissionById 根据沙盘id更新品种
  245. func UpdateMaterialClassifyChartPermissionById(ChartPermissionId int, ChartPermissionName, Ids string) (err error) {
  246. o := orm.NewOrmUsingDB("rddp")
  247. sql := ` UPDATE material_classify SET chart_permission_id = ?, chart_permission_name = ? WHERE classify_id IN ( ` + Ids + ` ) `
  248. _, err = o.Raw(sql, ChartPermissionId, ChartPermissionName).Exec()
  249. return
  250. }