From 1a1c8e71fcd14858f595029f089b2d4a00202b32 Mon Sep 17 00:00:00 2001
From: ogi <Administrator@S-OGI-PC>
Date: Fri, 05 Dec 2025 09:24:16 +0900
Subject: [PATCH] プロジェクトファイルを追加。

---
 HotelPms.GrpcService/Services/UseService.cs |  158 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 158 insertions(+), 0 deletions(-)

diff --git a/HotelPms.GrpcService/Services/UseService.cs b/HotelPms.GrpcService/Services/UseService.cs
new file mode 100644
index 0000000..7f9e322
--- /dev/null
+++ b/HotelPms.GrpcService/Services/UseService.cs
@@ -0,0 +1,158 @@
+using Grpc.Core;
+using HotelPms.Data;
+using HotelPms.Data.UseInfo;
+using HotelPms.GrpcService.Util;
+using HotelPms.Share.Data;
+using HotelPms.Share.IO;
+using HotelPms.Share.Util;
+
+namespace HotelPms.GrpcService
+{
+    /// <summary>
+    /// ■攻略
+    /// 1.Use.proto(message:Use、UseTable;Service:UseCore) ⇒ projectファイルのInclude
+    /// 2.Use.cs(両方)
+    /// 3.UseTable.cs(両方)
+    /// 4.UseService.cs(サーバー側) ⇒ StartupでMapGrpcServiceの処理が必要
+    /// 5.UseAccess.cs(クライアント側)
+    /// </summary>
+    public class UseService : UseCore.UseCoreBase
+    {
+        #region  ★★★★★ Declartions ★★★★★
+
+        private static string TableName = "D_Use";
+        private readonly ILogger<UseService> _logger;
+        private IConfiguration m_Configuration;
+
+        #endregion
+
+        #region  ★★★★★ Property ★★★★★
+        #endregion
+
+        #region  ★★★★★ Class Event ★★★★★
+
+        public UseService(ILogger<UseService> logger, IConfiguration configuration)
+        {
+            _logger = logger;
+            m_Configuration = configuration;
+        }
+
+        #endregion
+
+        #region  ★★★★★ Private Function ★★★★★
+
+        /// <summary>
+        /// 利用情報取得
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        private Use? Get(DataRequest request)
+        {
+            try
+            {                
+                OperationLog.Instance.WriteLog($"データ請求:{request.ToString()}");
+                using MsSqlNet msSqlNet = new(Setting.HotelPmsDB);
+                Use? item = Use.Get(CConvert.ToInt(request.Data), msSqlNet);
+                OperationLog.Instance.WriteLog("データ読込完了");
+                return item;
+            }
+            catch(Exception ex)
+            {
+                OperationLog.Instance.WriteLog($"UseService.Get({request.Data}):{ex.Message}");
+                return null; 
+            }    
+        }
+
+        /// <summary>
+        /// 利用データ更新
+        /// </summary>
+        /// <param name="use"></param>
+        /// <returns></returns>
+        private DataResult Set(Use use)
+        {
+            DataResult result = new() { ErrNo = 0, ErrData = string.Empty };
+            try
+            {
+                OperationLog.Instance.WriteLog($"■利用情報保存開始:{use.ID}");
+
+                string sql = use.ToSql();
+                OperationLog.Instance.WriteLog($"利用情報保存Sql生成:{sql}");
+
+                using MsSqlNet msSqlNet = new(Setting.HotelPmsDB);
+                if (!msSqlNet.ExecuteNonQueryWithTran(sql))
+                {
+                    result.ErrNo = msSqlNet.ErrNo;
+                    result.ErrData = msSqlNet.ErrInfo;
+                }
+                OperationLog.Instance.WriteLog($"利用情報保存結果:{result.ErrNo}.{result.ErrData}");
+
+                //非同期実行
+                if (result.ErrNo == 0)
+                {
+                    Task.Run(() =>
+                    {
+                        OperationLog.Instance.WriteLog($"非同期更新:{use.ID}");
+                        using MsSqlNet msSqlNet = new(Setting.HotelPmsDB);
+                        int cnt = msSqlNet.ExecuteNonQuery($"EXECUTE SaveUseAfterAsync {use.ID}");
+                        OperationLog.Instance.WriteLog($"非同期更新結果:{cnt},ErrNo:{msSqlNet.ErrNo},ErrInfo:{msSqlNet.ErrInfo}");
+                    });
+                }                
+            }
+            catch(Exception ex)
+            {
+                OperationLog.Instance.WriteLog($"UseService.Set():{ex.Message}");
+                result.ErrNo = 999999;
+                result.ErrData = ex.Message;
+            }
+            return result;
+        }
+
+        #endregion
+
+        #region  ★★★★★ Public  Function ★★★★★
+
+        /// <summary>
+        /// 同期実行
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="context"></param>
+        /// <returns></returns>
+        public override Task<Use?> GetData(DataRequest request, ServerCallContext context)
+        {
+            return Task.FromResult(Get(request));
+        }
+
+        public async override Task GetDataStream(IAsyncStreamReader<DataRequest> requestStream, IServerStreamWriter<Use> responseStream, ServerCallContext context)
+        {
+            DataRequest request = null;
+            await foreach (var message in requestStream.ReadAllAsync())
+            {
+                request = message;
+                break;
+            }
+            Use? use = Get(request);
+            await responseStream.WriteAsync(use);  //データ送信
+        }
+
+        public override Task<DataResult> SetData(Use request, ServerCallContext context)
+        {
+            return Task.FromResult(Set(request));
+        }
+
+        public async override Task SetDataStream(IAsyncStreamReader<Use> requestStream, IServerStreamWriter<DataResult> responseStream, ServerCallContext context)
+        {
+            Use table = null;
+            await foreach (var message in requestStream.ReadAllAsync())
+            {
+                table = message;
+                break;
+            }
+
+            DataResult result = Set(table);
+            //データ送信
+            await responseStream.WriteAsync(result);
+        }
+
+        #endregion
+    }
+}

--
Gitblit v1.10.0