Browse Source

fix:指标删除时,校验是否添加到表格引用

Roc 1 year ago
parent
commit
af6e1984e6

+ 187 - 1
controllers/data_manage/excel/custom_analysis.go

@@ -9,6 +9,7 @@ import (
 	"eta/eta_api/models/data_manage/excel/response"
 	"eta/eta_api/services/data/excel"
 	"eta/eta_api/utils"
+	"fmt"
 	"strconv"
 	"strings"
 	"time"
@@ -522,4 +523,189 @@ func (c *CustomAnalysisController) ExcelDataList() {
 	br.Data = sheetList
 }
 
-// TODO 修改表格后,更新指标信息
+// FixTableData ETA1.0.2 自定义分析(生成指标数据修复)
+func FixTableData() {
+	// 获取一级分类
+	classifyList, err := excelModel.GetExcelClassifyByParentId(0, utils.EXCEL_DEFAULT)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		fmt.Println("数据修复失败,Err:" + err.Error())
+		return
+	}
+	timeTableMap := make(map[int]int)
+	mixTableMap := make(map[int]int)
+	for _, v := range classifyList {
+		// 时间序列表格
+		classify := &excelModel.ExcelClassify{
+			//ExcelClassifyId:   0,
+			ExcelClassifyName: v.ExcelClassifyName,
+			ParentId:          v.ParentId,
+			Source:            utils.TIME_TABLE,
+			SysUserId:         v.SysUserId,
+			SysUserRealName:   v.SysUserRealName,
+			Level:             v.Level,
+			UniqueCode:        utils.MD5(fmt.Sprint(v.UniqueCode, "_", utils.TIME_TABLE)),
+			Sort:              v.Sort,
+			CreateTime:        time.Now(),
+			ModifyTime:        time.Now(),
+		}
+		_, err = excelModel.AddExcelClassify(classify)
+		timeTableMap[v.ExcelClassifyId] = classify.ExcelClassifyId
+
+		// 混合表格
+		classify2 := &excelModel.ExcelClassify{
+			//ExcelClassifyId:   0,
+			ExcelClassifyName: v.ExcelClassifyName,
+			ParentId:          v.ParentId,
+			Source:            utils.MIXED_TABLE,
+			SysUserId:         v.SysUserId,
+			SysUserRealName:   v.SysUserRealName,
+			Level:             v.Level,
+			UniqueCode:        utils.MD5(fmt.Sprint(v.UniqueCode, "_", utils.MIXED_TABLE)),
+			Sort:              v.Sort,
+			CreateTime:        time.Now(),
+			ModifyTime:        time.Now(),
+		}
+		_, err = excelModel.AddExcelClassify(classify2)
+		mixTableMap[v.ExcelClassifyId] = classify2.ExcelClassifyId
+	}
+
+	// 修改时间序列表
+	{
+		// 获取时间序列表
+		timeTableExcelList, err := excelModel.GetNoContentExcelInfoAll(utils.TIME_TABLE)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			fmt.Println("获取时间序列表列表失败,Err:" + err.Error())
+			return
+		}
+
+		for _, v := range timeTableExcelList {
+			classifyId, ok := timeTableMap[v.ExcelClassifyId]
+			if !ok {
+				continue
+			}
+			excelModel.UpdateExcelInfoClassifyId(classifyId, v.ExcelInfoId)
+		}
+	}
+
+	// 修改混合序列表
+	{
+		// 获取时间序列表
+		mixTableExcelList, err := excelModel.GetNoContentExcelInfoAll(utils.MIXED_TABLE)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			fmt.Println("获取时间序列表列表失败,Err:" + err.Error())
+			return
+		}
+
+		for _, v := range mixTableExcelList {
+			classifyId, ok := mixTableMap[v.ExcelClassifyId]
+			if !ok {
+				continue
+			}
+			excelModel.UpdateExcelInfoClassifyId(classifyId, v.ExcelInfoId)
+		}
+	}
+
+	fmt.Println("完成数据修复")
+}
+
+// FixTableDataMapping ETA1.0.2 自定义分析(修复excel与指标的关系)
+func FixTableDataMapping() {
+
+	// 修改时间序列表
+	{
+		// 获取时间序列表
+		timeTableExcelList, err := excelModel.GetAllExcelInfoBySource(utils.TIME_TABLE)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			fmt.Println("获取时间序列表列表失败,Err:" + err.Error())
+			return
+		}
+
+		for _, v := range timeTableExcelList {
+
+			var tableData request.TableDataReq
+			err = json.Unmarshal([]byte(v.Content), &tableData)
+			if err != nil {
+				fmt.Println(v.ExcelInfoId, "json转结构体失败,Err:"+err.Error())
+				continue
+			}
+			if len(tableData.EdbInfoIdList) > 0 {
+				excelEdbMappingList := make([]*excelModel.ExcelEdbMapping, 0)
+				for _, edbInfoId := range tableData.EdbInfoIdList {
+					excelEdbMappingList = append(excelEdbMappingList, &excelModel.ExcelEdbMapping{
+						//ExcelEdbMappingId: 0,
+						ExcelInfoId: v.ExcelInfoId,
+						Source:      v.Source,
+						EdbInfoId:   edbInfoId,
+						CreateTime:  time.Now(),
+						ModifyTime:  time.Now(),
+					})
+				}
+				err = excelModel.AddExcelEdbMappingMulti(excelEdbMappingList)
+				if err != nil {
+					fmt.Println(v.ExcelInfoId, "自定义表格关系保存失败,Err:"+err.Error())
+					continue
+				}
+			}
+
+		}
+	}
+
+	//// 修改混合序列表
+	//{
+	//	// 获取时间序列表
+	//	mixTableExcelList, err := excelModel.GetAllExcelInfoBySource(utils.MIXED_TABLE)
+	//	if err != nil && err.Error() != utils.ErrNoRow() {
+	//		fmt.Println("获取时间序列表列表失败,Err:" + err.Error())
+	//		return
+	//	}
+	//
+	//	for _, excelInfo := range mixTableExcelList {
+	//		var result request.MixedTableReq
+	//		err = json.Unmarshal([]byte(excelInfo.Content), &result)
+	//		if err != nil {
+	//			fmt.Println(excelInfo.ExcelInfoId, "修改混合序列表,json转结构体失败,Err:"+err.Error())
+	//			continue
+	//		}
+	//		newResult, tmpErr := excel.GetMixedTableCellData(result.Data)
+	//		if tmpErr != nil {
+	//			fmt.Println(excelInfo.ExcelInfoId, "获取最新的数据失败,Err:"+err.Error())
+	//			continue
+	//		}
+	//		edbInfoIdList := make([]int, 0)
+	//		edbInfoIdMap := make(map[int]int)
+	//		for _, tmpV := range newResult {
+	//			for _, v := range tmpV {
+	//				if v.EdbInfoId > 0 {
+	//					if _, ok := edbInfoIdMap[v.EdbInfoId]; !ok {
+	//						edbInfoIdMap[v.EdbInfoId] = v.EdbInfoId
+	//						edbInfoIdList = append(edbInfoIdList, v.EdbInfoId)
+	//					}
+	//				}
+	//			}
+	//		}
+	//
+	//		if len(edbInfoIdList) > 0 {
+	//			excelEdbMappingList := make([]*excelModel.ExcelEdbMapping, 0)
+	//			for _, edbInfoId := range edbInfoIdList {
+	//				excelEdbMappingList = append(excelEdbMappingList, &excelModel.ExcelEdbMapping{
+	//					//ExcelEdbMappingId: 0,
+	//					ExcelInfoId: excelInfo.ExcelInfoId,
+	//					Source:      excelInfo.Source,
+	//					EdbInfoId:   edbInfoId,
+	//					CreateTime:  time.Now(),
+	//					ModifyTime:  time.Now(),
+	//				})
+	//			}
+	//			err = excelModel.AddExcelEdbMappingMulti(excelEdbMappingList)
+	//			if err != nil {
+	//				fmt.Println(excelInfo.ExcelInfoId, "混合表格关系保存失败,Err:"+err.Error())
+	//				continue
+	//			}
+	//		}
+	//
+	//	}
+	//
+	//}
+
+	fmt.Println("完成数据修复")
+}

