edb_info.go 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543
  1. package models
  2. import (
  3. "errors"
  4. "fmt"
  5. "github.com/beego/beego/v2/client/orm"
  6. "hongze/hongze_edb_lib/utils"
  7. "time"
  8. )
  9. type EdbInfo struct {
  10. EdbInfoId int `orm:"column(edb_info_id);pk"`
  11. SourceName string `description:"来源名称"`
  12. Source int `description:"来源id"`
  13. EdbCode string `description:"指标编码"`
  14. EdbName string `description:"指标名称"`
  15. EdbNameSource string `description:"指标名称来源"`
  16. Frequency string `description:"频率"`
  17. Unit string `description:"单位"`
  18. StartDate string `description:"起始日期"`
  19. EndDate string `description:"终止日期"`
  20. ClassifyId int `description:"分类id"`
  21. SysUserId int
  22. SysUserRealName string
  23. UniqueCode string `description:"指标唯一编码"`
  24. CreateTime time.Time
  25. ModifyTime time.Time
  26. MinValue float64 `description:"指标最小值"`
  27. MaxValue float64 `description:"指标最大值"`
  28. CalculateFormula string `description:"计算公式"`
  29. EdbType int `description:"指标类型:1:基础指标,2:计算指标"`
  30. Sort int `description:"排序字段"`
  31. MoveType int `description:"移动方式:1:领先(默认),2:滞后"`
  32. MoveFrequency string `description:"移动频度"`
  33. NoUpdate int8 `description:"是否停止更新,0:继续更新;1:停止更新"`
  34. ServerUrl string `description:"服务器地址"`
  35. EdbInfoType int `description:"指标类型,0:普通指标,1:预测指标"`
  36. EdbNameEn string `description:"英文指标名称"`
  37. UnitEn string `description:"英文单位"`
  38. LatestDate string `description:"数据最新日期"`
  39. LatestValue float64 `description:"数据最新值"`
  40. ChartImage string `description:"图表图片"`
  41. }
  42. // AddEdbInfo 添加指标
  43. func AddEdbInfo(item *EdbInfo) (lastId int64, err error) {
  44. o := orm.NewOrm()
  45. lastId, err = o.Insert(item)
  46. return
  47. }
  48. // EdbInfoList 指标数据列表
  49. type EdbInfoList struct {
  50. EdbInfoId int `orm:"column(edb_info_id);pk"`
  51. SourceName string `description:"来源名称"`
  52. Source int `description:"来源id"`
  53. EdbCode string `description:"指标编码"`
  54. EdbName string `description:"指标名称"`
  55. Frequency string `description:"频率"`
  56. Unit string `description:"单位"`
  57. StartDate string `description:"起始日期"`
  58. EndDate string `description:"终止日期"`
  59. ClassifyId int `description:"分类id"`
  60. UniqueCode string `description:"指标唯一编码"`
  61. SysUserId int `description:"创建人id"`
  62. SysUserRealName string `description:"创建人姓名"`
  63. ModifyTime string `description:"最新修改时间"`
  64. EdbNameAlias string `json:"-" description:"指标名称,别名"`
  65. EdbType int `description:"指标类型:1:基础指标,2:计算指标"`
  66. DataList []*EdbData
  67. }
  68. // GetEdbInfoByName 根据指标名称获取所有的指标数据列表
  69. func GetEdbInfoByName(edbName string) (items []*EdbInfoList, err error) {
  70. o := orm.NewOrm()
  71. sql := ` SELECT * FROM edb_info WHERE edb_name=? `
  72. _, err = o.Raw(sql, edbName).QueryRows(&items)
  73. return
  74. }
  75. // ModifyEdbInfoNameSource 根据来源修改指标名称
  76. func ModifyEdbInfoNameSource(edbNameSource string, edbInfoId int) (err error) {
  77. o := orm.NewOrm()
  78. sql := ` UPDATE edb_info SET edb_name_source=? WHERE edb_info_id = ? `
  79. _, err = o.Raw(sql, edbNameSource, edbInfoId).Exec()
  80. return
  81. }
  82. // GetEdbInfoById 根据指标id获取指标信息
  83. func GetEdbInfoById(edbInfoId int) (item *EdbInfo, err error) {
  84. o := orm.NewOrm()
  85. sql := ` SELECT * FROM edb_info WHERE edb_info_id=? `
  86. err = o.Raw(sql, edbInfoId).QueryRow(&item)
  87. return
  88. }
  89. // Update 更新EdbInfo信息
  90. func (edbInfo *EdbInfo) Update(cols []string) (err error) {
  91. o := orm.NewOrm()
  92. _, err = o.Update(edbInfo, cols...)
  93. return
  94. }
  95. // EdbInfoSearchData
  96. type EdbInfoSearchData struct {
  97. EdbDataId int `description:"数据ID"`
  98. DataTime string `description:"数据日期"`
  99. Value float64 `description:"数据"`
  100. }
  101. // GetEdbDataListAll 获取指标数据列表 order:1升序,其余值为降序
  102. func GetEdbDataListAll(condition string, pars []interface{}, source, order int) (item []*EdbInfoSearchData, err error) {
  103. o := orm.NewOrm()
  104. sql := ``
  105. tableName := GetEdbDataTableName(source)
  106. sql = ` SELECT * FROM %s WHERE 1=1 `
  107. sql = fmt.Sprintf(sql, tableName)
  108. if condition != "" {
  109. sql += condition
  110. }
  111. if order == 1 {
  112. sql += ` ORDER BY data_time ASC `
  113. } else {
  114. sql += ` ORDER BY data_time DESC `
  115. }
  116. _, err = o.Raw(sql, pars).QueryRows(&item)
  117. return
  118. }
  119. // EdbInfoMaxAndMinInfo 指标最新数据记录结构体
  120. type EdbInfoMaxAndMinInfo struct {
  121. MinDate string `description:"最小日期"`
  122. MaxDate string `description:"最大日期"`
  123. MinValue float64 `description:"最小值"`
  124. MaxValue float64 `description:"最大值"`
  125. LatestValue float64 `description:"最新值"`
  126. LatestDate string `description:"实际数据最新日期"`
  127. }
  128. // GetEdbInfoMaxAndMinInfo 获取指标的最新数据记录信息
  129. func GetEdbInfoMaxAndMinInfo(source int, edbCode string) (item *EdbInfoMaxAndMinInfo, err error) {
  130. o := orm.NewOrm()
  131. sql := ``
  132. tableName := GetEdbDataTableName(source)
  133. sql = ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM %s WHERE edb_code=? `
  134. sql = fmt.Sprintf(sql, tableName)
  135. err = o.Raw(sql, edbCode).QueryRow(&item)
  136. var latest_value float64
  137. sql = ` SELECT value AS latest_value FROM %s WHERE edb_code=? ORDER BY data_time DESC LIMIT 1 `
  138. sql = fmt.Sprintf(sql, tableName)
  139. err = o.Raw(sql, edbCode).QueryRow(&latest_value)
  140. item.LatestValue = latest_value
  141. return
  142. }
  143. // ModifyEdbInfoMaxAndMinInfo 修改指标的最新数据信息
  144. func ModifyEdbInfoMaxAndMinInfo(edbInfoId int, item *EdbInfoMaxAndMinInfo) (err error) {
  145. o := orm.NewOrm()
  146. sql := ` UPDATE edb_info SET start_date=?,end_date=?,min_value=?,max_value=?,is_update=2,latest_date=?,latest_value=?,modify_time=NOW() WHERE edb_info_id=? `
  147. _, err = o.Raw(sql, item.MinDate, item.MaxDate, item.MinValue, item.MaxValue, item.MaxDate, item.LatestValue, edbInfoId).Exec()
  148. return
  149. }
  150. // GetEdbDataCount 获取edb指标数据的数量; order:1升序,其余值为降序
  151. func GetEdbDataCount(condition string, pars []interface{}, source int) (count int, err error) {
  152. o := orm.NewOrm()
  153. sql := ``
  154. tableName := GetEdbDataTableName(source)
  155. sql = ` SELECT COUNT(1) AS count FROM %s WHERE 1=1 `
  156. sql = fmt.Sprintf(sql, tableName)
  157. if condition != "" {
  158. sql += condition
  159. }
  160. err = o.Raw(sql, pars).QueryRow(&count)
  161. return
  162. }
  163. // GetLastEdbData 获取最近的一条指标数据
  164. func GetLastEdbData(condition string, pars []interface{}, source int) (item *EdbInfoSearchData, err error) {
  165. o := orm.NewOrm()
  166. sql := ``
  167. tableName := GetEdbDataTableName(source)
  168. sql = ` SELECT * FROM %s WHERE 1=1 `
  169. sql = fmt.Sprintf(sql, tableName)
  170. if condition != "" {
  171. sql += condition
  172. }
  173. sql += ` ORDER BY data_time DESC `
  174. err = o.Raw(sql, pars).QueryRow(&item)
  175. return
  176. }
  177. // GetEdbInfoByEdbCode 根据指标code获取指标信息
  178. func GetEdbInfoByEdbCode(source int, edbCode string) (item *EdbInfo, err error) {
  179. o := orm.NewOrm()
  180. sql := ` SELECT * FROM edb_info WHERE source=? AND edb_code=? `
  181. err = o.Raw(sql, source, edbCode).QueryRow(&item)
  182. return
  183. }
  184. // GetEdbInfoOnlyByEdbCode 仅根据指标code获取指标信息
  185. func GetEdbInfoOnlyByEdbCode(edbCode string) (item *EdbInfo, err error) {
  186. o := orm.NewOrm()
  187. sql := ` SELECT * FROM edb_info WHERE edb_code=? `
  188. err = o.Raw(sql, edbCode).QueryRow(&item)
  189. return
  190. }
  191. // GetEdbInfoCalculateListByCondition 获取指标关系列表
  192. func GetEdbInfoCalculateListByCondition(condition string, pars []interface{}) (items []*EdbInfoCalculateMapping, err error) {
  193. o := orm.NewOrm()
  194. sql := ` SELECT * FROM edb_info_calculate_mapping WHERE 1=1 `
  195. if condition != "" {
  196. sql += condition
  197. }
  198. _, err = o.Raw(sql, pars).QueryRows(&items)
  199. return
  200. }
  201. // GetEdbInfoCalculateCountByCondition 获取关联指标数量
  202. func GetEdbInfoCalculateCountByCondition(condition string, pars []interface{}) (count int, err error) {
  203. o := orm.NewOrm()
  204. sql := ` SELECT COUNT(1) AS count FROM edb_info_calculate_mapping WHERE 1=1 `
  205. if condition != "" {
  206. sql += condition
  207. }
  208. err = o.Raw(sql, pars).QueryRow(&count)
  209. return
  210. }
  211. //优化版本-处理数据精度问题
  212. type EdbInfoSearchDataV1 struct {
  213. EdbDataId int `description:"数据ID"`
  214. DataTime string `description:"数据日期"`
  215. Value string `description:"数据"`
  216. }
  217. //优化版本-处理数据精度问题
  218. func GetEdbDataListAllV1(condition string, pars []interface{}, source, order int) (item []*EdbInfoSearchDataV1, err error) {
  219. o := orm.NewOrm()
  220. sql := ``
  221. tableName := GetEdbDataTableName(source)
  222. sql = ` SELECT * FROM %s WHERE 1=1 `
  223. sql = fmt.Sprintf(sql, tableName)
  224. if condition != "" {
  225. sql += condition
  226. }
  227. if order == 1 {
  228. sql += ` ORDER BY data_time ASC `
  229. } else {
  230. sql += ` ORDER BY data_time DESC `
  231. }
  232. _, err = o.Raw(sql, pars).QueryRows(&item)
  233. return
  234. }
  235. // GetEdbInfoByCondition 获取指标列表
  236. func GetEdbInfoByCondition(condition string, pars []interface{}, order int) (item []*EdbInfo, err error) {
  237. o := orm.NewOrm()
  238. sql := ` SELECT * FROM edb_info WHERE 1=1 `
  239. if condition != "" {
  240. sql += condition
  241. }
  242. if order == 1 {
  243. sql += ` ORDER BY end_date ASC `
  244. } else {
  245. sql += ` ORDER BY edb_info_id ASC `
  246. }
  247. _, err = o.Raw(sql, pars).QueryRows(&item)
  248. return
  249. }
  250. // UnifiedModifyEdbInfoMaxAndMinInfo 统一修改指标的最大最小值
  251. func UnifiedModifyEdbInfoMaxAndMinInfo(edbInfo *EdbInfo) (err error, errMsg string) {
  252. // 修改最大最小值
  253. maxAndMinItem, err := GetEdbInfoMaxAndMinInfo(edbInfo.Source, edbInfo.EdbCode)
  254. if err != nil {
  255. if err.Error() == utils.ErrNoRow() {
  256. err = nil
  257. return
  258. }
  259. errMsg = "刷新指标失败!"
  260. err = errors.New("获取指标最大最小值失败,err:" + err.Error())
  261. return
  262. }
  263. if maxAndMinItem != nil {
  264. err = ModifyEdbInfoMaxAndMinInfo(edbInfo.EdbInfoId, maxAndMinItem)
  265. if err != nil {
  266. errMsg = "刷新指标失败!"
  267. err = errors.New("修改指标最大最小值失败,err:" + err.Error())
  268. return
  269. }
  270. }
  271. // 修改关联的预测指标
  272. go ModifyPredictEdbInfoMaxAndMinInfoBySourceEdbInfoId(edbInfo.EdbInfoId, maxAndMinItem)
  273. return
  274. }
  275. // UnifiedModifyPredictEdbInfoMaxAndMinInfo 统一修改预测运算指标的最大最小值
  276. func UnifiedModifyPredictEdbInfoMaxAndMinInfo(edbInfo *EdbInfo, latestDateStr string, latestValue float64) (err error, errMsg string) {
  277. // 修改最大最小值
  278. maxAndMinItem, err := GetEdbInfoMaxAndMinInfo(edbInfo.Source, edbInfo.EdbCode)
  279. if err != nil {
  280. if err.Error() == utils.ErrNoRow() {
  281. err = nil
  282. return
  283. }
  284. errMsg = "刷新指标失败!"
  285. err = errors.New("获取指标最大最小值失败,err:" + err.Error())
  286. return
  287. }
  288. if maxAndMinItem != nil {
  289. maxAndMinItem.LatestDate = latestDateStr
  290. maxAndMinItem.LatestValue = latestValue
  291. err = ModifyPredictEdbInfoMaxAndMinInfo(edbInfo.EdbInfoId, maxAndMinItem)
  292. if err != nil {
  293. errMsg = "刷新指标失败!"
  294. err = errors.New("修改指标最大最小值失败,err:" + err.Error())
  295. return
  296. }
  297. }
  298. return
  299. }
  300. // GetChartPredictEdbInfoDataList 获取图表的预测指标的未来数据
  301. func GetChartPredictEdbInfoDataList(predictEdbConf PredictEdbConf, latestDateStr string, lastDataValue float64, endDateStr, frequency string, order int) (predictEdbInfoData []*EdbInfoSearchData, err error) {
  302. endDate, err := time.ParseInLocation(utils.FormatDate, endDateStr, time.Local)
  303. if err != nil {
  304. return
  305. }
  306. latestDate, err := time.ParseInLocation(utils.FormatDate, latestDateStr, time.Local)
  307. if err != nil {
  308. return
  309. }
  310. // 开始预测数据的时间
  311. startDate := latestDate
  312. dataValue := lastDataValue
  313. if predictEdbConf.RuleType == 2 {
  314. dataValue = predictEdbConf.FixedValue
  315. }
  316. //获取后面的预测数据
  317. dayList := getPredictEdbDayList(startDate, endDate, frequency)
  318. predictEdbInfoData = make([]*EdbInfoSearchData, 0)
  319. // order:1升序,其余值为降序
  320. if order == 1 {
  321. for k, v := range dayList {
  322. predictEdbInfoData = append(predictEdbInfoData, &EdbInfoSearchData{
  323. EdbDataId: predictEdbConf.PredictEdbInfoId + 10000000000 + k,
  324. DataTime: v.Format(utils.FormatDate),
  325. Value: dataValue,
  326. })
  327. }
  328. } else {
  329. lenDayList := len(dayList)
  330. if lenDayList > 0 {
  331. for i := lenDayList - 1; i >= 0; i-- {
  332. v := dayList[i]
  333. predictEdbInfoData = append(predictEdbInfoData, &EdbInfoSearchData{
  334. EdbDataId: predictEdbConf.PredictEdbInfoId + 10000000000 + i,
  335. DataTime: v.Format(utils.FormatDate),
  336. Value: dataValue,
  337. })
  338. }
  339. }
  340. }
  341. return
  342. }
  343. // GetPredictEdbDayList 获取预测指标日期列表
  344. func getPredictEdbDayList(startDate, endDate time.Time, frequency string) (dayList []time.Time) {
  345. //if !utils.InArrayByStr([]string{"日度", "周度", "月度"}, frequency)
  346. switch frequency {
  347. case "日度":
  348. for currDate := startDate.AddDate(0, 0, 1); currDate.Before(endDate) || currDate.Equal(endDate); currDate = currDate.AddDate(0, 0, 1) {
  349. //周六、日排除
  350. if currDate.Weekday() == time.Sunday || currDate.Weekday() == time.Saturday {
  351. continue
  352. }
  353. dayList = append(dayList, currDate)
  354. }
  355. case "周度":
  356. //nextDate := startDate.AddDate(0, 0, 7)
  357. for currDate := startDate.AddDate(0, 0, 7); currDate.Before(endDate) || currDate.Equal(endDate); currDate = currDate.AddDate(0, 0, 7) {
  358. dayList = append(dayList, currDate)
  359. }
  360. case "月度":
  361. for currDate := startDate; currDate.Before(endDate) || currDate.Equal(endDate); {
  362. currDate = time.Date(currDate.Year(), currDate.Month(), 1, 0, 0, 0, 0, time.Now().Location()).AddDate(0, 2, -1)
  363. if !currDate.After(endDate) {
  364. dayList = append(dayList, currDate)
  365. }
  366. }
  367. }
  368. return
  369. }
  370. // GetPredictDataListByPredictEdbInfoId 根据预测指标id获取预测指标的数据,order:1升序,其余值为降序
  371. func GetPredictDataListByPredictEdbInfoId(edbInfoId, order int, startDate string) (dataList []*EdbInfoSearchData, sourceEdbInfoItem *EdbInfo, predictEdbConf *PredictEdbConf, err error, errMsg string) {
  372. edbInfo, err := GetEdbInfoById(edbInfoId)
  373. if err != nil {
  374. errMsg = `获取预测指标信息失败`
  375. return
  376. }
  377. return GetPredictDataListByPredictEdbInfo(edbInfo, order, startDate)
  378. }
  379. // GetPredictDataListByPredictEdbInfo 根据预测指标信息获取预测指标的数据,order:1升序,其余值为降序
  380. func GetPredictDataListByPredictEdbInfo(edbInfo *EdbInfo, order int, startDate string) (dataList []*EdbInfoSearchData, sourceEdbInfoItem *EdbInfo, predictEdbConf *PredictEdbConf, err error, errMsg string) {
  381. // 查找该预测指标配置
  382. predictEdbConf, err = GetPredictEdbConfById(edbInfo.EdbInfoId)
  383. if err != nil && err.Error() != utils.ErrNoRow() {
  384. errMsg = "获取预测指标配置信息失败"
  385. return
  386. }
  387. if predictEdbConf == nil {
  388. errMsg = "获取预测指标配置信息失败"
  389. err = errors.New(errMsg)
  390. return
  391. }
  392. // 来源指标
  393. sourceEdbInfoItem, err = GetEdbInfoById(predictEdbConf.SourceEdbInfoId)
  394. if err != nil {
  395. if err.Error() == utils.ErrNoRow() {
  396. errMsg = "找不到来源指标信息"
  397. err = errors.New(errMsg)
  398. }
  399. return
  400. }
  401. //获取指标数据(实际已生成)
  402. var condition string
  403. var pars []interface{}
  404. condition += " AND edb_info_id=? "
  405. pars = append(pars, sourceEdbInfoItem.EdbInfoId)
  406. if startDate != "" {
  407. condition += " AND data_time>=? "
  408. pars = append(pars, startDate)
  409. }
  410. dataList, err = GetEdbDataListAll(condition, pars, sourceEdbInfoItem.Source, order)
  411. if err != nil {
  412. return
  413. }
  414. // 获取预测指标未来的数据
  415. predictDataList := make([]*EdbInfoSearchData, 0)
  416. endDateStr := edbInfo.EndDate //预测指标的结束日期
  417. predictDataList, err = GetChartPredictEdbInfoDataList(*predictEdbConf, sourceEdbInfoItem.LatestDate, sourceEdbInfoItem.LatestValue, endDateStr, edbInfo.Frequency, order)
  418. if err != nil {
  419. return
  420. }
  421. dataList = append(dataList, predictDataList...)
  422. if len(predictDataList) > 0 {
  423. tmpValue := predictDataList[0]
  424. // 如果最大值 小于 预测值,那么将预测值作为最大值数据返回
  425. if edbInfo.MaxValue < tmpValue.Value {
  426. edbInfo.MaxValue = tmpValue.Value
  427. }
  428. // 如果最小值 大于 预测值,那么将预测值作为最小值数据返回
  429. if edbInfo.MinValue > tmpValue.Value {
  430. edbInfo.MinValue = tmpValue.Value
  431. }
  432. }
  433. return
  434. }
  435. // GetPredictEdbDataListAll 获取该预测指标所有的数据 ,order:1升序,其余值为降序
  436. func GetPredictEdbDataListAll(edbInfo *EdbInfo, order int) (items []*EdbInfoSearchData, err error) {
  437. if edbInfo.Source == utils.DATA_SOURCE_PREDICT { //普通的预测指标是没有入库数据的,直接往配置里面获取
  438. items, _, _, err, _ = GetPredictDataListByPredictEdbInfo(edbInfo, 1, "")
  439. } else {
  440. var condition string
  441. var pars []interface{}
  442. condition += " AND edb_info_id=? "
  443. pars = append(pars, edbInfo.EdbInfoId)
  444. items, err = GetEdbDataListAll(condition, pars, edbInfo.Source, order)
  445. }
  446. return
  447. }
  448. // GetPredictEdbDataListAllByStartDate 根据开始日期获取该预测指标所有的数据 ,order:1升序,其余值为降序
  449. func GetPredictEdbDataListAllByStartDate(edbInfo *EdbInfo, order int, startDate string) (items []*EdbInfoSearchData, err error) {
  450. if edbInfo.Source == utils.DATA_SOURCE_PREDICT { //普通的预测指标是没有入库数据的,直接往配置里面获取
  451. items, _, _, err, _ = GetPredictDataListByPredictEdbInfo(edbInfo, 1, startDate)
  452. } else {
  453. var condition string
  454. var pars []interface{}
  455. condition += " AND edb_info_id=? "
  456. pars = append(pars, edbInfo.EdbInfoId)
  457. if startDate != "" {
  458. condition += " AND data_time>=? "
  459. pars = append(pars, startDate)
  460. }
  461. items, err = GetEdbDataListAll(condition, pars, edbInfo.Source, order)
  462. }
  463. return
  464. }
  465. // ModifyPredictEdbInfoMaxAndMinInfo 修改预测指标的最新数据信息
  466. func ModifyPredictEdbInfoMaxAndMinInfo(edbInfoId int, item *EdbInfoMaxAndMinInfo) (err error) {
  467. o := orm.NewOrm()
  468. sql := ` UPDATE edb_info SET start_date=?,end_date=?,min_value=?,max_value=?,is_update=2,latest_date=?,latest_value=?,modify_time=NOW() WHERE edb_info_id=? `
  469. _, err = o.Raw(sql, item.MinDate, item.MaxDate, item.MinValue, item.MaxValue, item.LatestDate, item.LatestValue, edbInfoId).Exec()
  470. return
  471. }
  472. // ModifyCalculateEdbInfo 修改计算指标信息
  473. func ModifyCalculateEdbInfo(edbName, frequency, unit, calculateFormula string, classifyId, edbInfoId int) (err error) {
  474. o := orm.NewOrmUsingDB("data")
  475. sql := ` UPDATE edb_info
  476. SET
  477. edb_name =?,
  478. edb_name_source =?,
  479. frequency = ?,
  480. unit = ?,
  481. classify_id = ?,
  482. calculate_formula=?,
  483. modify_time = NOW()
  484. WHERE edb_info_id = ?`
  485. _, err = o.Raw(sql, edbName, edbName, frequency, unit, classifyId, calculateFormula, edbInfoId).Exec()
  486. return
  487. }