Example #1
0
 void initUploadDpms()
 {
     UploadDpms = App.Store.asyncAction <MqActions.UploadDpms, bool>(
         async(dispatch, getState, instance) => {
         dispatch(instance);
         return(await Task.Run(() => {
             try {
                 activeMq.SendP2POneMessage(HmiConfig.QueueDpms, JsonConvert.SerializeObject(instance.MqUploadDpms));
                 App.Store.Dispatch(new SysActions.ShowNotification(new SysNotificationMsg()
                 {
                     Title = "提交成功"
                 }));
                 App.Store.Dispatch(new SimpleAction(MqActions.UPLOAD_DPMS_SUCCESS));
                 return true;
             } catch {
                 App.Store.Dispatch(new SysActions.ShowNotification(new SysNotificationMsg()
                 {
                     Title = "提交失败",
                     Content = "请检查网络连接或联系管理员"
                 }));
                 App.Store.Dispatch(new SimpleAction(MqActions.UPLOAD_DPMS_FAILED));
             }
             return false;
         }));
     }
         );
 }
Example #2
0
 /// <summary>
 /// 上传任何基于MongoDoc的数据
 /// </summary>
 void initUploadDocMongo()
 {
     UploadDocToMongo = App.Store.asyncActionVoid <DbActions.UploadDocToMongo>(async(dispatch, getState, instance) => {
         dispatch(instance);
         await MongoService.GetDatabase(instance.DbName).GetCollection <MongoDoc>(instance.Collection)
         .InsertOneAsync(instance.Doc);
         App.Store.Dispatch(new SimpleAction(DbActions.UPLOAD_DOC_TO_MONGO_SUCCESS));
     });
 }
Example #3
0
 /// <summary>
 /// 上传采集参数到时态数据库
 /// </summary>
 void initUploadCpmsInfluxDb()
 {
     UploadCpmsInfluxDb = App.Store.asyncActionVoid <DbActions.UploadCpmsInfluxDb>(
         async(dispatch, getState, instance) => {
         dispatch(instance);
         updateCache2(instance);
         //updateCache1(instance);
     });
 }
Example #4
0
 /// <summary>
 /// 加载 GlobalConfig 和 初始化 xxHelper
 /// </summary>
 void initLoadGlobalConfig()
 {
     LoadGlobalConfig = App.Store.asyncAction <LoadActions.LoadGlobalConfig, bool>(
         async(dispatch, getState, instance) => {
         dispatch(instance);
         return(await Task.Run(() =>
                               globalConfigLoad()
                               ));
     });
 }
Example #5
0
 public MockEffects(MqService mqService)
 {
     this.mqService    = mqService;
     MockSchTaskAccept =
         App.Store.asyncActionVoid <MockActions.MockSchTaskAccpet>(async(dispatch, getState, instance) => {
         await Task.Run(() => {
             mqService.SchTaskAccept(JsonConvert.SerializeObject(instance.SchTask));
         });
     });
 }
Example #6
0
 /// <summary>
 /// 加载 MachineConfig,主要是初始化 CpmInfo
 /// </summary>
 void initLoadMachineConfig()
 {
     LoadMachineConfig = App.Store.asyncAction <LoadActions.LoadMachieConfig, bool>(
         async(dispatch, getState, instance) => {
         dispatch(instance);
         updateLoadingMessage("正在加载机台配置...", 0.4);
         return(await Task.Run(() => {
             loadConfigByGlobal();
             return true;
         }));
     });
 }
Example #7
0
 void initStartUploadCpmsIntervalEffect()
 {
     StartUploadCpmsInterval =
         App.Store.asyncActionVoid <MqActions.StartUploadCpmsInterval>(async(dipatch, getState, instance) => {
         dipatch(instance);
         await Task.Run(() => {
             YUtil.SetInterval(instance.Interval, () => {
                 App.Store.Dispatch(UploadCpms(new MqActions.UploadCpms(getState().CpmState.OnlineCpmsDict, instance.QueueName)));
             });
         });
     });
 }