+ 1 - 1
controllers/data_manage/excel/excel_classify.go

@@ -5,7 +5,7 @@ import (
 	"eta/eta_api/controllers"
 	"eta/eta_api/models"
 	"eta/eta_api/models/data_manage/excel"
-	"eta/eta_api/models/data_manage/request"
+	"eta/eta_api/models/data_manage/excel/request"
 	"eta/eta_api/models/data_manage/response"
 	excel2 "eta/eta_api/services/data/excel"
 	"eta/eta_api/utils"

+ 88 - 88
controllers/data_manage/excel/excel_info.go

@@ -7,7 +7,7 @@ import (
 	"eta/eta_api/models"
 	"eta/eta_api/models/data_manage"
 	excel3 "eta/eta_api/models/data_manage/excel"
-	"eta/eta_api/models/data_manage/request"
+	"eta/eta_api/models/data_manage/excel/request"
 	"eta/eta_api/models/data_manage/response"
 	"eta/eta_api/services/data"
 	excel2 "eta/eta_api/services/data/excel"
@@ -127,6 +127,9 @@ func (c *ExcelInfoController) Add() {
 		req.Source = 1
 	}
 	content := req.Content
+
+	// 引用的指标id
+	edbInfoIdList := make([]int, 0)
 	// 自定义表格
 	if req.Source == 2 {
 		jsonStrByte, err := json.Marshal(req.TableData)
@@ -149,6 +152,8 @@ func (c *ExcelInfoController) Add() {
 			br.ErrMsg = "自定义表格数据获取失败,Err:" + err.Error()
 			return
 		}
+		edbInfoIdList = tableDataConfig.EdbInfoIdList
+
 		contentByte, err := json.Marshal(tableDataConfig)
 		if err != nil {
 			br.Msg = "自定义表格数据获取失败"
@@ -167,6 +172,31 @@ func (c *ExcelInfoController) Add() {
 			return
 		}
 		content = string(contentByte)
+
+		var result request.MixedTableReq
+		err = json.Unmarshal(contentByte, &result)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "表格json转结构体失败,Err:" + err.Error()
+			return
+		}
+		newResult, tmpErr := excel2.GetMixedTableCellData(result.Data)
+		if tmpErr != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取最新的数据失败,Err:" + err.Error()
+			return
+		}
+		edbInfoIdMap := make(map[int]int)
+		for _, tmpV := range newResult {
+			for _, v := range tmpV {
+				if v.EdbInfoId > 0 {
+					if _, ok := edbInfoIdMap[v.EdbInfoId]; !ok {
+						edbInfoIdMap[v.EdbInfoId] = v.EdbInfoId
+						edbInfoIdList = append(edbInfoIdList, v.EdbInfoId)
+					}
+				}
+			}
+		}
 	}
 
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
@@ -187,7 +217,20 @@ func (c *ExcelInfoController) Add() {
 		CreateTime:      time.Now(),
 	}
 
-	err = excel3.AddExcelInfo(excelInfo)
+	excelEdbMappingList := make([]*excel3.ExcelEdbMapping, 0)
+	if len(edbInfoIdList) > 0 {
+		for _, edbInfoId := range edbInfoIdList {
+			excelEdbMappingList = append(excelEdbMappingList, &excel3.ExcelEdbMapping{
+				//ExcelEdbMappingId: 0,
+				//ExcelInfoId:       0,
+				Source:     excelInfo.Source,
+				EdbInfoId:  edbInfoId,
+				CreateTime: time.Now(),
+				ModifyTime: time.Now(),
+			})
+		}
+	}
+	err = excel3.AddExcelInfo(excelInfo, excelEdbMappingList)
 	if err != nil {
 		br.Msg = "保存失败"
 		br.ErrMsg = "保存失败,Err:" + err.Error()
@@ -504,6 +547,8 @@ func (c *ExcelInfoController) Edit() {
 		}
 	}
 
+	// 引用的指标id
+	edbInfoIdList := make([]int, 0)
 	content := req.Content
 	switch excelInfo.Source {
 	case 2: // 自定义表格
@@ -520,6 +565,7 @@ func (c *ExcelInfoController) Edit() {
 			br.ErrMsg = "自定义表格数据获取失败,json转结构体失败,Err:" + err.Error()
 			return
 		}
+		edbInfoIdList = tableData.EdbInfoIdList
 		tableDataConfig, err := excel2.GetTableDataConfig(tableData)
 		if err != nil {
 			br.Msg = "自定义表格数据获取失败"
@@ -541,6 +587,31 @@ func (c *ExcelInfoController) Edit() {
 			return
 		}
 		content = string(contentByte)
+
+		var result request.MixedTableReq
+		err = json.Unmarshal(contentByte, &result)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "表格json转结构体失败,Err:" + err.Error()
+			return
+		}
+		newResult, tmpErr := excel2.GetMixedTableCellData(result.Data)
+		if tmpErr != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取最新的数据失败,Err:" + err.Error()
+			return
+		}
+		edbInfoIdMap := make(map[int]int)
+		for _, tmpV := range newResult {
+			for _, v := range tmpV {
+				if v.EdbInfoId > 0 {
+					if _, ok := edbInfoIdMap[v.EdbInfoId]; !ok {
+						edbInfoIdMap[v.EdbInfoId] = v.EdbInfoId
+						edbInfoIdList = append(edbInfoIdList, v.EdbInfoId)
+					}
+				}
+			}
+		}
 	}
 
 	excelInfo.ModifyTime = time.Now()
