From a93b0e99036c24b9bd58c79bf5e7364b1ba28bae Mon Sep 17 00:00:00 2001
From: 杨前锦 <1010338399@qq.com>
Date: 星期二, 01 七月 2025 16:02:33 +0800
Subject: [PATCH] 福建佳通-流程优化

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/Program.cs |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 117 insertions(+), 0 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/Program.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/Program.cs
new file mode 100644
index 0000000..65e721b
--- /dev/null
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/Program.cs
@@ -0,0 +1,117 @@
+锘縰sing HH.WCS.Mobox3.FJJT.api;
+using HH.WCS.Mobox3.FJJT.core;
+using HH.WCS.Mobox3.FJJT.device;
+using HH.WCS.Mobox3.FJJT.process;
+using HH.WCS.Mobox3.FJJT.util;
+using HH.WCS.Mobox3.FJJT.wms;
+using Microsoft.Owin.Hosting;
+using NLog;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Net;
+using System.Net.Sockets;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using Topshelf;
+using Monitor = HH.WCS.Mobox3.FJJT.core.Monitor;
+
+namespace HH.WCS.Mobox3.FJJT
+{
+    internal class Program
+    {
+        static void Main(string[] args) {
+
+            string currentProcessName = Process.GetCurrentProcess().ProcessName;
+            Process[] processes = Process.GetProcessesByName(currentProcessName);
+            if (processes.Length <= 1)
+            {
+                Settings.Init();
+                //1.0 寮�惎api
+                Startup();
+                //2.0 寮�惎tcp
+                StartTcp();
+                //3.0 寮�惎绾跨▼
+                var rc = HostFactory.Run(x => {
+                    x.Service<WorkThread>(s => {
+                        s.ConstructUsing(name => new WorkThread());
+                        s.WhenStarted(tc => tc.Start());
+                        s.WhenStopped(tc => tc.Stop());
+                    });
+                    x.RunAsLocalSystem();
+
+                    x.SetDescription("hh123");
+                    x.SetDisplayName("hh123.wms");
+                    x.SetServiceName("hh123.wms");
+                });
+
+                var exitCode = (int)Convert.ChangeType(rc, rc.GetTypeCode());
+                Environment.ExitCode = exitCode;
+            }
+        }
+
+        private static void Startup() {
+            Console.WriteLine("Startup ApiController");
+            Task.Run(() => {
+                //var url = "http://192.168.1.87:8901";//{SettingHelper.port}
+                var url = $"http://+:{Settings.port}";//
+                Console.WriteLine(url);
+                using (WebApp.Start<Startup>(url)) {
+                    Console.WriteLine("Running on {0}", url);
+                    Console.ReadLine();
+                }
+            });
+        }
+        private static void StartTcp() {
+            //new TcpServer("192.168.1.87");
+            var host = Dns.GetHostEntry(Dns.GetHostName());
+            foreach (var ip in host.AddressList) {
+                if (ip.AddressFamily == AddressFamily.InterNetwork) {
+                    Console.WriteLine($"ip= {ip.ToString()}");
+                    new TcpServer(ip.ToString());
+                }
+            }
+        }
+
+        public class WorkThread
+        {
+            public void Start() {
+                List<Task> tasks = new List<Task>();
+                // 娣诲姞浠诲姟鎺ㄩ�绾跨▼
+                tasks.Add(GetTask(WCSCore.Dispatch));
+                // 鐩戝惉鎴愬瀷鏈哄彨鏂欎换鍔�+                tasks.Add(GetTask(Monitor.MonitorCXJCallMaterialMesTask));
+                // 鐩戝惉閽㈠寘婊℃枡涓嬬嚎浠诲姟
+                tasks.Add(GetTask(Monitor.MonitorGBOffLineMesTask));
+                // 鐩戝惉鏂滆浠诲姟琛�+                tasks.Add(GetTask(Monitor.MonitorXcTask));
+                // 鑷姩琛ュ厖绌哄伐瑁呬换鍔�+                tasks.Add(GetTask(Monitor.AutoReplenishEmptyPallet));
+                // 鐩戝惉鎵樼洏鐗╂枡琛ㄣ�鐗╂枡琛紝骞舵洿鏂�+ /*               tasks.Add(GetTask(Monitor.MonitorPalletAndMateral));*/
+                // 瀹氭椂鏇存柊搴撳瓨涓棿琛�+                tasks.Add(GetTask(Monitor.UpdateInventoryRegularly,60000));
+                // 瀹氭椂鎵规鐘舵�琛�+                tasks.Add(GetTask(Monitor.AutoUpdateBatchStatus, 60000));
+                Task.WaitAll(tasks.ToArray());
+            }
+            public void Stop() { Console.WriteLine("work stopped"); }
+            private Task GetTask(Action action ,int time = 3000) {
+                var task = Task.Run(() => {
+                    while (true) {
+                        try {
+                            action();
+                        }
+                        catch (Exception ex) {
+                            LogHelper.Error(ex.Message, ex);
+                        }
+                        Thread.Sleep(time);
+                    }
+                });
+                return task;
+            }
+        }
+    }
+}

--
Gitblit v1.9.1