excel_classify.go 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715
  1. package excel
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/controllers"
  5. "eta/eta_api/models"
  6. "eta/eta_api/models/data_manage/excel"
  7. "eta/eta_api/models/data_manage/excel/request"
  8. response2 "eta/eta_api/models/data_manage/excel/response"
  9. "eta/eta_api/services/data/data_manage_permission"
  10. excel2 "eta/eta_api/services/data/excel"
  11. "eta/eta_api/utils"
  12. "fmt"
  13. "sort"
  14. "strconv"
  15. "time"
  16. )
  17. // ExcelClassifyController ETA表格分类
  18. type ExcelClassifyController struct {
  19. controllers.BaseAuthController
  20. }
  21. // List
  22. // @Title excel表格分类列表
  23. // @Description excel表格分类列表接口
  24. // @Param Source query int true "格来源,1:excel插件的表格,2:自定义表格,3:混合表格,默认:1"
  25. // @Param IsShowMe query bool true "是否只看我的,true、false"
  26. // @Success 200 {object} response.ExcelClassifyListResp
  27. // @router /excel_classify/list [get]
  28. func (this *ExcelClassifyController) List() {
  29. br := new(models.BaseResponse).Init()
  30. defer func() {
  31. this.Data["json"] = br
  32. this.ServeJSON()
  33. }()
  34. source, _ := this.GetInt("Source")
  35. if source <= 0 {
  36. source = utils.EXCEL_DEFAULT
  37. }
  38. //只看我的
  39. isShowMe, _ := this.GetBool("IsShowMe")
  40. showUserId := 0
  41. if isShowMe {
  42. showUserId = this.SysUser.AdminId
  43. }
  44. classifyList, err := excel.GetExcelClassifyBySource(source)
  45. if err != nil {
  46. br.Msg = "获取失败"
  47. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  48. return
  49. }
  50. // 分类map
  51. classifyMap := make(map[int]*excel.ExcelClassifyItems)
  52. for _, v := range classifyList {
  53. classifyMap[v.ExcelClassifyId] = v
  54. }
  55. // 获取二级分类
  56. // 获取三级分类
  57. // 根据来源获取所有excel表格(无内容)
  58. allExcelInfo, err := excel.GetNoContentExcelInfoAll(source, showUserId)
  59. if err != nil && err.Error() != utils.ErrNoRow() {
  60. br.Msg = "获取失败"
  61. br.ErrMsg = "获取表格信息失败,Err:" + err.Error()
  62. return
  63. }
  64. // 获取所有有权限的指标和分类
  65. permissionEdbIdList, permissionClassifyIdList, err := data_manage_permission.GetUserExcelAndClassifyPermissionList(this.SysUser.AdminId, 0, 0)
  66. if err != nil {
  67. br.Msg = "获取失败"
  68. br.ErrMsg = "获取所有有权限的指标和分类失败,Err:" + err.Error()
  69. return
  70. }
  71. ExcelInfoMap := make(map[int][]*excel.ExcelClassifyItems)
  72. for _, v := range allExcelInfo {
  73. // 数据权限
  74. if classifyInfo, ok := classifyMap[v.ExcelClassifyId]; ok {
  75. v.HaveOperaAuth = data_manage_permission.CheckExcelPermissionByPermissionIdList(v.IsJoinPermission, classifyInfo.IsJoinPermission, v.ExcelInfoId, v.ExcelClassifyId, permissionEdbIdList, permissionClassifyIdList)
  76. }
  77. ExcelInfoMap[v.ExcelClassifyId] = append(ExcelInfoMap[v.ExcelClassifyId], v)
  78. }
  79. classifyListMap := make(map[int][]*excel.ExcelClassifyItems)
  80. for _, v := range classifyList {
  81. // 数据权限
  82. v.HaveOperaAuth = data_manage_permission.CheckExcelClassifyPermissionByPermissionIdList(v.IsJoinPermission, v.ExcelClassifyId, permissionClassifyIdList)
  83. if existItems, ok := ExcelInfoMap[v.ExcelClassifyId]; ok {
  84. v.Children = existItems
  85. }
  86. }
  87. for _, v := range classifyList {
  88. if v.ParentId > 0 {
  89. classifyListMap[v.ParentId] = append(classifyListMap[v.ParentId], v)
  90. }
  91. }
  92. //组装三级分类
  93. for key, classify := range classifyList {
  94. subList, ok := classifyListMap[classify.ExcelClassifyId]
  95. if ok {
  96. classifyList[key].Children = append(classifyList[key].Children, subList...)
  97. sort.Slice(classifyList[key].Children, func(i, j int) bool {
  98. return excel.ExcelClassifyItemBySort(classifyList[key].Children[i], classifyList[key].Children[j])
  99. })
  100. }
  101. }
  102. nodeAll := make([]*excel.ExcelClassifyItems, 0)
  103. for _, v := range classifyList {
  104. if v.ParentId == 0 {
  105. sort.Slice(v.Children, func(i, j int) bool { return excel.ExcelClassifyItemBySort(v.Children[i], v.Children[j]) })
  106. nodeAll = append(nodeAll, v)
  107. }
  108. }
  109. resp := response2.ExcelClassifyListResp{
  110. AllNodes: nodeAll,
  111. }
  112. br.Ret = 200
  113. br.Success = true
  114. br.Msg = "获取成功"
  115. br.Data = resp
  116. }
  117. // ExcelClassifyItems
  118. // @Title 获取所有excel表格分类接口-不包含表格
  119. // @Description 获取所有excel表格分类接口-不包含表格
  120. // @Param Source query int true "格来源,1:excel插件的表格,2:自定义表格,3:混合表格,默认:1"
  121. // @Success 200 {object} response.ExcelClassifyListResp
  122. // @router /excel_classify/items [get]
  123. func (this *ExcelClassifyController) ExcelClassifyItems() {
  124. br := new(models.BaseResponse).Init()
  125. defer func() {
  126. this.Data["json"] = br
  127. this.ServeJSON()
  128. }()
  129. source, _ := this.GetInt("Source")
  130. if source <= 0 {
  131. source = utils.EXCEL_DEFAULT
  132. }
  133. classifyList, err := excel.GetExcelClassifyBySource(source)
  134. if err != nil {
  135. br.Msg = "获取失败"
  136. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  137. return
  138. }
  139. // 获取二级分类
  140. // 获取三级分类
  141. classifyMap := make(map[int][]*excel.ExcelClassifyItems)
  142. for _, v := range classifyList {
  143. if v.ParentId > 0 {
  144. classifyMap[v.ParentId] = append(classifyMap[v.ParentId], v)
  145. }
  146. }
  147. //组装三级分类
  148. for key, classify := range classifyList {
  149. subList, ok := classifyMap[classify.ExcelClassifyId]
  150. if ok {
  151. classifyList[key].Children = append(classifyList[key].Children, subList...)
  152. }
  153. }
  154. nodeAll := make([]*excel.ExcelClassifyItems, 0)
  155. for _, v := range classifyList {
  156. if v.ParentId == 0 {
  157. nodeAll = append(nodeAll, v)
  158. }
  159. }
  160. resp := response2.ExcelClassifyListResp{
  161. AllNodes: nodeAll,
  162. }
  163. br.Ret = 200
  164. br.Success = true
  165. br.Msg = "获取成功"
  166. br.Data = resp
  167. }
  168. // AddExcelClassify
  169. // @Title 新增excel表格分类
  170. // @Description 新增excel表格分类接口
  171. // @Param request body request.AddExcelClassifyReq true "type json string"
  172. // @Success 200 Ret=200 保存成功
  173. // @router /excel_classify/add [post]
  174. func (this *ExcelClassifyController) AddExcelClassify() {
  175. br := new(models.BaseResponse).Init()
  176. defer func() {
  177. this.Data["json"] = br
  178. this.ServeJSON()
  179. }()
  180. var req request.AddExcelClassifyReq
  181. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  182. if err != nil {
  183. br.Msg = "参数解析异常!"
  184. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  185. return
  186. }
  187. if req.ExcelClassifyName == "" {
  188. br.Msg = "请输入分类名称"
  189. br.IsSendEmail = false
  190. return
  191. }
  192. if req.ParentId < 0 {
  193. br.Msg = "参数错误"
  194. br.IsSendEmail = false
  195. return
  196. }
  197. source := req.Source
  198. if source <= 0 {
  199. source = utils.EXCEL_DEFAULT
  200. }
  201. // 获取同级分类下存在同名分类的数量
  202. count, err := excel.GetExcelClassifyCount(req.ExcelClassifyName, req.ParentId, source)
  203. if err != nil {
  204. br.Msg = "判断名称是否已存在失败"
  205. br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
  206. return
  207. }
  208. if count > 0 {
  209. br.Msg = "分类名称已存在,请重新输入"
  210. br.IsSendEmail = false
  211. return
  212. }
  213. //获取该层级下最大的排序数
  214. maxSort, err := excel2.GetExcelClassifyMaxSort(req.ParentId, req.Source)
  215. if err != nil {
  216. br.Msg = "获取失败"
  217. br.ErrMsg = "查询排序信息失败,Err:" + err.Error()
  218. return
  219. }
  220. level := 1
  221. // 查询父级分类是否存在
  222. if req.ParentId > 0 {
  223. var parent *excel.ExcelClassify
  224. parent, err = excel.GetExcelClassifyById(req.ParentId)
  225. if err != nil {
  226. if err.Error() == utils.ErrNoRow() {
  227. br.Msg = "父级分类不存在"
  228. return
  229. }
  230. br.Msg = "获取失败"
  231. br.ErrMsg = "查询父级分类信息失败,Err:" + err.Error()
  232. return
  233. }
  234. level = parent.Level + 1
  235. }
  236. // 入库
  237. timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
  238. classify := &excel.ExcelClassify{
  239. //ExcelClassifyId: 0,
  240. ExcelClassifyName: req.ExcelClassifyName,
  241. ParentId: req.ParentId,
  242. Source: source,
  243. SysUserId: this.SysUser.AdminId,
  244. SysUserRealName: this.SysUser.RealName,
  245. Level: level,
  246. UniqueCode: utils.MD5(utils.EXCEL_DATA_PREFIX + "_" + timestamp),
  247. Sort: maxSort + 1,
  248. CreateTime: time.Now(),
  249. ModifyTime: time.Now(),
  250. }
  251. _, err = excel.AddExcelClassify(classify)
  252. if err != nil {
  253. br.Msg = "保存分类失败"
  254. br.ErrMsg = "保存分类失败,Err:" + err.Error()
  255. return
  256. }
  257. // 继承分类权限
  258. {
  259. go data_manage_permission.InheritParentClassify(6, source, classify.ExcelClassifyId, classify.ParentId, classify.ExcelClassifyName)
  260. }
  261. br.Ret = 200
  262. br.Msg = "保存成功"
  263. br.Success = true
  264. }
  265. // EditExcelClassify
  266. // @Title 修改excel表格分类
  267. // @Description 修改excel表格分类
  268. // @Param request body request.EditExcelClassifyReq true "type json string"
  269. // @Success 200 Ret=200 修改成功
  270. // @router /excel_classify/edit [post]
  271. func (this *ExcelClassifyController) EditExcelClassify() {
  272. br := new(models.BaseResponse).Init()
  273. defer func() {
  274. this.Data["json"] = br
  275. this.ServeJSON()
  276. }()
  277. var req request.EditExcelClassifyReq
  278. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  279. if err != nil {
  280. br.Msg = "参数解析异常!"
  281. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  282. return
  283. }
  284. if req.ExcelClassifyName == "" {
  285. br.Msg = "请输入分类名称"
  286. br.IsSendEmail = false
  287. return
  288. }
  289. if req.ExcelClassifyId <= 0 {
  290. br.Msg = "参数错误"
  291. br.IsSendEmail = false
  292. return
  293. }
  294. item, err := excel.GetExcelClassifyById(req.ExcelClassifyId)
  295. if err != nil {
  296. br.Msg = "保存失败"
  297. br.Msg = "获取分类信息失败,Err:" + err.Error()
  298. return
  299. }
  300. // 名字一致的话,直接返回成功
  301. if item.ExcelClassifyName == req.ExcelClassifyName {
  302. br.Ret = 200
  303. br.Msg = "保存成功"
  304. br.Success = true
  305. return
  306. }
  307. // 获取同级分类下存在同名分类的数量
  308. count, err := excel.GetExcelClassifyCount(req.ExcelClassifyName, item.ParentId, item.Source)
  309. if err != nil {
  310. br.Msg = "判断名称是否已存在失败"
  311. br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
  312. return
  313. }
  314. if count > 0 {
  315. br.Msg = "分类名称已存在,请重新输入"
  316. br.IsSendEmail = false
  317. return
  318. }
  319. // 修改分类名称
  320. item.ExcelClassifyName = req.ExcelClassifyName
  321. err = item.Update([]string{"ExcelClassifyName"})
  322. if err != nil {
  323. br.Msg = "保存失败"
  324. br.ErrMsg = "保存失败,Err:" + err.Error()
  325. return
  326. }
  327. br.Ret = 200
  328. br.Msg = "修改成功"
  329. br.Success = true
  330. br.IsAddLog = true
  331. }
  332. // DeleteExcelClassifyCheck
  333. // @Title 删除表格检测接口
  334. // @Description 删除表格检测接口
  335. // @Param request body request.ExcelClassifyDeleteCheckReq true "type json string"
  336. // @Success 200 {object} response.ExcelClassifyDeleteCheckResp
  337. // @router /excel_classify/delete/check [post]
  338. func (this *ExcelClassifyController) DeleteExcelClassifyCheck() {
  339. br := new(models.BaseResponse).Init()
  340. defer func() {
  341. this.Data["json"] = br
  342. this.ServeJSON()
  343. }()
  344. var req request.ExcelClassifyDeleteCheckReq
  345. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  346. if err != nil {
  347. br.Msg = "参数解析异常!"
  348. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  349. return
  350. }
  351. if req.ExcelClassifyId < 0 && req.ExcelInfoId <= 0 {
  352. br.Msg = "参数错误"
  353. br.IsSendEmail = false
  354. return
  355. }
  356. var deleteStatus int
  357. var tipsMsg string
  358. // 校验是否存在该分类
  359. ExcelClassifyInfo, err := excel.GetExcelClassifyById(req.ExcelClassifyId)
  360. if err != nil {
  361. if err.Error() == utils.ErrNoRow() {
  362. br.Msg = "该分类不存在"
  363. br.ErrMsg = "该分类不存在"
  364. return
  365. }
  366. br.Msg = "删除失败"
  367. br.ErrMsg = "查询该分类失败,Err:" + err.Error()
  368. return
  369. }
  370. if ExcelClassifyInfo == nil {
  371. br.Msg = "该分类不存在"
  372. br.ErrMsg = "该分类不存在"
  373. br.IsSendEmail = false
  374. return
  375. }
  376. //删除分类
  377. if req.ExcelClassifyId > 0 && req.ExcelInfoId == 0 {
  378. //判断表格分类下,是否含有表格
  379. count, err := excel.GetExcelInfoCountByClassifyId(req.ExcelClassifyId)
  380. if err != nil {
  381. br.Msg = "删除失败"
  382. br.ErrMsg = "分类下是否含有指标失败,Err:" + err.Error()
  383. return
  384. }
  385. if count > 0 {
  386. deleteStatus = 1
  387. tipsMsg = "该分类下关联表格不可删除"
  388. } else {
  389. childClassify, e := excel.GetChildClassifyById(req.ExcelClassifyId)
  390. if e != nil && e.Error() != utils.ErrNoRow() {
  391. br.Msg = "获取失败"
  392. br.ErrMsg = "获取分类信息失败, GetEdbClassify,Err:" + e.Error()
  393. return
  394. }
  395. if len(childClassify) > 0 {
  396. var classifyIds []int
  397. for _, v := range childClassify {
  398. classifyIds = append(classifyIds, v.ExcelClassifyId)
  399. }
  400. condition := fmt.Sprintf(` AND excel_classify_id IN (%s) `, utils.GetOrmInReplace(len(classifyIds)))
  401. var pars []interface{}
  402. pars = append(pars, classifyIds)
  403. childCount, err := excel.GetExcelInfoCountByCondition(condition, pars)
  404. if err != nil && err.Error() != utils.ErrNoRow() {
  405. br.Msg = "删除失败"
  406. br.ErrMsg = "查询分类下表格数量失败,Err:" + err.Error()
  407. return
  408. }
  409. if childCount > 0 {
  410. deleteStatus = 1
  411. tipsMsg = "该分类下关联表格不可删除"
  412. }
  413. }
  414. }
  415. }
  416. //if deleteStatus != 1 && req.ExcelInfoId == 0 {
  417. // classifyCount, err := data_manage.GetExcelClassifyCountByClassifyId(req.ExcelClassifyId)
  418. // if err != nil && err.Error() != utils.ErrNoRow() {
  419. // br.Msg = "删除失败"
  420. // br.ErrMsg = "分类下是否含有表格失败,Err:" + err.Error()
  421. // return
  422. // }
  423. // if classifyCount > 0 {
  424. // deleteStatus = 2
  425. // tipsMsg = "确认删除当前目录及包含的子目录吗?"
  426. // }
  427. //}
  428. if deleteStatus == 0 {
  429. tipsMsg = "可删除,进行删除操作"
  430. }
  431. resp := response2.ExcelClassifyDeleteCheckResp{
  432. DeleteStatus: deleteStatus,
  433. TipsMsg: tipsMsg,
  434. }
  435. br.Ret = 200
  436. br.Msg = "检测成功"
  437. br.Success = true
  438. br.Data = resp
  439. }
  440. // DeleteExcelClassify
  441. // @Title 删除表格分类/表格
  442. // @Description 删除表格分类/表格接口
  443. // @Param request body request.DeleteExcelClassifyReq true "type json string"
  444. // @Success 200 Ret=200 删除成功
  445. // @router /excel_classify/delete [post]
  446. func (this *ExcelClassifyController) DeleteExcelClassify() {
  447. br := new(models.BaseResponse).Init()
  448. defer func() {
  449. this.Data["json"] = br
  450. this.ServeJSON()
  451. }()
  452. sysUser := this.SysUser
  453. if sysUser == nil {
  454. br.Msg = "请登录"
  455. br.ErrMsg = "请登录,SysUser Is Empty"
  456. br.Ret = 408
  457. return
  458. }
  459. var req request.DeleteExcelClassifyReq
  460. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  461. if err != nil {
  462. br.Msg = "参数解析异常!"
  463. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  464. return
  465. }
  466. if req.ExcelClassifyId < 0 && req.ExcelInfoId <= 0 {
  467. br.Msg = "参数错误"
  468. br.IsSendEmail = false
  469. return
  470. }
  471. //删除分类
  472. if req.ExcelClassifyId > 0 && req.ExcelInfoId == 0 {
  473. //判断是否含有指标
  474. count, err := excel.GetExcelInfoCountByClassifyId(req.ExcelClassifyId)
  475. if err != nil && err.Error() != utils.ErrNoRow() {
  476. br.Msg = "删除失败"
  477. br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
  478. return
  479. }
  480. if count > 0 {
  481. br.Msg = "该目录下存在关联ETA表格,不可删除"
  482. br.IsSendEmail = false
  483. return
  484. } else {
  485. childClassify, e := excel.GetChildClassifyById(req.ExcelClassifyId)
  486. if e != nil && e.Error() != utils.ErrNoRow() {
  487. br.Msg = "获取失败"
  488. br.ErrMsg = "获取分类信息失败, GetEdbClassify,Err:" + e.Error()
  489. return
  490. }
  491. if len(childClassify) > 0 {
  492. var classifyIds []int
  493. for _, v := range childClassify {
  494. classifyIds = append(classifyIds, v.ExcelClassifyId)
  495. }
  496. condition := fmt.Sprintf(` AND excel_classify_id IN (%s) `, utils.GetOrmInReplace(len(classifyIds)))
  497. var pars []interface{}
  498. pars = append(pars, classifyIds)
  499. childCount, err := excel.GetExcelInfoCountByCondition(condition, pars)
  500. if err != nil && err.Error() != utils.ErrNoRow() {
  501. br.Msg = "删除失败"
  502. br.ErrMsg = "查询分类下表格数量失败,Err:" + err.Error()
  503. return
  504. }
  505. if childCount > 0 {
  506. br.Msg = "该目录下存在关联ETA表格,不可删除"
  507. br.IsSendEmail = false
  508. return
  509. }
  510. }
  511. }
  512. classifyItem, err := excel.GetExcelClassifyById(req.ExcelClassifyId)
  513. if err != nil {
  514. br.Msg = "删除失败"
  515. br.ErrMsg = "获取分类失败,Err:" + err.Error()
  516. if err.Error() == utils.ErrNoRow() {
  517. br.Msg = "分类不存在"
  518. br.ErrMsg = "分类不存在"
  519. }
  520. return
  521. }
  522. classifyItem.IsDelete = 1
  523. err = classifyItem.Update([]string{"IsDelete"})
  524. if err != nil {
  525. br.Msg = "删除失败"
  526. br.ErrMsg = "删除失败,Err:" + err.Error()
  527. return
  528. }
  529. }
  530. resp := response2.AddExcelInfoResp{}
  531. //删除表格
  532. if req.ExcelInfoId > 0 {
  533. excelInfo, err := excel.GetExcelInfoById(req.ExcelInfoId)
  534. if err != nil {
  535. if err.Error() == utils.ErrNoRow() {
  536. br.Msg = "表格已删除,请刷新页面"
  537. br.ErrMsg = "表格已删除,请刷新页面"
  538. return
  539. } else {
  540. br.Msg = "删除失败"
  541. br.ErrMsg = "删除失败,获取指标信息失败,Err:" + err.Error()
  542. return
  543. }
  544. }
  545. if excelInfo == nil {
  546. br.Msg = "表格已删除,请刷新页面"
  547. br.IsSendEmail = false
  548. return
  549. }
  550. // 删除excel
  551. err, errMsg, isSendEmail := excel2.Delete(excelInfo, sysUser)
  552. if err != nil {
  553. br.Msg = "删除失败"
  554. if errMsg != `` {
  555. br.Msg = errMsg
  556. }
  557. br.ErrMsg = "删除失败,Err:" + err.Error()
  558. br.IsSendEmail = isSendEmail
  559. return
  560. }
  561. // 返回下一个表格的信息
  562. {
  563. var nextItem *excel.ExcelInfo
  564. var condition string
  565. var pars []interface{}
  566. condition += " AND excel_classify_id=? "
  567. pars = append(pars, excelInfo.ExcelClassifyId)
  568. condition += " AND (sort>? OR (sort=? AND excel_info_id<?) ) "
  569. pars = append(pars, excelInfo.Sort, excelInfo.Sort, excelInfo.ExcelInfoId)
  570. nextItem, err = excel.GetNextExcelInfoByCondition(condition, pars)
  571. if err != nil && err.Error() != utils.ErrNoRow() {
  572. br.Msg = "删除失败"
  573. br.ErrMsg = "获取下一级表格信息失败,Err:" + err.Error()
  574. return
  575. }
  576. // 如果没找到,那么查找下一个分类的第一个表格
  577. if nextItem == nil {
  578. currClassifyInfo, err := excel.GetExcelClassifyById(excelInfo.ExcelClassifyId)
  579. if err != nil && err.Error() != utils.ErrNoRow() {
  580. br.Msg = "删除失败"
  581. br.ErrMsg = "获取当前表格分类信息失败,Err:" + err.Error()
  582. return
  583. }
  584. nextItem, err = excel.GetNextExcelInfo(excelInfo.ExcelClassifyId, currClassifyInfo.Sort, currClassifyInfo.Source)
  585. if err != nil && err.Error() != utils.ErrNoRow() {
  586. br.Msg = "删除失败"
  587. br.ErrMsg = "获取下一级表格信息失败,Err:" + err.Error()
  588. return
  589. }
  590. }
  591. // 如果找到下一个表格了,那么就返回
  592. if nextItem != nil {
  593. resp = response2.AddExcelInfoResp{
  594. ExcelInfoId: nextItem.ExcelInfoId,
  595. UniqueCode: nextItem.UniqueCode,
  596. }
  597. }
  598. }
  599. //新增操作日志
  600. //{
  601. // ExcelLog := new(data_manage.ExcelInfoLog)
  602. // ExcelLog.ExcelName = ExcelInfo.ExcelName
  603. // ExcelLog.ExcelInfoId = req.ExcelInfoId
  604. // ExcelLog.ExcelClassifyId = ExcelInfo.ExcelClassifyId
  605. // ExcelLog.SysUserId = sysUser.AdminId
  606. // ExcelLog.SysUserRealName = sysUser.RealName
  607. // ExcelLog.UniqueCode = ExcelInfo.UniqueCode
  608. // ExcelLog.CreateTime = time.Now()
  609. // ExcelLog.Content = string(this.Ctx.Input.RequestBody)
  610. // ExcelLog.Status = "删除表格"
  611. // ExcelLog.Method = this.Ctx.Input.URI()
  612. // go data_manage.AddExcelInfoLog(ExcelLog)
  613. //}
  614. }
  615. br.Ret = 200
  616. br.Msg = "删除成功"
  617. br.Success = true
  618. br.Data = resp
  619. br.IsAddLog = true
  620. }
  621. // ExcelClassifyMove
  622. // @Title 表格分类移动接口
  623. // @Description 表格分类移动接口
  624. // @Success 200 {object} request.MoveExcelClassifyReq
  625. // @router /excel_classify/move [post]
  626. func (this *ExcelClassifyController) ExcelClassifyMove() {
  627. br := new(models.BaseResponse).Init()
  628. defer func() {
  629. this.Data["json"] = br
  630. this.ServeJSON()
  631. }()
  632. sysUser := this.SysUser
  633. if sysUser == nil {
  634. br.Msg = "请登录"
  635. br.ErrMsg = "请登录,SysUser Is Empty"
  636. br.Ret = 408
  637. return
  638. }
  639. var req request.MoveExcelClassifyReq
  640. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  641. if err != nil {
  642. br.Msg = "参数解析异常!"
  643. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  644. return
  645. }
  646. if req.ClassifyId <= 0 && req.ExcelInfoId <= 0 {
  647. br.Msg = "参数错误"
  648. br.ErrMsg = "请选择拖动目标,分类目录或者指标"
  649. return
  650. }
  651. //判断分类是否存在
  652. err, errMsg := excel2.MoveExcelClassify(req)
  653. if err != nil {
  654. br.Msg = err.Error()
  655. br.ErrMsg = errMsg
  656. return
  657. }
  658. br.Ret = 200
  659. br.Success = true
  660. br.IsAddLog = true
  661. br.Msg = "移动成功"
  662. }