@@ -552,7 +623,21 @@ func (c *ExcelInfoController) Edit() {
 
 	updateExcelInfoParams := []string{"ModifyTime", "ExcelName", "ExcelType", "ExcelClassifyId", "ExcelImage", "Content"}
 
-	err = excel3.EditExcelInfo(excelInfo, updateExcelInfoParams)
+	excelEdbMappingList := make([]*excel3.ExcelEdbMapping, 0)
+	if len(edbInfoIdList) > 0 {
+		for _, edbInfoId := range edbInfoIdList {
+			excelEdbMappingList = append(excelEdbMappingList, &excel3.ExcelEdbMapping{
+				//ExcelEdbMappingId: 0,
+				ExcelInfoId: excelInfo.ExcelInfoId,
+				Source:      excelInfo.Source,
+				EdbInfoId:   edbInfoId,
+				CreateTime:  time.Now(),
+				ModifyTime:  time.Now(),
+			})
+		}
+	}
+
+	err = excel3.EditExcelInfo(excelInfo, updateExcelInfoParams, excelEdbMappingList)
 	if err != nil {
 		br.Msg = "保存失败"
 		br.ErrMsg = "保存失败,Err:" + err.Error()
@@ -2055,88 +2140,3 @@ func decompressZip(src string) error {
 	}
 	return nil
 }
-
-// FixTableData ETA1.0.2 自定义分析(生成指标数据修复)
-func FixTableData() {
-	// 获取一级分类
-	classifyList, err := excel3.GetExcelClassifyByParentId(0, utils.EXCEL_DEFAULT)
-	if err != nil && err.Error() != utils.ErrNoRow() {
-		fmt.Println("数据修复失败,Err:" + err.Error())
-		return
-	}
-	timeTableMap := make(map[int]int)
-	mixTableMap := make(map[int]int)
-	for _, v := range classifyList {
-		// 时间序列表格
-		classify := &excel3.ExcelClassify{
-			//ExcelClassifyId:   0,
-			ExcelClassifyName: v.ExcelClassifyName,
-			ParentId:          v.ParentId,
-			Source:            utils.TIME_TABLE,
-			SysUserId:         v.SysUserId,
-			SysUserRealName:   v.SysUserRealName,
-			Level:             v.Level,
-			UniqueCode:        utils.MD5(fmt.Sprint(v.UniqueCode, "_", utils.TIME_TABLE)),
-			Sort:              v.Sort,
-			CreateTime:        time.Now(),
-			ModifyTime:        time.Now(),
-		}
-		_, err = excel3.AddExcelClassify(classify)
-		timeTableMap[v.ExcelClassifyId] = classify.ExcelClassifyId
-
-		// 混合表格
-		classify2 := &excel3.ExcelClassify{
-			//ExcelClassifyId:   0,
-			ExcelClassifyName: v.ExcelClassifyName,
-			ParentId:          v.ParentId,
-			Source:            utils.MIXED_TABLE,
-			SysUserId:         v.SysUserId,
-			SysUserRealName:   v.SysUserRealName,
-			Level:             v.Level,
-			UniqueCode:        utils.MD5(fmt.Sprint(v.UniqueCode, "_", utils.MIXED_TABLE)),
-			Sort:              v.Sort,
-			CreateTime:        time.Now(),
-			ModifyTime:        time.Now(),
-		}
-		_, err = excel3.AddExcelClassify(classify2)
-		mixTableMap[v.ExcelClassifyId] = classify2.ExcelClassifyId
-	}
-
-	// 修改时间序列表
-	{
-		// 获取时间序列表
-		timeTableExcelList, err := excel3.GetNoContentExcelInfoAll(utils.TIME_TABLE)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			fmt.Println("获取时间序列表列表失败,Err:" + err.Error())
-			return
-		}
-
-		for _, v := range timeTableExcelList {
-			classifyId, ok := timeTableMap[v.ExcelClassifyId]
-			if !ok {
-				continue
-			}
-			excel3.UpdateExcelInfoClassifyId(classifyId, v.ExcelInfoId)
-		}
-	}
-
-	// 修改混合序列表
-	{
-		// 获取时间序列表
-		mixTableExcelList, err := excel3.GetNoContentExcelInfoAll(utils.MIXED_TABLE)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			fmt.Println("获取时间序列表列表失败,Err:" + err.Error())
-			return
-		}
-
-		for _, v := range mixTableExcelList {
-			classifyId, ok := mixTableMap[v.ExcelClassifyId]
-			if !ok {
-				continue
-			}
-			excel3.UpdateExcelInfoClassifyId(classifyId, v.ExcelInfoId)
-		}
-	}
-
-	fmt.Println("完成数据修复")
-}

