From 6c985ca1423b805e83824d98353ab5132f047902 Mon Sep 17 00:00:00 2001
From: xcd <834800634@qq.com>
Date: 星期一, 13 七月 2020 12:32:53 +0800
Subject: [PATCH] 更改流程载入操作

---
 src/Bro.UI.Config/MenuForms/FrmOperation.cs |   11 +++--
 src/Bro.UI.Config/MainFrm.cs                |   76 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 82 insertions(+), 5 deletions(-)

diff --git a/src/Bro.UI.Config/MainFrm.cs b/src/Bro.UI.Config/MainFrm.cs
index b2d717e..03faa5b 100644
--- a/src/Bro.UI.Config/MainFrm.cs
+++ b/src/Bro.UI.Config/MainFrm.cs
@@ -270,7 +270,80 @@
             //{
             //    wait.SpinOnce();
             //}
+
+            LoadProcess();
+
             LoadLayoutFromXML(m_deserializeDeviceRunFrm);
+
+            LoadProcess(false);
+        }
+
+        private List<string> LoadProcessCode()
+        {
+            var systemProcessCodes = ProcessFactory.GetProcessCodes();
+            var avaiableProcessCodes = SettingHelper.GetProcessCodes();
+
+            List<string> pCodes = new List<string>();
+
+            if (avaiableProcessCodes.Count > 0)
+            {
+                pCodes = avaiableProcessCodes.Intersect(systemProcessCodes).ToList();
+            }
+            else
+            {
+                pCodes = systemProcessCodes;
+            }
+
+            return pCodes;
+        }
+
+        private List<string> LoadProductionCode()
+        {
+            return SettingHelper.GetProductionCodes();
+        }
+
+        private void LoadProcess(bool isInitialProcess = true)
+        {
+            if (isInitialProcess)
+            {
+                _process = ProcessFactory.CreateStationProcess(LoadProcessCode()[0], LoadProductionCode()[0], out string msg);
+
+                if (!string.IsNullOrWhiteSpace(msg))
+                {
+                    _process = null;
+                    //LogAsync(DateTime.Now, "Process鍒涘缓澶辫触", $"{msg}");
+                    throw new ProcessException($"Process鍒涘缓澶辫触,{msg}", null, ExceptionLevel.Fatal);
+                }
+
+
+                _process.InitialProcess("");
+            }
+            _process.OnLog -= OnProcessLogOutput;
+            _process.OnLog += OnProcessLogOutput;
+
+            _process.OnAlarmUpdate -= Process_OnAlarmUpdate;
+            _process.OnAlarmUpdate += Process_OnAlarmUpdate;
+
+            //CloseAllDeviceFrm();
+            LoadDevices();
+
+            try
+            {
+                foreach (var dock in dockPanelMain.Contents)
+                {
+                    MenuFrmBase m = dock as MenuFrmBase;
+
+                    m.DownloadProcess(_process);
+                }
+            }
+            catch (Exception ex)
+            {
+            }
+        }
+
+        private void OnProcessLogOutput(DateTime dt, string prefix, string msg)
+        {
+            DockFrm_OnLogMsgOutput(new LogMsg(dt, prefix, msg));
         }
 
         private void CloseAllDocuments()
@@ -429,6 +502,9 @@
                     if (u == null)
                         return;
 
+                    if (_process.DeviceCollection.Any(d => d.Id == u.Device.Id))
+                        return;
+
                     u.DockPanel = null;
                     u.Close();
                 });
diff --git a/src/Bro.UI.Config/MenuForms/FrmOperation.cs b/src/Bro.UI.Config/MenuForms/FrmOperation.cs
index e1c128c..455f1aa 100644
--- a/src/Bro.UI.Config/MenuForms/FrmOperation.cs
+++ b/src/Bro.UI.Config/MenuForms/FrmOperation.cs
@@ -133,11 +133,11 @@
 
         private void FrmOperation_Load(object sender, System.EventArgs e)
         {
-            if ((!plProcess.Visible) && (!plProduct.Visible) && _isFirstLoad)
-            {
-                LoadProcess();
-                _isFirstLoad = false;
-            }
+            //if ((!plProcess.Visible) && (!plProduct.Visible) && _isFirstLoad)
+            //{
+            //    LoadProcess();
+            //    _isFirstLoad = false;
+            //}
 
             btnStart.Enabled = true;
         }
@@ -205,6 +205,7 @@
                 }
 
                 //Process.OnProcessStateChanged += Process_OnProcessStateChanged;
+                Process.OnLog -= Process_OnLog;
                 Process.OnLog += Process_OnLog;
 
                 _currentProcssCode = _processCode;

--
Gitblit v1.8.0