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