+ 21 - 2
models/data_manage/excel/excel_edb_mapping.go

@@ -17,7 +17,7 @@ type ExcelEdbMapping struct {
 
 // AddExcelEdbMappingMulti 批量添加excel与指标的关系
 func AddExcelEdbMappingMulti(items []*ExcelEdbMapping) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("data")
 	_, err = o.InsertMulti(len(items), items)
 	return
 }
@@ -65,7 +65,7 @@ type CalculateFormula struct {
 	DataSequenceStr string `json:"DataSequenceStr"`
 }
 
-// GetAllExcelEdbMappingItemByExcelInfoId 根据品种id获取所有的指标
+// GetAllExcelEdbMappingItemByExcelInfoId 根据品种id获取所有的指标结果集
 func GetAllExcelEdbMappingItemByExcelInfoId(excelInfoId int) (items []*ExcelEdbMappingItem, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT a.edb_info_id,a.unique_code,a.edb_name,a.classify_id,a.frequency,a.unit,calculate_formula FROM edb_info AS a 
@@ -74,3 +74,22 @@ func GetAllExcelEdbMappingItemByExcelInfoId(excelInfoId int) (items []*ExcelEdbM
 	_, err = o.Raw(sql, excelInfoId).QueryRows(&items)
 	return
 }
+
+// GetNoCustomAnalysisExcelEdbMappingCount 根据指标id获取非自定义分析的关联关系
+func GetNoCustomAnalysisExcelEdbMappingCount(edbInfoId int) (count int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT COUNT(1) AS count FROM excel_edb_mapping a 
+                          join excel_info b on a.excel_info_id=b.excel_info_id
+                          WHERE edb_info_id=? AND a.source != 4 AND b.is_delete = 0`
+	err = o.Raw(sql, edbInfoId).QueryRow(&count)
+	return
+}
+
+// GetAllExcelEdbMappingByExcelInfoId 根据品种id获取所有的指标
+func GetAllExcelEdbMappingByExcelInfoId(excelInfoId int) (items []*ExcelEdbMapping, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT b.* FROM  excel_edb_mapping a
+         WHERE a.excel_info_id = ? ORDER BY a.excel_edb_mapping_id ASC `
+	_, err = o.Raw(sql, excelInfoId).QueryRows(&items)
+	return
+}

+ 62 - 4
models/data_manage/excel/excel_info.go

@@ -49,22 +49,72 @@ type MyExcelInfoList struct {
 }
 
 // AddExcelInfo 新增表格
-func AddExcelInfo(excelInfo *ExcelInfo) (err error) {
-	o := orm.NewOrmUsingDB("data")
+func AddExcelInfo(excelInfo *ExcelInfo, excelEdbMappingList []*ExcelEdbMapping) (err error) {
+	o, err := orm.NewOrmUsingDB("data").Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = o.Rollback()
+		} else {
+			_ = o.Commit()
+		}
+	}()
 	// 表格信息入库
 	lastId, err := o.Insert(excelInfo)
 	if err != nil {
 		return
 	}
 	excelInfo.ExcelInfoId = int(lastId)
+
+	// excel与指标的关联关系
+	dataNum := len(excelEdbMappingList)
+	if dataNum > 0 {
+		for k, v := range excelEdbMappingList {
+			v.ExcelInfoId = excelInfo.ExcelInfoId
+			excelEdbMappingList[k] = v
+		}
+		_, err = o.InsertMulti(dataNum, excelEdbMappingList)
+	}
+
 	return
 }
 
 // EditExcelInfo 编辑表格
