| | |
| | | return taskResponse.Tasks[i].Channel < taskResponse.Tasks[i].Channel |
| | | }) |
| | | |
| | | nowTs := time.Now().Unix() |
| | | flagMap := make(map[int32]struct{}, 0) |
| | | for _, task := range taskResponse.Tasks { |
| | | if _, ok := flagMap[task.Channel]; !ok && !service.TaskFlagGet(conf.Conf.CurrentDeviceID, task.Channel) && task.Procedure.StartTime <= nowTs { |
| | | if task.Procedure.Status != model.ProcedureStatusWaitProcess { |
| | | continue |
| | | } |
| | | if _, ok := flagMap[task.Channel]; !ok && !service.TaskFlagGet(conf.Conf.CurrentDeviceID, task.Channel) { |
| | | task.CanStarted = true |
| | | flagMap[task.Channel] = struct{}{} |
| | | } |
| | |
| | | return err |
| | | } |
| | | record := model.TaskStatusSync{ |
| | | WorkOrderId: procedure.WorkOrderID, |
| | | ProcedureID: procedure.ProcedureID, |
| | | DeviceId: procedure.DeviceID, |
| | | IsProcessing: false, |
| | | IsFinish: true, |
| | | WorkOrderId: procedure.WorkOrderID, |
| | | ProcedureID: procedure.ProcedureID, |
| | | DeviceId: procedure.DeviceID, |
| | | ProductProcedureID: procedure.ProductProcedureID, |
| | | IsProcessing: false, |
| | | IsFinish: true, |
| | | FinishedQuantity: procedure.FinishedQuantity, |
| | | } |
| | | return service.NewTaskService().SaveTaskStatusSync(db, &record) |
| | | }) |
| | |
| | | return |
| | | } |
| | | |
| | | service.TaskFlagUnset(conf.Conf.CurrentDeviceID, procedure.Channel) |
| | | service.TaskEndTimeSet(conf.Conf.CurrentDeviceID, procedure.Channel, time.Now().Unix()) //设置工序运行结束时间 |
| | | service.TaskFlagUnset(procedure.DeviceID, procedure.Channel) |
| | | service.TaskEndTimeSet(procedure.DeviceID, procedure.Channel, time.Now().Unix()) //设置工序运行结束时间 |
| | | ctx.Ok() |
| | | } |
| | | |
| | |
| | | ctx.Fail(code) |
| | | return |
| | | } |
| | | if procedure.DeviceID != conf.Conf.CurrentDeviceID { |
| | | ctx.FailWithMsg(ecode.ParamsErr, "该任务不属于当前设备") |
| | | return |
| | | } |
| | | order, err := taskService.GetOrderByWorkOrderId(procedure.WorkOrderID) |
| | | if err != nil { |
| | | ctx.Fail(ecode.UnknownErr) |
| | |
| | | |
| | | var processModelNumber string |
| | | plcConfig, code := service.NewDevicePlcService().GetDevicePlc() |
| | | if code == ecode.OK && plcConfig.ID != 0 { |
| | | if code == ecode.OK && plcConfig.ID != 0 && len(plcConfig.Details) > 0 { |
| | | plcConfig.MaxTryTimes = 2 |
| | | device, err := service.GetCurrentDevice() |
| | | if err != nil { |
| | |
| | | processModelNumber = processModel.Number |
| | | } |
| | | |
| | | fieldType := constvar.PlcStartAddressTypeTotalNumber |
| | | for _, pc := range plcConfig.Details { //如果有写入地址,优先往写入地址写入,没有的话往读取地址写入 |
| | | if pc.FieldName == constvar.PlcStartAddressTypeTotalNumberWrite && pc.Channel == procedure.Channel { |
| | | fieldType = constvar.PlcStartAddressTypeTotalNumberWrite |
| | | } |
| | | } |
| | | plcConfig.CurrentTryTimes = 0 |
| | | err = service.PlcWrite(plcConfig, constvar.PlcStartAddressTypeTotalNumber, procedure.Channel, order.Amount.IntPart()) |
| | | err = service.PlcWrite(plcConfig, fieldType, procedure.Channel, order.Amount.IntPart()) |
| | | if err != nil { |
| | | ctx.FailWithMsg(ecode.NeedConfirmedErr, "PLC请求失败,请检查PLC配置!") |
| | | return |
| | |
| | | if err != nil { |
| | | return err |
| | | } |
| | | err = service.NewProgressService().Add(db, procedure, order) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | record := model.TaskStatusSync{ |
| | | WorkOrderId: procedure.WorkOrderID, |
| | | ProcedureID: procedure.ProcedureID, |
| | | DeviceId: procedure.DeviceID, |
| | | IsProcessing: true, |
| | | IsFinish: false, |
| | | WorkOrderId: procedure.WorkOrderID, |
| | | ProcedureID: procedure.ProcedureID, |
| | | DeviceId: procedure.DeviceID, |
| | | ProductProcedureID: procedure.ProductProcedureID, |
| | | IsProcessing: true, |
| | | IsFinish: false, |
| | | } |
| | | return service.NewTaskService().SaveTaskStatusSync(db, &record) |
| | | }) |
| | |
| | | return |
| | | } |
| | | |
| | | service.TaskFlagSet(conf.Conf.CurrentDeviceID, procedure.Channel, int(procedure.ID)) |
| | | service.TaskStartTimeSet(conf.Conf.CurrentDeviceID, procedure.Channel, time.Now().Unix()) //设置工序运行开始时间 |
| | | service.TaskEndTimeSet(conf.Conf.CurrentDeviceID, procedure.Channel, 0) //设置工序运行结束时间 |
| | | service.TaskFlagSet(procedure.DeviceID, procedure.Channel, int(procedure.ID)) |
| | | service.TaskStartTimeSet(procedure.DeviceID, procedure.Channel, time.Now().Unix()) //设置工序运行开始时间 |
| | | service.TaskEndTimeSet(procedure.DeviceID, procedure.Channel, 0) //设置工序运行结束时间 |
| | | ctx.Ok() |
| | | } |
| | | |
| | |
| | | logx.Errorf("miss param address, k:%v, v:%v", k, v) |
| | | continue |
| | | } |
| | | err := service.PlcWriteDirect(plcConfig, address, v) |
| | | err := service.PlcWriteDirect(plcConfig, v, &model.DevicePlcAddress{ |
| | | StartAddress: address, |
| | | }) |
| | | if err != nil { |
| | | plcConfig.CurrentErr = err |
| | | failedNumbers++ |
| | |
| | | return |
| | | } |
| | | |
| | | nowTs := time.Now().Unix() |
| | | flagMap := make(map[int32]struct{}, 0) |
| | | for _, task := range taskResponse.Tasks { |
| | | if _, ok := flagMap[task.Channel]; !ok && !service.TaskFlagGet(conf.Conf.CurrentDeviceID, task.Channel) && task.Procedure.StartTime <= nowTs { |
| | | if _, ok := flagMap[task.Channel]; !ok && !service.TaskFlagGet(conf.Conf.CurrentDeviceID, task.Channel) { |
| | | task.CanStarted = true |
| | | flagMap[task.Channel] = struct{}{} |
| | | } |