zhangqian
2023-09-02 21e0e02fd465fef04f1834b078c621a0e3594308
任务开始和结束都发送消息通知apsserver
4个文件已修改
68 ■■■■ 已修改文件
api/v1/task.go 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constvar/const.go 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/common/common.go 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
nsq/caller.go 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/v1/task.go
@@ -1,9 +1,12 @@
package v1
import (
    "apsClient/conf"
    "apsClient/constvar"
    "apsClient/model"
    "apsClient/model/common"
    "apsClient/model/response"
    "apsClient/nsq"
    "apsClient/pkg/contextx"
    "apsClient/pkg/convertx"
    "apsClient/pkg/ecode"
@@ -130,7 +133,7 @@
        return
    }
    id := convertx.Atoi(idx)
    _, code := service.NewTaskService().GetProcedureById(id)
    procedure, code := service.NewTaskService().GetProcedureById(id)
    if code != ecode.OK {
        ctx.Fail(code)
        return
@@ -141,6 +144,21 @@
        ctx.Fail(ecode.UnknownErr)
        return
    }
    msg := &common.MsgTaskStatusUpdate{
        WorkOrderId:  procedure.WorkOrderID,
        ProcedureID:  procedure.ProceduresInfo.ProcedureID,
        DeviceId:     procedure.ProceduresInfo.DeviceID,
        IsProcessing: false,
        IsFinish:     true,
    }
    caller := nsq.NewCaller(fmt.Sprintf(constvar.NsqTopicTaskProcedureStatusUpdate, conf.Conf.NsqConf.NodeId), "")
    err = caller.Send(msg)
    if err != nil {
        logx.Errorf("send task status update msg error:%v", err.Error())
    }
    ctx.Ok()
}
@@ -222,6 +240,21 @@
        ctx.FailWithMsg(ecode.NeedConfirmedErr, "糟糕,工艺下发失败。")
        return
    }
    msg := &common.MsgTaskStatusUpdate{
        WorkOrderId:  procedure.WorkOrderID,
        ProcedureID:  procedure.ProceduresInfo.ProcedureID,
        DeviceId:     procedure.ProceduresInfo.DeviceID,
        IsProcessing: true,
        IsFinish:     false,
    }
    caller := nsq.NewCaller(fmt.Sprintf(constvar.NsqTopicTaskProcedureStatusUpdate, conf.Conf.NsqConf.NodeId), "")
    err = caller.Send(msg)
    if err != nil {
        logx.Errorf("send task status update msg error:%v", err.Error())
    }
    ctx.Ok()
}
constvar/const.go
@@ -1,12 +1,13 @@
package constvar
const (
    NsqTopicScheduleTask          = "aps.%v.scheduleTask" //排程任务下发
    NsqTopicGetPlcAddress         = "aps.%v.getPlcAddress"
    NsqTopicSendPlcAddress        = "aps.%v.sendPlcAddress"
    NsqTopicProcessParamsRequest  = "aps.%v.processParams.request"
    NsqTopicProcessParamsResponse = "aps.%v.processParams.response"
    NsqTopicApsProcessParams      = "aps.%v.aps.processParams" //有了新的工艺模型
    NsqTopicScheduleTask              = "aps.%v.scheduleTask" //排程任务下发
    NsqTopicGetPlcAddress             = "aps.%v.getPlcAddress"
    NsqTopicSendPlcAddress            = "aps.%v.sendPlcAddress"
    NsqTopicProcessParamsRequest      = "aps.%v.processParams.request"
    NsqTopicProcessParamsResponse     = "aps.%v.processParams.response"
    NsqTopicApsProcessParams          = "aps.%v.aps.processParams"     //有了新的工艺模型
    NsqTopicTaskProcedureStatusUpdate = "aps.%v.task.procedure.status" //工序状态更新
)
type PlcStartAddressType int
model/common/common.go
@@ -88,3 +88,12 @@
        DeviceId  string                 `json:"deviceId" gorm:"-"` //用于过滤获取nsq消息
    }
)
// MsgTaskStatusUpdate 任务状态改变
type MsgTaskStatusUpdate struct {
    WorkOrderId  string `json:"workOrderId"` //工单编号
    ProcedureID  string `json:"procedureId"` // 工序
    DeviceId     string `json:"deviceId"`    //用于过滤获取nsq消息
    IsProcessing bool   //是否处理中
    IsFinish     bool   //是否完成
}
nsq/caller.go
@@ -49,3 +49,14 @@
        }
    }
}
func (caller *DefaultCaller) Send(input interface{}) error {
    msg, err := json.Marshal(input)
    if err != nil {
        return err
    }
    producer := GetProducer()
    err = producer.Publish(caller.RequestTopic, msg)
    return err
}