|
@@ -4,6 +4,7 @@ import (
|
|
|
"encoding/json"
|
|
|
"errors"
|
|
|
"eta/eta_api/models/data_manage"
|
|
|
+ "eta/eta_api/models/data_manage/chart_theme"
|
|
|
excelModel "eta/eta_api/models/data_manage/excel"
|
|
|
"eta/eta_api/models/data_manage/excel/request"
|
|
|
"eta/eta_api/models/system"
|
|
@@ -83,7 +84,7 @@ func AddBalanceExcelChart(req request.AddBalanceTableChartReq, sysUser *system.A
|
|
|
return
|
|
|
}
|
|
|
obj := new(excelModel.ExcelChartEdb)
|
|
|
- err = obj.AddChartEdbAndData(chartEdbList, chartInfo)
|
|
|
+ err = obj.AddChartEdbAndData(chartEdbList, chartInfo, []int{})
|
|
|
if err != nil {
|
|
|
errMsg = "新增图表失败!"
|
|
|
err = fmt.Errorf("新增图表数据失败!%s", err.Error())
|
|
@@ -105,6 +106,14 @@ func addBalanceExcelChart(req request.AddBalanceTableChartReq, sysUserId int, sy
|
|
|
chartType := req.ChartType
|
|
|
extraConfig := req.ExtraConfig
|
|
|
// todo 查找默认主题设置
|
|
|
+ // 查找主题类型id
|
|
|
+ chartThemeType, err := chart_theme.GetChartThemeTypeByChartType(chartType)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "查找主题类型失败!"
|
|
|
+ err = fmt.Errorf("%s, %s", errMsg, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ chartThemeId := chartThemeType.DefaultChartThemeId
|
|
|
// 季节性图表额外配置信息
|
|
|
var seasonExtraConfig string
|
|
|
|
|
@@ -167,8 +176,6 @@ func addBalanceExcelChart(req request.AddBalanceTableChartReq, sysUserId int, sy
|
|
|
isSendEmail = false
|
|
|
return
|
|
|
}
|
|
|
- // todo 判断是否是禁用的图表
|
|
|
- // disableVal := data.CheckIsDisableChart(edbInfoIdArr)
|
|
|
|
|
|
chartInfo = new(data_manage.ChartInfo)
|
|
|
chartInfo.ChartName = req.ChartName
|
|
@@ -213,7 +220,275 @@ func addBalanceExcelChart(req request.AddBalanceTableChartReq, sysUserId int, sy
|
|
|
chartInfo.SeasonExtraConfig = seasonExtraConfig
|
|
|
//chartInfo.StartYear = req.StartYear
|
|
|
chartInfo.Source = utils.CHART_SOURCE_BALANCE_EXCEL
|
|
|
- // chartInfo.ChartThemeId = req.ChartThemeId
|
|
|
+ chartInfo.ChartThemeId = 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
|
|
|
+}
|
|
|
+
|
|
|
+// EditBalanceExcelChart 添加平衡表图表
|
|
|
+func EditBalanceExcelChart(req request.AddBalanceTableChartReq, sysUser *system.Admin) (chartInfo *data_manage.ChartInfo, err error, errMsg string, isSendEmail bool) {
|
|
|
+ // 获取表格信息
|
|
|
+ excelInfo, err := excelModel.GetExcelInfoById(req.ExcelInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "找不到该EXCEL"
|
|
|
+ err = fmt.Errorf("找不到该EXCEL!%s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if excelInfo.Source != utils.BALANCE_TABLE {
|
|
|
+ errMsg = "EXCEL类型错误!"
|
|
|
+ err = fmt.Errorf("EXCEL类型错误!")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(req.ChartEdbInfoList) == 0 {
|
|
|
+ errMsg = "图表数据不能为空!"
|
|
|
+ err = fmt.Errorf("图表数据不能为空!%s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询已有的mapping
|
|
|
+ mapping, err := excelModel.GetExcelChartEdbMappingByChartInfoId(req.ChartInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "查询图表mapping失败!"
|
|
|
+ err = fmt.Errorf("查询图表mapping失败!%s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ deleteMap := make(map[int]int)
|
|
|
+ for _, v := range mapping {
|
|
|
+ deleteMap[v.ExcelChartEdbId] = v.ExcelChartEdbId
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询edbIds
|
|
|
+ chartEdbList := make([]*excelModel.AddChartEdbAndDataItem, 0)
|
|
|
+ for _, chartEdb := range req.ChartEdbInfoList {
|
|
|
+ if _, ok := deleteMap[chartEdb.ExcelChartEdbId]; ok {
|
|
|
+ delete(deleteMap, chartEdb.ExcelChartEdbId)
|
|
|
+ }
|
|
|
+ excelChartEdbId := chartEdb.ExcelChartEdbId
|
|
|
+ excelEdb, tmpErr := excelModel.GetExcelChartEdbById(excelChartEdbId)
|
|
|
+ if tmpErr != nil {
|
|
|
+ if tmpErr.Error() == utils.ErrNoRow() {
|
|
|
+ errMsg = "指标不存在!"
|
|
|
+ err = errors.New("指标不存在,edbInfoId:" + strconv.Itoa(excelChartEdbId))
|
|
|
+ return
|
|
|
+ } else {
|
|
|
+ errMsg = "获取指标信息失败!"
|
|
|
+ err = errors.New("获取图表的指标信息失败,Err:" + tmpErr.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if excelEdb == nil {
|
|
|
+ errMsg = "指标已被删除,请重新选择!"
|
|
|
+ err = errors.New("指标不存在,ChartInfoId:" + strconv.Itoa(req.ChartInfoId))
|
|
|
+ return
|
|
|
+ } else {
|
|
|
+ if excelEdb.ExcelChartEdbId <= 0 {
|
|
|
+ errMsg = "指标已被删除,请重新选择!"
|
|
|
+ err = errors.New("指标不存在,ChartInfoId:" + strconv.Itoa(req.ChartInfoId))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ excelEdb.EdbName = chartEdb.EdbName
|
|
|
+ excelEdb.DateSequence = chartEdb.DateSequenceStr
|
|
|
+ excelEdb.DataSequence = chartEdb.DataSequenceStr
|
|
|
+ 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.ModifyTime = time.Now()
|
|
|
+ var dateList []string
|
|
|
+ var dataList []float64
|
|
|
+ if excelInfo.BalanceType == 1 {
|
|
|
+ // 如果是静态表,则直接使用前端传输的数据落到数据库里
|
|
|
+ /*dateList, dataList, err, errMsg = utils.HandleEdbSequenceVal(chartEdb.DateSequenceVal, chartEdb.DataSequenceVal)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "时间序列或数据序列异常!"
|
|
|
+ err = fmt.Errorf("时间序列或数据序列异常!%s", err.Error())
|
|
|
+ return
|
|
|
+ }*/
|
|
|
+ }
|
|
|
+
|
|
|
+ // 处理日期列表和值列表
|
|
|
+ addItem := &excelModel.AddChartEdbAndDataItem{
|
|
|
+ ChartEdb: excelEdb,
|
|
|
+ DateList: dateList,
|
|
|
+ ValList: dataList,
|
|
|
+ }
|
|
|
+ chartEdbList = append(chartEdbList, addItem)
|
|
|
+ }
|
|
|
+ chartInfo, err, errMsg, isSendEmail = editBalanceExcelChart(req)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "新增图表失败!"
|
|
|
+ err = fmt.Errorf("新增图表失败!%s, %s", errMsg, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ obj := new(excelModel.ExcelChartEdb)
|
|
|
+ //删除原先多余的指标
|
|
|
+ deleteEdbIds := make([]int, 0)
|
|
|
+ for k, _ := range deleteMap {
|
|
|
+ deleteEdbIds = append(deleteEdbIds, k)
|
|
|
+ }
|
|
|
+ err = obj.AddChartEdbAndData(chartEdbList, chartInfo, deleteEdbIds)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "新增图表失败!"
|
|
|
+ err = fmt.Errorf("新增图表数据失败!%s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func editBalanceExcelChart(req request.AddBalanceTableChartReq) (chartInfo *data_manage.ChartInfo, err error, errMsg string, isSendEmail bool) {
|
|
|
+ isSendEmail = true // 默认错误的时候要发送邮件
|
|
|
+ chartType := req.ChartType
|
|
|
+ extraConfig := req.ExtraConfig
|
|
|
+
|
|
|
+ chartInfo, err = data_manage.GetChartInfoById(req.ChartInfoId)
|
|
|
+ if err != nil {
|
|
|
+ if err.Error() == utils.ErrNoRow() {
|
|
|
+ errMsg = "图表已被删除,请刷新页面"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ isSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+ errMsg = "获取图表信息失败"
|
|
|
+ err = errors.New("获取图表信息失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // todo 查找默认主题设置
|
|
|
+ // todo 查找默认主题设置
|
|
|
+ // 查找主题类型id
|
|
|
+ chartThemeType, err := chart_theme.GetChartThemeTypeByChartType(chartType)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "查找主题类型失败!"
|
|
|
+ err = fmt.Errorf("%s, %s", errMsg, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ chartThemeId := chartThemeType.DefaultChartThemeId
|
|
|
+ // 季节性图表额外配置信息
|
|
|
+ var seasonExtraConfig string
|
|
|
+
|
|
|
+ if chartType == 2 {
|
|
|
+ // 处理季节性图表横轴配置
|
|
|
+ {
|
|
|
+ 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)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /*var extraConfigEdbInfoIdArr []int
|
|
|
+ extraConfigEdbInfoIdArr, err, errMsg = CheckChartExtraConfig(req.ChartType, req.ExtraConfig)
|
|
|
+ if err != nil {
|
|
|
+ err = errors.New("添加失败:" + err.Error())
|
|
|
+ return
|
|
|
+ }*/
|
|
|
+
|
|
|
+ // 图表额外配置
|
|
|
+ extraConfig, err, errMsg = HandleExtraConfig(chartType, extraConfig)
|
|
|
+ if err != nil {
|
|
|
+ if errMsg == `` {
|
|
|
+ errMsg = "指标异常!"
|
|
|
+ }
|
|
|
+ err = fmt.Errorf("指标异常!Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //判断图表是否存在
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ condition += " AND chart_info_id<>? "
|
|
|
+ pars = append(pars, req.ChartInfoId)
|
|
|
+ // 图表名称在不同图分类下不允许重复 需求调整时间:2022年11月07日09:47:07
|
|
|
+ condition += " AND chart_classify_id=0 "
|
|
|
+
|
|
|
+ condition += " AND chart_name=? AND source = ? "
|
|
|
+ pars = append(pars, req.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
|
|
|
+ }
|
|
|
+ // todo 判断是否是禁用的图表
|
|
|
+ // disableVal := data.CheckIsDisableChart(edbInfoIdArr)
|
|
|
+ chartInfo.ChartName = req.ChartName
|
|
|
+ //chartInfo.EdbInfoIds = edbInfoIdStr
|
|
|
+ //chartInfo.ChartClassifyId = req.ChartClassifyId
|
|
|
+ chartInfo.ModifyTime = time.Now()
|
|
|
+ chartInfo.IsSetName = 0
|
|
|
+ // 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_BALANCE_EXCEL
|
|
|
+ chartInfo.ChartThemeId = chartThemeId
|
|
|
chartInfo.SourcesFrom = req.SourcesFrom
|
|
|
/* chartInfo.Instructions = req.Instructions
|
|
|
chartInfo.MarkersLines = req.MarkersLines
|