-func EditExcelInfo(excelInfo *ExcelInfo, updateExcelInfoParams []string) (err error) {
-	o := orm.NewOrmUsingDB("data")
+func EditExcelInfo(excelInfo *ExcelInfo, updateExcelInfoParams []string, excelEdbMappingList []*ExcelEdbMapping) (err error) {
+	o, err := orm.NewOrmUsingDB("data").Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = o.Rollback()
+		} else {
+			_ = o.Commit()
+		}
+	}()
+
 	// ETA表格信息变更
 	_, err = o.Update(excelInfo, updateExcelInfoParams...)
+	if err != nil {
+		return
+	}
+
+	// 删除关系表
+	sql := `DELETE FROM excel_edb_mapping WHERE excel_info_id=? `
+	_, err = o.Raw(sql, excelInfo.ExcelInfoId).Exec()
+
+	// excel与指标的关联关系
+	dataNum := len(excelEdbMappingList)
+	if dataNum > 0 {
+		for k, v := range excelEdbMappingList {
+			v.ExcelInfoId = excelInfo.ExcelInfoId
+			excelEdbMappingList[k] = v
+		}
+		_, err = o.InsertMulti(dataNum, excelEdbMappingList)
+	}
+
 	return
 }
 
@@ -88,6 +138,14 @@ func GetNoContentExcelInfoAll(source int) (items []*ExcelClassifyItems, err erro
 	return
 }
 
