|
@@ -28,7 +28,7 @@ import (
|
|
|
)
|
|
|
|
|
|
// ModifyChartInfoAndMapping 修改图表信息
|
|
|
-func ModifyChartInfoAndMapping(edbInfoIdStr string, req *chartInfoModel.SaveChartInfoReq, chartType int) (err error) {
|
|
|
+func ModifyChartInfoAndMapping(edbInfoIdStr string, req *chartInfoModel.SaveChartInfoReq, chartType int, chartEdbInfoList []*chartInfoModel.ChartSaveItem) (err error) {
|
|
|
// 开启事务
|
|
|
tx := global.MYSQL["data"].Begin()
|
|
|
defer func() {
|
|
@@ -51,9 +51,9 @@ func ModifyChartInfoAndMapping(edbInfoIdStr string, req *chartInfoModel.SaveChar
|
|
|
left_min = ?,
|
|
|
left_max = ?,
|
|
|
right_min = ?,
|
|
|
- right_max = ?
|
|
|
+ right_max = ?,extra_config = ?
|
|
|
WHERE chart_info_id = ?`
|
|
|
- err = tx.Exec(sql, edbInfoIdStr, req.DateType, req.StartDate, req.EndDate, req.LeftMin, req.LeftMax, req.RightMin, req.RightMax, req.ChartInfoId).Error
|
|
|
+ err = tx.Exec(sql, edbInfoIdStr, req.DateType, req.StartDate, req.EndDate, req.LeftMin, req.LeftMax, req.RightMin, req.RightMax, req.ExtraConfig, req.ChartInfoId).Error
|
|
|
} else {
|
|
|
sql := ` UPDATE chart_info
|
|
|
SET
|
|
@@ -65,49 +65,26 @@ func ModifyChartInfoAndMapping(edbInfoIdStr string, req *chartInfoModel.SaveChar
|
|
|
left_min = ?,
|
|
|
left_max = ?,
|
|
|
right_min = ?,
|
|
|
- right_max = ?
|
|
|
+ right_max = ?,extra_config = ?
|
|
|
WHERE chart_info_id = ?`
|
|
|
- err = tx.Exec(sql, edbInfoIdStr, req.Calendar, req.SeasonStartDate, req.SeasonEndDate, req.LeftMin, req.LeftMax, req.RightMin, req.RightMax, req.ChartInfoId).Error
|
|
|
+ err = tx.Exec(sql, edbInfoIdStr, req.Calendar, req.SeasonStartDate, req.SeasonEndDate, req.LeftMin, req.LeftMax, req.RightMin, req.RightMax, req.ExtraConfig, req.ChartInfoId).Error
|
|
|
}
|
|
|
if err != nil {
|
|
|
fmt.Println("UPDATE chart_info Err:", err.Error())
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- var edbInfoIdArr []string
|
|
|
- mapList := make([]*chartEdbMappingModel.ChartEdbMapping, 0)
|
|
|
- for _, v := range req.ChartEdbInfoList {
|
|
|
- edbInfoIdArr = append(edbInfoIdArr, strconv.Itoa(v.EdbInfoId))
|
|
|
- var count int
|
|
|
- csql := ` SELECT COUNT(1) AS count FROM chart_edb_mapping WHERE chart_info_id = ? AND edb_info_id = ? `
|
|
|
- err = tx.Raw(csql, req.ChartInfoId, v.EdbInfoId).Scan(&count).Error
|
|
|
- if err != nil {
|
|
|
+ // 修改图表关联指标
|
|
|
+ chartEdbMappingIdList := make([]string, 0)
|
|
|
+ for _, v := range chartEdbInfoList {
|
|
|
+ var tmpChartEdbMapping *chartEdbMappingModel.ChartEdbMapping
|
|
|
+ csql := `SELECT * FROM chart_edb_mapping WHERE chart_info_id=? AND edb_info_id=? AND source = ? `
|
|
|
+ err = tx.Raw(csql, req.ChartInfoId, v.EdbInfoId, utils.CHART_SOURCE_DEFAULT).First(&tmpChartEdbMapping).Error
|
|
|
+ if err != nil && err != utils.ErrNoRow {
|
|
|
fmt.Println("QueryRow Err:", err.Error())
|
|
|
return err
|
|
|
}
|
|
|
- if count > 0 {
|
|
|
- // 更新指标
|
|
|
- msql := `UPDATE chart_edb_mapping
|
|
|
- SET
|
|
|
- modify_time = NOW(),
|
|
|
- max_data = ?,
|
|
|
- min_data = ?,
|
|
|
- is_order = ?,
|
|
|
- is_axis = ?,
|
|
|
- edb_info_type = ?,
|
|
|
- lead_value = ?,
|
|
|
- lead_unit = ?,
|
|
|
- chart_style = ?,
|
|
|
- chart_color = ?,
|
|
|
- chart_width = ?
|
|
|
- WHERE chart_info_id =? AND edb_info_id=? `
|
|
|
-
|
|
|
- err = tx.Exec(msql, v.MaxData, v.MinData, v.IsOrder, v.IsAxis, v.EdbInfoType, v.LeadValue, v.LeadUnit, v.ChartStyle, v.ChartColor, v.ChartWidth, req.ChartInfoId, v.EdbInfoId).Error
|
|
|
- if err != nil {
|
|
|
- fmt.Println("chart_edb_mapping Err:" + err.Error())
|
|
|
- return err
|
|
|
- }
|
|
|
- } else {
|
|
|
+ if tmpChartEdbMapping == nil || tmpChartEdbMapping.ChartEdbMappingId == 0 {
|
|
|
mapItem := new(chartEdbMappingModel.ChartEdbMapping)
|
|
|
mapItem.ChartInfoId = req.ChartInfoId
|
|
|
mapItem.EdbInfoId = v.EdbInfoId
|
|
@@ -128,29 +105,47 @@ func ModifyChartInfoAndMapping(edbInfoIdStr string, req *chartInfoModel.SaveChar
|
|
|
mapItem.ChartStyle = v.ChartStyle
|
|
|
mapItem.ChartColor = v.ChartColor
|
|
|
mapItem.ChartWidth = v.ChartWidth
|
|
|
- mapList = append(mapList, mapItem)
|
|
|
- }
|
|
|
- }
|
|
|
+ mapItem.Source = utils.CHART_SOURCE_DEFAULT
|
|
|
+ err = tx.Create(mapItem).Error
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ chartEdbMappingIdList = append(chartEdbMappingIdList, strconv.Itoa(mapItem.ChartEdbMappingId))
|
|
|
+ } else {
|
|
|
+ chartEdbMappingIdList = append(chartEdbMappingIdList, strconv.Itoa(tmpChartEdbMapping.ChartEdbMappingId))
|
|
|
|
|
|
- // 批量新增指标
|
|
|
- if len(mapList) > 0 {
|
|
|
- err = tx.Create(mapList).Error
|
|
|
- if err != nil {
|
|
|
- fmt.Println("AddChartEdbMapping Err:" + err.Error())
|
|
|
- return err
|
|
|
+ tmpChartEdbMapping.ModifyTime = time.Now()
|
|
|
+ tmpChartEdbMapping.MaxData = v.MaxData
|
|
|
+ tmpChartEdbMapping.MinData = v.MinData
|
|
|
+ tmpChartEdbMapping.IsOrder = 0
|
|
|
+ if v.IsOrder {
|
|
|
+ tmpChartEdbMapping.IsOrder = 1
|
|
|
+ }
|
|
|
+ tmpChartEdbMapping.IsAxis = v.IsAxis
|
|
|
+ tmpChartEdbMapping.EdbInfoType = v.EdbInfoType
|
|
|
+ tmpChartEdbMapping.LeadValue = v.LeadValue
|
|
|
+ tmpChartEdbMapping.LeadUnit = v.LeadUnit
|
|
|
+ tmpChartEdbMapping.ChartStyle = v.ChartStyle
|
|
|
+ tmpChartEdbMapping.ChartColor = v.ChartColor
|
|
|
+ //tmpChartEdbMapping.PredictChartColor = v.PredictChartColor
|
|
|
+ tmpChartEdbMapping.ChartWidth = v.ChartWidth
|
|
|
+ err = tx.Model(tmpChartEdbMapping).Select([]string{"ModifyTime", "MaxData", "MinData", "IsOrder", "IsAxis", "EdbInfoType", "LeadValue", "LeadUnit", "ChartStyle", "ChartColor", "PredictChartColor", "ChartWidth"}).Updates(*tmpChartEdbMapping).Error
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("chart_edb_mapping Err:" + err.Error())
|
|
|
+ return err
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
// 清除原图表指标
|
|
|
- if len(edbInfoIdArr) > 0 {
|
|
|
- edbInfoIdStr := strings.Join(edbInfoIdArr, ",")
|
|
|
- if edbInfoIdStr != "" {
|
|
|
- dsql := `DELETE FROM chart_edb_mapping WHERE chart_info_id=? AND edb_info_id NOT IN(` + edbInfoIdStr + `)`
|
|
|
- err = tx.Exec(dsql, req.ChartInfoId).Error
|
|
|
- if err != nil {
|
|
|
- fmt.Println("delete err:" + err.Error())
|
|
|
- return err
|
|
|
- }
|
|
|
+ if len(chartEdbMappingIdList) > 0 {
|
|
|
+ chartEdbMappingIdStr := strings.Join(chartEdbMappingIdList, ",")
|
|
|
+ dsql := `DELETE FROM chart_edb_mapping WHERE chart_info_id=? AND chart_edb_mapping_id NOT IN(` + chartEdbMappingIdStr + `)`
|
|
|
+ err = tx.Exec(dsql).Error
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("delete err:" + err.Error())
|
|
|
+ return err
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1018,6 +1013,50 @@ func ChartInfoRefreshV2(chartInfoId int) (err error) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+// CheckChartExtraConfig 校验图表额外配置的信息,并且获取相关联的指标id
|
|
|
+func CheckChartExtraConfig(chartType int, extraConfigStr string) (edbIdList []int, err error, errMsg string) {
|
|
|
+ switch chartType {
|
|
|
+ case 10: //时间截面
|
|
|
+ var extraConfig request.TimeSectionReq
|
|
|
+ err = json.Unmarshal([]byte(extraConfigStr), &extraConfig)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断是否有配置日期序列
|
|
|
+ if len(extraConfig.SeriesList) <= 0 {
|
|
|
+ errMsg = `请配置序列`
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断是否有填写指标
|
|
|
+ if len(extraConfig.SeriesList[0].EdbInfoList) <= 0 {
|
|
|
+ errMsg = `请选择指标`
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 遍历指标列表获取指标id
|
|
|
+ edbIdMap := make(map[int]int)
|
|
|
+ for _, v := range extraConfig.SeriesList[0].EdbInfoList {
|
|
|
+ // X 轴的指标id
|
|
|
+ if _, ok := edbIdMap[v.XEdbInfoId]; !ok {
|
|
|
+ edbIdMap[v.XEdbInfoId] = v.XEdbInfoId
|
|
|
+ edbIdList = append(edbIdList, v.XEdbInfoId)
|
|
|
+ }
|
|
|
+
|
|
|
+ // Y 轴的指标id
|
|
|
+ if _, ok := edbIdMap[v.YEdbInfoId]; !ok {
|
|
|
+ edbIdMap[v.YEdbInfoId] = v.YEdbInfoId
|
|
|
+ edbIdList = append(edbIdList, v.YEdbInfoId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
// GetTimeSectionChartData 柱方图的数据处理
|
|
|
func GetTimeSectionChartData(mappingList []*chartEdbMappingModel.ChartEdbInfoMapping, edbDataListMap map[int][]*edbDataModel.EdbDataList, extraConfig request.TimeSectionReq) (edbIdList []int, chartDataResp request.TimeSectionInfoResp, err error) {
|
|
|
// 指标数据数组(10086:{"2022-12-02":100.01,"2022-12-01":102.3})
|