sandbox_classify.go 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. package sandbox
  2. import (
  3. "eta_gn/eta_api/global"
  4. "fmt"
  5. "time"
  6. )
  7. //type SandboxClassify struct {
  8. // SandboxClassifyId int `orm:"column(sandbox_classify_id);pk"`
  9. // SandboxClassifyName string `description:"分类名称"`
  10. // ParentId int `description:"父级id"`
  11. // HasData int `description:"是否含有指标数据"`
  12. // CreateTime time.Time `description:"创建时间"`
  13. // ModifyTime time.Time `description:"修改时间"`
  14. // SysUserId int `description:"创建人id"`
  15. // SysUserRealName string `description:"创建人姓名"`
  16. // Level int `description:"层级"`
  17. // ChartPermissionId int `description:"品种id"`
  18. // ChartPermissionName string `description:"品种名称"`
  19. // Sort int `description:"排序字段,越小越靠前,默认值:10"`
  20. //}
  21. type SandboxClassify struct {
  22. SandboxClassifyId int `gorm:"primaryKey;column:sandbox_classify_id;type:int(11);not null"`
  23. SandboxClassifyName string `gorm:"column:sandbox_classify_name;type:varchar(255);not null;default:''"` // 分类名称
  24. ParentId int `gorm:"column:parent_id;type:int(11);not null;default:0"` // 父级id
  25. HasData int `gorm:"column:has_data;type:tinyint(4);default:0"` // 是否存在指标数据:1有,2:无
  26. CreateTime time.Time `gorm:"column:create_time;type:datetime"` // 创建时间
  27. ModifyTime time.Time `gorm:"column:modify_time;type:datetime"` // 修改时间
  28. SysUserId int `gorm:"column:sys_user_id;type:int(11)"` // 创建人id
  29. SysUserRealName string `gorm:"column:sys_user_real_name;type:varchar(50)"` // 创建人姓名
  30. Level int `gorm:"column:level;type:int(11);default:0"` // 层级
  31. Sort int `gorm:"column:sort;type:int(9) unsigned;default:10"` // 排序字段,越小越靠前,默认值:10
  32. ChartPermissionId int `gorm:"column:chart_permission_id;type:int(9) unsigned;not null;default:0"` // 品种id
  33. ChartPermissionName string `gorm:"column:chart_permission_name;type:varchar(32);not null;default:''"` // 品种名称(冗余字段,避免列表页查询时再去关联表查询)
  34. }
  35. func AddSandboxClassify(item *SandboxClassify) (lastId int64, err error) {
  36. //o := orm.NewOrmUsingDB("data")
  37. //lastId, err = o.Insert(item)
  38. err = global.DmSQL["data"].Create(item).Error
  39. return
  40. }
  41. // GetSandboxClassifyByParentId
  42. func GetSandboxClassifyByParentId(parentId int) (items []*SandboxClassifyItems, err error) {
  43. //o := orm.NewOrmUsingDB("data")
  44. sql := ` SELECT * FROM sandbox_classify WHERE parent_id=? order by sort asc,sandbox_classify_id asc`
  45. //_, err = o.Raw(sql, parentId).QueryRows(&items)
  46. err = global.DmSQL["data"].Raw(sql, parentId).Find(&items).Error
  47. return
  48. }
  49. // GetSandboxClassifyAll
  50. func GetSandboxClassifyAll() (items []*SandboxClassifyItems, err error) {
  51. //o := orm.NewOrmUsingDB("data")
  52. sql := ` SELECT * FROM sandbox_classify WHERE parent_id<>0 order by sort asc,sandbox_classify_id asc`
  53. //_, err = o.Raw(sql).QueryRows(&items)
  54. err = global.DmSQL["data"].Raw(sql).Find(&items).Error
  55. return
  56. }
  57. //type SandboxClassifyItems struct {
  58. // SandboxClassifyId int `orm:"column(sandbox_classify_id);pk"`
  59. // SandboxClassifyName string `description:"分类名称"`
  60. // ParentId int `description:"父级id"`
  61. // HasData int `description:"是否含有指标数据"`
  62. // CreateTime time.Time `description:"创建时间"`
  63. // ModifyTime time.Time `description:"修改时间"`
  64. // SysUserId int `description:"创建人id"`
  65. // SysUserName string `description:"创建人姓名"`
  66. // Level int `description:"层级"`
  67. // Sort int `description:"排序字段,越小越靠前,默认值:10"`
  68. // SandboxId int `description:"沙盘id"`
  69. // ChartPermissionId int `description:"品种id"`
  70. // ChartPermissionName string `description:"品种名称"`
  71. // Children []*SandboxClassifyItems
  72. //}
  73. type SandboxClassifyItems struct {
  74. SandboxClassifyId int `gorm:"primaryKey;column:sandbox_classify_id;type:int(11);not null"`
  75. SandboxClassifyName string `gorm:"column:sandbox_classify_name;type:varchar(255);not null;default:''"` // 分类名称
  76. ParentId int `gorm:"column:parent_id;type:int(11);not null;default:0"` // 父级id
  77. HasData int `gorm:"column:has_data;type:tinyint(4);default:0"` // 是否存在指标数据:1有,2:无
  78. CreateTime time.Time `gorm:"column:create_time;type:datetime"` // 创建时间
  79. ModifyTime time.Time `gorm:"column:modify_time;type:datetime"` // 修改时间
  80. SysUserId int `gorm:"column:sys_user_id;type:int(11)"` // 创建人id
  81. SysUserRealName string `gorm:"column:sys_user_real_name;type:varchar(50)"` // 创建人姓名
  82. Level int `gorm:"column:level;type:int(11);default:0"` // 层级
  83. Sort int `gorm:"column:sort;type:int(9) unsigned;default:10"` // 排序字段,越小越靠前,默认值:10
  84. ChartPermissionId int `gorm:"column:chart_permission_id;type:int(9) unsigned;not null;default:0"` // 品种id
  85. ChartPermissionName string `gorm:"column:chart_permission_name;type:varchar(32);not null;default:''"` // 品种名称(冗余字段,避免列表页查询时再去关联表查询)
  86. Children []*SandboxClassifyItems `gorm:"-"`
  87. SandboxId int `gorm:"column:sandbox_id" description:"沙盘id"`
  88. }
  89. type SandboxClassifyListResp struct {
  90. AllNodes []*SandboxClassifyItems
  91. }
  92. type AddSandboxClassifyReq struct {
  93. SandboxClassifyName string `description:"分类名称"`
  94. ParentId int `description:"父级id,第一级传0"`
  95. Level int `description:"层级,第一级传0,其余传上一级的层级"`
  96. ChartPermissionId int `description:"品种id"`
  97. ChartPermissionName string `description:"品种名称"`
  98. }
  99. func GetSandboxClassifyCount(sandboxClassifyName string, parentId int) (count int, err error) {
  100. //o := orm.NewOrmUsingDB("data")
  101. sql := `SELECT COUNT(1) AS count FROM sandbox_classify WHERE parent_id=? AND sandbox_classify_name=? `
  102. //err = o.Raw(sql, parentId, sandboxClassifyName).QueryRow(&count)
  103. err = global.DmSQL["data"].Raw(sql, parentId, sandboxClassifyName).Scan(&count).Error
  104. return
  105. }
  106. // GetSandboxClassifyMaxSort 获取沙盘分类下最大的排序数
  107. func GetSandboxClassifyMaxSort(parentId int) (sort int, err error) {
  108. //o := orm.NewOrmUsingDB("data")
  109. sql := `SELECT Max(sort) AS sort FROM sandbox_classify WHERE parent_id=? `
  110. //err = o.Raw(sql, parentId).QueryRow(&sort)
  111. err = global.DmSQL["data"].Raw(sql, parentId).Scan(&sort).Error
  112. return
  113. }
  114. type EditSandboxClassifyReq struct {
  115. SandboxClassifyName string `description:"分类名称"`
  116. SandboxClassifyId int `description:"分类id"`
  117. ChartPermissionId int `description:"品种id"`
  118. ChartPermissionName string `description:"品种名称"`
  119. }
  120. func GetSandboxClassifyById(classifyId int) (item *SandboxClassify, err error) {
  121. //o := orm.NewOrmUsingDB("data")
  122. sql := `SELECT * FROM sandbox_classify WHERE sandbox_classify_id=? `
  123. //err = o.Raw(sql, classifyId).QueryRow(&item)
  124. err = global.DmSQL["data"].Raw(sql, classifyId).First(&item).Error
  125. return
  126. }
  127. func EditSandboxClassify(classifyId, ChartPermissionId int, sandboxClassifyName, ChartPermissionName string) (err error) {
  128. //o := orm.NewOrmUsingDB("data")
  129. sql := `UPDATE sandbox_classify SET sandbox_classify_name=?,chart_permission_id = ?, chart_permission_name = ?, modify_time=NOW() WHERE sandbox_classify_id=? `
  130. //_, err = o.Raw(sql, sandboxClassifyName, ChartPermissionId, ChartPermissionName, classifyId).Exec()
  131. err = global.DmSQL["data"].Exec(sql, sandboxClassifyName, ChartPermissionId, ChartPermissionName, classifyId).Error
  132. return
  133. }
  134. type SandboxClassifyDeleteCheckReq struct {
  135. SandboxClassifyId int `description:"分类id"`
  136. }
  137. func GetSandboxInfoCountByClassifyId(classifyId int) (count int, err error) {
  138. //o := orm.NewOrmUsingDB("data")
  139. sql := ` SELECT COUNT(1) AS count FROM sandbox AS a
  140. WHERE a.sandbox_classify_id IN(
  141. SELECT t.sandbox_classify_id FROM
  142. (
  143. SELECT rd.*
  144. FROM (SELECT * FROM sandbox_classify WHERE parent_id IS NOT NULL) rd,
  145. (SELECT @pid := ?) pd
  146. WHERE FIND_IN_SET(parent_id, @pid) > 0
  147. AND @pid := CONCAT(@pid, ',', sandbox_classify_id)
  148. UNION SELECT * FROM sandbox_classify WHERE sandbox_classify_id = @pid
  149. )AS t
  150. ) AND a.is_delete = 0 `
  151. //err = o.Raw(sql, classifyId).QueryRow(&count)
  152. err = global.DmSQL["data"].Raw(sql, classifyId).Scan(&count).Error
  153. return
  154. }
  155. type SandboxClassifyDeleteCheckResp struct {
  156. DeleteStatus int `description:"检测状态:0:默认值,如果为0,继续走其他校验,1:该分类下关联图表不可删除,2:确认删除当前目录及包含的子目录吗"`
  157. TipsMsg string `description:"提示信息"`
  158. }
  159. type DeleteSandboxClassifyReq struct {
  160. SandboxClassifyId int `description:"分类id"`
  161. SandboxId int `description:"指标id"`
  162. }
  163. func DeleteSandboxClassify(classifyId int) (err error) {
  164. //o := orm.NewOrmUsingDB("data")
  165. sql := ` DELETE FROM sandbox_classify
  166. WHERE sandbox_classify_id IN(
  167. SELECT t.sandbox_classify_id FROM
  168. (
  169. SELECT rd.*
  170. FROM (SELECT * FROM sandbox_classify WHERE parent_id IS NOT NULL) rd,
  171. (SELECT @pid := ?) pd
  172. WHERE FIND_IN_SET(parent_id, @pid) > 0
  173. AND @pid := CONCAT(@pid, ',', sandbox_classify_id)
  174. UNION SELECT * FROM sandbox_classify WHERE sandbox_classify_id = @pid
  175. )AS t
  176. ) `
  177. //_, err = o.Raw(sql, classifyId).Exec()
  178. err = global.DmSQL["data"].Exec(sql, classifyId).Error
  179. return
  180. }
  181. // MoveSandboxClassifyReq 移动沙盘分类请求参数
  182. type MoveSandboxClassifyReq struct {
  183. ClassifyId int `description:"分类id"`
  184. SandboxId int `description:"沙盘ID"`
  185. ParentClassifyId int `description:"父级分类id 移动沙盘时为目标分类id"`
  186. PrevId int `description:"上一个兄弟节点分类id"`
  187. NextId int `description:"下一个兄弟节点分类id"`
  188. PrevType int `description:"上一个兄弟节点类型 1分类 2沙盘 "`
  189. NextType int `description:"上一个兄弟节点类型 1分类 2沙盘 "`
  190. }
  191. // UpdateSandboxClassifySortByParentId 根据沙盘父类id更新排序
  192. func UpdateSandboxClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string) (err error) {
  193. //o := orm.NewOrmUsingDB("data")
  194. sql := ` update sandbox_classify set sort = ` + updateSort + ` WHERE parent_id=? and sort > ? `
  195. if classifyId > 0 {
  196. sql += ` or ( sandbox_classify_id > ` + fmt.Sprint(classifyId) + ` and sort= ` + fmt.Sprint(nowSort) + `)`
  197. }
  198. //_, err = o.Raw(sql, parentId, nowSort).Exec()
  199. err = global.DmSQL["data"].Exec(sql, parentId, nowSort).Error
  200. return
  201. }
  202. // GetFirstSandboxClassifyByParentId 获取当前父级沙盘分类下的排序第一条的数据
  203. func GetFirstSandboxClassifyByParentId(parentId int) (item *SandboxClassify, err error) {
  204. //o := orm.NewOrmUsingDB("data")
  205. sql := ` SELECT * FROM sandbox_classify WHERE parent_id=? order by sort asc,sandbox_classify_id asc limit 1`
  206. //err = o.Raw(sql, parentId).QueryRow(&item)
  207. err = global.DmSQL["data"].Raw(sql, parentId).First(&item).Error
  208. return
  209. }
  210. // Update 更新沙盘分类基础信息
  211. func (sandboxClassify *SandboxClassify) Update(cols []string) (err error) {
  212. //o := orm.NewOrmUsingDB("data")
  213. //_, err = o.Update(sandboxClassify, cols...)
  214. err = global.DmSQL["data"].Select(cols).Updates(sandboxClassify).Error
  215. return
  216. }
  217. // GetSandboxClassifyAndInfoByParentId
  218. func GetSandboxClassifyAndInfoByParentId(parentId int) (items []*SandboxClassifyItems, err error) {
  219. //o := orm.NewOrmUsingDB("data")
  220. sql := ` SELECT
  221. 0 AS sandbox_id,
  222. sandbox_classify_id,
  223. sandbox_classify_name,
  224. parent_id,
  225. create_time,
  226. modify_time,
  227. sys_user_id,
  228. sys_user_real_name AS sys_user_name,
  229. sort,
  230. level,
  231. chart_permission_id,
  232. chart_permission_name,
  233. 0 AS is_delete
  234. FROM
  235. sandbox_classify
  236. WHERE
  237. parent_id = ? UNION ALL
  238. SELECT
  239. sandbox_id,
  240. sandbox_classify_id,
  241. name AS sandbox_classify_name,
  242. 0 AS parent_id,
  243. create_time,
  244. modify_time,
  245. sys_user_id,
  246. sys_user_name,
  247. sort,
  248. 0 AS level,
  249. chart_permission_id,
  250. chart_permission_name,
  251. is_delete
  252. FROM
  253. sandbox
  254. WHERE
  255. sandbox_classify_id = ? AND is_delete = 0
  256. ORDER BY
  257. sort ASC,
  258. sandbox_classify_id ASC`
  259. //_, err = o.Raw(sql, parentId, parentId).QueryRows(&items)
  260. err = global.DmSQL["data"].Raw(sql, parentId, parentId).Find(&items).Error
  261. return
  262. }
  263. type SandboxLinkCheckReq struct {
  264. EdbInfoIdList []int `description:"指标id列表"`
  265. ChartInfoIdList []int `description:"图库id列表"`
  266. ReportIdList []int `description:"报告id列表"`
  267. }
  268. type SandboxLinkCheckItem struct {
  269. Id int `description:"id"`
  270. Name string `description:"名称"`
  271. UniqueCode string `description:"唯一编码"`
  272. ClassifyId int `description:"分类id"`
  273. }
  274. type SandboxLinkCheckResp struct {
  275. EdbInfoIdList []*SandboxLinkCheckItem `description:"指标id列表"`
  276. ChartInfoIdList []*SandboxLinkCheckItem `description:"图库id列表"`
  277. ReportIdList []*SandboxLinkCheckItem `description:"报告id列表"`
  278. }
  279. // GetSandboxClassifySubcategories 获取所有子级分类id
  280. func GetSandboxClassifySubcategories(classifyId int) (Ids string, err error) {
  281. //o := orm.NewOrmUsingDB("data")
  282. sql := `SELECT GROUP_CONCAT(sandbox_classify_id) AS ids
  283. FROM (
  284. SELECT @pv := ? AS sandbox_classify_id
  285. UNION ALL
  286. SELECT sc.sandbox_classify_id
  287. FROM sandbox_classify sc
  288. JOIN (SELECT @pv := ?) initial
  289. WHERE sc.parent_id = @pv
  290. ) subcategories; `
  291. //err = o.Raw(sql, classifyId, classifyId).QueryRow(&Ids)
  292. err = global.DmSQL["data"].Raw(sql, classifyId, classifyId).First(&Ids).Error
  293. return
  294. }
  295. // UpdateSandboxClassifyChartPermissionById 根据沙盘id更新品种
  296. func UpdateSandboxClassifyChartPermissionById(ChartPermissionId int, ChartPermissionName, Ids string) (err error) {
  297. //o := orm.NewOrmUsingDB("data")
  298. sql := ` UPDATE sandbox_classify SET chart_permission_id = ?, chart_permission_name = ? WHERE sandbox_classify_id IN ( ` + Ids + ` ) `
  299. //_, err = o.Raw(sql, ChartPermissionId, ChartPermissionName).Exec()
  300. err = global.DmSQL["data"].Exec(sql, ChartPermissionId, ChartPermissionName).Error
  301. return
  302. }
  303. // GetAllSandboxClassify
  304. func GetAllSandboxClassify() (items []*SandboxClassifyItems, err error) {
  305. //o := orm.NewOrmUsingDB("data")
  306. sql := ` SELECT * FROM sandbox_classify `
  307. //_, err = o.Raw(sql).QueryRows(&items)
  308. err = global.DmSQL["data"].Raw(sql).Find(&items).Error
  309. return
  310. }