|
@@ -261,9 +261,10 @@ func ProfitChartChartData(baseEdbInfo *data_manage.EdbInfo, baseDataListMap map[
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- findDataList := make([]float64, 0) // 当前日期的数据值
|
|
|
- noDataIdList := make([]int, 0) // 没有数据的指标id
|
|
|
- xEdbInfoIdList := make([]int, 0) // 当前数据的指标id列表
|
|
|
+ findDataList := make([]float64, 0) // 当前日期的数据值
|
|
|
+ noDataIdList := make([]int, 0) // 没有数据的指标id
|
|
|
+ noDataIdMap := make(map[int]int, 0) // 没有数据的指标map
|
|
|
+ xEdbInfoIdList := make([]int, 0) // 当前数据的指标id列表
|
|
|
|
|
|
// 现货指标
|
|
|
index := 0
|
|
@@ -283,7 +284,7 @@ func ProfitChartChartData(baseEdbInfo *data_manage.EdbInfo, baseDataListMap map[
|
|
|
maxDate = realDateTime
|
|
|
}
|
|
|
edbIdList = make([]int, 0) //普通指标ID
|
|
|
- for edbInfoId, baseDataList := range baseDataListMap {
|
|
|
+ for edbInfoId, _ := range baseDataListMap {
|
|
|
if edbInfoId == baseEdbInfo.EdbInfoId {
|
|
|
findDataList = append(findDataList, findDataValue)
|
|
|
yDataMap[index] = findDataValue
|
|
@@ -297,10 +298,10 @@ func ProfitChartChartData(baseEdbInfo *data_manage.EdbInfo, baseDataListMap map[
|
|
|
err = fmt.Errorf("指标id: %d 没有数据", edbInfoId)
|
|
|
return
|
|
|
}
|
|
|
- _, findDataValueTmp, _, e := GetNeedDateData(realDateTime, baseDataList, baseEdbDateDataTmp, edbDataMap)
|
|
|
- if e != nil {
|
|
|
- err = e
|
|
|
- return
|
|
|
+ findDataValueTmp, isFindTmp := baseEdbDateDataTmp[realDateTime.Format(utils.FormatDate)]
|
|
|
+ if !isFindTmp {
|
|
|
+ noDataIdList = append(noDataIdList, edbInfoId)
|
|
|
+ noDataIdMap[edbInfoId] = edbInfoId
|
|
|
}
|
|
|
findDataList = append(findDataList, findDataValueTmp)
|
|
|
yDataMap[index] = findDataValueTmp
|
|
@@ -380,7 +381,7 @@ func ProfitChartChartData(baseEdbInfo *data_manage.EdbInfo, baseDataListMap map[
|
|
|
//计算公式异常,那么就移除该指标
|
|
|
if formulaFormStr == `` {
|
|
|
//removeDateList = append(removeDateList, sk)
|
|
|
- //fmt.Println("异常了")
|
|
|
+ fmt.Println("异常了")
|
|
|
continue
|
|
|
}
|
|
|
|
|
@@ -433,6 +434,33 @@ func ProfitChartChartData(baseEdbInfo *data_manage.EdbInfo, baseDataListMap map[
|
|
|
yDate = maxDate.Format(utils.FormatDate)
|
|
|
}
|
|
|
|
|
|
+ {
|
|
|
+ hasDataIndexList := make([]int, 0)
|
|
|
+ for dataK, edbInfoId := range xEdbInfoIdList {
|
|
|
+ if _, ok := noDataIdMap[edbInfoId]; !ok { // 如果是没有数据的指标id
|
|
|
+ hasDataIndexList = append(hasDataIndexList, dataK)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lenHasDataIndex := len(hasDataIndexList)
|
|
|
+ if lenHasDataIndex > 0 {
|
|
|
+ for lenHasDataI := 1; lenHasDataI < lenHasDataIndex; lenHasDataI++ {
|
|
|
+ perK := hasDataIndexList[lenHasDataI-1] //上一个有数据的指标下标
|
|
|
+ currK := hasDataIndexList[lenHasDataI] //当前有数据的指标下标
|
|
|
+ preVal := findDataList[perK] //上一个有数据的坐标的值
|
|
|
+ currVal := findDataList[currK] //当前有数据的指标的值
|
|
|
+
|
|
|
+ // 环差值
|
|
|
+ hcValDeci := decimal.NewFromFloat(currVal).Sub(decimal.NewFromFloat(preVal)).Div(decimal.NewFromInt(int64(currK - perK)))
|
|
|
+ var tmpI int64
|
|
|
+ // 将两个中间的数据做平均值补全
|
|
|
+ for hcI := perK + 1; hcI < currK; hcI++ {
|
|
|
+ tmpI++
|
|
|
+ findDataList[hcI], _ = decimal.NewFromFloat(preVal).Add(hcValDeci.Mul(decimal.NewFromInt(tmpI))).RoundCeil(4).Float64()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
yDataList = append(yDataList, data_manage.YData{
|
|
|
Date: yDate,
|
|
|
ConfigDate: realDateTime,
|
|
@@ -530,10 +558,14 @@ func handleProfitResultData(xDataListInit []data_manage.XData, baseEdbInfo *data
|
|
|
|
|
|
nMap := make(map[int]int)
|
|
|
nList := make([]int, 0)
|
|
|
+ nListEdbMap := make(map[int]struct{})
|
|
|
for _, v := range yDataList {
|
|
|
for _, n := range v.XEdbInfoIdList {
|
|
|
if utils.InArrayByInt(allEdbInfoIds, n) {
|
|
|
- nList = append(nList, n)
|
|
|
+ if _, ok := nListEdbMap[n]; !ok {
|
|
|
+ nList = append(nList, n)
|
|
|
+ nListEdbMap[n] = struct{}{}
|
|
|
+ }
|
|
|
} else {
|
|
|
nMap[n] = n
|
|
|
}
|
|
@@ -699,6 +731,7 @@ func ReplaceFormula(tagEdbIdMap map[string]int, valArr map[int]float64, formulaS
|
|
|
for k, v := range funMap {
|
|
|
formulaStr = strings.Replace(formulaStr, v, k, -1)
|
|
|
}
|
|
|
+ fmt.Println(formulaStr)
|
|
|
if replaceCount == len(tagEdbIdMap) {
|
|
|
return formulaStr
|
|
|
} else {
|