IStation.DataDocking.Api.sln
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,37 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.1.32328.378 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IStation.DataDocking.Api", "IStation.DataDocking.Api\IStation.DataDocking.Api.csproj", "{0C528556-BB5A-477F-806E-2A441531D3D5}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IStation.DataDockingApi.JTMeter", "IStation.DataDockingApi.JTMeter\IStation.DataDockingApi.JTMeter.csproj", "{64744652-C278-4439-8343-3872F07FFB45}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IStation.TopShelf.DataDocking4Api", "IStation.TopShelf.DataDocking4Api\IStation.TopShelf.DataDocking4Api.csproj", "{F77F77DE-C9C0-4F1A-8934-D3A435182C91}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {0C528556-BB5A-477F-806E-2A441531D3D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0C528556-BB5A-477F-806E-2A441531D3D5}.Debug|Any CPU.Build.0 = Debug|Any CPU {0C528556-BB5A-477F-806E-2A441531D3D5}.Release|Any CPU.ActiveCfg = Release|Any CPU {0C528556-BB5A-477F-806E-2A441531D3D5}.Release|Any CPU.Build.0 = Release|Any CPU {64744652-C278-4439-8343-3872F07FFB45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {64744652-C278-4439-8343-3872F07FFB45}.Debug|Any CPU.Build.0 = Debug|Any CPU {64744652-C278-4439-8343-3872F07FFB45}.Release|Any CPU.ActiveCfg = Release|Any CPU {64744652-C278-4439-8343-3872F07FFB45}.Release|Any CPU.Build.0 = Release|Any CPU {F77F77DE-C9C0-4F1A-8934-D3A435182C91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F77F77DE-C9C0-4F1A-8934-D3A435182C91}.Debug|Any CPU.Build.0 = Debug|Any CPU {F77F77DE-C9C0-4F1A-8934-D3A435182C91}.Release|Any CPU.ActiveCfg = Release|Any CPU {F77F77DE-C9C0-4F1A-8934-D3A435182C91}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E02989A8-9B6F-43E5-AACA-790328215089} EndGlobalSection EndGlobal IStation.DataDocking.Api/GlobalUsings.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,5 @@ global using Yw; global using Yw.Untity; global using Yw.Service; global using Yw.Server; global using Quartz; IStation.DataDocking.Api/IStation.DataDocking.Api.csproj
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,25 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>disable</Nullable> <AssemblyName>IStation.DataDocking.Api</AssemblyName> <RootNamespace>IStation.DataDocking</RootNamespace> <GenerateDocumentationFile>True</GenerateDocumentationFile> </PropertyGroup> <ItemGroup> <Folder Include="Properties\" /> </ItemGroup> <ItemGroup> <PackageReference Include="Yw.DataDocking.Api.Core" Version="3.0.2" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\IStation.DataDockingApi.JTMeter\IStation.DataDockingApi.JTMeter.csproj" /> </ItemGroup> </Project> IStation.DataDocking.Api/IStation.DataDocking.Api.csproj.user
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <_LastSelectedProfileId>D:\WorkData\git\istation\webapi\v4.2\Service.V4.2\Server\IStation.DataDocking.Api\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId> </PropertyGroup> </Project> IStation.DataDocking.Api/Program.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ // See https://aka.ms/new-console-template for more information LogHelper.Info("APIæ°æ®å¯¹æ¥æå¡æ£å¨å¯å¨..."); var jobHelper = new ApiJobHelper(); await jobHelper.StartJob(); AppDomain.CurrentDomain.ProcessExit += async (sender, e) => { await jobHelper.CancelJob(); }; LogHelper.Info("APIæ°æ®å¯¹æ¥æå¡å¯å¨æåï¼"); Console.ReadLine(); IStation.DataDocking.Api/Properties/PublishProfiles/FolderProfile.pubxml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ <?xml version="1.0" encoding="utf-8"?> <!-- https://go.microsoft.com/fwlink/?LinkID=208121. --> <Project> <PropertyGroup> <Configuration>Release</Configuration> <Platform>Any CPU</Platform> <PublishDir>bin\Release\net6.0\publish\</PublishDir> <PublishProtocol>FileSystem</PublishProtocol> </PropertyGroup> </Project> IStation.DataDocking.Api/Properties/PublishProfiles/FolderProfile.pubxml.user
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <!-- https://go.microsoft.com/fwlink/?LinkID=208121. --> <Project> <PropertyGroup> <History>True|2023-07-15T07:00:50.8280821Z;True|2023-07-15T14:14:42.0826207+08:00;True|2023-07-14T22:12:25.7041577+08:00;True|2023-07-12T10:19:32.0353122+08:00;True|2023-07-12T09:58:24.0623166+08:00;True|2023-07-12T09:48:23.4447126+08:00;True|2023-06-13T16:22:32.7349659+08:00;True|2023-06-13T15:04:34.9832999+08:00;</History> </PropertyGroup> </Project> IStation.DataDockingApi.JTMeter/00-core/HttpRequestHelper.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,66 @@ namespace IStation.DataDockingApi { internal class HttpRequestHelper { /// <summary> /// ç»å½ /// </summary> public static Result_Login Login() { var appParas = AppParasHelper.Get(); var data = JsonHelper.Object2Json(appParas.account); using (var httpClient = new HttpClient()) using (var request = new HttpRequestMessage(HttpMethod.Post, appParas.url.token)) { request.Headers.Add("KeepAlive", "false"); request.Headers.Add("X-Requested-With", "XMLHttpRequest"); request.Content = new StringContent(data, Encoding.UTF8, "application/json"); var response = httpClient.SendAsync(request).Result; response.EnsureSuccessStatusCode(); var responsetext = response.Content.ReadAsStringAsync().Result; return JsonHelper.Json2Object<Result_Login>(responsetext); } } /// <summary> /// åå² /// </summary> public static Result_History History(string url, string token) { using (var httpClient = new HttpClient()) using (var request = new HttpRequestMessage(HttpMethod.Post, url)) { request.Headers.Add("KeepAlive", "false"); if (!string.IsNullOrEmpty(token)) { request.Headers.Add("Access-Token", token); } var response = httpClient.SendAsync(request).Result; response.EnsureSuccessStatusCode(); var responsetext = response.Content.ReadAsStringAsync().Result; return JsonHelper.Json2Object<Result_History>(responsetext); } } /// <summary> /// Get /// </summary> public static string Get(string url) { using (var httpClient = new HttpClient()) using (var request = new HttpRequestMessage(HttpMethod.Get, url)) { request.Headers.Add("KeepAlive", "false"); var response = httpClient.SendAsync(request).Result; response.EnsureSuccessStatusCode(); var responsetext = response.Content.ReadAsStringAsync().Result; return responsetext; } } } } IStation.DataDockingApi.JTMeter/00-core/LastCollectHelper.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ namespace IStation.DataDockingApi { internal class LastCollectHelper { private static Dictionary<string, DateTime> _dict = new Dictionary<string, DateTime>(); /// <summary> /// 设置æè¿æ¶é´ /// </summary> public static bool SetLastTime(string code, DateTime time) { if (!_dict.ContainsKey(code)) { _dict.Add(code, time); return true; } if (time <= _dict[code]) { return false; } _dict[code] = time; return true; } } } IStation.DataDockingApi.JTMeter/00-core/TokenHelper.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,69 @@ namespace IStation.DataDockingApi { /// <summary> /// Token /// </summary> public class TokenHelper { private static DateTime _lastTokenTime; private static string _token = null; //è·åToken private static string GetToken() { var result = HttpRequestHelper.Login(); if (result == null) { return default; } if (result.status != "SUCCESS") { var json = JsonHelper.Object2Json(result); LogHelper.Info(json); return default; } return result.content.token; } //éªè¯è¿ææ¶é´ private static bool Verify() { var appParas = AppParasHelper.Get(); if (_lastTokenTime.AddHours(appParas.expire) < DateTime.Now) { return false; } return true; } /// <summary> /// è·å (éªè¯è¿ææ¶é´ï¼ä½¿ç¨ç¼åtoken) /// </summary> public static string Get() { if (string.IsNullOrEmpty(_token)) { _token = GetToken(); _lastTokenTime = DateTime.Now; } if (!Verify()) { _token = GetToken(); _lastTokenTime = DateTime.Now; } return _token; } /// <summary> /// éæ°è·å (ä¸åä»»ä½éªè¯ï¼éæ°è·åtoken,ä¹åæ´æ°ç¼å) /// </summary> public static string GetAgain() { _token = GetToken(); _lastTokenTime = DateTime.Now; return _token; } } } IStation.DataDockingApi.JTMeter/01-paras/AppParas.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,50 @@ namespace IStation.DataDockingApi { /// <summary> /// appåæ°ï¼å¯é å¶ï¼ /// </summary> internal class AppParas { /// <summary> /// è¿ææ¶é´ ï¼å°æ¶ï¼ /// </summary> public int expire { get; set; } /// <summary> /// url /// </summary> public Url url { get; set; } /// <summary> /// è´¦æ· /// </summary> public Account account { get; set; } /// <summary> /// 仪表 /// </summary> public List<string> meters { get; set; } } internal class Url { /// <summary> /// token url /// </summary> public string token { get; set; } /// <summary> /// å岿°æ®url /// </summary> public string history { get; set; } } internal class Account { public string username { get; set; } public string password { get; set; } } } IStation.DataDockingApi.JTMeter/01-paras/AppParasHelper.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,39 @@ namespace IStation.DataDockingApi { /// <summary> /// app åæ°è¾ å©ç±» /// </summary> internal class AppParasHelper { /// <summary> /// jsonæä»¶åç§° /// </summary> public static string JsonFileName { get { if (string.IsNullOrEmpty(_jsonFileName)) { _jsonFileName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "paras_datadocking_api_jtmeter.json"); } return _jsonFileName; } } private static string _jsonFileName = null; /// <summary> /// è·å /// </summary> /// <returns></returns> public static AppParas Get() { if (_appparas == null) { _appparas = JsonHelper.Json2Object<AppParas>(File.ReadAllText(JsonFileName)); } return _appparas; } private static AppParas _appparas = null; } } IStation.DataDockingApi.JTMeter/02-model/Exception.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ namespace IStation.DataDockingApi.JTMeter { /// <summary> /// /// </summary> public class Exception : System.Exception { /// <summary> /// /// </summary> public Exception() : base() { } /// <summary> /// /// </summary> public Exception(string message) : base(message) { } /// <summary> /// /// </summary> public Exception(string message, System.Exception innerException) : base(message, innerException) { } } } IStation.DataDockingApi.JTMeter/02-model/Result_History.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,119 @@ namespace IStation.DataDockingApi.JTMeter { /// <summary> /// /// </summary> public class Result_History { /// <summary> /// /// </summary> public string status { get; set; } /// <summary> /// /// </summary> public HistoryResultMessage message { get; set; } /// <summary> /// /// </summary> public HistoryResultContent content { get; set; } } /// <summary> /// /// </summary> public class HistoryResultMessage { /// <summary> /// /// </summary> public string notice { get; set; } } /// <summary> /// /// </summary> public class HistoryResultContent { /// <summary> /// /// </summary> public HistoryResultContentItem[] result { get; set; } /// <summary> /// /// </summary> public int count { get; set; } } /// <summary> /// /// </summary> public class HistoryResultContentItem { /// <summary> /// /// </summary> public string meterCode { get; set; } /// <summary> /// /// </summary> public string meterType { get; set; } /// <summary> /// /// </summary> public double? flowSpeed { get; set; } /// <summary> /// /// </summary> public double? instantFlow { get; set; } /// <summary> /// /// </summary> public double? cumulativeFlow { get; set; } /// <summary> /// /// </summary> public double? positiveCumulativeFlow { get; set; } /// <summary> /// /// </summary> public double? negativeCumulativeFlow { get; set; } /// <summary> /// /// </summary> public double? pressure { get; set; } /// <summary> /// /// </summary> public string alarmDetail { get; set; } /// <summary> /// /// </summary> public DateTime collectedTime { get; set; } /// <summary> /// /// </summary> public DateTime reportTime { get; set; } /// <summary> /// /// </summary> public double? signalStrength { get; set; } /// <summary> /// /// </summary> public double? voltage { get; set; } /// <summary> /// /// </summary> public double? cumulativeWorkTime { get; set; } /// <summary> /// /// </summary> public double? positiveCumulativeWorkTime { get; set; } /// <summary> /// /// </summary> public double? negativeCumulativeWorkTime { get; set; } } } IStation.DataDockingApi.JTMeter/02-model/Result_Login.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,48 @@ namespace IStation.DataDockingApi.JTMeter { /// <summary> /// /// </summary> public class Result_Login { /// <summary> /// /// </summary> public LoginResultContent content { get; set; } /// <summary> /// /// </summary> public LoginResultMessage message { get; set; } /// <summary> /// /// </summary> public string status { get; set; } } /// <summary> /// /// </summary> public class LoginResultContent { /// <summary> /// /// </summary> public string token { get; set; } } /// <summary> /// /// </summary> public class LoginResultMessage { /// <summary> /// /// </summary> public object notice { get; set; } /// <summary> /// /// </summary> public object cause { get; set; } } } IStation.DataDockingApi.JTMeter/03-handle/HandleHelper.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,180 @@ namespace IStation.DataDockingApi { /// <summary> /// /// </summary> public class HandleHelper : IHandleHelper { /// <summary> /// /// </summary> public void HandleData(List<Yw.Model.DataDockingConfigureItemExSubList> items, Action<List<Yw.Model.MonitorHandleRecord>> receive) { if (items == null || items.Count < 1) { return; } var app_paras = AppParasHelper.Get(); if (app_paras == null) { LogHelper.Error("èå·éåºä»ªè¡¨ Api æ°æ®å¯¹æ¥ä¸ï¼ç¼ºå°å¯¹æ¥é ç½®æä»¶"); } var token = TokenHelper.Get(); if (string.IsNullOrEmpty(token)) { LogHelper.Error("èå·éåºä»ªè¡¨ Api æ°æ®å¯¹æ¥ä¸ï¼è·åToken失败"); return; } var history_url = app_paras.url.history; history_url = $"{history_url}?pageNumber=1&startTime={DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")}&endTime={DateTime.Now.AddDays(1).ToString("yyyy-MM-dd")}"; var history_result = HttpRequestHelper.History(history_url, token); if (history_result == null) { LogHelper.Info("èå·éåºä»ªè¡¨ Api æ°æ®å¯¹æ¥ä¸ï¼è·å宿¶æ°æ®å¤±è´¥"); return; } if (history_result.status != "SUCCESS") { LogHelper.Info("èå·éåºä»ªè¡¨ Api æ°æ®å¯¹æ¥ä¸ï¼è·å宿¶æ°æ®å¤±è´¥ï¼status!= SUCCESSï¼,å¯è½æ¯tokenè¢«å ¶ä»ç¨åºæ´æ°ï¼æ£å¨éæ°è·å"); token = TokenHelper.GetAgain(); history_result = HttpRequestHelper.History(history_url, token); if (history_result == null) { LogHelper.Info("èå·éåºä»ªè¡¨ Api æ°æ®å¯¹æ¥ä¸ï¼è·å宿¶æ°æ®å¤±è´¥"); return; } if (history_result.status != "SUCCESS") { LogHelper.Info("èå·éåºä»ªè¡¨ Api æ°æ®å¯¹æ¥ä¸ï¼è·å宿¶æ°æ®å¤±è´¥ï¼status!= SUCCESSï¼,éæ°è·å便§å¤±è´¥ï¼è¯·æ£æ¥ç¨åºï¼"); return; } } if (history_result.content.result == null || history_result.content.result.Length < 1) { LogHelper.Info("èå·éåºä»ªè¡¨ Api æ°æ®å¯¹æ¥ä¸ï¼è·å宿¶æ°æ®å¤±è´¥(æ°æ®ä¸ºç©º)"); return; } var result_group_list = history_result.content.result.OrderBy(x => x.collectedTime).GroupBy(x => x.collectedTime).ToList(); foreach (var result_group in result_group_list) { var receive_list = new List<Yw.Model.MonitorHandleRecord>(); var code_list = result_group.Select(x => x.meterCode).Distinct().ToList(); foreach (var code in code_list) { var record = result_group.FirstOrDefault(x => x.meterCode == code); if (LastCollectHelper.SetLastTime(code, record.collectedTime)) { if (record.instantFlow != null) { var signId = $"{code}_q"; var item_list = items.Where(x => x.TransferId == signId).ToList(); if (item_list != null && item_list.Count > 0) { foreach (var item in item_list) { var item_sub = item.SubList.First(); var receiveRecord = new Yw.Model.MonitorHandleRecord(); receiveRecord.DataTime = record.collectedTime; receiveRecord.MonitorPointID = item.MonitorPointID; var srcValue = record.instantFlow.Value; var dataStatus = new List<string>(); var dataValue = item_sub.Docking(srcValue.ToString(), ref dataStatus); var receiveSubRecord = new Yw.Model.MonitorHandleSubRecord(); receiveSubRecord.SignalID = item_sub.SignalID; receiveSubRecord.SrcValue = srcValue.ToString(); receiveSubRecord.DataValue = dataValue; receiveRecord.SubList.Add(receiveSubRecord); if (item.IsMeet(receiveRecord)) { receive_list.Add(receiveRecord); } } } } if (record.cumulativeFlow != null) { var signId = $"{code}_ql"; var item_list = items.Where(x => x.TransferId == signId).ToList(); if (item_list != null && item_list.Count > 0) { foreach (var item in item_list) { var item_sub = item.SubList.First(); var receiveRecord = new Yw.Model.MonitorHandleRecord(); receiveRecord.DataTime = record.collectedTime; receiveRecord.MonitorPointID = item.MonitorPointID; var srcValue = record.cumulativeFlow.Value; var dataStatus = new List<string>(); var dataValue = item_sub.Docking(srcValue.ToString(), ref dataStatus); var receiveSubRecord = new Yw.Model.MonitorHandleSubRecord(); receiveSubRecord.SignalID = item_sub.SignalID; receiveSubRecord.SrcValue = srcValue.ToString(); receiveSubRecord.DataValue = dataValue; receiveRecord.SubList.Add(receiveSubRecord); if (item.IsMeet(receiveRecord)) { receive_list.Add(receiveRecord); } } } } if (record.pressure != null) { var signId = $"{code}_pr"; var item_list = items.Where(x => x.TransferId == signId).ToList(); if (item_list != null && item_list.Count > 0) { foreach (var item in item_list) { var item_sub = item.SubList.First(); var receiveRecord = new Yw.Model.MonitorHandleRecord(); receiveRecord.DataTime = record.collectedTime; receiveRecord.MonitorPointID = item.MonitorPointID; var srcValue = record.pressure.Value; var dataStatus = new List<string>(); var dataValue = item_sub.Docking(srcValue.ToString(), ref dataStatus); var receiveSubRecord = new Yw.Model.MonitorHandleSubRecord(); receiveSubRecord.SignalID = item_sub.SignalID; receiveSubRecord.SrcValue = srcValue.ToString(); receiveSubRecord.DataValue = dataValue; receiveRecord.SubList.Add(receiveSubRecord); if (item.IsMeet(receiveRecord)) { receive_list.Add(receiveRecord); } } } } } } if (receive_list.Count > 0) { receive(receive_list); } } } } } IStation.DataDockingApi.JTMeter/GlobalUsings.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,11 @@ global using Yw; global using Yw.Untity; global using Yw.Service; global using IStation.DataDockingApi.JTMeter; global using System.Text; global using Yw.Service.Monitor; global using Yw.DataDockingApi; global using System; global using System.Collections.Generic; global using System.Linq; global using System.Net.Http; IStation.DataDockingApi.JTMeter/IStation.DataDockingApi.JTMeter.csproj
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net6.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>disable</Nullable> </PropertyGroup> <ItemGroup> <None Remove="paras_datadocking_api_jtmeter.json" /> </ItemGroup> <ItemGroup> <Content Include="paras_datadocking_api_jtmeter.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> </ItemGroup> <ItemGroup> <PackageReference Include="Yw.IDataDockingApi.Core" Version="3.0.3" /> </ItemGroup> </Project> IStation.DataDockingApi.JTMeter/paras_datadocking_api_jtmeter.json
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ { "expire": 24, "url": { "token": "http://39.106.98.144:8100/hzybbase/auth/login", "history": "http://39.106.98.144:8100/hzybbase/api/info/history/batch" }, "account": { "username": "wzjtzlsmg", "password": "29e5b0b6a11ef700e158b79fa94e4397" }, "meters": [ "3211312510799", "6321313403374", "6321313403444", "3211314313774", "3211324121890" ] //ææ¶ä¸ç¨ } IStation.TopShelf.DataDocking4Api/IStation.TopShelf.DataDocking4Api.csproj
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>disable</Nullable> <AssemblyName>IStation.TopShelf.DataDocking4Api</AssemblyName> <RootNamespace>IStation.TopShelf</RootNamespace> <GenerateDocumentationFile>True</GenerateDocumentationFile> </PropertyGroup> <ItemGroup> <PackageReference Include="Yw.TopShelf" Version="3.0.0" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\IStation.DataDocking.Api\IStation.DataDocking.Api.csproj" /> </ItemGroup> </Project> IStation.TopShelf.DataDocking4Api/IStation.TopShelf.DataDocking4Api.csproj.user
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <_LastSelectedProfileId>D:\WorkData\git\istation\szjt\IStation.TopShelf.DataDocking4Api\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId> </PropertyGroup> </Project> IStation.TopShelf.DataDocking4Api/Program.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ // See https://aka.ms/new-console-template for more information using IStation.TopShelf; using Topshelf; ///SZJT HostFactory.Run(x => { x.Service<Service>(); x.RunAsLocalSystem(); x.SetDescription("æºæ §æ³µç«CoreçAPIæ°æ®å¯¹æ¥ç¨åº(SZJT)"); x.SetDisplayName("IStation.Core.DataDocking.Api.SZJT"); x.SetServiceName("IStation.Core.DataDocking.Api.SZJT"); x.EnableServiceRecovery(r => r.RestartService(TimeSpan.FromSeconds(120))); x.StartAutomatically(); }); IStation.TopShelf.DataDocking4Api/Properties/PublishProfiles/FolderProfile.pubxml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ <?xml version="1.0" encoding="utf-8"?> <!-- https://go.microsoft.com/fwlink/?LinkID=208121. --> <Project> <PropertyGroup> <Configuration>Release</Configuration> <Platform>Any CPU</Platform> <PublishDir>bin\Release\net6.0\publish\</PublishDir> <PublishProtocol>FileSystem</PublishProtocol> </PropertyGroup> </Project> IStation.TopShelf.DataDocking4Api/Properties/PublishProfiles/FolderProfile.pubxml.user
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ <?xml version="1.0" encoding="utf-8"?> <!-- https://go.microsoft.com/fwlink/?LinkID=208121. --> <Project> <PropertyGroup> <History>True|2024-11-18T05:37:07.7626653Z;True|2024-11-11T16:23:28.6469381+08:00;True|2024-05-16T12:39:54.9946569+08:00;True|2024-05-16T12:39:29.3584802+08:00;True|2024-05-09T17:14:37.5350192+08:00;True|2024-04-04T11:43:31.7040256+08:00;True|2024-03-02T10:23:38.5098941+08:00;True|2024-03-02T09:59:51.2850262+08:00;True|2023-12-26T12:07:27.4247222+08:00;True|2023-12-11T15:15:41.1462691+08:00;False|2023-12-11T15:14:59.4869740+08:00;True|2022-09-22T10:27:20.9740415+08:00;True|2022-07-01T20:14:42.0373390+08:00;True|2022-07-01T14:01:54.3765684+08:00;True|2022-07-01T13:55:51.6239735+08:00;True|2022-07-01T13:48:27.2176427+08:00;True|2022-06-06T13:37:14.3901330+08:00;True|2022-06-06T11:49:16.9822820+08:00;True|2022-06-02T09:29:24.8316905+08:00;</History> <LastFailureDetails /> </PropertyGroup> </Project> IStation.TopShelf.DataDocking4Api/Service.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,33 @@ using Yw.Server; using Topshelf; namespace IStation.TopShelf { /// <summary> /// /// </summary> public class Service : ServiceControl { private readonly ApiJobHelper _jobHelper = new ApiJobHelper(); /// <summary> /// /// </summary> public bool Start(HostControl hostControl) { _ = _jobHelper.StartJob(); return true; } /// <summary> /// /// </summary> public bool Stop(HostControl hostControl) { _ = _jobHelper.CancelJob(); return true; } } } IStation.TopShelf.DataDocking4Mqtt/IStation.TopShelf.DataDocking4Mqtt.csproj.user
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <_LastSelectedProfileId>D:\WorkData\git\istation\szjt\IStation.TopShelf.DataDocking4Mqtt\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId> </PropertyGroup> </Project> IStation.TopShelf.DataDocking4Mqtt/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -4,7 +4,7 @@ --> <Project> <PropertyGroup> <History>True|2024-05-20T06:54:10.8142650Z;True|2024-05-20T14:53:11.9407797+08:00;True|2024-05-16T11:27:44.8720373+08:00;True|2024-05-16T11:21:56.7846755+08:00;True|2024-02-22T16:25:43.4558929+08:00;True|2024-02-22T16:24:45.8722568+08:00;True|2024-02-22T12:01:45.6247638+08:00;True|2023-10-31T16:04:40.5948906+08:00;True|2023-10-19T13:26:35.6019347+08:00;True|2023-10-19T13:26:00.5198778+08:00;False|2023-10-19T13:24:00.4780702+08:00;True|2023-09-26T13:59:27.5337530+08:00;False|2023-09-26T13:58:50.7519102+08:00;False|2023-09-26T13:58:20.1466908+08:00;True|2022-09-22T10:27:20.9740415+08:00;True|2022-07-01T20:14:42.0373390+08:00;True|2022-07-01T14:01:54.3765684+08:00;True|2022-07-01T13:55:51.6239735+08:00;True|2022-07-01T13:48:27.2176427+08:00;True|2022-06-06T13:37:14.3901330+08:00;True|2022-06-06T11:49:16.9822820+08:00;True|2022-06-02T09:29:24.8316905+08:00;</History> <History>True|2024-11-18T05:05:19.5471687Z;True|2024-05-20T14:54:10.8142650+08:00;True|2024-05-20T14:53:11.9407797+08:00;True|2024-05-16T11:27:44.8720373+08:00;True|2024-05-16T11:21:56.7846755+08:00;True|2024-02-22T16:25:43.4558929+08:00;True|2024-02-22T16:24:45.8722568+08:00;True|2024-02-22T12:01:45.6247638+08:00;True|2023-10-31T16:04:40.5948906+08:00;True|2023-10-19T13:26:35.6019347+08:00;True|2023-10-19T13:26:00.5198778+08:00;False|2023-10-19T13:24:00.4780702+08:00;True|2023-09-26T13:59:27.5337530+08:00;False|2023-09-26T13:58:50.7519102+08:00;False|2023-09-26T13:58:20.1466908+08:00;True|2022-09-22T10:27:20.9740415+08:00;True|2022-07-01T20:14:42.0373390+08:00;True|2022-07-01T14:01:54.3765684+08:00;True|2022-07-01T13:55:51.6239735+08:00;True|2022-07-01T13:48:27.2176427+08:00;True|2022-06-06T13:37:14.3901330+08:00;True|2022-06-06T11:49:16.9822820+08:00;True|2022-06-02T09:29:24.8316905+08:00;</History> <LastFailureDetails /> </PropertyGroup> </Project>