| | |
| | | |
| | | var s *gocron.Scheduler |
| | | |
| | | func StartTask() error { |
| | | func StartTask(isMaster bool) error { |
| | | finishNumberTimeInterval := conf.Conf.PLC.FinishNumberTimeInterval |
| | | totalNumberTimeInterval := conf.Conf.PLC.TotalNumberTimeInterval |
| | | if finishNumberTimeInterval == 0 { |
| | |
| | | |
| | | }) |
| | | |
| | | s.Every(60).Seconds().Do(SyncProductionProgress) //同步生产数据 |
| | | s.Every(30).Seconds().Do(SyncTaskStatus) //同步任务状态 |
| | | if isMaster { |
| | | s.Every(60).Seconds().Do(SyncProductionProgress) //同步生产数据 |
| | | s.Every(30).Seconds().Do(SyncTaskStatus) //同步任务状态 |
| | | } |
| | | s.StartAsync() |
| | | return nil |
| | | } |
| | | |
| | | func SyncProductionProgress() { |
| | | plcConfig, code := service.NewDevicePlcService().GetDevicePlc() |
| | | if code != ecode.OK { |
| | | progressList, err := service.NewProgressService().GetProgressList() |
| | | if err != nil { |
| | | logx.Errorf("SyncProductionProgress get records err:%v", err) |
| | | return |
| | | } |
| | | var channels []int32 |
| | | for _, item := range plcConfig.Details { |
| | | if item.FieldName == constvar.PlcStartAddressTypeFinishNumber { |
| | | channels = append(channels, item.Channel) |
| | | } |
| | | } |
| | | for _, channel := range channels { |
| | | progress, err := service.NewProgressService().GetCurrentProgress(channel) |
| | | if err != nil { |
| | | return |
| | | } |
| | | if progress == nil { |
| | | return |
| | | } |
| | | |
| | | for _, progress := range progressList { |
| | | caller := nsq.NewCaller(fmt.Sprintf(constvar.NsqTopicSyncTaskProgress, conf.Conf.NsqConf.NodeId), "") |
| | | err = caller.Send(progress) |
| | | if err != nil { |
| | |
| | | } |
| | | } |
| | | |
| | | func StopTask() { |
| | | func RestartTask(isMaster bool) error { |
| | | if s != nil { |
| | | s.Stop() |
| | | } |
| | | return StartTask(isMaster) |
| | | } |
| | | |
| | | // Once 一次性任务 |
| | | func Once() { |
| | | func Once(isMaster bool) { |
| | | if !isMaster { |
| | | return |
| | | } |
| | | msg := &common.MsgPullDataRequest{DataType: common.PullDataTypeProcessModel} |
| | | caller := nsq.NewCaller(fmt.Sprintf(constvar.NsqTopicPullDataRequest, conf.Conf.NsqConf.NodeId), constvar.NsqTopicPullDataResponse) |
| | | err := caller.Send(msg) |