Example #8
0
        /// <summary>
        /// 初始化上面的 Effect
        /// </summary>
        /// <param name="sysService"></param>
        public SysEffects(SysService sysService)
        {
            UnityIocService.AssertIsFirstInject(GetType());
            Logger = LoggerHelper.CreateLogger(GetType().ToString());
            //启动http解析服务
            StartHttpSystem = App.Store.asyncAction <SysActions.StartHttpSystem, bool>(
                async(dispatch, getState, instance) => {
                dispatch(instance);
                var isStarted = await sysService.StartHttpSystem(instance);
                if (isStarted)
                {
                    App.Store.Dispatch(new SysActions.StartHttpSystemSuccess());
                }
                else
                {
                    App.Store.Dispatch(new SysActions.StartHttpSystemFailed());
                }
                return(isStarted);
            });
            //启动关闭显示器定时器
            StartCloseScreenTimer = App.Store.asyncActionVoid <SysActions.StartCloseScreenTimer>(
                async(dispatch, getState, instance) => {
                dispatch(instance);
                await Task.Run(() => {
                    if (CloseScrrenTimer != null)
                    {
                        YUtil.RecoveryTimeout(CloseScrrenTimer);
                    }
                    else
                    {
                        CloseScrrenTimer = YUtil.SetInterval(instance.Interval, () => {
                            App.Store.Dispatch(new SysActions.CloseScreen());
                        });
                    }
                });
            });

            //停止关闭显示器定时器
            StopCloseScrenTimer = App.Store.asyncActionVoid <SysActions.StopCloseScreenTimer>(
                async(dispatch, getState, instance) => {
                dispatch(instance);
                await Task.Run(() => {
                    if (CloseScrrenTimer != null)
                    {
                        YUtil.ClearTimeout(CloseScrrenTimer);
                    }
                });
            });
        }
Example #9
0
 void initUploadAlarm()
 {
     UploadAlarm = App.Store.asyncActionVoid <MqActions.UploadAlarmMq>(async(dispatch, getState, instance) => {
         dispatch(instance);
         await Task.Run(() => {
             try {
                 activeMq.SendP2POneMessage(instance.QueueName, JsonConvert.SerializeObject(instance.MqAlarm));
                 App.Store.Dispatch(new SimpleAction(MqActions.UPLOAD_ALARM_SUCCESS));
             } catch (Exception e) {
                 App.Store.Dispatch(new SimpleAction(MqActions.UPLOAD_ALARM_FAILED));
                 Logger.Error("上传报警到Mq失败", e);
             }
         });
     });
 }
Example #10
0
 void initUploadSchTaskManu()
 {
     UploadSchTaskManu = App.Store.asyncAction <MqActions.UploadSchTaskManu, bool>(
         async(dispatch, getState, instance) => {
         dispatch(instance);
         return(await Task.Run(() => {
             try {
                 activeMq.SendP2POneMessage(instance.QueueName, JsonConvert.SerializeObject(instance.MqUploadManu));
                 return true;
             } catch {
             }
             return false;
         }));
     });
 }
Example #11
0
 void initStartListenCmd()
 {
     StartListenCmd = App.Store.asyncAction <MqActions.StartListenCmd, bool>(
         async(dispatch, getState, instance) => {
         dispatch(instance);
         return(await Task.Run(() => {
             try {
                 activeMq.ListenTopic(instance.TopicName, instance.Id, null, mqService.CmdAccept);
                 return true;
             } catch (Exception e) {
                 dispatch(new SimpleAction(MqActions.START_LISTEN_CMD_FAILED, e));
             }
             return false;
         }));
     });
 }
Example #12
0
 /// <summary>
 /// 上传能耗
 /// </summary>
 void initUploadElecPower()
 {
     UploadElecPower = App.Store.asyncAction <MqActions.UploadElecPower, bool>(
         async(dispatch, getState, instance) => {
         return(await Task.Run(() => {
             try {
                 String str = JsonConvert.SerializeObject(instance.elec);
                 App.Logger.Info("回传总电能:" + str);
                 activeMq.SendP2POneMessage(HmiConfig.QueUploadPowerElec, str);
                 return true;
             } catch (Exception e) {
                 App.Logger.Error("上传能耗失败", e);
             }
             return false;
         }));
     });
 }
