|
@@ -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)
|