custom_analysis.go 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711
  1. package excel
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/controllers"
  5. "eta/eta_api/models"
  6. excelModel "eta/eta_api/models/data_manage/excel"
  7. "eta/eta_api/models/data_manage/excel/request"
  8. "eta/eta_api/models/data_manage/excel/response"
  9. "eta/eta_api/services/data/excel"
  10. "eta/eta_api/utils"
  11. "fmt"
  12. "strconv"
  13. "strings"
  14. "time"
  15. )
  16. // CustomAnalysisController 自定义分析
  17. type CustomAnalysisController struct {
  18. controllers.BaseAuthController
  19. }
  20. // ExcelByName
  21. // @Title 根据excel名称获取表格详情(基础信息+第一页初始化数据)
  22. // @Description 根据excel名称获取表格详情(基础信息+第一页初始化数据)
  23. // @Param ExcelName query string true "搜索关键词"
  24. // @Success 200 {object} response.ExcelListResp
  25. // @router /excel_by_name [get]
  26. func (c *CustomAnalysisController) ExcelByName() {
  27. br := new(models.BaseResponse).Init()
  28. defer func() {
  29. c.Data["json"] = br
  30. c.ServeJSON()
  31. }()
  32. sysUser := c.SysUser
  33. if sysUser == nil {
  34. br.Msg = "请登录"
  35. br.ErrMsg = "请登录,SysUser Is Empty"
  36. br.Ret = 408
  37. return
  38. }
  39. excelName := c.GetString("ExcelName")
  40. if excelName == `` {
  41. br.Msg = "请选择表格"
  42. br.ErrMsg = "ExcelName未传"
  43. br.IsSendEmail = false
  44. return
  45. }
  46. resp := response.FindExcelInfoResp{}
  47. excelName = utils.TrimLRStr(excelName)
  48. // 获取数据详情
  49. excelDetail, err := excelModel.GetNoContentExcelInfoByName(excelName, utils.CUSTOM_ANALYSIS_TABLE)
  50. if err != nil {
  51. if err.Error() == utils.ErrNoRow() {
  52. br.Ret = 200
  53. br.Success = true
  54. br.Msg = "获取成功"
  55. br.Data = resp
  56. return
  57. }
  58. br.Msg = "获取表格事变"
  59. br.ErrMsg = err.Error()
  60. return
  61. }
  62. resp.IsFind = true
  63. resp.ExcelInfo = excelDetail
  64. if excelDetail != nil {
  65. sheetList, err := excelModel.GetAllSheetItemList(excelDetail.ExcelInfoId)
  66. if err != nil {
  67. br.Msg = "获取sheet失败"
  68. br.ErrMsg = "获取sheet失败,err:" + err.Error()
  69. return
  70. }
  71. resp.SheetList = sheetList
  72. }
  73. //resp := response.ExcelListResp{
  74. // Paging: page,
  75. // List: list,
  76. //}
  77. br.Ret = 200
  78. br.Success = true
  79. br.Msg = "获取成功"
  80. br.Data = resp
  81. }
  82. // Add
  83. // @Title 新增表格接口
  84. // @Description 新增表格接口
  85. // @Param request body request.AddExcelInfoReq true "type json string"
  86. // @Success 200 {object} response.AddExcelInfoResp
  87. // @router /add [post]
  88. func (c *CustomAnalysisController) Add() {
  89. br := new(models.BaseResponse).Init()
  90. defer func() {
  91. c.Data["json"] = br
  92. c.ServeJSON()
  93. }()
  94. sysUser := c.SysUser
  95. if sysUser == nil {
  96. br.Msg = "请登录"
  97. br.ErrMsg = "请登录,SysUser Is Empty"
  98. br.Ret = 408
  99. return
  100. }
  101. deleteCache := true
  102. cacheKey := "CACHE_EXCEL_TABLE_INFO_ADD_" + strconv.Itoa(sysUser.AdminId)
  103. defer func() {
  104. if deleteCache {
  105. _ = utils.Rc.Delete(cacheKey)
  106. }
  107. }()
  108. if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
  109. deleteCache = false
  110. br.Msg = "系统处理中,请稍后重试!"
  111. br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(c.Ctx.Input.RequestBody)
  112. return
  113. }
  114. var req request.AddExcelInfoReq
  115. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  116. if err != nil {
  117. br.Msg = "参数解析异常!"
  118. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  119. return
  120. }
  121. req.ExcelName = strings.Trim(req.ExcelName, " ")
  122. if req.ExcelName == "" {
  123. br.Msg = "请填写表格名称!"
  124. br.IsSendEmail = false
  125. return
  126. }
  127. if req.ExcelClassifyId <= 0 {
  128. br.Msg = "分类参数错误!"
  129. br.IsSendEmail = false
  130. return
  131. }
  132. excelInfo, err, errMsg, isSendEmail := excel.AddCustomAnalysisTable(utils.TrimLRStr(req.ExcelName), req.Content, req.ExcelImage, req.ExcelClassifyId, sysUser)
  133. if err != nil {
  134. br.Msg = "保存失败"
  135. if errMsg != `` {
  136. br.Msg = errMsg
  137. }
  138. br.ErrMsg = "保存失败,Err:" + err.Error()
  139. br.IsSendEmail = isSendEmail
  140. return
  141. }
  142. // 更新excel下载地址(默认的EXCEL需要更新,自定义表格不需要更新)
  143. //if req.Source == 1 {
  144. // go UpdateExcelInfoFileUrl(excelInfo)
  145. //}
  146. //
  147. resp := new(response.AddExcelInfoResp)
  148. resp.ExcelInfoId = excelInfo.ExcelInfoId
  149. resp.UniqueCode = excelInfo.UniqueCode
  150. // 生成excel文件
  151. go excel.UpdateExcelInfoFileUrl(excelInfo)
  152. //新增操作日志
  153. //{
  154. // excelLog := &data_manage.ExcelInfoLog{
  155. // //ExcelInfoLogId: 0,
  156. // ExcelInfoId: excelInfo.ExcelInfoId,
  157. // ExcelName: req.ExcelName,
  158. // ExcelClassifyId: req.ExcelClassifyId,
  159. // SysUserId: sysUser.AdminId,
  160. // SysUserRealName: sysUser.RealName,
  161. // UniqueCode: excelInfo.UniqueCode,
  162. // CreateTime: time.Now(),
  163. // Content: string(c.Ctx.Input.RequestBody),
  164. // Status: "新增表格",
  165. // Method: c.Ctx.Input.URI(),
  166. // }
  167. // go data_manage.AddExcelInfoLog(excelLog)
  168. //}
  169. br.Ret = 200
  170. br.Success = true
  171. br.Msg = "保存成功"
  172. br.Data = resp
  173. br.IsAddLog = false //数据量太大了,不写入日志吧
  174. }
  175. // Save
  176. // @Title 保存表格接口
  177. // @Description 保存表格接口
  178. // @Param request body request.AddExcelInfoReq true "type json string"
  179. // @Success 200 {object} response.AddExcelInfoResp
  180. // @router /save [post]
  181. func (c *CustomAnalysisController) Save() {
  182. br := new(models.BaseResponse).Init()
  183. defer func() {
  184. c.Data["json"] = br
  185. c.ServeJSON()
  186. }()
  187. sysUser := c.SysUser
  188. if sysUser == nil {
  189. br.Msg = "请登录"
  190. br.ErrMsg = "请登录,SysUser Is Empty"
  191. br.Ret = 408
  192. return
  193. }
  194. deleteCache := true
  195. cacheKey := "CACHE_EXCEL_TABLE_INFO_ADD_" + strconv.Itoa(sysUser.AdminId)
  196. defer func() {
  197. if deleteCache {
  198. _ = utils.Rc.Delete(cacheKey)
  199. }
  200. }()
  201. if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
  202. deleteCache = false
  203. br.Msg = "系统处理中,请稍后重试!"
  204. br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(c.Ctx.Input.RequestBody)
  205. return
  206. }
  207. var req request.SaveExcelInfoReq
  208. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  209. if err != nil {
  210. br.Msg = "参数解析异常!"
  211. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  212. return
  213. }
  214. req.ExcelName = strings.Trim(req.ExcelName, " ")
  215. if req.ExcelName == "" {
  216. br.Msg = "请填写表格名称!"
  217. br.IsSendEmail = false
  218. return
  219. }
  220. if req.ExcelInfoId <= 0 {
  221. br.Msg = "请选择excel!"
  222. br.IsSendEmail = false
  223. return
  224. }
  225. if req.ExcelClassifyId <= 0 {
  226. br.Msg = "分类参数错误!"
  227. br.IsSendEmail = false
  228. return
  229. }
  230. excelInfo, err := excelModel.GetExcelInfoById(req.ExcelInfoId)
  231. if err != nil {
  232. br.Msg = "找不到该EXCEL!"
  233. br.ErrMsg = "找不到该EXCEL!err:" + err.Error()
  234. return
  235. }
  236. if excelInfo.Source != utils.CUSTOM_ANALYSIS_TABLE {
  237. br.Msg = "EXCEL异常!"
  238. br.IsSendEmail = false
  239. return
  240. }
  241. err, errMsg, isSendEmail := excel.SaveCustomAnalysisTable(excelInfo, utils.TrimLRStr(req.ExcelName), req.Content, req.ExcelImage, req.ExcelClassifyId, req.OpSheetList)
  242. if err != nil {
  243. br.Msg = "保存失败"
  244. if errMsg != `` {
  245. br.Msg = errMsg
  246. }
  247. br.ErrMsg = "保存失败,Err:" + err.Error()
  248. br.IsSendEmail = isSendEmail
  249. return
  250. }
  251. // 更新excel下载地址(默认的EXCEL需要更新,自定义表格不需要更新)
  252. //if req.Source == 1 {
  253. // go UpdateExcelInfoFileUrl(excelInfo)
  254. //}
  255. //
  256. resp := new(response.AddExcelInfoResp)
  257. resp.ExcelInfoId = excelInfo.ExcelInfoId
  258. resp.UniqueCode = excelInfo.UniqueCode
  259. // 生成excel文件
  260. go excel.UpdateExcelInfoFileUrl(excelInfo)
  261. //新增操作日志
  262. //{
  263. // excelLog := &data_manage.ExcelInfoLog{
  264. // //ExcelInfoLogId: 0,
  265. // ExcelInfoId: excelInfo.ExcelInfoId,
  266. // ExcelName: req.ExcelName,
  267. // ExcelClassifyId: req.ExcelClassifyId,
  268. // SysUserId: sysUser.AdminId,
  269. // SysUserRealName: sysUser.RealName,
  270. // UniqueCode: excelInfo.UniqueCode,
  271. // CreateTime: time.Now(),
  272. // Content: string(c.Ctx.Input.RequestBody),
  273. // Status: "新增表格",
  274. // Method: c.Ctx.Input.URI(),
  275. // }
  276. // go data_manage.AddExcelInfoLog(excelLog)
  277. //}
  278. br.Ret = 200
  279. br.Success = true
  280. br.Msg = "保存成功"
  281. br.Data = resp
  282. br.IsAddLog = false //数据量太大了,不写入日志吧
  283. }
  284. // BaseExcelDetail
  285. // @Title 根据excel名称获取表格详情(基础信息+第一页初始化数据)
  286. // @Description 根据excel名称获取表格详情(基础信息+第一页初始化数据)
  287. // @Param UniqueCode query string true "excel唯一编码"
  288. // @Success 200 {object} response.ExcelListResp
  289. // @router /excel/base [get]
  290. func (c *CustomAnalysisController) BaseExcelDetail() {
  291. br := new(models.BaseResponse).Init()
  292. defer func() {
  293. c.Data["json"] = br
  294. c.ServeJSON()
  295. }()
  296. sysUser := c.SysUser
  297. if sysUser == nil {
  298. br.Msg = "请登录"
  299. br.ErrMsg = "请登录,SysUser Is Empty"
  300. br.Ret = 408
  301. return
  302. }
  303. uniqueCode := c.GetString("UniqueCode")
  304. if uniqueCode == `` {
  305. br.Msg = "请选择表格"
  306. br.ErrMsg = "UniqueCode未传"
  307. br.IsSendEmail = false
  308. return
  309. }
  310. resp := response.FindExcelInfoResp{}
  311. // 获取数据详情
  312. excelDetail, err := excelModel.GetNoContentExcelInfoByUniqueCode(uniqueCode)
  313. if err != nil {
  314. if err.Error() == utils.ErrNoRow() {
  315. br.Ret = 200
  316. br.Success = true
  317. br.Msg = "获取成功"
  318. br.Data = resp
  319. return
  320. }
  321. br.Msg = "获取表格事变"
  322. br.ErrMsg = err.Error()
  323. return
  324. }
  325. resp.IsFind = true
  326. resp.ExcelInfo = excelDetail
  327. if excelDetail != nil {
  328. sheetList, err := excelModel.GetAllSheetItemList(excelDetail.ExcelInfoId)
  329. if err != nil {
  330. br.Msg = "获取sheet失败"
  331. br.ErrMsg = "获取sheet失败,err:" + err.Error()
  332. return
  333. }
  334. if len(sheetList) > 0 {
  335. sheetIdList := make([]int, 0)
  336. for _, v := range sheetList {
  337. sheetIdList = append(sheetIdList, v.ExcelSheetId)
  338. }
  339. // 获取所有sheet的第一页的数据
  340. sheetDataList, err := excelModel.GetSheetDataListBySheetIdListAndPage(sheetIdList, 1)
  341. if err != nil {
  342. br.Msg = "获取sheet中的数据失败"
  343. br.ErrMsg = "获取sheet中的数据失败,err:" + err.Error()
  344. return
  345. }
  346. sheetDataMap := make(map[int]*excelModel.ExcelSheetData)
  347. for _, v := range sheetDataList {
  348. sheetDataMap[v.ExcelSheetId] = v
  349. }
  350. for k, v := range sheetList {
  351. sheetData, ok := sheetDataMap[v.ExcelSheetId]
  352. if !ok {
  353. continue
  354. }
  355. v.Data = sheetData
  356. sheetList[k] = v
  357. }
  358. }
  359. // TODO 合并单元格信息、计算公式
  360. resp.SheetList = sheetList
  361. }
  362. //resp := response.ExcelListResp{
  363. // Paging: page,
  364. // List: list,
  365. //}
  366. br.Ret = 200
  367. br.Success = true
  368. br.Msg = "获取成功"
  369. br.Data = resp
  370. }
  371. // ExcelDataList
  372. // @Title 根据excel名称获取表格详情(基础信息+第一页初始化数据)
  373. // @Description 根据excel名称获取表格详情(基础信息+第一页初始化数据)
  374. // @Param UniqueCode query string true "excel唯一编码"
  375. // @Param Page query int true "页码"
  376. // @Success 200 {object} response.ExcelListResp
  377. // @router /excel/data [get]
  378. func (c *CustomAnalysisController) ExcelDataList() {
  379. br := new(models.BaseResponse).Init()
  380. defer func() {
  381. c.Data["json"] = br
  382. c.ServeJSON()
  383. }()
  384. sysUser := c.SysUser
  385. if sysUser == nil {
  386. br.Msg = "请登录"
  387. br.ErrMsg = "请登录,SysUser Is Empty"
  388. br.Ret = 408
  389. return
  390. }
  391. uniqueCode := c.GetString("UniqueCode")
  392. if uniqueCode == `` {
  393. br.Msg = "请选择表格"
  394. br.ErrMsg = "UniqueCode未传"
  395. br.IsSendEmail = false
  396. return
  397. }
  398. page, _ := c.GetInt("Page")
  399. if page <= 0 {
  400. br.Msg = "页码异常"
  401. br.ErrMsg = "页码异常"
  402. br.IsSendEmail = false
  403. return
  404. }
  405. sheetList := make([]*excelModel.SheetItem, 0)
  406. // 获取数据详情
  407. excelDetail, err := excelModel.GetNoContentExcelInfoByUniqueCode(uniqueCode)
  408. if err != nil {
  409. if err.Error() == utils.ErrNoRow() {
  410. br.Ret = 200
  411. br.Success = true
  412. br.Msg = "获取成功"
  413. br.Data = sheetList
  414. return
  415. }
  416. br.Msg = "获取表格事变"
  417. br.ErrMsg = err.Error()
  418. return
  419. }
  420. if excelDetail.Source != utils.CUSTOM_ANALYSIS_TABLE {
  421. br.Msg = "excel异常"
  422. br.ErrMsg = "excel异常"
  423. br.IsSendEmail = false
  424. return
  425. }
  426. if excelDetail != nil {
  427. sheetList, err = excelModel.GetAllNoConfigSheetItemList(excelDetail.ExcelInfoId)
  428. if err != nil {
  429. br.Msg = "获取sheet失败"
  430. br.ErrMsg = "获取sheet失败,err:" + err.Error()
  431. return
  432. }
  433. if len(sheetList) > 0 {
  434. sheetIdList := make([]int, 0)
  435. for _, v := range sheetList {
  436. sheetIdList = append(sheetIdList, v.ExcelSheetId)
  437. }
  438. // 获取所有sheet的第一页的数据
  439. sheetDataList, err := excelModel.GetSheetDataListBySheetIdListAndPage(sheetIdList, page)
  440. if err != nil {
  441. br.Msg = "获取sheet中的数据失败"
  442. br.ErrMsg = "获取sheet中的数据失败,err:" + err.Error()
  443. return
  444. }
  445. sheetDataMap := make(map[int]*excelModel.ExcelSheetData)
  446. for _, v := range sheetDataList {
  447. sheetDataMap[v.ExcelSheetId] = v
  448. }
  449. for k, v := range sheetList {
  450. sheetData, ok := sheetDataMap[v.ExcelSheetId]
  451. if !ok {
  452. continue
  453. }
  454. v.Data = sheetData
  455. sheetList[k] = v
  456. }
  457. }
  458. // TODO 合并单元格信息、计算公式
  459. }
  460. //resp := response.ExcelListResp{
  461. // Paging: page,
  462. // List: list,
  463. //}
  464. br.Ret = 200
  465. br.Success = true
  466. br.Msg = "获取成功"
  467. br.Data = sheetList
  468. }
  469. // FixTableData ETA1.0.2 自定义分析(生成指标数据修复)
  470. func FixTableData() {
  471. // 获取一级分类
  472. classifyList, err := excelModel.GetExcelClassifyByParentId(0, utils.EXCEL_DEFAULT)
  473. if err != nil && err.Error() != utils.ErrNoRow() {
  474. fmt.Println("数据修复失败,Err:" + err.Error())
  475. return
  476. }
  477. timeTableMap := make(map[int]int)
  478. mixTableMap := make(map[int]int)
  479. for _, v := range classifyList {
  480. // 时间序列表格
  481. classify := &excelModel.ExcelClassify{
  482. //ExcelClassifyId: 0,
  483. ExcelClassifyName: v.ExcelClassifyName,
  484. ParentId: v.ParentId,
  485. Source: utils.TIME_TABLE,
  486. SysUserId: v.SysUserId,
  487. SysUserRealName: v.SysUserRealName,
  488. Level: v.Level,
  489. UniqueCode: utils.MD5(fmt.Sprint(v.UniqueCode, "_", utils.TIME_TABLE)),
  490. Sort: v.Sort,
  491. CreateTime: time.Now(),
  492. ModifyTime: time.Now(),
  493. }
  494. _, err = excelModel.AddExcelClassify(classify)
  495. timeTableMap[v.ExcelClassifyId] = classify.ExcelClassifyId
  496. // 混合表格
  497. classify2 := &excelModel.ExcelClassify{
  498. //ExcelClassifyId: 0,
  499. ExcelClassifyName: v.ExcelClassifyName,
  500. ParentId: v.ParentId,
  501. Source: utils.MIXED_TABLE,
  502. SysUserId: v.SysUserId,
  503. SysUserRealName: v.SysUserRealName,
  504. Level: v.Level,
  505. UniqueCode: utils.MD5(fmt.Sprint(v.UniqueCode, "_", utils.MIXED_TABLE)),
  506. Sort: v.Sort,
  507. CreateTime: time.Now(),
  508. ModifyTime: time.Now(),
  509. }
  510. _, err = excelModel.AddExcelClassify(classify2)
  511. mixTableMap[v.ExcelClassifyId] = classify2.ExcelClassifyId
  512. }
  513. // 修改时间序列表
  514. {
  515. // 获取时间序列表
  516. timeTableExcelList, err := excelModel.GetNoContentExcelInfoAll(utils.TIME_TABLE, 0)
  517. if err != nil && err.Error() != utils.ErrNoRow() {
  518. fmt.Println("获取时间序列表列表失败,Err:" + err.Error())
  519. return
  520. }
  521. for _, v := range timeTableExcelList {
  522. classifyId, ok := timeTableMap[v.ExcelClassifyId]
  523. if !ok {
  524. continue
  525. }
  526. excelModel.UpdateExcelInfoClassifyId(classifyId, v.ExcelInfoId)
  527. }
  528. }
  529. // 修改混合序列表
  530. {
  531. // 获取时间序列表
  532. mixTableExcelList, err := excelModel.GetNoContentExcelInfoAll(utils.MIXED_TABLE, 0)
  533. if err != nil && err.Error() != utils.ErrNoRow() {
  534. fmt.Println("获取时间序列表列表失败,Err:" + err.Error())
  535. return
  536. }
  537. for _, v := range mixTableExcelList {
  538. classifyId, ok := mixTableMap[v.ExcelClassifyId]
  539. if !ok {
  540. continue
  541. }
  542. excelModel.UpdateExcelInfoClassifyId(classifyId, v.ExcelInfoId)
  543. }
  544. }
  545. fmt.Println("完成数据修复")
  546. }
  547. // FixTableDataMapping ETA1.0.2 自定义分析(修复excel与指标的关系)
  548. func FixTableDataMapping() {
  549. // 修改时间序列表
  550. {
  551. // 获取时间序列表
  552. timeTableExcelList, err := excelModel.GetAllExcelInfoBySource(utils.TIME_TABLE)
  553. if err != nil && err.Error() != utils.ErrNoRow() {
  554. fmt.Println("获取时间序列表列表失败,Err:" + err.Error())
  555. return
  556. }
  557. for _, v := range timeTableExcelList {
  558. var tableData request.TableDataReq
  559. err = json.Unmarshal([]byte(v.Content), &tableData)
  560. if err != nil {
  561. fmt.Println(v.ExcelInfoId, "json转结构体失败,Err:"+err.Error())
  562. continue
  563. }
  564. if len(tableData.EdbInfoIdList) > 0 {
  565. excelEdbMappingList := make([]*excelModel.ExcelEdbMapping, 0)
  566. for _, edbInfoId := range tableData.EdbInfoIdList {
  567. excelEdbMappingList = append(excelEdbMappingList, &excelModel.ExcelEdbMapping{
  568. //ExcelEdbMappingId: 0,
  569. ExcelInfoId: v.ExcelInfoId,
  570. Source: v.Source,
  571. EdbInfoId: edbInfoId,
  572. CreateTime: time.Now(),
  573. ModifyTime: time.Now(),
  574. })
  575. }
  576. err = excelModel.AddExcelEdbMappingMulti(excelEdbMappingList)
  577. if err != nil {
  578. fmt.Println(v.ExcelInfoId, "自定义表格关系保存失败,Err:"+err.Error())
  579. continue
  580. }
  581. }
  582. }
  583. }
  584. //// 修改混合序列表
  585. //{
  586. // // 获取时间序列表
  587. // mixTableExcelList, err := excelModel.GetAllExcelInfoBySource(utils.MIXED_TABLE)
  588. // if err != nil && err.Error() != utils.ErrNoRow() {
  589. // fmt.Println("获取时间序列表列表失败,Err:" + err.Error())
  590. // return
  591. // }
  592. //
  593. // for _, excelInfo := range mixTableExcelList {
  594. // var result request.MixedTableReq
  595. // err = json.Unmarshal([]byte(excelInfo.Content), &result)
  596. // if err != nil {
  597. // fmt.Println(excelInfo.ExcelInfoId, "修改混合序列表,json转结构体失败,Err:"+err.Error())
  598. // continue
  599. // }
  600. // newResult, tmpErr := excel.GetMixedTableCellData(result.Data)
  601. // if tmpErr != nil {
  602. // fmt.Println(excelInfo.ExcelInfoId, "获取最新的数据失败,Err:"+err.Error())
  603. // continue
  604. // }
  605. // edbInfoIdList := make([]int, 0)
  606. // edbInfoIdMap := make(map[int]int)
  607. // for _, tmpV := range newResult {
  608. // for _, v := range tmpV {
  609. // if v.EdbInfoId > 0 {
  610. // if _, ok := edbInfoIdMap[v.EdbInfoId]; !ok {
  611. // edbInfoIdMap[v.EdbInfoId] = v.EdbInfoId
  612. // edbInfoIdList = append(edbInfoIdList, v.EdbInfoId)
  613. // }
  614. // }
  615. // }
  616. // }
  617. //
  618. // if len(edbInfoIdList) > 0 {
  619. // excelEdbMappingList := make([]*excelModel.ExcelEdbMapping, 0)
  620. // for _, edbInfoId := range edbInfoIdList {
  621. // excelEdbMappingList = append(excelEdbMappingList, &excelModel.ExcelEdbMapping{
  622. // //ExcelEdbMappingId: 0,
  623. // ExcelInfoId: excelInfo.ExcelInfoId,
  624. // Source: excelInfo.Source,
  625. // EdbInfoId: edbInfoId,
  626. // CreateTime: time.Now(),
  627. // ModifyTime: time.Now(),
  628. // })
  629. // }
  630. // err = excelModel.AddExcelEdbMappingMulti(excelEdbMappingList)
  631. // if err != nil {
  632. // fmt.Println(excelInfo.ExcelInfoId, "混合表格关系保存失败,Err:"+err.Error())
  633. // continue
  634. // }
  635. // }
  636. //
  637. // }
  638. //
  639. //}
  640. fmt.Println("完成数据修复")
  641. }