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/GrpcSetService.cs |  120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 120 insertions(+), 0 deletions(-)

diff --git a/HotelPms.GrpcService/Services/GrpcSetService.cs b/HotelPms.GrpcService/Services/GrpcSetService.cs
new file mode 100644
index 0000000..5fca88c
--- /dev/null
+++ b/HotelPms.GrpcService/Services/GrpcSetService.cs
@@ -0,0 +1,120 @@
+using HotelPms.Data;
+using HotelPms.Data.Common;
+using HotelPms.GrpcService.Util;
+using HotelPms.Share.Data;
+using HotelPms.Share.IO;
+using HotelPms.Share.Util;
+using Google.Protobuf;
+using Grpc.Core;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Logging;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.SqlClient;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using NPOI.SS.UserModel;
+
+namespace HotelPms.GrpcService
+{
+    public class GrpcSetService : GrpcSetCore.GrpcSetCoreBase
+    {
+        private readonly ILogger<GrpcTableService> _logger;
+        private IConfiguration m_Configuration;
+
+        public GrpcSetService(ILogger<GrpcTableService> logger, IConfiguration configuration)
+        {
+            _logger = logger;
+            m_Configuration = configuration;
+        }
+
+        public async override Task GetDataStream(IAsyncStreamReader<DataRequest> requestStream, IServerStreamWriter<GrpcSet> responseStream, ServerCallContext context)
+        {
+            DataRequest request = null;
+            await foreach (var message in requestStream.ReadAllAsync())
+            {
+                request = message;
+                break;
+            }
+
+            //データ送信
+            GrpcSet set = Get(request);
+            await responseStream.WriteAsync(set);
+        }
+
+        public override Task<GrpcSet> GetData(DataRequest request, ServerCallContext context)
+        {
+            return Task.FromResult(Get(request));
+        }
+
+        private string GetDB(DataRequest request)
+        {
+            //if (request.ActionType == (int)ETableActionType.ReportMaster)
+            //{
+            //    return Setting.HotelCommonDB;
+            //}
+            //else
+            //{
+                return Setting.HotelPmsDB;
+            //}
+        }
+
+        private string GetSql(DataRequest request)
+        {
+            string[] fields;
+            StringBuilder sql = new StringBuilder();
+            if (request.ActionType == (int)ESetActionType.CustomSql)
+            {
+                sql.Append(request.Data);
+            }
+            else if (request.ActionType == (int)ESetActionType.ColSetting)
+            {
+                fields = request.Data.Split(new char[] { ',' });  //@MachineName,@UserName,@ID
+                sql.Append($"EXECUTE GetColSetting '{fields[0]}','{fields[1]}',{fields[2]}");
+            }
+            else if (request.ActionType == (int)ESetActionType.RoomView)
+            {
+                fields = request.Data.Split(new char[] { ',' });
+                sql.Append($"EXECUTE GetRoomView {(fields[0] == "NULL" ? "NULL" : $"'{fields[0]}'")},{fields[1]},{fields[2]}");
+            }
+            return sql.ToString();
+        }
+
+
+        private GrpcSet Get(DataRequest request)
+        {
+            GrpcSet set = new GrpcSet() { ErrNo = 0, ErrData = string.Empty };
+            OperationLog.Instance.WriteLog(request.ToString());
+
+            using MsSqlNet msSqlNet = new MsSqlNet(GetDB(request));
+            using SqlConnection dbConnect = msSqlNet.Open();
+            string sql = GetSql(request);
+            using SqlCommand command = new SqlCommand(sql, dbConnect);
+            OperationLog.Instance.WriteLog(sql);
+            command.CommandTimeout = 60000 * 100;
+            using SqlDataReader reader = command.ExecuteReader(CommandBehavior.Default);
+            //エラーまだ対応していない                                    
+            if (reader == null)
+            {
+                OperationLog.Instance.WriteLog("SqlDataReader=null");
+                set.ErrNo = msSqlNet.ErrNo;
+                set.ErrData = msSqlNet.ErrInfo;
+            }
+            else
+            {
+                while (true)
+                {
+                    GrpcTable table = new GrpcTable();
+                    set.Tables.Add(table);
+                    GrpcTableService.SetTable(table, reader);
+                    if (!reader.NextResult()) { break; }
+                }
+            }
+            reader.Close();
+            return set;
+        }  //←全てusingはここにDispose
+    }
+}

--
Gitblit v1.10.0