|
@@ -1,17 +1,22 @@
|
|
package excel
|
|
package excel
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "encoding/json"
|
|
"eta/eta_api/models/data_manage"
|
|
"eta/eta_api/models/data_manage"
|
|
excelModel "eta/eta_api/models/data_manage/excel"
|
|
excelModel "eta/eta_api/models/data_manage/excel"
|
|
"eta/eta_api/models/data_manage/excel/request"
|
|
"eta/eta_api/models/data_manage/excel/request"
|
|
"eta/eta_api/models/system"
|
|
"eta/eta_api/models/system"
|
|
|
|
+ "eta/eta_api/services/data"
|
|
"eta/eta_api/utils"
|
|
"eta/eta_api/utils"
|
|
"fmt"
|
|
"fmt"
|
|
|
|
+ "sort"
|
|
|
|
+ "strconv"
|
|
|
|
+ "strings"
|
|
"time"
|
|
"time"
|
|
)
|
|
)
|
|
|
|
|
|
// AddBalanceTableChart 添加平衡表图表
|
|
// AddBalanceTableChart 添加平衡表图表
|
|
-func AddBalanceTableChart(req request.AddBalanceTableChartReq, sysUser *system.Admin) (err error, errMsg string) {
|
|
|
|
|
|
+func AddBalanceTableChart(req request.AddBalanceTableChartReq, sysUser *system.Admin) (chartInfo *data_manage.ChartInfo, err error, errMsg string, isSendEmail bool) {
|
|
// 获取表格信息
|
|
// 获取表格信息
|
|
excelInfo, err := excelModel.GetExcelInfoById(req.ExcelInfoId)
|
|
excelInfo, err := excelModel.GetExcelInfoById(req.ExcelInfoId)
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -69,7 +74,12 @@ func AddBalanceTableChart(req request.AddBalanceTableChartReq, sysUser *system.A
|
|
chartEdbList = append(chartEdbList, addItem)
|
|
chartEdbList = append(chartEdbList, addItem)
|
|
}
|
|
}
|
|
// todo 处理图表
|
|
// todo 处理图表
|
|
- chartInfo := new(data_manage.ChartInfo)
|
|
|
|
|
|
+ chartInfo, err, errMsg, isSendEmail = addBalanceTableChart(req, sysUser.AdminId, sysUser.RealName)
|
|
|
|
+ if err != nil {
|
|
|
|
+ errMsg += "新增图表失败!" + err.Error()
|
|
|
|
+ err = fmt.Errorf("新增图表失败!")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
obj := new(excelModel.ExcelChartEdb)
|
|
obj := new(excelModel.ExcelChartEdb)
|
|
err = obj.AddChartEdbAndData(chartEdbList, chartInfo)
|
|
err = obj.AddChartEdbAndData(chartEdbList, chartInfo)
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -80,3 +90,164 @@ func AddBalanceTableChart(req request.AddBalanceTableChartReq, sysUser *system.A
|
|
|
|
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+func addBalanceTableChart(req request.AddBalanceTableChartReq, sysUserId int, sysUserRealName string) (chartInfo *data_manage.ChartInfo, err error, errMsg string, isSendEmail bool) {
|
|
|
|
+ isSendEmail = true // 默认错误的时候要发送邮件
|
|
|
|
+
|
|
|
|
+ req.ChartName = strings.Trim(req.ChartName, " ")
|
|
|
|
+ if req.ChartName == "" {
|
|
|
|
+ errMsg = "请填写图表名称!"
|
|
|
|
+ err = fmt.Errorf(errMsg)
|
|
|
|
+ isSendEmail = false
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ chartType := req.ChartType
|
|
|
|
+ extraConfig := req.ExtraConfig
|
|
|
|
+ // 季节性图表额外配置信息
|
|
|
|
+ var seasonExtraConfig string
|
|
|
|
+ // 关联指标
|
|
|
|
+ var edbInfoIdArr []int
|
|
|
|
+
|
|
|
|
+ if len(req.ChartEdbList) <= 0 {
|
|
|
|
+ errMsg = "请选择指标!"
|
|
|
|
+ err = fmt.Errorf(errMsg)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if chartType == 2 {
|
|
|
|
+ /*existCount, tmpErr := data_manage.GetEdbDataQuarterCount(edbInfoId)
|
|
|
|
+ if tmpErr != nil {
|
|
|
|
+ errMsg = "保存失败"
|
|
|
|
+ err = fmt.Errorf("判断季节性图表,指标数据是否存在失败,Err:" + tmpErr.Error())
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if existCount <= 0 {
|
|
|
|
+ go data_manage.AddCalculateQuarter(edbInfoId, edbInfo.Source, edbInfo.EdbCode)
|
|
|
|
+ }*/
|
|
|
|
+
|
|
|
|
+ // 处理季节性图表横轴配置
|
|
|
|
+ {
|
|
|
|
+ if req.SeasonExtraConfig.XEndDate != "" {
|
|
|
|
+ if req.SeasonExtraConfig.XStartDate > req.SeasonExtraConfig.XEndDate && req.SeasonExtraConfig.JumpYear != 1 {
|
|
|
|
+ errMsg = "季节性图表配置信息异常:横坐标日期配置错误"
|
|
|
|
+ err = fmt.Errorf("季节性图表配置信息异常: 横坐标日期配置错误")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ seasonExtra, tErr := json.Marshal(req.SeasonExtraConfig)
|
|
|
|
+ if tErr != nil {
|
|
|
|
+ errMsg = "季节性图表配置信息异常"
|
|
|
|
+ err = fmt.Errorf("季节性图表配置信息异常,Err:" + tErr.Error())
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ seasonExtraConfig = string(seasonExtra)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 图表额外配置
|
|
|
|
+ extraConfig, err, errMsg = data.HandleExtraConfig(chartType, extraConfig)
|
|
|
|
+ if err != nil {
|
|
|
|
+ if errMsg == `` {
|
|
|
|
+ errMsg = "指标异常!"
|
|
|
|
+ }
|
|
|
|
+ err = fmt.Errorf("指标异常!Err:" + err.Error())
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ sort.Ints(edbInfoIdArr)
|
|
|
|
+ var edbInfoIdArrStr []string
|
|
|
|
+ for _, v := range edbInfoIdArr {
|
|
|
|
+ edbInfoIdArrStr = append(edbInfoIdArrStr, strconv.Itoa(v))
|
|
|
|
+ }
|
|
|
|
+ edbInfoIdStr := strings.Join(edbInfoIdArrStr, ",")
|
|
|
|
+
|
|
|
|
+ //判断图表是否存在
|
|
|
|
+ var condition string
|
|
|
|
+ var pars []interface{}
|
|
|
|
+
|
|
|
|
+ // 图表名称在不同图分类下不允许重复 需求调整时间:2022年11月07日09:47:07
|
|
|
|
+ //condition += " AND chart_classify_id=? "
|
|
|
|
+ //pars = append(pars, req.ChartClassifyId)
|
|
|
|
+
|
|
|
|
+ condition += " AND chart_name=? AND source = ? "
|
|
|
|
+ pars = append(pars, req.ChartName, utils.CHART_SOURCE_DEFAULT)
|
|
|
|
+
|
|
|
|
+ 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
|
|
|
|
+ }
|
|
|
|
+ // todo 判断是否是禁用的图表
|
|
|
|
+ // disableVal := data.CheckIsDisableChart(edbInfoIdArr)
|
|
|
|
+
|
|
|
|
+ chartInfo = new(data_manage.ChartInfo)
|
|
|
|
+ chartInfo.ChartName = req.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 = 3
|
|
|
|
+
|
|
|
|
+ if chartType == 0 {
|
|
|
|
+ chartType = 1
|
|
|
|
+ }
|
|
|
|
+ chartInfo.ChartType = chartType
|
|
|
|
+
|
|
|
|
+ calendar := req.Calendar
|
|
|
|
+ if calendar == "" {
|
|
|
|
+ calendar = "公历"
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ chartInfo.Calendar = calendar
|
|
|
|
+ /* chartInfo.StartDate = req.StartDate
|
|
|
|
+ chartInfo.EndDate = req.EndDate
|
|
|
|
+ chartInfo.SeasonStartDate = req.StartDate
|
|
|
|
+ chartInfo.SeasonEndDate = req.EndDate*/
|
|
|
|
+ chartInfo.LeftMin = req.LeftMin
|
|
|
|
+ chartInfo.LeftMax = req.LeftMax
|
|
|
|
+ chartInfo.RightMin = req.RightMin
|
|
|
|
+ chartInfo.RightMax = req.RightMax
|
|
|
|
+ chartInfo.Right2Min = req.Right2Min
|
|
|
|
+ chartInfo.Right2Max = req.Right2Max
|
|
|
|
+ chartInfo.MinMaxSave = req.MinMaxSave
|
|
|
|
+ //chartInfo.Disabled = disableVal
|
|
|
|
+ //chartInfo.BarConfig = barChartConf
|
|
|
|
+ chartInfo.ExtraConfig = extraConfig
|
|
|
|
+ chartInfo.SeasonExtraConfig = seasonExtraConfig
|
|
|
|
+ chartInfo.StartYear = req.StartYear
|
|
|
|
+ chartInfo.Source = utils.CHART_SOURCE_EXCEL_BALANCE
|
|
|
|
+ // chartInfo.ChartThemeId = req.ChartThemeId
|
|
|
|
+ chartInfo.SourcesFrom = req.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
|
|
|
|
+}
|