Example #13
0
 void initCallSystem()
 {
     CallSystem = App.Store.asyncAction <MqActions.CallSystem, bool>(
         async(dispatch, getState, instance) => {
         dispatch(instance);
         return(await Task.Run(() => {
             try {
                 activeMq.SendP2POneMessage(HmiConfig.QueueCallSystem, JsonConvert.SerializeObject(instance.MqCall));
                 dispatch(new SimpleAction(MqActions.CALL_SYSTEM_SUCCESS));
                 return true;
             } catch (Exception e) {
                 dispatch(new SimpleAction(MqActions.CALL_SYSTEM_FAILED, e));
             }
             return false;
         }));
     });
 }
Example #14
0
 public CpmEffects(StorePro <AppState> store, CpmCore cpmCore)
 {
     CpmCore     = cpmCore;
     StorePro    = store;
     StartServer = store.asyncAction <CpmActions.StartServer, bool>(async(dispatch, getState, startServer) => {
         dispatch(startServer);
         try {
             await cpmCore.StartAsync(startServer.Ip, startServer.Port);
             dispatch(new CpmActions.StartServerSuccess());
             return(true);
         } catch (Exception e) {
             dispatch(new CpmActions.StartServerFailed()
             {
                 Exception = e
             });
         }
         return(false);
     });
 }
Example #15
0
        void initStartListenEmpRfid()
        {
            StartListenEmpRfid = App.Store.asyncAction <MqActions.StartListenEmpRfid, bool>(
                async(dispatch, getState, instance) => {
                dispatch(instance);
                return(await Task.Run(() => {
                    try {
                        activeMq.ListenTopic(instance.TopicName, instance.Id, null, mqService.EmpRfidAccept);
                        dispatch(new MqActions.StartListenEmpRfidSuccess());
                        return true;
                    } catch (Exception e) {
                        dispatch(new MqActions.StartListenEmpRfidFailed(e));
                    }
                    return false;
                }));
            }

                );
        }
Example #16
0
 void initSchTaskEffect()
 {
     StartListenSchTask =
         App.Store.asyncAction <MqActions.StartListenSchTask, bool>(async(dispatch, getState, instance) => {
         dispatch(instance);
         var result = await Task.Run(() => {
             try {
                 activeMq.ListenP2PMessage(instance.QueueName, this.mqService.SchTaskAccept);
                 dispatch(new MqActions.StartListenSchTaskSuccess(instance.MachineCode));
                 return(true);
             } catch (Exception e) {
                 dispatch(new MqActions.StartListenSchTaskFailed()
                 {
                     Exp = e, MachineCode = instance.MachineCode
                 });
             }
             return(false);
         });
         return(result);
     });
 }
Example #17
0
 private void initWriteStringAsync()
 {
     WriteCmd = App.Store.asyncAction <PipeActions.WriteCmd, bool>(
         async(dispatch, getState, instance) => {
         dispatch(instance);
         return(await Task.Run(() => {
             try {
                 NamedPipeClientStream pipeStream = new NamedPipeClientStream(instance.PipeServerName, instance.PipeName, PipeDirection.Out, PipeOptions.Asynchronous);
                 pipeStream.Connect(3000);
                 var str = JsonConvert.SerializeObject(instance.Cmd);
                 byte[] buffer = Encoding.UTF8.GetBytes(str);
                 pipeStream.BeginWrite(buffer, 0, buffer.Length, asyncSend, pipeStream);
                 return true;
             } catch (Exception e) {
                 App.Store.Dispatch(new SimpleAction(PipeActions.WRITE_CMD_FAILED, e));
                 Logger.Error("往管道写入数据失败", e);
             }
             return false;
         }));
     });
 }
Example #18
0
 void initStartListenScanMaterial()
 {
     StartListenScanMaterial =
         App.Store.asyncAction <MqActions.StartListenScanMaterial, bool>(async(dispatch, getState, instance) => {
         dispatch(instance);
         return(await Task.Run(() => {
             try {
                 activeMq.ListenP2PMessage(instance.QueueName, json => {
                     mqService.ScanMaterialAccept(instance.MachineCode, json);
                 });
                 App.Store.Dispatch(new MqActions.StartListenScanMaterialSuccess(instance.MachineCode));
                 return true;
             } catch (Exception e) {
                 App.Store.Dispatch(new MqActions.StartListenScanMaterialFailed()
                 {
                     Exp = e, MachineCode = instance.MachineCode
                 });
             }
             return false;
         }));
     });
 }
