variety_edb.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793
  1. package supply_analysis
  2. import (
  3. "encoding/json"
  4. "eta_gn/eta_api/models"
  5. "eta_gn/eta_api/models/data_manage"
  6. "eta_gn/eta_api/models/data_manage/request"
  7. "eta_gn/eta_api/models/data_manage/response"
  8. "eta_gn/eta_api/models/data_manage/supply_analysis"
  9. "eta_gn/eta_api/services/data"
  10. supply_analysisServ "eta_gn/eta_api/services/data/supply_analysis"
  11. "eta_gn/eta_api/utils"
  12. "fmt"
  13. "github.com/tealeg/xlsx"
  14. "os"
  15. "path/filepath"
  16. "strconv"
  17. "strings"
  18. "time"
  19. )
  20. // @router /variety/edb/list [get]
  21. func (this *VarietyController) EdbList() {
  22. br := new(models.BaseResponse).Init()
  23. defer func() {
  24. this.Data["json"] = br
  25. this.ServeJSON()
  26. }()
  27. varietyId, _ := this.GetInt("VarietyId")
  28. if varietyId <= 0 {
  29. br.Msg = "请选择品种"
  30. br.IsSendEmail = false
  31. return
  32. }
  33. varietyInfo, err := supply_analysis.GetVarietyById(varietyId)
  34. if err != nil {
  35. br.Msg = "查询品种失败"
  36. br.ErrMsg = "查询品种失败;ERR:" + err.Error()
  37. return
  38. }
  39. if varietyInfo == nil {
  40. br.Msg = "不存在该品种或该品种已被删除"
  41. br.ErrMsg = "不存在该品种或该品种已被删除"
  42. br.IsSendEmail = false
  43. return
  44. }
  45. var hasPermission bool //是否有操作权限
  46. hasPermission, err = supply_analysisServ.HasVarietyPlantPermission(this.SysUser, varietyId)
  47. if err != nil && !utils.IsErrNoRow(err) {
  48. br.Msg = "获取失败"
  49. br.ErrMsg = "查询是否有装置的操作权限失败;ERR:" + err.Error()
  50. return
  51. }
  52. var list []*supply_analysis.VarietyEdbInfoItem
  53. list, err = supply_analysis.GetAllVarietyEdbInfoByVarietyId(varietyId)
  54. if err != nil && !utils.IsErrNoRow(err) {
  55. br.Msg = "获取失败"
  56. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  57. return
  58. }
  59. edbInfoAndClassifyMap := make(map[int]*data_manage.EdbAndClassify)
  60. {
  61. edbInfoIdList := make([]int, 0)
  62. for _, v := range list {
  63. edbInfoIdList = append(edbInfoIdList, v.EdbInfoId)
  64. }
  65. edbInfoAndClassifyList, err := data_manage.GetEdbInfoAndClassifyListByEdbIdList(edbInfoIdList)
  66. if err != nil {
  67. br.Msg = "获取失败"
  68. br.ErrMsg = "获取ETA指标的信息失败,Err:" + err.Error()
  69. return
  70. }
  71. for _, v := range edbInfoAndClassifyList {
  72. edbInfoAndClassifyMap[v.EdbInfoId] = v
  73. }
  74. }
  75. for k, v := range list {
  76. button := supply_analysis.VarietyEdbInfoButton{
  77. Copy: true,
  78. Show: true,
  79. }
  80. if tmpItem, ok := edbInfoAndClassifyMap[v.EdbInfoId]; ok {
  81. classifyNameList := make([]string, 0)
  82. {
  83. classifyList, tmpErr, errMsg := data.GetFullClassifyByClassifyId(tmpItem.ClassifyId)
  84. if tmpErr != nil {
  85. br.Msg = errMsg
  86. br.ErrMsg = "获取ETA指标的分类信息失败,Err:" + err.Error()
  87. return
  88. }
  89. for _, tmpClassify := range classifyList {
  90. classifyNameList = append(classifyNameList, tmpClassify.ClassifyName)
  91. }
  92. }
  93. v.ClassifyName = strings.Join(classifyNameList, "/")
  94. v.ClassifyId = tmpItem.ClassifyId
  95. v.EdbCode = tmpItem.EdbCode
  96. v.UniqueCode = tmpItem.UniqueCode
  97. } else {
  98. button.Show = false
  99. v.EdbCode = ``
  100. v.EdbInfoId = 0
  101. if hasPermission {
  102. button.Add = true
  103. }
  104. }
  105. v.Button = button
  106. list[k] = v
  107. }
  108. resp := response.VarietyEdbListResp{
  109. List: list,
  110. }
  111. br.Ret = 200
  112. br.Success = true
  113. br.Msg = "获取成功"
  114. br.Data = resp
  115. }
  116. // @router /variety/edb/add [post]
  117. func (this *VarietyController) AddToEdb() {
  118. br := new(models.BaseResponse).Init()
  119. defer func() {
  120. this.Data["json"] = br
  121. this.ServeJSON()
  122. }()
  123. sysUser := this.SysUser
  124. if sysUser == nil {
  125. br.Msg = "请登录"
  126. br.ErrMsg = "请登录,SysUser Is Empty"
  127. br.Ret = 408
  128. return
  129. }
  130. var req request.AddEdbInfoReq
  131. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  132. if err != nil {
  133. br.Msg = "参数解析异常!"
  134. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  135. return
  136. }
  137. req.EdbName = strings.Trim(req.EdbName, " ")
  138. if req.VarietyEdbId <= 0 {
  139. br.Msg = "请选择指标"
  140. br.IsSendEmail = false
  141. return
  142. }
  143. cacheKey := "VARIETY_ADD_EDB:" + strconv.Itoa(req.VarietyEdbId)
  144. if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
  145. br.Msg = "系统处理中,请稍后重试!"
  146. br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(this.Ctx.Input.RequestBody)
  147. return
  148. }
  149. defer func() {
  150. utils.Rc.Delete(cacheKey)
  151. }()
  152. if req.EdbName == "" {
  153. br.Msg = "指标名称不能为空"
  154. return
  155. }
  156. if req.Frequency == "" {
  157. br.Msg = "频率不能为空"
  158. return
  159. }
  160. if req.Unit == "" {
  161. br.Msg = "单位不能为空"
  162. return
  163. }
  164. if req.ClassifyId <= 0 {
  165. br.Msg = "请选择分类"
  166. return
  167. }
  168. varietyEdbInfo, err := supply_analysis.GetVarietyEdbInfoByVarietyEdbId(req.VarietyEdbId)
  169. if err != nil {
  170. if utils.IsErrNoRow(err) {
  171. br.Msg = "找不到该指标"
  172. br.IsSendEmail = false
  173. } else {
  174. br.Msg = "添加失败"
  175. br.ErrMsg = "添加失败,ERR:" + err.Error()
  176. }
  177. return
  178. }
  179. var hasPermission bool //是否有操作权限
  180. hasPermission, err = supply_analysisServ.HasVarietyPlantPermission(this.SysUser, varietyEdbInfo.VarietyId)
  181. if err != nil && !utils.IsErrNoRow(err) {
  182. br.Msg = "获取失败"
  183. br.ErrMsg = "查询是否有装置的操作权限失败;ERR:" + err.Error()
  184. return
  185. }
  186. if !hasPermission {
  187. br.Msg = "无操作权限"
  188. br.ErrMsg = "无操作权限"
  189. return
  190. }
  191. if varietyEdbInfo.EdbInfoId > 0 {
  192. tmpEdbInfo, err := data_manage.GetEdbInfoById(varietyEdbInfo.EdbInfoId)
  193. if err != nil && !utils.IsErrNoRow(err) {
  194. br.Msg = "添加失败"
  195. br.ErrMsg = "查询ETA指标失败,ERR:" + err.Error()
  196. return
  197. }
  198. if tmpEdbInfo != nil {
  199. br.Msg = "该指标已加入ETA指标库中"
  200. br.ErrMsg = "该指标已加入ETA指标库中"
  201. return
  202. }
  203. }
  204. randStr := utils.GetRandDigit(4)
  205. prefixCode := "HZ_V"
  206. suffixCode := time.Now().Format("060102") + randStr
  207. edbCode := fmt.Sprint(prefixCode, varietyEdbInfo.Source, suffixCode)
  208. edbInfo, err, errMsg, isSendEmail := data.EdbInfoAdd(utils.DATA_SOURCE_STOCK_PLANT, utils.DATA_SUB_SOURCE_EDB, req.ClassifyId, edbCode, req.EdbName, req.Frequency, req.Unit, varietyEdbInfo.StartDate.Format(utils.FormatDate), varietyEdbInfo.EndDate.Format(utils.FormatDate), sysUser.AdminId, sysUser.RealName, this.Lang)
  209. if err != nil {
  210. br.Msg = "保存失败"
  211. if errMsg != `` {
  212. br.Msg = errMsg
  213. }
  214. br.ErrMsg = err.Error()
  215. br.IsSendEmail = isSendEmail
  216. return
  217. }
  218. {
  219. varietyEdbInfo.EdbInfoId = edbInfo.EdbInfoId
  220. varietyEdbInfo.EdbCode = edbInfo.EdbCode
  221. varietyEdbInfo.EdbName = edbInfo.EdbName
  222. varietyEdbInfo.ModifyTime = time.Now()
  223. err = varietyEdbInfo.Update([]string{"EdbInfoId", "EdbCode", "EdbName", "ModifyTime"})
  224. if err != nil {
  225. br.Msg = "保存失败"
  226. br.ErrMsg = "修改指标信息失败,err:" + err.Error()
  227. return
  228. }
  229. }
  230. {
  231. data.RefreshEdbData(edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource, edbInfo.EdbCode, utils.TimeToFormatDate(edbInfo.StartDate))
  232. }
  233. {
  234. edbLog := new(data_manage.EdbInfoLog)
  235. edbLog.EdbInfoId = edbInfo.EdbInfoId
  236. edbLog.SourceName = edbInfo.SourceName
  237. edbLog.Source = edbInfo.Source
  238. edbLog.EdbCode = edbInfo.EdbCode
  239. edbLog.EdbName = edbInfo.EdbName
  240. edbLog.ClassifyId = edbInfo.ClassifyId
  241. edbLog.SysUserId = sysUser.AdminId
  242. edbLog.SysUserRealName = sysUser.RealName
  243. edbLog.CreateTime = time.Now()
  244. edbLog.Content = string(this.Ctx.Input.RequestBody)
  245. edbLog.Status = "新增指标"
  246. edbLog.Method = this.Ctx.Input.URI()
  247. go data_manage.AddEdbInfoLog(edbLog)
  248. }
  249. br.Ret = 200
  250. br.Success = true
  251. br.Msg = "添加成功"
  252. br.IsAddLog = true
  253. }
  254. // @router /variety/data/export [get]
  255. func (this *VarietyController) EdbDataExport() {
  256. br := new(models.BaseResponse).Init()
  257. defer func() {
  258. this.Data["json"] = br
  259. this.ServeJSON()
  260. }()
  261. sysUser := this.SysUser
  262. if sysUser == nil {
  263. br.Msg = "请重新登录"
  264. return
  265. }
  266. varietyId, _ := this.GetInt("VarietyId")
  267. if varietyId <= 0 {
  268. br.Msg = "请选择品种"
  269. br.IsSendEmail = false
  270. return
  271. }
  272. varietyInfo, err := supply_analysis.GetVarietyById(varietyId)
  273. if err != nil {
  274. br.Msg = "查询品种失败"
  275. br.ErrMsg = "查询品种失败;ERR:" + err.Error()
  276. return
  277. }
  278. if varietyInfo == nil {
  279. br.Msg = "不存在该品种或该品种已被删除"
  280. br.ErrMsg = "不存在该品种或该品种已被删除"
  281. br.IsSendEmail = false
  282. return
  283. }
  284. var list []*supply_analysis.VarietyEdbInfoItem
  285. list, err = supply_analysis.GetAllVarietyEdbInfoByVarietyId(varietyId)
  286. if err != nil && !utils.IsErrNoRow(err) {
  287. br.Msg = "获取失败"
  288. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  289. return
  290. }
  291. dataMap := make(map[int]map[time.Time]*supply_analysis.BaseFromStockPlantData)
  292. idList := make([]int, 0)
  293. for _, v := range list {
  294. idList = append(idList, v.VarietyEdbId)
  295. dataList, err := supply_analysis.GetDataVarietyEdbInfoByVarietyId(v.VarietyEdbId)
  296. if err != nil {
  297. br.Msg = "获取数据失败"
  298. br.ErrMsg = "获取数据失败,标识:" + strconv.Itoa(v.VarietyEdbId) + ";err:" + err.Error()
  299. return
  300. }
  301. for _, item := range dataList {
  302. if dataMap[item.VarietyEdbId] == nil {
  303. dataMap[item.VarietyEdbId] = make(map[time.Time]*supply_analysis.BaseFromStockPlantData)
  304. }
  305. dataMap[item.VarietyEdbId][item.DataTime] = item
  306. }
  307. }
  308. dir, _ := os.Executable()
  309. exPath := filepath.Dir(dir)
  310. downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
  311. xlsxFile := xlsx.NewFile()
  312. if err != nil {
  313. br.Msg = "生成文件失败"
  314. br.ErrMsg = "生成文件失败"
  315. return
  316. }
  317. sheet, err := xlsxFile.AddSheet("存量装置")
  318. rowSecName := sheet.AddRow()
  319. celSecName := rowSecName.AddCell()
  320. celSecName.SetValue("指标名称")
  321. rowFrequency := sheet.AddRow()
  322. celFrequency := rowFrequency.AddCell()
  323. celFrequency.SetValue("频率")
  324. rowUnit := sheet.AddRow()
  325. celUnit := rowUnit.AddCell()
  326. celUnit.SetValue("单位")
  327. rowUpdateTime := sheet.AddRow()
  328. celUpdateTime := rowUpdateTime.AddCell()
  329. celUpdateTime.SetValue("更新时间")
  330. {
  331. cellSenName := rowSecName.AddCell()
  332. cellSenName.SetValue("日度减产量")
  333. celFrequency := rowFrequency.AddCell()
  334. celFrequency.SetValue("日度")
  335. celUnit := rowUnit.AddCell()
  336. celUnit.SetValue("万吨")
  337. celUpdateTime := rowUpdateTime.AddCell()
  338. celUpdateTime.SetValue(time.Now().Format(utils.FormatDateTime))
  339. }
  340. for _, v := range list {
  341. cellSenName := rowSecName.AddCell()
  342. cellSenName.SetValue(v.EdbName)
  343. celFrequency := rowFrequency.AddCell()
  344. celFrequency.SetValue(v.Frequency)
  345. celUnit := rowUnit.AddCell()
  346. celUnit.SetValue("万吨")
  347. celUpdateTime := rowUpdateTime.AddCell()
  348. celUpdateTime.SetValue(v.ModifyTime)
  349. }
  350. dayDataMap, startDate, lastDate, err := supply_analysisServ.CalculateByDay(varietyInfo)
  351. if err != nil {
  352. br.Msg = "获取数据失败"
  353. br.ErrMsg = "获取日度数据失败,Err:" + err.Error()
  354. return
  355. }
  356. lastMonthDay := time.Date(lastDate.Year(), lastDate.Month(), 1, lastDate.Hour(), lastDate.Minute(), lastDate.Second(), lastDate.Nanosecond(), time.Local).AddDate(0, 1, -1)
  357. for tmpDate := lastMonthDay; !tmpDate.Before(startDate); tmpDate = tmpDate.AddDate(0, 0, -1) {
  358. rowData := sheet.AddRow()
  359. dateCelDate := rowData.AddCell()
  360. dateCelDate.SetValue(tmpDate.Format(utils.FormatDate))
  361. {
  362. dayCelDate := rowData.AddCell()
  363. if tmpVal, ok := dayDataMap[tmpDate]; ok {
  364. dayCelDate.SetFloat(tmpVal)
  365. }
  366. }
  367. for _, varietyEdbId := range idList {
  368. celData := rowData.AddCell()
  369. if dataMap[varietyEdbId][tmpDate] != nil {
  370. celData.SetFloat(dataMap[varietyEdbId][tmpDate].Value)
  371. }
  372. }
  373. }
  374. err = xlsxFile.Save(downLoadnFilePath)
  375. if err != nil {
  376. sheet, err := xlsxFile.AddSheet("无数据")
  377. if err != nil {
  378. br.Msg = "新增Sheet失败"
  379. br.ErrMsg = "新增Sheet失败,Err:" + err.Error()
  380. return
  381. }
  382. rowSecName := sheet.AddRow()
  383. celSecName := rowSecName.AddCell()
  384. celSecName.SetValue("")
  385. err = xlsxFile.Save(downLoadnFilePath)
  386. if err != nil {
  387. br.Msg = "保存文件失败"
  388. br.ErrMsg = "保存文件失败"
  389. return
  390. }
  391. }
  392. fileName := varietyInfo.VarietyName + time.Now().Format("06.01.02") + `.xlsx` //文件名称
  393. this.Ctx.Output.Download(downLoadnFilePath, fileName)
  394. defer func() {
  395. os.Remove(downLoadnFilePath)
  396. }()
  397. br.Ret = 200
  398. br.Success = true
  399. br.Msg = "success"
  400. }
  401. // @router /variety/edb/data/list [get]
  402. func (this *VarietyController) EdbDataList() {
  403. br := new(models.BaseResponse).Init()
  404. defer func() {
  405. this.Data["json"] = br
  406. this.ServeJSON()
  407. }()
  408. varietyEdbId, _ := this.GetInt("VarietyEdbId")
  409. if varietyEdbId <= 0 {
  410. br.Msg = "请选择指标"
  411. br.IsSendEmail = false
  412. return
  413. }
  414. list, err := supply_analysis.GetDataVarietyEdbInfoByVarietyId(varietyEdbId)
  415. if err != nil {
  416. br.Msg = "查询品种失败"
  417. br.ErrMsg = "查询品种失败;ERR:" + err.Error()
  418. return
  419. }
  420. resp := make([]response.VarietyEdbDataListResp, 0)
  421. for _, v := range list {
  422. resp = append(resp, response.VarietyEdbDataListResp{
  423. DataTime: v.DataTime.Format(utils.FormatDate),
  424. Value: v.Value,
  425. })
  426. }
  427. br.Ret = 200
  428. br.Success = true
  429. br.Msg = "获取成功"
  430. br.Data = resp
  431. }
  432. // @router /variety/edb/data/tb [get]
  433. func (this *VarietyController) EdbInfoDataTb() {
  434. br := new(models.BaseResponse).Init()
  435. defer func() {
  436. this.Data["json"] = br
  437. this.ServeJSON()
  438. }()
  439. sysUser := this.SysUser
  440. if sysUser == nil {
  441. br.Msg = "请登录"
  442. br.ErrMsg = "请登录,SysUser Is Empty"
  443. br.Ret = 408
  444. return
  445. }
  446. varietyEdbId, _ := this.GetInt("VarietyEdbId")
  447. if varietyEdbId <= 0 {
  448. br.Msg = "请选择指标"
  449. br.IsSendEmail = false
  450. return
  451. }
  452. dateType, _ := this.GetInt("DateType")
  453. if dateType <= 0 {
  454. dateType = 3
  455. }
  456. startDate := this.GetString("StartDate")
  457. endDate := this.GetString("EndDate")
  458. startYear, _ := this.GetInt("StartYear")
  459. varietyEdbInfo, err := supply_analysis.GetVarietyEdbInfoByVarietyEdbId(varietyEdbId)
  460. if err != nil {
  461. br.Msg = "获取失败"
  462. br.Msg = "获取失败,Err:" + err.Error()
  463. return
  464. }
  465. edbInfo := &data_manage.EdbInfo{
  466. EdbInfoId: varietyEdbId,
  467. EdbInfoType: 0,
  468. SourceName: "",
  469. Source: 0,
  470. EdbCode: varietyEdbInfo.EdbCode,
  471. EdbName: varietyEdbInfo.EdbName,
  472. EdbNameEn: "",
  473. EdbNameSource: "",
  474. Frequency: varietyEdbInfo.Frequency,
  475. Unit: ``,
  476. UnitEn: "",
  477. StartDate: varietyEdbInfo.StartDate,
  478. EndDate: varietyEdbInfo.EndDate,
  479. ClassifyId: 0,
  480. SysUserId: 0,
  481. SysUserRealName: "",
  482. UniqueCode: "",
  483. CreateTime: varietyEdbInfo.CreateTime,
  484. ModifyTime: varietyEdbInfo.ModifyTime,
  485. MinValue: 0,
  486. MaxValue: 0,
  487. CalculateFormula: "",
  488. EdbType: 1,
  489. Sort: 0,
  490. LatestDate: varietyEdbInfo.EndDate.Format(utils.FormatDate),
  491. LatestValue: varietyEdbInfo.LatestValue,
  492. MoveType: 0,
  493. MoveFrequency: "",
  494. NoUpdate: 0,
  495. ServerUrl: "",
  496. ChartImage: "",
  497. Calendar: "",
  498. }
  499. startDate, endDate = utils.GetDateByDateTypeV2(dateType, startDate, endDate, startYear, varietyEdbInfo.EndDate.Year())
  500. var startDateTime time.Time
  501. if startDate != `` {
  502. startDateTime, err = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
  503. if err != nil {
  504. br.Msg = "开始日期异常"
  505. br.Msg = "开始日期异常,Err:" + err.Error()
  506. return
  507. }
  508. startDate = startDateTime.AddDate(-1, 0, -35).Format(utils.FormatDate)
  509. }
  510. tmpDataList, _, _, err := supply_analysisServ.GetCustomEdbData(varietyEdbId, startDate, endDate)
  511. if err != nil {
  512. br.Msg = "获取失败"
  513. br.Msg = "获取失败,Err:" + err.Error()
  514. return
  515. }
  516. dataList, minValue, maxValue, err := data.GetEdbDataTbz(edbInfo, tmpDataList, startDateTime)
  517. if err != nil {
  518. br.Msg = "获取失败"
  519. br.Msg = "计算同比值失败,Err:" + err.Error()
  520. return
  521. }
  522. edbInfo.MaxValue = maxValue
  523. edbInfo.MinValue = minValue
  524. resp := new(data_manage.EdbInfoDataResp)
  525. resp.EdbInfo = edbInfo
  526. resp.DataList = dataList
  527. br.Ret = 200
  528. br.Success = true
  529. br.Msg = "获取成功"
  530. br.Data = resp
  531. }
  532. // @router /variety/edb/data/seasonal [get]
  533. func (this *VarietyController) EdbInfoDataSeasonal() {
  534. br := new(models.BaseResponse).Init()
  535. defer func() {
  536. this.Data["json"] = br
  537. this.ServeJSON()
  538. }()
  539. sysUser := this.SysUser
  540. if sysUser == nil {
  541. br.Msg = "请登录"
  542. br.ErrMsg = "请登录,SysUser Is Empty"
  543. br.Ret = 408
  544. return
  545. }
  546. varietyEdbId, _ := this.GetInt("VarietyEdbId")
  547. if varietyEdbId <= 0 {
  548. br.Msg = "请选择指标"
  549. br.IsSendEmail = false
  550. return
  551. }
  552. calendar := this.GetString("Calendar")
  553. if calendar == "" {
  554. calendar = "公历"
  555. }
  556. dateType, _ := this.GetInt("DateType")
  557. startDate := this.GetString("StartDate")
  558. endDate := this.GetString("EndDate")
  559. startYear, _ := this.GetInt("StartYear")
  560. if dateType == 0 {
  561. dateType = utils.DateTypeNYears
  562. }
  563. varietyEdbInfo, err := supply_analysis.GetVarietyEdbInfoByVarietyEdbId(varietyEdbId)
  564. if err != nil {
  565. br.Msg = "获取失败"
  566. br.Msg = "获取失败,Err:" + err.Error()
  567. return
  568. }
  569. edbInfo := &data_manage.EdbInfo{
  570. EdbInfoId: varietyEdbId,
  571. EdbInfoType: 0,
  572. SourceName: "",
  573. Source: 0,
  574. EdbCode: varietyEdbInfo.EdbCode,
  575. EdbName: varietyEdbInfo.EdbName,
  576. EdbNameEn: "",
  577. EdbNameSource: "",
  578. Frequency: varietyEdbInfo.Frequency,
  579. Unit: ``,
  580. UnitEn: "",
  581. StartDate: varietyEdbInfo.StartDate,
  582. EndDate: varietyEdbInfo.EndDate,
  583. ClassifyId: 0,
  584. SysUserId: 0,
  585. SysUserRealName: "",
  586. UniqueCode: "",
  587. CreateTime: varietyEdbInfo.CreateTime,
  588. ModifyTime: varietyEdbInfo.ModifyTime,
  589. MinValue: 0,
  590. MaxValue: 0,
  591. CalculateFormula: "",
  592. EdbType: 1,
  593. Sort: 0,
  594. LatestDate: varietyEdbInfo.EndDate.Format(utils.FormatDate),
  595. LatestValue: varietyEdbInfo.LatestValue,
  596. MoveType: 0,
  597. MoveFrequency: "",
  598. NoUpdate: 0,
  599. ServerUrl: "",
  600. ChartImage: "",
  601. Calendar: "",
  602. }
  603. startDate, endDate = utils.GetDateByDateTypeV2(dateType, startDate, endDate, startYear, varietyEdbInfo.EndDate.Year())
  604. dataList, minVal, maxVal, err := supply_analysisServ.GetChartEdbSeasonalData(varietyEdbId, calendar, startDate, endDate, edbInfo.LatestDate)
  605. if err != nil {
  606. br.Msg = "获取失败"
  607. br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
  608. return
  609. }
  610. edbInfo.MinValue = minVal
  611. edbInfo.MaxValue = maxVal
  612. resp := new(data_manage.EdbInfoDataSeasonalResp)
  613. resp.EdbInfo = edbInfo
  614. resp.DataList = dataList
  615. br.Ret = 200
  616. br.Success = true
  617. br.Msg = "获取成功"
  618. br.Data = resp
  619. }
  620. // @router /variety/edb/data/list/v2 [get]
  621. func (this *VarietyController) EdbDataListV2() {
  622. br := new(models.BaseResponse).Init()
  623. defer func() {
  624. this.Data["json"] = br
  625. this.ServeJSON()
  626. }()
  627. sysUser := this.SysUser
  628. if sysUser == nil {
  629. br.Msg = "请登录"
  630. br.ErrMsg = "请登录,SysUser Is Empty"
  631. br.Ret = 408
  632. return
  633. }
  634. varietyEdbId, _ := this.GetInt("VarietyEdbId")
  635. if varietyEdbId <= 0 {
  636. br.Msg = "请选择指标"
  637. br.IsSendEmail = false
  638. return
  639. }
  640. dateType, _ := this.GetInt("DateType")
  641. if dateType <= 0 {
  642. dateType = 3
  643. }
  644. edbInfoType, _ := this.GetInt("EdbInfoType")
  645. if edbInfoType < 0 {
  646. edbInfoType = 1
  647. }
  648. startDate := this.GetString("StartDate")
  649. endDate := this.GetString("EndDate")
  650. startYear, _ := this.GetInt("StartYear")
  651. varietyEdbInfo, err := supply_analysis.GetVarietyEdbInfoByVarietyEdbId(varietyEdbId)
  652. if err != nil {
  653. br.Msg = "获取失败"
  654. br.Msg = "获取失败,Err:" + err.Error()
  655. return
  656. }
  657. edbInfo := &data_manage.EdbInfo{
  658. EdbInfoId: varietyEdbId,
  659. EdbInfoType: 0,
  660. SourceName: "",
  661. Source: 0,
  662. EdbCode: varietyEdbInfo.EdbCode,
  663. EdbName: varietyEdbInfo.EdbName,
  664. EdbNameEn: "",
  665. EdbNameSource: "",
  666. Frequency: varietyEdbInfo.Frequency,
  667. Unit: ``,
  668. UnitEn: "",
  669. StartDate: varietyEdbInfo.StartDate,
  670. EndDate: varietyEdbInfo.EndDate,
  671. ClassifyId: 0,
  672. SysUserId: 0,
  673. SysUserRealName: "",
  674. UniqueCode: "",
  675. CreateTime: varietyEdbInfo.CreateTime,
  676. ModifyTime: varietyEdbInfo.ModifyTime,
  677. MinValue: 0,
  678. MaxValue: 0,
  679. CalculateFormula: "",
  680. EdbType: 1,
  681. Sort: 0,
  682. LatestDate: varietyEdbInfo.EndDate.Format(utils.FormatDate),
  683. LatestValue: varietyEdbInfo.LatestValue,
  684. MoveType: 0,
  685. MoveFrequency: "",
  686. NoUpdate: 0,
  687. ServerUrl: "",
  688. ChartImage: "",
  689. Calendar: "",
  690. }
  691. startDate, endDate = utils.GetDateByDateTypeV2(dateType, startDate, endDate, startYear, varietyEdbInfo.EndDate.Year())
  692. var startDateTime time.Time
  693. if startDate != `` {
  694. startDateTime, err = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
  695. if err != nil {
  696. br.Msg = "开始日期异常"
  697. br.Msg = "开始日期异常,Err:" + err.Error()
  698. return
  699. }
  700. startDate = startDateTime.AddDate(-1, 0, -35).Format(utils.FormatDate)
  701. }
  702. dataList, minVal, maxVal, err := supply_analysisServ.GetCustomEdbData(varietyEdbId, startDate, endDate)
  703. if err != nil {
  704. br.Msg = "获取失败"
  705. br.Msg = "获取失败,Err:" + err.Error()
  706. return
  707. }
  708. edbInfo.MinValue = minVal
  709. edbInfo.MaxValue = maxVal
  710. resp := new(data_manage.EdbInfoDataResp)
  711. resp.EdbInfo = edbInfo
  712. resp.DataList = dataList
  713. br.Ret = 200
  714. br.Success = true
  715. br.Msg = "获取成功"
  716. br.Data = resp
  717. }