|
@@ -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
|
|
|
+}
|