Browse Source

预览数据变更

xyxie 9 months ago
parent
commit
cd4f65ca8c

+ 77 - 1
controllers/data_manage/excel/balance_table.go

@@ -783,7 +783,12 @@ func (c *ExcelInfoController) BalanceSeasonChartLegendPreview() {
 	}
 	newDataMap := make(map[int]float64)
 	for i, v := range req.DataArr {
-		newDataMap[i] = v
+		fv, e := strconv.ParseFloat(v, 64)
+		if e != nil {
+			br.Msg = "数据格式错误"
+			return
+		}
+		newDataMap[i] = fv
 	}
 	//组装成excelEdbData
 	dataList := make([]*data_manage.EdbDataList, 0)
@@ -823,3 +828,74 @@ func (c *ExcelInfoController) BalanceSeasonChartLegendPreview() {
 	br.Success = true
 	br.Msg = "操作成功"
 }
+
+// AddStaticExcel
+// @Title 新增静态表
+// @Description 新增静态表
+// @Param	request	body request.EditExcelInfoReq true "type json string"
+// @Success 200 {object} response.AddExcelInfoResp
+// @router /excel_info/balance/static/add [post]
+func (c *ExcelInfoController) AddStaticExcel() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+	sysUser := c.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	var req request.AddBalanceStaticExcelInfoReq
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.ExcelInfoId <= 0 {
+		br.Msg = "请传入ETA表格标识!"
+		return
+	}
+
+	cacheKey := "CACHE_TABLE_INFO_BALANCE_STATIC_ADD_" + strconv.Itoa(req.ExcelInfoId)
+	if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
+		br.Msg = "系统处理中,请稍后重试!"
+		br.ErrMsg = "系统处理中,请稍后重试!"
+		return
+	}
+	defer func() {
+		_ = utils.Rc.Delete(cacheKey)
+	}()
+
+	req.VersionName = strings.Trim(req.VersionName, " ")
+	if req.VersionName == "" {
+		br.Msg = "请填写版本名称!"
+		br.IsSendEmail = false
+		return
+	}
+
+	excelInfo, err, errMsg, isSendEmail := excelService.AddBalanceStaticExcel(req.ExcelInfoId, req.VersionName, sysUser)
+	if err != nil {
+		br.Msg = "复制失败"
+		if errMsg != `` {
+			br.Msg = errMsg
+		}
+		br.ErrMsg = "复制失败,Err:" + err.Error()
+		br.IsSendEmail = isSendEmail
+		return
+	}
+
+	resp := new(response.AddExcelInfoResp)
+	resp.ExcelInfoId = excelInfo.ExcelInfoId
+	resp.UniqueCode = excelInfo.UniqueCode
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "保存成功"
+	br.Data = resp
+	br.IsAddLog = true
+}

+ 7 - 1
models/data_manage/excel/request/balance_table.go

@@ -65,6 +65,12 @@ type AddBalanceTableChartReq struct {
 type BalanceSeasonChartLegendPreviewReq struct {
 	Calendar          string                      `description:"公历/农历"`
 	SeasonExtraConfig data_manage.SeasonExtraItem `description:"季节性图表中的配置,json数据"`
-	DataArr           []float64
+	DataArr           []string
 	DateArr           []string
 }
+
+// AddBalanceStaticExcelInfoReq 添加平衡表静态表
+type AddBalanceStaticExcelInfoReq struct {
+	ExcelInfoId int    `description:"ETA表格ID"`
+	VersionName string `description:"静态表版本名称"`
+}

+ 110 - 0
services/data/excel/balance_table.go

@@ -6,6 +6,7 @@ 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"
@@ -464,3 +465,112 @@ 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)
+	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)
+	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(),
+	}
+
+	// 获取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
+	}
+	var childExcel *excelModel.ExcelInfo
+	err = excelModel.AddExcelInfo(excelInfo, list, childExcel)
+	if err != nil {
+		errMsg = "保存失败"
+		return
+	}
+	if parentId == 0 {
+		//查询动态表所有的子表,并复制为静态表
+
+	} else if parentId > 0 {
+		// 如果复制的是动态表的子表,则同步复制关联的图表
+
+	}
+	return
+}