Browse Source

fix:修改部分校验接口

zqbao 8 months ago
parent
commit
b6666e71ee

+ 160 - 62
controllers/data_manage/mysteel_chemical_data.go

@@ -1259,13 +1259,13 @@ func (this *EdbInfoController) MysteelChemicalRefresh() {
 	br.Data = item
 }
 
-// CodeCheck
+// NameCheck
 // @Title 重名校验
 // @Description 批量新增
 // @Param	request	body data_manage.AddEdbInfoReq true "type json string"
 // @Success 200 string "操作成功"
-// @router /mysteel_chemical/code_check [post]
-func (c *EdbInfoController) CodeCheck() {
+// @router /mysteel_chemical/name_check [post]
+func (c *EdbInfoController) NameCheck() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		if br.ErrMsg == "" {
@@ -1281,7 +1281,7 @@ func (c *EdbInfoController) CodeCheck() {
 		br.Ret = 408
 		return
 	}
-	var req []*data_manage.AddEdbInfoReq
+	var req []*data_manage.NameCheckEdbInfoReq
 	if e := json.Unmarshal(c.Ctx.Input.RequestBody, &req); e != nil {
 		br.Msg = "参数解析异常!"
 		br.ErrMsg = "参数解析失败,Err:" + e.Error()
@@ -1303,8 +1303,7 @@ func (c *EdbInfoController) CodeCheck() {
 		EdbName string
 		Exist   bool
 	}
-	// indexNames := make([]string, 0)
-	indexCodes := make([]string, 0)
+	indexNames := make([]string, 0)
 	resp := make([]*NameCheckResult, 0)
 	for _, v := range req {
 		v.EdbCode = strings.TrimSpace(v.EdbCode)
@@ -1317,7 +1316,7 @@ func (c *EdbInfoController) CodeCheck() {
 			br.Msg = "请输入指标名称"
 			return
 		}
-		indexCodes = append(indexCodes, v.EdbName)
+		indexNames = append(indexNames, v.EdbName)
 		resp = append(resp, &NameCheckResult{
 			EdbCode: v.EdbCode,
 			EdbName: v.EdbName,
@@ -1344,7 +1343,7 @@ func (c *EdbInfoController) CodeCheck() {
 	}
 
 	// 重名校验
-	edbList, e := data_manage.GetEdbInfoByCodeArr(indexCodes, utils.EDB_INFO_TYPE)
+	edbList, e := data_manage.GetEdbInfoByNameArr(indexNames, utils.EDB_INFO_TYPE)
 	if e != nil {
 		br.Msg = "操作失败"
 		br.ErrMsg = "获取重名指标失败, Err: " + e.Error()
@@ -1669,84 +1668,183 @@ func (this *EdbInfoController) Add() {
 // @Title 新增指标检测接口
 // @Description 新增指标检测接口
 // @Param   EdbCode   query   string  true      "指标编码/指标代码"
-// @Param   Frequency   query   string  false       "频度"
 // @Success Ret=200 保存成功
 // @router /mysteel_chemical/edb_info/add_check [get]
-func (this *EdbInfoController) AddCheck() {
+// func (this *EdbInfoController) AddCheck() {
+// 	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.AddCheckEdbInfoReq
+// 	if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
+// 		br.Msg = "参数解析异常!"
+// 		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+// 		return
+// 	}
+
+// 	source := utils.DATA_SOURCE_MYSTEEL_CHEMICAL
+// 	indexNameMap := make(map[string]string)
+// 	indexNames := make([]string, 0)
+// 	for _, v := range req {
+// 		v.EdbCode = strings.Trim(v.EdbCode, "\t")
+// 		v.EdbCode = strings.Trim(v.EdbCode, " ")
+// 		v.EdbCode = strings.Replace(v.EdbCode, "\t", "", -1)
+// 		if v.EdbCode == "" {
+// 			br.Msg = "请输入指标ID"
+// 			return
+// 		}
+// 		v.EdbName = strings.Trim(v.EdbName, "\t")
+// 		v.EdbName = strings.Trim(v.EdbName, " ")
+// 		v.EdbName = strings.Replace(v.EdbName, "\t", "", -1)
+// 		if v.EdbName == "" {
+// 			br.Msg = "请输入指标名称"
+// 			return
+// 		}
+// 		indexNames = append(indexNames, v.EdbName)
+
+// 		item, err := data_manage.GetEdbInfoByEdbCode(source, edbCode)
+// 		if err != nil && err.Error() != utils.ErrNoRow() {
+// 			br.Msg = "获取失败"
+// 			br.ErrMsg = "获取失败,Err:" + err.Error()
+// 			return
+// 		}
+
+// 		resp := new(data_manage.EdbInfoMySteelChemicalCheckResp)
+// 		if item != nil && item.EdbInfoId > 0 {
+// 			resp.Status = 1
+// 			// 查询该指标是否有权限
+// 			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 {
+// 			resp.Status = 2
+// 			dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, 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(source, edbCode, frequency)
+// 				if err != nil {
+// 					br.Msg = "获取失败"
+// 					br.ErrMsg = "获取失败,Err:" + err.Error()
+// 					return
+// 				}
+// 				if respItem.Ret != 200 {
+// 					br.Msg = "未搜索到该指标"
+// 					br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode
+// 					return
+// 				}
+// 			}
+// 		}
+// 	}
+
+// 	br.Ret = 200
+// 	br.Success = true
+// 	br.Msg = "保存成功"
+// 	br.Data = resp
+// 	br.IsAddLog = true
+// }
+
+// AddCheck
+// @Title 新增校验
+// @Description 新增校验
+// @Param	request	body request.BusinessDataBatchAddCheckReq true "type json string"
+// @Success 200 string "操作成功"
+// @router /mysteel_chemical/edb_info/add_check [post]
+func (c *EdbInfoController) AddCheck() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
-		this.Data["json"] = br
-		this.ServeJSON()
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		c.Data["json"] = br
+		c.ServeJSON()
 	}()
-
-	sysUser := this.SysUser
+	sysUser := c.SysUser
 	if sysUser == nil {
 		br.Msg = "请登录"
 		br.ErrMsg = "请登录,SysUser Is Empty"
 		br.Ret = 408
 		return
 	}
+	var req *data_manage.MysteelChemicalDataBatchAddCheckReq
+	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)
 
-	edbCode := this.GetString("EdbCode")
-	frequency := this.GetString("Frequency")
-	edbCode = strings.Trim(edbCode, "\t")
-	edbCode = strings.Trim(edbCode, " ")
-	edbCode = strings.Replace(edbCode, "\t", "", -1)
-	source := utils.DATA_SOURCE_MYSTEEL_CHEMICAL
-	if edbCode == "" {
-		br.Msg = "请输入指标ID"
+	// 获取指标库已有指标
+	existsEdb, e := data_manage.GetEdbCodesBySource(utils.DATA_SOURCE_MYSTEEL_CHEMICAL)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取自有数据已添加的指标失败, Err: " + e.Error()
 		return
 	}
-	item, err := data_manage.GetEdbInfoByEdbCode(source, edbCode)
-	if err != nil && err.Error() != utils.ErrNoRow() {
+	existMap := make(map[string]*data_manage.EdbInfo)
+	for _, v := range existsEdb {
+		existMap[v.EdbCode] = v
+	}
+
+	obj := data_manage.BaseFromMysteelChemicalIndex{}
+	if codeLen == 0 {
+		br.Msg = "请选择指标"
+		return
+	}
+	if codeLen > codeMax {
+		br.Msg = fmt.Sprintf("最多只能选择%d个指标", codeMax)
+		return
+	}
+
+	// 查询选中的指标
+	cond := fmt.Sprintf(` AND %s IN (%s)`, data_manage.BaseFromMysteelChemicalIndexCols.IndexCode, utils.GetOrmInReplace(codeLen))
+	pars := make([]interface{}, 0)
+	pars = append(pars, req.IndexCodes)
+	list, e := obj.GeItemsByCondition(cond, pars, 0)
+	if e != nil {
 		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
+		br.ErrMsg = "获取自有数据原始指标列表失败, Err: " + e.Error()
 		return
 	}
 
-	resp := new(data_manage.EdbInfoMySteelChemicalCheckResp)
-	if item != nil && item.EdbInfoId > 0 {
-		resp.Status = 1
-		// 查询该指标是否有权限
-		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 {
-		resp.Status = 2
-		dataItems, err := data_manage.GetEdbDataAllByEdbCode(edbCode, source, 0, utils.EDB_DATA_LIMIT)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取钢联已存在信息失败,Err:" + err.Error()
-			return
-		}
+	if len(list) > codeMax {
+		br.Msg = fmt.Sprintf("最多只能选择%d个指标", codeMax)
+		return
+	}
 
-		if len(dataItems) <= 0 {
-			respItem, err := data.AddEdbData(source, edbCode, frequency)
-			if err != nil {
-				br.Msg = "获取失败"
-				br.ErrMsg = "获取失败,Err:" + err.Error()
-				return
-			}
-			if respItem.Ret != 200 {
-				br.Msg = "未搜索到该指标"
-				br.ErrMsg = respItem.ErrMsg + ";EdbCode:" + edbCode
-				return
-			}
+	resp := make([]*data_manage.BaseFromMysteelChemicalIndexItem, 0)
+	for _, v := range list {
+		if v.EdbInfoId > 0 {
+			v.EdbExist = 1
 		}
+		resp = append(resp, v)
 	}
 
+	br.Data = resp
+	br.Msg = "校验成功"
 	br.Ret = 200
 	br.Success = true
-	br.Msg = "保存成功"
-	br.Data = resp
-	br.IsAddLog = true
 }
 
 // MysteelChemicalSearch

+ 14 - 11
models/data_manage/edb_info.go

@@ -201,20 +201,17 @@ func GetEdbInfoByIdList(edbInfoIdList []int) (items []*EdbInfo, err error) {
 	return
 }
 
-type MysteelChemicalDataListReq struct {
-	PageSize     int    `form:"PageSize"`
-	CurrentIndex int    `form:"CurrentIndex"`
-	Frequency    string `form:"Frequency" description:"频度"`
-	Source       int    `form:"Source" description:"来源id"`
-	Keywords     string `form:"Keywords" description:"指标ID/指标名称"`
-	ListAll      bool   `form:"ListAll" description:"列表全选"`
-	SortField    int    `form:"SortField" description:"排序字段: 0-默认; 1-开始时间; 2-最新时间; 3-更新时间"`
-	SortRule     int    `form:"SortRule" description:"排序方式: 0-默认; 1-正序; 2-倒序"`
-}
+// type MysteelChemicalDataListReq struct {
+// 	Frequency    string `form:"Frequency" description:"频度"`
+// 	Source       int    `form:"Source" description:"来源id"`
+// 	Keywords     string `form:"Keywords" description:"指标ID/指标名称"`
+// 	SortField    int    `form:"SortField" description:"排序字段: 0-默认; 1-开始时间; 2-最新时间; 3-更新时间"`
+// 	SortRule     int    `form:"SortRule" description:"排序方式: 0-默认; 1-正序; 2-倒序"`
+// }
 
 // MysteelChemicalDataBatchAddCheckReq 钢联化工指标批量添加校验
 type MysteelChemicalDataBatchAddCheckReq struct {
-	MysteelChemicalDataListReq
+	// MysteelChemicalDataListReq
 	IndexCodes []string `form:"IndexCodes" description:"全选为false时, 该数组为选中; 全选为true时, 该数组为不选的指标"`
 }
 
@@ -229,6 +226,12 @@ type AddEdbInfoReq struct {
 	EndDate    string `description:"终止日期"`
 }
 
+type NameCheckEdbInfoReq struct {
+	EdbCode   string `description:"指标编码"`
+	EdbName   string `description:"指标名称"`
+	Frequency string `description:"频率"`
+}
+
 func DeleteEdbInfoAndData(edbInfoId, source, subSource int) (err error) {
 	o := orm.NewOrmUsingDB("data")
 	to, err := o.Begin()

+ 67 - 0
models/data_manage/mysteel_chemical_index.go

@@ -36,12 +36,79 @@ type BaseFromMysteelChemicalIndex struct {
 	EndValue                          float64   `description:"指标的最新值"`
 }
 
+type BaseFromMysteelChemicalIndexItem struct {
+	BaseFromMysteelChemicalIndexId int64  `orm:"column(base_from_mysteel_chemical_index_id);pk"`
+	IndexCode                      string `description:"指标编码"`
+	IndexName                      string `description:"指标名称"`
+	Unit                           string `description:"单位"`
+	Frequency                      string `description:"频度"`
+	Source                         int    `description:"数据来源"`
+	StartDate                      string `description:"开始日期"`
+	EndDate                        string `description:"结束日期"`
+	CreateTime                     string `description:"创建时间"`
+	ModifyTime                     string `description:"修改时间"`
+	EdbInfoId                      int    `description:"eta指标库的id"`
+	EdbUniqueCode                  string `description:"指标库唯一编码"`
+	EdbClassifyId                  int    `description:"指标库分类ID"`
+	IsStop                         int    `description:"是否停更:1:停更,0:未停更"`
+	EdbExist                       int    `description:"指标库是否已添加:0-否;1-是"`
+}
+
+var BaseFromMysteelChemicalIndexCols = struct {
+	BaseFromMysteelChemicalIndexId string
+	IndexCode                      string
+	IndexName                      string
+	Unit                           string
+	Frequency                      string
+	Source                         string
+	SourceName                     string
+	StartDate                      string
+	EndDate                        string
+	Remark                         string
+	BaseModifyTime                 string
+	DataUpdateTime                 string
+	CreateTime                     string
+	ModifyTime                     string
+}{
+	BaseFromMysteelChemicalIndexId: "base_from_mysteel_chemical_index_id",
+	IndexCode:                      "index_code",
+	IndexName:                      "index_name",
+	Unit:                           "unit",
+	Frequency:                      "frequency",
+	Source:                         "source",
+	StartDate:                      "start_date",
+	EndDate:                        "end_date",
+	CreateTime:                     "create_time",
+	ModifyTime:                     "modify_time",
+}
+
 // Update 更新钢联化工指标基础信息
 func (item *BaseFromMysteelChemicalIndex) Update(cols []string) (err error) {
 	o := orm.NewOrmUsingDB("data")
 	_, err = o.Update(item, cols...)
 	return
 }
+func (m *BaseFromMysteelChemicalIndex) GeItemsByCondition(condition string, pars []interface{}, limitSize int) (items []*BaseFromMysteelChemicalIndexItem, err error) {
+	if pars == nil {
+		pars = make([]interface{}, 0)
+	}
+
+	sql := `select a.*,b.edb_info_id,b.unique_code as edb_unique_code,b.classify_id as edb_classify_id FROM base_from_mysteel_chemical_index AS a LEFT JOIN edb_info b on a.index_code=b.edb_code AND b.source=? WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` order by a.base_from_mysteel_chemical_index_id desc `
+
+	if limitSize > 0 {
+		sql += " limit ? "
+		pars = append(pars, limitSize)
+	}
+
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Raw(sql, utils.DATA_SOURCE_MYSTEEL_CHEMICAL, pars).QueryRows(&items)
+
+	return
+}
 
 // AddBaseFromMysteelChemicalIndex 添加钢联化工指标
 func AddBaseFromMysteelChemicalIndex(item *BaseFromMysteelChemicalIndex) (lastId int64, err error) {

+ 10 - 10
routers/commentsRouter.go

@@ -3967,15 +3967,6 @@ func init() {
             Filters: nil,
             Params: nil})
 
-    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"],
-        beego.ControllerComments{
-            Method: "CodeCheck",
-            Router: `/mysteel_chemical/code_check`,
-            AllowHTTPMethods: []string{"post"},
-            MethodParams: param.Make(),
-            Filters: nil,
-            Params: nil})
-
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"],
         beego.ControllerComments{
             Method: "MysteelChemicalData",
@@ -4007,7 +3998,7 @@ func init() {
         beego.ControllerComments{
             Method: "AddCheck",
             Router: `/mysteel_chemical/edb_info/add_check`,
-            AllowHTTPMethods: []string{"get"},
+            AllowHTTPMethods: []string{"post"},
             MethodParams: param.Make(),
             Filters: nil,
             Params: nil})
@@ -4030,6 +4021,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"],
+        beego.ControllerComments{
+            Method: "NameCheck",
+            Router: `/mysteel_chemical/name_check`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbInfoController"],
         beego.ControllerComments{
             Method: "MysteelChemicalRefresh",