+// GetAllExcelInfoBySource 根据来源获取包含content的表格列表
+func GetAllExcelInfoBySource(source int) (items []*ExcelInfo, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT * FROM excel_info where is_delete=0  AND source = ?  ORDER BY sort asc,create_time desc `
+	_, err = o.Raw(sql, source).QueryRows(&items)
+	return
+}
+
 // GetExcelInfoById 根据id 获取eta表格详情
 func GetExcelInfoById(excelInfoId int) (item *ExcelInfo, err error) {
 	o := orm.NewOrmUsingDB("data")

+ 0 - 12
models/data_manage/excel/request/excel.go

@@ -1,17 +1,5 @@
 package request
 
-// AddExcelInfoReq 新增表格请求
-type AddExcelInfoReq struct {
-	ExcelInfoId     int         `description:"表格ID"`
-	ExcelName       string      `description:"表格名称"`
-	Source          int         `description:"表格来源,1:excel插件的表格,2:自定义表格,默认:1"`
-	ExcelType       int         `description:"表格类型,1:指标列,2:日期列,默认:1"`
-	ExcelImage      string      `description:"表格截图"`
-	ExcelClassifyId int         `description:"分类id"`
-	Content         string      `description:"Excel表格内容"`
-	TableData       interface{} `description:"自定义表格的数据内容"`
-}
-
 // SaveExcelInfoReq 编辑表格请求
 type SaveExcelInfoReq struct {
 	ExcelInfoId     int         `description:"表格ID"`

+ 0 - 0
models/data_manage/request/excel_classify.go → models/data_manage/excel/request/excel_classify.go


+ 0 - 0
models/data_manage/request/excel_info.go → models/data_manage/excel/request/excel_info.go


+ 1 - 1
models/data_manage/response/excel_info.go

@@ -2,7 +2,7 @@ package response
 
 import (
 	excel2 "eta/eta_api/models/data_manage/excel"
-	"eta/eta_api/models/data_manage/request"
+	"eta/eta_api/models/data_manage/excel/request"
 	"eta/eta_api/services/excel"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"time"

+ 1 - 1
services/data/excel/excel_info.go

@@ -5,7 +5,7 @@ import (
 	"errors"
 	"eta/eta_api/models/data_manage"
 	"eta/eta_api/models/data_manage/excel"
-	"eta/eta_api/models/data_manage/request"
+	"eta/eta_api/models/data_manage/excel/request"
 	"eta/eta_api/models/data_manage/response"
 	"eta/eta_api/models/system"
 	"eta/eta_api/services/data"

+ 15 - 1
services/data/excel/excel_op.go

@@ -142,7 +142,21 @@ func Copy(oldExcelInfoId, excelClassifyId int, excelName string, sysUser *system
 
 	// 如果不是自定义分析,那么直接加主表就好了
 	if excelInfo.Source != utils.CUSTOM_ANALYSIS_TABLE {
-		err = excelModel.AddExcelInfo(excelInfo)
+
+		// 获取excel与指标的关系表
+		list, tmpErr := excelModel.GetAllExcelEdbMappingByExcelInfoId(excelInfo.ExcelInfoId)
+		if tmpErr != nil {
+			errMsg = "获取失败"
+			err = tmpErr
+			return
+		}
+		for k, v := range list {
+			v.ExcelEdbMappingId = 0
+			v.ExcelInfoId = 0
+			list[k] = v
+		}
+
+		err = excelModel.AddExcelInfo(excelInfo, list)
 		if err != nil {
 			errMsg = "保存失败"
 		}

+ 1 - 1
services/excel/lucky_sheet.go

@@ -3,7 +3,7 @@ package excel
 import (
 	"encoding/json"
 	"errors"
-	"eta/eta_api/models/data_manage/request"
+	"eta/eta_api/models/data_manage/excel/request"
 	"eta/eta_api/utils"
 	"fmt"
 	"github.com/tealeg/xlsx"