|
@@ -1,6 +1,7 @@
|
|
|
package models
|
|
|
|
|
|
import (
|
|
|
+ "errors"
|
|
|
"eta/eta_forum_hub/models/system"
|
|
|
"eta/eta_forum_hub/utils"
|
|
|
"fmt"
|
|
@@ -492,7 +493,7 @@ type YData struct {
|
|
|
UnitEn string `description:"英文单位名称"`
|
|
|
}
|
|
|
|
|
|
-func ModifyChartInfoAndMapping(edbInfoIdStr string, req *SaveChartInfoReq, chartType int) (err error) {
|
|
|
+func AddChartInfoAndMapping(chartInfo *ChartInfo, mapList []*ChartEdbMapping, updateExtraConfigFlag bool) (err error) {
|
|
|
o := orm.NewOrm()
|
|
|
to, err := o.Begin()
|
|
|
if err != nil {
|
|
@@ -505,132 +506,80 @@ func ModifyChartInfoAndMapping(edbInfoIdStr string, req *SaveChartInfoReq, chart
|
|
|
_ = to.Commit()
|
|
|
}
|
|
|
}()
|
|
|
-
|
|
|
- //非季节图
|
|
|
- if chartType != 2 {
|
|
|
- updateStr := `edb_info_ids=?,
|
|
|
- modify_time = NOW(),
|
|
|
- date_type=?,
|
|
|
- start_date=?,
|
|
|
- end_date=?,
|
|
|
- left_min=?,
|
|
|
- left_max=?,
|
|
|
- right_min=?,
|
|
|
- right_max=?,
|
|
|
- right2_min=?,
|
|
|
- right2_max=?,
|
|
|
- min_max_save=?,
|
|
|
- start_year=?`
|
|
|
- pars := []interface{}{edbInfoIdStr, req.DateType, req.StartDate, req.EndDate, req.LeftMin, req.LeftMax, req.RightMin, req.RightMax, req.Right2Min, req.Right2Max, req.MinMaxSave, req.StartYear}
|
|
|
- if req.ExtraConfig != `` {
|
|
|
- updateStr += `,extra_config=? `
|
|
|
- pars = append(pars, req.ExtraConfig)
|
|
|
+ newId, err := o.Insert(chartInfo)
|
|
|
+ if err != nil {
|
|
|
+ err = errors.New("保存失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ chartInfo.ChartInfoId = int(newId)
|
|
|
+ if len(mapList) > 0 {
|
|
|
+ for _, v := range mapList {
|
|
|
+ v.ChartInfoId = int(newId)
|
|
|
}
|
|
|
- pars = append(pars, req.ChartInfoId)
|
|
|
+ _, err = o.InsertMulti(len(mapList), mapList)
|
|
|
+ }
|
|
|
|
|
|
- sql := ` UPDATE chart_info SET ` + updateStr + ` WHERE chart_info_id = ?`
|
|
|
- _, err = to.Raw(sql, pars).Exec()
|
|
|
- if err != nil {
|
|
|
- fmt.Println("UPDATE chart_info Err:", err.Error())
|
|
|
- return err
|
|
|
- }
|
|
|
- } else {
|
|
|
- sql := ` UPDATE chart_info
|
|
|
- SET
|
|
|
- edb_info_ids=?,
|
|
|
- modify_time = NOW(),
|
|
|
- calendar=?,
|
|
|
- date_type=?,
|
|
|
- start_date=?,
|
|
|
- end_date=?,
|
|
|
- season_start_date=?,
|
|
|
- season_end_date=?,
|
|
|
- left_min=?,
|
|
|
- left_max=?,
|
|
|
- right_min=?,
|
|
|
- right_max=?,
|
|
|
- right2_min=?,
|
|
|
- right2_max=?,
|
|
|
- min_max_save=?,
|
|
|
- start_year=?
|
|
|
- WHERE chart_info_id = ?`
|
|
|
- _, err = to.Raw(sql, edbInfoIdStr, req.Calendar, req.DateType, req.StartDate, req.EndDate, req.StartDate, req.EndDate, req.LeftMin, req.LeftMax, req.RightMin, req.RightMax, req.Right2Min, req.Right2Max, req.MinMaxSave, req.StartYear, req.ChartInfoId).Exec()
|
|
|
+ //更新图表的特殊字段
|
|
|
+ if updateExtraConfigFlag {
|
|
|
+ _, err = o.Update(chartInfo, []string{"ExtraConfig", "BarConfig"}...)
|
|
|
if err != nil {
|
|
|
- fmt.Println("UPDATE chart_info Err:", err.Error())
|
|
|
- return err
|
|
|
+ err = errors.New("保存图表配置失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
}
|
|
|
}
|
|
|
+ return
|
|
|
+}
|
|
|
|
|
|
- var edbInfoIdArr []string
|
|
|
- mapList := make([]*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 = to.Raw(csql, req.ChartInfoId, v.EdbInfoId).QueryRow(&count)
|
|
|
+func ModifyChartInfoAndMapping(chartInfo *ChartInfo, addMapList []*ChartEdbMapping, updateMapList []*ChartEdbMapping, removeIdStr string, updateExtraConfigFlag bool) (err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ to, err := o.Begin()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
if err != nil {
|
|
|
- fmt.Println("QueryRow Err:", err.Error())
|
|
|
- return err
|
|
|
+ _ = to.Rollback()
|
|
|
+ } else {
|
|
|
+ _ = to.Commit()
|
|
|
}
|
|
|
- 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 = ?,
|
|
|
- predict_chart_color = ?,
|
|
|
- chart_width = ?
|
|
|
- WHERE chart_info_id =? AND edb_info_id=? `
|
|
|
- _, err = to.Raw(msql, v.MaxData, v.MinData, v.IsOrder, v.IsAxis, v.EdbInfoType, v.LeadValue, v.LeadUnit, v.ChartStyle, v.ChartColor, v.PredictChartColor, v.ChartWidth, req.ChartInfoId, v.EdbInfoId).Exec()
|
|
|
+ }()
|
|
|
+
|
|
|
+ _, err = o.Update(chartInfo, []string{}...)
|
|
|
+ if err != nil {
|
|
|
+ err = errors.New("图表更新失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(updateMapList) > 0 {
|
|
|
+ for _, v := range updateMapList {
|
|
|
+ _, err = o.Update(v, []string{}...)
|
|
|
if err != nil {
|
|
|
- fmt.Println("chart_edb_mapping Err:" + err.Error())
|
|
|
- return err
|
|
|
+ err = errors.New("更新图表指标映射关系失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
}
|
|
|
- } else {
|
|
|
- mapItem := new(ChartEdbMapping)
|
|
|
- mapItem.ChartInfoId = req.ChartInfoId
|
|
|
- mapItem.EdbInfoId = v.EdbInfoId
|
|
|
- mapItem.CreateTime = time.Now()
|
|
|
- mapItem.ModifyTime = time.Now()
|
|
|
- timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
|
|
|
- mapItem.UniqueCode = utils.MD5(utils.CHART_PREFIX + "_" + timestamp)
|
|
|
- mapItem.MaxData = v.MaxData
|
|
|
- mapItem.MinData = v.MinData
|
|
|
- mapItem.IsOrder = v.IsOrder
|
|
|
- mapItem.IsAxis = v.IsAxis
|
|
|
- mapItem.EdbInfoType = v.EdbInfoType
|
|
|
- mapItem.LeadValue = v.LeadValue
|
|
|
- mapItem.LeadUnit = v.LeadUnit
|
|
|
- mapItem.ChartStyle = v.ChartStyle
|
|
|
- mapItem.ChartColor = v.ChartColor
|
|
|
- mapItem.PredictChartColor = v.PredictChartColor
|
|
|
- mapItem.ChartWidth = v.ChartWidth
|
|
|
- mapList = append(mapList, mapItem)
|
|
|
}
|
|
|
}
|
|
|
- if len(mapList) > 0 {
|
|
|
- _, err = to.InsertMulti(1, mapList)
|
|
|
+ if len(addMapList) > 0 {
|
|
|
+ _, err = o.InsertMulti(len(addMapList), addMapList)
|
|
|
if err != nil {
|
|
|
- fmt.Println("AddChartEdbMapping Err:" + err.Error())
|
|
|
- return err
|
|
|
+ err = errors.New("保存图表指标映射关系失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
}
|
|
|
}
|
|
|
- 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 = to.Raw(dsql, req.ChartInfoId).Exec()
|
|
|
- if err != nil {
|
|
|
- fmt.Println("delete err:" + err.Error())
|
|
|
- return err
|
|
|
- }
|
|
|
+ if removeIdStr != "" {
|
|
|
+ sql := fmt.Sprintf(` DELETE FROM chart_edb_mapping WHERE chart_edb_mapping_id in (%s) `, removeIdStr)
|
|
|
+ _, err = o.Raw(sql).Exec()
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("删除映射关系失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新图表的特殊字段
|
|
|
+ if updateExtraConfigFlag {
|
|
|
+ _, err = o.Update(chartInfo, []string{"ExtraConfig", "BarConfig"}...)
|
|
|
+ if err != nil {
|
|
|
+ err = errors.New("保存图表配置失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
}
|
|
|
}
|
|
|
return
|