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