excel_classify.go 20 KB

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