edb_source_stat.go 27 KB

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