|
@@ -5368,8 +5368,8 @@ func (this *EdbInfoController) SmmExistCheck() {
|
|
|
this.Data["json"] = br
|
|
|
this.ServeJSON()
|
|
|
}()
|
|
|
- selectAll, err := this.GetBool("SelectAll",false)
|
|
|
- if err!= nil {
|
|
|
+ selectAll, err := this.GetBool("SelectAll", false)
|
|
|
+ if err != nil {
|
|
|
br.Msg = "参数解析失败"
|
|
|
br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
return
|
|
@@ -5382,18 +5382,25 @@ func (this *EdbInfoController) SmmExistCheck() {
|
|
|
edbCode = strings.Trim(edbCode, " ")
|
|
|
edbCode = strings.Replace(edbCode, "\t", "", -1)
|
|
|
|
|
|
+ selectCode := this.GetString("SelectCode")
|
|
|
+ selectCode = strings.Trim(selectCode, "\t")
|
|
|
+ selectCode = strings.Trim(selectCode, " ")
|
|
|
+ selectCode = strings.Replace(selectCode, "\t", "", -1)
|
|
|
+
|
|
|
var edbCodeArr []string
|
|
|
+ var codeArr []string
|
|
|
|
|
|
if selectAll {
|
|
|
+ // 如果勾了列表全选,那么EdbCode传的就是排除的code
|
|
|
var condition string
|
|
|
var pars []interface{}
|
|
|
|
|
|
if types != "" {
|
|
|
- typeArr := strings.Split(types,",")
|
|
|
+ typeArr := strings.Split(types, ",")
|
|
|
for i, v := range typeArr {
|
|
|
typeStr := "type_"
|
|
|
typeStr += fmt.Sprintf("%d", i+1)
|
|
|
- condition += " AND "+typeStr+" =? "
|
|
|
+ condition += " AND " + typeStr + " =? "
|
|
|
pars = append(pars, v)
|
|
|
}
|
|
|
}
|
|
@@ -5408,15 +5415,12 @@ func (this *EdbInfoController) SmmExistCheck() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
if frequency != "" {
|
|
|
condition += " AND frequency = ? "
|
|
|
pars = append(pars, frequency)
|
|
|
}
|
|
|
|
|
|
- sortStr := " modify_time desc "
|
|
|
-
|
|
|
- indexList, err := data_manage.GetSmmIndexDataList(condition, sortStr, pars, 1, 1000)
|
|
|
+ indexList, err := data_manage.GetSmmIndexDataListNoPage(condition, pars)
|
|
|
if err != nil {
|
|
|
br.Msg = "获取指标列表失败"
|
|
|
br.ErrMsg = "获取指标列表失败,Err:" + err.Error()
|
|
@@ -5424,10 +5428,20 @@ func (this *EdbInfoController) SmmExistCheck() {
|
|
|
}
|
|
|
|
|
|
for _, v := range indexList {
|
|
|
- edbCodeArr = append(edbCodeArr, v.IndexCode)
|
|
|
+ codeArr = append(codeArr, v.IndexCode)
|
|
|
}
|
|
|
|
|
|
+ noUseCodeArr := strings.Split(edbCode, ",")
|
|
|
+
|
|
|
+ for _, code := range codeArr {
|
|
|
+ // 检查code是否在noUseCodeArr数组中
|
|
|
+ if !utils.ArrContainsStr(noUseCodeArr, code) {
|
|
|
+ // 如果不在,将其添加到结果数组中
|
|
|
+ edbCodeArr = append(edbCodeArr, code)
|
|
|
+ }
|
|
|
+ }
|
|
|
} else {
|
|
|
+ //未勾选全选EdbCode就是需要的code
|
|
|
edbCodeArr = strings.Split(edbCode, ",")
|
|
|
}
|
|
|
|
|
@@ -5474,3 +5488,163 @@ func (this *EdbInfoController) SmmExistCheck() {
|
|
|
br.Msg = "获取成功"
|
|
|
br.Data = resp
|
|
|
}
|
|
|
+
|
|
|
+// EdbInfoSearch
|
|
|
+// @Title 新增指标-查询指标信息接口-smm
|
|
|
+// @Description 新增指标-查询指标信息接口-smm
|
|
|
+// @Param Source query int true "来源:1:同花顺,2:wind,3:彭博"
|
|
|
+// @Param SubSource query int true "子数据来源:0:经济数据库,1:日期序列"
|
|
|
+// @Param EdbCode query string false "指标编码/指标代码"
|
|
|
+// @Param StockCode query string false "证券代码"
|
|
|
+// @Success 200 {object} data_manage.EdbInfoSearchResp
|
|
|
+// @router /edb_info/smm/search [get]
|
|
|
+func (this *EdbInfoController) EdbInfoSmmSearch() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ selectAll, err := this.GetBool("SelectAll", false)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "参数解析失败"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ types := this.GetString("Types")
|
|
|
+ frequency := this.GetString("Frequency")
|
|
|
+ dataState := this.GetString("DataState")
|
|
|
+ edbCode := this.GetString("EdbCode")
|
|
|
+ edbCode = strings.Trim(edbCode, "\t")
|
|
|
+ edbCode = strings.Trim(edbCode, " ")
|
|
|
+ edbCode = strings.Replace(edbCode, "\t", "", -1)
|
|
|
+
|
|
|
+ selectCode := this.GetString("SelectCode")
|
|
|
+ selectCode = strings.Trim(selectCode, "\t")
|
|
|
+ selectCode = strings.Trim(selectCode, " ")
|
|
|
+ selectCode = strings.Replace(selectCode, "\t", "", -1)
|
|
|
+
|
|
|
+ var edbCodeArr []string
|
|
|
+ var codeArr []string
|
|
|
+
|
|
|
+ if selectAll {
|
|
|
+ // 如果勾了列表全选,那么EdbCode传的就是排除的code
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+
|
|
|
+ if types != "" {
|
|
|
+ typeArr := strings.Split(types, ",")
|
|
|
+ for i, v := range typeArr {
|
|
|
+ typeStr := "type_"
|
|
|
+ typeStr += fmt.Sprintf("%d", i+1)
|
|
|
+ condition += " AND " + typeStr + " =? "
|
|
|
+ pars = append(pars, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if dataState != "" {
|
|
|
+ if dataState == "normal" {
|
|
|
+ condition += " AND (data_state = 'normal' OR data_state = '') "
|
|
|
+ pars = append(pars)
|
|
|
+ } else {
|
|
|
+ condition += " AND data_state = ? "
|
|
|
+ pars = append(pars, dataState)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if frequency != "" {
|
|
|
+ condition += " AND frequency = ? "
|
|
|
+ pars = append(pars, frequency)
|
|
|
+ }
|
|
|
+
|
|
|
+ indexList, err := data_manage.GetSmmIndexDataListNoPage(condition, pars)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取指标列表失败"
|
|
|
+ br.ErrMsg = "获取指标列表失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, v := range indexList {
|
|
|
+ codeArr = append(codeArr, v.IndexCode)
|
|
|
+ }
|
|
|
+
|
|
|
+ noUseCodeArr := strings.Split(edbCode, ",")
|
|
|
+
|
|
|
+ for _, code := range codeArr {
|
|
|
+ // 检查code是否在noUseCodeArr数组中
|
|
|
+ if !utils.ArrContainsStr(noUseCodeArr, code) {
|
|
|
+ // 如果不在,将其添加到结果数组中
|
|
|
+ edbCodeArr = append(edbCodeArr, code)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //未勾选全选EdbCode就是需要的code
|
|
|
+ edbCodeArr = strings.Split(edbCode, ",")
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(edbCodeArr) > 30 {
|
|
|
+ br.Msg = "最多只能选择30个指标"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(edbCodeArr) <= 0 {
|
|
|
+ br.Msg = "无符合指标或指标代码错误"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ resp := new(data_manage.EdbInfoSearchResp)
|
|
|
+
|
|
|
+ searchItem := new(data_manage.EdbInfoSearch)
|
|
|
+ //todo
|
|
|
+ smmInfo, err := data_manage.GetBaseFromSmmIndexByIndexCodes(edbCodeArr)
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ {
|
|
|
+ dataList, err := data_manage.GetEdbDataAllByEdbCodes(edbCodeArr, 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.GetSmmEdbInfoMaxAndMinInfo(edbCodeArr)
|
|
|
+ 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(utils.DATA_SOURCE_YS, edbCode)
|
|
|
+ if edbInfoItem != nil {
|
|
|
+ searchItem.EdbName = edbInfoItem.EdbName
|
|
|
+ }
|
|
|
+ }
|
|
|
+ resp.Status = 2
|
|
|
+ resp.SearchItem = searchItem
|
|
|
+
|
|
|
+
|
|
|
+ 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
|
|
|
+}
|