ReleaseFeedWeightTask 使用结构体代替map
This commit is contained in:
@@ -12,14 +12,12 @@ import (
|
|||||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/transport"
|
"git.huangwc.com/pig/pig-farm-controller/internal/infra/transport"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
// ReleaseFeedWeightTaskParams 定义了 ReleaseFeedWeightTask 的参数结构
|
||||||
// 这个参数是 TaskTaskReleaseFeedWeight 类型的 Task Parameters 中用于记录释放的重量字段的key
|
type ReleaseFeedWeightTaskParams struct {
|
||||||
ParamsReleaseWeight = "release_weight"
|
ReleaseWeight float64 `json:"release_weight"` // 需要释放的重量
|
||||||
// 这个参数是 TaskTaskReleaseFeedWeight 类型的 Task Parameters 中用于记录下料口ID字段的key
|
FeedPortDeviceID uint `json:"feed_port_device_id"` // 下料口ID
|
||||||
ParamsFeedPortDeviceID = "feed_port_device_id"
|
MixingTankDeviceID uint `json:"mixing_tank_device_id"` // 称重传感器ID
|
||||||
// 这个参数是 TaskTaskReleaseFeedWeight 类型的 Task Parameters 中用于记录称重传感器ID字段的key
|
}
|
||||||
ParamsMixingTankDeviceID = "mixing_tank_device_id"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ReleaseFeedWeightTask 是一个控制下料口释放指定重量的任务
|
// ReleaseFeedWeightTask 是一个控制下料口释放指定重量的任务
|
||||||
type ReleaseFeedWeightTask struct {
|
type ReleaseFeedWeightTask struct {
|
||||||
@@ -99,6 +97,10 @@ func (r *ReleaseFeedWeightTask) getNowWeight() (float64, error) {
|
|||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if sensorData == nil {
|
||||||
|
return 0, fmt.Errorf("未找到设备 %v 的最新重量传感器数据", r.mixingTankDeviceID)
|
||||||
|
}
|
||||||
|
|
||||||
wg := &models.WeightData{}
|
wg := &models.WeightData{}
|
||||||
err = json.Unmarshal(sensorData.Data, wg)
|
err = json.Unmarshal(sensorData.Data, wg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -115,22 +117,35 @@ func (r *ReleaseFeedWeightTask) parseParameters() error {
|
|||||||
return fmt.Errorf("任务 %v: 参数不全", r.claimedLog.TaskID)
|
return fmt.Errorf("任务 %v: 参数不全", r.claimedLog.TaskID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO 定义成结构体放model包中
|
var params ReleaseFeedWeightTaskParams
|
||||||
var params map[string]interface{}
|
|
||||||
err := json.Unmarshal(r.claimedLog.Task.Parameters, ¶ms)
|
err := json.Unmarshal(r.claimedLog.Task.Parameters, ¶ms)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
r.logger.Errorf("任务 %v: 解析参数失败: %v", r.claimedLog.TaskID, err)
|
r.logger.Errorf("任务 %v: 解析参数失败: %v", r.claimedLog.TaskID, err)
|
||||||
return fmt.Errorf("任务 %v: 解析参数失败: %v", r.claimedLog.TaskID, err)
|
return fmt.Errorf("任务 %v: 解析参数失败: %v", r.claimedLog.TaskID, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
r.releaseWeight = params[ParamsReleaseWeight].(float64)
|
// 校验参数是否存在
|
||||||
r.mixingTankDeviceID = params[ParamsMixingTankDeviceID].(uint)
|
if params.ReleaseWeight == 0 {
|
||||||
r.feedPortDevice, err = r.deviceRepo.FindByID(params[ParamsFeedPortDeviceID].(uint))
|
r.logger.Errorf("任务 %v: 参数 release_weight 缺失或无效", r.claimedLog.TaskID)
|
||||||
|
return fmt.Errorf("任务 %v: 参数 release_weight 缺失或无效", r.claimedLog.TaskID)
|
||||||
|
}
|
||||||
|
if params.FeedPortDeviceID == 0 {
|
||||||
|
r.logger.Errorf("任务 %v: 参数 feed_port_device_id 缺失或无效", r.claimedLog.TaskID)
|
||||||
|
return fmt.Errorf("任务 %v: 参数 feed_port_device_id 缺失或无效", r.claimedLog.TaskID)
|
||||||
|
}
|
||||||
|
if params.MixingTankDeviceID == 0 {
|
||||||
|
r.logger.Errorf("任务 %v: 参数 mixing_tank_device_id 缺失或无效", r.claimedLog.TaskID)
|
||||||
|
return fmt.Errorf("任务 %v: 参数 mixing_tank_device_id 缺失或无效", r.claimedLog.TaskID)
|
||||||
|
}
|
||||||
|
|
||||||
|
r.releaseWeight = params.ReleaseWeight
|
||||||
|
r.mixingTankDeviceID = params.MixingTankDeviceID
|
||||||
|
r.feedPort = device.NewGeneralDeviceService(r.deviceRepo, r.logger, r.comm)
|
||||||
|
r.feedPortDevice, err = r.deviceRepo.FindByID(params.FeedPortDeviceID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
r.logger.Errorf("任务 %v: 获取设备信息失败: %v", r.claimedLog.TaskID, err)
|
r.logger.Errorf("任务 %v: 获取设备信息失败: %v", r.claimedLog.TaskID, err)
|
||||||
return fmt.Errorf("任务 %v: 获取设备信息失败: %v", r.claimedLog.TaskID, err)
|
return fmt.Errorf("任务 %v: 获取设备信息失败: %v", r.claimedLog.TaskID, err)
|
||||||
}
|
}
|
||||||
r.feedPort = device.NewGeneralDeviceService(r.deviceRepo, r.logger, r.comm)
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user