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