Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/debug' into debug

zwxi 10 mesi fa
parent
commit
c612e6828a

+ 15 - 12
controllers/data_manage/mysteel_chemical_data.go

@@ -896,6 +896,7 @@ func (this *EdbClassifyController) AddMysteelChemical() {
 				StartDate:                         "",
 				EndDate:                           "",
 				Describe:                          "",
+				TerminalCode:                      "",
 				UpdateWeek:                        v.UpdateWeek,
 				UpdateTime:                        updateTime1,
 				UpdateTime2:                       updateTime2,
@@ -1550,12 +1551,6 @@ func (this *EdbInfoController) Add() {
 		return
 	}
 
-	source := req.Source
-	if source <= 0 {
-		br.Msg = "无效的数据来源"
-		return
-	}
-
 	req.EdbName = strings.Trim(req.EdbName, " ")
 	req.EdbCode = strings.Trim(req.EdbCode, " ")
 
@@ -1592,15 +1587,14 @@ func (this *EdbInfoController) Add() {
 			return
 		}
 	}
+	var source int
 	if tmpInfo != nil {
 		source = utils.DATA_SOURCE_MYSTEEL_CHEMICAL
-		req.Source = utils.DATA_SOURCE_MYSTEEL_CHEMICAL
-	}
-
-	if req.Source != utils.DATA_SOURCE_MYSTEEL_CHEMICAL {
-		br.Msg = "指标来源异常"
+	} else {
+		br.Msg = "指标不存在"
 		return
 	}
