ziwen 1 year ago
parent
commit
61e626133a

+ 152 - 0
controllers/data_manage/edb_classify.go

@@ -778,3 +778,155 @@ func (this *EdbClassifyController) ClassifyEdbInfoList() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// ItemsV3
+// @Title 分类列表
+// @Description 分类列表接口
+// @Success 200 {object} data_manage.EdbClassifyListResp
+// @router /classify/items/v3 [get]
+func (this *EdbClassifyController) ItemsV3() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	rootList, err := data_manage.GetEdbClassifyByParentId(0, 0)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	rootTwoList, err := data_manage.GetEdbClassifyByParentIdTwo(0, 0)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	classifyAll, err := data_manage.GetEdbClassifyAllV2()
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+		return
+	}
+	rootTwoMap := make(map[int][]*data_manage.EdbClassifyItems)
+	for _, v := range rootTwoList {
+		button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
+		button.AddButton = false //不管有没有权限,指标都是没有添加按钮的
+		v.Button = button
+
+		rootTwoMap[v.ParentId] = append(rootTwoMap[v.ParentId], v)
+	}
+	rootTwoChildMap := make(map[int][]*data_manage.EdbClassifyItems)
+	for _, v := range classifyAll {
+		button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
+		button.AddButton = false //不管有没有权限,指标都是没有添加按钮的
+		v.Button = button
+
+		rootTwoChildMap[v.ParentIdTwo] = append(rootTwoChildMap[v.ParentIdTwo], v)
+	}
+
+	nodeAll := make([]*data_manage.EdbClassifyItems, 0)
+	//for _, v := range rootTwoList {
+	//	button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
+	//	v.Button = button
+	//
+	//	if existItems, ok := rootTwoChildMap[v.ClassifyId]; ok {
+	//		v.Children = existItems
+	//	} else {
+	//		items := make([]*data_manage.EdbClassifyItems, 0)
+	//		v.Children = items
+	//	}
+	//	nodeAll = append(nodeAll, v)
+	//}
+	for _, v := range rootList {
+		button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
+		v.Button = button
+
+		if existItems, ok := rootTwoMap[v.ClassifyId]; ok {
+			v.Children = existItems
+			for _, item := range existItems {
+				button := data.GetEdbClassifyOpButton(this.SysUser, item.SysUserId)
+				item.Button = button
+
+				if existItems, ok := rootTwoChildMap[item.ClassifyId]; ok {
+					item.Children = existItems
+				} else {
+					items := make([]*data_manage.EdbClassifyItems, 0)
+					item.Children = items
+				}
+			}
+		} else {
+			items := make([]*data_manage.EdbClassifyItems, 0)
+			v.Children = items
+		}
+		nodeAll = append(nodeAll, v)
+	}
+	language := `CN`
+	// 指标显示的语言
+	{
+		configDetail, _ := system.GetConfigDetailByCode(this.SysUser.AdminId, system.EdbLanguageVar)
+		if configDetail != nil {
+			language = configDetail.ConfigValue
+		} else {
+			configDetail, _ = system.GetDefaultConfigDetailByCode(system.EdbLanguageVar)
+			if configDetail != nil {
+				language = configDetail.ConfigValue
+			}
+		}
+	}
+	resp := new(data_manage.EdbClassifyListResp)
+	resp.AllNodes = nodeAll
+	resp.Language = language
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+
+// @Title 新增分类
+// @Description 新增分类接口
+// @Param	request	body data_manage.AddEdbClassifyReq true "type json string"
+// @Success 200 Ret=200 保存成功
+// @router /classify/addv2 [post]
+func (this *EdbClassifyController) AddEdbClassifyV2() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req data_manage.AddEdbClassifyReqV2
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.ClassifyName == "" {
+		br.Msg = "请输入分类名称"
+		br.IsSendEmail = false
+		return
+	}
+	if req.ParentId < 0 {
+		br.Msg = "参数错误"
+		br.IsSendEmail = false
+		return
+	}
+
+	//添加指标
+	_, err, errMsg := data.AddEdbClassifyV2(req.ClassifyName, req.ParentId, req.ParentIdTwo, req.Level, 0, this.SysUser.AdminId, this.SysUser.AdminName)
+	if errMsg != `` {
+		br.Msg = errMsg
+		br.ErrMsg = errMsg
+		if err != nil {
+			br.ErrMsg = errMsg + ";Err:" + err.Error()
+		} else {
+			br.IsSendEmail = false
+		}
+		return
+	}
+	br.Ret = 200
+	br.Msg = "保存成功"
+	br.Success = true
+	br.IsAddLog = true
+}

+ 33 - 0
models/data_manage/edb_classify.go

