package data_manage import ( "encoding/json" "fmt" "github.com/rdlucklib/rdluck_tools/paging" "hongze/hz_crm_api/controllers" "hongze/hz_crm_api/models" "hongze/hz_crm_api/models/data_manage" "hongze/hz_crm_api/services/alarm_msg" "hongze/hz_crm_api/services/data" "hongze/hz_crm_api/services/elastic" "hongze/hz_crm_api/utils" "strconv" "strings" "sync" "time" ) // 数据管理 type EdbInfoController struct { controllers.BaseAuthController } // @Title 新增指标-查询指标信息接口 // @Description 新增指标-查询指标信息接口 // @Param Source query int true "来源:1:同花顺,2:wind,3:彭博" // @Param EdbCode query string false "指标编码" // @Success 200 {object} data_manage.EdbInfoSearchResp // @router /edb_info/search [get] func (this *EdbInfoController) EdbInfoSearch() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() source, _ := this.GetInt("Source") edbCode := this.GetString("EdbCode") edbCode = strings.Trim(edbCode, "\t") edbCode = strings.Trim(edbCode, " ") edbCode = strings.Replace(edbCode, "\t", "", -1) if source <= 0 { br.Msg = "无效的数据来源" return } if edbCode == "" { br.Msg = "请输入指标ID" return } //如果是彭博财务指标,那么需要传入客户code if source == utils.DATA_SOURCE_PB_FINANCE { companyCode := this.GetString("CompanyCode") companyCode = strings.Trim(companyCode, "\t") companyCode = strings.Trim(companyCode, " ") companyCode = strings.Replace(companyCode, "\t", "", -1) // 如果财务数据,那么需要拼接上客户code edbCode = companyCode + "&&" + edbCode } resp := new(data_manage.EdbInfoSearchResp) //判断指标是否存在 var item *data_manage.EdbInfo var err error if source == utils.DATA_SOURCE_GL { // 如果是钢联的话,那么就先判断是不是存在钢联化工 item, err = data_manage.GetEdbInfoByEdbCode(utils.DATA_SOURCE_MYSTEEL_CHEMICAL, edbCode) if err != nil { if err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } } err = nil if item != nil { source = utils.DATA_SOURCE_MYSTEEL_CHEMICAL } else { // 判断是不是已经在钢联这边已经存在了 item, err = data_manage.GetEdbInfoByEdbCode(utils.DATA_SOURCE_GL, edbCode) if err != nil { if err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } } err = nil // 如果在钢联来源也没找到,那么就需要再判断下是否处于 《钢联化工》 数据源里面 if item == nil { tmpInfo, err := data_manage.GetBaseFromMysteelChemicalIndexByCode(edbCode) if err != nil { if err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } } err = nil if tmpInfo != nil { source = utils.DATA_SOURCE_MYSTEEL_CHEMICAL } } } } if item == nil { item, err = data_manage.GetEdbInfoByEdbCode(source, edbCode) } if err != nil { if err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } } var isAdd bool var isInEdb bool //是否在指标库中 if item != nil && item.EdbInfoId > 0 { isInEdb = true //在指标库中 resp.Status = 1 searchItem := new(data_manage.EdbInfoSearch) searchItem.EdbCode = item.EdbCode searchItem.StartDate = item.StartDate searchItem.EndDate = item.EndDate searchItem.EdbName = item.EdbName resp.SearchItem = searchItem //查询目录 resultList, _ := data_manage.GetClassifyAllByClassifyId(item.ClassifyId) resp.ClassifyList = resultList // 查询该指标是否有权限 obj := data_manage.EdbInfoNoPermissionAdmin{} conf, err := obj.GetByEdbInfoIdAndAdminId(this.SysUser.AdminId, item.EdbInfoId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取当前账号的不可见指标配置失败,err:" + err.Error() return } if conf != nil { resp.Status = 3 } } else { //dateNow := time.Now() //startDate := dateNow.AddDate(-30, 0, 0).Format(utils.FormatDate) searchItem := new(data_manage.EdbInfoSearch) if source == utils.DATA_SOURCE_THS { dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, utils.DATA_SOURCE_THS, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取Ths已存在信息失败,Err:" + err.Error() return } fmt.Println("ths len:", len(dataItems)) if len(dataItems) > 0 { fmt.Println("ths data exist") searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataThsMaxOrMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取Ths日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //endDate := dateNow.AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate) //searchItem, err = data.GetEdbDataByThs(edbCode, startDate, endDate) //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取失败,Err:" + err.Error() // return //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } } else if source == utils.DATA_SOURCE_WIND { fmt.Println("wind data exist") dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, utils.DATA_SOURCE_WIND, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取Wind已存在信息失败,Err:" + err.Error() return } fmt.Println("wind dataItems:", len(dataItems)) if len(dataItems) > 0 { searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataWindMaxOrMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取wind日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //endDate := dateNow.Format(utils.FormatDate) //searchItem, err = data.GetEdbDataByWind(edbCode, startDate, endDate) //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "wind 获取失败,Err:" + err.Error() // return //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { if respItem.Ret == 421 { br.Msg = "该渠道已超过添加上限" } else { br.Msg = "未搜索到该指标" } br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } } else if source == utils.DATA_SOURCE_PB || source == utils.DATA_SOURCE_PB_FINANCE { fmt.Println("pb data exist") dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取Pb已存在信息失败,Err:" + err.Error() return } fmt.Println("pb dataItems:", len(dataItems)) if len(dataItems) > 0 { searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataPbMaxOrMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取Pb日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //endDate := dateNow.AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDateUnSpace) //startDate := dateNow.AddDate(-30, 0, 0).Format(utils.FormatDateUnSpace) //searchItem, err = data.GetEdbDataByPb(edbCode, startDate, endDate) //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "彭博数据获取失败,Err:" + err.Error() // return //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } } else if source == utils.DATA_SOURCE_MANUAL { //手工数据指标 dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, utils.DATA_SOURCE_MANUAL, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取Ths已存在信息失败,Err:" + err.Error() return } fmt.Println("ths len:", len(dataItems)) if len(dataItems) > 0 { fmt.Println("ths data exist") searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataManualMaxOrMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取Ths日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //searchItem, err = data_manage.GetEdbDataByManual(edbCode, startDate, endDate) //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取失败,Err:" + err.Error() // return //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 manualInfo, err := models.GetEdbinfoByTradeCode(edbCode) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取手工指标详情失败,Err:" + err.Error() return } if manualInfo != nil { searchItem.Frequency = manualInfo.Frequency searchItem.Unit = manualInfo.Unit searchItem.EdbName = manualInfo.SecName } } else if source == utils.DATA_SOURCE_LZ { dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, utils.DATA_SOURCE_LZ, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取隆众已存在信息失败,Err:" + err.Error() return } fmt.Println("ths len:", len(dataItems)) if len(dataItems) > 0 { fmt.Println("ths data exist") searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataLzMaxOrMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取隆众日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //endDate := dateNow.AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate) //searchItem, err = data_manage.GetEdbDataByLz(edbCode, startDate, endDate) //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取隆众数据失败,Err:" + err.Error() // return //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 lzInfo, err := data_manage.GetLongzhongSurveyProductByCode(edbCode) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取手工指标详情失败,Err:" + err.Error() return } if lzInfo != nil { frequency := lzInfo.Frequency var frequencyStr string if frequency == 1 { frequencyStr = "日度" } else if frequency == 2 { frequencyStr = "周度" } else if frequency == 3 { frequencyStr = "月度" } else if frequency == 4 { frequencyStr = "季度" } else if frequency == 5 { frequencyStr = "年度" } else if frequency == 99 { frequencyStr = "无固定频率" } searchItem.Frequency = frequencyStr searchItem.Unit = lzInfo.UnitName searchItem.EdbName = lzInfo.SampleName + lzInfo.BreedName + lzInfo.QuotaName } } else if source == utils.DATA_SOURCE_YS { //有色网 dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, utils.DATA_SOURCE_YS, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取Ys已存在信息失败,Err:" + err.Error() return } fmt.Println("dataItems:", len(dataItems)) if len(dataItems) > 0 { searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataYsMaxAndMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取YS日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //endDate := dateNow.AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate) //searchItem, err = data_manage.GetEdbDataByYs(edbCode, startDate, endDate) //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取失败,GetEdbDataByYs Err:" + err.Error() // return //} //if searchItem.StartDate == "" { // minDate, maxDate, _ := data_manage.GetEdbDataYsMaxAndMinDate(edbCode) // searchItem.StartDate = minDate // searchItem.EndDate = maxDate //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 smmInfo, err := data_manage.GetBaseFromSmmIndexByIndexCode(edbCode) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取有色指标详情失败,Err:" + err.Error() return } if smmInfo != nil { searchItem.Frequency = smmInfo.Frequency searchItem.Unit = smmInfo.Unit searchItem.EdbName = smmInfo.IndexName } } else if source == utils.DATA_SOURCE_GL { //钢联 dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取钢联已存在信息失败,Err:" + err.Error() return } if len(dataItems) > 0 { searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataGlMaxOrMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取钢联日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //endDate := dateNow.AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate) //searchItem, err = data_manage.GetEdbDataByGl(edbCode, startDate, endDate) //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取钢联数据失败,Err:" + err.Error() // return //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 glInfo, err := data_manage.GetGlIndexByCode(edbCode) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取钢联指标详情失败,Err:" + err.Error() return } if glInfo != nil { searchItem.Frequency = glInfo.FrequencyName searchItem.Unit = glInfo.UnitName searchItem.EdbName = glInfo.IndexName } } else if source == utils.DATA_SOURCE_ZZ { //郑商所 var suffix string if strings.Contains(edbCode, "deal") { suffix = "deal" } else if strings.Contains(edbCode, "buy") { suffix = "buy" } else if strings.Contains(edbCode, "sold") { suffix = "sold" } else { br.Msg = "未搜索到该指标" br.ErrMsg = "指标code异常" return } dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取郑商所已存在信息失败,Err:" + err.Error() return } if len(dataItems) > 0 { searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataZzMaxOrMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取郑商所日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //searchItem, err = data_manage.GetEdbDataByZz(edbCode, suffix, startDate, "") //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取失败,GetEdbDataByZz Err:" + err.Error() // return //} //if searchItem.StartDate == "" { // minDate, maxDate, _ := data_manage.GetEdbDataZzMaxOrMinDate(edbCode) // searchItem.StartDate = minDate // searchItem.EndDate = maxDate //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 allInfo, err := data_manage.GetBaseInfoFromZhengzhouByIndexCode(edbCode, suffix) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取郑商所指标详情失败,Err:" + err.Error() return } var zzInfo *data_manage.BaseInfoFromZz if allInfo != nil { zzInfo = allInfo[0] } if zzInfo != nil { searchItem.Frequency = "日度" searchItem.Unit = "手" if suffix == "deal" { searchItem.EdbName = zzInfo.DealName } else if suffix == "buy" { searchItem.EdbName = zzInfo.BuyName } else { searchItem.EdbName = zzInfo.SoldName } } } else if source == utils.DATA_SOURCE_DL { //大商所 var suffix string if strings.Contains(edbCode, "deal") { suffix = "deal" } else if strings.Contains(edbCode, "buy") { suffix = "buy" } else if strings.Contains(edbCode, "sold") { suffix = "sold" } else { br.Msg = "未搜索到该指标" br.ErrMsg = "指标code异常" return } dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取大商所已存在信息失败,Err:" + err.Error() return } if len(dataItems) > 0 { searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataDlMaxOrMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取大商所日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //searchItem, err = data_manage.GetEdbDataByDl(edbCode, suffix, startDate, "") //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取失败,GetEdbDataByDl Err:" + err.Error() // return //} //if searchItem.StartDate == "" { // minDate, maxDate, _ := data_manage.GetEdbDataDlMaxOrMinDate(edbCode) // searchItem.StartDate = minDate // searchItem.EndDate = maxDate //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 allInfo, err := data_manage.GetBaseInfoFromDalianByIndexCode(edbCode, suffix) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取大商所指标详情失败,Err:" + err.Error() return } var dlInfo *data_manage.BaseInfoFromDl if allInfo != nil { dlInfo = allInfo[0] } if dlInfo != nil { searchItem.Frequency = "日度" searchItem.Unit = "手" if suffix == "deal" { searchItem.EdbName = dlInfo.DealName } else if suffix == "buy" { searchItem.EdbName = dlInfo.BuyName } else { searchItem.EdbName = dlInfo.SoldName } } } else if source == utils.DATA_SOURCE_SH { //上期所 var suffix string if strings.Contains(edbCode, "deal") { suffix = "deal" } else if strings.Contains(edbCode, "buy") { suffix = "buy" } else if strings.Contains(edbCode, "sold") { suffix = "sold" } else { br.Msg = "未搜索到该指标" br.ErrMsg = "指标code异常" return } dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取上期所已存在信息失败,Err:" + err.Error() return } if len(dataItems) > 0 { searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataShMaxOrMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取上期所日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //searchItem, err = data_manage.GetEdbDataBySh(edbCode, suffix, startDate, "") //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取失败,GetEdbDataBySh Err:" + err.Error() // return //} //if searchItem.StartDate == "" { // minDate, maxDate, _ := data_manage.GetEdbDataShMaxOrMinDate(edbCode) // searchItem.StartDate = minDate // searchItem.EndDate = maxDate //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 allInfo, err := data_manage.GetBaseInfoFromShByIndexCode(edbCode, suffix) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取上期所指标详情失败,Err:" + err.Error() return } var shInfo *data_manage.BaseInfoFromSh if allInfo != nil { shInfo = allInfo[0] } if shInfo != nil { searchItem.Frequency = "日度" searchItem.Unit = "手" if suffix == "deal" { searchItem.EdbName = shInfo.DealName } else if suffix == "buy" { searchItem.EdbName = shInfo.BuyName } else { searchItem.EdbName = shInfo.SoldName } } } else if source == utils.DATA_SOURCE_CFFEX { //中金所 var suffix string if strings.Contains(edbCode, "deal") { suffix = "deal" } else if strings.Contains(edbCode, "buy") { suffix = "buy" } else if strings.Contains(edbCode, "sold") { suffix = "sold" } else { br.Msg = "未搜索到该指标" br.ErrMsg = "指标code异常" return } dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取中金所已存在信息失败,Err:" + err.Error() return } if len(dataItems) > 0 { searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataCffexMaxOrMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取中金所日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //searchItem, err = data_manage.GetEdbDataByCffex(edbCode, suffix, startDate, "") //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取失败,GetEdbDataByCffex Err:" + err.Error() // return //} //if searchItem.StartDate == "" { // minDate, maxDate, _ := data_manage.GetEdbDataCffexMaxOrMinDate(edbCode) // searchItem.StartDate = minDate // searchItem.EndDate = maxDate //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 allInfo, err := data_manage.GetBaseInfoFromCffexByIndexCode(edbCode, suffix) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取中金所指标详情失败,Err:" + err.Error() return } var cffexInfo *data_manage.BaseInfoFromCffex if allInfo != nil { cffexInfo = allInfo[0] } if cffexInfo != nil { searchItem.Frequency = "日度" searchItem.Unit = "手" if suffix == "deal" { searchItem.EdbName = cffexInfo.DealName } else if suffix == "buy" { searchItem.EdbName = cffexInfo.BuyName } else { searchItem.EdbName = cffexInfo.SoldName } } } else if source == utils.DATA_SOURCE_SHFE { //上期能源 var suffix string if strings.Contains(edbCode, "deal") { suffix = "deal" } else if strings.Contains(edbCode, "buy") { suffix = "buy" } else if strings.Contains(edbCode, "sold") { suffix = "sold" } else { br.Msg = "未搜索到该指标" br.ErrMsg = "指标code异常" return } dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取上期能源已存在信息失败,Err:" + err.Error() return } if len(dataItems) > 0 { searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataShfeMaxOrMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取上期能源日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //searchItem, err = data_manage.GetEdbDataByShfe(edbCode, suffix, startDate, "") //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取失败,GetEdbDataByShfe Err:" + err.Error() // return //} //if searchItem.StartDate == "" { // minDate, maxDate, _ := data_manage.GetEdbDataShfeMaxOrMinDate(edbCode) // searchItem.StartDate = minDate // searchItem.EndDate = maxDate //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 allInfo, err := data_manage.GetBaseInfoFromShfeByIndexCode(edbCode, suffix) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取上期能源指标详情失败,Err:" + err.Error() return } var shfeInfo *data_manage.BaseInfoFromShfe if allInfo != nil { shfeInfo = allInfo[0] } if shfeInfo != nil { searchItem.Frequency = "日度" searchItem.Unit = "手" if suffix == "deal" { searchItem.EdbName = shfeInfo.DealName } else if suffix == "buy" { searchItem.EdbName = shfeInfo.BuyName } else { searchItem.EdbName = shfeInfo.SoldName } } } else if source == utils.DATA_SOURCE_GIE { //欧洲天然气 var suffix string l := len(edbCode) if strings.Contains(edbCode[l-2:], "GS") { suffix = "GS" } else if strings.Contains(edbCode[l-2:], "CF") { suffix = "CF" } else if strings.Contains(edbCode[l-1:], "T") { suffix = "T" } else if strings.Contains(edbCode[l-2:], "In") { suffix = "In" } else if strings.Contains(edbCode[l-3:], "Out") { suffix = "Out" } else if strings.Contains(edbCode[l-3:], "WGV") { suffix = "WGV" } else if strings.Contains(edbCode[l-2:], "IC") { suffix = "IC" } else if strings.Contains(edbCode[l-2:], "WC") { suffix = "WC" } else if strings.Contains(edbCode[l-1:], "F") { suffix = "F" } else if strings.Contains(edbCode[l-1:], "C") { suffix = "C" } else { br.Msg = "未搜索到该指标" br.ErrMsg = "指标code异常" return } dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取欧洲天然气已存在信息失败,Err:" + err.Error() return } if len(dataItems) > 0 { searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataGieMaxOrMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取欧洲天然气日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //searchItem, err = data_manage.GetEdbDataByGie(edbCode, suffix, startDate, "") //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取失败,GetEdbDataByGie Err:" + err.Error() // return //} //if searchItem.StartDate == "" { // minDate, maxDate, _ := data_manage.GetEdbDataGieMaxOrMinDate(edbCode) // searchItem.StartDate = minDate // searchItem.EndDate = maxDate //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 allInfo, err := data_manage.GetBaseFromEicDataAllByIndexCodeV2(edbCode, suffix) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取欧洲天然气指标详情失败,Err:" + err.Error() return } var eicInfo *data_manage.BaseFromTradeEicIndexV2 if allInfo != nil { eicInfo = allInfo[0] } var name string if eicInfo != nil { searchItem.Frequency = "日度" if suffix == "GS" { name = eicInfo.Name + "_gas_in_storage" searchItem.EdbName = name searchItem.Unit = "TWh" } else if suffix == "C" { name = eicInfo.Name + "_consumption" searchItem.EdbName = name searchItem.Unit = "TWh" } else if suffix == "CF" { name = eicInfo.Name + "_consumption_full" searchItem.EdbName = name searchItem.Unit = "百分比" } else if suffix == "F" { name = eicInfo.Name + "_full" searchItem.EdbName = name searchItem.Unit = "百分比" } else if suffix == "T" { name = eicInfo.Name + "_trend" searchItem.EdbName = name searchItem.Unit = "百分比" } else if suffix == "In" { name = eicInfo.Name + "_injection" searchItem.EdbName = name searchItem.Unit = "GWH/d" } else if suffix == "Out" { name = eicInfo.Name + "_withdrawal" searchItem.EdbName = name searchItem.Unit = "GWH/d" } else if suffix == "WGV" { name = eicInfo.Name + "_working_gas_volume" searchItem.EdbName = name searchItem.Unit = "TWh" } else if suffix == "IC" { name = eicInfo.Name + "_injection_capacity" searchItem.EdbName = name searchItem.Unit = "GWh/d" } else if suffix == "WC" { name = eicInfo.Name + "_withdrawal_capacity" searchItem.EdbName = name searchItem.Unit = "GWh/d" } } } else if source == utils.DATA_SOURCE_LT { fmt.Println("lt data exist") if strings.Contains(edbCode, "=") { br.Msg = "暂不支持编码中含有=的指标" br.ErrMsg = "暂不支持编码中含有=的指标" return } dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, utils.DATA_SOURCE_LT, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取 lt 已存在信息失败,Err:" + err.Error() return } fmt.Println("lt dataItems:", len(dataItems)) if len(dataItems) > 0 { searchItem.EdbCode = edbCode edbInfoMaxAndMinInfo, err := data_manage.GetEdbInfoMaxAndMinInfo(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取lt日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = edbInfoMaxAndMinInfo.MinDate searchItem.EndDate = edbInfoMaxAndMinInfo.MaxDate } else { //endDate := dateNow.Format(utils.FormatDate) //searchItem, err = data.GetEdbDataByLt(edbCode, startDate, endDate) //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "lt 获取失败,Err:" + err.Error() // return //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = respItem.Msg br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } } else if source == utils.DATA_SOURCE_COAL { //中国煤炭网 var suffix string if strings.Contains(edbCode, "jsm") { suffix = "jsm_index" } else if strings.Contains(edbCode, "company") { suffix = "company_index" } else if strings.Contains(edbCode, "firm") { suffix = "firm_index" } else if strings.Contains(edbCode, "coastal") { suffix = "coastal_index" } else if strings.Contains(edbCode, "inland") { suffix = "inland_index" } else { br.Msg = "未搜索到该指标" br.ErrMsg = "指标code异常" return } dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取煤炭网已存在信息失败,Err:" + err.Error() return } if len(dataItems) > 0 { searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataCoalMaxOrMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取煤炭网日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //searchItem, err = data_manage.GetEdbDataByCffex(edbCode, suffix, startDate, "") //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取失败,GetEdbDataByCffex Err:" + err.Error() // return //} //if searchItem.StartDate == "" { // minDate, maxDate, _ := data_manage.GetEdbDataCffexMaxOrMinDate(edbCode) // searchItem.StartDate = minDate // searchItem.EndDate = maxDate //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 allInfo, err := data_manage.GetBaseInfoFromCoalByIndexCode(edbCode, suffix) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取煤炭网指标详情失败,Err:" + err.Error() return } var coalInfo *data_manage.BaseInfoFromCoal if allInfo != nil { coalInfo = allInfo[0] } if coalInfo != nil { searchItem.Frequency = coalInfo.Frequency searchItem.Unit = coalInfo.Unit searchItem.EdbName = coalInfo.IndexName } } else if source == utils.DATA_SOURCE_GOOGLE_TRAVEL { //谷歌出行数据 dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取煤炭网已存在信息失败,Err:" + err.Error() return } if len(dataItems) > 0 { searchItem.EdbCode = edbCode item, err := data_manage.GetEdbInfoMaxAndMinInfo(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取煤炭网日期信息失败,Err:" + err.Error() return } if item != nil { searchItem.DataList = dataItems searchItem.StartDate = item.MinDate searchItem.EndDate = item.MaxDate } } else { respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } } else if source == utils.DATA_SOURCE_MYSTEEL_CHEMICAL { //钢联化工 dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取钢联已存在信息失败,Err:" + err.Error() return } if len(dataItems) > 0 { searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataMysteelChemicalMaxOrMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取钢联日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //endDate := dateNow.AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate) //searchItem, err = data_manage.GetEdbDataByGl(edbCode, startDate, endDate) //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取钢联数据失败,Err:" + err.Error() // return //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 glInfo, err := data_manage.GetBaseFromMysteelChemicalIndexByCode(edbCode) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取钢联指标详情失败,Err:" + err.Error() return } if glInfo != nil { searchItem.Frequency = glInfo.Frequency searchItem.Unit = glInfo.Unit searchItem.EdbName = glInfo.IndexName } } else if source == utils.DATA_SOURCE_EIA_STEO { //eia steo报告 dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取钢联已存在信息失败,Err:" + err.Error() return } if len(dataItems) > 0 { searchItem.EdbCode = edbCode item, err := data_manage.GetEdbInfoMaxAndMinInfo(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取eia steo日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = item.MinDate searchItem.EndDate = item.MaxDate } else { respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 eiasteoInfo, err := data_manage.GetBaseFromEiaSteoIndexByCode(edbCode) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取钢联指标详情失败,Err:" + err.Error() return } if eiasteoInfo != nil { searchItem.Frequency = eiasteoInfo.Frequency searchItem.Unit = eiasteoInfo.Unit searchItem.EdbName = eiasteoInfo.IndexName } } else if source == utils.DATA_SOURCE_COM_TRADE { // un数据源 dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取联合国商品贸易数据已存在信息失败,Err:" + err.Error() return } if len(dataItems) > 0 { searchItem.EdbCode = edbCode item, err := data_manage.GetEdbInfoMaxAndMinInfo(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取联合国商品贸易数据日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = item.MinDate searchItem.EndDate = item.MaxDate } else { respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 eiasteoInfo, err := data_manage.GetComTradeIndex(edbCode) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取钢联指标详情失败,Err:" + err.Error() return } if eiasteoInfo != nil { //eiasteoInfo. if eiasteoInfo.Type <= 2 { searchItem.Frequency = `年度` } else { searchItem.Frequency = `月度` } if eiasteoInfo.Type == 1 || eiasteoInfo.Type == 3 { searchItem.Unit = "美元" } else { searchItem.Unit = "千克" } searchItem.EdbName = eiasteoInfo.Name } } else if source == utils.DATA_SOURCE_SCI { //卓创数据(红桃三) dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取SCI已存在信息失败,Err:" + err.Error() return } fmt.Println("dataItems:", len(dataItems)) if len(dataItems) > 0 { searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataSciMaxAndMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取SCI日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //endDate := dateNow.AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate) //searchItem, err = data_manage.GetEdbDataByYs(edbCode, startDate, endDate) //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取失败,GetEdbDataByYs Err:" + err.Error() // return //} //if searchItem.StartDate == "" { // minDate, maxDate, _ := data_manage.GetEdbDataYsMaxAndMinDate(edbCode) // searchItem.StartDate = minDate // searchItem.EndDate = maxDate //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 smmInfo, err := data_manage.GetBaseFromSciIndexByIndexCode(edbCode) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取Sci指标详情失败,Err:" + err.Error() return } if smmInfo != nil { searchItem.Frequency = smmInfo.Frequency searchItem.Unit = smmInfo.Unit searchItem.EdbName = smmInfo.IndexName } } else if source == utils.DATA_SOURCE_BAIINFO { //百川盈孚 dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取BAIINFO已存在信息失败,Err:" + err.Error() return } fmt.Println("dataItems:", len(dataItems)) if len(dataItems) > 0 { searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataBaiinfoMaxAndMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取BAIINFO日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { //endDate := dateNow.AddDate(utils.DATA_END_DATE_LIMIT, 0, 0).Format(utils.FormatDate) //searchItem, err = data_manage.GetEdbDataByYs(edbCode, startDate, endDate) //if err != nil { // br.Msg = "获取失败" // br.ErrMsg = "获取失败,GetEdbDataByYs Err:" + err.Error() // return //} //if searchItem.StartDate == "" { // minDate, maxDate, _ := data_manage.GetEdbDataYsMaxAndMinDate(edbCode) // searchItem.StartDate = minDate // searchItem.EndDate = maxDate //} respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 baiInfo, err := data_manage.GetBaseFromBaiinfoIndexByIndexCode(edbCode) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取Baiinfo指标详情失败,Err:" + err.Error() return } if baiInfo != nil { searchItem.Frequency = baiInfo.Frequency searchItem.Unit = baiInfo.Unit searchItem.EdbName = baiInfo.IndexName } } else if source == utils.DATA_SOURCE_NATIONAL_STATISTICS { // 国家统计局 dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取国家统计局已存在信息失败,Err:" + err.Error() return } if len(dataItems) > 0 { searchItem.EdbCode = edbCode item, err := data_manage.GetEdbInfoMaxAndMinInfo(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取国家统计局日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = item.MinDate searchItem.EndDate = item.MaxDate } else { respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标" br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } //获取指标信息 nationalInfo, err := data_manage.GetBaseFromNationalStatisticsIndexByIndexCode(edbCode) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取国家统计局详情失败,Err:" + err.Error() return } if nationalInfo != nil { searchItem.Frequency = nationalInfo.Frequency searchItem.Unit = nationalInfo.Unit searchItem.EdbName = fmt.Sprintf("%s%s", nationalInfo.Reg, nationalInfo.IndexName) } } else if source == utils.DATA_SOURCE_FUBAO { //数宝 dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, utils.DATA_SOURCE_FUBAO, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取Fubao已存在信息失败,Err:" + err.Error() return } fmt.Println("fubao len:", len(dataItems)) if len(dataItems) > 0 { fmt.Println("fubao data exist") searchItem.EdbCode = edbCode minDate, maxDate, err := data_manage.GetEdbDataFubaoMaxOrMinDate(edbCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取Ths日期信息失败,Err:" + err.Error() return } searchItem.DataList = dataItems searchItem.StartDate = minDate searchItem.EndDate = maxDate } else { respItem, err := data.AddEdbData(source, edbCode) if err != nil { br.Msg = "获取失败," + respItem.Msg br.ErrMsg = "获取失败,Err:" + err.Error() return } if respItem.Ret != 200 { br.Msg = "未搜索到该指标," + respItem.Msg br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode return } isAdd = true } } else { br.Msg = "无效的数据来源" return } if isAdd { dataList, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, utils.EDB_DATA_LIMIT) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,GetEdbDataAllByEdbCode Err:" + err.Error() return } searchItem.DataList = dataList edbInfoMaxAndMinInfo, err := data_manage.GetEdbInfoMaxAndMinInfo(source, edbCode) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取数据失败,GetEdbInfoMaxAndMinInfo Err:" + err.Error() return } searchItem.EdbCode = edbCode searchItem.DataList = dataList if edbInfoMaxAndMinInfo != nil { searchItem.StartDate = edbInfoMaxAndMinInfo.MinDate searchItem.EndDate = edbInfoMaxAndMinInfo.MaxDate } //edb指标信息 edbInfoItem, err := data_manage.GetEdbInfoByEdbCode(source, edbCode) if edbInfoItem != nil { searchItem.EdbName = edbInfoItem.EdbName } } resp.Status = 2 resp.SearchItem = searchItem } //如果不在指标库中,且不是新增 if !isInEdb && !isAdd { if resp.SearchItem.DataList == nil || len(resp.SearchItem.DataList) <= 0 { br.Msg = "目标指标无有效值,请重新搜索" br.Data = resp return } } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 指标列表接口 // @Description 指标列表接口 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param EdbInfoId query int true "指标id" // @Param KeyWord query string false "搜索关键词:指标ID/指标名称" // @Success 200 {object} data_manage.EdbInfoListResp // @router /edb_info/list [get] func (this *EdbInfoController) EdbInfoList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() edbInfoId, _ := this.GetInt("EdbInfoId") keyWord := this.GetString("KeyWord") pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") var total int page := paging.GetPaging(currentIndex, pageSize, total) var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) var condition string var pars []interface{} //if edbInfoId <= 0 && keyWord == "" { // br.Msg = "参数错误" // return //} // 指标类型,0:普通指标,1:预测指标 condition += " AND edb_info_type=? " pars = append(pars, 0) if edbInfoId > 0 { condition += " AND edb_info_id=? " pars = append(pars, edbInfoId) // 获取当前账号的不可见指标配置 obj := data_manage.EdbInfoNoPermissionAdmin{} conf, err := obj.GetByEdbInfoIdAndAdminId(this.SysUser.AdminId, edbInfoId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取当前账号的不可见指标配置失败,err:" + err.Error() return } if conf != nil { br.Msg = "无权限,请联系管理员" br.IsSendEmail = false return } } if keyWord != "" { condition += ` AND ( edb_code LIKE '%` + keyWord + `%' OR edb_name LIKE '%` + keyWord + `%' )` //pars = append(pars, keyWord) //pars = append(pars, keyWord) } resp := new(data_manage.EdbInfoListResp) if condition == "" { item := new(data_manage.EdbInfoList) resp.Paging = page resp.Item = item br.Ret = 200 br.Success = true br.Msg = "获取成功" return } //获取指标信息 edbInfoItem, err := data_manage.GetEdbInfoByCondition(condition, pars) if err != nil && err.Error() != utils.ErrNoRow() { br.Success = true br.Msg = "获取指标信息失败" br.ErrMsg = "获取指标信息失败,Err:" + err.Error() return } if edbInfoItem == nil || (err != nil && err.Error() == utils.ErrNoRow()) { item := new(data_manage.EdbInfoList) resp.Paging = page resp.Item = item br.Ret = 200 br.Success = true br.Msg = "获取成功" return } //获取英文频度 edbInfoItem.FrequencyEn = data.GetFrequencyEn(edbInfoItem.Frequency) //获取指标数据 var dataCondition string var dataPars []interface{} dataCondition += ` AND edb_info_id=? ` dataPars = append(dataPars, edbInfoItem.EdbInfoId) dataCount, err := data_manage.GetEdbDataCountByCondition(dataCondition, dataPars, edbInfoItem.Source) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取指标信息失败" br.ErrMsg = "获取指标数据总数失败,Err:" + err.Error() return } page = paging.GetPaging(currentIndex, pageSize, dataCount) dataList, err := data_manage.GetEdbDataListByCondition(dataCondition, dataPars, edbInfoItem.Source, pageSize, startSize) if err != nil { br.Msg = "获取指标信息失败" br.ErrMsg = "获取指标数据失败,Err:" + err.Error() return } edbInfoItem.DataList = dataList // 获取指标插入配置 { edbDataInsertConfig, err := data_manage.GetEdbDataInsertConfigByEdbId(edbInfoId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取指标信息失败" br.ErrMsg = "获取指标数据失败,Err:" + err.Error() return } if edbDataInsertConfig != nil { edbInfoItem.DataInsertConfig.Date = edbDataInsertConfig.Date.Format(utils.FormatDate) edbInfoItem.DataInsertConfig.RealDate = edbDataInsertConfig.RealDate.Format(utils.FormatDate) edbInfoItem.DataInsertConfig.Value = edbDataInsertConfig.Value } } // 按钮校验 button := data.GetEdbOpButton(this.SysUser, edbInfoItem.SysUserId, edbInfoItem.EdbType, edbInfoItem.EdbInfoType) button.AddButton = false edbInfoItem.Button = button //是否展示英文标识 edbInfoItem.IsEnEdb = data.CheckIsEnEdb(edbInfoItem.EdbNameEn, edbInfoItem.Unit, edbInfoItem.UnitEn) //查询目录 resultList, _ := data_manage.GetClassifyAllByClassifyId(edbInfoItem.ClassifyId) resp.Paging = page resp.Item = edbInfoItem resp.ClassifyList = resultList br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 新增指标接口 // @Description 新增指标接口 // @Param request body data_manage.AddEdbInfoReq true "type json string" // @Success Ret=200 保存成功 // @router /edb_info/add [post] func (this *EdbInfoController) EdbInfoAdd() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } deleteCache := true cacheKey := "CACHE_EDB_INFO_ADD_" + strconv.Itoa(sysUser.AdminId) defer func() { if deleteCache { utils.Rc.Delete(cacheKey) } }() if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) { deleteCache = false br.Msg = "系统处理中,请稍后重试!" br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(this.Ctx.Input.RequestBody) return } var req data_manage.AddEdbInfoReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } source := req.Source if source <= 0 { br.Msg = "无效的数据来源" return } req.EdbName = strings.Trim(req.EdbName, " ") req.EdbCode = strings.Trim(req.EdbCode, " ") if req.EdbCode == "" { br.Msg = "指标ID不能为空" return } if req.EdbName == "" { br.Msg = "指标名称不能为空" return } if req.Frequency == "" { br.Msg = "频率不能为空" return } if req.Unit == "" { br.Msg = "单位不能为空" return } if req.ClassifyId <= 0 { br.Msg = "请选择分类" return } //if req.StartDate == "" || req.EndDate == "" { // br.Msg = "日期不能为空" // return //} // 兼容钢联与钢联化工数据 if source == utils.DATA_SOURCE_GL { // 如果是钢联的话,那么就先判断是不是存在钢联化工 tmpInfo, err := data_manage.GetBaseFromMysteelChemicalIndexByCode(req.EdbCode) if err != nil { if err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } } if tmpInfo != nil { source = utils.DATA_SOURCE_MYSTEEL_CHEMICAL req.Source = utils.DATA_SOURCE_MYSTEEL_CHEMICAL } } // 指标入库 edbInfo, err, errMsg, isSendEmail := data.EdbInfoAdd(source, req.ClassifyId, req.EdbCode, req.EdbName, req.Frequency, req.Unit, req.StartDate, req.EndDate, sysUser.AdminId, sysUser.RealName) if err != nil { br.Msg = "保存失败" if errMsg != `` { br.Msg = errMsg } br.ErrMsg = err.Error() br.IsSendEmail = isSendEmail return } //新增操作日志 { edbLog := new(data_manage.EdbInfoLog) edbLog.EdbInfoId = edbInfo.EdbInfoId edbLog.SourceName = edbInfo.SourceName edbLog.Source = edbInfo.Source edbLog.EdbCode = edbInfo.EdbCode edbLog.EdbName = edbInfo.EdbName edbLog.ClassifyId = edbInfo.ClassifyId edbLog.SysUserId = sysUser.AdminId edbLog.SysUserRealName = sysUser.RealName edbLog.CreateTime = time.Now() edbLog.Content = string(this.Ctx.Input.RequestBody) edbLog.Status = "新增指标" edbLog.Method = this.Ctx.Input.URI() go data_manage.AddEdbInfoLog(edbLog) } resp := new(data_manage.AddEdbInfoResp) resp.EdbInfoId = edbInfo.EdbInfoId resp.UniqueCode = edbInfo.UniqueCode br.Ret = 200 br.Success = true br.Msg = "保存成功" br.Data = resp br.IsAddLog = true } // @Title 编辑指标接口 // @Description 编辑指标接口 // @Success 200 {object} data_manage.EditEdbInfoReq // @router /edb_info/edit [post] func (this *EdbInfoController) EdbInfoEdit() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } var req data_manage.EditEdbInfoReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } req.EdbName = strings.Trim(req.EdbName, " ") if req.EdbInfoId <= 0 { br.Msg = "参数错误" br.ErrMsg = "指标id小于等于0" return } if req.EdbName == "" { br.Msg = "指标名称不能为空" return } if req.Frequency == "" { br.Msg = "频率不能为空" return } if req.Unit == "" { br.Msg = "单位不能为空" return } if req.ClassifyId <= 0 { br.Msg = "请选择分类" return } edbInfo, err := data_manage.GetEdbInfoById(req.EdbInfoId) if err != nil { br.Msg = "修改失败" br.ErrMsg = "获取指标信息失败,Err:" + err.Error() return } // 编辑权限校验 button := data.GetEdbOpButton(this.SysUser, edbInfo.SysUserId, edbInfo.EdbType, edbInfo.EdbInfoType) if !button.OpButton { br.Msg = "无权限操作" br.IsSendEmail = false return } //判断指标名称是否存在 var condition string var pars []interface{} condition += " AND edb_info_id<>? " pars = append(pars, req.EdbInfoId) //condition += " AND source=? " //pars = append(pars, edbInfo.Source) condition += " AND edb_name=? " pars = append(pars, req.EdbName) count, err := data_manage.GetEdbInfoCountByCondition(condition, pars) if err != nil { br.Msg = "判断指标名称是否存在失败" br.ErrMsg = "判断指标名称是否存在失败,Err:" + err.Error() return } if count > 0 { br.Msg = "指标名称已存在,请重新填写" br.ErrMsg = "指标名称已存在,请重新填写" br.IsSendEmail = false return } err = data_manage.ModifyEdbInfo(&req) if err != nil { br.Msg = "保存失败" br.ErrMsg = "修改失败,Err:" + err.Error() return } //处理同名指标 //{ // edbNameList, err := data_manage.GetEdbInfoByName(req.EdbName) // if err != nil { // br.Msg = "保存失败" // br.ErrMsg = "获取指标信息失败,Err:" + err.Error() // return // } // if len(edbNameList) >= 2 { // for _, v := range edbNameList { // edbName := v.EdbName + "(" + v.SourceName + ")" // err = data_manage.ModifyEdbInfoNameSource(edbName, v.EdbInfoId) // if err != nil { // br.Msg = "保存失败" // br.ErrMsg = "修改指标名称失败,Err:" + err.Error() // return // } // } // } //} //新增操作日志 { edbLog := new(data_manage.EdbInfoLog) edbLog.EdbInfoId = edbInfo.EdbInfoId edbLog.SourceName = edbInfo.SourceName edbLog.Source = edbInfo.Source edbLog.EdbCode = edbInfo.EdbCode edbLog.EdbName = edbInfo.EdbName edbLog.ClassifyId = edbInfo.ClassifyId edbLog.SysUserId = sysUser.AdminId edbLog.SysUserRealName = sysUser.RealName edbLog.CreateTime = time.Now() edbLog.Content = string(this.Ctx.Input.RequestBody) edbLog.Status = "编辑指标" edbLog.Method = this.Ctx.Input.URI() go data_manage.AddEdbInfoLog(edbLog) } //添加es data.AddOrEditEdbInfoToEs(req.EdbInfoId) br.Ret = 200 br.Success = true br.Msg = "保存成功" br.IsAddLog = true } // @Title 编辑指标英文信息接口 // @Description 编辑指标英文信息接口 // @Success 200 {object} data_manage.EditEdbEnInfoReq // @router /edb_info/en/edit [post] func (this *EdbInfoController) EdbEnInfoEdit() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } var req data_manage.EditEdbEnInfoReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } req.EdbNameEn = strings.Trim(req.EdbNameEn, " ") req.UnitEn = strings.Trim(req.UnitEn, " ") if req.EdbInfoId <= 0 { br.Msg = "参数错误" br.ErrMsg = "指标id小于等于0" return } edbInfo, err := data_manage.GetEdbInfoById(req.EdbInfoId) if err != nil { br.Msg = "获取指标信息失败" br.ErrMsg = "获取指标信息失败,Err:" + err.Error() return } if req.EdbNameEn != "" { //判断指标名称是否存在 var condition string var pars []interface{} condition += " AND edb_info_id<>? " pars = append(pars, req.EdbInfoId) /*condition += " AND source=? " pars = append(pars, edbInfo.Source)*/ condition += " AND edb_name_en=? " pars = append(pars, req.EdbNameEn) edbExist, err := data_manage.GetEdbInfoByCondition(condition, pars) if err != nil { if err.Error() != utils.ErrNoRow() { br.Msg = "判断英文指标名称是否存在失败" br.ErrMsg = "判断英文指标名称是否存在失败,Err:" + err.Error() return } } if err == nil && edbExist.EdbInfoId > 0 { br.Msg = edbExist.EdbName + ":" + req.EdbNameEn + "指标名称已存在" br.ErrMsg = "英文指标名称已存在,请重新填写" br.IsSendEmail = false return } } err = data_manage.ModifyEdbEnInfo(&req) if err != nil { br.Msg = "保存失败" br.ErrMsg = "修改失败,Err:" + err.Error() return } //新增操作日志 { edbLog := new(data_manage.EdbInfoLog) edbLog.EdbInfoId = edbInfo.EdbInfoId edbLog.SourceName = edbInfo.SourceName edbLog.Source = edbInfo.Source edbLog.EdbCode = edbInfo.EdbCode edbLog.EdbName = edbInfo.EdbName edbLog.ClassifyId = edbInfo.ClassifyId edbLog.SysUserId = sysUser.AdminId edbLog.SysUserRealName = sysUser.RealName edbLog.CreateTime = time.Now() edbLog.Content = string(this.Ctx.Input.RequestBody) edbLog.Status = "编辑指标英文信息" edbLog.Method = this.Ctx.Input.URI() go data_manage.AddEdbInfoLog(edbLog) } //添加es data.AddOrEditEdbInfoToEs(req.EdbInfoId) br.Ret = 200 br.Success = true br.Msg = "保存成功" br.IsAddLog = true } // @Title 获取最新指标接口 // @Description 获取最新指标接口 // @Success 200 {object} data_manage.EdbInfoList // @router /edb_info/newest [get] func (this *EdbInfoController) EdbInfoNewest() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() item, err := data_manage.GetEdbInfoByNewest() if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取最新指标失败" br.ErrMsg = "获取最新指标失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = item } // @Title 指标刷新接口 // @Description 指标刷新接口 // @Param EdbInfoId query int true "指标id" // @Success Ret=200 刷新成功 // @router /edb_info/refresh [get] func (this *EdbInfoController) EdbInfoRefresh() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } edbInfoId, _ := this.GetInt("EdbInfoId") if edbInfoId <= 0 { br.Msg = "参数错误" br.ErrMsg = "参数错误" return } _, err := data_manage.GetEdbInfoById(edbInfoId) if err != nil { if err.Error() == utils.ErrNoRow() { br.Msg = "数据已被删除,请刷新页面" br.ErrMsg = "数据已被删除,请刷新页面,edbInfoId:" + strconv.Itoa(edbInfoId) return } br.Msg = "刷新失败" br.ErrMsg = "获取指标信息失败,Err:" + err.Error() return } err = data.EdbInfoRefreshAllFromBaseV2(edbInfoId, false) if err != nil { br.Msg = "刷新失败" br.ErrMsg = "刷新指标失败,EdbInfoRefresh Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "刷新成功" br.IsAddLog = true } // @Title 移动指标接口 // @Description 移动指标接口 // @Success 200 {object} data_manage.MoveEdbInfoReq // @router /edb_info/move [post] func (this *EdbInfoController) EdbInfoMove() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } var req data_manage.MoveEdbInfoReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.EdbInfoId <= 0 { br.Msg = "参数错误" br.ErrMsg = "指标id小于等于0" return } if req.ClassifyId <= 0 { br.Msg = "请选择分类" return } //判断分类是否存在 count, _ := data_manage.GetEdbClassifyCountById(req.ClassifyId) if count <= 0 { br.Msg = "分类已被删除,不可移动,请刷新页面" return } edbInfo, err := data_manage.GetEdbInfoById(req.EdbInfoId) if err != nil { br.Msg = "移动失败" br.ErrMsg = "获取指标信息失败,Err:" + err.Error() return } // 移动权限校验 button := data.GetEdbOpButton(this.SysUser, edbInfo.SysUserId, edbInfo.EdbType, edbInfo.EdbInfoType) if !button.MoveButton { br.Msg = "无权限操作" br.IsSendEmail = false return } //如果改变了分类,那么移动该指标数据 if edbInfo.ClassifyId != req.ClassifyId { err = data_manage.MoveEdbInfo(req.EdbInfoId, req.ClassifyId) if err != nil { br.Msg = "移动失败" br.ErrMsg = "移动指标失败,Err:" + err.Error() return } } updateCol := make([]string, 0) //如果有传入 上一个兄弟节点分类id if req.PrevEdbInfoId > 0 { prevEdbInfo, err := data_manage.GetEdbInfoById(req.PrevEdbInfoId) if err != nil { br.Msg = "移动失败" br.ErrMsg = "获取上一个兄弟节点分类信息失败,Err:" + err.Error() return } //如果是移动在两个兄弟节点之间 if req.NextEdbInfoId > 0 { //下一个兄弟节点 nextEdbInfo, err := data_manage.GetEdbInfoById(req.NextEdbInfoId) if err != nil { br.Msg = "移动失败" br.ErrMsg = "获取下一个兄弟节点分类信息失败,Err:" + err.Error() return } //如果上一个兄弟与下一个兄弟的排序权重是一致的,那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2,自己变成上一个兄弟的排序权重+1 if prevEdbInfo.Sort == nextEdbInfo.Sort || prevEdbInfo.Sort == edbInfo.Sort { //变更兄弟节点的排序 updateSortStr := `sort + 2` _ = data_manage.UpdateEdbInfoSortByClassifyId(prevEdbInfo.ClassifyId, prevEdbInfo.Sort, prevEdbInfo.EdbInfoId, updateSortStr) } else { //如果下一个兄弟的排序权重正好是上个兄弟节点的下一层,那么需要再加一层了 if nextEdbInfo.Sort-prevEdbInfo.Sort == 1 { //变更兄弟节点的排序 updateSortStr := `sort + 1` _ = data_manage.UpdateEdbInfoSortByClassifyId(prevEdbInfo.ClassifyId, prevEdbInfo.Sort, prevEdbInfo.EdbInfoId, updateSortStr) } } } edbInfo.Sort = prevEdbInfo.Sort + 1 edbInfo.ModifyTime = time.Now() updateCol = append(updateCol, "Sort", "ModifyTime") } else { firstClassify, err := data_manage.GetFirstEdbInfoByClassifyId(req.ClassifyId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "移动失败" br.ErrMsg = "获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + err.Error() return } //如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序 if firstClassify != nil && firstClassify.Sort == 0 { updateSortStr := ` sort + 1 ` _ = data_manage.UpdateEdbInfoSortByClassifyId(firstClassify.ClassifyId, 0, firstClassify.EdbInfoId-1, updateSortStr) } edbInfo.Sort = 0 //那就是排在第一位 edbInfo.ModifyTime = time.Now() updateCol = append(updateCol, "Sort", "ModifyTime") } //更新 if len(updateCol) > 0 { err = edbInfo.Update(updateCol) if err != nil { br.Msg = "移动失败" br.ErrMsg = "修改失败,Err:" + err.Error() return } } if err != nil { br.Msg = "移动失败" br.ErrMsg = "修改失败,Err:" + err.Error() return } //新增操作日志 { edbLog := new(data_manage.EdbInfoLog) edbLog.EdbInfoId = edbInfo.EdbInfoId edbLog.SourceName = edbInfo.SourceName edbLog.Source = edbInfo.Source edbLog.EdbCode = edbInfo.EdbCode edbLog.EdbName = edbInfo.EdbName edbLog.ClassifyId = edbInfo.ClassifyId edbLog.SysUserId = sysUser.AdminId edbLog.SysUserRealName = sysUser.RealName edbLog.CreateTime = time.Now() edbLog.Content = string(this.Ctx.Input.RequestBody) edbLog.Status = "移动指标" edbLog.Method = this.Ctx.Input.URI() go data_manage.AddEdbInfoLog(edbLog) } br.Ret = 200 br.Success = true br.Msg = "移动成功" } // @Title 获取指标详情 // @Description 获取指标详情接口 // @Param EdbInfoId query int true "指标id" // @Success 200 {object} data_manage.EdbInfo // @router /edb_info/detail [get] func (this *EdbInfoController) EdbInfoDetail() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } edbInfoId, _ := this.GetInt("EdbInfoId") if edbInfoId <= 0 { br.Msg = "参数错误" br.ErrMsg = "参数错误" return } edbInfo, err := data_manage.GetEdbInfoById(edbInfoId) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取指标信息失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = edbInfo } // EdbInfoFilter // @Title 指标筛选接口 // @Description 指标筛选接口 // @Param KeyWord query string false "搜索关键词:指标ID/指标名称" // @Param FilterSource query int false "搜索来源:1:其他搜索,2:累计值转月值搜索,3:变频,4:基础指标" // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Success 200 {object} data_manage.EdbInfoList // @router /edb_info/filter [get] func (this *EdbInfoController) EdbInfoFilter() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() keyWord := this.GetString("KeyWord") filterSource, _ := this.GetInt("FilterSource") if filterSource <= 0 { filterSource = 1 } var pars []interface{} noPermissionEdbInfoIdList := make([]int, 0) //无权限指标 // 获取当前账号的不可见指标 { obj := data_manage.EdbInfoNoPermissionAdmin{} confList, err := obj.GetAllListByAdminId(this.SysUser.AdminId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error() return } for _, v := range confList { noPermissionEdbInfoIdList = append(noPermissionEdbInfoIdList, v.EdbInfoId) } } var keyWordArr []string keyWordArr = append(keyWordArr, keyWord) if keyWord != "" { newKeyWord := strings.Split(keyWord, " ") keyWordArr = append(keyWordArr, newKeyWord...) } //var err error edbInfoList := make([]*data_manage.EdbInfoList, 0) //if keyWord == "" { // edbInfoList, err = data_manage.GetEdbInfoFilter(condition, pars) // if err != nil && err.Error() != utils.ErrNoRow() { // br.Success = true // br.Msg = "获取指标信息失败" // br.ErrMsg = "获取指标信息失败,Err:" + err.Error() // return // } //} else { // //获取指标信息 // indexName := utils.DATA_INDEX_NAME // edbInfoList, err = data.EsSearchEdbInfo(indexName, keyWord,filterSource) // if err != nil && err.Error() != utils.ErrNoRow() { // br.Success = true // br.Msg = "获取指标信息失败" // br.ErrMsg = "获取指标信息失败,Err:" + err.Error() // return // } //} var baseCondition string // 无权限指标id lenNoPermissionEdbInfoIdList := len(noPermissionEdbInfoIdList) if lenNoPermissionEdbInfoIdList > 0 { baseCondition = ` AND edb_info_id not in (` + utils.GetOrmInReplace(lenNoPermissionEdbInfoIdList) + `) ` pars = append(pars, noPermissionEdbInfoIdList) } existMap := make(map[int]string) for _, v := range keyWordArr { v = strings.Replace(v, " ", "%", -1) var condition string if filterSource == 2 { condition += ` AND frequency='月度' ` } if filterSource == 3 { condition += ` AND frequency <> '日度' ` } if filterSource == 4 { condition += ` AND edb_type = 1 ` } conditionWhere := `AND ( edb_code LIKE '%` + v + `%' OR edb_name LIKE '%` + v + `%' )` condition += conditionWhere + baseCondition newEdbInfoList, err := data_manage.GetEdbInfoFilter(condition, pars) if err != nil && err.Error() != utils.ErrNoRow() { br.Success = true br.Msg = "获取指标信息失败" br.ErrMsg = "获取指标信息失败,Err:" + err.Error() return } for _, nv := range newEdbInfoList { if _, ok := existMap[nv.EdbInfoId]; !ok { edbInfoList = append(edbInfoList, nv) } existMap[nv.EdbInfoId] = nv.EdbCode } } if edbInfoList == nil { edbInfoList = make([]*data_manage.EdbInfoList, 0) } edbInfoListLen := len(edbInfoList) for i := 0; i < edbInfoListLen; i++ { edbInfoList[i].EdbNameAlias = edbInfoList[i].EdbName } for i := 0; i < edbInfoListLen; i++ { for j := 0; j < edbInfoListLen; j++ { if (edbInfoList[i].EdbNameAlias == edbInfoList[j].EdbNameAlias) && (edbInfoList[i].EdbInfoId != edbInfoList[j].EdbInfoId) && !(strings.Contains(edbInfoList[i].EdbName, edbInfoList[i].SourceName)) { edbInfoList[i].EdbName = edbInfoList[i].EdbName + "(" + edbInfoList[i].SourceName + ")" } } } //新增搜索词记录 { searchKeyword := new(data_manage.SearchKeyword) searchKeyword.KeyWord = keyWord searchKeyword.CreateTime = time.Now() go data_manage.AddSearchKeyword(searchKeyword) } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = edbInfoList } // EdbInfoFilterByEs // @Title 指标筛选接口 // @Description 指标筛选接口 // @Param KeyWord query string false "搜索关键词:指标ID/指标名称" // @Param FilterSource query int false "搜索来源:1:其他搜索,2:累计值转月值搜索,3:变频,4:基础指标,5:同比" // @Param Frequency query string false "频度" // @Param IsAddPredictEdb query bool false "是否查询添加预测指标" // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Success 200 {object} data_manage.EdbInfoList // @router /edb_info/filter_by_es [get] func (this *EdbInfoController) EdbInfoFilterByEs() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") var total int64 var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) keyWord := this.GetString("KeyWord") keyWord = strings.TrimSpace(keyWord) //移除字符串首尾空格 filterSource, _ := this.GetInt("FilterSource") if filterSource <= 0 { filterSource = 1 } //指标来源 source, _ := this.GetInt("Source") frequency := this.GetString("Frequency") //频度 isAddPredictEdb, _ := this.GetBool("IsAddPredictEdb") //是否查询添加预测指标 var edbInfoList []*data_manage.EdbInfoList var err error noPermissionEdbInfoIdList := make([]int, 0) //无权限指标 // 获取当前账号的不可见指标 { obj := data_manage.EdbInfoNoPermissionAdmin{} confList, err := obj.GetAllListByAdminId(this.SysUser.AdminId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error() return } for _, v := range confList { noPermissionEdbInfoIdList = append(noPermissionEdbInfoIdList, v.EdbInfoId) } } if keyWord != "" { var keyWordArr []string keyWordArr = append(keyWordArr, keyWord) newKeyWord := strings.Split(keyWord, " ") keyWordArr = append(keyWordArr, newKeyWord...) // 普通的搜索 if !isAddPredictEdb { total, edbInfoList, err = elastic.SearchEdbInfoData(utils.DATA_INDEX_NAME, keyWord, startSize, pageSize, filterSource, source, 0, frequency, noPermissionEdbInfoIdList) } else { // 允许添加预测指标的搜索 total, edbInfoList, err = elastic.SearchAddPredictEdbInfoData(utils.DATA_INDEX_NAME, keyWord, noPermissionEdbInfoIdList, startSize, pageSize) } } else { var condition string var pars []interface{} // 普通指标 condition += ` AND edb_info_type = ? ` pars = append(pars, 0) // 无权限指标id lenNoPermissionEdbInfoIdList := len(noPermissionEdbInfoIdList) if lenNoPermissionEdbInfoIdList > 0 { condition += ` AND edb_info_id not in (` + utils.GetOrmInReplace(lenNoPermissionEdbInfoIdList) + `) ` pars = append(pars, noPermissionEdbInfoIdList) } switch filterSource { case 2: condition += ` AND frequency='月度' ` case 3: condition += ` AND frequency <> '日度' ` case 4: condition += ` AND edb_type = 1 ` case 5: condition += ` AND source = 6 ` //来源(同比值) case 6: condition += ` AND frequency != ? ` pars = append(pars, "年度") } //频度 if frequency != "" { condition += ` AND frequency = ? ` pars = append(pars, frequency) } // 查询只允许添加预测指标的搜索 if isAddPredictEdb { condition += ` AND frequency in ("日度","周度","月度") ` } total, edbInfoList, err = data_manage.GetEdbInfoFilterList(condition, pars, startSize, pageSize) } if err != nil { edbInfoList = make([]*data_manage.EdbInfoList, 0) } page := paging.GetPaging(currentIndex, pageSize, int(total)) edbInfoListLen := len(edbInfoList) for i := 0; i < edbInfoListLen; i++ { edbInfoList[i].EdbNameAlias = edbInfoList[i].EdbName } for i := 0; i < edbInfoListLen; i++ { for j := 0; j < edbInfoListLen; j++ { if (edbInfoList[i].EdbNameAlias == edbInfoList[j].EdbNameAlias) && (edbInfoList[i].EdbInfoId != edbInfoList[j].EdbInfoId) && !(strings.Contains(edbInfoList[i].EdbName, edbInfoList[i].SourceName)) { edbInfoList[i].EdbName = edbInfoList[i].EdbName + "(" + edbInfoList[i].SourceName + ")" } } } //新增搜索词记录 { searchKeyword := new(data_manage.SearchKeyword) searchKeyword.KeyWord = keyWord searchKeyword.CreateTime = time.Now() go data_manage.AddSearchKeyword(searchKeyword) } resp := data_manage.EdbInfoFilterDataResp{ Paging: page, List: edbInfoList, } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } func (this *EdbInfoController) EdbInfoFilter2() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() keyWord := this.GetString("KeyWord") keyWord = strings.TrimSpace(keyWord) //移除字符串首尾空格 filterSource, _ := this.GetInt("FilterSource") if filterSource <= 0 { filterSource = 1 } var pars []interface{} //if keyWord != "" { // condition += ` AND ( edb_code LIKE '%` + keyWord + `%' OR edb_name LIKE '%` + keyWord + `%' )` //} var keyWordArr []string keyWordArr = append(keyWordArr, keyWord) if keyWord != "" { newKeyWord := strings.Split(keyWord, " ") keyWordArr = append(keyWordArr, newKeyWord...) } keywordLen := len(keyWordArr) ch := make(chan map[int][]*data_manage.EdbInfoList, keywordLen) searchWait := sync.WaitGroup{} searchWait.Add(keywordLen) for index, v := range keyWordArr { v = strings.Replace(v, " ", "%", -1) var condition string if filterSource == 2 { condition += ` AND frequency='月度' ` } if filterSource == 3 { condition += ` AND frequency <> '日度' ` } if filterSource == 4 { condition += ` AND edb_type = 1 ` } conditionWhere := `AND ( edb_code LIKE '%` + v + `%' OR edb_name LIKE '%` + v + `%' )` condition += conditionWhere go searchEdbInfoFilter(condition, pars, index, ch, &searchWait) } searchWait.Wait() newEdbInfoListMap := make(map[int][]*data_manage.EdbInfoList) i := 0 for tmpEdbInfoList := range ch { i++ for k, v := range tmpEdbInfoList { newEdbInfoListMap[k] = v } if i == keywordLen { break } } close(ch) edbInfoList := make([]*data_manage.EdbInfoList, 0) existMap := make(map[int]string) for i := 0; i < keywordLen; i++ { if newEdbInfoList, ok := newEdbInfoListMap[i]; ok { for _, nv := range newEdbInfoList { if _, ok := existMap[nv.EdbInfoId]; !ok { edbInfoList = append(edbInfoList, nv) } existMap[nv.EdbInfoId] = nv.EdbCode } } } if edbInfoList == nil { edbInfoList = make([]*data_manage.EdbInfoList, 0) } edbInfoListLen := len(edbInfoList) for i := 0; i < edbInfoListLen; i++ { edbInfoList[i].EdbNameAlias = edbInfoList[i].EdbName } for i := 0; i < edbInfoListLen; i++ { for j := 0; j < edbInfoListLen; j++ { if (edbInfoList[i].EdbNameAlias == edbInfoList[j].EdbNameAlias) && (edbInfoList[i].EdbInfoId != edbInfoList[j].EdbInfoId) && !(strings.Contains(edbInfoList[i].EdbName, edbInfoList[i].SourceName)) { edbInfoList[i].EdbName = edbInfoList[i].EdbName + "(" + edbInfoList[i].SourceName + ")" } } } //新增搜索词记录 { searchKeyword := new(data_manage.SearchKeyword) searchKeyword.KeyWord = keyWord searchKeyword.CreateTime = time.Now() go data_manage.AddSearchKeyword(searchKeyword) } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = edbInfoList } func searchEdbInfoFilter(condition string, pars []interface{}, i int, ch chan map[int][]*data_manage.EdbInfoList, searchWait *sync.WaitGroup) (newEdbInfoListMap map[int][]*data_manage.EdbInfoList, err error) { newEdbInfoListMap = make(map[int][]*data_manage.EdbInfoList) defer func() { if err != nil { go alarm_msg.SendAlarmMsg("查询近6个月的客户增量数据异常:"+err.Error(), 3) //go utils.SendEmail(utils.APPNAME+"查询近6个月的客户增量数据异常:"+time.Now().Format("2006-01-02 15:04:05"), err.Error(), utils.EmailSendToUsers) } ch <- newEdbInfoListMap searchWait.Done() }() newEdbInfoList, err := data_manage.GetEdbInfoFilter(condition, pars) newEdbInfoListMap[i] = newEdbInfoList return } // @Title 指标全部刷新接口 // @Description 指标全部刷新接口 // @Param EdbInfoId query int true "指标id" // @Success Ret=200 全部刷新成功 // @router /edb_info/refresh/all [get] func (this *EdbInfoController) EdbInfoAllRefresh() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } edbInfoId, _ := this.GetInt("EdbInfoId") if edbInfoId <= 0 { br.Msg = "参数错误" br.ErrMsg = "参数错误" return } edbInfo, err := data_manage.GetEdbInfoById(edbInfoId) if err != nil { if err.Error() == utils.ErrNoRow() { br.Msg = "数据已被删除,请刷新页面" br.ErrMsg = "数据已被删除,请刷新页面,edbInfoId:" + strconv.Itoa(edbInfoId) return } br.Msg = "刷新失败" br.ErrMsg = "获取指标信息失败,Err:" + err.Error() return } if edbInfo == nil { br.Msg = "数据已被删除,请刷新页面" br.ErrMsg = "数据已被删除,请刷新页面,edbInfoId:" + strconv.Itoa(edbInfoId) return } err = data.EdbInfoRefreshAllFromBaseV2(edbInfoId, true) if err != nil { br.Msg = "刷新失败" br.ErrMsg = "刷新指标失败,EdbInfoRefreshAllFromBase Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "刷新成功" } // @Title 获取指标数据 // @Description 获取指标数据 // @Param EdbInfoId query int true "指标ID" // @Param DateType query int true "日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间,6:自定义起始时间至今,7:18年至今,8:19年至今,9:20年至今,10:全部" // @Param StartDate query string true "自定义开始日期" // @Param EndDate query string true "自定义结束日期" // @Success 200 {object} data_manage.EdbInfoDataResp // @router /edb_info/data [get] func (this *ChartInfoController) EdbInfoData() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } edbInfoId, _ := this.GetInt("EdbInfoId") if edbInfoId <= 0 { br.Msg = "参数错误" return } dateType, _ := this.GetInt("DateType") if dateType <= 0 { dateType = 3 } edbInfoType, _ := this.GetInt("EdbInfoType") if edbInfoType < 0 { edbInfoType = 1 } startDate := this.GetString("StartDate") endDate := this.GetString("EndDate") startDate, endDate = utils.GetDateByDateType(dateType, startDate, endDate) edbInfo, err := data_manage.GetEdbInfoById(edbInfoId) if err != nil { br.Msg = "获取失败" br.Msg = "获取失败,Err:" + err.Error() return } dataList, err := data_manage.GetEdbDataList(edbInfo.Source, edbInfoId, startDate, endDate) if err != nil { br.Msg = "获取失败" br.Msg = "获取失败,Err:" + err.Error() return } resp := new(data_manage.EdbInfoDataResp) resp.EdbInfo = edbInfo resp.DataList = dataList br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // @Title 指标一键刷新接口 // @Description 指标一键刷新接口 // @Success Ret=200 更新成功 // @router /edb_info/replace/check [post] func (this *EdbInfoController) EdbInfoReplaceCheck() { br := new(models.BaseResponse).Init() setNxKey := "EDB_INFO_REPLACE" defer func() { this.Data["json"] = br this.ServeJSON() }() status := 0 if utils.Rc.IsExist(setNxKey) { status = 1 } else { status = 2 } br.Ret = 200 br.Success = true br.Msg = "检测成功" br.Data = status } // EdbInfoReplace // @Title 替换指标 // @Description 替换指标 // @Param request body data_manage.EdbInfoReplaceReq true "type json string" // @Success 200 {object} data_manage.EdbInfoDataResp // @router /edb_info/replace [post] func (this *ChartInfoController) EdbInfoReplace() { br := new(models.BaseResponse).Init() setNxKey := "EDB_INFO_REPLACE" deleteCache := true defer func() { if deleteCache { utils.Rc.Delete(setNxKey) } this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } if !utils.Rc.SetNX(setNxKey, 1, 30*time.Minute) { deleteCache = false br.Msg = "当前正在替换中,请耐心等待!" br.IsSendEmail = false return } var req data_manage.EdbInfoReplaceReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.OldEdbInfoId <= 0 || req.NewEdbInfoId <= 0 { br.Msg = "参数错误!" br.ErrMsg = "参数错误,指标id为0" return } oldEdbInfo, err := data_manage.GetEdbInfoById(req.OldEdbInfoId) if err != nil { br.Msg = "替换失败!" br.ErrMsg = "获取原指标失败,Err:" + err.Error() return } newEdbInfo, err := data_manage.GetEdbInfoById(req.NewEdbInfoId) if err != nil { br.Msg = "替换失败!" br.ErrMsg = "获取替换目标指标失败,Err:" + err.Error() return } //if oldEdbInfo.EdbType != 1 { // br.Msg = "原指标为计算指标,不可替换!" // br.ErrMsg = "原指标为计算指标,不可替换!" // return //} // //if newEdbInfo.EdbType != 1 { // br.Msg = "替换指标为计算指标,不可替换!" // br.ErrMsg = "替换指标为计算指标,不可替换!" // return //} if oldEdbInfo.Frequency != newEdbInfo.Frequency { br.Msg = "原指标频度为:" + oldEdbInfo.Frequency + " 替换指标频度为:" + newEdbInfo.Frequency + ",频度不同,不可进行替换操作!" br.ErrMsg = "原指标频度为:" + oldEdbInfo.Frequency + " 替换指标频度为:" + newEdbInfo.Frequency + ",频度不同,不可进行替换操作!" return } sysAdminId := sysUser.AdminId //replaceChartTotal, replaceCalculateTotal, err := data.EdbInfoReplace(oldEdbInfo, newEdbInfo, sysAdminId, sysUser.RealName) _, _, err = data_manage.EdbInfoReplaceV2(oldEdbInfo, newEdbInfo, sysAdminId, sysUser.RealName) //msgContent := `` isFail := false var errmsg string if err != nil { //msgContent = oldEdbInfo.EdbName + "指标替换" + newEdbInfo.EdbName + "指标,全部替换失败,涉及" + strconv.Itoa(replaceChartTotal) + "张图表,\n\n " + strconv.Itoa(replaceCalculateTotal) + "个计算指标" isFail = true errmsg = "replace err:" + err.Error() } else { //msgContent = oldEdbInfo.EdbName + "指标替换" + newEdbInfo.EdbName + "指标,全部替换成功,涉及" + strconv.Itoa(replaceChartTotal) + "张图表,\n\n" + strconv.Itoa(replaceCalculateTotal) + "个计算指标" isFail = false } // 添加站内信息 //{ // msgItem := new(company.CompanyApprovalMessage) // msgItem.CreateUserId = sysAdminId // msgItem.ReceiveUserId = sysAdminId // msgItem.MessageStatus = 0 // msgItem.Remark = "指标替换" // msgItem.OperationStatus = 1 // msgItem.Content = msgContent // msgItem.CreateTime = time.Now() // msgItem.ModifyTime = time.Now() // msgItem.MessageType = 3 //1:申请消息,2:审批结果,3:文字消息 // msgItem.SourceType = 4 //消息来源 // err = company.AddCompanyApprovalMessage(msgItem) //} if isFail { br.Msg = "替换失败" br.ErrMsg = "替换失败 err:" + errmsg } else { br.Msg = "替换成功" br.ErrMsg = "替换成功" br.Ret = 200 } br.IsAddLog = true return } // RelationChartList // @Title 获取ETA指标关联的图表列表接口 // @Description 获取ETA指标关联的图表列表接口 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param EdbInfoId query int true "指标id" // @Param IsShowMe query bool true "是否只看我的,true、false" // @Success 200 {object} data_manage.ChartListResp // @router /edb_info/relation/chart_list [get] func (this *EdbInfoController) RelationChartList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } edbInfoId, _ := this.GetInt("EdbInfoId") pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") resp := data_manage.ChartListResp{} var total int page := paging.GetPaging(currentIndex, pageSize, total) var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) var condition string var pars []interface{} if edbInfoId <= 0 { br.Msg = "请选择指标" br.ErrMsg = "请选择指标" br.IsSendEmail = false return } // 关联指标 condition += ` AND b.edb_info_id = ? ` pars = append(pars, edbInfoId) //只看我的 isShowMe, _ := this.GetBool("IsShowMe") if isShowMe { condition += ` AND a.sys_user_id = ? ` pars = append(pars, sysUser.AdminId) } // 获取当前账号的不可见图表 noPermissionChartIdList := make([]int, 0) { obj := data_manage.EdbInfoNoPermissionAdmin{} confList, err := obj.GetAllChartListByAdminId(this.SysUser.AdminId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error() return } for _, v := range confList { noPermissionChartIdList = append(noPermissionChartIdList, v.ChartInfoId) } } noPermissionChartIdNum := len(noPermissionChartIdList) if noPermissionChartIdNum > 0 { condition += ` AND a.chart_info_id not in (` + utils.GetOrmInReplace(noPermissionChartIdNum) + `) ` pars = append(pars, noPermissionChartIdList) } //获取关联图表列表 list, err := data_manage.GetRelationChartListByCondition(condition, pars, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.Success = true br.Msg = "获取图表信息失败" br.ErrMsg = "获取图表信息失败,Err:" + err.Error() return } if list == nil || len(list) <= 0 || (err != nil && err.Error() == utils.ErrNoRow()) { items := make([]*data_manage.ChartInfoView, 0) resp.Paging = page resp.List = items br.Ret = 200 br.Success = true br.Msg = "获取成功" return } // 获取关联图表总数 dataCount, err := data_manage.GetRelationChartListCountByCondition(condition, pars) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取指标信息失败" br.ErrMsg = "获取指标数据总数失败,Err:" + err.Error() return } // 获取MY ETA 图表,用来判断是否加入我的图库 myChartList, err := data_manage.GetMyChartListByAdminId(sysUser.AdminId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取图表信息失败" br.ErrMsg = "获取我的图表信息失败,Err:" + err.Error() return } myChartMap := make(map[int]*data_manage.MyChartView) for _, v := range myChartList { myChartMap[v.ChartInfoId] = v } listLen := len(list) for i := 0; i < listLen; i++ { if existItem, ok := myChartMap[list[i].ChartInfoId]; ok { list[i].IsAdd = true list[i].MyChartId = existItem.MyChartId list[i].MyChartClassifyId = existItem.MyChartClassifyId } } page = paging.GetPaging(currentIndex, pageSize, dataCount) resp.Paging = page resp.List = list br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // RelationEdbList // @Title 获取ETA指标关联的指标列表接口 // @Description 获取ETA指标关联的指标列表接口 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param EdbInfoId query int true "指标id" // @Param IsShowMe query bool true "是否只看我的,true、false" // @Success 200 {object} data_manage.ChartListResp // @router /edb_info/relation/edbinfo_list [get] func (this *EdbInfoController) RelationEdbList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } edbInfoId, _ := this.GetInt("EdbInfoId") pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") resp := data_manage.RelationEdbInfoListResp{} var total int page := paging.GetPaging(currentIndex, pageSize, total) var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) var condition string var pars []interface{} if edbInfoId <= 0 { br.Msg = "请选择指标" br.ErrMsg = "请选择指标" br.IsSendEmail = false return } // 关联指标 condition += ` AND b.from_edb_info_id = ? ` pars = append(pars, edbInfoId) //只看我的 isShowMe, _ := this.GetBool("IsShowMe") if isShowMe { condition += ` AND a.sys_user_id = ? ` pars = append(pars, sysUser.AdminId) } // 获取当前账号的不可见图表 noPermissionEdbIdList := make([]int, 0) { obj := data_manage.EdbInfoNoPermissionAdmin{} confList, err := obj.GetAllListByAdminId(this.SysUser.AdminId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error() return } for _, v := range confList { noPermissionEdbIdList = append(noPermissionEdbIdList, v.EdbInfoId) } } noPermissionEdbIdNum := len(noPermissionEdbIdList) if noPermissionEdbIdNum > 0 { condition += ` AND a.edb_info_id not in (` + utils.GetOrmInReplace(noPermissionEdbIdNum) + `) ` pars = append(pars, noPermissionEdbIdList) } //获取关联图表列表 list, err := data_manage.GetRelationEdbInfoListByCondition(condition, pars, startSize, pageSize) if err != nil && err.Error() != utils.ErrNoRow() { br.Success = true br.Msg = "获取图表信息失败" br.ErrMsg = "获取图表信息失败,Err:" + err.Error() return } if list == nil || len(list) <= 0 || (err != nil && err.Error() == utils.ErrNoRow()) { items := make([]*data_manage.ChartEdbInfoMapping, 0) resp.Paging = page resp.List = items br.Ret = 200 br.Success = true br.Msg = "获取成功" return } // 获取关联图表总数 dataCount, err := data_manage.GetRelationEdbInfoListCountByCondition(condition, pars) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取指标信息失败" br.ErrMsg = "获取指标数据总数失败,Err:" + err.Error() return } if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error() return } edbList := make([]*data_manage.ChartEdbInfoMapping, 0) for _, v := range list { item := new(data_manage.ChartEdbInfoMapping) item.EdbInfoId = v.EdbInfoId item.SourceName = v.SourceName item.Source = v.Source item.EdbCode = v.EdbCode item.EdbName = v.EdbName item.EdbNameEn = v.EdbNameEn item.Frequency = v.Frequency item.FrequencyEn = data.GetFrequencyEn(v.Frequency) if v.Unit != `无` { item.Unit = v.Unit } item.UnitEn = v.UnitEn item.StartDate = v.StartDate item.EndDate = v.EndDate item.ModifyTime = v.ModifyTime item.IsAxis = 1 item.LeadValue = 0 item.LeadUnit = "" item.ChartEdbMappingId = 0 item.ChartInfoId = 0 item.IsOrder = false item.EdbInfoType = v.EdbInfoType item.EdbInfoCategoryType = v.EdbInfoType item.ChartStyle = "" item.ChartColor = "" item.ChartWidth = 0 item.MaxData = v.MaxValue item.MinData = v.MinValue item.LatestValue = v.LatestValue item.LatestDate = v.LatestDate item.UniqueCode = v.UniqueCode item.ClassifyId = v.ClassifyId dataList := make([]*data_manage.EdbDataList, 0) if v.EdbInfoType == 0 { dataList, err = data_manage.GetEdbDataList(v.Source, v.EdbInfoId, "", "") } else { _, dataList, _, _, err, _ = data.GetPredictDataListByPredictEdbInfoId(v.EdbInfoId, "", "", false) } if err != nil { br.Msg = "获取失败" br.Msg = "获取失败,Err:" + err.Error() return } item.DataList = dataList edbList = append(edbList, item) } page = paging.GetPaging(currentIndex, pageSize, dataCount) resp.Paging = page resp.List = edbList br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // MoveEdbChartList // @Title 获取指标/图表创建人列表数据接口 // @Description 获取指标/图表创建人列表数据接口 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param Source query int false "来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库" // @Param Keyword query string false "关键字,code或者名称" // @Param Classify query string false "分类id" // @Param UserId query int false "创建人id" // @Success 200 {object} data_manage.ChartListResp // @router /edb_chart/list [get] func (this *EdbInfoController) MoveEdbChartList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } source, _ := this.GetInt("Source") if source <= 0 || source > 5 { br.Msg = "错误的来源" br.IsSendEmail = false return } userId, _ := this.GetInt("UserId") keyword := this.GetString("Keyword") classify := this.GetString("Classify") pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) resp := data_manage.MoveEdbChartListResp{} var total int page := paging.GetPaging(currentIndex, pageSize, total) defaultList := make([]data_manage.MoveEdbChartList, 0) resp.List = defaultList resp.Paging = page // 没有传入条件,那就默认自动返回 if userId <= 0 && keyword == `` && classify == `` { br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp return } list, total, err := data.GetMoveEdbChartList(source, userId, keyword, classify, startSize, pageSize) if err != nil { //br.Success = true br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } if list == nil { list = defaultList } page = paging.GetPaging(currentIndex, pageSize, total) resp.Paging = page resp.List = list br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // MoveEdbChartUser // @Title 指标/图表创建人变更接口 // @Description 指标/图表创建人变更接口 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param EdbInfoId query int true "指标id" // @Param IsShowMe query bool true "是否只看我的,true、false" // @Success 200 {object} data_manage.ChartListResp // @router /edb_chart/change_user [post] func (this *EdbInfoController) MoveEdbChartUser() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } var req data_manage.MoveEdbChartReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.Source <= 0 || req.Source > 5 { br.Msg = "错误的来源" br.IsSendEmail = false return } if len(req.DataIdList) <= 0 { br.Msg = "请勾选数据项" br.IsSendEmail = false return } if req.NewUserId <= 0 { br.Msg = "请选择新的创建人" br.IsSendEmail = false return } err, errMsg := data.MoveEdbChart(req.Source, req.NewUserId, req.DataIdList) if err != nil { //br.Success = true br.Msg = "获取失败" if errMsg != `` { br.Msg = errMsg } br.ErrMsg = "获取失败,Err:" + err.Error() return } br.Ret = 200 br.IsAddLog = true br.Success = true br.Msg = "修改成功" } // MoveEdbChartList // @Title 获取指标/图表分类列表数据接口 // @Description 获取指标/图表分类列表数据接口 // @Param Source query int false "来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库" // @Success 200 {object} data_manage.ChartListResp // @router /edb_chart/classify [get] func (this *EdbInfoController) EdbChartClassifyList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } source, _ := this.GetInt("Source") if source <= 0 || source > 5 { br.Msg = "错误的来源" br.IsSendEmail = false return } list, err := data.GetEdbChartClassifyList(source) if err != nil { //br.Success = true br.Msg = "获取失败" br.ErrMsg = "获取失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = list } // EdbInfoDataTb // @Title 获取指标数据同比值 // @Description 获取指标数据 // @Param EdbInfoId query int true "指标ID" // @Param DateType query int true "日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间,6:自定义起始时间至今,7:18年至今,8:19年至今,9:20年至今,10:全部" // @Param StartDate query string true "自定义开始日期" // @Param EndDate query string true "自定义结束日期" // @Success 200 {object} data_manage.EdbInfoDataResp // @router /edb_info/data/tb [get] func (this *ChartInfoController) EdbInfoDataTb() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } edbInfoId, _ := this.GetInt("EdbInfoId") if edbInfoId <= 0 { br.Msg = "参数错误" return } dateType, _ := this.GetInt("DateType") if dateType <= 0 { dateType = 3 } edbInfoType, _ := this.GetInt("EdbInfoType") if edbInfoType < 0 { edbInfoType = 1 } startDate := this.GetString("StartDate") endDate := this.GetString("EndDate") startDate, endDate = utils.GetDateByDateType(dateType, startDate, endDate) edbInfo, err := data_manage.GetEdbInfoById(edbInfoId) if err != nil { br.Msg = "获取失败" br.Msg = "获取失败,Err:" + err.Error() return } var startDateTime time.Time if startDate != `` { startDateTime, err = time.ParseInLocation(utils.FormatDate, startDate, time.Local) if err != nil { br.Msg = "开始日期异常" br.Msg = "开始日期异常,Err:" + err.Error() return } //同比值的计算方式,是需要与去年同期对比,所以如果用户需要某个时间段的数据的话,获取基础数据时,需要往前面推(1年+兼容的日期频度(目前是35天)) startDate = startDateTime.AddDate(-1, 0, -35).Format(utils.FormatDate) } tmpDataList, err := data_manage.GetEdbDataList(edbInfo.Source, edbInfoId, startDate, endDate) if err != nil { br.Msg = "获取失败" br.Msg = "获取失败,Err:" + err.Error() return } // 计算同比值 dataList, minValue, maxValue, err := data.GetEdbDataTbz(edbInfo, tmpDataList, startDateTime) if err != nil { br.Msg = "获取失败" br.Msg = "计算同比值失败,Err:" + err.Error() return } edbInfo.MaxValue = maxValue edbInfo.MinValue = minValue resp := new(data_manage.EdbInfoDataResp) resp.EdbInfo = edbInfo resp.DataList = dataList br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // EdbInfoDataSeasonal // @Title 获取指标数据(季节性) // @Description 获取指标数据 // @Param EdbInfoId query int true "指标ID" // @Param DateType query int true "日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间,6:自定义起始时间至今,7:18年至今,8:19年至今,9:20年至今,10:全部" // @Param StartDate query string true "自定义开始日期" // @Param EndDate query string true "自定义结束日期" // @Param Calendar query string true "公历/农历" // @Success 200 {object} data_manage.EdbInfoDataResp // @router /edb_info/data/seasonal [get] func (this *ChartInfoController) EdbInfoDataSeasonal() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } startDate := this.GetString("StartDate") endDate := this.GetString("EndDate") edbInfoIdStr := this.GetString("EdbInfoId") edbInfoId, err := strconv.Atoi(edbInfoIdStr) if err != nil { br.Msg = "指标id异常" br.Msg = "指标id转换异常,Err:" + err.Error() return } fmt.Println("startDate:", startDate) fmt.Println("endDate:", endDate) calendar := this.GetString("Calendar") if calendar == "" { calendar = "公历" } if startDate != `` { startDate = startDate + "-01" } else { fivePre := time.Now().AddDate(-4, 0, 0).Year() startDate = strconv.Itoa(fivePre) + "-01-01" } if endDate != `` { seasonEndDateTime, tmpErr := time.ParseInLocation(utils.FormatDate, endDate+"-01", time.Local) if tmpErr != nil { br.Msg = "获取失败" br.ErrMsg = "获取图表,指标信息失败,Err:" + tmpErr.Error() return } endDate = seasonEndDateTime.AddDate(0, 1, -1).Format(utils.FormatDate) } edbInfo, err := data_manage.GetEdbInfoById(edbInfoId) if err != nil { br.Msg = "获取失败" br.Msg = "获取失败,Err:" + err.Error() return } dataList, err := data.GetChartEdbSeasonalData(calendar, startDate, endDate, edbInfo) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error() return } resp := new(data_manage.EdbInfoDataSeasonalResp) resp.EdbInfo = edbInfo resp.DataList = dataList br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // SetEdbDataInsertConfig 设置插入值 // @Title 设置插入值接口 // @Description 设置插入值接口 // @Success 200 {object} data_manage.EditEdbEnInfoReq // @router /edb_info/insert_config/set [post] func (this *EdbInfoController) SetEdbDataInsertConfig() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } var req data_manage.SetEdbDataInsertConfigReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } dateStr := req.Date if dateStr == `` { br.Msg = "请选择日期" br.IsSendEmail = false return } date, err := time.ParseInLocation(utils.FormatDate, dateStr, time.Local) if err != nil { br.Msg = "日期异常" br.ErrMsg = "日期异常,err:" + err.Error() br.IsSendEmail = false return } edbInfo, err := data_manage.GetEdbInfoById(req.EdbInfoId) if err != nil { br.Msg = "获取指标信息失败" br.ErrMsg = "获取指标信息失败,Err:" + err.Error() return } err, errMsg, isSendEmail := data_manage.CreateEdbDataInsertConfigAndData(edbInfo, date, req.Value) if err != nil { br.Msg = "设置失败" if errMsg != `` { br.Msg = errMsg } br.ErrMsg = "修改失败,Err:" + err.Error() br.IsSendEmail = isSendEmail return } //新增操作日志 { edbLog := new(data_manage.EdbInfoLog) edbLog.EdbInfoId = edbInfo.EdbInfoId edbLog.SourceName = edbInfo.SourceName edbLog.Source = edbInfo.Source edbLog.EdbCode = edbInfo.EdbCode edbLog.EdbName = edbInfo.EdbName edbLog.ClassifyId = edbInfo.ClassifyId edbLog.SysUserId = sysUser.AdminId edbLog.SysUserRealName = sysUser.RealName edbLog.CreateTime = time.Now() edbLog.Content = string(this.Ctx.Input.RequestBody) edbLog.Status = "设置插入值" edbLog.Method = this.Ctx.Input.URI() go data_manage.AddEdbInfoLog(edbLog) } br.Ret = 200 br.Success = true br.Msg = "保存成功" br.IsAddLog = true } // TraceEdbInfo // @Title 指标溯源接口 // @Description 指标溯源接口 // @Param EdbInfoId query int true "指标id" // @Success 200 {object} data_manage.ChartListResp // @router /edb_info/trace [get] func (this *EdbInfoController) TraceEdbInfo() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() sysUser := this.SysUser if sysUser == nil { br.Msg = "请登录" br.ErrMsg = "请登录,SysUser Is Empty" br.Ret = 408 return } edbInfoId, _ := this.GetInt("EdbInfoId") if edbInfoId <= 0 { br.Msg = "参数错误" br.ErrMsg = "参数错误" return } resp, err := data.TraceEdbInfoByEdbInfoId(edbInfoId) if err != nil { br.Msg = "获取失败" br.Msg = "获取失败,Err:" + err.Error() return } br.Ret = 200 br.Data = resp br.Success = true br.Msg = "刷新成功" } // AllEdbInfoByEs // @Title 所有指标筛选接口 // @Description 所有指标筛选接口 // @Param KeyWord query string false "搜索关键词:指标ID/指标名称" // @Param FilterSource query int false "搜索来源:1:其他搜索,2:累计值转月值搜索,3:变频,4:基础指标,5:同比" // @Param Frequency query string false "频度" // @Param IsAddPredictEdb query bool false "是否查询添加预测指标" // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Success 200 {object} data_manage.EdbInfoList // @router /edb_info/filter_by_es/all [get] func (this *EdbInfoController) AllEdbInfoByEs() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") var total int64 var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) keyWord := this.GetString("KeyWord") keyWord = strings.TrimSpace(keyWord) //移除字符串首尾空格 filterSource, _ := this.GetInt("FilterSource") if filterSource <= 0 { filterSource = 1 } //指标来源 source, _ := this.GetInt("Source") var edbInfoList []*data_manage.EdbInfoList var err error noPermissionEdbInfoIdList := make([]int, 0) //无权限指标 // 获取当前账号的不可见指标 { obj := data_manage.EdbInfoNoPermissionAdmin{} confList, err := obj.GetAllListByAdminId(this.SysUser.AdminId) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败" br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error() return } for _, v := range confList { noPermissionEdbInfoIdList = append(noPermissionEdbInfoIdList, v.EdbInfoId) } } if keyWord != "" { var keyWordArr []string keyWordArr = append(keyWordArr, keyWord) newKeyWord := strings.Split(keyWord, " ") keyWordArr = append(keyWordArr, newKeyWord...) // 普通的搜索 total, edbInfoList, err = elastic.SearchEdbInfoData(utils.DATA_INDEX_NAME, keyWord, startSize, pageSize, filterSource, source, -1, ``, noPermissionEdbInfoIdList) } if err != nil { edbInfoList = make([]*data_manage.EdbInfoList, 0) } page := paging.GetPaging(currentIndex, pageSize, int(total)) edbInfoListLen := len(edbInfoList) for i := 0; i < edbInfoListLen; i++ { edbInfoList[i].EdbNameAlias = edbInfoList[i].EdbName } for i := 0; i < edbInfoListLen; i++ { for j := 0; j < edbInfoListLen; j++ { if (edbInfoList[i].EdbNameAlias == edbInfoList[j].EdbNameAlias) && (edbInfoList[i].EdbInfoId != edbInfoList[j].EdbInfoId) && !(strings.Contains(edbInfoList[i].EdbName, edbInfoList[i].SourceName)) { edbInfoList[i].EdbName = edbInfoList[i].EdbName + "(" + edbInfoList[i].SourceName + ")" } } } //新增搜索词记录 { searchKeyword := new(data_manage.SearchKeyword) searchKeyword.KeyWord = keyWord searchKeyword.CreateTime = time.Now() go data_manage.AddSearchKeyword(searchKeyword) } resp := data_manage.EdbInfoFilterDataResp{ Paging: page, List: edbInfoList, } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } // GetEdbDateData // @Title 所有指标筛选接口 // @Description 所有指标筛选接口 // @Param EdbInfoId query int false "指标id" // @Param Date query string false "日期" // @Param query string false "频度" // @Success 200 {object} data_manage.EdbInfoList // @router /edb_info/date_data [get] func (this *EdbInfoController) GetEdbDateData() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() edbInfoId, _ := this.GetInt("EdbInfoId") date := this.GetString("Date") if edbInfoId <= 0 { br.Msg = "请选择指标" br.IsSendEmail = false return } if date == `` { br.Msg = "请选择日期" br.IsSendEmail = false return } edbInfo, err := data_manage.GetEdbInfoById(edbInfoId) if err != nil { br.Msg = "获取失败" br.ErrMsg = fmt.Sprint("获取指标信息失败,Err:", err.Error()) return } val, err := data.GetDateData(edbInfo, date) if err != nil { br.Msg = "获取失败" br.ErrMsg = fmt.Sprint("获取指数据失败,Err:", err.Error()) return } br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = val }