+
 	// 指标入库
 	edbInfo, err, errMsg, isSendEmail := data.EdbInfoAdd(source, utils.DATA_SUB_SOURCE_EDB, req.ClassifyId, req.EdbCode, req.EdbName, req.Frequency, req.Unit, req.StartDate, req.EndDate, sysUser.AdminId, sysUser.RealName, this.Lang)
 	if err != nil {
@@ -1882,6 +1876,15 @@ func (this *EdbInfoController) MysteelChemicalBatchSearch() {
 		pars = utils.GetLikeKeywordPars(pars, keyword, 2)
 	}
 
+	if classifyIdStr == `` && keyword == `` {
+		var list = make([]*data_manage.MysteelChemicalList, 0)
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+		br.Data = list
+		return
+	}
+
 	list, err := data_manage.GetMysteelChemicalIndex(condition, pars)
 	if err != nil {
 		br.Msg = "获取失败"
@@ -1895,7 +1898,7 @@ func (this *EdbInfoController) MysteelChemicalBatchSearch() {
 			classifyIdInts = append(classifyIdInts, v.BaseFromMysteelChemicalClassifyId)
 		}
 	}
-	if len(classifyIds) > 0 {
+	if len(classifyIdInts) > 0 {
 		// 查询父级分类信息
 		classifyList, e := data_manage.GetBaseFromMysteelChemicalClassifyByIds(classifyIdInts)
 		if e != nil {

+ 3 - 3
models/data_manage/chart_info.go

@@ -2714,9 +2714,9 @@ type ChartSectionSeriesItem struct {
 	MaxData       float64 `description:"上限"`
 	MinData       float64 `description:"下限"`
 	//IsOrder         bool    `description:"true:正序,false:逆序"`
-	EdbInfoList     []*ChartSectionSeriesEdbConf
-	DataList        []float64
-	NoDataEdbIdList []int
+	EdbInfoList    []*ChartSectionSeriesEdbConf
+	DataList       []float64
+	NoDataEdbIndex []int
 }
 type ChartSectionSeriesEdbConf struct {
 	ChartSeriesEdbMappingId int `description:"映射ID"`

+ 0 - 4
models/data_manage/mysteel_chemical_index.go

@@ -61,12 +61,8 @@ var BaseFromMysteelChemicalIndexCols = struct {
 	Unit                           string
 	Frequency                      string
 	Source                         string
-	SourceName                     string
 	StartDate                      string
 	EndDate                        string
-	Remark                         string
-	BaseModifyTime                 string
-	DataUpdateTime                 string
 	CreateTime                     string
 	ModifyTime                     string
 }{

+ 94 - 5
services/data/chart_extra_config.go

@@ -7,6 +7,7 @@ import (
 	"eta/eta_api/services/google"
 	"eta/eta_api/utils"
 	"fmt"
+	"sort"
 	"strconv"
 	"strings"
 	"time"
@@ -377,10 +378,12 @@ func GetChartSectionCombineData(chartInfo *data_manage.ChartInfo, mappingList []
 		Right2Min float64
 		Right2Max float64
 	)
+	seriesDataListMap := make(map[string][]float64)
+	seriesNoDataIndexMap := make(map[string][]int)
 	for _, seriesItem := range extraConfig.SeriesList {
 		var maxDate time.Time
 		var minVal, maxVal float64
-		noDataEdbIdList := make([]int, 0)
+		noDataEdbIndex := make([]int, 0)
 		dataList := make([]float64, len(seriesItem.EdbInfoList))
 		for index, edbConf := range seriesItem.EdbInfoList {
 			edbInfoId := edbConf.EdbInfoId //X轴的指标
@@ -461,14 +464,17 @@ func GetChartSectionCombineData(chartInfo *data_manage.ChartInfo, mappingList []
 					}
 				}
 			} else {
-				noDataEdbIdList = append(noDataEdbIdList, edbInfoId)
+				dataList[index] = 0
+				noDataEdbIndex = append(noDataEdbIndex, index)
 				continue
 			}
 		}
+		seriesDataListMap[seriesItem.SeriesName] = dataList
+		seriesNoDataIndexMap[seriesItem.SeriesName] = noDataEdbIndex
 		seriesItem.DataList = dataList
 		seriesItem.MinData = minVal
 		seriesItem.MaxData = maxVal
-		seriesItem.NoDataEdbIdList = noDataEdbIdList
+		seriesItem.NoDataEdbIndex = noDataEdbIndex
 		if extraConfig.BaseChartSeriesName == seriesItem.SeriesName {
 			baseSeries = seriesItem
 		}
@@ -519,6 +525,21 @@ func GetChartSectionCombineData(chartInfo *data_manage.ChartInfo, mappingList []
 		err = fmt.Errorf("基准系列不存在")
 		return
 	}
+	// 处理系列排序
+	if extraConfig.SortType > 0 {
+		newSeriesDataListMap, newSeriesNoDataIndexMap := sortChartSeriesDataSet(baseSeries.DataList, baseSeries.NoDataEdbIndex, seriesDataListMap, seriesNoDataIndexMap, extraConfig.SortType)
+		for k, item := range extraConfig.SeriesList {
+			dataList, ok := newSeriesDataListMap[item.SeriesName]
+			if ok {
+				extraConfig.SeriesList[k].DataList = dataList
+			}
+			noIndex, ok := newSeriesNoDataIndexMap[item.SeriesName]
+			if ok {
+				extraConfig.SeriesList[k].NoDataEdbIndex = noIndex
+			}
+		}
+	}
+
 	xDataList := make([]data_manage.XData, 0)
 	for index, item := range baseSeries.EdbInfoList {
 		if index == 0 {
@@ -618,8 +639,6 @@ func GetChartSectionCombineData(chartInfo *data_manage.ChartInfo, mappingList []
 		}
 	}
 
-	// 处理系列排序
-
 	dataListResp.SeriesList = extraConfig.SeriesList
 	dataListResp.DateConfList = extraConfig.DateConfList
 	dataListResp.BaseChartSeriesName = extraConfig.BaseChartSeriesName
@@ -826,3 +845,73 @@ func handleSystemAppointDateT(currDate time.Time, appointDay, frequency string)
 
 	return
 }
+
+// sortTripleDataSet 以第一组数据为基准,排序之后,空数组的位置也要同步变更
+func sortChartSeriesDataSet(baseDataList []float64, baseSeriesNoDataIndexList []int, dataListMap map[string][]float64, noDataListIndexMap map[string][]int, asc int) (newDataListMap map[string][]float64, newNoDataListIndexMap map[string][]int) {
+	newDataListMap = make(map[string][]float64)
+	newNoDataListIndexMap = make(map[string][]int)
+
+	indices := make([]int, len(baseDataList))
+	newIndices := make([]int, len(baseDataList))
+	// 初始化indices
+	for i := range indices {
+		indices[i] = i
+	}
+	if len(baseSeriesNoDataIndexList) > 0 { //把空值移动到最右边
+		for i, v := range indices {
+			isEmpty := false
+			for k := range baseSeriesNoDataIndexList {
+				if i == k {
+					isEmpty = true
+					break
+				}
+			}
+			if isEmpty {
+				continue
+			}
+			newIndices[i] = v
+		}
+		newIndices = append(newIndices, baseSeriesNoDataIndexList...)
+		// 根据排序后的indices重新排列所有组的数据
+		for i, idx := range indices {
+			for k, _ := range dataListMap {
+				if utils.InArrayByInt(noDataListIndexMap[k], i) { //如果i位置上的数据为空,那么
+					newNoDataListIndexMap[k] = append(newNoDataListIndexMap[k], idx)
+				}
+				newDataListMap[k][i] = dataListMap[k][idx]
+			}
+		}
+		dataListMap = newDataListMap
+		noDataListIndexMap = newNoDataListIndexMap
+		newDataListMap = make(map[string][]float64)
+		newNoDataListIndexMap = make(map[string][]int)
+		//先把空的数据移动到最后面
+		indices = make([]int, len(baseDataList)-len(baseSeriesNoDataIndexList)) //空值不参与排序
+		// 初始化indices
+		for i := range indices {
+			indices[i] = i
+		}
+	}
+
+	// 根据Group1的数据进行排序,asc决定是升序还是降序
+	if asc == 1 {
+		sort.Slice(indices, func(i, j int) bool {
+			return baseDataList[i] < baseDataList[j]
+		})
+	} else {
+		sort.Slice(indices, func(i, j int) bool {
+			return baseDataList[i] > baseDataList[j]
+		})
+	}
+
+	// 根据排序后的indices重新排列所有组的数据
+	for i, idx := range indices {
+		for k, _ := range dataListMap {
+			if utils.InArrayByInt(noDataListIndexMap[k], i) { //如果i位置上的数据为空,那么
+				newNoDataListIndexMap[k] = append(newNoDataListIndexMap[k], idx)
+			}
+			newDataListMap[k][i] = dataListMap[k][idx]
+		}
+	}
+	return
+}

+ 2 - 3
services/data/chart_info.go

@@ -436,9 +436,8 @@ func GetChartEdbData(chartInfoId, chartType int, calendar, startDate, endDate st
 					MaxData:       v.MaxData,
 					MinData:       v.MinData,
 					//IsOrder:         false,
-					EdbInfoList:     nil,
-					DataList:        nil,
-					NoDataEdbIdList: nil,
+					EdbInfoList: nil,
+					DataList:    nil,
 				}
 				edbInfoList, ok := seriesEdbMap[v.ChartSeriesId]
 				if ok {

+ 2 - 0
services/data/mysteel_chemical.go

@@ -332,12 +332,14 @@ func BatchAddMysteelChemicalIndex(items []*data_manage.BaseFromMysteelChemicalIn
 		return
 	}
 
+	terminal := getEdbTerminal(utils.DATA_SOURCE_MYSTEEL_CHEMICAL)
 	addItems := make([]*data_manage.BaseFromMysteelChemicalIndex, 0)
 	preAddIndexCodeItems := make([]string, 0)
 	for _, v := range items {
 		if _, ok := filterMap[v.IndexCode]; ok {
 			continue
 		}
+		v.TerminalCode = terminal.TerminalCode
 		addItems = append(addItems, v)
 		preAddIndexCodeItems = append(preAddIndexCodeItems, v.IndexCode)
 	}