edb_source_stat.go 26 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003
  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. pageSize, _ := this.GetInt("PageSize")
  299. currentIndex, _ := this.GetInt("CurrentIndex")
  300. var startSize int
  301. if pageSize <= 0 {
  302. pageSize = utils.PageSize20
  303. }
  304. if currentIndex <= 0 {
  305. currentIndex = 1
  306. }
  307. startSize = paging.StartIndex(currentIndex, pageSize)
  308. condition := " and source = ? and (data_update_result=1 or data_update_result=0)"
  309. var pars []interface{}
  310. pars = append(pars, utils.DATA_SOURCE_MYSTEEL_CHEMICAL)
  311. if createTime != "" {
  312. startT, err := time.ParseInLocation(utils.FormatDate, createTime, time.Local)
  313. if err != nil {
  314. br.Msg = "请求时间格式错误"
  315. return
  316. }
  317. endT := startT.AddDate(0, 0, 1)
  318. condition += " AND create_time >= ? AND create_time < ?"
  319. pars = append(pars, createTime, endT.Format(utils.FormatDate))
  320. }
  321. sortStr := ``
  322. sortParam := ``
  323. if sortParamReq != `` {
  324. switch sortParamReq {
  325. case "CreateTime":
  326. sortParam = "create_time"
  327. case "DataUpdateTime":
  328. sortParam = "data_update_time"
  329. case "ErDataUpdateDate":
  330. sortParam = "er_data_update_date"
  331. case "LatestDate":
  332. sortParam = "latest_date"
  333. case "StartDate":
  334. sortParam = "start_date"
  335. }
  336. if sortParam == "" {
  337. br.Msg = "请输入正确的排序字段"
  338. return
  339. }
  340. if strings.ToLower(sortType) != "asc" && strings.ToLower(sortType) != "desc" {
  341. br.Msg = "请输入正确的排序类型"
  342. return
  343. }
  344. sortStr = fmt.Sprintf(" order by %s %s, id desc ", sortParam, sortType)
  345. }
  346. total, err := data_stat.GetEdbUpdateLogCount(condition, pars)
  347. if err != nil {
  348. if err.Error() != utils.ErrNoRow() {
  349. br.Msg = "获取指标删除列表总数失败"
  350. br.ErrMsg = "获取指标删除列表总数失败,Err:" + err.Error()
  351. return
  352. } else {
  353. err = nil
  354. }
  355. }
  356. list := make([]*data_stat.EdbInfoUpdateLogItem, 0)
  357. page := paging.GetPaging(currentIndex, pageSize, total)
  358. if total == 0 {
  359. resp := data_stat.GetEdbUpdateLogResp{
  360. Paging: page,
  361. List: list,
  362. }
  363. br.Ret = 200
  364. br.Success = true
  365. br.Msg = "获取成功"
  366. br.Data = resp
  367. return
  368. }
  369. tmpList, err := data_stat.GetEdbUpdateLogByCondition(condition, pars, sortStr, pageSize, startSize)
  370. if err != nil {
  371. br.Msg = "获取指标更新列表失败"
  372. br.ErrMsg = "获取指标更新列表失败,Err:" + err.Error()
  373. return
  374. }
  375. for _, v := range tmpList {
  376. tmp := new(data_stat.EdbInfoUpdateLogItem)
  377. tmp.Id = v.Id
  378. tmp.EdbInfoId = v.EdbInfoId
  379. tmp.SourceName = v.SourceName
  380. tmp.Source = v.Source
  381. tmp.EdbCode = v.EdbCode
  382. tmp.EdbName = v.EdbName
  383. tmp.EdbNameSource = v.EdbNameSource
  384. tmp.Frequency = v.Frequency
  385. tmp.Unit = v.Unit
  386. tmp.StartDate = v.StartDate
  387. tmp.EndDate = v.EndDate
  388. tmp.SysUserId = v.SysUserId
  389. tmp.SysUserRealName = v.SysUserRealName
  390. tmp.UpdateSysUserRealName = v.UpdateSysUserRealName
  391. tmp.UpdateSysUserId = v.UpdateSysUserId
  392. tmp.UniqueCode = v.UniqueCode
  393. tmp.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
  394. tmp.LatestDate = v.LatestDate
  395. tmp.LatestValue = v.LatestValue
  396. tmp.TerminalCode = v.TerminalCode
  397. if v.DataUpdateTime != utils.EmptyDateTimeStr {
  398. tmp.DataUpdateTime = v.DataUpdateTime
  399. }
  400. if v.ErDataUpdateDate != utils.EmptyDateStr {
  401. tmp.ErDataUpdateDate = v.ErDataUpdateDate
  402. }
  403. list = append(list, tmp)
  404. }
  405. resp := data_stat.GetEdbUpdateLogResp{
  406. Paging: page,
  407. List: list,
  408. }
  409. br.Ret = 200
  410. br.Success = true
  411. br.Msg = "获取成功"
  412. br.Data = resp
  413. }
  414. // EdbUpdateStat
  415. // @Title 查询数据源明细列表
  416. // @Description 查询数据源明细列表接口
  417. // @Success 200 {object} data_stat.GetEdbUpdateStatResp
  418. // @router /edb_update_stat [get]
  419. func (this *EdbSourceStatController) EdbUpdateStat() {
  420. br := new(models.BaseResponse).Init()
  421. defer func() {
  422. this.Data["json"] = br
  423. this.ServeJSON()
  424. }()
  425. sysUser := this.SysUser
  426. if sysUser == nil {
  427. br.Msg = "请登录"
  428. br.ErrMsg = "请登录,SysUser Is Empty"
  429. br.Ret = 408
  430. return
  431. }
  432. sortParamReq := this.GetString("SortParam", "")
  433. sortType := this.GetString("SortType", "desc")
  434. terminalCode := this.GetString("TerminalCode", "")
  435. sysUserId := this.GetString("SysUserId", "")
  436. frequency := this.GetString("Frequency", "")
  437. keyWord := this.GetString("KeyWord", "") //指标编码/指标名称
  438. createTime := this.GetString("CreateTime", "")
  439. pageSize, _ := this.GetInt("PageSize")
  440. currentIndex, _ := this.GetInt("CurrentIndex")
  441. var startSize int
  442. if pageSize <= 0 {
  443. pageSize = utils.PageSize20
  444. }
  445. if currentIndex <= 0 {
  446. currentIndex = 1
  447. }
  448. startSize = paging.StartIndex(currentIndex, pageSize)
  449. condition := " and source = ?"
  450. var pars []interface{}
  451. pars = append(pars, utils.DATA_SOURCE_MYSTEEL_CHEMICAL)
  452. if createTime != "" {
  453. startT, err := time.ParseInLocation(utils.FormatDate, createTime, time.Local)
  454. if err != nil {
  455. br.Msg = "请求时间格式错误"
  456. return
  457. }
  458. endT := startT.AddDate(0, 0, 1)
  459. condition += " AND create_time >= ? AND create_time < ?"
  460. pars = append(pars, createTime, endT.Format(utils.FormatDate))
  461. }
  462. if terminalCode != "" {
  463. codeSlice := strings.Split(terminalCode, ",")
  464. condition += ` AND terminal_code IN (` + utils.GetOrmInReplace(len(codeSlice)) + `)`
  465. pars = append(pars, codeSlice)
  466. }
  467. if sysUserId != "" {
  468. sysUserIdSlice := strings.Split(sysUserId, ",")
  469. condition += ` AND sys_user_id IN (` + utils.GetOrmInReplace(len(sysUserIdSlice)) + `)`
  470. pars = append(pars, sysUserIdSlice)
  471. }
  472. if frequency != "" {
  473. frequencySlice := strings.Split(frequency, ",")
  474. condition += ` AND frequency IN (` + utils.GetOrmInReplace(len(frequencySlice)) + `)`
  475. pars = append(pars, frequencySlice)
  476. }
  477. if keyWord != "" {
  478. condition += ` AND (edb_name LIKE ? OR edb_code LIKE ? ) `
  479. pars = append(pars, "%"+keyWord+"%", "%"+keyWord+"%")
  480. }
  481. sortStr := ``
  482. sortParam := ``
  483. if sortParamReq != `` {
  484. switch sortParamReq {
  485. case "CreateTime":
  486. sortParam = "create_time"
  487. case "UpdateTime":
  488. sortParam = "update_time"
  489. case "DataUpdateTime":
  490. sortParam = "data_update_time"
  491. case "ErDataUpdateDate":
  492. sortParam = "er_data_update_date"
  493. case "LatestDate":
  494. sortParam = "latest_date"
  495. case "StartDate":
  496. sortParam = "start_date"
  497. }
  498. if sortParam == "" {
  499. br.Msg = "请输入正确的排序字段"
  500. return
  501. }
  502. if strings.ToLower(sortType) != "asc" && strings.ToLower(sortType) != "desc" {
  503. br.Msg = "请输入正确的排序类型"
  504. return
  505. }
  506. sortStr = fmt.Sprintf(" order by %s %s, id desc ", sortParam, sortType)
  507. }
  508. total, err := data_stat.GetEdbUpdateStatCount(condition, pars)
  509. if err != nil {
  510. if err.Error() != utils.ErrNoRow() {
  511. br.Msg = "获取指标列表总数失败"
  512. br.ErrMsg = "获取指标列表总数失败,Err:" + err.Error()
  513. return
  514. } else {
  515. err = nil
  516. }
  517. }
  518. list := make([]*data_stat.EdbInfoUpdateStatItemMore, 0)
  519. page := paging.GetPaging(currentIndex, pageSize, total)
  520. if total == 0 {
  521. resp := data_stat.GetEdbUpdateStatResp{
  522. Paging: page,
  523. List: list,
  524. }
  525. br.Ret = 200
  526. br.Success = true
  527. br.Msg = "获取成功"
  528. br.Data = resp
  529. return
  530. }
  531. tmpList, err := data_stat.GetEdbUpdateStatByCondition(condition, pars, sortStr, pageSize, startSize)
  532. if err != nil {
  533. br.Msg = "获取指标更新列表失败"
  534. br.ErrMsg = "获取指标更新列表失败,Err:" + err.Error()
  535. return
  536. }
  537. // 获取初始数据源名称
  538. var edbCodeList []string
  539. for _, v := range tmpList {
  540. edbCodeList = append(edbCodeList, v.EdbCode)
  541. }
  542. initSourceMap := make(map[string]string)
  543. if len(edbCodeList) > 0 {
  544. baseCond := " and index_code in (" + utils.GetOrmInReplace(len(edbCodeList)) + ")"
  545. var basePars []interface{}
  546. basePars = append(basePars, edbCodeList)
  547. indexList, tErr := data_manage.GetMysteelChemicalIndexList(baseCond, basePars, 0, 1000)
  548. if tErr != nil {
  549. br.Msg = "获取初始指标信息失败"
  550. br.ErrMsg = "获取初始指标信息失败,Err:" + tErr.Error()
  551. return
  552. }
  553. for _, v := range indexList {
  554. initSourceMap[v.IndexCode] = v.Source
  555. }
  556. }
  557. for _, v := range tmpList {
  558. tmp := new(data_stat.EdbInfoUpdateStatItemMore)
  559. tmp.Id = v.Id
  560. tmp.EdbInfoId = v.EdbInfoId
  561. tmp.SourceName = v.SourceName
  562. tmp.Source = v.Source
  563. tmp.EdbCode = v.EdbCode
  564. tmp.EdbName = v.EdbName
  565. tmp.EdbNameSource = v.EdbNameSource
  566. tmp.Frequency = v.Frequency
  567. tmp.Unit = v.Unit
  568. tmp.StartDate = v.StartDate
  569. tmp.SysUserId = v.SysUserId
  570. tmp.SysUserRealName = v.SysUserRealName
  571. tmp.LatestDate = v.LatestDate
  572. tmp.LatestValue = v.LatestValue
  573. tmp.TerminalCode = v.TerminalCode
  574. if v.DataUpdateTime != utils.EmptyDateTimeStr {
  575. tmp.DataUpdateTime = v.DataUpdateTime
  576. }
  577. if v.ErDataUpdateDate != utils.EmptyDateStr {
  578. tmp.ErDataUpdateDate = v.ErDataUpdateDate
  579. }
  580. tmp.DataUpdateResult = v.DataUpdateResult
  581. tmp.DataUpdateFailedReason = v.DataUpdateFailedReason
  582. if v.UpdateTime != utils.EmptyDateTimeStr {
  583. tmp.UpdateTime = v.UpdateTime
  584. }
  585. tmp.IsAdd = v.IsAdd
  586. tmp.NeedRefresh = v.NeedRefresh
  587. tmp.HasRefresh = v.HasRefresh
  588. tmp.InitSourceName, _ = initSourceMap[v.EdbCode]
  589. list = append(list, tmp)
  590. }
  591. resp := data_stat.GetEdbUpdateStatResp{
  592. Paging: page,
  593. List: list,
  594. }
  595. br.Ret = 200
  596. br.Success = true
  597. br.Msg = "获取成功"
  598. br.Data = resp
  599. }
  600. // EdbSourceStat
  601. // @Title 查询数据源统计列表
  602. // @Description 查询数据源统计列表接口
  603. // @Success 200 {object} data_stat.GetEdbUpdateLogResp
  604. // @router /source_stat [get]
  605. func (this *EdbSourceStatController) EdbSourceStat() {
  606. br := new(models.BaseResponse).Init()
  607. defer func() {
  608. this.Data["json"] = br
  609. this.ServeJSON()
  610. }()
  611. sysUser := this.SysUser
  612. if sysUser == nil {
  613. br.Msg = "请登录"
  614. br.ErrMsg = "请登录,SysUser Is Empty"
  615. br.Ret = 408
  616. return
  617. }
  618. sortParamReq := this.GetString("SortParam", "")
  619. sortType := this.GetString("SortType", "desc")
  620. createTime := this.GetString("CreateTime", "")
  621. pageSize, _ := this.GetInt("PageSize")
  622. currentIndex, _ := this.GetInt("CurrentIndex")
  623. var startSize int
  624. if pageSize <= 0 {
  625. pageSize = utils.PageSize20
  626. }
  627. if currentIndex <= 0 {
  628. currentIndex = 1
  629. }
  630. startSize = paging.StartIndex(currentIndex, pageSize)
  631. condition := " and source = ?"
  632. var pars []interface{}
  633. pars = append(pars, utils.DATA_SOURCE_MYSTEEL_CHEMICAL)
  634. if createTime != "" {
  635. startT, err := time.ParseInLocation(utils.FormatDate, createTime, time.Local)
  636. if err != nil {
  637. br.Msg = "请求时间格式错误"
  638. return
  639. }
  640. endT := startT.AddDate(0, 0, 1)
  641. condition += " AND create_time >= ? AND create_time < ?"
  642. pars = append(pars, createTime, endT.Format(utils.FormatDate))
  643. }
  644. sortStr := ``
  645. sortParam := ``
  646. if sortParamReq != `` {
  647. switch sortParamReq {
  648. case "EdbNum":
  649. sortParam = "edb_num"
  650. case "NeedRefreshNum":
  651. sortParam = "need_refresh_num"
  652. case "hasRefreshNum":
  653. sortParam = "has_refresh_num"
  654. case "UpdateSuccessNum":
  655. sortParam = "update_success_num"
  656. case "UpdateFailedNum":
  657. sortParam = "update_failed_num"
  658. }
  659. if sortParam == "" {
  660. br.Msg = "请输入正确的排序字段"
  661. return
  662. }
  663. if strings.ToLower(sortType) != "asc" && strings.ToLower(sortType) != "desc" {
  664. br.Msg = "请输入正确的排序类型"
  665. return
  666. }
  667. sortStr = fmt.Sprintf(" order by %s %s, id desc ", sortParam, sortType)
  668. }
  669. total, err := data_stat.GetEdbSourceStatCount(condition, pars)
  670. if err != nil {
  671. if err.Error() != utils.ErrNoRow() {
  672. br.Msg = "获取数据源统计列表总数失败"
  673. br.ErrMsg = "获取数据源统计列表总数失败,Err:" + err.Error()
  674. return
  675. } else {
  676. err = nil
  677. }
  678. }
  679. list := make([]*data_stat.EdbInfoSourceStatItem, 0)
  680. page := paging.GetPaging(currentIndex, pageSize, total)
  681. if total == 0 {
  682. resp := data_stat.GetEdbSourceStatResp{
  683. Paging: page,
  684. List: list,
  685. }
  686. br.Ret = 200
  687. br.Success = true
  688. br.Msg = "获取成功"
  689. br.Data = resp
  690. return
  691. }
  692. tmpList, err := data_stat.GetEdbSourceStatByCondition(condition, pars, sortStr, pageSize, startSize)
  693. if err != nil {
  694. br.Msg = "获取指标删除列表失败"
  695. br.ErrMsg = "获取指标删除列表失败,Err:" + err.Error()
  696. return
  697. }
  698. for _, v := range tmpList {
  699. tmp := new(data_stat.EdbInfoSourceStatItem)
  700. tmp.Id = v.Id
  701. tmp.SourceName = v.SourceName
  702. tmp.Source = v.Source
  703. tmp.TerminalCode = v.TerminalCode
  704. tmp.EdbNum = v.EdbNum
  705. tmp.EdbNewNum = v.EdbNewNum
  706. tmp.EdbDelNum = v.EdbDelNum
  707. tmp.NeedRefreshNum = v.NeedRefreshNum
  708. tmp.HasRefreshNum = v.HasRefreshNum
  709. tmp.UpdateSuccessNum = v.UpdateSuccessNum
  710. tmp.UpdateFailedNum = v.UpdateFailedNum
  711. tmp.RefreshSuccessNum = v.RefreshSuccessNum
  712. tmp.RefreshFailedNum = v.RefreshFailedNum
  713. list = append(list, tmp)
  714. }
  715. resp := data_stat.GetEdbSourceStatResp{
  716. Paging: page,
  717. List: list,
  718. }
  719. br.Ret = 200
  720. br.Success = true
  721. br.Msg = "获取成功"
  722. br.Data = resp
  723. }
  724. // EdbUpdateFailedList
  725. // @Title 查询指标更新失败详情汇总列表
  726. // @Description 查询指标更新失败详情汇总列表
  727. // @Success 200 {object} data_stat.GetEdbUpdateLogResp
  728. // @router /edb_update_stat/failed [get]
  729. func (this *EdbSourceStatController) EdbUpdateFailedList() {
  730. br := new(models.BaseResponse).Init()
  731. defer func() {
  732. this.Data["json"] = br
  733. this.ServeJSON()
  734. }()
  735. sysUser := this.SysUser
  736. if sysUser == nil {
  737. br.Msg = "请登录"
  738. br.ErrMsg = "请登录,SysUser Is Empty"
  739. br.Ret = 408
  740. return
  741. }
  742. terminalCode := this.GetString("TerminalCode", "")
  743. createTime := this.GetString("CreateTime", "")
  744. if terminalCode == "" {
  745. br.Msg = "请选择对应的终端信息"
  746. return
  747. }
  748. terminalInfo, err := data_manage.GetEdbTerminalByTerminalCode(terminalCode)
  749. if err != nil {
  750. if err.Error() == utils.ErrNoRow() {
  751. br.Msg = "终端不存在"
  752. return
  753. }
  754. br.Msg = "查询终端信息出错"
  755. br.ErrMsg = "查询终端信息出错 Err:" + err.Error()
  756. return
  757. }
  758. condition := " and source = ? and terminal_code = ?"
  759. var pars []interface{}
  760. pars = append(pars, utils.DATA_SOURCE_MYSTEEL_CHEMICAL, terminalCode)
  761. if createTime != "" {
  762. startT, err := time.ParseInLocation(utils.FormatDate, createTime, time.Local)
  763. if err != nil {
  764. br.Msg = "请求时间格式错误"
  765. return
  766. }
  767. endT := startT.AddDate(0, 0, 1)
  768. condition += " AND create_time >= ? AND create_time < ?"
  769. pars = append(pars, createTime, endT.Format(utils.FormatDate))
  770. }
  771. tmpList, err := data_stat.GetEdbUpdateStatFailedGroupByCondition(condition, pars)
  772. if err != nil {
  773. br.Msg = "获取指标更新失败详情列表 失败"
  774. br.ErrMsg = "获取指标更新失败详情列表 失败,Err:" + err.Error()
  775. return
  776. }
  777. list := make([]*data_stat.EdbUpdateFailedList, 0)
  778. successNum := 0
  779. failedNum := 0
  780. if len(tmpList) > 0 {
  781. for _, v := range tmpList {
  782. if v.SourceUpdateResult == 1 {
  783. successNum += v.Num
  784. } else {
  785. failedNum += v.Num
  786. list = append(list, v)
  787. }
  788. }
  789. }
  790. resp := data_stat.GetEdbUpdateFailedResp{
  791. List: list,
  792. Name: terminalInfo.Name,
  793. TerminalCode: terminalCode,
  794. DirPath: terminalInfo.DirPath,
  795. UpdateSuccessNum: successNum,
  796. UpdateFailedNum: failedNum,
  797. }
  798. br.Ret = 200
  799. br.Success = true
  800. br.Msg = "获取成功"
  801. br.Data = resp
  802. }
  803. // EdbUpdateFailedDetailList
  804. // @Title 查询指标更新失败详情列表
  805. // @Description 查询指标更新失败详情列表
  806. // @Success 200 {object} data_stat.GetEdbUpdateLogResp
  807. // @router /edb_update_stat/failed/detail [get]
  808. func (this *EdbSourceStatController) EdbUpdateFailedDetailList() {
  809. br := new(models.BaseResponse).Init()
  810. defer func() {
  811. this.Data["json"] = br
  812. this.ServeJSON()
  813. }()
  814. sysUser := this.SysUser
  815. if sysUser == nil {
  816. br.Msg = "请登录"
  817. br.ErrMsg = "请登录,SysUser Is Empty"
  818. br.Ret = 408
  819. return
  820. }
  821. pageSize, _ := this.GetInt("PageSize")
  822. currentIndex, _ := this.GetInt("CurrentIndex")
  823. var startSize int
  824. if pageSize <= 0 {
  825. pageSize = utils.PageSize20
  826. }
  827. if currentIndex <= 0 {
  828. currentIndex = 1
  829. }
  830. startSize = paging.StartIndex(currentIndex, pageSize)
  831. terminalCode := this.GetString("TerminalCode", "")
  832. createTime := this.GetString("CreateTime", "")
  833. frequency := this.GetString("Frequency", "")
  834. sourceUpdateFailedReason := this.GetString("SourceUpdateFailedReason", "")
  835. if createTime == "" {
  836. br.Msg = "请选择创建时间"
  837. return
  838. }
  839. if terminalCode == "" {
  840. br.Msg = "请选择对应的终端信息"
  841. return
  842. }
  843. if frequency == "" {
  844. br.Msg = "请选择对应的频度"
  845. return
  846. }
  847. condition := " and source = ? and terminal_code = ? and frequency=? and data_update_failed_reason=? and data_update_result = 2"
  848. var pars []interface{}
  849. pars = append(pars, utils.DATA_SOURCE_MYSTEEL_CHEMICAL, terminalCode, frequency, sourceUpdateFailedReason)
  850. if createTime != "" {
  851. startT, err := time.ParseInLocation(utils.FormatDate, createTime, time.Local)
  852. if err != nil {
  853. br.Msg = "请求时间格式错误"
  854. return
  855. }
  856. endT := startT.AddDate(0, 0, 1)
  857. condition += " AND create_time >= ? AND create_time < ?"
  858. pars = append(pars, createTime, endT.Format(utils.FormatDate))
  859. }
  860. total, err := data_stat.GetEdbUpdateStatCount(condition, pars)
  861. if err != nil {
  862. if err.Error() != utils.ErrNoRow() {
  863. br.Msg = "获取指标列表总数失败"
  864. br.ErrMsg = "获取指标列表总数失败,Err:" + err.Error()
  865. return
  866. } else {
  867. err = nil
  868. }
  869. }
  870. list := make([]*data_stat.EdbInfoUpdateStatItemMore, 0)
  871. page := paging.GetPaging(currentIndex, pageSize, total)
  872. if total == 0 {
  873. resp := data_stat.GetEdbUpdateStatResp{
  874. Paging: page,
  875. List: list,
  876. }
  877. br.Ret = 200
  878. br.Success = true
  879. br.Msg = "获取成功"
  880. br.Data = resp
  881. return
  882. }
  883. tmpList, err := data_stat.GetEdbUpdateStatByCondition(condition, pars, "", pageSize, startSize)
  884. if err != nil {
  885. br.Msg = "获取指标更新列表失败"
  886. br.ErrMsg = "获取指标更新列表失败,Err:" + err.Error()
  887. return
  888. }
  889. for _, v := range tmpList {
  890. tmp := new(data_stat.EdbInfoUpdateStatItemMore)
  891. tmp.Id = v.Id
  892. tmp.EdbInfoId = v.EdbInfoId
  893. tmp.SourceName = v.SourceName
  894. tmp.Source = v.Source
  895. tmp.EdbCode = v.EdbCode
  896. tmp.EdbName = v.EdbName
  897. tmp.EdbNameSource = v.EdbNameSource
  898. tmp.Frequency = v.Frequency
  899. tmp.Unit = v.Unit
  900. tmp.StartDate = v.StartDate
  901. tmp.SysUserId = v.SysUserId
  902. tmp.SysUserRealName = v.SysUserRealName
  903. tmp.LatestDate = v.LatestDate
  904. tmp.LatestValue = v.LatestValue
  905. tmp.TerminalCode = v.TerminalCode
  906. tmp.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
  907. if v.DataUpdateTime != utils.EmptyDateTimeStr {
  908. tmp.DataUpdateTime = v.DataUpdateTime
  909. }
  910. if v.ErDataUpdateDate != utils.EmptyDateStr {
  911. tmp.ErDataUpdateDate = v.ErDataUpdateDate
  912. }
  913. tmp.DataUpdateResult = v.DataUpdateResult
  914. tmp.DataUpdateFailedReason = v.DataUpdateFailedReason
  915. if v.UpdateTime != utils.EmptyDateTimeStr {
  916. tmp.UpdateTime = v.UpdateTime
  917. }
  918. tmp.IsAdd = v.IsAdd
  919. tmp.NeedRefresh = v.NeedRefresh
  920. tmp.HasRefresh = v.HasRefresh
  921. list = append(list, tmp)
  922. }
  923. resp := data_stat.GetEdbUpdateStatResp{
  924. Paging: page,
  925. List: list,
  926. }
  927. br.Ret = 200
  928. br.Success = true
  929. br.Msg = "获取成功"
  930. br.Data = resp
  931. }