From b29e9fbda8096ce7255864cd2d63122cca60b952 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期一, 05 九月 2022 12:34:42 +0800 Subject: [PATCH] 新增Linux demo测试程序 --- RedisCache/IStation.RedisCache.LinuxTest/SMI/航天/Smi_HangTian_StoreVibrationRecord.cs | 97 +++ Server/IStation.Server.LinuxTest/Properties/PublishProfiles/FolderProfile.pubxml | 12 Application/IStation.Application.LinuxTest/test/dto/AddMonitorRecordInput.cs | 36 + Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile.pubxml | 16 Server/IStation.Server.LinuxTest/interface/IJobHelper.cs | 24 Service/IStation.Service.LinuxTest/monitor_record/MonitorRecord.cs | 164 +++++ Service/IStation.Service.LinuxTest/helpers/CacheHelper.cs | 40 + Service/IStation.Service.LinuxTest/monitor_record/MonitorRecord_Instance.cs | 72 ++ DAL/IStation.DAL.LinuxTest/helper/ConfigHelper.cs | 70 ++ RedisCache/IStation.RedisCache.LinuxTest/monitor_record/MonitorRecordCacheHelper.cs | 78 ++ Entry/IStation.WebApi.Entry.LinuxTest/appsettings.Development.json | 8 Settings/IStation.Settings/models/linux_test/Paras_LinuxTest_Queue.cs | 20 Application/IStation.Application.LinuxTest/IStation.Application.LinuxTest.csproj | 17 Model/IStation.Model.LinuxTest/MonitorRecord.cs | 83 ++ Core/IStation.WebApi.Core/applicationconfig.json | 7 Server/IStation.Server.LinuxTest/helpers/ConfigHelper.cs | 25 Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile2.pubxml | 16 Server/IStation.Server.LinuxTest/IStation.Server.LinuxTest.csproj | 16 Server/IStation.Server.LinuxTest/Program.cs | 19 Server/IStation.Server.LinuxTest/task/JobHelper.cs | 35 + Entry/IStation.WebApi.Entry.LinuxTest/IStation.WebApi.Entry.LinuxTest.csproj | 18 Model/IStation.Model.LinuxTest/IStation.Model.LinuxTest.csproj | 15 RedisCache/IStation.RedisCache.LinuxTest/SMI/Expert/Smi_Expert_StoreVibrationRecord.cs | 97 +++ Service/IStation.Service.LinuxTest/helpers/ConfigHelper.cs | 48 + RedisCache/IStation.RedisCache.LinuxTest/IStation.RedisCache.LinuxTest.csproj | 22 Application/IStation.Application.LinuxTest/config/Mapper.cs | 30 Server/IStation.Server.LinuxTest/Properties/PublishProfiles/FolderProfile.pubxml.user | 9 Entity/IStation.Entity.LinuxTest/MonitorRecord.cs | 88 ++ Server/IStation.Server.LinuxTest/task/MonitorJobHelper.cs | 71 ++ Server/IStation.Server.LinuxTest/IStation.Server.LinuxTest.csproj.user | 6 DAL/IStation.DAL.LinuxTest/MonitorRecord.cs | 105 +++ Settings/IStation.Settings/paras_settings.json | 11 Entry/IStation.WebApi.Entry.LinuxTest/appsettings.json | 12 Settings/IStation.Settings/models/Paras.cs | 5 Service/IStation.Service.LinuxTest/IStation.Service.LinuxTest.csproj | 20 Entity/IStation.Entity.LinuxTest/IStation.Entity.LinuxTest.csproj | 16 Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile.pubxml.user | 10 Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile1.pubxml | 16 Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile2.pubxml.user | 10 Settings/IStation.Settings/models/linux_test/Paras_LinuxTest.cs | 24 Entry/IStation.WebApi.Entry.LinuxTest/Properties/launchSettings.json | 31 Application/IStation.Application.LinuxTest/test/dto/MonitorRecordDto.cs | 58 + Settings/IStation.Settings/paras/Settings.cs | 10 DAL/IStation.DAL.LinuxTest/IStation.DAL.LinuxTest.csproj | 16 Entry/IStation.WebApi.Entry.LinuxTest/Program.cs | 3 Settings/IStation.Settings/models/linux_test/Paras_LinuxTest_DataBase.cs | 20 Application/IStation.Application.LinuxTest/test/MonitorRecord_Controller.cs | 198 ++++++ IStation.sln | 56 + Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile1.pubxml.user | 10 Entry/IStation.WebApi.Entry.LinuxTest/IStation.WebApi.Entry.LinuxTest.csproj.user | 6 50 files changed, 1,895 insertions(+), 1 deletions(-) diff --git a/Application/IStation.Application.LinuxTest/IStation.Application.LinuxTest.csproj b/Application/IStation.Application.LinuxTest/IStation.Application.LinuxTest.csproj new file mode 100644 index 0000000..6dbed3f --- /dev/null +++ b/Application/IStation.Application.LinuxTest/IStation.Application.LinuxTest.csproj @@ -0,0 +1,17 @@ +锘�<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>disable</Nullable> + <AssemblyName>IStation.Application.LinuxTest</AssemblyName> + <RootNamespace>IStation.Application</RootNamespace> + <GenerateDocumentationFile>True</GenerateDocumentationFile> + </PropertyGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Service\IStation.Service.LinuxTest\IStation.Service.LinuxTest.csproj" /> + <ProjectReference Include="..\IStation.Application.Core\IStation.Application.Core.csproj" /> + </ItemGroup> + +</Project> diff --git a/Application/IStation.Application.LinuxTest/config/Mapper.cs b/Application/IStation.Application.LinuxTest/config/Mapper.cs new file mode 100644 index 0000000..d4d1979 --- /dev/null +++ b/Application/IStation.Application.LinuxTest/config/Mapper.cs @@ -0,0 +1,30 @@ +锘縰sing Mapster; +using System; +namespace IStation.Application +{ + /// <summary> + /// + /// </summary> + public class Mapper : IRegister + { + /// <summary> + /// + /// </summary> + /// <param name="config"></param> + public void Register(TypeAdapterConfig config) + { + + + #region 鐩戞祴璁板綍 + + config.ForType<Model.MonitorRecord, MonitorRecordDto>(); + + config.ForType<AddMonitorRecordInput, Model.MonitorRecord>(); + + #endregion + + + + } + } +} \ No newline at end of file diff --git a/Application/IStation.Application.LinuxTest/test/MonitorRecord_Controller.cs b/Application/IStation.Application.LinuxTest/test/MonitorRecord_Controller.cs new file mode 100644 index 0000000..57142b1 --- /dev/null +++ b/Application/IStation.Application.LinuxTest/test/MonitorRecord_Controller.cs @@ -0,0 +1,198 @@ +锘縰sing Microsoft.AspNetCore.Mvc; +using System.Net; +using System.Net.Http.Headers; +using Microsoft.Extensions.Hosting.Internal; +using Microsoft.AspNetCore.Http.Extensions; +using IStation.Untity; +using Furion.DynamicApiController; +using System.ComponentModel.DataAnnotations; +using Mapster; +using Microsoft.AspNetCore.Http; +using Furion.DependencyInjection; +using Microsoft.AspNetCore.Authorization; +using Furion.DataEncryption; +using Furion.FriendlyException; + +namespace IStation.Application +{ + /// <summary> + /// MonitorRecord + /// </summary> + [AllowAnonymous] + [Route("LinuxTest/MonitorRecord")] + [ApiDescriptionSettings("LinuxTest", Name = "鐩戞祴璁板綍", Order = 999)] + public class MonitorRecord_Controller : IDynamicApiController, ITransient + { + private readonly IHttpContextAccessor _httpContextAccessor; + + /// <summary> + /// + /// </summary> + public MonitorRecord_Controller(IHttpContextAccessor httpContextAccessor) + { + _httpContextAccessor = httpContextAccessor; + } + + //鏈嶅姟 + private readonly Service.MonitorRecord _service = new Service.MonitorRecord(); + + #region Insert + + /// <summary> + /// 鎻掑叆涓�鏉� + /// </summary> + [Route("Insert@V1.0")] + [HttpPost] + public bool Insert([Required] AddMonitorRecordInput input) + { + if (input == null) + return default; + var model = input.Adapt<AddMonitorRecordInput, Model.MonitorRecord>(); + var bol = _service.InsertLastRecord(model); + return bol; + } + + /// <summary> + /// 鎻掑叆澶氭潯 + /// </summary> + [Route("Inserts@V1.0")] + [HttpPost] + public bool Inserts([Required] List<AddMonitorRecordInput> inputList) + { + if (inputList == null || inputList.Count < 1) + return false; + var list = inputList.Select(x => x.Adapt<AddMonitorRecordInput, Model.MonitorRecord>()).ToList(); + var bol = _service.InsertsLastRecord(list); + return bol; + } + + #endregion + + #region 鑾峰彇鎵�鏈� + + /// <summary> + /// 鑾峰彇鎵�鏈� + /// </summary> + [Route("GetAll")] + [HttpGet] + public List<MonitorRecordDto> GetAll() + { + var list = _service.GetAll(); + var vmList = list?.Select(x => new MonitorRecordDto(x)).ToList(); + return vmList; + } + + #endregion + + #region 鑾峰彇鏈�杩戣褰� + + /// <summary> + /// 閫氳繃 MonitorPointID 鑾峰彇鏈�杩戜竴鏉℃暟鎹� + /// </summary> + [Route("GetLastRecordByMonitorPointID")] + [HttpGet] + public MonitorRecordDto GetLastRecordByMonitorPointID([FromQuery][Required] MonitorPointIDInput input) + { + var model = _service.GetLastRecord( input.MonitorPointID); + if (model == null) + return default; + return new MonitorRecordDto(model); + } + + /// <summary> + /// 閫氳繃 MonitorPointIds 鑾峰彇鏈�杩戜竴鏉℃暟鎹� + /// </summary> + [Route("GetLastRecordByMonitorPointIds")] + [HttpGet] + public List<MonitorRecordDto> GetLastRecordByMonitorPointIds([FromQuery][Required] MonitorPointIdsInput input) + { + var ids = LongListHelper.ToList(input.MonitorPointIds); + var list = _service.GetLastRecord(ids); + var vmList = list?.Select(x => new MonitorRecordDto(x)).ToList(); + return vmList; + } + + #endregion + + #region 閫氳繃娴嬬偣鏍囪瘑鑾峰彇 + + /// <summary> + /// 閫氳繃 MonitorPointID 鑾峰彇鏌愬ぉ鐨勬暟鎹� + /// </summary> + [Route("GetByMonitorPointIDOfDay")] + [HttpGet] + public List<MonitorRecordDto> GetByMonitorPointIDOfDay + ( + [Required, Range(1, long.MaxValue, ErrorMessage = "MonitorPointID 蹇呴』澶т簬0")] + long MonitorPointID, + [Required] + DateTime Day + ) + { + var list = _service.GetByMonitorPointIDOfDay( MonitorPointID, Day); + var vmList = list?.Select(x => new MonitorRecordDto(x)).ToList(); + return vmList; + } + + /// <summary> + /// 閫氳繃 MonitorPointID 鑾峰彇鏃ユ湡鍖洪棿鍐呯殑鏁版嵁 + /// </summary> + [Route("GetByMonitorPointIDOfDayRange")] + [HttpGet] + public List<MonitorRecordDto> GetByMonitorPointIDOfDayRange + ( + [Required, Range(1, long.MaxValue, ErrorMessage = "MonitorPointID 蹇呴』澶т簬0")] + long MonitorPointID, + [Required] + DateTime StartDay, + [Required] + DateTime EndDay + ) + { + if (StartDay.Date > EndDay.Date) + { + return default; + } + var list = _service.GetByMonitorPointIDOfDayRange( MonitorPointID, StartDay, EndDay); + var vmList = list?.Select(x => new MonitorRecordDto(x)).ToList(); + return vmList; + } + + /// <summary> + /// 閫氳繃 MonitorPointID 鑾峰彇鏃堕棿鍖洪棿鍐呯殑鏁版嵁 + /// </summary> + [Route("GetByMonitorPointIDOfTimeRange")] + [HttpGet] + public List<MonitorRecordDto> GetByMonitorPointIDOfTimeRange + ( + [Required, Range(1, long.MaxValue, ErrorMessage = "MonitorPointID 蹇呴』澶т簬0")] + long MonitorPointID, + [Required] + DateTime StartTime, + [Required] + DateTime EndTime + ) + { + if (StartTime > EndTime) + { + return default; + } + var list = _service.GetByMonitorPointIDOfTimeRange( MonitorPointID, StartTime, EndTime); + var vmList = list?.Select(x => new MonitorRecordDto(x)).ToList(); + return vmList; + } + + #endregion + + + + + + + + + + + + } +} \ No newline at end of file diff --git a/Application/IStation.Application.LinuxTest/test/dto/AddMonitorRecordInput.cs b/Application/IStation.Application.LinuxTest/test/dto/AddMonitorRecordInput.cs new file mode 100644 index 0000000..79dfd3f --- /dev/null +++ b/Application/IStation.Application.LinuxTest/test/dto/AddMonitorRecordInput.cs @@ -0,0 +1,36 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Application +{ + /// <summary> + /// 娣诲姞鐩戞祴璁板綍浠诲姟 + /// </summary> + public class AddMonitorRecordInput + { + + /// <summary> + /// 娴嬬偣鏍囪瘑 + /// </summary> + public long MonitorPointID { get; set; } + + /// <summary> + /// 鏁版嵁鏃堕棿 + /// </summary> + public DateTime DataTime { get; set; } + + /// <summary> + /// 鏁版嵁鍊� + /// </summary> + public string DataValue { get; set; } + + /// <summary> + /// 鏁版嵁鐘舵�� + /// </summary> + public string DataStatus { get; set; } + + } +} diff --git a/Application/IStation.Application.LinuxTest/test/dto/MonitorRecordDto.cs b/Application/IStation.Application.LinuxTest/test/dto/MonitorRecordDto.cs new file mode 100644 index 0000000..c1a075b --- /dev/null +++ b/Application/IStation.Application.LinuxTest/test/dto/MonitorRecordDto.cs @@ -0,0 +1,58 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Application +{ + /// <summary> + /// + /// </summary> + public class MonitorRecordDto + { + + /// <summary> + /// + /// </summary> + public MonitorRecordDto() { } + + /// <summary> + /// + /// </summary> + public MonitorRecordDto(Model.MonitorRecord rhs) + { + this.ID = rhs.ID; + this.MonitorPointID = rhs.MonitorPointID; + this.DataTime = rhs.DataTime; + this.DataValue = rhs.DataValue; + this.DataStatus = rhs.DataStatus; + } + + /// <summary> + /// 鏍囪瘑 + /// </summary> + public long ID { get; set; } + + /// <summary> + /// 娴嬬偣鏍囪瘑 + /// </summary> + public long MonitorPointID { get; set; } + + /// <summary> + /// 鏁版嵁鏃堕棿 + /// </summary> + public DateTime DataTime { get; set; } + + /// <summary> + /// 鏁版嵁鍊� + /// </summary> + public string DataValue { get; set; } + + /// <summary> + /// 鏁版嵁鐘舵�� + /// </summary> + public string DataStatus { get; set; } + + } +} diff --git a/Core/IStation.WebApi.Core/applicationconfig.json b/Core/IStation.WebApi.Core/applicationconfig.json index c0a5785..3e8f8e1 100644 --- a/Core/IStation.WebApi.Core/applicationconfig.json +++ b/Core/IStation.WebApi.Core/applicationconfig.json @@ -164,6 +164,13 @@ "Order": 81, "Description": "Transfer妯″潡", "Version": "V1" + }, + { + "Group": "LinuxTest", + "Title": "Linux娴嬭瘯妯″潡", + "Order": 80, + "Description": "Linux娴嬭瘯妯″潡", + "Version": "V1" } ] } diff --git a/DAL/IStation.DAL.LinuxTest/IStation.DAL.LinuxTest.csproj b/DAL/IStation.DAL.LinuxTest/IStation.DAL.LinuxTest.csproj new file mode 100644 index 0000000..50c51e4 --- /dev/null +++ b/DAL/IStation.DAL.LinuxTest/IStation.DAL.LinuxTest.csproj @@ -0,0 +1,16 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>disable</Nullable> + <RootNamespace>IStation.DAL</RootNamespace> + <GenerateDocumentationFile>True</GenerateDocumentationFile> + </PropertyGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Entity\IStation.Entity.LinuxTest\IStation.Entity.LinuxTest.csproj" /> + <ProjectReference Include="..\IStation.DAL.Core\IStation.DAL.Core.csproj" /> + </ItemGroup> + +</Project> diff --git a/DAL/IStation.DAL.LinuxTest/MonitorRecord.cs b/DAL/IStation.DAL.LinuxTest/MonitorRecord.cs new file mode 100644 index 0000000..5e1e39a --- /dev/null +++ b/DAL/IStation.DAL.LinuxTest/MonitorRecord.cs @@ -0,0 +1,105 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SqlSugar; + +namespace IStation.DAL +{ + /// <summary> + /// + /// </summary> + public class MonitorRecord : BaseDAL<Entity.MonitorRecord> + { + /// <summary> + /// + /// </summary> + public override ConnectionConfig ConnectionConfig + { + get { return ConfigHelper.DefaultConnectionConfig; } + } + + #region 閫氳繃 MonitorPointID 鑾峰彇 + + /// <summary> + /// 閫氳繃 MonitorPointID 鑾峰彇鏌愬ぉ鐨勫叏閮ㄦ暟鎹� + /// </summary> + public List<Entity.MonitorRecord> GetByMonitorPointIDOfDay( long MonitorPointID, DateTime Day) + { + if (MonitorPointID < 1) + return default; + using (var db = new SqlSugarClient(ConnectionConfig)) + { + return db.Queryable<Entity.MonitorRecord>() + .Where(x => x.MonitorPointID == MonitorPointID && x.DataTime >= Day.Date && x.DataTime < Day.Date.AddDays(1)) + .OrderBy(x => x.DataTime, OrderByType.Asc).ToList(); + } + } + + /// <summary> + /// 閫氳繃 MonitorPointID 鑾峰彇鏃ユ湡鍖洪棿鍐呯殑鏁版嵁 + /// </summary> + public List<Entity.MonitorRecord> GetByMonitorPointIDOfDayRange( long MonitorPointID, DateTime StartDay, DateTime EndDay) + { + if (StartDay.Date > EndDay.Date) + return default; + using (var db = new SqlSugarClient(ConnectionConfig)) + { + return db.Queryable<Entity.MonitorRecord>() + .Where(x => x.MonitorPointID == MonitorPointID && x.DataTime >= StartDay.Date && x.DataTime < EndDay.Date.AddDays(1)) + .OrderBy(x => x.DataTime, OrderByType.Asc).ToList(); + } + } + + /// <summary> + /// 閫氳繃 MonitorPointID 鑾峰彇鏃堕棿鍖洪棿鍐呯殑鏁版嵁 + /// </summary> + public List<Entity.MonitorRecord> GetByMonitorPointIDOfTimeRange( long MonitorPointID, DateTime StartTime, DateTime EndTime) + { + if (StartTime > EndTime) + return default; + using (var db = new SqlSugarClient(ConnectionConfig)) + { + return db.Queryable<Entity.MonitorRecord>() + .Where(x => x.MonitorPointID == MonitorPointID && x.DataTime >= StartTime && x.DataTime <= EndTime) + .OrderBy(x => x.DataTime, OrderByType.Asc).ToList(); + } + } + + #endregion + + + #region Update + + /// <summary> + /// 鏇存柊 + /// </summary> + public override bool Update(Entity.MonitorRecord entity) + { + if (entity == null) + return false; + using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig)) + { + return db.Updateable(entity).IgnoreColumns(x => x.DataTime).Where(x => x.ID == entity.ID).ExecuteCommand() > 0; + } + } + + /// <summary> + /// 鎵归噺鏇存柊 + /// </summary> + public override bool Updates(List<Entity.MonitorRecord> list) + { + if (list == null || list.Count < 1) + return false; + using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig)) + { + return db.Updateable(list).IgnoreColumns(x => x.DataTime).WhereColumns(it => new { it.ID }).ExecuteCommand() > 0; + } + } + + #endregion + + + } +} diff --git a/DAL/IStation.DAL.LinuxTest/helper/ConfigHelper.cs b/DAL/IStation.DAL.LinuxTest/helper/ConfigHelper.cs new file mode 100644 index 0000000..f7dccd6 --- /dev/null +++ b/DAL/IStation.DAL.LinuxTest/helper/ConfigHelper.cs @@ -0,0 +1,70 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SqlSugar; + +namespace IStation.DAL +{ + internal class ConfigHelper + { + #region 榛樿杩炴帴 + + /// <summary> + /// 榛樿杩炴帴瀛楃涓� + /// </summary> + public static string DefaultConnString + { + get + { + return Settings.LinuxTest.DataBase.ConnectString; + } + } + + /// <summary> + /// 榛樿杩炴帴閰嶇疆 + /// </summary> + public static ConnectionConfig DefaultConnectionConfig + { + get + { + return new ConnectionConfig() + { + DbType = SqlSugar.DbType.PostgreSQL,//鏁版嵁搴撶被鍨� + ConnectionString = DefaultConnString, + IsAutoCloseConnection = true,//鏄惁鑷姩鍏抽棴 + MoreSettings = new ConnMoreSettings() + { + //PgSqlIsAutoToLower = false //鏁版嵁搴撳瓨鍦ㄥぇ鍐欏瓧娈电殑 锛岄渶瑕佹妸杩欎釜璁句负false 锛屽苟涓斿疄浣撳拰瀛楁鍚嶇О瑕佷竴鏍� + }, + AopEvents = new AopEvents + { + OnLogExecuting = (sql, p) => + { + // Console.WriteLine(sql); + } + } + }; + } + } + + #endregion + + + + + + + + + + + + + + } +} diff --git a/Entity/IStation.Entity.LinuxTest/IStation.Entity.LinuxTest.csproj b/Entity/IStation.Entity.LinuxTest/IStation.Entity.LinuxTest.csproj new file mode 100644 index 0000000..8a18608 --- /dev/null +++ b/Entity/IStation.Entity.LinuxTest/IStation.Entity.LinuxTest.csproj @@ -0,0 +1,16 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>disable</Nullable> + <AssemblyName>IStation.Entity.LinuxTest</AssemblyName> + <RootNamespace>IStation.Entity</RootNamespace> + <GenerateDocumentationFile>True</GenerateDocumentationFile> + </PropertyGroup> + + <ItemGroup> + <ProjectReference Include="..\IStation.Entity.Core\IStation.Entity.Core.csproj" /> + </ItemGroup> + +</Project> diff --git a/Entity/IStation.Entity.LinuxTest/MonitorRecord.cs b/Entity/IStation.Entity.LinuxTest/MonitorRecord.cs new file mode 100644 index 0000000..cc346f5 --- /dev/null +++ b/Entity/IStation.Entity.LinuxTest/MonitorRecord.cs @@ -0,0 +1,88 @@ +锘縰sing System; +using System.Text; +using System.Collections.Generic; +using System.Data; +using System.Runtime.Serialization; +using SqlSugar; + +namespace IStation.Entity +{ + /// <summary> + /// 鐩戞祴璁板綍 + /// </summary> + [SugarTable("monitor_record")] + public class MonitorRecord : BaseEntity, System.ICloneable + { + /// <summary> + /// + /// </summary> + public MonitorRecord() { } + + /// <summary> + /// + /// </summary> + public MonitorRecord(MonitorRecord rhs) : base(rhs) + { + this.MonitorPointID = rhs.MonitorPointID; + this.DataTime = rhs.DataTime; + this.DataValue = rhs.DataValue; + this.DataStatus = rhs.DataStatus; + } + + + /// <summary> + /// 娴嬬偣鏍囪瘑 + /// </summary> + public long MonitorPointID + { + get { return _monitorpointid; } + set { _monitorpointid = value; } + } + private long _monitorpointid; + + /// <summary> + /// 鏁版嵁鏃堕棿 + /// </summary> + public DateTime DataTime + { + get { return _datatime; } + set { _datatime = value; } + } + private DateTime _datatime; + + /// <summary> + /// 鏁版嵁鍊� + /// </summary> + public string DataValue + { + get { return _datavalue; } + set { _datavalue = value; } + } + private string _datavalue; + + /// <summary> + /// 鏁版嵁鐘舵�� + /// </summary> + public string DataStatus + { + get { return _datastatus; } + set { _datastatus = value; } + } + private string _datastatus; + + /// <summary> + /// + /// </summary> + public MonitorRecord Clone() + { + return (MonitorRecord)this.MemberwiseClone(); + } + + object ICloneable.Clone() + { + return this.MemberwiseClone(); + } + + } + +} \ No newline at end of file diff --git a/Entry/IStation.WebApi.Entry.LinuxTest/IStation.WebApi.Entry.LinuxTest.csproj b/Entry/IStation.WebApi.Entry.LinuxTest/IStation.WebApi.Entry.LinuxTest.csproj new file mode 100644 index 0000000..eb6f629 --- /dev/null +++ b/Entry/IStation.WebApi.Entry.LinuxTest/IStation.WebApi.Entry.LinuxTest.csproj @@ -0,0 +1,18 @@ +锘�<Project Sdk="Microsoft.NET.Sdk.Web"> + + <PropertyGroup> + <TargetFramework>net6.0</TargetFramework> + <Nullable>disable</Nullable> + <ImplicitUsings>enable</ImplicitUsings> + <AssemblyName>IStation.WebApi.Entry.LinuxTest</AssemblyName> + <RootNamespace>IStation.WebApi</RootNamespace> + <GenerateDocumentationFile>True</GenerateDocumentationFile> + <Version /> + </PropertyGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Application\IStation.Application.LinuxTest\IStation.Application.LinuxTest.csproj" /> + <ProjectReference Include="..\..\Core\IStation.WebApi.Core\IStation.WebApi.Core.csproj" /> + </ItemGroup> + +</Project> diff --git a/Entry/IStation.WebApi.Entry.LinuxTest/IStation.WebApi.Entry.LinuxTest.csproj.user b/Entry/IStation.WebApi.Entry.LinuxTest/IStation.WebApi.Entry.LinuxTest.csproj.user new file mode 100644 index 0000000..f57456d --- /dev/null +++ b/Entry/IStation.WebApi.Entry.LinuxTest/IStation.WebApi.Entry.LinuxTest.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> + <NameOfLastUsedPublishProfile>D:\WorkData\git\istation\webapi\v4\Entry\IStation.WebApi.Entry.LinuxTest\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/Entry/IStation.WebApi.Entry.LinuxTest/Program.cs b/Entry/IStation.WebApi.Entry.LinuxTest/Program.cs new file mode 100644 index 0000000..6010138 --- /dev/null +++ b/Entry/IStation.WebApi.Entry.LinuxTest/Program.cs @@ -0,0 +1,3 @@ +var builder = WebApplication.CreateBuilder(args).Inject(); +var app = builder.Build(); +app.Run(); \ No newline at end of file diff --git a/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile.pubxml b/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile.pubxml new file mode 100644 index 0000000..d0d2ce9 --- /dev/null +++ b/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile.pubxml @@ -0,0 +1,16 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<!-- +https://go.microsoft.com/fwlink/?LinkID=208121. +--> +<Project> + <PropertyGroup> + <DeleteExistingFiles>False</DeleteExistingFiles> + <ExcludeApp_Data>False</ExcludeApp_Data> + <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> + <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> + <LastUsedPlatform>Any CPU</LastUsedPlatform> + <PublishProvider>FileSystem</PublishProvider> + <PublishUrl>bin\Release\net6.0\publish\</PublishUrl> + <WebPublishMethod>FileSystem</WebPublishMethod> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile.pubxml.user b/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile.pubxml.user new file mode 100644 index 0000000..d8945d9 --- /dev/null +++ b/Entry/IStation.WebApi.Entry.LinuxTest/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> + <_PublishTargetUrl>D:\WorkData\git\istation\webapi\v4\Entry\IStation.WebApi.Entry.LinuxTest\bin\Release\net6.0\publish\</_PublishTargetUrl> + <History>True|2022-09-05T04:12:19.6266719Z;True|2022-08-18T13:19:31.8409048+08:00;True|2022-08-18T13:09:47.5150561+08:00;True|2022-08-18T10:37:50.8776926+08:00;True|2022-08-17T17:10:09.3527873+08:00;True|2022-08-17T16:04:30.4487827+08:00;True|2022-08-15T13:35:48.4976973+08:00;True|2022-08-15T13:35:34.4046702+08:00;True|2022-08-15T13:31:44.3380038+08:00;True|2022-08-15T13:07:03.2183172+08:00;True|2022-07-25T15:14:36.3659352+08:00;True|2022-07-25T15:10:01.3426246+08:00;True|2022-07-25T13:20:08.1574461+08:00;True|2022-07-19T10:26:17.1257582+08:00;True|2022-07-14T10:30:13.1942620+08:00;True|2022-07-13T14:35:30.0524912+08:00;True|2022-07-08T14:32:42.4327635+08:00;True|2022-07-05T11:08:07.0982998+08:00;True|2022-07-04T10:33:11.4756479+08:00;True|2022-07-01T22:05:04.4907981+08:00;True|2022-07-01T15:57:41.6399584+08:00;True|2022-06-29T10:33:01.2518877+08:00;True|2022-06-29T09:35:04.8176716+08:00;True|2022-06-22T10:29:08.8189250+08:00;True|2022-06-21T20:20:26.7306581+08:00;True|2022-06-21T09:54:59.2174617+08:00;True|2022-06-20T16:05:34.5414017+08:00;True|2022-06-16T13:17:09.9717924+08:00;True|2022-06-16T09:40:45.1175998+08:00;True|2022-06-15T18:01:54.0267150+08:00;False|2022-06-15T18:00:46.8407587+08:00;True|2022-06-15T15:22:18.3048191+08:00;True|2022-06-15T14:10:37.0479735+08:00;False|2022-06-15T14:08:52.7287625+08:00;True|2022-06-15T11:52:36.3090013+08:00;True|2022-06-15T10:29:17.8467709+08:00;True|2022-06-15T09:53:07.0983926+08:00;False|2022-06-15T09:51:02.1269263+08:00;True|2022-06-14T16:42:04.7964854+08:00;True|2022-06-14T14:08:49.4227432+08:00;True|2022-06-14T14:04:00.9153594+08:00;True|2022-06-13T14:57:09.1986107+08:00;True|2022-06-12T10:12:40.2143903+08:00;True|2022-06-12T09:59:01.3527438+08:00;True|2022-06-09T17:47:54.0302121+08:00;True|2022-06-09T17:30:21.7998171+08:00;True|2022-06-09T13:53:49.3251173+08:00;True|2022-06-09T11:06:42.0691794+08:00;True|2022-06-09T10:24:37.1232972+08:00;True|2022-06-09T10:00:30.4180885+08:00;True|2022-06-08T16:55:14.5816280+08:00;True|2022-06-08T16:02:29.3874857+08:00;True|2022-06-08T13:37:33.4098629+08:00;True|2022-06-08T11:05:09.3848401+08:00;True|2022-06-08T10:21:11.6630897+08:00;True|2022-06-08T09:38:48.6605705+08:00;True|2022-06-08T09:38:12.5509843+08:00;True|2022-06-08T09:37:38.2420697+08:00;True|2022-06-08T09:33:06.1943764+08:00;True|2022-06-07T17:26:45.0216506+08:00;True|2022-06-07T17:15:13.6540984+08:00;True|2022-06-07T13:30:54.6796254+08:00;True|2022-06-06T17:33:50.9010674+08:00;True|2022-06-06T17:32:21.9276179+08:00;True|2022-06-06T15:59:31.7116819+08:00;True|2022-06-06T15:29:18.4459191+08:00;True|2022-06-06T14:17:56.0946686+08:00;True|2022-06-02T09:13:02.9635258+08:00;True|2022-06-01T17:15:47.4170975+08:00;True|2022-06-01T14:06:29.6241464+08:00;True|2022-06-01T13:27:18.8319582+08:00;True|2022-06-01T13:14:07.7862232+08:00;True|2022-06-01T09:48:16.4577267+08:00;True|2022-05-30T09:57:00.6017913+08:00;True|2022-05-28T15:54:16.3134700+08:00;True|2022-05-28T11:46:55.8201686+08:00;True|2022-05-28T00:40:34.8169520+08:00;True|2022-05-27T20:45:57.0931886+08:00;True|2022-05-27T20:45:18.6248676+08:00;True|2022-05-27T14:19:14.0927561+08:00;True|2022-05-26T16:52:59.8936895+08:00;True|2022-05-26T13:53:53.4391535+08:00;True|2022-05-25T14:49:54.5116623+08:00;True|2022-05-25T14:23:38.7752497+08:00;True|2022-05-18T00:26:56.5524482+08:00;True|2022-05-17T12:08:45.5933704+08:00;True|2022-05-17T02:14:04.9500075+08:00;True|2022-05-16T12:01:40.6872993+08:00;True|2022-05-12T10:27:07.2614929+08:00;True|2022-05-11T11:02:55.5830630+08:00;True|2022-05-11T10:00:40.6549316+08:00;True|2022-05-11T09:20:32.0973524+08:00;</History> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile1.pubxml b/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile1.pubxml new file mode 100644 index 0000000..d0d2ce9 --- /dev/null +++ b/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile1.pubxml @@ -0,0 +1,16 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<!-- +https://go.microsoft.com/fwlink/?LinkID=208121. +--> +<Project> + <PropertyGroup> + <DeleteExistingFiles>False</DeleteExistingFiles> + <ExcludeApp_Data>False</ExcludeApp_Data> + <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> + <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> + <LastUsedPlatform>Any CPU</LastUsedPlatform> + <PublishProvider>FileSystem</PublishProvider> + <PublishUrl>bin\Release\net6.0\publish\</PublishUrl> + <WebPublishMethod>FileSystem</WebPublishMethod> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile1.pubxml.user b/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile1.pubxml.user new file mode 100644 index 0000000..f75eef2 --- /dev/null +++ b/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile1.pubxml.user @@ -0,0 +1,10 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<!-- +https://go.microsoft.com/fwlink/?LinkID=208121. +--> +<Project> + <PropertyGroup> + <_PublishTargetUrl>D:\WorkData\git\istation\webapi\v4\Entry\IStation.WebApi.Entry\bin\Release\net6.0\publish\</_PublishTargetUrl> + <History>True|2022-08-08T04:51:49.7900559Z;True|2022-08-05T16:30:55.2183383+08:00;True|2022-08-04T10:29:25.0004310+08:00;True|2022-07-28T14:00:01.5462663+08:00;True|2022-07-28T09:15:39.4522594+08:00;</History> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile2.pubxml b/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile2.pubxml new file mode 100644 index 0000000..b208e5e --- /dev/null +++ b/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile2.pubxml @@ -0,0 +1,16 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<!-- +https://go.microsoft.com/fwlink/?LinkID=208121. +--> +<Project> + <PropertyGroup> + <DeleteExistingFiles>False</DeleteExistingFiles> + <ExcludeApp_Data>False</ExcludeApp_Data> + <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> + <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> + <LastUsedPlatform>Any CPU</LastUsedPlatform> + <PublishProvider>FileSystem</PublishProvider> + <PublishUrl>bin\Release\net6.0\publish\linux</PublishUrl> + <WebPublishMethod>FileSystem</WebPublishMethod> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile2.pubxml.user b/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile2.pubxml.user new file mode 100644 index 0000000..8760c0b --- /dev/null +++ b/Entry/IStation.WebApi.Entry.LinuxTest/Properties/PublishProfiles/FolderProfile2.pubxml.user @@ -0,0 +1,10 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<!-- +https://go.microsoft.com/fwlink/?LinkID=208121. +--> +<Project> + <PropertyGroup> + <_PublishTargetUrl>D:\WorkData\git\istation\webapi\v4\Entry\IStation.WebApi.Entry\bin\Release\net6.0\publish\linux</_PublishTargetUrl> + <History>True|2022-08-15T01:36:37.5504507Z;</History> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/Entry/IStation.WebApi.Entry.LinuxTest/Properties/launchSettings.json b/Entry/IStation.WebApi.Entry.LinuxTest/Properties/launchSettings.json new file mode 100644 index 0000000..a3e94e9 --- /dev/null +++ b/Entry/IStation.WebApi.Entry.LinuxTest/Properties/launchSettings.json @@ -0,0 +1,31 @@ +锘縶 + "$schema": "https://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:31950", + "sslPort": 44347 + } + }, + "profiles": { + "IStation.Entry": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "", + "applicationUrl": "https://localhost:7143;http://localhost:5143", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Entry/IStation.WebApi.Entry.LinuxTest/appsettings.Development.json b/Entry/IStation.WebApi.Entry.LinuxTest/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/Entry/IStation.WebApi.Entry.LinuxTest/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/Entry/IStation.WebApi.Entry.LinuxTest/appsettings.json b/Entry/IStation.WebApi.Entry.LinuxTest/appsettings.json new file mode 100644 index 0000000..759a4dc --- /dev/null +++ b/Entry/IStation.WebApi.Entry.LinuxTest/appsettings.json @@ -0,0 +1,12 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "IgnoreConfigurationFiles": [ + "paras_settings.json" + ] +} diff --git a/IStation.sln b/IStation.sln index 210d155..71fbe74 100644 --- a/IStation.sln +++ b/IStation.sln @@ -399,6 +399,22 @@ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IStation.DataProvider.SMI_Vib", "DataProvider\IStation.DataProvider.SMI_Vib\IStation.DataProvider.SMI_Vib.csproj", "{24AAD452-DC37-4DF1-B40C-E1F58DF1A98B}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IStation.Application.LinuxTest", "Application\IStation.Application.LinuxTest\IStation.Application.LinuxTest.csproj", "{2E7985B8-1910-48B8-BCED-DB10966CA879}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IStation.Entity.LinuxTest", "Entity\IStation.Entity.LinuxTest\IStation.Entity.LinuxTest.csproj", "{AFB25410-75EF-4A8A-B7EF-AFF59F9FAAE1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IStation.Model.LinuxTest", "Model\IStation.Model.LinuxTest\IStation.Model.LinuxTest.csproj", "{43C56FAB-C917-49C9-977E-9E8B3F899EB9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IStation.DAL.LinuxTest", "DAL\IStation.DAL.LinuxTest\IStation.DAL.LinuxTest.csproj", "{7B78DCFE-A596-4F69-8DEE-53E0B22A9C4B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IStation.Service.LinuxTest", "Service\IStation.Service.LinuxTest\IStation.Service.LinuxTest.csproj", "{CFE5081A-568C-440A-9691-A01342D5EC3F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IStation.RedisCache.LinuxTest", "RedisCache\IStation.RedisCache.LinuxTest\IStation.RedisCache.LinuxTest.csproj", "{73F2DCB8-32F2-47F2-B48D-A88463FFCCCE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IStation.WebApi.Entry.LinuxTest", "Entry\IStation.WebApi.Entry.LinuxTest\IStation.WebApi.Entry.LinuxTest.csproj", "{2FF6544D-390E-47A5-88D0-54C022E7A9E7}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IStation.Server.LinuxTest", "Server\IStation.Server.LinuxTest\IStation.Server.LinuxTest.csproj", "{806A79E4-0546-45F2-82A0-550F316B331E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -1113,6 +1129,38 @@ {24AAD452-DC37-4DF1-B40C-E1F58DF1A98B}.Debug|Any CPU.Build.0 = Debug|Any CPU {24AAD452-DC37-4DF1-B40C-E1F58DF1A98B}.Release|Any CPU.ActiveCfg = Release|Any CPU {24AAD452-DC37-4DF1-B40C-E1F58DF1A98B}.Release|Any CPU.Build.0 = Release|Any CPU + {2E7985B8-1910-48B8-BCED-DB10966CA879}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2E7985B8-1910-48B8-BCED-DB10966CA879}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2E7985B8-1910-48B8-BCED-DB10966CA879}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2E7985B8-1910-48B8-BCED-DB10966CA879}.Release|Any CPU.Build.0 = Release|Any CPU + {AFB25410-75EF-4A8A-B7EF-AFF59F9FAAE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AFB25410-75EF-4A8A-B7EF-AFF59F9FAAE1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AFB25410-75EF-4A8A-B7EF-AFF59F9FAAE1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AFB25410-75EF-4A8A-B7EF-AFF59F9FAAE1}.Release|Any CPU.Build.0 = Release|Any CPU + {43C56FAB-C917-49C9-977E-9E8B3F899EB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {43C56FAB-C917-49C9-977E-9E8B3F899EB9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {43C56FAB-C917-49C9-977E-9E8B3F899EB9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {43C56FAB-C917-49C9-977E-9E8B3F899EB9}.Release|Any CPU.Build.0 = Release|Any CPU + {7B78DCFE-A596-4F69-8DEE-53E0B22A9C4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7B78DCFE-A596-4F69-8DEE-53E0B22A9C4B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7B78DCFE-A596-4F69-8DEE-53E0B22A9C4B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7B78DCFE-A596-4F69-8DEE-53E0B22A9C4B}.Release|Any CPU.Build.0 = Release|Any CPU + {CFE5081A-568C-440A-9691-A01342D5EC3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CFE5081A-568C-440A-9691-A01342D5EC3F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CFE5081A-568C-440A-9691-A01342D5EC3F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CFE5081A-568C-440A-9691-A01342D5EC3F}.Release|Any CPU.Build.0 = Release|Any CPU + {73F2DCB8-32F2-47F2-B48D-A88463FFCCCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {73F2DCB8-32F2-47F2-B48D-A88463FFCCCE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {73F2DCB8-32F2-47F2-B48D-A88463FFCCCE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {73F2DCB8-32F2-47F2-B48D-A88463FFCCCE}.Release|Any CPU.Build.0 = Release|Any CPU + {2FF6544D-390E-47A5-88D0-54C022E7A9E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2FF6544D-390E-47A5-88D0-54C022E7A9E7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2FF6544D-390E-47A5-88D0-54C022E7A9E7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2FF6544D-390E-47A5-88D0-54C022E7A9E7}.Release|Any CPU.Build.0 = Release|Any CPU + {806A79E4-0546-45F2-82A0-550F316B331E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {806A79E4-0546-45F2-82A0-550F316B331E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {806A79E4-0546-45F2-82A0-550F316B331E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {806A79E4-0546-45F2-82A0-550F316B331E}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1295,6 +1343,14 @@ {4724268A-4341-459B-A6A9-7117F2A005ED} = {B419D1AA-F88B-4780-9018-30D5669C48DC} {4C16607C-0134-4027-8537-CA01ACB5954F} = {02FFB09B-F53B-4CE0-A5B7-85B1881DCD2A} {24AAD452-DC37-4DF1-B40C-E1F58DF1A98B} = {B419D1AA-F88B-4780-9018-30D5669C48DC} + {2E7985B8-1910-48B8-BCED-DB10966CA879} = {C7614DA2-0679-407D-B9E3-66D448DD7488} + {AFB25410-75EF-4A8A-B7EF-AFF59F9FAAE1} = {A24F4CA7-C6A3-4663-9A07-017814E614E7} + {43C56FAB-C917-49C9-977E-9E8B3F899EB9} = {61C58B21-80C9-4092-ACC5-141B424D15E8} + {7B78DCFE-A596-4F69-8DEE-53E0B22A9C4B} = {49E7CA43-7FD9-48A3-B0DB-6D99FA93F393} + {CFE5081A-568C-440A-9691-A01342D5EC3F} = {3BE2BA1A-B93F-4EDE-BC37-915663317C33} + {73F2DCB8-32F2-47F2-B48D-A88463FFCCCE} = {318306D9-A6F4-456C-9019-8E7EDA4F2066} + {2FF6544D-390E-47A5-88D0-54C022E7A9E7} = {A942D1DC-1312-4316-8E0B-9D22A0AFE03D} + {806A79E4-0546-45F2-82A0-550F316B331E} = {B419D1AA-F88B-4780-9018-30D5669C48DC} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {18D1EA07-81E5-4443-8512-F303BC79DCF4} diff --git a/Model/IStation.Model.LinuxTest/IStation.Model.LinuxTest.csproj b/Model/IStation.Model.LinuxTest/IStation.Model.LinuxTest.csproj new file mode 100644 index 0000000..66a3db4 --- /dev/null +++ b/Model/IStation.Model.LinuxTest/IStation.Model.LinuxTest.csproj @@ -0,0 +1,15 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>disable</Nullable> + <RootNamespace>IStation.Model</RootNamespace> + <GenerateDocumentationFile>True</GenerateDocumentationFile> + </PropertyGroup> + + <ItemGroup> + <ProjectReference Include="..\IStation.Model.Core\IStation.Model.Core.csproj" /> + </ItemGroup> + +</Project> diff --git a/Model/IStation.Model.LinuxTest/MonitorRecord.cs b/Model/IStation.Model.LinuxTest/MonitorRecord.cs new file mode 100644 index 0000000..cd26f48 --- /dev/null +++ b/Model/IStation.Model.LinuxTest/MonitorRecord.cs @@ -0,0 +1,83 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Model +{ + /// <summary> + /// 鐩戞祴璁板綍 + /// </summary> + public class MonitorRecord : System.ICloneable + { + /// <summary> + /// + /// </summary> + public MonitorRecord() { } + + /// <summary> + /// + /// </summary> + public MonitorRecord(MonitorRecord rhs) + { + this.ID = rhs.ID; + this.MonitorPointID = rhs.MonitorPointID; + this.DataTime = rhs.DataTime; + this.DataValue = rhs.DataValue; + this.DataStatus = rhs.DataStatus; + } + + /// <summary> + /// + /// </summary> + public void Reset(MonitorRecord rhs) + { + this.ID = rhs.ID; + this.MonitorPointID = rhs.MonitorPointID; + this.DataTime = rhs.DataTime; + this.DataValue = rhs.DataValue; + this.DataStatus = rhs.DataStatus; + } + + /// <summary> + /// 鏍囪瘑 + /// </summary> + public long ID { get; set; } + + /// <summary> + /// 娴嬬偣鏍囪瘑 + /// </summary> + public long MonitorPointID { get; set; } + + /// <summary> + /// 鏁版嵁鏃堕棿 + /// </summary> + public DateTime DataTime { get; set; } + + /// <summary> + /// 鏁版嵁鍊� + /// </summary> + public string DataValue { get; set; } + + /// <summary> + /// 鏁版嵁鐘舵�� + /// </summary> + public string DataStatus { get; set; } + + /// <summary> + /// + /// </summary> + public MonitorRecord Clone() + { + return (MonitorRecord)this.MemberwiseClone(); + } + + object ICloneable.Clone() + { + return this.MemberwiseClone(); + } + + + } +} diff --git a/RedisCache/IStation.RedisCache.LinuxTest/IStation.RedisCache.LinuxTest.csproj b/RedisCache/IStation.RedisCache.LinuxTest/IStation.RedisCache.LinuxTest.csproj new file mode 100644 index 0000000..5ab0164 --- /dev/null +++ b/RedisCache/IStation.RedisCache.LinuxTest/IStation.RedisCache.LinuxTest.csproj @@ -0,0 +1,22 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>disable</Nullable> + <AssemblyName>IStation.RedisCache.Run</AssemblyName> + <RootNamespace>IStation.RedisCache</RootNamespace> + </PropertyGroup> + + <ItemGroup> + <Compile Remove="SMI\**" /> + <EmbeddedResource Remove="SMI\**" /> + <None Remove="SMI\**" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Component\IStation.Redis\IStation.Redis.csproj" /> + <ProjectReference Include="..\..\Model\IStation.Model.LinuxTest\IStation.Model.LinuxTest.csproj" /> + </ItemGroup> + +</Project> diff --git a/RedisCache/IStation.RedisCache.LinuxTest/SMI/Expert/Smi_Expert_StoreVibrationRecord.cs b/RedisCache/IStation.RedisCache.LinuxTest/SMI/Expert/Smi_Expert_StoreVibrationRecord.cs new file mode 100644 index 0000000..5d7006f --- /dev/null +++ b/RedisCache/IStation.RedisCache.LinuxTest/SMI/Expert/Smi_Expert_StoreVibrationRecord.cs @@ -0,0 +1,97 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.RedisCache +{ + public class Smi_Expert_StoreVibrationRecord + { + private const string Flag = "smi-expert";//鏍囧織 + + //鏈�鍚庝竴鏉¤褰� + private const string _lastRecord = "LastRecord"; + + + //Redis瀹㈡埛绔緟鍔╃被瀵硅薄 + private readonly RedisClientHelper _redisClient = new RedisClientHelper(); + + //鍒涘缓RedisKey + private static string CreateRedisKey(string objectId) + { + return $"{RedisKeyHelper.CreateKey(Flag)}:{objectId}"; + } + + + /// <summary> + /// 璁剧疆鏈�鍚庝竴鏉¤褰� + /// </summary> + public void SetLastRecord(Model.Smi_Expert_VibrationRecord model) + { + if (model == null) + return; + var redisKey = CreateRedisKey(model.ObjectId); + _redisClient.HashSetJosn(redisKey, _lastRecord,model); + } + + /// <summary> + /// 璁剧疆鏈�鍚庝竴鏉¤褰�(鎵归噺) + /// </summary> + public void SetLastRecord(IEnumerable<Model.Smi_Expert_VibrationRecord> list) + { + if (list == null || list.Count() < 1) + return; + foreach (var item in list) + { + SetLastRecord(item); + } + } + + /// <summary> + /// 鑾峰彇鏈�鍚庝竴鏉¤褰� + /// </summary> + public Model.Smi_Expert_VibrationRecord GetLastRecord(string ObjectId) + { + var redisKey = CreateRedisKey(ObjectId); + return _redisClient.HashGetJson<Model.Smi_Expert_VibrationRecord>(redisKey,_lastRecord); + } + + /// <summary> + /// 鑾峰彇鏈�鍚庝竴鏉¤褰� + /// </summary> + public List<Model.Smi_Expert_VibrationRecord> GetLastRecord(IEnumerable<string> ObjectIds) + { + if (ObjectIds == null || ObjectIds.Count() < 1) + return default; + return ObjectIds.Select(x => GetLastRecord(x)).Where(x => x != null).ToList(); + } + + /// <summary> + /// 鑾峰彇鏈�鍚庝竴鏉¤褰昐tartWith + /// </summary> + public List<Model.Smi_Expert_VibrationRecord> GetLastRecordStartWith(string objectId) + { + var key = CreateRedisKey(objectId); + var allKeys = _redisClient.AllKeyStartWidth(key); + if (allKeys == null || allKeys.Count < 1) + return default; + var vm_list = new List<Model.Smi_Expert_VibrationRecord>(); + foreach (var redisKey in allKeys) + { + var vm = _redisClient.HashGetJson<Model.Smi_Expert_VibrationRecord>(redisKey, _lastRecord); + if (vm != null) + { + vm_list.Add(vm); + } + } + return vm_list; + } + + + + + + + } +} diff --git "a/RedisCache/IStation.RedisCache.LinuxTest/SMI/\350\210\252\345\244\251/Smi_HangTian_StoreVibrationRecord.cs" "b/RedisCache/IStation.RedisCache.LinuxTest/SMI/\350\210\252\345\244\251/Smi_HangTian_StoreVibrationRecord.cs" new file mode 100644 index 0000000..bbca7e5 --- /dev/null +++ "b/RedisCache/IStation.RedisCache.LinuxTest/SMI/\350\210\252\345\244\251/Smi_HangTian_StoreVibrationRecord.cs" @@ -0,0 +1,97 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.RedisCache +{ + public class Smi_HangTian_StoreVibrationRecord + { + private const string Flag = "smi-hangtian";//鏍囧織 + + //鏈�鍚庝竴鏉¤褰� + private const string _lastRecord = "LastRecord"; + + + //Redis瀹㈡埛绔緟鍔╃被瀵硅薄 + private readonly RedisClientHelper _redisClient = new RedisClientHelper(); + + //鍒涘缓RedisKey + private static string CreateRedisKey(string objectId) + { + return $"{RedisKeyHelper.CreateKey(Flag)}:{objectId}"; + } + + + /// <summary> + /// 璁剧疆鏈�鍚庝竴鏉¤褰� + /// </summary> + public void SetLastRecord(Model.Smi_HangTian_VibrationRecord model) + { + if (model == null) + return; + var redisKey = CreateRedisKey(model.ObjectId); + _redisClient.HashSetJosn(redisKey, _lastRecord, model); + } + + /// <summary> + /// 璁剧疆鏈�鍚庝竴鏉¤褰�(鎵归噺) + /// </summary> + public void SetLastRecord(IEnumerable<Model.Smi_HangTian_VibrationRecord> list) + { + if (list == null || list.Count() < 1) + return; + foreach (var item in list) + { + SetLastRecord(item); + } + } + + /// <summary> + /// 鑾峰彇鏈�鍚庝竴鏉¤褰� + /// </summary> + public Model.Smi_HangTian_VibrationRecord GetLastRecord(string ObjectId) + { + var redisKey = CreateRedisKey(ObjectId); + return _redisClient.HashGetJson<Model.Smi_HangTian_VibrationRecord>(redisKey, _lastRecord); + } + + /// <summary> + /// 鑾峰彇鏈�鍚庝竴鏉¤褰� + /// </summary> + public List<Model.Smi_HangTian_VibrationRecord> GetLastRecord(IEnumerable<string> ObjectIds) + { + if (ObjectIds == null || ObjectIds.Count() < 1) + return default; + return ObjectIds.Select(x => GetLastRecord(x)).Where(x => x != null).ToList(); + } + + /// <summary> + /// 鑾峰彇鏈�鍚庝竴鏉¤褰昐tartWith + /// </summary> + public List<Model.Smi_HangTian_VibrationRecord> GetLastRecordStartWith(string objectId) + { + var key = CreateRedisKey(objectId); + var allKeys = _redisClient.AllKeyStartWidth(key); + if (allKeys == null || allKeys.Count < 1) + return default; + var vm_list = new List<Model.Smi_HangTian_VibrationRecord>(); + foreach (var redisKey in allKeys) + { + var vm = _redisClient.HashGetJson<Model.Smi_HangTian_VibrationRecord>(redisKey, _lastRecord); + if (vm != null) + { + vm_list.Add(vm); + } + } + return vm_list; + } + + + + + + + } +} diff --git a/RedisCache/IStation.RedisCache.LinuxTest/monitor_record/MonitorRecordCacheHelper.cs b/RedisCache/IStation.RedisCache.LinuxTest/monitor_record/MonitorRecordCacheHelper.cs new file mode 100644 index 0000000..c6b9cb8 --- /dev/null +++ b/RedisCache/IStation.RedisCache.LinuxTest/monitor_record/MonitorRecordCacheHelper.cs @@ -0,0 +1,78 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.RedisCache +{ + /// <summary> + /// 鐩戞祴璁板綍缂撳瓨杈呭姪绫� + /// </summary> + public class MonitorRecordCacheHelper + { + + //Redis瀹㈡埛绔緟鍔╃被瀵硅薄 + private readonly RedisClientHelper _redisClient = new RedisClientHelper(); + + private static string CreateRedisKey(long monitorPointId) + { + return $"linux_test:{monitorPointId}"; + } + + //鏈�鍚庝竴鏉¤褰� + private const string _lastRecord = "last-record"; + + + #region 鏈�鍚庝竴鏉¤褰� + + /// <summary> + /// 璁剧疆鏈�鍚庝竴鏉¤褰� + /// </summary> + public void SetLastRecord(Model.MonitorRecord model) + { + if (model == null) + return; + var redisKey = CreateRedisKey(model.MonitorPointID); + _redisClient.HashSetJosn(redisKey, _lastRecord, model); + } + + /// <summary> + /// 璁剧疆鏈�鍚庝竴鏉¤褰� + /// </summary> + public void SetLastRecord(IEnumerable<Model.MonitorRecord> list) + { + if (list == null || list.Count() < 1) + return; + foreach (var item in list) + { + SetLastRecord(item); + } + } + + /// <summary> + /// 鑾峰彇鏈�鍚庝竴鏉¤褰� + /// </summary> + public Model.MonitorRecord GetLastRecord(long monitorPointId) + { + var redisKey = CreateRedisKey(monitorPointId); + return _redisClient.HashGetJson<Model.MonitorRecord>(redisKey, _lastRecord); + } + + /// <summary> + /// 鑾峰彇鏈�鍚庝竴鏉¤褰� + /// </summary> + public List<Model.MonitorRecord> GetLastRecord(IEnumerable<long> monitorPointIds) + { + if (monitorPointIds == null || monitorPointIds.Count() < 1) + return default; + return monitorPointIds.Select(x => GetLastRecord(x)).Where(x => x != null).ToList(); + } + + + #endregion + + + + } +} diff --git a/Server/IStation.Server.LinuxTest/IStation.Server.LinuxTest.csproj b/Server/IStation.Server.LinuxTest/IStation.Server.LinuxTest.csproj new file mode 100644 index 0000000..dbc59cb --- /dev/null +++ b/Server/IStation.Server.LinuxTest/IStation.Server.LinuxTest.csproj @@ -0,0 +1,16 @@ +锘�<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>disable</Nullable> + <AssemblyName>IStation.Server.LinuxTest</AssemblyName> + <RootNamespace>IStation.Server</RootNamespace> + </PropertyGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Service\IStation.Service.LinuxTest\IStation.Service.LinuxTest.csproj" /> + </ItemGroup> + +</Project> diff --git a/Server/IStation.Server.LinuxTest/IStation.Server.LinuxTest.csproj.user b/Server/IStation.Server.LinuxTest/IStation.Server.LinuxTest.csproj.user new file mode 100644 index 0000000..e08933d --- /dev/null +++ b/Server/IStation.Server.LinuxTest/IStation.Server.LinuxTest.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\Server\IStation.Server.LinuxTest\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/Server/IStation.Server.LinuxTest/Program.cs b/Server/IStation.Server.LinuxTest/Program.cs new file mode 100644 index 0000000..4e75475 --- /dev/null +++ b/Server/IStation.Server.LinuxTest/Program.cs @@ -0,0 +1,19 @@ +锘�// See https://aka.ms/new-console-template for more information +using IStation; +using IStation.Server; + +LogHelper.Info("寮�鍚惎鍔ㄦ湇鍔�..."); + +var jobHelper=new JobHelper(); +jobHelper.StartJob(); +AppDomain.CurrentDomain.ProcessExit += (sender, e) => +{ + jobHelper.CancelJob(); +}; + +LogHelper.Info("鏈嶅姟鍚姩鎴愬姛锛�"); + +Console.ReadLine(); + + + diff --git a/Server/IStation.Server.LinuxTest/Properties/PublishProfiles/FolderProfile.pubxml b/Server/IStation.Server.LinuxTest/Properties/PublishProfiles/FolderProfile.pubxml new file mode 100644 index 0000000..639934f --- /dev/null +++ b/Server/IStation.Server.LinuxTest/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> \ No newline at end of file diff --git a/Server/IStation.Server.LinuxTest/Properties/PublishProfiles/FolderProfile.pubxml.user b/Server/IStation.Server.LinuxTest/Properties/PublishProfiles/FolderProfile.pubxml.user new file mode 100644 index 0000000..3a62c30 --- /dev/null +++ b/Server/IStation.Server.LinuxTest/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|2022-09-05T04:14:53.8624561Z;</History> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/Server/IStation.Server.LinuxTest/helpers/ConfigHelper.cs b/Server/IStation.Server.LinuxTest/helpers/ConfigHelper.cs new file mode 100644 index 0000000..7869105 --- /dev/null +++ b/Server/IStation.Server.LinuxTest/helpers/ConfigHelper.cs @@ -0,0 +1,25 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Server +{ + internal static class ConfigHelper + { + + /// <summary> + /// 閫氶亾鍚嶇О + /// </summary> + public static string StoreQueueName + { + get + { + return Settings.LinuxTest.Queue.StoreQueueName; + } + } + + + } +} diff --git a/Server/IStation.Server.LinuxTest/interface/IJobHelper.cs b/Server/IStation.Server.LinuxTest/interface/IJobHelper.cs new file mode 100644 index 0000000..662961c --- /dev/null +++ b/Server/IStation.Server.LinuxTest/interface/IJobHelper.cs @@ -0,0 +1,24 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Server +{ + /// <summary> + /// 浠诲姟杈呭姪绫绘帴鍙� + /// </summary> + public interface IJobHelper + { + /// <summary> + /// 寮�濮嬩换鍔� + /// </summary> + void StartJob(); + + /// <summary> + /// 鍙栨秷浠诲姟 + /// </summary> + void CancelJob(); + } +} diff --git a/Server/IStation.Server.LinuxTest/task/JobHelper.cs b/Server/IStation.Server.LinuxTest/task/JobHelper.cs new file mode 100644 index 0000000..c927f6d --- /dev/null +++ b/Server/IStation.Server.LinuxTest/task/JobHelper.cs @@ -0,0 +1,35 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Server +{ + /// <summary> + /// 浠诲姟杈呭姪绫� + /// </summary> + public class JobHelper + { + private List<IJobHelper> _jobHelpers = new List<IJobHelper>() + { + new MonitorJobHelper() + }; + + /// <summary> + /// 寮�濮嬩换鍔� + /// </summary> + public void StartJob() + { + _jobHelpers.ForEach(x=>x.StartJob()); + } + + /// <summary> + /// 鍙栨秷浠诲姟 + /// </summary> + public void CancelJob() + { + _jobHelpers.ForEach(x=>x.CancelJob()); + } + } +} diff --git a/Server/IStation.Server.LinuxTest/task/MonitorJobHelper.cs b/Server/IStation.Server.LinuxTest/task/MonitorJobHelper.cs new file mode 100644 index 0000000..dc29761 --- /dev/null +++ b/Server/IStation.Server.LinuxTest/task/MonitorJobHelper.cs @@ -0,0 +1,71 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Server +{ + /// <summary> + /// 鐩戞祴浠诲姟杈呭姪绫� + /// </summary> + public class MonitorJobHelper : IJobHelper + { + private readonly RabbitMqQueueHelper _queueHelper = new RabbitMqQueueHelper(); + + /// <summary> + /// 寮�濮嬩换鍔� + /// </summary> + public void StartJob() + { + _queueHelper.Receive<List<Model.MonitorRecord>>(ConfigHelper.StoreQueueName, (data) => + { + + try + { + if (data == null) + { + LogHelper.Error("鐩戞祴鏁版嵁瀛樺偍鏈嶅姟涓紝鏁版嵁搴忓垪鍖栧け璐ワ紝鑷姩璺宠繃褰撳墠鏁版嵁锛�"); + return true; + } + if (data == null || data.Count < 1) + { + LogHelper.Error($"鐩戞祴鏁版嵁瀛樺偍鏈嶅姟涓紝鏁版嵁璁板綍涓虹┖锛岃嚜鍔ㄨ烦杩囧綋鍓嶆暟鎹紒"); + return true; + } + + #region 鍐欐棩蹇� + + LogHelper.Info($"鐩戞祴鏁版嵁瀛樺偍鏈嶅姟涓紝鏁版嵁鏁伴噺-{data.Count}!"); + + #endregion + + + var result = new Service.MonitorRecord().Inserts(data); + if (!result) + { + LogHelper.Error($"鐩戞祴鏁版嵁瀛樺偍鏈嶅姟涓�,褰撳墠閫氶亾澶勪簬闃诲鐘舵�� 锛�"); + } + return result; + } + catch (Exception ex) + { + LogHelper.Error("鐩戞祴鏁版嵁瀛樺偍鏈嶅姟涓�,鏁版嵁娑堟伅闃熷垪鍑洪敊锛岃嚜鍔ㄨ烦杩囪鏉℃暟鎹�", ex); + return true; + } + }); + } + + /// <summary> + /// 鍙栨秷浠诲姟 + /// </summary> + public void CancelJob() + { + if (_queueHelper == null) + return; + _queueHelper.Close(); + } + + + } +} diff --git a/Service/IStation.Service.LinuxTest/IStation.Service.LinuxTest.csproj b/Service/IStation.Service.LinuxTest/IStation.Service.LinuxTest.csproj new file mode 100644 index 0000000..2953ce4 --- /dev/null +++ b/Service/IStation.Service.LinuxTest/IStation.Service.LinuxTest.csproj @@ -0,0 +1,20 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>disable</Nullable> + <AssemblyName>IStation.Service.LinuxTest</AssemblyName> + <RootNamespace>IStation.Service</RootNamespace> + <GenerateDocumentationFile>True</GenerateDocumentationFile> + </PropertyGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Component\IStation.RabbitMq\IStation.RabbitMq.csproj" /> + <ProjectReference Include="..\..\DAL\IStation.DAL.LinuxTest\IStation.DAL.LinuxTest.csproj" /> + <ProjectReference Include="..\..\Model\IStation.Model.LinuxTest\IStation.Model.LinuxTest.csproj" /> + <ProjectReference Include="..\..\RedisCache\IStation.RedisCache.LinuxTest\IStation.RedisCache.LinuxTest.csproj" /> + <ProjectReference Include="..\IStation.Service.Core\IStation.Service.Core.csproj" /> + </ItemGroup> + +</Project> diff --git a/Service/IStation.Service.LinuxTest/helpers/CacheHelper.cs b/Service/IStation.Service.LinuxTest/helpers/CacheHelper.cs new file mode 100644 index 0000000..e2ff045 --- /dev/null +++ b/Service/IStation.Service.LinuxTest/helpers/CacheHelper.cs @@ -0,0 +1,40 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation.Service +{ + /// <summary> + /// 缂撳瓨杈呭姪绫� + /// </summary> + internal class CacheHelper + { + private const string _cacheKeyPrefix = "*Default_LinuxTest_Prefix*";//缂撳瓨閿墠缂� + + /// <summary> + /// 鑾峰彇缂撳瓨閿� + /// </summary> + public static string GetCacheKey(string keyContent) + { + return string.Format("{0}_{1}", _cacheKeyPrefix, keyContent); + } + + /// <summary> + /// 娓呴櫎鍏ㄩ儴 + /// </summary> + public static void Clear() + { + MemoryCacheHelper.Remove((key) => + { + return key.StartsWith(_cacheKeyPrefix); + }); + } + + + + + + } +} diff --git a/Service/IStation.Service.LinuxTest/helpers/ConfigHelper.cs b/Service/IStation.Service.LinuxTest/helpers/ConfigHelper.cs new file mode 100644 index 0000000..309d978 --- /dev/null +++ b/Service/IStation.Service.LinuxTest/helpers/ConfigHelper.cs @@ -0,0 +1,48 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Configuration; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using IStation.Untity; + +namespace IStation.Service +{ + /// <summary> + /// 閰嶇疆杈呭姪绫� + /// </summary> + internal class ConfigHelper + { + /// <summary> + /// 缂撳瓨淇濇寔鏃堕棿 锛堝垎閽燂級 + /// </summary> + public static int CacheKeepTime + { + get + { + return Settings.MemoryCache.KeepTime; + } + } + + /// <summary> + /// 缂撳瓨闅忔満鏃堕棿 锛堢锛� + /// </summary> + public static int CacheRandomTime + { + get + { + return RandomHelper.Random(0, Settings.MemoryCache.RandomTime); + } + } + + /// <summary> + /// 瀛樺偍閫氶亾鍚嶇О + /// </summary> + public static string StoreQueueName + { + get { return Settings.LinuxTest.Queue.StoreQueueName; } + } + + + } +} diff --git a/Service/IStation.Service.LinuxTest/monitor_record/MonitorRecord.cs b/Service/IStation.Service.LinuxTest/monitor_record/MonitorRecord.cs new file mode 100644 index 0000000..580ab6b --- /dev/null +++ b/Service/IStation.Service.LinuxTest/monitor_record/MonitorRecord.cs @@ -0,0 +1,164 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using IStation.RedisCache; + +namespace IStation.Service +{ + /// <summary> + /// 瀹炴椂鐩戞祴璁板綍 + /// </summary> + public partial class MonitorRecord + { + #region 鏈�杩戜竴鏉¤褰� + + /// <summary> + /// 鑾峰彇鏈�杩戜竴鏉¤褰� + /// </summary> + public Model.MonitorRecord GetLastRecord(long monitorPointId) + { + var redisHelper = new MonitorRecordCacheHelper(); + var record = redisHelper.GetLastRecord(monitorPointId); + return record; + } + + /// <summary> + /// 鑾峰彇鏈�杩戜竴鏉¤褰� + /// </summary> + public List<Model.MonitorRecord> GetLastRecord(IEnumerable<long> monitorPointIds) + { + if (monitorPointIds == null || monitorPointIds.Count() < 1) + return default; + var redisHelper = new MonitorRecordCacheHelper(); + var record = redisHelper.GetLastRecord(monitorPointIds); + return record; + } + + #endregion + + #region Query + + /// <summary> + /// 鑾峰彇鎵�鏈� + /// </summary> + public List<Model.MonitorRecord> GetAll() + { + var dal = new DAL.MonitorRecord(); + var all = dal.GetAll(); + return Entity2Models(all); + } + + + #endregion + + #region 閫氳繃 MonitorPointID 鑾峰彇 + + /// <summary> + /// 閫氳繃 MonitorPointID 鑾峰彇鏌愪竴澶╃殑鏁版嵁 + /// </summary> + public List<Model.MonitorRecord> GetByMonitorPointIDOfDay( long MonitorPointID, DateTime Day) + { + var dal = new DAL.MonitorRecord(); + var entity_list = dal.GetByMonitorPointIDOfDay( MonitorPointID, Day); + return Entity2Models(entity_list); + } + + /// <summary> + /// 閫氳繃 MonitorPointID 鑾峰彇鏃ユ湡鍖洪棿鍐呯殑鏁版嵁 + /// </summary> + public List<Model.MonitorRecord> GetByMonitorPointIDOfDayRange(long MonitorPointID, DateTime StartDay, DateTime EndDay) + { + if (StartDay.Date > EndDay.Date) + return default; + var dal = new DAL.MonitorRecord(); + var entity_list = dal.GetByMonitorPointIDOfDayRange(MonitorPointID, StartDay, EndDay); + return Entity2Models(entity_list); + } + + /// <summary> + /// 閫氳繃 MonitorPointID 鑾峰彇鏃堕棿鍖洪棿鍐呯殑鏁版嵁 + /// </summary> + public List<Model.MonitorRecord> GetByMonitorPointIDOfTimeRange( long MonitorPointID, DateTime StartTime, DateTime EndTime) + { + if (StartTime > EndTime) + return default; + var dal = new DAL.MonitorRecord(); + var entity_list = dal.GetByMonitorPointIDOfTimeRange( MonitorPointID, StartTime, EndTime); + return Entity2Models(entity_list); + } + + #endregion + + #region Insert + + /// <summary> + /// 鎻掑叆涓�鏉� + /// </summary> + public long Insert(Model.MonitorRecord model) + { + if (model == null) + return default; + var dal = new DAL.MonitorRecord(); + var entity = Model2Entity(model); + var id = dal.Insert(entity); + return id; + } + + /// <summary> + /// 鎻掑叆澶氭潯 + /// </summary> + public bool Inserts(List<Model.MonitorRecord> list) + { + if (list == null || list.Count < 1) + return false; + var dal = new DAL.MonitorRecord(); + var entity_list = Model2Entities(list); + var bol = dal.Inserts(entity_list); + return bol; + } + + + /// <summary> + /// 鎻掑叆鏈�杩戜竴鏉¤褰� + /// </summary> + public bool InsertLastRecord(Model.MonitorRecord model) + { + if (model == null) + return default; + var queueHelper = new RabbitMqQueueHelper(); + var bol = queueHelper.Push(ConfigHelper.StoreQueueName, new List<Model.MonitorRecord> { model }); + if (bol) + { + var redisHelper = new MonitorRecordCacheHelper(); + redisHelper.SetLastRecord(model); + } + + return bol; + } + + /// <summary> + /// 鎻掑叆鏈�杩戝鏉¤褰� + /// </summary> + public bool InsertsLastRecord(List<Model.MonitorRecord> list) + { + if (list == null || list.Count() < 1) + return default; + var queueHelper = new RabbitMqQueueHelper(); + var bol = queueHelper.Push(ConfigHelper.StoreQueueName, list); + if (bol) + { + var redisHelper = new MonitorRecordCacheHelper(); + redisHelper.SetLastRecord(list); + } + return bol; + } + + + + #endregion + + + } +} diff --git a/Service/IStation.Service.LinuxTest/monitor_record/MonitorRecord_Instance.cs b/Service/IStation.Service.LinuxTest/monitor_record/MonitorRecord_Instance.cs new file mode 100644 index 0000000..71b3d70 --- /dev/null +++ b/Service/IStation.Service.LinuxTest/monitor_record/MonitorRecord_Instance.cs @@ -0,0 +1,72 @@ +锘縰sing AutoMapper; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using IStation.Untity; + +namespace IStation.Service +{ + public partial class MonitorRecord + { + //Entity to Model + private Model.MonitorRecord Entity2Model(Entity.MonitorRecord entity) + { + if (entity == null) + return default; + var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Entity.MonitorRecord, Model.MonitorRecord>() + ).CreateMapper(); + var model = mapper.Map<Entity.MonitorRecord, Model.MonitorRecord>(entity); + return model; + } + + //Entities to Models + private List<Model.MonitorRecord> Entity2Models(List<Entity.MonitorRecord> entities) + { + if (entities == null || entities.Count() < 1) + return default; + var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Entity.MonitorRecord, Model.MonitorRecord>() + ).CreateMapper(); + var models = mapper.Map<List<Entity.MonitorRecord>, List<Model.MonitorRecord>>(entities); + return models; + } + + //Model to Entity + private Entity.MonitorRecord Model2Entity(Model.MonitorRecord model) + { + if (model == null) + return default; + var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Model.MonitorRecord, Entity.MonitorRecord>() + ).CreateMapper(); + var entity = mapper.Map<Model.MonitorRecord, Entity.MonitorRecord>(model); + return entity; + } + + //Models to Entities + private List<Entity.MonitorRecord> Model2Entities(List<Model.MonitorRecord> models) + { + if (models == null || models.Count < 1) + return default; + var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Model.MonitorRecord, Entity.MonitorRecord>() + ).CreateMapper(); + var entities = mapper.Map<List<Model.MonitorRecord>, List<Entity.MonitorRecord>>(models); + return entities; + } + + //Model to Entity + private void Model2Entity(Model.MonitorRecord model, Entity.MonitorRecord entity) + { + if (model == null || entity == null) + return; + var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Model.MonitorRecord, Entity.MonitorRecord>() + ).CreateMapper(); + mapper.Map(model, entity); + } + + + + + + } +} diff --git a/Settings/IStation.Settings/models/Paras.cs b/Settings/IStation.Settings/models/Paras.cs index 9513d53..9f1d931 100644 --- a/Settings/IStation.Settings/models/Paras.cs +++ b/Settings/IStation.Settings/models/Paras.cs @@ -153,5 +153,10 @@ /// Vibration鍙傛暟 /// </summary> public Paras_Vibration Vibration { get; set; } + + /// <summary> + /// LinuxTest鍙傛暟 + /// </summary> + public Paras_LinuxTest LinuxTest { get; set; } } } diff --git a/Settings/IStation.Settings/models/linux_test/Paras_LinuxTest.cs b/Settings/IStation.Settings/models/linux_test/Paras_LinuxTest.cs new file mode 100644 index 0000000..d4d9b2d --- /dev/null +++ b/Settings/IStation.Settings/models/linux_test/Paras_LinuxTest.cs @@ -0,0 +1,24 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation +{ + /// <summary> + /// LinuxTest鍙傛暟 + /// </summary> + public class Paras_LinuxTest + { + /// <summary> + /// 鏁版嵁搴� + /// </summary> + public Paras_LinuxTest_DataBase DataBase { get; set; } + + /// <summary> + /// 閫氶亾 + /// </summary> + public Paras_LinuxTest_Queue Queue { get; set; } + } +} diff --git a/Settings/IStation.Settings/models/linux_test/Paras_LinuxTest_DataBase.cs b/Settings/IStation.Settings/models/linux_test/Paras_LinuxTest_DataBase.cs new file mode 100644 index 0000000..46ae961 --- /dev/null +++ b/Settings/IStation.Settings/models/linux_test/Paras_LinuxTest_DataBase.cs @@ -0,0 +1,20 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation +{ + /// <summary> + /// 鏁版嵁搴� + /// </summary> + public class Paras_LinuxTest_DataBase + { + /// <summary> + /// 杩炴帴瀛楃涓� + /// </summary> + public string ConnectString { get; set; } + } + +} diff --git a/Settings/IStation.Settings/models/linux_test/Paras_LinuxTest_Queue.cs b/Settings/IStation.Settings/models/linux_test/Paras_LinuxTest_Queue.cs new file mode 100644 index 0000000..5b46ef0 --- /dev/null +++ b/Settings/IStation.Settings/models/linux_test/Paras_LinuxTest_Queue.cs @@ -0,0 +1,20 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IStation +{ + /// <summary> + /// 閫氶亾 + /// </summary> + public class Paras_LinuxTest_Queue + { + /// <summary> + /// 瀛樺偍閫氶亾鍚嶇О + /// </summary> + public string StoreQueueName { get; set; } + } + +} diff --git a/Settings/IStation.Settings/paras/Settings.cs b/Settings/IStation.Settings/paras/Settings.cs index 4f5f4f0..57ef337 100644 --- a/Settings/IStation.Settings/paras/Settings.cs +++ b/Settings/IStation.Settings/paras/Settings.cs @@ -245,6 +245,16 @@ } /// <summary> + /// LinuxTest 鍙傛暟 + /// </summary> + public static Paras_LinuxTest LinuxTest + { + get { return SettingsHelper.Get().LinuxTest; } + } + + + + /// <summary> /// 淇濆瓨 /// </summary> public static bool Save() diff --git a/Settings/IStation.Settings/paras_settings.json b/Settings/IStation.Settings/paras_settings.json index 789080a..eb98c58 100644 --- a/Settings/IStation.Settings/paras_settings.json +++ b/Settings/IStation.Settings/paras_settings.json @@ -259,7 +259,16 @@ "ConfigureID": 0 } } - } + }, + "LinuxTest": { + "DataBase": { + "ConnectString": "PORT=5432;DATABASE=istation_linux_test;HOST=101.133.223.111;PASSWORD=Eventech2010;USER ID=postgres;" + }, + "Queue": { + "StoreQueueName": "linux_text_queue_name" + } + + } } -- Gitblit v1.9.3