Browse Source

fix:自有指标

Roc 3 months ago
parent
commit
056725b238

+ 0 - 10
controllers/data_manage/chart_info.go

@@ -4213,13 +4213,3 @@ func (this *ChartInfoController) ChartInfoImgSetBySvg() {
 	br.Data = resp
 	return
 }
-
-// 修复ES中的指标和图表数据
-//func init() {
-//	// 更新ES中的指标数据
-//	data.AddOrEditAllEdbInfoToEs()
-//	// 更新es中的图表数据
-//	data.AddAllChartInfo()
-//
-//	fmt.Println("全部es数据修复完成")
-//}

+ 8 - 52
controllers/data_manage/edb_classify.go

@@ -41,14 +41,14 @@ func (this *EdbClassifyController) ListV2() {
 		edbType = utils.EdbTypeCalculate
 	}
 
-	rootList, err := data_manage.GetEdbClassifyByParentId(0, int8(classifyType))
+	rootList, err := data_manage.GetEdbClassifyByParentId(0, int8(classifyType), this.SysUser.AdminId)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
 		return
 	}
 	//classifyAll, err := data_manage.GetEdbClassifyAll()
-	classifyAll, err := data_manage.GetChildEdbClassifyByClassifyType(classifyType)
+	classifyAll, err := data_manage.GetChildEdbClassifyByClassifyType(classifyType, this.SysUser.AdminId)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -177,7 +177,7 @@ func (this *EdbClassifyController) Items() {
 	//	edbType = utils.EdbTypeCalculate
 	//}
 
-	rootList, err := data_manage.GetEdbClassifyByParentId(0, int8(classifyType))
+	rootList, err := data_manage.GetEdbClassifyByParentId(0, int8(classifyType), this.SysUser.AdminId)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -185,7 +185,7 @@ func (this *EdbClassifyController) Items() {
 	}
 
 	//classifyAll, err := data_manage.GetEdbClassifyAll()
-	classifyAll, err := data_manage.GetChildEdbClassifyByClassifyType(classifyType)
+	classifyAll, err := data_manage.GetChildEdbClassifyByClassifyType(classifyType, this.SysUser.AdminId)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -709,14 +709,14 @@ func (this *EdbClassifyController) ItemsV2() {
 	//	edbType = utils.EdbTypeCalculate
 	//}
 
-	rootList, err := data_manage.GetEdbClassifyByParentId(0, int8(classifyType))
+	rootList, err := data_manage.GetEdbClassifyByParentId(0, int8(classifyType), this.SysUser.AdminId)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
 		return
 	}
 	//classifyAll, err := data_manage.GetEdbClassifyAll()
-	classifyAll, err := data_manage.GetChildEdbClassifyByClassifyType(classifyType)
+	classifyAll, err := data_manage.GetChildEdbClassifyByClassifyType(classifyType, this.SysUser.AdminId)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -926,7 +926,7 @@ func (this *EdbClassifyController) ItemsV3() {
 	//}
 
 	// TODO:9级改造
-	rootList, err := data_manage.GetEdbClassifyByParentId(0, int8(classifyType))
+	rootList, err := data_manage.GetEdbClassifyByParentId(0, int8(classifyType), this.SysUser.AdminId)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -1076,7 +1076,7 @@ func (this *EdbClassifyController) SimpleList() {
 	if isOnlyMe {
 		sysUserId = this.SysUser.AdminId
 	}
-	rootList, err := data_manage.GetEdbClassifyByParentId(parentId, int8(classifyType))
+	rootList, err := data_manage.GetEdbClassifyByParentId(parentId, int8(classifyType), this.SysUser.AdminId)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -1380,47 +1380,3 @@ func (this *EdbClassifyController) ClassifyTree() {
 //	br.Success = true
 //	br.Msg = "移动成功"
 //}
-
-// initFixClassify
-// @Description: 修复分类完整路径
-// @author: Roc
-// @datetime 2024-11-26 15:40:57
-func initFixClassify() {
-	allList := make([]*data_manage.EdbClassifyItems, 0)
-	allList, e := data_manage.GetEdbClassifyByClassifyTypes([]int{utils.EdbClassifyTypeBase, utils.EdbClassifyTypePredict, utils.EdbClassifyTypeCalculate})
-	if e != nil {
-		fmt.Println("获取分类失败", e)
-		return
-	}
-
-	var sortList data_manage.EdbClassifyItemList
-
-	allList = data.GetClassifyTreeRecursive(allList, 0)
-	//根据sort值排序
-	sortList = allList
-	sort.Sort(sortList)
-
-	for _, v := range sortList {
-		updatePath(v, "", "")
-	}
-	fmt.Println("修复分类路径完成")
-}
-
-func updatePath(item *data_manage.EdbClassifyItems, classifyNamePath, classifyIdPath string) {
-	if classifyNamePath == `` {
-		classifyNamePath = item.ClassifyName
-		classifyIdPath = fmt.Sprint(item.ClassifyId)
-	} else {
-		classifyNamePath = fmt.Sprint(classifyNamePath, "|", item.ClassifyName)
-		classifyIdPath = fmt.Sprint(classifyIdPath, ",", item.ClassifyId)
-	}
-	err := data_manage.UpdateEdbClassify(item.ClassifyId, classifyNamePath, classifyIdPath)
-	if err != nil {
-		fmt.Println(item.ClassifyId, ";更新失败", err)
-	}
-	if item.Children != nil {
-		for _, v := range item.Children {
-			updatePath(v, classifyNamePath, classifyIdPath)
-		}
-	}
-}

+ 34 - 14
controllers/data_manage/edb_info.go

@@ -1783,20 +1783,41 @@ func (this *EdbInfoController) EdbInfoFilterByEs() {
 
 	// 指标类型数组:1-基础指标;2-计算指标;3-预测指标
 	edbTypeList := make([]int, 0)
+	edbInfoType := -1                            // 指标范围
 	edbTypeStr := this.GetString("EdbType", "0") // 指标类型:0-基础和计算;1-基础指标;2-计算指标;3-预测指标
 	{
 		if edbTypeStr == `` || edbTypeStr == `0` {
-			edbTypeStr = `1,2`
-		}
-		tmpEdbTypeList := strings.Split(edbTypeStr, `,`)
-		for _, v := range tmpEdbTypeList {
-			edbType, err := strconv.Atoi(v)
-			if err != nil {
-				br.Msg = "EdbType异常"
-				br.ErrMsg = "EdbType异常,Err:" + err.Error()
-				return
+			edbTypeList = []int{1, 2}
+			edbInfoType = 0
+		} else {
+			var hasEdb, hasPredictEdb bool
+			tmpEdbTypeList := strings.Split(edbTypeStr, `,`)
+			for _, v := range tmpEdbTypeList {
+				edbType, err := strconv.Atoi(v)
+				if err != nil {
+					br.Msg = "EdbType异常"
+					br.ErrMsg = "EdbType异常,Err:" + err.Error()
+					return
+				}
+
+				// 指标类型
+				switch edbType {
+				case 1, 2:
+					hasEdb = true
+					edbTypeList = append(edbTypeList, edbType)
+				case 3:
+					hasPredictEdb = true
+					edbTypeList = []int{1, 2}
+				}
+			}
+
+			// 只有数据查看和指标加工
+			if hasEdb && !hasPredictEdb {
+				edbInfoType = 0
+			} else if !hasEdb && hasPredictEdb {
+				// 只有预测指标
+				edbInfoType = 1
 			}
-			edbTypeList = append(edbTypeList, edbType)
 		}
 	}
 
@@ -1833,8 +1854,7 @@ func (this *EdbInfoController) EdbInfoFilterByEs() {
 	keyWordArr = append(keyWordArr, newKeyWord...)
 
 	// 普通的搜索
-	total, edbInfoList, err = elastic.SearchEdbInfoData(keyWord, startSize, pageSize, filterSource, source, 0, frequency, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, collectEdbInfoIdList, edbTypeList, edbAuth, this.SysUser.AdminId)
-	isEs := true
+	total, edbInfoList, err = elastic.SearchEdbInfoData(keyWord, startSize, pageSize, filterSource, source, frequency, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, collectEdbInfoIdList, edbTypeList, edbInfoType, edbAuth, this.SysUser.AdminId)
 
 	if err != nil {
 		edbInfoList = make([]*data_manage.EdbInfoList, 0)
@@ -1873,7 +1893,7 @@ func (this *EdbInfoController) EdbInfoFilterByEs() {
 			return
 		}
 
-		// 需要重新查一下指标的信息,主要是为了把是否授权字段找出来
+		// 因为是ES查找的,所以需要重新查一下指标的信息,主要是为了把是否授权字段找出来
 		{
 			edbInfoIdList := make([]int, 0)
 			for i := 0; i < edbInfoListLen; i++ {
@@ -3187,7 +3207,7 @@ func (this *EdbInfoController) AllEdbInfoByEs() {
 		keyWordArr = append(keyWordArr, newKeyWord...)
 
 		// 普通的搜索
-		total, edbInfoList, err = elastic.SearchEdbInfoData(keyWord, startSize, pageSize, filterSource, source, -1, frequency, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, []int{}, []int{1, 2, 3}, 0, this.SysUser.AdminId)
+		total, edbInfoList, err = elastic.SearchEdbInfoData(keyWord, startSize, pageSize, filterSource, source, frequency, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, []int{}, []int{1, 2}, -1, 0, this.SysUser.AdminId)
 		isEs = true
 	} else {
 		var condition string

+ 0 - 70
controllers/data_manage/edb_info_calculate.go

@@ -1068,76 +1068,6 @@ func (this *ChartInfoController) CalculateBatchReset() {
 	br.IsAddLog = true
 }
 
-//累计值转月值
-//func init() {
-//	fmt.Println("start CalculateBatchSave")
-//	req := new(data_manage.EdbInfoCalculateBatchSaveReq)
-//	req.EdbInfoId = 100282
-//
-//	randStr := utils.GetRandDigit(4)
-//	edbCode := `C` + time.Now().Format("060102") + randStr
-//	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
-//	uniqueCode := utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
-//	fromEdbInfo, _ := data_manage.GetEdbInfoById(req.EdbInfoId)
-//	data_manage.AddCalculateLjzzy(req, fromEdbInfo, edbCode, uniqueCode, 1, "rdluck")
-//	fmt.Println("end CalculateBatchSave")
-//	return
-//}
-
-////同比值
-//func init() {
-//	fmt.Println("start AddCalculateTbz")
-//	req := new(data_manage.EdbInfoCalculateBatchSaveReq)
-//	req.EdbInfoId = 100092
-//
-//	randStr := utils.GetRandDigit(4)
-//	edbCode := `C` + time.Now().Format("060102") + randStr
-//	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
-//	uniqueCode := utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
-//	fromEdbInfo, _ := data_manage.GetEdbInfoById(req.EdbInfoId)
-//
-//	data_manage.AddCalculateTbz(req, fromEdbInfo, edbCode, uniqueCode, 1, "rdluck")
-//	fmt.Println("end AddCalculateTbz")
-//	return
-//}
-//同差值
-
-//func init() {
-//	fmt.Println("start AddCalculateTbz")
-//	req := new(data_manage.EdbInfoCalculateBatchSaveReq)
-//	req.EdbInfoId = 100092
-//
-//	randStr := utils.GetRandDigit(4)
-//	edbCode := `C` + time.Now().Format("060102") + randStr
-//	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
-//	uniqueCode := utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
-//	fromEdbInfo, _ := data_manage.GetEdbInfoById(req.EdbInfoId)
-//
-//	data_manage.AddCalculateTcz(req, fromEdbInfo, edbCode, uniqueCode, 1, "rdluck")
-//
-//	fmt.Println("end AddCalculateTbz")
-//	return
-//}
-
-//N数值移动平均计算
-//func init() {
-//	fmt.Println("start AddCalculateTbz")
-//	req := new(data_manage.EdbInfoCalculateBatchSaveReq)
-//	req.FromEdbInfoId = 100081
-//
-//	randStr := utils.GetRandDigit(4)
-//	edbCode := `C` + time.Now().Format("060102") + randStr
-//	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
-//	uniqueCode := utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
-//	fromEdbInfo, _ := data_manage.GetEdbInfoById(req.FromEdbInfoId)
-//	formulaInt := 3
-//	fmt.Println("edbCode:", edbCode)
-//	data_manage.AddCalculateNszydpjjs(req, fromEdbInfo, edbCode, uniqueCode, 1, "rdluck", formulaInt)
-//
-//	fmt.Println("end AddCalculateTbz")
-//	return
-//}
-
 // ExecPythonCode
 // @Title 执行python代码
 // @Description 执行python代码接口

+ 0 - 13
controllers/data_manage/excel/custom_analysis_edb.go

@@ -461,16 +461,3 @@ func (c *CustomAnalysisController) EdbRefresh() {
 	br.Success = true
 	br.Msg = "刷新成功"
 }
-
-//func init() {
-//	excelInfo, err := excelModel.GetExcelInfoById(160)
-//	if err != nil {
-//		fmt.Println("查找excel失败:", err)
-//		return
-//	}
-//	_, err, _ = excel.GenerateExcelCustomAnalysisExcel(excelInfo)
-//	if err != nil {
-//		fmt.Println("生成excel失败:", err)
-//		return
-//	}
-//}

File diff suppressed because it is too large
+ 0 - 58
controllers/data_manage/excel/excel_info.go


+ 0 - 404
controllers/data_manage/future_good/future_good_edb_info.go

@@ -334,407 +334,3 @@ func (this *FutureGoodEdbInfoController) FutureGoodEdbExchangeList() {
 	br.Msg = "获取成功"
 	br.Data = list
 }
-
-//func init() {
-//	var condition string
-//	var pars []interface{}
-//
-//	condition += ` AND parent_id = ? `
-//	pars = append(pars, 0)
-//
-//	list, err := future_good2.GetFutureGoodEdbInfoList(condition, pars)
-//	if err != nil && !utils.IsErrNoRow(err) {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//
-//	monthMap := map[string]string{
-//		`(1月`:  "(Jan",
-//		`(2月`:  "(Feb",
-//		`(3月`:  "(Mar",
-//		`(4月`:  "(Apr",
-//		`(5月`:  "(May",
-//		`(6月`:  "(Jun",
-//		`(7月`:  "(Jul",
-//		`(8月`:  "(Aug",
-//		`(9月`:  "(Sep",
-//		`(10月`: "(Oct",
-//		`(11月`: "(Nov",
-//		`(12月`: "(Dec",
-//	}
-//	for _, v := range list {
-//		fmt.Println(v)
-//		var tmpCondition string
-//		var tmpPars []interface{}
-//
-//		tmpCondition += ` AND parent_id = ? `
-//		tmpPars = append(tmpPars, v.FutureGoodEdbInfoId)
-//		tmpList, tmpErr := future_good2.GetFutureGoodEdbInfoList(tmpCondition, tmpPars)
-//		if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
-//			fmt.Println("err:", tmpErr)
-//			return
-//		}
-//
-//		for _, child := range tmpList {
-//			child.FutureGoodEdbNameEn = strings.Replace(child.FutureGoodEdbNameEn, v.FutureGoodEdbName, v.FutureGoodEdbNameEn, -1)
-//
-//			for k, month := range monthMap {
-//				if strings.Contains(child.FutureGoodEdbNameEn, k) {
-//					child.FutureGoodEdbNameEn = strings.Replace(child.FutureGoodEdbNameEn, k, month, -1)
-//					fmt.Println(child.FutureGoodEdbNameEn)
-//					//os.Exit(-1)
-//					child.Update([]string{"FutureGoodEdbNameEn"})
-//				}
-//			}
-//		}
-//	}
-//
-//	fmt.Println("end")
-//}
-
-//func init() {
-//
-//	edbCodeMap := map[string]string{
-//		//"沪深300指数期货": "IF",
-//		//"上证50指数期货": "IH",
-//		//"中证500指数期货": "IC",
-//		//"中证1000指数期货": "IM",
-//		//"2年期国债期货": "TS",
-//		//"5年期国债期货": "TF",
-//		"10年期国债期货": "T",
-//	}
-//	//T03
-//	suffix := "M.CFE"
-//	monthList := []string{"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"}
-//	monthStrList := []string{"(1月)", "(2月)", "(3月)", "(4月)", "(5月)", "(6月)", "(7月)", "(8月)", "(9月)", "(10月)", "(11月)", "(12月)"}
-//
-//	for k, v := range edbCodeMap {
-//		code := v + "CFE"
-//		tmpFutureGoodEdbInfo := &future_good2.FutureGoodEdbInfo{
-//			//FutureGoodEdbInfoId: 0,
-//			FutureGoodEdbCode:   code,
-//			FutureGoodEdbName:   k,
-//			FutureGoodEdbNameEn: k,
-//			ParentId:            0,
-//			Exchange:            "中金所",
-//			Month:               0,
-//			StartDate:           "",
-//			EndDate:             "",
-//			MinValue:            0,
-//			MaxValue:            0,
-//			LatestValue:         0,
-//			//LatestDate:          time.Time{},
-//			ServerUrl:  "",
-//			CreateTime: time.Now(),
-//			ModifyTime: time.Now(),
-//		}
-//		err := future_good2.AddFutureGoodEdbInfo(tmpFutureGoodEdbInfo)
-//		if err != nil {
-//			fmt.Println("添加指标:", k, "失败,err:", err)
-//			continue
-//		}
-//
-//		for index, month := range monthList {
-//			code2 := v + month + suffix
-//			name := tmpFutureGoodEdbInfo.FutureGoodEdbName + monthStrList[index]
-//			tmpFutureGoodEdbInfo2 := &future_good2.FutureGoodEdbInfo{
-//				//FutureGoodEdbInfoId: 0,
-//				FutureGoodEdbCode:   code2,
-//				FutureGoodEdbName:   name,
-//				FutureGoodEdbNameEn: name,
-//				ParentId:            tmpFutureGoodEdbInfo.FutureGoodEdbInfoId,
-//				Exchange:            "中金所",
-//				Month:               0,
-//				StartDate:           "",
-//				EndDate:             "",
-//				MinValue:            0,
-//				MaxValue:            0,
-//				LatestValue:         0,
-//				//LatestDate:          time.Time{},
-//				ServerUrl:  "",
-//				CreateTime: time.Now(),
-//				ModifyTime: time.Now(),
-//			}
-//			err = future_good2.AddFutureGoodEdbInfo(tmpFutureGoodEdbInfo2)
-//			if err != nil {
-//				fmt.Println("添加子指标:", name, "失败,err:", err)
-//				continue
-//			}
-//		}
-//	}
-//
-//	fmt.Println("end")
-//}
-
-//func init() {
-//	var condition string
-//	var pars []interface{}
-//
-//	condition += ` AND parent_id > ? AND start_date= ? `
-//	pars = append(pars, 0, "0000-00-00")
-//
-//	list, err := future_good2.GetFutureGoodEdbInfoList(condition, pars)
-//	if err != nil && !utils.IsErrNoRow(err) {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//
-//	for _, v := range list {
-//		fmt.Println(v)
-//		resp, err := future_good.AddEdbData(v.FutureGoodEdbCode)
-//		if err != nil {
-//			fmt.Println(v.FutureGoodEdbName, "添加 异常 ,err:", err)
-//			continue
-//		}
-//		if resp.Ret != 200 {
-//			fmt.Println(v.FutureGoodEdbName, "添加 失败 ,msg:", resp.Msg, ";errMsg:", resp.ErrMsg)
-//		}
-//	}
-//
-//	fmt.Println("end")
-//}
-
-//func init() {
-//	var condition string
-//	var pars []interface{}
-//
-//	condition += ` AND parent_id = ? AND start_date= ? `
-//	pars = append(pars, 0, "0000-00-00")
-//
-//	list, err := future_good2.GetFutureGoodEdbInfoList(condition, pars)
-//	if err != nil && !utils.IsErrNoRow(err) {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//
-//	for _, v := range list {
-//		fmt.Println(v)
-//		//v.FutureGoodEdbCode = strings.Replace(v.FutureGoodEdbCode, ".", "ZL.", -1)
-//		//v.Update([]string{"FutureGoodEdbCode"})
-//		resp, err := future_good.AddEdbData(v.FutureGoodEdbCode)
-//		if err != nil {
-//			fmt.Println(v.FutureGoodEdbName, "添加 异常 ,err:", err)
-//			continue
-//		}
-//		if resp.Ret != 200 {
-//			fmt.Println(v.FutureGoodEdbName, "添加 失败 ,msg:", resp.Msg, ";errMsg:", resp.ErrMsg)
-//		}
-//	}
-//
-//	fmt.Println("end")
-//}
-
-// 添加海外交易所
-//func init() {
-//	exchangeName := `新加坡证券(SGX)`
-//	suffix := ".SGX"
-//	type TmpStruct struct {
-//		Name  string
-//		Code  string
-//		Year  int
-//		Month int
-//	}
-//	str := `TSI铁矿石指数	FEF	SGX	2612`
-//	list := make([]TmpStruct, 0)
-//
-//	strList := strings.Split(str, `
-//`)
-//	//fmt.Println(strList)
-//	for _, v := range strList {
-//		v = strings.TrimPrefix(v, "\t")
-//		tmp := strings.Split(v, `	`)
-//		fmt.Println(tmp)
-//
-//		year, err := strconv.Atoi(tmp[3][0:2])
-//		if err != nil {
-//			fmt.Println(err)
-//			return
-//		}
-//		//fmt.Println(year)
-//		month, err := strconv.Atoi(tmp[3][2:4])
-//		if err != nil {
-//			fmt.Println(err)
-//			return
-//		}
-//		//fmt.Println(month)
-//
-//		tmpStruct := TmpStruct{
-//			Name:  tmp[0],
-//			Code:  tmp[1],
-//			Year:  year,
-//			Month: month,
-//		}
-//		list = append(list, tmpStruct)
-//	}
-//
-//	//T03
-//	//suffix := ".CMX"
-//	//1、@CL0W.NMX[NYMEX美原油电子盘主力(持仓量)合约]
-//	//2、@CL23J.NMX[NYMEX美原油电子盘2304]
-//	//yearList := []int{2023, 2024, 2025, 2026, 2027, 2028}
-//	monthList := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
-//	startMonth := 3
-//	//endMonth := 5
-//
-//	monthCodeStrList := []string{"F", "G", "H", "J", "K", "M", "N", "Q", "U", "V", "X", "Z"}
-//	//monthStrList := []string{"(1月)", "(2月)", "(3月)", "(4月)", "(5月)", "(6月)", "(7月)", "(8月)", "(9月)", "(10月)", "(11月)", "(12月)"}
-//
-//	for k, v := range list {
-//		yearList := make([]int, 0)
-//		for i := 23; i <= v.Year; i++ {
-//			yearList = append(yearList, i+2000)
-//		}
-//		//fmt.Println(yearList)
-//		//return
-//		endMonth := v.Month
-//
-//		code := v.Code + `0W` + suffix
-//		tmpFutureGoodEdbInfo := &future_good2.FutureGoodEdbInfo{
-//			//FutureGoodEdbInfoId: 0,
-//			FutureGoodEdbCode:   code,
-//			FutureGoodEdbName:   v.Name,
-//			FutureGoodEdbNameEn: v.Name,
-//			ParentId:            0,
-//			RegionType:          `海外`,
-//			Exchange:            exchangeName,
-//			Year:                0,
-//			Month:               0,
-//			StartDate:           "",
-//			EndDate:             "",
-//			MinValue:            0,
-//			MaxValue:            0,
-//			LatestValue:         0,
-//			//LatestDate:          time.Time{},
-//			ServerUrl:  "",
-//			CreateTime: time.Now(),
-//			ModifyTime: time.Now(),
-//		}
-//		err := future_good2.AddFutureGoodEdbInfo(tmpFutureGoodEdbInfo)
-//		if err != nil {
-//			fmt.Println("添加指标:", k, "失败,err:", err)
-//			continue
-//		}
-//
-//		lastYearIndex := len(yearList) - 1
-//		for yearIndex, year := range yearList {
-//			for index, month := range monthList {
-//				// 如果第一年的开始月份早于约定的开始月份,那么就退出这个循环,进入下一个循环
-//				if yearIndex == 0 && month < startMonth {
-//					continue
-//				}
-//				// 如果最一年的结束月份晚于约定的开始月份,那么就退出这个循环,进入下一个循环
-//				if lastYearIndex == yearIndex && month > endMonth {
-//					break
-//				}
-//				monthStr := strconv.Itoa(month)
-//				if month < 10 {
-//					monthStr = `0` + monthStr
-//				}
-//				yearStr := strconv.Itoa(year - 2000)
-//				yearMonthStr := yearStr + monthStr
-//
-//				code2 := v.Code + yearStr + monthCodeStrList[index] + suffix
-//				name := tmpFutureGoodEdbInfo.FutureGoodEdbName + `(` + yearMonthStr + `)`
-//				tmpFutureGoodEdbInfo2 := &future_good2.FutureGoodEdbInfo{
-//					//FutureGoodEdbInfoId: 0,
-//					FutureGoodEdbCode:   code2,
-//					FutureGoodEdbName:   name,
-//					FutureGoodEdbNameEn: name,
-//					ParentId:            tmpFutureGoodEdbInfo.FutureGoodEdbInfoId,
-//					RegionType:          `海外`,
-//					Exchange:            exchangeName,
-//					Year:                year,
-//					Month:               month,
-//					StartDate:           "",
-//					EndDate:             "",
-//					MinValue:            0,
-//					MaxValue:            0,
-//					LatestValue:         0,
-//					//LatestDate:          time.Time{},
-//					ServerUrl:  "",
-//					CreateTime: time.Now(),
-//					ModifyTime: time.Now(),
-//				}
-//				err = future_good2.AddFutureGoodEdbInfo(tmpFutureGoodEdbInfo2)
-//				if err != nil {
-//					fmt.Println("添加子指标:", name, "失败,err:", err)
-//					continue
-//				}
-//			}
-//		}
-//
-//	}
-//
-//	fmt.Println("end")
-//}
-
-// 刷新海外交易所数据
-//func init() {
-//	var condition string
-//	var pars []interface{}
-//
-//	//condition += ` AND parent_id > ? AND start_date= ? `
-//	condition += ` AND region_type = ? AND start_date= ?  AND exchange = ? `
-//	pars = append(pars, "海外", "0000-00-00", "伦敦金属(LME)")
-//	//condition += ` AND region_type = ? AND start_date= ?  `
-//	//pars = append(pars, "海外", "0000-00-00")
-//
-//	list, err := future_good2.GetFutureGoodEdbInfoList(condition, pars)
-//	if err != nil && !utils.IsErrNoRow(err) {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//
-//	errIdList := make([]string, 0)
-//	for _, v := range list {
-//		fmt.Println(v)
-//		resp, err := future_good.AddEdbData(v.FutureGoodEdbCode)
-//		if err != nil {
-//			fmt.Println(v.FutureGoodEdbName, "添加 异常 ,err:", err)
-//			continue
-//		}
-//		if resp.Ret != 200 {
-//			errIdList = append(errIdList, fmt.Sprint(v.FutureGoodEdbInfoId))
-//			fmt.Println(v.FutureGoodEdbName, "添加 失败 ,msg:", resp.Msg, ";errMsg:", resp.ErrMsg)
-//		}
-//	}
-//
-//	fmt.Println("end")
-//	fmt.Println(strings.Join(errIdList, ","))
-//}
-
-// 刷新海外交易所数据
-//func init() {
-//	var condition string
-//	var pars []interface{}
-//
-//	//condition += ` AND parent_id > ? AND start_date= ? `
-//	condition += ` AND region_type = ? AND parent_id != 0 and future_good_edb_type = 1`
-//	pars = append(pars, "海外")
-//	//condition += ` AND region_type = ? AND start_date= ?  `
-//	//pars = append(pars, "海外", "0000-00-00")
-//
-//	list, err := future_good2.GetFutureGoodEdbInfoList(condition, pars)
-//	if err != nil && !utils.IsErrNoRow(err) {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	for _, v := range list {
-//		//fmt.Println(v.FutureGoodEdbName)
-//		tmpList := strings.Split(v.FutureGoodEdbName, "(")
-//		//fmt.Println(tmpList)
-//		//fmt.Println(tmpList[1])
-//		year, err := strconv.Atoi(tmpList[1][0:2])
-//		if err != nil {
-//			fmt.Println(err)
-//			return
-//		}
-//		v.Year = year + 2000
-//		err = v.Update([]string{"Year"})
-//		if err != nil {
-//			fmt.Println(err)
-//			return
-//		}
-//	}
-//	fmt.Println("end")
-//}

+ 0 - 27
controllers/data_manage/manual.go

@@ -627,30 +627,3 @@ func (this *ManualController) AllClassifyList() {
 	br.Msg = "获取成功"
 	br.Data = list
 }
-
-//func init() {
-//	fmt.Println("start")
-//	adminId:=137
-//	setList, err := data_manage.GetManualUserSetClassify(adminId)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	listLen := len(setList)
-//	classifyArr := make([]string, 0)
-//	for i := 0; i < listLen; i++ {
-//		classifyArr = append(classifyArr, strconv.Itoa(setList[i].ClassifyId))
-//	}
-//	classifyIdStr := strings.Join(classifyArr, ",")
-//	condition := ""
-//	if classifyIdStr != "" {
-//		condition += ` AND classify_id IN(` + classifyIdStr + `)`
-//	}
-//	items, err := data_manage.GetManualClassifyAllByCondition(condition)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	fmt.Println(items)
-//	fmt.Println("end")
-//}

+ 0 - 244
controllers/data_manage/multiple_graph_config.go

@@ -1598,247 +1598,3 @@ func (this *ChartInfoController) GetMultipleGraphConfig() {
 	br.Data = resp
 	br.IsAddLog = true
 }
-
-//	func init() {
-//		//correlationChart := new(data_manage.ChartInfoCorrelation)
-//
-//		condition := ` AND source = 3 `
-//		list, err := data_manage.GetChartListByCondition(condition, []interface{}{}, 0, 1000)
-//		if err != nil {
-//			fmt.Println("err:", err)
-//			return
-//		}
-//		timeNowFormat := time.Now().Format(utils.FormatDate)
-//		for _, v := range list {
-//			item, tmpErr := data_manage.GetMultipleGraphConfigChartMappingByChartIdAndSource(v.ChartInfoId)
-//			if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
-//				fmt.Println("tmpErr:", tmpErr)
-//				continue
-//			}
-//			if item == nil {
-//				correlationChart := new(data_manage.ChartInfoCorrelation)
-//				e := correlationChart.GetItemById(v.ChartInfoId)
-//				if e != nil {
-//					fmt.Println("获取历史配置失败:", e)
-//					continue
-//				}
-//				day, _ := utils.GetDaysBetween2Date(utils.FormatDate, timeNowFormat, correlationChart.StartDate.Format(utils.FormatDate))
-//				req := request.SaveMultipleGraphConfigReq{
-//					MultipleGraphConfigId: 0,
-//					EdbInfoIdA:            correlationChart.EdbInfoIdFirst,
-//					EdbInfoIdB:            correlationChart.EdbInfoIdSecond,
-//					Curve:                 data_manage.CurveConfig{},
-//					Correlation: data_manage.CorrelationConfig{
-//						LeadValue:      correlationChart.LeadValue,
-//						LeadUnit:       correlationChart.LeadUnit,
-//						CalculateValue: day,
-//						CalculateUnit:  "天",
-//					},
-//					RollingCorrelation: []data_manage.RollingCorrelationConfig{
-//						{}, {},
-//					},
-//				}
-//				curveStrByte, _ := json.Marshal(req.Curve)
-//				correlationStrByte, _ := json.Marshal(req.Correlation)
-//				rollingCorrelationStrByte, _ := json.Marshal(req.RollingCorrelation)
-//
-//				multipleGraphConfig := &data_manage.MultipleGraphConfig{
-//					//MultipleGraphConfigId: 0,
-//					EdbInfoIdA:         req.EdbInfoIdA,
-//					EdbInfoIdB:         req.EdbInfoIdB,
-//					Curve:              string(curveStrByte),
-//					Correlation:        string(correlationStrByte),
-//					RollingCorrelation: string(rollingCorrelationStrByte),
-//					SysUserId:          v.SysUserId,
-//					SysUserRealName:    v.SysUserRealName,
-//					ModifyTime:         v.ModifyTime,
-//					CreateTime:         v.CreateTime,
-//				}
-//				err = data_manage.AddMultipleGraphConfig(multipleGraphConfig)
-//
-//				if err != nil {
-//					fmt.Println(v.ChartInfoId, "创建配置失败:", err)
-//					continue
-//				}
-//
-//				multipleGraphConfigChartMapping := &data_manage.MultipleGraphConfigChartMapping{
-//					//Id:                    0,
-//					MultipleGraphConfigId: multipleGraphConfig.MultipleGraphConfigId,
-//					ChartInfoId:           v.ChartInfoId,
-//					Source:                2,
-//					ModifyTime:            time.Now(),
-//					CreateTime:            time.Now(),
-//				}
-//				err = data_manage.AddMultipleGraphConfigChartMapping(multipleGraphConfigChartMapping)
-//				if err != nil {
-//					fmt.Println(v.ChartInfoId, "保存配置与图表的关联关系失败:", err)
-//				}
-//
-//				correlationChart.CalculateUnit = "天"
-//				correlationChart.CalculateValue = day
-//				err = correlationChart.Update([]string{"CalculateUnit", "CalculateValue"})
-//				if err != nil {
-//					fmt.Println(v.ChartInfoId, "修复历史数据失败:", err)
-//				}
-//			}
-//		}
-//	}
-
-// 修复相关性图表与滚动相关性图表的强关联关系
-//func init() {
-//	condition := ` AND source =  ? `
-//	pars := []interface{}{utils.CHART_SOURCE_ROLLING_CORRELATION}
-//	list, err := data_manage.GetChartListByCondition(condition, pars, 0, 1000)
-//	if err != nil {
-//		fmt.Println("err:", err)
-//		return
-//	}
-//	for _, chartInfo := range list {
-//		multipleGraphConfigChartMapping, e := data_manage.GetMultipleGraphConfigChartMappingByChartId(chartInfo.ChartInfoId)
-//		if e != nil {
-//			fmt.Println(chartInfo.ChartInfoId, ";获取滚动相关性图表的配置信息失败, Err:"+e.Error())
-//			continue
-//		}
-//		baseChartMultipleGraphConfigChartMapping, e := data_manage.GetMultipleGraphConfigChartMappingByIdAndSource(multipleGraphConfigChartMapping.MultipleGraphConfigId, 2)
-//		if e != nil {
-//			fmt.Println(chartInfo.ChartInfoId, ";获取相关性图表的配置信息失败, Err:"+e.Error())
-//			continue
-//		}
-//		baseChartCorrelationChart := new(data_manage.ChartInfoCorrelation)
-//		if e := baseChartCorrelationChart.GetItemById(baseChartMultipleGraphConfigChartMapping.ChartInfoId); e != nil {
-//			fmt.Println(chartInfo.ChartInfoId, ";获取基础相关性图表信息失败, Err:"+e.Error())
-//			continue
-//		}
-//
-//		// 自己的配置
-//		selfChartCorrelationChart := new(data_manage.ChartInfoCorrelation)
-//		if e := selfChartCorrelationChart.GetItemById(chartInfo.ChartInfoId); e != nil {
-//			fmt.Println(chartInfo.ChartInfoId, ";获取自己的相关性图表信息失败, Err:"+e.Error())
-//			continue
-//		}
-//
-//		selfChartCorrelationChart.BaseCalculateUnit = baseChartCorrelationChart.CalculateUnit
-//		selfChartCorrelationChart.BaseCalculateValue = baseChartCorrelationChart.CalculateValue
-//		err = selfChartCorrelationChart.Update([]string{"BaseCalculateUnit", "BaseCalculateValue"})
-//		if err != nil {
-//			fmt.Println(chartInfo.ChartInfoId, ";更新相关性图表信息失败, Err:"+err.Error())
-//			continue
-//		}
-//	}
-//
-//}
-
-// 修复相关性图表与滚动相关性图表的强关联关系
-//func init() {
-//	{
-//		condition := ` AND source =  ? `
-//		pars := []interface{}{utils.CHART_SOURCE_ROLLING_CORRELATION}
-//		list, err := data_manage.GetChartListByCondition(condition, pars, 0, 1000)
-//		if err != nil {
-//			fmt.Println("err:", err)
-//			return
-//		}
-//		for _, chartInfo := range list {
-//			multipleGraphConfigChartMapping, e := data_manage.GetMultipleGraphConfigChartMappingByChartId(chartInfo.ChartInfoId)
-//			if e != nil {
-//				fmt.Println(chartInfo.ChartInfoId, ";获取滚动相关性图表的配置信息失败, Err:"+e.Error())
-//				continue
-//			}
-//			multipleGraphConfig, e := data_manage.GetMultipleGraphConfigById(multipleGraphConfigChartMapping.MultipleGraphConfigId)
-//			if e != nil {
-//				fmt.Println(chartInfo.ChartInfoId, ";获取相关性图表的配置信息失败, Err:"+e.Error())
-//				continue
-//			}
-//			var curveConf data_manage.CurveConfig
-//			e = json.Unmarshal([]byte(multipleGraphConfig.Curve), &curveConf)
-//			if e != nil {
-//				fmt.Println(chartInfo.ChartInfoId, ";格式化曲线图数据失败, Err:"+e.Error())
-//				continue
-//			}
-//
-//			// 自己的配置
-//			selfChartCorrelationChart := new(data_manage.ChartInfoCorrelation)
-//			if e := selfChartCorrelationChart.GetItemById(chartInfo.ChartInfoId); e != nil {
-//				fmt.Println(chartInfo.ChartInfoId, ";获取自己的相关性图表信息失败, Err:"+e.Error())
-//				continue
-//			}
-//
-//			selfChartCorrelationChart.DateType = curveConf.DateType
-//
-//			startDate, endDate := utils.GetDateByDateType(curveConf.DateType, curveConf.StartDate, curveConf.EndDate)
-//			if startDate != `` {
-//				startDateTime, e := time.ParseInLocation(utils.FormatDate, startDate, time.Local)
-//				if e != nil {
-//					fmt.Println(chartInfo.ChartInfoId, ";开始日期格式化失败,开始日期:", startDate, ", Err:"+e.Error())
-//					continue
-//				}
-//				selfChartCorrelationChart.StartDate = startDateTime
-//			}
-//			if endDate != `` {
-//				endDateTime, e := time.ParseInLocation(utils.FormatDate, endDate, time.Local)
-//				if e != nil {
-//					fmt.Println(chartInfo.ChartInfoId, ";开始日期格式化失败,开始日期:", startDate, ", Err:"+e.Error())
-//					continue
-//				}
-//				selfChartCorrelationChart.EndDate = endDateTime
-//			}
-//			err = selfChartCorrelationChart.Update([]string{"DateType", "StartDate", "EndDate"})
-//			if err != nil {
-//				fmt.Println(chartInfo.ChartInfoId, ";更新相关性图表信息失败, Err:"+err.Error())
-//				continue
-//			}
-//		}
-//
-//		fmt.Println("图表更新完成")
-//	}
-//
-//	{
-//		// 更新指标
-//		condition := ` AND source =  ? `
-//		pars := []interface{}{utils.DATA_SOURCE_CALCULATE_CORRELATION}
-//		list, err := data_manage.GetEdbInfoListV2ByCondition(condition, pars, 0, 10000)
-//		if err != nil {
-//			fmt.Println("err:", err)
-//			return
-//		}
-//		for _, edbInfo := range list {
-//			multipleGraphConfigEdbMappingInfo, e := data_manage.GetMultipleGraphConfigEdbMappingByEdbInfoId(edbInfo.EdbInfoId)
-//			if e != nil {
-//				fmt.Println(edbInfo.EdbInfoId, ";获取滚动相关性指标的配置信息失败, Err:"+e.Error())
-//				continue
-//			}
-//			multipleGraphConfig, e := data_manage.GetMultipleGraphConfigById(multipleGraphConfigEdbMappingInfo.MultipleGraphConfigId)
-//			if e != nil {
-//				fmt.Println(edbInfo.EdbInfoId, ";获取相关性图表的配置信息失败, Err:"+e.Error())
-//				continue
-//			}
-//
-//			// 曲线图配置
-//			var curveConf data_manage.CurveConfig
-//			e = json.Unmarshal([]byte(multipleGraphConfig.Curve), &curveConf)
-//			if e != nil {
-//				fmt.Println(edbInfo.EdbInfoId, ";格式化曲线图数据失败, Err:"+e.Error())
-//				continue
-//			}
-//
-//			var formulaConf request.EdbCalculateFormula
-//			e = json.Unmarshal([]byte(edbInfo.CalculateFormula), &formulaConf)
-//			if e != nil {
-//				fmt.Println(edbInfo.EdbInfoId, ";格式化指标计算配置数据失败, Err:"+e.Error())
-//				continue
-//			}
-//			formulaConf.DateType = curveConf.DateType
-//			formulaConf.StartDate = curveConf.StartDate
-//			formulaConf.EndDate = curveConf.EndDate
-//			calculateFormulaByte, err := json.Marshal(formulaConf)
-//			edbInfo.CalculateFormula = string(calculateFormulaByte)
-//			err = edbInfo.Update([]string{"CalculateFormula"})
-//			if err != nil {
-//				fmt.Println(edbInfo.EdbInfoId, ";更新指标信息失败, Err:"+err.Error())
-//				continue
-//			}
-//		}
-//
-//		fmt.Println("指标更新完成")
-//	}
-//}

+ 0 - 4
controllers/data_manage/my_chart.go

@@ -2250,10 +2250,6 @@ func (this *MyChartController) CompanyPublicClassifyList() {
 	br.Data = resp
 }
 
-//func init() {
-//	data.AddAllMyChartInfo()
-//}
-
 // ClassifyFrameworkNodeList
 // @Title 我的图表分类-关联的框架节点列表
 // @Description 我的图表分类-关联的框架节点列表

+ 2 - 2
controllers/data_manage/predict_edb_classify.go

@@ -138,7 +138,7 @@ func (this *PredictEdbClassifyController) Items() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-	rootList, err := data_manage.GetEdbClassifyByParentId(0, 1)
+	rootList, err := data_manage.GetEdbClassifyByParentId(0, utils.EdbClassifyTypePredict, this.SysUser.AdminId)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -701,7 +701,7 @@ func (this *PredictEdbClassifyController) SimpleList() {
 		sysUserId = this.SysUser.AdminId
 	}
 
-	rootList, err := data_manage.GetEdbClassifyByParentId(parentId, 1)
+	rootList, err := data_manage.GetEdbClassifyByParentId(parentId, utils.EdbClassifyTypePredict, this.SysUser.AdminId)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()

+ 1 - 1
controllers/data_manage/predict_edb_info.go

@@ -1104,7 +1104,7 @@ func (this *PredictEdbInfoController) FilterByEs() {
 		newKeyWord := strings.Split(keyWord, " ")
 		keyWordArr = append(keyWordArr, newKeyWord...)
 
-		total, edbInfoList, err = elastic.SearchEdbInfoData(keyWord, startSize, pageSize, filterSource, source, 1, frequency, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, []int{}, []int{3}, 0, this.SysUser.AdminId)
+		total, edbInfoList, err = elastic.SearchEdbInfoData(keyWord, startSize, pageSize, filterSource, source, frequency, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, []int{}, []int{1, 2}, 1, 0, this.SysUser.AdminId)
 
 		isEs = true
 	} else {

+ 1 - 1
controllers/data_manage/wind_data.go

@@ -28,7 +28,7 @@ func (this *EdbInfoController) WindClassify() {
 	// 增加标识判断是文件夹还是指标列表
 	parentId, _ := this.GetInt("ParentId")
 	// 特殊处理顶级分类
-	rootList, err := data_manage.GetEdbClassifyByParentId(parentId, 0)
+	rootList, err := data_manage.GetEdbClassifyByParentId(parentId, 0, 0)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()

+ 351 - 0
controllers/fix.go

@@ -0,0 +1,351 @@
+package controllers
+
+import (
+	"eta_gn/eta_api/models/data_manage"
+	"eta_gn/eta_api/services/data"
+	"eta_gn/eta_api/utils"
+	"fmt"
+	"sort"
+	"strconv"
+	"strings"
+	"time"
+)
+
+// init
+// @Description: 数据修复
+// @author: Roc
+// @datetime 2024-12-02 09:29:56
+func init() {
+	// ### 1、先修复分类完整路径
+	//initFixClassifyPath()
+
+	// ### 2、再修复个人分类、删除不存在指标的分类
+	// ### 2.1 数据加工
+	//initFixSelfClassify(utils.EdbClassifyTypeCalculate)
+
+	// ### 2.2 衍生指标
+	//initFixSelfClassify(utils.EdbClassifyTypePredict)
+}
+
+// initFixClassifyPath
+// @Description: 修复分类完整路径
+// @author: Roc
+// @datetime 2024-11-26 15:40:57
+func initFixClassifyPath() {
+	allList := make([]*data_manage.EdbClassifyItems, 0)
+	allList, e := data_manage.GetEdbClassifyByClassifyTypes([]int{utils.EdbClassifyTypeBase, utils.EdbClassifyTypePredict, utils.EdbClassifyTypeCalculate})
+	if e != nil {
+		fmt.Println("获取分类失败", e)
+		return
+	}
+
+	var sortList data_manage.EdbClassifyItemList
+
+	allList = data.GetClassifyTreeRecursive(allList, 0)
+	//根据sort值排序
+	sortList = allList
+	sort.Sort(sortList)
+
+	for _, v := range sortList {
+		updatePath(v, "", "")
+	}
+	fmt.Println("修复分类路径完成")
+}
+
+func updatePath(item *data_manage.EdbClassifyItems, classifyNamePath, classifyIdPath string) {
+	if classifyNamePath == `` {
+		classifyNamePath = item.ClassifyName
+		classifyIdPath = fmt.Sprint(item.ClassifyId)
+	} else {
+		classifyNamePath = fmt.Sprint(classifyNamePath, "|", item.ClassifyName)
+		classifyIdPath = fmt.Sprint(classifyIdPath, ",", item.ClassifyId)
+	}
+	err := data_manage.UpdateEdbClassify(item.ClassifyId, classifyNamePath, classifyIdPath)
+	if err != nil {
+		fmt.Println(item.ClassifyId, ";更新失败", err)
+	}
+	if item.Children != nil {
+		for _, v := range item.Children {
+			updatePath(v, classifyNamePath, classifyIdPath)
+		}
+	}
+}
+
+// initFixUserClassify
+// @Description: initFixUserClassify
+// @author: Roc
+// @datetime 2024-11-29 16:57:54
+func initFixSelfClassify(classifyType int) {
+	// 指标数据明细
+	condition := ` AND edb_info_type = 0 and edb_type = 2 `
+	if classifyType == utils.EdbClassifyTypePredict {
+		condition = ` AND edb_info_type = 1 `
+	}
+
+	pars := make([]interface{}, 0)
+	edbList, err := data_manage.GetEdbInfoListByCond(condition, pars)
+	if err != nil {
+		fmt.Println("查找指标加工数据失败", err.Error())
+		return
+	}
+
+	edbClassifyIdMap := make(map[int]bool)
+	classifyIdList := make([]int, 0)
+
+	edbUserMap := make(map[int]string)
+
+	for _, v := range edbList {
+		if _, ok := edbClassifyIdMap[v.ClassifyId]; !ok {
+			classifyIdList = append(classifyIdList, v.ClassifyId)
+			edbClassifyIdMap[v.ClassifyId] = true
+		}
+
+		edbUserMap[v.SysUserId] = v.SysUserRealName
+	}
+
+	// 获取所有数据加工的分类
+	classifyList, err := data_manage.GetAllEdbClassifyByType(classifyType)
+	if err != nil {
+		fmt.Println("获取数据加工分类失败", err.Error())
+		return
+	}
+
+	hasClassifyIdStrList := make([]string, 0)
+	for _, v := range classifyList {
+		// 判断当前分类id是否加到指标中,如果加进去了,那么才处理
+		_, ok := edbClassifyIdMap[v.ClassifyId]
+		if !ok {
+			continue
+		}
+		hasClassifyIdStrList = append(hasClassifyIdStrList, v.ClassifyIdPath)
+	}
+	classifyIdStrList := strings.Split(strings.Join(hasClassifyIdStrList, ","), ",")
+	classifyIdMap := make(map[string]bool)
+	for _, v := range classifyIdStrList {
+		classifyIdMap[v] = true
+	}
+	newClassifyList := make([]*data_manage.EdbClassifyItems, 0)
+	newClassifyMap := make(map[string]bool)
+	for _, v := range classifyList {
+		classifyIdStr := fmt.Sprint(v.ClassifyId)
+
+		// 是否在关联指标的map里面,如果不在的话,那么就过滤
+		_, ok := classifyIdMap[classifyIdStr]
+		if !ok {
+			continue
+		}
+
+		// 是否已经加到需要关联指标分类的map里面,如果已经在了,那么也过滤
+		_, ok = newClassifyMap[classifyIdStr]
+		if ok {
+			continue
+		}
+
+		newClassifyMap[classifyIdStr] = true
+		newClassifyList = append(newClassifyList, v)
+	}
+
+	rootList, err := data_manage.GetEdbClassifyByParentId(0, int8(classifyType), 0)
+	nodeAll := make([]*data_manage.EdbClassifyItems, 0)
+	for k := range rootList {
+		rootNode := rootList[k]
+		data.EdbClassifyItemsMakeTree(newClassifyList, rootNode)
+		nodeAll = append(nodeAll, rootNode)
+	}
+
+	// 创建新的分类
+	// [用户id][原分类id][新分类id]
+	userClassifyIdMap := make(map[int]map[int]int)
+	for userId, sysUserName := range edbUserMap {
+		classifyRelationMap := make(map[int]int)
+		for _, v := range nodeAll {
+			createNewClassify(userId, 0, 0, 0, sysUserName, ``, ``, v, classifyRelationMap)
+		}
+		userClassifyIdMap[userId] = classifyRelationMap
+	}
+
+	// ##### 第二步,指标数据迁移
+
+	// 指标数据迁移
+	for _, v := range edbList {
+		userClassifyMap, ok := userClassifyIdMap[v.SysUserId]
+		if !ok {
+			fmt.Println("找不到该用户所属的分类,userId:", v.SysUserId)
+			continue
+		}
+
+		newClassifyId, ok := userClassifyMap[v.ClassifyId]
+		if !ok {
+			fmt.Println("找不到该用户所属的分类,classifyId:", v.ClassifyId)
+			continue
+		}
+		// 开始迁移指标数据
+		err = data_manage.UpdateClassifyIdByEdbInfoId(v.EdbInfoId, newClassifyId)
+		if err != nil {
+			fmt.Println("指标数据迁移失败", err.Error())
+		}
+	}
+
+	// ##### 3、开始删除没有指标的分类
+	deleteNullClassify(classifyType)
+	return
+}
+
+func deleteNullClassify(classifyType int) {
+	// 指标列表数据
+	condition := ` AND edb_info_type = 0 and edb_type = 2 `
+	if classifyType == utils.EdbClassifyTypePredict {
+		condition = ` AND edb_info_type = 1 `
+	}
+
+	pars := make([]interface{}, 0)
+	edbList, err := data_manage.GetEdbInfoListByCond(condition, pars)
+	if err != nil {
+		fmt.Println("查找指标加工数据失败", err.Error())
+		return
+	}
+
+	edbClassifyIdMap := make(map[int]bool)
+	classifyIdList := make([]int, 0)
+
+	for _, v := range edbList {
+		if _, ok := edbClassifyIdMap[v.ClassifyId]; !ok {
+			classifyIdList = append(classifyIdList, v.ClassifyId)
+			edbClassifyIdMap[v.ClassifyId] = true
+		}
+	}
+
+	// 获取所有数据加工的分类
+	classifyList, err := data_manage.GetAllEdbClassifyByType(classifyType)
+	if err != nil {
+		fmt.Println("获取数据加工分类失败", err.Error())
+		return
+	}
+
+	// 存在指标的分类
+	hasEdbClassifyList := make([]*data_manage.EdbClassifyItems, 0)
+	for _, v := range classifyList {
+		if _, ok := edbClassifyIdMap[v.ClassifyId]; ok {
+			hasEdbClassifyList = append(hasEdbClassifyList, v)
+		}
+	}
+
+	// 待删除的分类id集合
+	deleteClassifyIdMap := make(map[int]int)
+	// 全部的分类id集合
+	for _, v := range classifyList {
+		deleteClassifyIdMap[v.ClassifyId] = v.ClassifyId
+	}
+
+	// 存在指标的的分类id集合
+	hasClassifyIdStrList := make([]string, 0)
+	for _, v := range hasEdbClassifyList {
+		hasClassifyIdStrList = append(hasClassifyIdStrList, v.ClassifyIdPath)
+	}
+	classifyIdStrList := strings.Split(strings.Join(hasClassifyIdStrList, ","), ",")
+	for _, v := range classifyIdStrList {
+		classifyId, err := strconv.Atoi(v)
+		if err != nil {
+			fmt.Println("分类字符串转int失败,", err.Error())
+			return
+		}
+		delete(deleteClassifyIdMap, classifyId)
+	}
+
+	// 删除空分类
+	if len(deleteClassifyIdMap) > 0 {
+		deleteClassifyIdList := make([]int, 0)
+		for _, v := range deleteClassifyIdMap {
+			deleteClassifyIdList = append(deleteClassifyIdList, v)
+		}
+
+		err = data_manage.DelEdbClassifyByIdList(deleteClassifyIdList)
+		if err != nil {
+			fmt.Println("删除空分类失败", err.Error())
+			return
+		}
+	}
+}
+
+// createNewClassify
+// @Description: 创建分类
+// @author: Roc
+// @datetime 2024-11-29 17:57:47
+// @param userId int
+// @param parentId int
+// @param rootId int
+// @param level int
+// @param sysUserName string
+// @param parentClassifyNamePath string
+// @param parentClassifyIdPath string
+// @param node *data_manage.EdbClassifyItems
+// @param classifyRelationMap map[int]int
+func createNewClassify(userId, parentId, rootId, level int, sysUserName, parentClassifyNamePath, parentClassifyIdPath string, node *data_manage.EdbClassifyItems, classifyRelationMap map[int]int) {
+	var classifyNamePath, classifyIdPath string
+
+	if parentId > 0 {
+		classifyNamePath = fmt.Sprint(parentClassifyNamePath, "|", node.ClassifyName)
+		classifyIdPath = fmt.Sprint(parentClassifyIdPath, ",")
+	} else {
+		classifyNamePath = node.ClassifyName
+	}
+
+	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
+	classifyInfo := &data_manage.EdbClassify{
+		//ClassifyId:      0,
+		ClassifyType:     node.ClassifyType,
+		ClassifyName:     node.ClassifyName,
+		ClassifyNameEn:   node.ClassifyNameEn,
+		ParentId:         parentId,
+		RootId:           rootId,
+		HasData:          1,
+		CreateTime:       time.Now(),
+		ModifyTime:       time.Now(),
+		SysUserId:        userId,
+		SysUserRealName:  sysUserName,
+		Level:            level + 1,
+		UniqueCode:       utils.MD5(utils.DATA_PREFIX + "_" + timestamp),
+		Sort:             node.Sort,
+		ClassifyNamePath: classifyNamePath,
+	}
+	err := data_manage.AddEdbClassify(classifyInfo)
+	if err != nil {
+		fmt.Println("创建分类失败:", err.Error())
+		return
+	}
+	// 更改分类id完整路径path
+	classifyInfo.ClassifyIdPath = fmt.Sprint(classifyIdPath, classifyInfo.ClassifyId)
+	_ = classifyInfo.Update([]string{"ClassifyIdPath"})
+
+	classifyRelationMap[node.ClassifyId] = classifyInfo.ClassifyId
+
+	if rootId <= 0 {
+		rootId = classifyInfo.ClassifyId
+	}
+	level = classifyInfo.Level
+
+	if node.Children == nil {
+		return
+	}
+	if len(node.Children) <= 0 {
+		return
+	}
+	for _, child := range node.Children {
+		createNewClassify(userId, parentId, rootId, level, sysUserName, classifyNamePath, classifyIdPath, child, classifyRelationMap)
+	}
+
+	return
+}
+
+// initEs
+// @Description: 修复ES中的指标和图表数据
+// @author: Roc
+// @datetime 2024-11-29 16:18:02
+func initEs() {
+	// 更新ES中的指标数据
+	data.AddOrEditAllEdbInfoToEs()
+	// 更新es中的图表数据
+	data.AddAllChartInfo()
+
+	fmt.Println("全部es数据修复完成")
+}

File diff suppressed because it is too large
+ 0 - 4
controllers/resource.go


+ 0 - 14
controllers/sys_admin.go

@@ -890,20 +890,6 @@ func (this *SysAdminController) Delete() {
 	br.Msg = "删除成功"
 }
 
-/*
-func init() {
-	fmt.Println("start")
-	pwdStr:=`11111`
-	//compile := `(\d+.*[^a-zA-Z]+){6,12}|([^a-zA-Z]+.*\d+){6,12}`
-	compile := `([0-9a-z]+){6,12}|(a-z0-9]+){6,12}`
-	///^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$/
-	///^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$/
-	reg := regexp.MustCompile(compile)
-	flag := reg.MatchString(pwdStr)
-	fmt.Println(flag)
-	fmt.Println("end")
-}*/
-
 // SetConfig
 // @Title 用户信息配置接口
 // @Description 用户信息配置接口

+ 37 - 6
models/data_manage/edb_classify.go

@@ -159,9 +159,14 @@ DELETE
 	return
 }
 
-func GetEdbClassifyByParentId(parentId int, classifyType int8) (items []*EdbClassifyItems, err error) {
+func GetEdbClassifyByParentId(parentId int, classifyType int8, sysUserId int) (items []*EdbClassifyItems, err error) {
 	o := global.DmSQL["data"]
-	sql := ` SELECT * FROM edb_classify WHERE parent_id=? AND classify_type = ?  order by sort asc,classify_id asc`
+	sql := ` SELECT * FROM edb_classify WHERE parent_id=? AND classify_type = ? `
+
+	if sysUserId > 0 {
+		sql += fmt.Sprintf(` AND sys_user_id = %d `, sysUserId)
+	}
+	sql += ` order by sort asc,classify_id asc `
 	err = o.Raw(sql, parentId, classifyType).Scan(&items).Error
 
 	return
@@ -209,8 +214,9 @@ func GetAllEdbClassifyByType(classifyType int) (items []*EdbClassifyItems, err e
 }
 
 type EdbClassifyItems struct {
-	ClassifyId       int `description:"分类id"`
-	EdbInfoId        int `description:"指标id"`
+	ClassifyId       int   `description:"分类id"`
+	EdbInfoId        int   `description:"指标id"`
+	ClassifyType     uint8 `description:"分类类型,0:普通指标分类,1:预测指标分类"`
 	ClassifyName     string
 	ClassifyNameEn   string
 	ParentId         int
@@ -229,6 +235,7 @@ type EdbClassifyItems struct {
 	Button           EdbClassifyItemsButton `gorm:"-" description:"操作权限"`
 	IsJoinPermission int                    `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
 	HaveOperaAuth    bool                   `description:"是否有数据权限"`
+	ClassifyIdPath   string                 `description:"分类的完整路径,格式为:父级ID,当前ID"`
 }
 
 type EdbClassifyIdItems struct {
@@ -518,9 +525,16 @@ func GetEdbClassifyRootIdsByClassifyIds(classifyIds []int) (items []int, err err
 }
 
 // GetChildEdbClassifyByClassifyType 根据类型获取非顶级分类
-func GetChildEdbClassifyByClassifyType(classifyType int) (items []*EdbClassifyItems, err error) {
+func GetChildEdbClassifyByClassifyType(classifyType, sysUserId int) (items []*EdbClassifyItems, err error) {
 	o := global.DmSQL["data"]
-	sql := `SELECT * FROM edb_classify WHERE parent_id <> 0 AND classify_type = ? ORDER BY sort ASC,classify_id ASC`
+	sql := `SELECT * FROM edb_classify WHERE parent_id <> 0 AND classify_type = ?`
+
+	if sysUserId > 0 {
+		sql += fmt.Sprintf(` AND sys_user_id = %d `, sysUserId)
+	}
+
+	sql += ` ORDER BY sort ASC,classify_id ASC `
+
 	err = o.Raw(sql, classifyType).Find(&items).Error
 	return
 }
@@ -620,3 +634,20 @@ func UpdateEdbClassify(classifyId int, classifyNamePath, classifyIdPath string)
 
 	return
 }
+
+// DelEdbClassifyByIdList
+// @Description: 根据id删除分类
+// @author: Roc
+// @datetime 2024-12-02 09:27:26
+// @param idList []int
+// @return err error
+func DelEdbClassifyByIdList(idList []int) (err error) {
+	num := len(idList)
+	if num <= 0 {
+		return
+	}
+	sql := `DELETE  FROM edb_classify  WHERE classify_id IN (?) `
+	err = global.DmSQL["data"].Exec(sql, idList).Error
+
+	return
+}

+ 14 - 0
models/data_manage/edb_info.go

@@ -410,6 +410,7 @@ type EdbInfoList struct {
 	IsSupplierStop        int                     `description:"是否供应商停更:1:停更,0:未停更"`
 	CollectClassifyIdList []int                   `description:"所属收藏分类id列表" gorm:"-"`
 	SharedUserIdList      []int                   `description:"共享用户id列表" gorm:"-"`
+	PublicStatus          int                     `description:"公开状态;0:未公开;1:审批中;2:已驳回;3:已公开"`
 }
 
 type EdbDataInsertConfigItem struct {
@@ -2038,3 +2039,16 @@ func GetIsJoinPermissionEdbInfoIdList(edbInfoType, edbType int) (list []int, err
 
 	return
 }
+
+// UpdateClassifyIdByEdbInfoId
+// @Description: 根据指标id更新所属分类id
+// @author: Roc
+// @datetime 2024-11-29 17:54:44
+// @param edbInfoId int
+// @param edbClassifyId int
+// @return err error
+func UpdateClassifyIdByEdbInfoId(edbInfoId, edbClassifyId int) (err error) {
+	sql := ` UPDATE edb_info SET classify_id = ? WHERE  edb_info_id=? `
+	err = global.DmSQL["data"].Exec(sql, edbClassifyId, edbInfoId).Error
+	return
+}

+ 8 - 0
services/data/edb_info.go

@@ -718,7 +718,15 @@ func AddOrEditEdbInfoToEs(edbInfoId int) {
 func AddOrEditAllEdbInfoToEs() {
 	//添加es
 	total, itemInfoList, _ := data_manage.GetEdbInfoFilterList("", []interface{}{}, 0, 100000)
+	obj := data_manage.EdbInfoShare{}
 	for k, itemInfo := range itemInfoList {
+		list, _ := obj.GetListByEdbInfoId(itemInfo.EdbInfoId)
+		sharedList := make([]int, 0)
+		for _, v := range list {
+			sharedList = append(sharedList, v.SysUserId)
+		}
+		itemInfo.SharedUserIdList = sharedList
+
 		elastic.EsAddOrEditEdbInfoData(utils.DATA_INDEX_NAME, strconv.Itoa(itemInfo.EdbInfoId), itemInfo)
 		fmt.Println("剩余", int(total)-k-1, "条指标数据")
 	}

+ 66 - 23
services/elastic/elastic.go

@@ -86,8 +86,27 @@ func EsAddOrEditEdbInfoData(indexName, docId string, item *data_manage.EdbInfoLi
 	return
 }
 
-// SearchEdbInfoData 查询es中的指标数据
-func SearchEdbInfoData(keywordStr string, from, size, filterSource, source int, edbInfoType int8, frequency string, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, collectEdbInfoIdList, edbTypeList []int, edbAuth, sysUserId int) (total int64, list []*data_manage.EdbInfoList, err error) {
+// SearchEdbInfoData
+// @Description: 查询es中的指标数据
+// @author: Roc
+// @datetime 2024-11-29 10:22:25
+// @param keywordStr string
+// @param from int
+// @param size int
+// @param filterSource int
+// @param source int
+// @param frequency string
+// @param noPermissionEdbInfoIdList []int
+// @param noPermissionEdbClassifyIdList []int
+// @param collectEdbInfoIdList []int
+// @param edbTypeList []int
+// @param edbInfoType int 指标类型,0:ETA指标库(基础指标+计算指标);1:预测指标
+// @param edbAuth int 指标权限范围,0-全部;1-我的;2-公共
+// @param sysUserId int
+// @return total int64
+// @return list []*data_manage.EdbInfoList
+// @return err error
+func SearchEdbInfoData(keywordStr string, from, size, filterSource, source int, frequency string, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, collectEdbInfoIdList, edbTypeList []int, edbInfoType, edbAuth, sysUserId int) (total int64, list []*data_manage.EdbInfoList, err error) {
 	indexName := utils.DATA_INDEX_NAME
 	list = make([]*data_manage.EdbInfoList, 0)
 	defer func() {
@@ -180,20 +199,19 @@ func SearchEdbInfoData(keywordStr string, from, size, filterSource, source int,
 		})
 	}
 
-	// 指标类型:普通指标、预测指标(小于0 代表不区分指标是普通还是预测)
-	if edbInfoType >= 0 {
+	// 指标类型:0-基础+计算;1-基础指标;2-计算指标;3-预测指标
+	if len(edbTypeList) > 0 {
 		mustMap = append(mustMap, map[string]interface{}{
-			"term": map[string]interface{}{
-				"EdbInfoType": edbInfoType,
+			"terms": map[string]interface{}{
+				"EdbType": edbTypeList,
 			},
 		})
 	}
 
-	// 指标类型:0-基础+计算;1-基础指标;2-计算指标;3-预测指标
-	if len(edbTypeList) > 0 {
+	if edbInfoType >= 0 {
 		mustMap = append(mustMap, map[string]interface{}{
-			"terms": map[string]interface{}{
-				"EdbType": edbTypeList,
+			"term": map[string]interface{}{
+				"EdbInfoType": edbInfoType,
 			},
 		})
 	}
@@ -224,20 +242,45 @@ func SearchEdbInfoData(keywordStr string, from, size, filterSource, source int,
 	}
 
 	// 指标与用户的权限匹配
-	if sysUserId > 0 {
+	{
 		shouldTermList := make([]map[string]interface{}, 0)
-		// 自己的指标
-		shouldTermList = append(shouldTermList, map[string]interface{}{
-			"term": map[string]interface{}{
-				"SysUserId": sysUserId,
-			},
-		})
-		// 分享给我的指标
-		shouldTermList = append(shouldTermList, map[string]interface{}{
-			"terms": map[string]interface{}{
-				"SharedUserIdList": []int{sysUserId},
-			},
-		})
+		//指标权限范围,0-全部;1-我的;2-公共
+		switch edbAuth {
+		case 1:
+			// 自己的指标
+			shouldTermList = append(shouldTermList, map[string]interface{}{
+				"term": map[string]interface{}{
+					"SysUserId": sysUserId,
+				},
+			})
+		case 2:
+			// 公开的指标
+			shouldTermList = append(shouldTermList, map[string]interface{}{
+				"term": map[string]interface{}{
+					"PublicStatus": 3,
+				},
+			})
+		default:
+			// 自己的指标
+			shouldTermList = append(shouldTermList, map[string]interface{}{
+				"term": map[string]interface{}{
+					"SysUserId": sysUserId,
+				},
+			})
+			// 分享给我的指标
+			shouldTermList = append(shouldTermList, map[string]interface{}{
+				"terms": map[string]interface{}{
+					"SharedUserIdList": []int{sysUserId},
+				},
+			})
+			// 公开的指标
+			//shouldTermList = append(shouldTermList,map[string]interface{}{
+			//	"term": map[string]interface{}{
+			//		"PublicStatus": 2,
+			//	},
+			//})
+
+		}
 		// 公开的指标
 		//shouldTermList = append(shouldTermList,map[string]interface{}{
 		//	"term": map[string]interface{}{

Some files were not shown because too many files changed in this diff