@@ -11,6 +11,7 @@ type EdbClassify struct {
 	ClassifyType    uint8     `description:"分类类型,0:普通指标分类,1:预测指标分类"`
 	ClassifyName    string    `description:"分类名称"`
 	ParentId        int       `description:"父级id"`
+	ParentIdTwo     int       `description:"三级id"`
 	HasData         int       `description:"是否含有指标数据"`
 	CreateTime      time.Time `description:"创建时间"`
 	ModifyTime      time.Time `description:"修改时间"`
@@ -137,6 +138,7 @@ type EdbClassifyItems struct {
 	ClassifyName    string
 	ClassifyNameEn  string
 	ParentId        int
+	ParentIdTwo     int
 	Level           int    `description:"层级"`
 	Sort            int    `description:"排序字段,越小越靠前,默认值:10"`
 	UniqueCode      string `description:"唯一编码"`
@@ -266,3 +268,34 @@ func GetEdbClassifyMaxSort(parentId int, classifyType uint8) (sort int, err erro
 type ClassifyEdbInfoListResp struct {
 	EdbInfoList []*EdbClassifyItems
 }
+
+// GetEdbClassifyAllV2 获取普通指标的分类列表
+func GetEdbClassifyAllV2() (items []*EdbClassifyItems, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM edb_classify WHERE parent_id_two <>0  AND classify_type = 0  order by sort asc,classify_id asc`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+func GetEdbClassifyByParentIdTwo(parentIdTwo int, classifyType int8) (items []*EdbClassifyItems, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM edb_classify WHERE parent_id_two=? AND classify_type = ?  order by sort asc,classify_id asc`
+	_, err = o.Raw(sql, parentIdTwo, classifyType).QueryRows(&items)
+	return
+}
+
+type AddEdbClassifyReqV2 struct {
+	ClassifyName string `description:"分类名称"`
+	ParentId     int    `description:"父级id,第一级传0"`
+	ParentIdTwo  int    `description:"二级id,第一级传0"`
+	Level        int    `description:"层级,第一级传0,其余传上一级的层级"`
+	ClassifyType uint8  `description:"分类类型,0:普通指标分类,1:预测指标分类"`
+}
+
+// GetEdbClassifyMaxSortV2 获取分类下最大的排序数
+func GetEdbClassifyMaxSortV2(parentId,parentIdTwo int, classifyType uint8) (sort int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT Max(sort) AS sort FROM edb_classify WHERE parent_id=? AND parent_id_two=? AND classify_type=? `
+	err = o.Raw(sql, parentId,parentIdTwo, classifyType).QueryRow(&sort)
+	return
+}

+ 18 - 0
routers/commentsRouter.go

@@ -1564,6 +1564,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:EdbClassifyController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:EdbClassifyController"],
+        beego.ControllerComments{
+            Method: "AddEdbClassifyV2",
+            Router: `/classify/addv2`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:EdbClassifyController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:EdbClassifyController"],
         beego.ControllerComments{
             Method: "DeleteEdbClassify",
@@ -1618,6 +1627,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:EdbClassifyController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:EdbClassifyController"],
+        beego.ControllerComments{
+            Method: "ItemsV3",
+            Router: `/classify/items/v3`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:EdbClassifyController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:EdbClassifyController"],
         beego.ControllerComments{
             Method: "ListV2",

+ 37 - 0
services/data/edb_classify.go

@@ -551,3 +551,40 @@ func GetPredictEdbClassifyOpButton(sysUser *system.Admin, belongUserId int) (but
 	}
 	return
 }
+
+// AddEdbClassifyV2 添加指标分类
+func AddEdbClassifyV2(classifyName string, parentId, parentIdTwo, level int, classifyType uint8, sysUserId int, sysUserName string) (classifyInfo *data_manage.EdbClassify, err error, errMsg string) {
+	count, err := data_manage.GetEdbClassifyCount(classifyName, parentId, classifyType)
+	if err != nil {
+		errMsg = `判断名称是否已存在失败`
+		return
+	}
+	if count > 0 {
+		errMsg = `分类名称已存在,请重新输入`
+		return
+	}
+	//获取该层级下最大的排序数
+	maxSort, err := data_manage.GetEdbClassifyMaxSortV2(parentId, parentIdTwo, classifyType)
+
+	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
+	classifyInfo = &data_manage.EdbClassify{
+		//ClassifyId:      0,
+		ClassifyType:    classifyType,
+		ClassifyName:    classifyName,
+		ParentId:        parentId,
+		ParentIdTwo:     parentIdTwo,
+		HasData:         0,
+		CreateTime:      time.Now(),
+		ModifyTime:      time.Now(),
+		SysUserId:       sysUserId,
+		SysUserRealName: sysUserName,
+		Level:           level + 1,
+		UniqueCode:      utils.MD5(utils.DATA_PREFIX + "_" + timestamp),
+		Sort:            maxSort,
+	}
+	_, err = data_manage.AddEdbClassify(classifyInfo)
+	if err != nil {
+		errMsg = "保存分类失败"
+	}
+	return
+}