Переглянути джерело

fix:修复指标计算升频的bug

Roc 1 рік тому
батько
коміт
b441ba6b09
1 змінених файлів з 0 додано та 214 видалено
  1. 0 214
      models/edb_data_calculate_bp.go

+ 0 - 214
models/edb_data_calculate_bp.go

@@ -341,220 +341,6 @@ func RefreshAllCalculateBp(edbInfoId, source, subSource int, fromEdbInfo *EdbInf
 	return
 }
 
-// refreshAllCalculateBp 刷新升频数据
-//func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, order int) (err error) {
-//	edbInfoIdStr := strconv.Itoa(edbInfoId)
-//
-//	//计算数据
-//	var condition string
-//	var pars []interface{}
-//	condition += " AND edb_info_id=? "
-//	pars = append(pars, fromEdbInfo.EdbInfoId)
-//
-//	//if startDate != "" {
-//	//	condition += " AND data_time>=? "
-//	//	pars = append(pars, startDate)
-//	//}
-//	//if endDate != "" {
-//	//	condition += " AND data_time<=? "
-//	//	pars = append(pars, endDate)
-//	//}
-//	//获取来源指标的数据
-//	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource, order)
-//	if err != nil {
-//		return err
-//	}
-//	var dateArr []string
-//	dataMap := make(map[string]*EdbInfoSearchData)
-//	fromDataMap := make(map[string]float64)
-//	//来源指指标数据
-//	for _, v := range dataList {
-//		dateArr = append(dateArr, v.DataTime)
-//		dataMap[v.DataTime] = v
-//		fromDataMap[v.DataTime] = v.Value
-//	}
-//	fmt.Println("source:", source)
-//
-//	//获取升频指标所有数据
-//	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
-//	if err != nil {
-//		return
-//	}
-//	//计算指标的map
-//	existDataMap := make(map[string]*EdbData, 0)
-//
-//	addSql := ` INSERT INTO edb_data_calculate_bp(edb_info_id,edb_code,data_time,value,create_time,modify_time,data_timestamp) values `
-//	var isAdd bool
-//
-//	var lastValue float64   //最后数据的值(float64)
-//	var lastValueStr string //最后数据的值(string)
-//	//待删除的日期
-//	removeDateList := make([]string, 0)
-//	if len(existDataList) > 0 {
-//		//第一个已经入库的日期
-//		firstExistDataTimeStr := existDataList[0].DataTime //计算指标数据第一条的日期字符串
-//		if len(dateArr) > 0 {
-//			firstFromDataTimeStr := dateArr[0]                                                                 //来源数据第一条的日期字符串
-//			firstExistDataTime, _ := time.ParseInLocation(utils.FormatDate, firstExistDataTimeStr, time.Local) //计算指标数据第一条的日期(time类型)
-//			firstFromDataTime, _ := time.ParseInLocation(utils.FormatDate, firstFromDataTimeStr, time.Local)   //来源数据第一条的日期(time类型)
-//			nowDateStr := time.Now().Format(utils.FormatDate)                                                  //当天日期字符串
-//			nowDate, _ := time.ParseInLocation(utils.FormatDate, nowDateStr, firstFromDataTime.Location())     //当天日期(time类型)
-//
-//			lastValue = fromDataMap[firstFromDataTimeStr]
-//			lastValueStr = decimal.NewFromFloat(lastValue).String()
-//			//第一步: 判断来源指标的开始时间与计算指标的开始时间是否相等,相等的话,那么就不需要对两个时间之间的数据做处理
-//			if firstExistDataTimeStr != firstFromDataTimeStr {
-//				if firstExistDataTime.Before(firstFromDataTime) { //如果计算指标第一条数据的开始时间 早于 来源指标的第一条开始时间,那么需要对两个时间之间的计算指标数据做 删除处理
-//					for _, v := range existDataList {
-//						if v.DataTime == firstFromDataTimeStr {
-//							if tmpLastValue, ok := fromDataMap[firstFromDataTimeStr]; ok { //来源指标当天的数据
-//								lastValue = tmpLastValue
-//								lastValueStr = decimal.NewFromFloat(lastValue).String()
-//							}
-//							break
-//						}
-//						removeDateList = append(removeDateList, v.DataTime)
-//					}
-//				} else {
-//					for _, v := range dateArr { //如果计算指标第一条数据的开始时间 晚于 来源指标的第一条开始时间,那么需要对两个时间之间的计算指标数据做 新增处理
-//						vDataTime, _ := time.ParseInLocation(utils.FormatDate, v, time.Local) //当前日期(time类型)
-//						if firstExistDataTime.Equal(vDataTime) || firstExistDataTime.Before(vDataTime) {
-//							if tmpLastValue, ok := fromDataMap[v]; ok { //来源指标当天的数据
-//								lastValue = tmpLastValue
-//								lastValueStr = decimal.NewFromFloat(lastValue).String()
-//							}
-//							break
-//						}
-//
-//						currentDate, _ := time.ParseInLocation(utils.FormatDate, v, time.Local)
-//						timestamp := currentDate.UnixNano() / 1e6
-//						timestampStr := fmt.Sprintf("%d", timestamp)
-//						addSql += GetAddSql(edbInfoIdStr, edbCode, v, timestampStr, lastValueStr)
-//
-//						isAdd = true
-//					}
-//				}
-//			}
-//
-//			//第二步 剩余数据每天修改
-//
-//			day := int(nowDate.Sub(firstExistDataTime).Hours() / float64(24))
-//
-//			//第三步: 已经入库的数据处理
-//			for _, v := range existDataList {
-//				existDataMap[v.DataTime] = v
-//			}
-//
-//			for k := day; k >= 0; k-- {
-//				needDay := nowDate.AddDate(0, 0, -k)
-//				needDayStr := needDay.Format(utils.FormatDate)
-//				tmpExistData, ok := existDataMap[needDayStr]
-//				if ok {
-//					if tmpLastValue, ok := fromDataMap[tmpExistData.DataTime]; ok { //来源指标当天的数据
-//						lastValue = tmpLastValue
-//						//lastValueStr = decimal.NewFromFloat(lastValue).String()
-//						lastValueStr = fmt.Sprintf("%.4f", lastValue)
-//					}
-//					//如果对应的值不匹配
-//					if tmpExistData.Value != lastValueStr {
-//						err = ModifyEdbDataById(source, subSource, tmpExistData.EdbDataId, lastValueStr)
-//						if err != nil {
-//							return err
-//						}
-//					}
-//				} else {
-//					timestamp := needDay.UnixNano() / 1e6
-//					timestampStr := fmt.Sprintf("%d", timestamp)
-//					addSql += GetAddSql(edbInfoIdStr, edbCode, needDayStr, timestampStr, lastValueStr)
-//
-//					isAdd = true
-//				}
-//			}
-//		} else {
-//			//如果没有来源指标数据,那么已经入库的计算指标数据需要全部删除
-//			tableName := GetEdbDataTableName(source, subSource)
-//			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ?`, tableName)
-//			_, err = to.Raw(sql, edbInfoId).Exec()
-//			if err != nil {
-//				err = fmt.Errorf("删除所有的升频指标数据失败,Err:" + err.Error())
-//				return
-//			}
-//
-//			//for _, v := range existDataList {
-//			//	removeDateList = append(removeDateList, v.DataTime)
-//			//}
-//		}
-//	} else {
-//		existMap := make(map[string]string)
-//		dataLen := len(dataList)
-//
-//		for i := 0; i < dataLen; i++ {
-//			//当期
-//			currentItem := dataList[i]
-//			currentDate, _ := time.ParseInLocation(utils.FormatDate, currentItem.DataTime, time.Local)
-//			var day int
-//			var preItem *EdbInfoSearchData
-//			var preDate time.Time
-//			if i == 0 {
-//				day = int(time.Now().Sub(currentDate).Hours() / float64(24))
-//				preDate = time.Now()
-//			} else {
-//				j := i - 1
-//				if j < dataLen {
-//					preItem = dataList[j]
-//					preDate, _ = time.ParseInLocation(utils.FormatDate, preItem.DataTime, time.Local)
-//					day = int(preDate.Sub(currentDate).Hours() / float64(24))
-//					utils.FileLog.Info("preItem.DataTime:" + preItem.DataTime + ";currentItem.DataTime" + currentItem.DataTime)
-//				}
-//			}
-//			for k := 0; k <= day; k++ {
-//				needDay := preDate.AddDate(0, 0, -k)
-//				needDayStr := needDay.Format(utils.FormatDate)
-//				existKey := edbCode + needDayStr
-//				if _, ok := existMap[existKey]; !ok {
-//					timestamp := needDay.UnixNano() / 1e6
-//					timestampStr := fmt.Sprintf("%d", timestamp)
-//					valStr := decimal.NewFromFloat(currentItem.Value).String()
-//					addSql += GetAddSql(edbInfoIdStr, edbCode, needDayStr, timestampStr, valStr)
-//					isAdd = true
-//				}
-//				existMap[existKey] = needDayStr
-//			}
-//			existKey := edbCode + currentItem.DataTime
-//			if _, ok := existMap[existKey]; !ok {
-//				currentDate, _ := time.ParseInLocation(utils.FormatDate, currentItem.DataTime, time.Local)
-//				timestamp := currentDate.UnixNano() / 1e6
-//				timestampStr := fmt.Sprintf("%d", timestamp)
-//				valStr := decimal.NewFromFloat(currentItem.Value).String()
-//				addSql += GetAddSql(edbInfoIdStr, edbCode, currentItem.DataTime, timestampStr, valStr)
-//				isAdd = true
-//			}
-//			existMap[existKey] = currentItem.DataTime
-//		}
-//	}
-//
-//	// 删除不需要的指标数据
-//	if len(removeDateList) > 0 {
-//		removeDateStr := strings.Join(removeDateList, `","`)
-//		removeDateStr = `"` + removeDateStr + `"`
-//		//如果拼接指标变更了,那么需要删除所有的指标数据
-//		tableName := GetEdbDataTableName(source, subSource)
-//		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
-//
-//		_, err = to.Raw(sql, edbInfoId).Exec()
-//		if err != nil {
-//			err = fmt.Errorf("删除不存在的升频指标数据失败,Err:" + err.Error())
-//			return
-//		}
-//	}
-//
-//	if isAdd {
-//		addSql = strings.TrimRight(addSql, ",")
-//		_, err = to.Raw(addSql).Exec()
-//	}
-//	return
-//}
-
 // refreshAllCalculateBp 刷新升频数据
 func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source, subSource int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string, order int) (err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)