xyxie před 11 měsíci
rodič
revize
8dbb3732e8

+ 22 - 2
controllers/data_manage/excel/balance_table.go

@@ -13,6 +13,7 @@ import (
 	excelService "eta/eta_api/services/data/excel"
 	etaTrialService "eta/eta_api/services/eta_trial"
 	"eta/eta_api/utils"
+	"fmt"
 	"strconv"
 	"strings"
 	"time"
@@ -877,8 +878,27 @@ func (c *ExcelInfoController) AddStaticExcel() {
 		br.IsSendEmail = false
 		return
 	}
-
-	excelInfo, err, errMsg, isSendEmail := excelService.AddBalanceStaticExcel(req.ExcelInfoId, req.VersionName, sysUser, 0)
+	// 查询出每个子表的内容,并将内容转为静态版本
+	//查询动态表所有的子表,并复制为静态表
+	condition := " AND parent_id = ? AND balance_type = 0 "
+	var pars []interface{}
+	pars = append(pars, req.ExcelInfoId)
+	childExcelList, err := excel.GetExcelInfoListByCondition(condition, pars)
+	if err != nil {
+		br.Msg = "获取子表失败"
+		br.ErrMsg = fmt.Sprintf("获取子表失败 %s", err.Error())
+		return
+	}
+	for k, childExcelInfo := range childExcelList {
+		content, e := excelService.TransferBalanceExcelContentToStatic(childExcelInfo, "")
+		if e != nil {
+			br.Msg = "动态内容转成静态失败"
+			br.ErrMsg = fmt.Sprintf("动态内容转成静态失败 %s", e.Error())
+			return
+		}
+		childExcelList[k].Content = content
+	}
+	excelInfo, err, errMsg, isSendEmail := data.AddBalanceStaticExcel(req.ExcelInfoId, req.VersionName, sysUser, 0, req.ExcelInfoId, 1, childExcelList)
 	if err != nil {
 		br.Msg = "复制失败"
 		if errMsg != `` {

+ 2 - 2
models/data_manage/excel/excel_info.go

@@ -230,13 +230,13 @@ func GetNoContentExcelInfoListByCondition(condition string, pars []interface{},
 	return
 }
 
-func GetExcelInfoByCondition(condition string, pars []interface{}) (item *ExcelInfo, err error) {
+func GetExcelInfoListByCondition(condition string, pars []interface{}) (items []*ExcelInfo, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT * FROM excel_info WHERE 1=1 AND is_delete=0 `
 	if condition != "" {
 		sql += condition
 	}
-	err = o.Raw(sql, pars).QueryRow(&item)
+	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
 

+ 9 - 0
routers/commentsRouter.go

@@ -844,6 +844,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
+        beego.ControllerComments{
+            Method: "AddStaticExcel",
+            Router: `/excel_info/balance/static/add`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/excel:ExcelInfoController"],
         beego.ControllerComments{
             Method: "GetBaseEdbInfo",

+ 311 - 0
services/data/chart_info_excel_balance.go

@@ -1198,3 +1198,314 @@ func getBalanceDataListStartDateAndValue(dataList []*data_manage.EdbDataList) (s
 	}
 	return
 }
+
+// AddBalanceStaticExcel 另存为和存为静态表以及子表的复制都调用该接口
+func AddBalanceStaticExcel(oldExcelInfoId int, versionName string, sysUser *system.Admin, parentId, relExcelInfoId, balanceType int, childExcelList []*excelModel.ExcelInfo) (excelInfo *excelModel.ExcelInfo, err error, errMsg string, isSendEmail bool) {
+	isSendEmail = true
+
+	versionName = utils.TrimLRStr(versionName)
+
+	// 获取原ETA表格信息
+	oldExcelInfo, err := excelModel.GetExcelInfoById(oldExcelInfoId)
+	if err != nil {
+		errMsg = "获取ETA表格失败"
+		return
+	}
+
+	// todo 操作权限校验
+	{
+		// 数据权限
+		/*haveOperaAuth, tmpErr := data_manage_permission.CheckExcelPermissionByExcelInfoId(oldExcelInfo.ExcelInfoId, oldExcelInfo.ExcelClassifyId, oldExcelInfo.IsJoinPermission, sysUser.AdminId)
+		if err != nil {
+			errMsg = "获取ETA表格权限失败"
+			err = errors.New("获取ETA表格权限失败,Err:" + tmpErr.Error())
+			return
+		}
+
+		button := GetExcelInfoOpButton(sysUser, oldExcelInfo.SysUserId, oldExcelInfo.Source, haveOperaAuth)
+		if !button.CopyButton {
+			errMsg = "无操作权限"
+			err = errors.New(errMsg)
+			isSendEmail = false
+			return
+		}*/
+	}
+
+	// 检验分类下是否存在该表格名称
+	{
+		var condition string
+		var pars []interface{}
+		condition += " AND rel_excel_info_id=? "
+		pars = append(pars, oldExcelInfoId)
+
+		condition += " AND version_name=? "
+		pars = append(pars, versionName)
+
+		count, tmpErr := excelModel.GetExcelInfoCountByCondition(condition, pars)
+		if tmpErr != nil {
+			errMsg = "判断表格名称是否存在失败"
+			err = tmpErr
+			return
+		}
+		if count > 0 {
+			errMsg = "表格名称已存在,请重新填写表格名称"
+			err = errors.New(errMsg)
+			isSendEmail = false
+			return
+		}
+	}
+
+	// 表格信息
+	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
+	excelName := oldExcelInfo.ExcelName
+	if parentId == 0 {
+		excelName += "(" + versionName + ")"
+	}
+
+	// 处理表格内容, 静态表去除动态指标关联
+	content := oldExcelInfo.Content
+	excelInfo = &excelModel.ExcelInfo{
+		//ExcelInfoId:     0,
+		ExcelName:          excelName,
+		Source:             oldExcelInfo.Source,
+		ExcelType:          oldExcelInfo.ExcelType,
+		UniqueCode:         utils.MD5(utils.EXCEL_DATA_PREFIX + "_" + timestamp),
+		ExcelClassifyId:    oldExcelInfo.ExcelClassifyId,
+		SysUserId:          sysUser.AdminId,
+		SysUserRealName:    sysUser.RealName,
+		Content:            content,
+		ExcelImage:         oldExcelInfo.ExcelImage,
+		FileUrl:            oldExcelInfo.FileUrl,
+		ParentId:           parentId,
+		RelExcelInfoId:     relExcelInfoId,
+		VersionName:        versionName,
+		UpdateUserId:       sysUser.AdminId,
+		UpdateUserRealName: sysUser.AdminName,
+		BalanceType:        balanceType,
+		Sort:               0,
+		IsDelete:           0,
+		ModifyTime:         time.Now(),
+		CreateTime:         time.Now(),
+	}
+
+	excelEdbMappingList := make([]*excelModel.ExcelEdbMapping, 0)
+	if balanceType == 1 {
+		// 获取excel与指标的关系表
+		excelEdbMappingList, err = excelModel.GetAllExcelEdbMappingByExcelInfoId(excelInfo.ExcelInfoId)
+		if err != nil {
+			errMsg = "获取失败"
+			return
+		}
+		for k, v := range excelEdbMappingList {
+			v.ExcelEdbMappingId = 0
+			v.ExcelInfoId = 0
+			excelEdbMappingList[k] = v
+		}
+	}
+
+	var childExcel *excelModel.ExcelInfo
+	err = excelModel.AddExcelInfo(excelInfo, excelEdbMappingList, childExcel)
+	if err != nil {
+		errMsg = "保存失败"
+		return
+	}
+	if parentId == 0 && len(childExcelList) > 0 {
+		for _, childExcelInfo := range childExcelList {
+			_, err, errMsg, isSendEmail = AddBalanceStaticExcel(childExcelInfo.ExcelInfoId, "", sysUser, excelInfo.ExcelInfoId, relExcelInfoId, balanceType, []*excelModel.ExcelInfo{})
+			if err != nil {
+				return
+			}
+		}
+	} else if parentId > 0 {
+		// 如果复制的是动态表的子表,则同步复制关联的图表
+		// 查出所有的chart_list, 同步复制图表和图表指标
+		// 相关联指标
+		mappingListTmp, e := excelModel.GetExcelChartEdbMappingByExcelInfoId(oldExcelInfo.ExcelInfoId)
+		if e != nil {
+			errMsg = "获取图表指标失败"
+			err = fmt.Errorf(" 获取图表,指标信息失败 Err:%s", e.Error())
+			return
+		}
+		mappingListMap := make(map[int][]*excelModel.ExcelChartEdb, 0)
+		charInfoIds := make([]int, 0)
+		for k, _ := range mappingListTmp {
+			mappingListTmp[k].ExcelInfoId = excelInfo.ExcelInfoId
+			mappingListMap[mappingListTmp[k].ChartInfoId] = append(mappingListMap[mappingListTmp[k].ChartInfoId], mappingListTmp[k])
+		}
+		for k, _ := range mappingListMap {
+			charInfoIds = append(charInfoIds, k)
+		}
+		if len(charInfoIds) > 0 {
+			chartInfoList, e := data_manage.GetChartInfoViewByIdList(charInfoIds)
+			if e != nil {
+				errMsg = "获取失败"
+				err = fmt.Errorf(" 获取图表,指标信息失败 Err:%s", e.Error())
+				return
+			}
+			for _, chartInfo := range chartInfoList {
+				mappingList, ok := mappingListMap[chartInfo.ChartInfoId]
+				if !ok {
+					err = fmt.Errorf("未找到图表关联的指标信息")
+					return
+				}
+				err, errMsg, isSendEmail = CopyBalanceExcelChart(chartInfo, mappingList, versionName, sysUser)
+				if err != nil {
+					err = fmt.Errorf("复制图表失败 Err:%s", err.Error())
+					return
+				}
+			}
+		}
+	}
+	return
+}
+
+// CopyBalanceExcelChart 复制平衡表图表
+func CopyBalanceExcelChart(oldChartInfo *data_manage.ChartInfoView, oldChartEdbList []*excelModel.ExcelChartEdb, versionName string, sysUser *system.Admin) (err error, errMsg string, isSendEmail bool) {
+	chartEdbList := make([]*excelModel.AddChartEdbAndDataItem, 0)
+	if versionName != "" {
+		oldChartInfo.ChartName += "(" + versionName + ")"
+	}
+	for _, chartEdb := range oldChartEdbList {
+		excelEdb := new(excelModel.ExcelChartEdb)
+		excelEdb.EdbName = chartEdb.EdbName
+		if versionName != "" {
+			excelEdb.EdbName += "(" + versionName + ")"
+		}
+		randStr := utils.GetRandDigit(4)
+		excelEdb.EdbCode = `T` + time.Now().Format("060102150405") + "_" + randStr
+		excelEdb.ExcelInfoId = chartEdb.ExcelInfoId
+		excelEdb.DateSequence = chartEdb.DateSequence
+		excelEdb.DataSequence = chartEdb.DataSequence
+		excelEdb.SysUserId = sysUser.AdminId
+		excelEdb.SysUserRealName = sysUser.RealName
+		excelEdb.MaxData = chartEdb.MaxData
+		excelEdb.MinData = chartEdb.MinData
+		excelEdb.IsOrder = chartEdb.IsOrder
+		excelEdb.IsAxis = chartEdb.IsAxis
+		excelEdb.FromTag = chartEdb.FromTag
+		excelEdb.EdbInfoType = chartEdb.EdbInfoType
+		excelEdb.LeadValue = chartEdb.LeadValue
+		excelEdb.LeadUnit = chartEdb.LeadUnit
+		excelEdb.CreateTime = time.Now()
+		excelEdb.ModifyTime = time.Now()
+		var dateList []string
+		var dataList []float64
+		// todo 是否需要存储静态表的数据
+
+		// 处理日期列表和值列表
+		addItem := &excelModel.AddChartEdbAndDataItem{
+			ChartEdb: excelEdb,
+			DateList: dateList,
+			ValList:  dataList,
+		}
+		chartEdbList = append(chartEdbList, addItem)
+	}
+	chartInfo, err, errMsg, isSendEmail := copyBalanceExcelChart(oldChartInfo, sysUser.AdminId, sysUser.RealName)
+	if err != nil {
+		errMsg = "新增图表失败!"
+		err = fmt.Errorf("新增图表失败!%s, %s", errMsg, err.Error())
+		return
+	}
+	obj := new(excelModel.ExcelChartEdb)
+	err = obj.AddChartEdbAndData(chartEdbList, chartInfo, []int{})
+	if err != nil {
+		errMsg = "新增图表失败!"
+		err = fmt.Errorf("新增图表数据失败!%s", err.Error())
+		return
+	}
+	return
+}
+
+func copyBalanceExcelChart(oldChartInfo *data_manage.ChartInfoView, sysUserId int, sysUserRealName string) (chartInfo *data_manage.ChartInfo, err error, errMsg string, isSendEmail bool) {
+	isSendEmail = true // 默认错误的时候要发送邮件
+
+	oldChartInfo.ChartName = strings.Trim(oldChartInfo.ChartName, " ")
+	if oldChartInfo.ChartName == "" {
+		errMsg = "请填写图表名称!"
+		err = fmt.Errorf(errMsg)
+		isSendEmail = false
+		return
+	}
+	//判断图表是否存在
+	var condition string
+	var pars []interface{}
+
+	// 图表名称在不同图分类下不允许重复 需求调整时间:2022年11月07日09:47:07
+	condition += " AND chart_classify_id=0 "
+
+	condition += " AND chart_name=? AND source = ? "
+	pars = append(pars, oldChartInfo.ChartName, utils.CHART_SOURCE_BALANCE_EXCEL)
+
+	count, err := data_manage.GetChartInfoCountByCondition(condition, pars)
+	if err != nil {
+		errMsg = "判断图表名称是否存在失败"
+		err = fmt.Errorf("判断图表名称是否存在失败,Err:" + err.Error())
+		return
+	}
+
+	if count > 0 {
+		errMsg = "图表已存在,请重新填写"
+		err = fmt.Errorf("判断图表名称是否存在失败")
+		isSendEmail = false
+		return
+	}
+
+	chartInfo = new(data_manage.ChartInfo)
+	chartInfo.ChartName = oldChartInfo.ChartName
+	//chartInfo.EdbInfoIds = edbInfoIdStr
+	//chartInfo.ChartClassifyId = req.ChartClassifyId
+	chartInfo.SysUserId = sysUserId
+	chartInfo.SysUserRealName = sysUserRealName
+	chartInfo.CreateTime = time.Now()
+	chartInfo.ModifyTime = time.Now()
+	chartInfo.IsSetName = 0
+	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
+	chartInfo.UniqueCode = utils.MD5(utils.CHART_PREFIX + "_" + timestamp)
+
+	// todo 判断是否需要重新计算用户的start_date
+	chartInfo.DateType = oldChartInfo.DateType
+	chartInfo.ChartType = oldChartInfo.ChartType
+	chartInfo.Calendar = oldChartInfo.Calendar
+	/*	chartInfo.StartDate = req.StartDate
+		chartInfo.EndDate = req.EndDate
+		chartInfo.SeasonStartDate = req.StartDate
+		chartInfo.SeasonEndDate = req.EndDate*/
+	chartInfo.LeftMin = oldChartInfo.LeftMin
+	chartInfo.LeftMax = oldChartInfo.LeftMax
+	chartInfo.RightMin = oldChartInfo.RightMin
+	chartInfo.RightMax = oldChartInfo.RightMax
+	chartInfo.Right2Min = oldChartInfo.Right2Min
+	chartInfo.Right2Max = oldChartInfo.Right2Max
+	chartInfo.MinMaxSave = oldChartInfo.MinMaxSave
+	//chartInfo.Disabled = disableVal
+	//chartInfo.BarConfig = barChartConf
+	chartInfo.ExtraConfig = oldChartInfo.ExtraConfig
+	chartInfo.SeasonExtraConfig = oldChartInfo.SeasonExtraConfig
+	//chartInfo.StartYear = req.StartYear
+	chartInfo.Source = utils.CHART_SOURCE_BALANCE_EXCEL
+	chartInfo.ChartThemeId = oldChartInfo.ChartThemeId
+	chartInfo.SourcesFrom = oldChartInfo.SourcesFrom
+	/*	chartInfo.Instructions = req.Instructions
+		chartInfo.MarkersLines = req.MarkersLines
+		chartInfo.MarkersAreas = req.MarkersAreas
+		chartInfo.Unit = req.Unit
+		chartInfo.UnitEn = req.UnitEn*/
+	/*newId, err := data_manage.AddChartInfo(chartInfo)
+	if err != nil {
+		errMsg = `保存失败`
+		err = fmt.Errorf("保存失败,Err:" + err.Error())
+		return
+	}
+	chartInfo.ChartInfoId = int(newId)*/
+
+	//添加es数据
+	//go EsAddOrEditChartInfo(chartInfo.ChartInfoId)
+
+	return
+}
+
+// HandleBalanceExcelContentToStatic 将动态表的内容转化为静态表
+func HandleBalanceExcelContentToStatic(oldContent string) (content string, err error) {
+
+	return
+}

+ 47 - 87
services/data/excel/balance_table.go

@@ -6,7 +6,6 @@ import (
 	"eta/eta_api/models/data_manage"
 	excelModel "eta/eta_api/models/data_manage/excel"
 	"eta/eta_api/models/data_manage/excel/request"
-	"eta/eta_api/models/system"
 	"eta/eta_api/utils"
 	"fmt"
 	"github.com/xuri/excelize/v2"
@@ -466,111 +465,72 @@ func GetBalanceExcelChartSingle(chartInfo *data_manage.ChartInfoView, lang strin
 	return
 }
 
-// AddBalanceStaticExcel 另存为静态表
-func AddBalanceStaticExcel(oldExcelInfoId int, versionName string, sysUser *system.Admin, parentId int) (excelInfo *excelModel.ExcelInfo, err error, errMsg string, isSendEmail bool) {
-	isSendEmail = true
-
-	versionName = utils.TrimLRStr(versionName)
-
-	// 获取原ETA表格信息
-	oldExcelInfo, err := excelModel.GetExcelInfoById(oldExcelInfoId)
+// TransferBalanceExcelContentToStatic 将平衡表动态表的内容转换为静态表的格式
+func TransferBalanceExcelContentToStatic(excelDetail *excelModel.ExcelInfo, lang string) (newContent string, err error) {
+	var mixedTableReq request.MixedTableReq
+	err = json.Unmarshal([]byte(excelDetail.Content), &mixedTableReq)
 	if err != nil {
-		errMsg = "获取ETA表格失败"
+		err = errors.New("表格json转结构体失败,Err:" + err.Error())
 		return
 	}
 
-	// todo 操作权限校验
-	{
-		// 数据权限
-		/*haveOperaAuth, tmpErr := data_manage_permission.CheckExcelPermissionByExcelInfoId(oldExcelInfo.ExcelInfoId, oldExcelInfo.ExcelClassifyId, oldExcelInfo.IsJoinPermission, sysUser.AdminId)
+	cellRelationConf := mixedTableReq.CellRelation
+	//config := mixedTableReq.Data
+	// 单元格关系配置x信息
+	cellRelationConfMap := make(map[string]request.CellRelationConf)
+	cellRelationConfList := make([]request.CellRelationConf, 0)
+	cellRelationConfNewList := make([]request.CellRelationConf, 0)
+	if cellRelationConf != `` {
+		err = json.Unmarshal([]byte(cellRelationConf), &cellRelationConfList)
 		if err != nil {
-			errMsg = "获取ETA表格权限失败"
-			err = errors.New("获取ETA表格权限失败,Err:" + tmpErr.Error())
 			return
 		}
 
-		button := GetExcelInfoOpButton(sysUser, oldExcelInfo.SysUserId, oldExcelInfo.Source, haveOperaAuth)
-		if !button.CopyButton {
-			errMsg = "无操作权限"
-			err = errors.New(errMsg)
-			isSendEmail = false
-			return
-		}*/
-	}
-
-	// 检验分类下是否存在该表格名称
-	{
-		var condition string
-		var pars []interface{}
-		condition += " AND rel_excel_info_id=? "
-		pars = append(pars, oldExcelInfoId)
-
-		condition += " AND version_name=? "
-		pars = append(pars, versionName)
-
-		count, tmpErr := excelModel.GetExcelInfoCountByCondition(condition, pars)
-		if tmpErr != nil {
-			errMsg = "判断表格名称是否存在失败"
-			err = tmpErr
-			return
-		}
-		if count > 0 {
-			errMsg = "表格名称已存在,请重新填写表格名称"
-			err = errors.New(errMsg)
-			isSendEmail = false
-			return
+		for _, v := range cellRelationConfList {
+			if v.Type == request.EdbDT || v.Type == request.InsertDataDT || v.Type == request.PopInsertDataDT || v.Type == request.InsertEdbCalculateDataDT || v.Type == request.DateCalculateDataDT {
+				cellRelationConfNewList = append(cellRelationConfNewList, v)
+			}
 		}
 	}
 
-	// 表格信息
-	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
-	excelInfo = &excelModel.ExcelInfo{
-		//ExcelInfoId:     0,
-		ExcelName:          oldExcelInfo.ExcelName + "(" + versionName + ")",
-		Source:             oldExcelInfo.Source,
-		ExcelType:          oldExcelInfo.ExcelType,
-		UniqueCode:         utils.MD5(utils.EXCEL_DATA_PREFIX + "_" + timestamp),
-		ExcelClassifyId:    oldExcelInfo.ExcelClassifyId,
-		SysUserId:          sysUser.AdminId,
-		SysUserRealName:    sysUser.RealName,
-		Content:            oldExcelInfo.Content,
-		ExcelImage:         oldExcelInfo.ExcelImage,
-		FileUrl:            oldExcelInfo.FileUrl,
-		RelExcelInfoId:     oldExcelInfoId,
-		VersionName:        versionName,
-		UpdateUserId:       sysUser.AdminId,
-		UpdateUserRealName: sysUser.AdminName,
-		BalanceType:        1,
-		Sort:               0,
-		IsDelete:           0,
-		ModifyTime:         time.Now(),
-		CreateTime:         time.Now(),
+	cellRelationConfByte, err := json.Marshal(cellRelationConfNewList)
+	if err != nil {
+		err = fmt.Errorf("cellRelationConf json转结构体失败,Err:%s", err.Error())
+		return
 	}
+	cellRelationConf = string(cellRelationConfByte)
 
-	// 获取excel与指标的关系表
-	list, tmpErr := excelModel.GetAllExcelEdbMappingByExcelInfoId(excelInfo.ExcelInfoId)
+	newData, tmpErr, tmpErrMsg := GetMixedTableCellData(mixedTableReq)
 	if tmpErr != nil {
-		errMsg = "获取失败"
-		err = tmpErr
+		err = errors.New(tmpErrMsg + "获取最新的数据失败 ,Err:" + tmpErr.Error())
 		return
 	}
-	for k, v := range list {
-		v.ExcelEdbMappingId = 0
-		v.ExcelInfoId = 0
-		list[k] = v
+	for r, row := range newData {
+		for c, cell := range row {
+			// todo 系统日期类型,原先是不可编辑,转成静态表之后是否变成可编辑
+			cell.EdbInfoId = 0
+			if cell.DataType != request.FormulateCalculateDataDT { //除了公式计算,其他类型都转成自定义类型
+				cell.DataType = request.CustomTextDT //除了计算公式的关联关系被保留,其余绑定关系都删除
+				if _, ok := cellRelationConfMap[cell.Uid]; ok {
+					delete(cellRelationConfMap, cell.Uid)
+				}
+			}
+			if cell.DataTime != "" {
+				cell.DataTimeType = request.CustomDateT
+			}
+			cell.Value = cell.ShowValue
+			row[c] = cell
+		}
+		newData[r] = row
 	}
-	var childExcel *excelModel.ExcelInfo
-	err = excelModel.AddExcelInfo(excelInfo, list, childExcel)
+	var newMixedTableReq request.MixedTableReq
+	newMixedTableReq.CellRelation = cellRelationConf
+	newMixedTableReq.Data = newData
+	newMixedTableByte, err := json.Marshal(newMixedTableReq)
 	if err != nil {
-		errMsg = "保存失败"
+		err = fmt.Errorf("newData json转结构体失败,Err:%s", err.Error())
 		return
 	}
-	if parentId == 0 {
-		//查询动态表所有的子表,并复制为静态表
-
-	} else if parentId > 0 {
-		// 如果复制的是动态表的子表,则同步复制关联的图表
-
-	}
+	newContent = string(newMixedTableByte)
 	return
 }