edb_source_stat.go 26 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007
  1. package data_stat
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/controllers"
  5. "eta/eta_api/models"
  6. "eta/eta_api/models/data_manage"
  7. "eta/eta_api/models/data_stat"
  8. "eta/eta_api/utils"
  9. "fmt"
  10. "github.com/rdlucklib/rdluck_tools/paging"
  11. "strings"
  12. "time"
  13. )
  14. // EdbSourceStatController 数据源统计表管理模块
  15. type EdbSourceStatController struct {
  16. controllers.BaseAuthController
  17. }
  18. // Column
  19. // @Title 数据源统计表自定义列列表
  20. // @Description 查询 数据源统计表自定义列列表
  21. // @Success 200 {object} data_stat.StatColumnList
  22. // @router /source_column [get]
  23. func (this *EdbSourceStatController) Column() {
  24. br := new(models.BaseResponse).Init()
  25. defer func() {
  26. this.Data["json"] = br
  27. this.ServeJSON()
  28. }()
  29. sysUser := this.SysUser
  30. if sysUser == nil {
  31. br.Msg = "请登录"
  32. br.ErrMsg = "请登录,SysUser Is Empty"
  33. br.Ret = 408
  34. return
  35. }
  36. columnType, _ := this.GetInt("ColumnType")
  37. if columnType <= 0 {
  38. br.Msg = "请选择表类型"
  39. return
  40. }
  41. tmpList, err := data_stat.GetStatColumn(columnType)
  42. if err != nil {
  43. br.Msg = "获取自定义列失败"
  44. br.ErrMsg = "获取自定义列失败,Err:" + err.Error()
  45. return
  46. }
  47. var list []*data_stat.EdbInfoStatColumnListItem
  48. for _, v := range tmpList {
  49. tmp := new(data_stat.EdbInfoStatColumnListItem)
  50. tmp.ColumnKey = v.ColumnKey
  51. tmp.IsShow = v.IsShow
  52. tmp.ColumnName = v.ColumnName
  53. tmp.Id = v.Id
  54. tmp.IsMust = v.IsMust
  55. tmp.IsSort = v.IsSort
  56. tmp.Type = v.Type
  57. list = append(list, tmp)
  58. }
  59. var statColumnList data_stat.StatColumnList
  60. statColumnList.List = list
  61. br.Ret = 200
  62. br.Success = true
  63. br.Msg = "获取成功"
  64. br.Data = statColumnList
  65. }
  66. // EditColumn
  67. // @Title 编辑数据源统计表自定义列
  68. // @Description 编辑 数据源统计表自定义列列表
  69. // @Success 200 {object} data_stat.StatColumnList
  70. // @router /source_column/edit [post]
  71. func (this *EdbSourceStatController) EditColumn() {
  72. br := new(models.BaseResponse).Init()
  73. defer func() {
  74. this.Data["json"] = br
  75. this.ServeJSON()
  76. }()
  77. sysUser := this.SysUser
  78. if sysUser == nil {
  79. br.Msg = "请登录"
  80. br.ErrMsg = "请登录,SysUser Is Empty"
  81. br.Ret = 408
  82. return
  83. }
  84. var req data_stat.EditStatColumnReq
  85. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  86. if err != nil {
  87. br.Msg = "参数解析异常!"
  88. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  89. return
  90. }
  91. if len(req.List) <= 0 {
  92. br.Msg = "请选择要修改的列"
  93. br.IsSendEmail = false
  94. return
  95. }
  96. tmpList, err := data_stat.GetAllStatColumn()
  97. if err != nil {
  98. br.Msg = "获取自定义列失败"
  99. br.ErrMsg = "获取自定义列失败,Err:" + err.Error()
  100. return
  101. }
  102. isMustMap := make(map[int]data_stat.EdbInfoStatColumn)
  103. if len(tmpList) > 0 {
  104. for _, v := range tmpList {
  105. if v.IsMust == 1 {
  106. isMustMap[v.Id] = v
  107. }
  108. }
  109. }
  110. var list []*data_stat.EdbInfoStatColumn
  111. for k, v := range req.List {
  112. if v.Id == 0 {
  113. br.Msg = "列序号不能为空"
  114. return
  115. }
  116. if v.IsShow == 0 {
  117. if exist, ok := isMustMap[v.Id]; ok {
  118. br.Msg = exist.ColumnName + "为必选列!"
  119. return
  120. }
  121. }
  122. tmp := new(data_stat.EdbInfoStatColumn)
  123. tmp.Id = v.Id
  124. tmp.Sort = k + 1
  125. tmp.IsShow = v.IsShow
  126. list = append(list, tmp)
  127. }
  128. err = data_stat.UpdateStatColumn(list)
  129. if err != nil {
  130. br.Msg = "更新自定义列操作失败!"
  131. br.ErrMsg = "更新自定义列操作失败,Err:" + err.Error()
  132. return
  133. }
  134. br.Ret = 200
  135. br.Success = true
  136. br.Msg = "获取成功"
  137. return
  138. }
  139. // EdbDeleteLog
  140. // @Title 查询删除指标列表
  141. // @Description 查询删除指标列表接口
  142. // @Success 200 {object} data_stat.GetEdbDeleteLogResp
  143. // @router /edb_delete_log [get]
  144. func (this *EdbSourceStatController) EdbDeleteLog() {
  145. br := new(models.BaseResponse).Init()
  146. defer func() {
  147. this.Data["json"] = br
  148. this.ServeJSON()
  149. }()
  150. sysUser := this.SysUser
  151. if sysUser == nil {
  152. br.Msg = "请登录"
  153. br.ErrMsg = "请登录,SysUser Is Empty"
  154. br.Ret = 408
  155. return
  156. }
  157. sortParamReq := this.GetString("SortParam", "")
  158. sortType := this.GetString("SortType", "desc")
  159. createTime := this.GetString("CreateTime", "")
  160. pageSize, _ := this.GetInt("PageSize")
  161. currentIndex, _ := this.GetInt("CurrentIndex")
  162. var startSize int
  163. if pageSize <= 0 {
  164. pageSize = utils.PageSize20
  165. }
  166. if currentIndex <= 0 {
  167. currentIndex = 1
  168. }
  169. startSize = paging.StartIndex(currentIndex, pageSize)
  170. condition := " and source = ?"
  171. var pars []interface{}
  172. pars = append(pars, utils.DATA_SOURCE_MYSTEEL_CHEMICAL)
  173. if createTime != "" {
  174. startT, err := time.ParseInLocation(utils.FormatDate, createTime, time.Local)
  175. if err != nil {
  176. br.Msg = "请求时间格式错误"
  177. return
  178. }
  179. endT := startT.AddDate(0, 0, 1)
  180. condition += " AND create_time >= ? AND create_time < ?"
  181. pars = append(pars, createTime, endT.Format(utils.FormatDate))
  182. }
  183. sortStr := ``
  184. sortParam := ``
  185. if sortParamReq != `` {
  186. switch sortParamReq {
  187. case "CreateTime":
  188. sortParam = "create_time"
  189. case "DataUpdateTime":
  190. sortParam = "data_update_time"
  191. case "ErDataUpdateDate":
  192. sortParam = "er_data_update_date"
  193. case "LatestDate":
  194. sortParam = "latest_date"
  195. case "StartDate":
  196. sortParam = "start_date"
  197. }
  198. if sortParam == "" {
  199. br.Msg = "请输入正确的排序字段"
  200. return
  201. }
  202. if strings.ToLower(sortType) != "asc" && strings.ToLower(sortType) != "desc" {
  203. br.Msg = "请输入正确的排序类型"
  204. return
  205. }
  206. sortStr = fmt.Sprintf(" order by %s %s, id desc ", sortParam, sortType)
  207. }
  208. total, err := data_stat.GetEdbDeleteLogCount(condition, pars)
  209. if err != nil {
  210. if err.Error() != utils.ErrNoRow() {
  211. br.Msg = "获取指标删除列表总数失败"
  212. br.ErrMsg = "获取指标删除列表总数失败,Err:" + err.Error()
  213. return
  214. } else {
  215. err = nil
  216. }
  217. }
  218. list := make([]*data_stat.EdbInfoDeleteLogItem, 0)
  219. page := paging.GetPaging(currentIndex, pageSize, total)
  220. if total == 0 {
  221. resp := data_stat.GetEdbDeleteLogResp{
  222. Paging: page,
  223. List: list,
  224. }
  225. br.Ret = 200
  226. br.Success = true
  227. br.Msg = "获取成功"
  228. br.Data = resp
  229. return
  230. }
  231. tmpList, err := data_stat.GetEdbDeleteLogByCondition(condition, pars, sortStr, pageSize, startSize)
  232. if err != nil {
  233. br.Msg = "获取指标删除列表失败"
  234. br.ErrMsg = "获取指标删除列表失败,Err:" + err.Error()
  235. return
  236. }
  237. for _, v := range tmpList {
  238. tmp := new(data_stat.EdbInfoDeleteLogItem)
  239. tmp.EdbCode = v.EdbCode
  240. tmp.EdbInfoId = v.EdbInfoId
  241. tmp.Id = v.Id
  242. tmp.StartDate = v.StartDate
  243. tmp.EndDate = v.EndDate
  244. tmp.Unit = v.Unit
  245. tmp.TerminalCode = v.TerminalCode
  246. tmp.CreateTime = v.CreateTime
  247. tmp.EdbCreateTime = v.EdbCreateTime
  248. tmp.Frequency = v.Frequency
  249. tmp.Source = v.Source
  250. tmp.SourceName = v.SourceName
  251. tmp.EdbName = v.EdbName
  252. tmp.EdbNameEn = v.EdbNameEn
  253. tmp.EdbNameSource = v.EdbNameSource
  254. tmp.LatestDate = v.LatestDate
  255. tmp.DelSysUserId = v.DelSysUserId
  256. tmp.DelSysUserRealName = v.DelSysUserRealName
  257. tmp.SysUserId = v.SysUserId
  258. tmp.SysUserRealName = v.SysUserRealName
  259. tmp.LatestValue = v.LatestValue
  260. if v.DataUpdateTime != utils.EmptyDateTimeStr {
  261. tmp.DataUpdateTime = v.DataUpdateTime
  262. }
  263. if v.ErDataUpdateDate != utils.EmptyDateStr {
  264. tmp.ErDataUpdateDate = v.ErDataUpdateDate
  265. }
  266. list = append(list, tmp)
  267. }
  268. resp := data_stat.GetEdbDeleteLogResp{
  269. Paging: page,
  270. List: list,
  271. }
  272. br.Ret = 200
  273. br.Success = true
  274. br.Msg = "获取成功"
  275. br.Data = resp
  276. }
  277. // EdbUpdateLog
  278. // @Title 查询指标信息变更列表
  279. // @Description 查询指标信息变更列表接口
  280. // @Success 200 {object} data_stat.GetEdbUpdateLogResp
  281. // @router /edb_update_log [get]
  282. func (this *EdbSourceStatController) EdbUpdateLog() {
  283. br := new(models.BaseResponse).Init()
  284. defer func() {
  285. this.Data["json"] = br
  286. this.ServeJSON()
  287. }()
  288. sysUser := this.SysUser
  289. if sysUser == nil {
  290. br.Msg = "请登录"
  291. br.ErrMsg = "请登录,SysUser Is Empty"
  292. br.Ret = 408
  293. return
  294. }
  295. sortParamReq := this.GetString("SortParam", "")
  296. sortType := this.GetString("SortType", "desc")
  297. createTime := this.GetString("CreateTime", "")
  298. updateType, _ := this.GetInt("UpdateType", -1)
  299. pageSize, _ := this.GetInt("PageSize")
  300. currentIndex, _ := this.GetInt("CurrentIndex")
  301. var startSize int
  302. if pageSize <= 0 {
  303. pageSize = utils.PageSize20
  304. }
  305. if currentIndex <= 0 {
  306. currentIndex = 1
  307. }
  308. startSize = paging.StartIndex(currentIndex, pageSize)
  309. condition := " and source = ? and (data_update_result=1 or data_update_result=0)"
  310. var pars []interface{}
  311. pars = append(pars, utils.DATA_SOURCE_MYSTEEL_CHEMICAL)
  312. if createTime != "" {
  313. startT, err := time.ParseInLocation(utils.FormatDate, createTime, time.Local)
  314. if err != nil {
  315. br.Msg = "请求时间格式错误"
  316. return
  317. }
  318. endT := startT.AddDate(0, 0, 1)
  319. condition += " AND create_time >= ? AND create_time < ?"
  320. pars = append(pars, createTime, endT.Format(utils.FormatDate))
  321. }
  322. if updateType >= 0 {
  323. condition += " AND update_type =? "
  324. pars = append(pars, updateType)
  325. }
  326. sortStr := ``
  327. sortParam := ``
  328. if sortParamReq != `` {
  329. switch sortParamReq {
  330. case "CreateTime":
  331. sortParam = "create_time"
  332. case "DataUpdateTime":
  333. sortParam = "data_update_time"
  334. case "ErDataUpdateDate":
  335. sortParam = "er_data_update_date"
  336. case "LatestDate":
  337. sortParam = "latest_date"
  338. case "StartDate":
  339. sortParam = "start_date"
  340. }
  341. if sortParam == "" {
  342. br.Msg = "请输入正确的排序字段"
  343. return
  344. }
  345. if strings.ToLower(sortType) != "asc" && strings.ToLower(sortType) != "desc" {
  346. br.Msg = "请输入正确的排序类型"
  347. return
  348. }
  349. sortStr = fmt.Sprintf(" order by %s %s, id desc ", sortParam, sortType)
  350. }
  351. total, err := data_stat.GetEdbUpdateLogCount(condition, pars)
  352. if err != nil {
  353. if err.Error() != utils.ErrNoRow() {
  354. br.Msg = "获取指标删除列表总数失败"
  355. br.ErrMsg = "获取指标删除列表总数失败,Err:" + err.Error()
  356. return
  357. } else {
  358. err = nil
  359. }
  360. }
  361. list := make([]*data_stat.EdbInfoUpdateLogItem, 0)
  362. page := paging.GetPaging(currentIndex, pageSize, total)
  363. if total == 0 {
  364. resp := data_stat.GetEdbUpdateLogResp{
  365. Paging: page,
  366. List: list,
  367. }
  368. br.Ret = 200
  369. br.Success = true
  370. br.Msg = "获取成功"
  371. br.Data = resp
  372. return
  373. }
  374. tmpList, err := data_stat.GetEdbUpdateLogByCondition(condition, pars, sortStr, pageSize, startSize)
  375. if err != nil {
  376. br.Msg = "获取指标更新列表失败"
  377. br.ErrMsg = "获取指标更新列表失败,Err:" + err.Error()
  378. return
  379. }
  380. for _, v := range tmpList {
  381. tmp := new(data_stat.EdbInfoUpdateLogItem)
  382. tmp.Id = v.Id
  383. tmp.EdbInfoId = v.EdbInfoId
  384. tmp.SourceName = v.SourceName
  385. tmp.Source = v.Source
  386. tmp.EdbCode = v.EdbCode
  387. tmp.EdbName = v.EdbName
  388. tmp.EdbNameSource = v.EdbNameSource
  389. tmp.Frequency = v.Frequency
  390. tmp.Unit = v.Unit
  391. tmp.StartDate = v.StartDate
  392. tmp.EndDate = v.EndDate
  393. tmp.SysUserId = v.SysUserId
  394. tmp.SysUserRealName = v.SysUserRealName
  395. tmp.UpdateSysUserRealName = v.UpdateSysUserRealName
  396. tmp.UpdateSysUserId = v.UpdateSysUserId
  397. tmp.UniqueCode = v.UniqueCode
  398. tmp.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
  399. tmp.LatestDate = v.LatestDate
  400. tmp.LatestValue = v.LatestValue
  401. tmp.TerminalCode = v.TerminalCode
  402. if v.DataUpdateTime != utils.EmptyDateTimeStr {
  403. tmp.DataUpdateTime = v.DataUpdateTime
  404. }
  405. if v.ErDataUpdateDate != utils.EmptyDateStr {
  406. tmp.ErDataUpdateDate = v.ErDataUpdateDate
  407. }
  408. list = append(list, tmp)
  409. }
  410. resp := data_stat.GetEdbUpdateLogResp{
  411. Paging: page,
  412. List: list,
  413. }
  414. br.Ret = 200
  415. br.Success = true
  416. br.Msg = "获取成功"
  417. br.Data = resp
  418. }
  419. // EdbUpdateStat
  420. // @Title 查询数据源明细列表
  421. // @Description 查询数据源明细列表接口
  422. // @Success 200 {object} data_stat.GetEdbUpdateStatResp
  423. // @router /edb_update_stat [get]
  424. func (this *EdbSourceStatController) EdbUpdateStat() {
  425. br := new(models.BaseResponse).Init()
  426. defer func() {
  427. this.Data["json"] = br
  428. this.ServeJSON()
  429. }()
  430. sysUser := this.SysUser
  431. if sysUser == nil {
  432. br.Msg = "请登录"
  433. br.ErrMsg = "请登录,SysUser Is Empty"
  434. br.Ret = 408
  435. return
  436. }
  437. sortParamReq := this.GetString("SortParam", "")
  438. sortType := this.GetString("SortType", "desc")
  439. terminalCode := this.GetString("TerminalCode", "")
  440. sysUserId := this.GetString("SysUserId", "")
  441. frequency := this.GetString("Frequency", "")
  442. keyWord := this.GetString("KeyWord", "") //指标编码/指标名称
  443. createTime := this.GetString("CreateTime", "")
  444. pageSize, _ := this.GetInt("PageSize")
  445. currentIndex, _ := this.GetInt("CurrentIndex")
  446. var startSize int
  447. if pageSize <= 0 {
  448. pageSize = utils.PageSize20
  449. }
  450. if currentIndex <= 0 {
  451. currentIndex = 1
  452. }
  453. startSize = paging.StartIndex(currentIndex, pageSize)
  454. condition := " and source = ?"
  455. var pars []interface{}
  456. pars = append(pars, utils.DATA_SOURCE_MYSTEEL_CHEMICAL)
  457. if createTime != "" {
  458. startT, err := time.ParseInLocation(utils.FormatDate, createTime, time.Local)
  459. if err != nil {
  460. br.Msg = "请求时间格式错误"
  461. return
  462. }
  463. endT := startT.AddDate(0, 0, 1)
  464. condition += " AND create_time >= ? AND create_time < ?"
  465. pars = append(pars, createTime, endT.Format(utils.FormatDate))
  466. }
  467. if terminalCode != "" {
  468. codeSlice := strings.Split(terminalCode, ",")
  469. condition += ` AND terminal_code IN (` + utils.GetOrmInReplace(len(codeSlice)) + `)`
  470. pars = append(pars, codeSlice)
  471. }
  472. if sysUserId != "" {
  473. sysUserIdSlice := strings.Split(sysUserId, ",")
  474. condition += ` AND sys_user_id IN (` + utils.GetOrmInReplace(len(sysUserIdSlice)) + `)`
  475. pars = append(pars, sysUserIdSlice)
  476. }
  477. if frequency != "" {
  478. frequencySlice := strings.Split(frequency, ",")
  479. condition += ` AND frequency IN (` + utils.GetOrmInReplace(len(frequencySlice)) + `)`
  480. pars = append(pars, frequencySlice)
  481. }
  482. if keyWord != "" {
  483. condition += ` AND (edb_name LIKE ? OR edb_code LIKE ? ) `
  484. pars = append(pars, "%"+keyWord+"%", "%"+keyWord+"%")
  485. }
  486. sortStr := ``
  487. sortParam := ``
  488. if sortParamReq != `` {
  489. switch sortParamReq {
  490. case "CreateTime":
  491. sortParam = "create_time"
  492. case "UpdateTime":
  493. sortParam = "update_time"
  494. case "DataUpdateTime":
  495. sortParam = "data_update_time"
  496. case "ErDataUpdateDate":
  497. sortParam = "er_data_update_date"
  498. case "LatestDate":
  499. sortParam = "latest_date"
  500. case "StartDate":
  501. sortParam = "start_date"
  502. }
  503. if sortParam == "" {
  504. br.Msg = "请输入正确的排序字段"
  505. return
  506. }
  507. if strings.ToLower(sortType) != "asc" && strings.ToLower(sortType) != "desc" {
  508. br.Msg = "请输入正确的排序类型"
  509. return
  510. }
  511. sortStr = fmt.Sprintf(" order by %s %s, id desc ", sortParam, sortType)
  512. }
  513. total, err := data_stat.GetEdbUpdateStatCount(condition, pars)
  514. if err != nil {
  515. if err.Error() != utils.ErrNoRow() {
  516. br.Msg = "获取指标列表总数失败"
  517. br.ErrMsg = "获取指标列表总数失败,Err:" + err.Error()
  518. return
  519. } else {
  520. err = nil
  521. }
  522. }
  523. list := make([]*data_stat.EdbInfoUpdateStatItemMore, 0)
  524. page := paging.GetPaging(currentIndex, pageSize, total)
  525. if total == 0 {
  526. resp := data_stat.GetEdbUpdateStatResp{
  527. Paging: page,
  528. List: list,
  529. }
  530. br.Ret = 200
  531. br.Success = true
  532. br.Msg = "获取成功"
  533. br.Data = resp
  534. return
  535. }
  536. tmpList, err := data_stat.GetEdbUpdateStatByCondition(condition, pars, sortStr, pageSize, startSize)
  537. if err != nil {
  538. br.Msg = "获取指标更新列表失败"
  539. br.ErrMsg = "获取指标更新列表失败,Err:" + err.Error()
  540. return
  541. }
  542. // 获取初始数据源名称
  543. var edbCodeList []string
  544. for _, v := range tmpList {
  545. edbCodeList = append(edbCodeList, v.EdbCode)
  546. }
  547. initSourceMap := make(map[string]string)
  548. if len(edbCodeList) > 0 {
  549. baseCond := " and index_code in (" + utils.GetOrmInReplace(len(edbCodeList)) + ")"
  550. var basePars []interface{}
  551. basePars = append(basePars, edbCodeList)
  552. indexList, tErr := data_manage.GetMysteelChemicalIndexList(baseCond, basePars, 0, 1000)
  553. if tErr != nil {
  554. br.Msg = "获取初始指标信息失败"
  555. br.ErrMsg = "获取初始指标信息失败,Err:" + tErr.Error()
  556. return
  557. }
  558. for _, v := range indexList {
  559. initSourceMap[v.IndexCode] = v.Source
  560. }
  561. }
  562. for _, v := range tmpList {
  563. tmp := new(data_stat.EdbInfoUpdateStatItemMore)
  564. tmp.Id = v.Id
  565. tmp.EdbInfoId = v.EdbInfoId
  566. tmp.SourceName = v.SourceName
  567. tmp.Source = v.Source
  568. tmp.EdbCode = v.EdbCode
  569. tmp.EdbName = v.EdbName
  570. tmp.EdbNameSource = v.EdbNameSource
  571. tmp.Frequency = v.Frequency
  572. tmp.Unit = v.Unit
  573. tmp.StartDate = v.StartDate
  574. tmp.SysUserId = v.SysUserId
  575. tmp.SysUserRealName = v.SysUserRealName
  576. tmp.LatestDate = v.LatestDate
  577. tmp.LatestValue = v.LatestValue
  578. tmp.TerminalCode = v.TerminalCode
  579. if v.DataUpdateTime != utils.EmptyDateTimeStr {
  580. tmp.DataUpdateTime = v.DataUpdateTime
  581. }
  582. if v.ErDataUpdateDate != utils.EmptyDateStr {
  583. tmp.ErDataUpdateDate = v.ErDataUpdateDate
  584. }
  585. tmp.DataUpdateResult = v.DataUpdateResult
  586. tmp.DataUpdateFailedReason = v.DataUpdateFailedReason
  587. if v.UpdateTime != utils.EmptyDateTimeStr {
  588. tmp.UpdateTime = v.UpdateTime
  589. }
  590. tmp.IsAdd = v.IsAdd
  591. tmp.NeedRefresh = v.NeedRefresh
  592. tmp.HasRefresh = v.HasRefresh
  593. tmp.InitSourceName, _ = initSourceMap[v.EdbCode]
  594. list = append(list, tmp)
  595. }
  596. resp := data_stat.GetEdbUpdateStatResp{
  597. Paging: page,
  598. List: list,
  599. }
  600. br.Ret = 200
  601. br.Success = true
  602. br.Msg = "获取成功"
  603. br.Data = resp
  604. }
  605. // EdbSourceStat
  606. // @Title 查询数据源统计列表
  607. // @Description 查询数据源统计列表接口
  608. // @Success 200 {object} data_stat.GetEdbUpdateLogResp
  609. // @router /source_stat [get]
  610. func (this *EdbSourceStatController) EdbSourceStat() {
  611. br := new(models.BaseResponse).Init()
  612. defer func() {
  613. this.Data["json"] = br
  614. this.ServeJSON()
  615. }()
  616. sysUser := this.SysUser
  617. if sysUser == nil {
  618. br.Msg = "请登录"
  619. br.ErrMsg = "请登录,SysUser Is Empty"
  620. br.Ret = 408
  621. return
  622. }
  623. sortParamReq := this.GetString("SortParam", "")
  624. sortType := this.GetString("SortType", "desc")
  625. createTime := this.GetString("CreateTime", "")
  626. pageSize, _ := this.GetInt("PageSize")
  627. currentIndex, _ := this.GetInt("CurrentIndex")
  628. var startSize int
  629. if pageSize <= 0 {
  630. pageSize = utils.PageSize20
  631. }
  632. if currentIndex <= 0 {
  633. currentIndex = 1
  634. }
  635. startSize = paging.StartIndex(currentIndex, pageSize)
  636. condition := " and source = ?"
  637. var pars []interface{}
  638. pars = append(pars, utils.DATA_SOURCE_MYSTEEL_CHEMICAL)
  639. if createTime != "" {
  640. startT, err := time.ParseInLocation(utils.FormatDate, createTime, time.Local)
  641. if err != nil {
  642. br.Msg = "请求时间格式错误"
  643. return
  644. }
  645. endT := startT.AddDate(0, 0, 1)
  646. condition += " AND create_time >= ? AND create_time < ?"
  647. pars = append(pars, createTime, endT.Format(utils.FormatDate))
  648. }
  649. sortStr := ``
  650. sortParam := ``
  651. if sortParamReq != `` {
  652. switch sortParamReq {
  653. case "EdbNum":
  654. sortParam = "edb_num"
  655. case "NeedRefreshNum":
  656. sortParam = "need_refresh_num"
  657. case "hasRefreshNum":
  658. sortParam = "has_refresh_num"
  659. case "UpdateSuccessNum":
  660. sortParam = "update_success_num"
  661. case "UpdateFailedNum":
  662. sortParam = "update_failed_num"
  663. }
  664. if sortParam == "" {
  665. br.Msg = "请输入正确的排序字段"
  666. return
  667. }
  668. if strings.ToLower(sortType) != "asc" && strings.ToLower(sortType) != "desc" {
  669. br.Msg = "请输入正确的排序类型"
  670. return
  671. }
  672. sortStr = fmt.Sprintf(" order by %s %s, id desc ", sortParam, sortType)
  673. }
  674. total, err := data_stat.GetEdbSourceStatCount(condition, pars)
  675. if err != nil {
  676. if err.Error() != utils.ErrNoRow() {
  677. br.Msg = "获取数据源统计列表总数失败"
  678. br.ErrMsg = "获取数据源统计列表总数失败,Err:" + err.Error()
  679. return
  680. } else {
  681. err = nil
  682. }
  683. }
  684. list := make([]*data_stat.EdbInfoSourceStatItem, 0)
  685. page := paging.GetPaging(currentIndex, pageSize, total)
  686. if total == 0 {
  687. resp := data_stat.GetEdbSourceStatResp{
  688. Paging: page,
  689. List: list,
  690. }
  691. br.Ret = 200
  692. br.Success = true
  693. br.Msg = "获取成功"
  694. br.Data = resp
  695. return
  696. }
  697. tmpList, err := data_stat.GetEdbSourceStatByCondition(condition, pars, sortStr, pageSize, startSize)
  698. if err != nil {
  699. br.Msg = "获取指标删除列表失败"
  700. br.ErrMsg = "获取指标删除列表失败,Err:" + err.Error()
  701. return
  702. }
  703. for _, v := range tmpList {
  704. tmp := new(data_stat.EdbInfoSourceStatItem)
  705. tmp.Id = v.Id
  706. tmp.SourceName = v.SourceName
  707. tmp.Source = v.Source
  708. tmp.TerminalCode = v.TerminalCode
  709. tmp.EdbNum = v.EdbNum
  710. tmp.EdbNewNum = v.EdbNewNum
  711. tmp.EdbDelNum = v.EdbDelNum
  712. tmp.NeedRefreshNum = v.NeedRefreshNum
  713. tmp.HasRefreshNum = v.HasRefreshNum
  714. tmp.UpdateSuccessNum = v.UpdateSuccessNum
  715. tmp.UpdateFailedNum = v.UpdateFailedNum
  716. tmp.RefreshSuccessNum = v.RefreshSuccessNum
  717. tmp.RefreshFailedNum = v.RefreshFailedNum
  718. list = append(list, tmp)
  719. }
  720. resp := data_stat.GetEdbSourceStatResp{
  721. Paging: page,
  722. List: list,
  723. }
  724. br.Ret = 200
  725. br.Success = true
  726. br.Msg = "获取成功"
  727. br.Data = resp
  728. }
  729. // EdbUpdateFailedList
  730. // @Title 查询指标更新失败详情汇总列表
  731. // @Description 查询指标更新失败详情汇总列表
  732. // @Success 200 {object} data_stat.GetEdbUpdateLogResp
  733. // @router /edb_update_stat/failed [get]
  734. func (this *EdbSourceStatController) EdbUpdateFailedList() {
  735. br := new(models.BaseResponse).Init()
  736. defer func() {
  737. this.Data["json"] = br
  738. this.ServeJSON()
  739. }()
  740. sysUser := this.SysUser
  741. if sysUser == nil {
  742. br.Msg = "请登录"
  743. br.ErrMsg = "请登录,SysUser Is Empty"
  744. br.Ret = 408
  745. return
  746. }
  747. terminalCode := this.GetString("TerminalCode", "")
  748. createTime := this.GetString("CreateTime", "")
  749. if terminalCode == "" {
  750. br.Msg = "请选择对应的终端信息"
  751. return
  752. }
  753. terminalInfo, err := data_manage.GetEdbTerminalByTerminalCode(terminalCode)
  754. if err != nil {
  755. if err.Error() == utils.ErrNoRow() {
  756. br.Msg = "终端不存在"
  757. return
  758. }
  759. br.Msg = "查询终端信息出错"
  760. br.ErrMsg = "查询终端信息出错 Err:" + err.Error()
  761. return
  762. }
  763. condition := " and source = ? and terminal_code = ?"
  764. var pars []interface{}
  765. pars = append(pars, utils.DATA_SOURCE_MYSTEEL_CHEMICAL, terminalCode)
  766. if createTime != "" {
  767. startT, err := time.ParseInLocation(utils.FormatDate, createTime, time.Local)
  768. if err != nil {
  769. br.Msg = "请求时间格式错误"
  770. return
  771. }
  772. endT := startT.AddDate(0, 0, 1)
  773. condition += " AND create_time >= ? AND create_time < ?"
  774. pars = append(pars, createTime, endT.Format(utils.FormatDate))
  775. }
  776. tmpList, err := data_stat.GetEdbUpdateStatFailedGroupByCondition(condition, pars)
  777. if err != nil {
  778. br.Msg = "获取指标更新失败详情列表 失败"
  779. br.ErrMsg = "获取指标更新失败详情列表 失败,Err:" + err.Error()
  780. return
  781. }
  782. list := make([]*data_stat.EdbUpdateFailedList, 0)
  783. successNum := 0
  784. failedNum := 0
  785. if len(tmpList) > 0 {
  786. for _, v := range tmpList {
  787. if v.SourceUpdateResult == 1 {
  788. successNum += v.Num
  789. } else {
  790. failedNum += v.Num
  791. list = append(list, v)
  792. }
  793. }
  794. }
  795. resp := data_stat.GetEdbUpdateFailedResp{
  796. List: list,
  797. Name: terminalInfo.Name,
  798. TerminalCode: terminalCode,
  799. DirPath: terminalInfo.DirPath,
  800. UpdateSuccessNum: successNum,
  801. UpdateFailedNum: failedNum,
  802. }
  803. br.Ret = 200
  804. br.Success = true
  805. br.Msg = "获取成功"
  806. br.Data = resp
  807. }
  808. // EdbUpdateFailedDetailList
  809. // @Title 查询指标更新失败详情列表
  810. // @Description 查询指标更新失败详情列表
  811. // @Success 200 {object} data_stat.GetEdbUpdateLogResp
  812. // @router /edb_update_stat/failed/detail [get]
  813. func (this *EdbSourceStatController) EdbUpdateFailedDetailList() {
  814. br := new(models.BaseResponse).Init()
  815. defer func() {
  816. this.Data["json"] = br
  817. this.ServeJSON()
  818. }()
  819. sysUser := this.SysUser
  820. if sysUser == nil {
  821. br.Msg = "请登录"
  822. br.ErrMsg = "请登录,SysUser Is Empty"
  823. br.Ret = 408
  824. return
  825. }
  826. pageSize, _ := this.GetInt("PageSize")
  827. currentIndex, _ := this.GetInt("CurrentIndex")
  828. var startSize int
  829. if pageSize <= 0 {
  830. pageSize = utils.PageSize20
  831. }
  832. if currentIndex <= 0 {
  833. currentIndex = 1
  834. }
  835. startSize = paging.StartIndex(currentIndex, pageSize)
  836. terminalCode := this.GetString("TerminalCode", "")
  837. createTime := this.GetString("CreateTime", "")
  838. frequency := this.GetString("Frequency", "")
  839. sourceUpdateFailedReason := this.GetString("SourceUpdateFailedReason", "")
  840. if createTime == "" {
  841. br.Msg = "请选择创建时间"
  842. return
  843. }
  844. if terminalCode == "" {
  845. br.Msg = "请选择对应的终端信息"
  846. return
  847. }
  848. if frequency == "" {
  849. br.Msg = "请选择对应的频度"
  850. return
  851. }
  852. condition := " and source = ? and terminal_code = ? and frequency=? and data_update_failed_reason=? and data_update_result = 2"
  853. var pars []interface{}
  854. pars = append(pars, utils.DATA_SOURCE_MYSTEEL_CHEMICAL, terminalCode, frequency, sourceUpdateFailedReason)
  855. if createTime != "" {
  856. startT, err := time.ParseInLocation(utils.FormatDate, createTime, time.Local)
  857. if err != nil {
  858. br.Msg = "请求时间格式错误"
  859. return
  860. }
  861. endT := startT.AddDate(0, 0, 1)
  862. condition += " AND create_time >= ? AND create_time < ?"
  863. pars = append(pars, createTime, endT.Format(utils.FormatDate))
  864. }
  865. total, err := data_stat.GetEdbUpdateStatCount(condition, pars)
  866. if err != nil {
  867. if err.Error() != utils.ErrNoRow() {
  868. br.Msg = "获取指标列表总数失败"
  869. br.ErrMsg = "获取指标列表总数失败,Err:" + err.Error()
  870. return
  871. } else {
  872. err = nil
  873. }
  874. }
  875. list := make([]*data_stat.EdbInfoUpdateStatItemMore, 0)
  876. page := paging.GetPaging(currentIndex, pageSize, total)
  877. if total == 0 {
  878. resp := data_stat.GetEdbUpdateStatResp{
  879. Paging: page,
  880. List: list,
  881. }
  882. br.Ret = 200
  883. br.Success = true
  884. br.Msg = "获取成功"
  885. br.Data = resp
  886. return
  887. }
  888. tmpList, err := data_stat.GetEdbUpdateStatByCondition(condition, pars, "", pageSize, startSize)
  889. if err != nil {
  890. br.Msg = "获取指标更新列表失败"
  891. br.ErrMsg = "获取指标更新列表失败,Err:" + err.Error()
  892. return
  893. }
  894. for _, v := range tmpList {
  895. tmp := new(data_stat.EdbInfoUpdateStatItemMore)
  896. tmp.Id = v.Id
  897. tmp.EdbInfoId = v.EdbInfoId
  898. tmp.SourceName = v.SourceName
  899. tmp.Source = v.Source
  900. tmp.EdbCode = v.EdbCode
  901. tmp.EdbName = v.EdbName
  902. tmp.EdbNameSource = v.EdbNameSource
  903. tmp.Frequency = v.Frequency
  904. tmp.Unit = v.Unit
  905. tmp.StartDate = v.StartDate
  906. tmp.SysUserId = v.SysUserId
  907. tmp.SysUserRealName = v.SysUserRealName
  908. tmp.LatestDate = v.LatestDate
  909. tmp.LatestValue = v.LatestValue
  910. tmp.TerminalCode = v.TerminalCode
  911. tmp.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
  912. if v.DataUpdateTime != utils.EmptyDateTimeStr {
  913. tmp.DataUpdateTime = v.DataUpdateTime
  914. }
  915. if v.ErDataUpdateDate != utils.EmptyDateStr {
  916. tmp.ErDataUpdateDate = v.ErDataUpdateDate
  917. }
  918. tmp.DataUpdateResult = v.DataUpdateResult
  919. tmp.DataUpdateFailedReason = v.DataUpdateFailedReason
  920. if v.UpdateTime != utils.EmptyDateTimeStr {
  921. tmp.UpdateTime = v.UpdateTime
  922. }
  923. tmp.IsAdd = v.IsAdd
  924. tmp.NeedRefresh = v.NeedRefresh
  925. tmp.HasRefresh = v.HasRefresh
  926. list = append(list, tmp)
  927. }
  928. resp := data_stat.GetEdbUpdateStatResp{
  929. Paging: page,
  930. List: list,
  931. }
  932. br.Ret = 200
  933. br.Success = true
  934. br.Msg = "获取成功"
  935. br.Data = resp
  936. }