|
|
@ -62,16 +62,16 @@ type GroupCalc struct { |
|
|
|
esHandler *et_sink.SinkHandler |
|
|
|
} |
|
|
|
|
|
|
|
func NewGroupCalc() *GroupCalc { |
|
|
|
func NewGroupCalc(configHelper *common_utils.ConfigHelper) *GroupCalc { |
|
|
|
calcTaskManager := &GroupCalc{ |
|
|
|
stage: stages.NewStage("测点分组计算"), |
|
|
|
configHelper: GetConfigHelper(), |
|
|
|
configHelper: configHelper, |
|
|
|
signCalc: make(chan bool), |
|
|
|
esHandler: et_sink.NewSinkGroupHandler(), |
|
|
|
} |
|
|
|
|
|
|
|
// 添加到 etNode 处理环节,实现数据加工 (缓存group各分项的主题数据 -> 分组计算、分组数据存储ES)
|
|
|
|
calcTaskManager.stage.AddProcess(calcTaskManager.processData) |
|
|
|
calcTaskManager.stage.AddProcess(calcTaskManager.calcGroups) |
|
|
|
return calcTaskManager |
|
|
|
} |
|
|
|
|
|
|
@ -79,9 +79,25 @@ func (gc *GroupCalc) GetStage() stages.Stage { |
|
|
|
return *gc.stage |
|
|
|
} |
|
|
|
|
|
|
|
func (gc *GroupCalc) calcGroups(data []*common_models.ProcessData) []*common_models.ProcessData { |
|
|
|
var wg sync.WaitGroup |
|
|
|
result := make([]*common_models.ProcessData, len(data)) |
|
|
|
|
|
|
|
for i, p := range data { |
|
|
|
wg.Add(1) |
|
|
|
go func(i int, p *common_models.ProcessData) { |
|
|
|
defer wg.Done() |
|
|
|
result[i] = gc.processData(p) |
|
|
|
}(i, p) |
|
|
|
} |
|
|
|
|
|
|
|
wg.Wait() |
|
|
|
return result |
|
|
|
} |
|
|
|
|
|
|
|
// processData 的 stations 被改变了
|
|
|
|
func (gc *GroupCalc) processData(inData *common_models.ProcessData) *common_models.ProcessData { |
|
|
|
log.Printf("************* 82行 分组一次处理开始 len(inData.Stations)=%d *************", len(inData.Stations)) |
|
|
|
log.Printf("********* 分组一次处理开始 len(inData.Stations)=%d *************", len(inData.Stations)) |
|
|
|
resultStations := make([]common_models.Station, 0) |
|
|
|
// 分组超时任务
|
|
|
|
resultStations = append(resultStations, gc.processTimeoutTasks()...) |
|
|
@ -95,12 +111,12 @@ func (gc *GroupCalc) processData(inData *common_models.ProcessData) *common_mode |
|
|
|
calcRet, err := gc.cacheAndCalc(&station, inData.DeviceData.DimensionId, inData.DeviceData.TaskId, inData.DeviceData.AcqTime) |
|
|
|
|
|
|
|
if err == nil { |
|
|
|
log.Printf("************* 95行 沉降分组计算成功,返回记录数 len(calcRet)={%d} *************", len(calcRet)) |
|
|
|
log.Printf("******* 沉降分组计算成功,返回记录数 len(calcRet)={%d} *************", len(calcRet)) |
|
|
|
resultStations = append(resultStations, calcRet...) |
|
|
|
} else { |
|
|
|
println(err) |
|
|
|
} |
|
|
|
log.Printf("************* 98行 分组一次处理,缓存记录数 len(resultStations)={%d} *************", len(resultStations)) |
|
|
|
log.Printf("******** 分组一次处理,缓存记录数 len(resultStations)={%d} *************", len(resultStations)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -112,22 +128,22 @@ func (gc *GroupCalc) processData(inData *common_models.ProcessData) *common_mode |
|
|
|
//filterSensorIds := []int{18, 20, 21}
|
|
|
|
//for _, number := range filterSensorIds {
|
|
|
|
// if number == station.Info.Id {
|
|
|
|
// log.Printf("*************** 110行 沉降分组测点有返回 %v %v %v %+v *************", station.Info.Id, station.Info.Name, station.Data.CollectTime, station.Data)
|
|
|
|
// log.Printf("******* 122行 沉降分组测点有返回 %v %v %v %+v *************", station.Info.Id, station.Info.Name, station.Data.CollectTime, station.Data)
|
|
|
|
// break
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
//// #TEST END
|
|
|
|
// 需要返回的测点
|
|
|
|
//log.Printf("*************** 121行 沉降分组测点有返回 %v %v %v %+v *************", station.Info.Id, station.Info.Name, station.Data.CollectTime, station.Data)
|
|
|
|
//log.Printf("******* 128行 沉降分组测点有返回 %v %v %v %+v *************", station.Info.Id, station.Info.Name, station.Data.CollectTime, station.Data)
|
|
|
|
result = append(result, station) |
|
|
|
|
|
|
|
} else { |
|
|
|
log.Printf("*************** 119行 分组计算异常的测点数据 %v %v %v %+v *************", station.Info.Id, station.Info.Name, station.Data.CollectTime, station.Data) |
|
|
|
log.Printf("****** 分组计算异常的测点数据 %v %v %v %+v *************", station.Info.Id, station.Info.Name, station.Data.CollectTime, station.Data) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 计算后的 result 可能为空
|
|
|
|
log.Printf("************* 124行 分组一次处理结束 len(inData.Stations)=%d *************", len(result)) |
|
|
|
log.Printf("****** 分组一次处理结束 len(inData.Stations)=%d *************", len(result)) |
|
|
|
inData.Stations = result |
|
|
|
return inData |
|
|
|
} |
|
|
|