From 16d2162a833cebeae72c363962917bb9da8145ef Mon Sep 17 00:00:00 2001
From: 杨前锦 <1010338399@qq.com>
Date: 星期五, 06 六月 2025 17:34:47 +0800
Subject: [PATCH] 福建佳通优化

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/Program.cs |  115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 115 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..1de6c57
--- /dev/null
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/Program.cs
@@ -0,0 +1,115 @@
+锘縰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));
+                // 鐩戝惉MES浠诲姟锛屼笅鍙戜换鍔�+                tasks.Add(GetTask(Monitor.MonitorMesTask));
+                // 鐩戝惉鏂滆鍑哄簱浠诲姟琛�+                tasks.Add(GetTask(Monitor.MonitorXcOutTask));
+                // 鑷姩琛ュ厖绌哄伐瑁呬换鍔�+                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