Example #19
0
        /// <summary>
        /// 对程序进行配置
        /// </summary>
        /// <param name="e"></param>
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            ReduxIoc.Init();
            if (!YUtil.CheckProcessIsExist(HmiConfig.AsylumProcessName))
            {
                string asylumnArgs = "";
                if (HmiConfig.IsDevUserEnv)
                {
                    asylumnArgs = "--autostart false --HmiPath " + YUtil.GetAbsolutePath(".\\HmiPro.exe");
                }
                //YUtil.Exec(YUtil.GetAbsolutePath(@".\Asylum\Asylum.exe"), asylumnArgs);
            }

            Store = UnityIocService.ResolveDepend <StorePro <AppState> >();
            //异步初始化,直接进入 DxWindow
            Task.Run(() => {
                hmiConfigInit(e);
                initSubscribe();
                //通知 DxWindow 初始化完毕
                Store.Dispatch(new SysActions.AppXamlInited(e));
            });
        }
Example #20
0
        public static void Init()
        {
            UnityIocService.AssertIsFirstInject(typeof(ReduxIoc));
            //== 注入 redux 相关数据
            var reducer = new CompositeReducer <AppState>()
                          .Part(s => s.CpmState, CpmReducer.Create())
                          .Part(s => s.SysState, SysReducer.Create())
                          .Part(s => s.MqState, MqReducer.Create())
                          .Part(s => s.AlarmState, AlarmReducer.Create())
                          .Part(s => s.OeeState, OeeReducer.Create())
                          .Part(s => s.DMesState, DMesReducer.Create())
                          .Part(s => s.ViewStoreState, ViewStoreReducer.Create())
                          .Part(s => s.DpmStore, DpmReducer.Create());

            var storePro = new StorePro <AppState>(reducer);

            //== 设置依赖注入
            UnityIocService.RegisterGlobalDepend(storePro);
            UnityIocService.RegisterGlobalDepend <CpmCore>();
            UnityIocService.RegisterGlobalDepend <CpmEffects>();
            UnityIocService.RegisterGlobalDepend <SysService>();
            UnityIocService.RegisterGlobalDepend <SysEffects>();
            UnityIocService.RegisterGlobalDepend <MqService>();
            UnityIocService.RegisterGlobalDepend <MqEffects>();
            UnityIocService.RegisterGlobalDepend <MockEffects>();
            UnityIocService.RegisterGlobalDepend <DbEffects>();
            UnityIocService.RegisterGlobalDepend <DMesCore>();
            UnityIocService.RegisterGlobalDepend <SchCore>();
            UnityIocService.RegisterGlobalDepend <OeeCore>();
            UnityIocService.RegisterGlobalDepend <AlarmCore>();
            UnityIocService.RegisterGlobalDepend <ViewStoreCore>();
            UnityIocService.RegisterGlobalDepend <DpmCore>();
            UnityIocService.RegisterGlobalDepend <PipeEffects>();
            UnityIocService.RegisterGlobalDepend <LoadEffects>();
            UnityIocService.RegisterGlobalDepend <HookCore>();
        }
