|
@@ -4,6 +4,7 @@ import (
|
|
|
"encoding/json"
|
|
|
"eta/eta_api/models"
|
|
|
"eta/eta_api/models/data_manage"
|
|
|
+ "eta/eta_api/models/data_manage/request"
|
|
|
"eta/eta_api/models/system"
|
|
|
"eta/eta_api/services/data"
|
|
|
etaTrialService "eta/eta_api/services/eta_trial"
|
|
@@ -78,8 +79,8 @@ func (this *EdbInfoController) YongyiClassify() {
|
|
|
}
|
|
|
|
|
|
// YongyiIndexData
|
|
|
-// @Title 获取钢联数据
|
|
|
-// @Description 获取钢联数据接口
|
|
|
+// @Title 获取涌益咨询数据
|
|
|
+// @Description 获取涌益咨询数据接口
|
|
|
// @Param PageSize query int true "每页数据条数"
|
|
|
// @Param CurrentIndex query int true "当前页页码,从1开始"
|
|
|
// @Param ClassifyId query string true "分类id"
|
|
@@ -133,7 +134,7 @@ func (this *EdbInfoController) YongyiIndexData() {
|
|
|
br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
- if classifyInfo.Level == 2 {
|
|
|
+ if classifyInfo.Level == 2 || classifyInfo.ParentId > 0 {
|
|
|
condition += ` AND classify_id=? `
|
|
|
pars = append(pars, classifyId)
|
|
|
} else if classifyInfo.Level == 1 {
|
|
@@ -158,6 +159,21 @@ func (this *EdbInfoController) YongyiIndexData() {
|
|
|
br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
+ edbCodeList := make([]string, 0)
|
|
|
+ for _, v := range yongyiList {
|
|
|
+ edbCodeList = append(edbCodeList, v.IndexCode)
|
|
|
+ }
|
|
|
+ edbInfoList, err := data_manage.GetEdbInfoByEdbCodeList(utils.DATA_SOURCE_YONYI, edbCodeList)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取数据源失败"
|
|
|
+ br.ErrMsg = "获取指标数据失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ edbInfoMap := make(map[string]*data_manage.EdbInfo)
|
|
|
+ for _, v := range edbInfoList {
|
|
|
+ edbInfoMap[v.EdbCode] = v
|
|
|
+ }
|
|
|
+
|
|
|
resultList := make([]*data_manage.BaseFromYongyiIndexList, 0)
|
|
|
for _, v := range yongyiList {
|
|
|
product := new(data_manage.BaseFromYongyiIndexList)
|
|
@@ -167,8 +183,16 @@ func (this *EdbInfoController) YongyiIndexData() {
|
|
|
product.IndexName = v.IndexName
|
|
|
product.Frequency = v.Frequency
|
|
|
product.ModifyTime = v.ModifyTime
|
|
|
+ if edb, ok := edbInfoMap[v.IndexCode]; ok {
|
|
|
+ product.EdbInfoId = edb.EdbInfoId
|
|
|
+ product.EdbExist = 1
|
|
|
+ }
|
|
|
|
|
|
total, err := data_manage.GetYongyiIndexDataCount(v.IndexCode)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取数据失败"
|
|
|
+ br.ErrMsg = "获取指标数据失败,Err:" + err.Error()
|
|
|
+ }
|
|
|
page := paging.GetPaging(currentIndex, pageSize, total)
|
|
|
dataList, err := data_manage.GetYongyiIndexData(v.IndexCode, startSize, pageSize)
|
|
|
if err != nil {
|
|
@@ -276,9 +300,20 @@ func (this *EdbInfoController) YongyiSingleData() {
|
|
|
br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
+ edbInfo, err := data_manage.GetEdbInfoByEdbCode(utils.DATA_SOURCE_YONYI, indexCode)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ br.Msg = "获取数据源失败"
|
|
|
+ br.ErrMsg = "获取数据源失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
var ret data_manage.YongyiSingleDataResp
|
|
|
var dataList []*data_manage.YongyiSingleData
|
|
|
|
|
|
+ if edbInfo != nil {
|
|
|
+ ret.EdbInfoId = edbInfo.EdbInfoId
|
|
|
+ ret.EdbExist = 1
|
|
|
+ }
|
|
|
ret.ClassifyId = indexInfo.ClassifyId
|
|
|
ret.YongyiIndexId = indexInfo.YongyiIndexId
|
|
|
ret.IndexCode = indexInfo.IndexCode
|
|
@@ -464,7 +499,7 @@ func (this *EdbInfoController) YongyiBatchAdd() {
|
|
|
|
|
|
// 限定同一时间最多批量新增30个指标
|
|
|
for _, v := range req {
|
|
|
- var r data.MysteelChemicalIndexSource2EdbReq
|
|
|
+ var r request.YongyiIndexSource2EdbReq
|
|
|
r.EdbCode = v.EdbCode
|
|
|
r.EdbName = v.EdbName
|
|
|
r.Frequency = v.Frequency
|
|
@@ -473,7 +508,7 @@ func (this *EdbInfoController) YongyiBatchAdd() {
|
|
|
r.AdminId = sysUser.AdminId
|
|
|
r.AdminRealName = sysUser.RealName
|
|
|
|
|
|
- edbInfo, e, errMsg, skip := data.MysteelChemicalIndexSource2Edb(r, this.Lang)
|
|
|
+ edbInfo, e, errMsg, skip := data.YongyiIndexSource2Edb(r, this.Lang)
|
|
|
if e != nil {
|
|
|
br.Msg = "操作失败"
|
|
|
if errMsg != "" {
|
|
@@ -529,6 +564,333 @@ func (this *EdbInfoController) YongyiBatchAdd() {
|
|
|
br.IsAddLog = true
|
|
|
}
|
|
|
|
|
|
+// YongyiNameCheck
|
|
|
+// @Title 加入指标库的重名检测
|
|
|
+// @Description 加入指标库的重名检测
|
|
|
+// @Param ClassifyIds query string true "分类id, 多个分类用英文"
|
|
|
+// @Param Keyword query string true "关键词, 指标ID/指标名称"
|
|
|
+// @Success 200 {object} NameCheckResult
|
|
|
+// @router /yongyi/edb_info/name_check [post]
|
|
|
+func (this *EdbInfoController) YongyiNameCheck() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ if br.ErrMsg == "" {
|
|
|
+ br.IsSendEmail = false
|
|
|
+ }
|
|
|
+ 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.NameCheckEdbInfoReq
|
|
|
+ if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(req) == 0 {
|
|
|
+ br.Msg = "请选择指标"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ codeMax := 30
|
|
|
+ codeLen := len(req)
|
|
|
+ if codeLen > codeMax {
|
|
|
+ br.Msg = fmt.Sprintf("最多只能选择%d个指标", codeMax)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ type NameCheckResult struct {
|
|
|
+ EdbCode string
|
|
|
+ EdbName string
|
|
|
+ Exist bool
|
|
|
+ }
|
|
|
+ indexNames := make([]string, 0)
|
|
|
+ resp := make([]*NameCheckResult, 0)
|
|
|
+ for _, v := range req {
|
|
|
+ v.EdbCode = strings.TrimSpace(v.EdbCode)
|
|
|
+ if v.EdbCode == "" {
|
|
|
+ br.Msg = "指标ID不可为空"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ v.EdbName = strings.TrimSpace(v.EdbName)
|
|
|
+ if v.EdbName == "" {
|
|
|
+ br.Msg = "请输入指标名称"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ indexNames = append(indexNames, v.EdbName)
|
|
|
+ resp = append(resp, &NameCheckResult{
|
|
|
+ EdbCode: v.EdbCode,
|
|
|
+ EdbName: v.EdbName,
|
|
|
+ })
|
|
|
+ dataItems, err := data_manage.GetEdbDataAllByEdbCode(v.EdbCode, utils.DATA_SOURCE_YONYI, 0, utils.EDB_DATA_LIMIT)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取钢联已存在信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(dataItems) <= 0 {
|
|
|
+ respItem, err := data.AddEdbData(utils.DATA_SOURCE_YONYI, v.EdbCode, v.Frequency)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if respItem.Ret != 200 {
|
|
|
+ br.Msg = "未搜索到该指标"
|
|
|
+ br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + v.EdbCode
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 重名校验
|
|
|
+ edbList, e := data_manage.GetEdbInfoByNameArr(indexNames, utils.EDB_INFO_TYPE)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = "获取重名指标失败, Err: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ nameExists := make(map[string]bool)
|
|
|
+ for _, v := range edbList {
|
|
|
+ nameExists[v.EdbName] = true
|
|
|
+ }
|
|
|
+ if len(nameExists) > 0 {
|
|
|
+ for _, v := range resp {
|
|
|
+ v.Exist = nameExists[v.EdbName]
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ br.Data = resp
|
|
|
+ br.Msg = "校验成功"
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+}
|
|
|
+
|
|
|
+// YongyiAddCheck
|
|
|
+// @Title 加入指标库指标Id检测
|
|
|
+// @Description 加入指标库指标Id检测
|
|
|
+// @Param request body request.BatchAddCheckReq true "type json string"
|
|
|
+// @Success 200 string "操作成功"
|
|
|
+// @router /yongyi/edb_info/add_check [post]
|
|
|
+func (c *EdbInfoController) YongyiAddCheck() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ if br.ErrMsg == "" {
|
|
|
+ br.IsSendEmail = false
|
|
|
+ }
|
|
|
+ c.Data["json"] = br
|
|
|
+ c.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := c.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var req data_manage.BatchAddCheckReq
|
|
|
+ if e := json.Unmarshal(c.Ctx.Input.RequestBody, &req); e != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ codeMax := 30
|
|
|
+ codeLen := len(req.IndexCodes)
|
|
|
+
|
|
|
+ // 获取指标库已有指标
|
|
|
+ existsEdb, e := data_manage.GetEdbCodesBySource(utils.DATA_SOURCE_YONYI)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取自有数据已添加的指标失败, Err: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ existMap := make(map[string]*data_manage.EdbInfo)
|
|
|
+ for _, v := range existsEdb {
|
|
|
+ existMap[v.EdbCode] = v
|
|
|
+ }
|
|
|
+
|
|
|
+ if codeLen == 0 {
|
|
|
+ br.Msg = "请选择指标"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if codeLen > codeMax {
|
|
|
+ br.Msg = fmt.Sprintf("最多只能选择%d个指标", codeMax)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询选中的指标
|
|
|
+ cond := fmt.Sprintf(` AND index_code IN (%s)`, utils.GetOrmInReplace(codeLen))
|
|
|
+ pars := make([]interface{}, 0)
|
|
|
+ pars = append(pars, req.IndexCodes)
|
|
|
+ list, err := data_manage.GetYongyiIndex(cond, pars)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取钢联已存在信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(list) > codeMax {
|
|
|
+ br.Msg = fmt.Sprintf("最多只能选择%d个指标", codeMax)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ resp := make([]*data_manage.BaseFromYongyiIndexList, 0)
|
|
|
+ for _, v := range list {
|
|
|
+ if edb, ok := existMap[v.IndexCode]; ok {
|
|
|
+ v.EdbInfoId = edb.EdbInfoId
|
|
|
+ v.EdbExist = 1
|
|
|
+ }
|
|
|
+ resp = append(resp, v)
|
|
|
+ }
|
|
|
+
|
|
|
+ br.Data = resp
|
|
|
+ br.Msg = "校验成功"
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+}
|
|
|
+
|
|
|
+// YongyiEdbInfoAdd
|
|
|
+// @Title 新增指标接口
|
|
|
+// @Description 新增指标接口
|
|
|
+// @Param request body data_manage.AddEdbInfoReq true "type json string"
|
|
|
+// @Success Ret=200 保存成功
|
|
|
+// @router /yongyi/edb_info/add [post]
|
|
|
+func (this *EdbInfoController) YongyiEdbInfoAdd() {
|
|
|
+ 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
|
|
|
+ }
|
|
|
+
|
|
|
+ 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
|
|
|
+ }
|
|
|
+
|
|
|
+ count, err := data_manage.GetYongyiIndexDataCount(req.EdbCode)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if count == 0 {
|
|
|
+ br.Msg = "指标不存在"
|
|
|
+ }
|
|
|
+
|
|
|
+ // 指标入库
|
|
|
+ edbInfo, err, errMsg, isSendEmail := data.EdbInfoAdd(utils.DATA_SOURCE_YONYI, utils.DATA_SUB_SOURCE_EDB, req.ClassifyId, req.EdbCode, req.EdbName, req.Frequency, req.Unit, req.StartDate, req.EndDate, sysUser.AdminId, sysUser.RealName, this.Lang)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "保存失败"
|
|
|
+ if errMsg != `` {
|
|
|
+ br.Msg = errMsg
|
|
|
+ }
|
|
|
+ br.ErrMsg = err.Error()
|
|
|
+ br.IsSendEmail = isSendEmail
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 试用平台更新用户累计新增指标数
|
|
|
+ adminItem, e := system.GetSysAdminById(sysUser.AdminId)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = "获取系统用户数据失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if utils.BusinessCode == utils.BusinessCodeSandbox && adminItem.DepartmentName == "ETA试用客户" {
|
|
|
+ go func() {
|
|
|
+ var r etaTrialService.EtaTrialUserReq
|
|
|
+ r.Mobile = adminItem.Mobile
|
|
|
+ _, _ = etaTrialService.UpdateUserIndexNum(r)
|
|
|
+ }()
|
|
|
+ }
|
|
|
+
|
|
|
+ //新增操作日志
|
|
|
+ {
|
|
|
+ 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
|
|
|
+ go data.AddOrEditEdbInfoToEs(edbInfo.EdbInfoId)
|
|
|
+
|
|
|
+ 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
|
|
|
+}
|
|
|
+
|
|
|
// ExportYongyiList
|
|
|
// @Title 导出Yongyi数据
|
|
|
// @Description 导出Yongyi数据
|