Example #21
0
        void initUploadCpmsEffect()
        {
            UploadCpms = App.Store.asyncActionVoid <MqActions.UploadCpms>(async(dispatch, getState, instance) => {
                var task = Task.Run(() => {
                    var cpmsDict = instance.CpmsDict;
                    foreach (var pair in cpmsDict)
                    {
                        var machineCode       = pair.Key;
                        var machineCpms       = pair.Value;
                        MqUploadCpms uCpms    = new MqUploadCpms();
                        uCpms.machineCode     = machineCode;
                        var setting           = GlobalConfig.MachineSettingDict[machineCode];
                        var cpmNameToCodeDict = MachineConfig.MachineDict[machineCode].CpmNameToCodeDict;
                        //fix: 2018-1-24
                        if (cpmNameToCodeDict.ContainsKey(setting.MqNeedSpeed))
                        {
                            if (getState().CpmState.OnlineCpmsDict[machineCode]
                                .TryGetValue(cpmNameToCodeDict[setting.MqNeedSpeed], out var speedCpm))
                            {
                                uCpms.macSpeed = speedCpm.Value;
                            }
                        }
                        // fix: 2018-1-24
                        if (cpmNameToCodeDict.ContainsKey(setting.Od))
                        {
                            if (getState().CpmState.OnlineCpmsDict[machineCode]
                                .TryGetValue(cpmNameToCodeDict[setting.Od], out var od))
                            {
                                uCpms.diameter = od.Value.ToString();
                            }
                        }
                        //update:2018-4-13,添加总电能
                        if (cpmNameToCodeDict.ContainsKey(setting.totalPower))
                        {
                            if (getState().CpmState.OnlineCpmsDict[machineCode]
                                .TryGetValue(cpmNameToCodeDict[setting.totalPower], out var tp))
                            {
                                uCpms.totalPower = tp.Value.ToString();
                            }
                        }

                        uCpms.TimeEff    = getState().OeeState.OeeDict[machineCode].TimeEff.ToString("0.00");
                        uCpms.SpeedEff   = getState().OeeState.OeeDict[machineCode].SpeedEff.ToString("0.00");
                        uCpms.QualityEff = getState().OeeState.OeeDict[machineCode].QualityEff.ToString("0.00");
                        //机台状态
                        string state     = MqUploadCpms.MachineState.Running;
                        var machineState = getState().CpmState.MachineStateDict[machineCode];
                        if (machineState.Count > 0)
                        {
                            if (machineState.Last().StatePoint == MachineState.State.Start)
                            {
                                state = MqUploadCpms.MachineState.Running;
                            }
                            else if (machineState.Last().StatePoint == MachineState.State.Stop)
                            {
                                state = MqUploadCpms.MachineState.Closed;
                            }
                            else if (machineState.Last().StatePoint == MachineState.State.Repair)
                            {
                                state = MqUploadCpms.MachineState.Repairing;
                            }
                        }
                        uCpms.machineState  = state;
                        uCpms.paramInfoList = new List <UploadParamInfo>();
                        //如果底层没有采集到数据则不上传
                        bool canUpload = false;
                        foreach (var cpmPair in machineCpms)
                        {
                            var cpm = cpmPair.Value;
                            if (cpm.ValueType == SmParamType.Signal && cpm.Code >= 500 && cpm.Code < 1000)
                            {
                                canUpload = true;
                            }
                            var uInfo = new UploadParamInfo()
                            {
                                paramCode     = cpm.Code.ToString(),
                                paramName     = cpm.Name,
                                paramValue    = cpm.Value,
                                valueType     = cpm.ValueType,
                                pickTimeStamp = cpm.PickTimeStampMs,
                            };
                            uCpms.paramInfoList.Add(uInfo);
                        }
                        try {
                            if (canUpload)
                            {
                                activeMq.SendP2POneMessage(instance.QueueName, JsonConvert.SerializeObject(uCpms));
                            }
                            else
                            {
                                App.Logger.Info("所有数据为空,不上传 Mq", false, ConsoleColor.White);
                            }
                            App.Store.Dispatch(new MqActions.UploadCpmsSuccess());
                        } catch (Exception e) {
                            App.Store.Dispatch(new MqActions.UploadCpmsFailed()
                            {
                                Exp = e
                            });
                        }
                    }
                });

                //每个机台等待3s
                var awaitTime = MachineConfig.MachineDict.Count * 3000;
                if (await Task.WhenAny(task, Task.Delay(awaitTime)) == task)
                {
                    //在时间之内完成了task
                }
                else
                {
                    //超时
                    Logger.Error("上传实时参数到 Mq 超时", 36000);
                    App.Store.Dispatch(new MqActions.UploadCpmsFailed()
                    {
                        Exp = new Exception($"上传超时 {awaitTime / 1000}s ")
                    });
                }
                task.Dispose();
            });
        }