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] プロジェクトファイルを追加。
---
ProtosExpan/UseInfo/Use.Server.cs | 353 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 353 insertions(+), 0 deletions(-)
diff --git a/ProtosExpan/UseInfo/Use.Server.cs b/ProtosExpan/UseInfo/Use.Server.cs
new file mode 100644
index 0000000..f2228d9
--- /dev/null
+++ b/ProtosExpan/UseInfo/Use.Server.cs
@@ -0,0 +1,353 @@
+using HotelPms.Data.Common.Util;
+using HotelPms.Share.Data;
+using HotelPms.Share.IO;
+using System.Data.Common;
+using System.Reflection;
+using System.Text;
+
+namespace HotelPms.Data.UseInfo
+{
+ /// <summary>
+ /// サーバー側の処理
+ /// ①データR/W
+ /// ②クラウド中の計算
+ /// </summary>
+ public partial class Use
+ {
+ private Dictionary<int, UsePerson> personDict = new();
+ private Dictionary<int, UseDetail> detailDict = new();
+ private Dictionary<string, UseRoom> useRoomDict = new(); //DetailID,UseDate
+
+ /// <summary>
+ /// 利用情報の更新SQL生成
+ /// </summary>
+ /// <returns></returns>
+ public string ToSql()
+ {
+ bool isNew = UpdateID == 0;
+ UseSql useSql = new UseSql(isNew, ID);
+
+ foreach (UsePerson person in PersonlList)
+ {
+ foreach(UsePersonFree personFree in person.FreeList) { useSql.UsePersonFree.AppendLine(personFree.AddSql()); }
+ foreach (UsePersonTel personTel in person.TelList) { useSql.UsePersonTel.AppendLine(personTel.AddSql()); }
+ useSql.UsePerson.AppendLine(person.AddSql());
+ }
+
+ foreach (UseMemo useMemo in MemoList) { useSql.UseMemo.AppendLine(useMemo.AddSql()); }
+ foreach (UseFree useFree in FreeList) { useSql.UseFree.AppendLine(useFree.AddSql()); }
+
+ // 利用明細
+ foreach (UseDetail useDetail in DetailList)
+ {
+ foreach (UseMemo useMemo in useDetail.MemoList) { useSql.UseMemo.AppendLine(useMemo.AddSql()); }
+ foreach (UseFree useFree in useDetail.FreeList) { useSql.UseFree.AppendLine(useFree.AddSql()); }
+ foreach (Rental rental in useDetail.RentalList) { useSql.Rental.AppendLine(rental.AddSql()); }
+ foreach (UseRoom useRoom in useDetail.UseRoomList)
+ {
+ foreach (UseFree useFree in useRoom.FreeList) { useSql.UseFree.AppendLine(useFree.AddSql()); }
+ foreach (UseAllo useAllo in useRoom.UseAlloList) { useSql.UseAllo.AppendLine(useAllo.AddSql()); }
+ foreach (Arrange arrange in useRoom.ArrangeList) { useSql.Arrange.AppendLine(arrange.AddSql()); }
+ foreach (Sale sale in useRoom.SaleList) { useSql.Sale.AppendLine(sale.AddSql()); }
+ foreach (Pay pay in useRoom.PayList) { useSql.Pay.AppendLine(pay.AddSql()); }
+ useSql.UseRoom.AppendLine(useRoom.AddSql());
+ }
+ useSql.UseDetail.AppendLine(useDetail.AddSql());
+ }
+
+ //更新直前にカウントする
+ UpdateID++;
+ useSql.Use.AppendLine(isNew ? AddSql() : UpdateSql());
+
+
+ StringBuilder sql = new StringBuilder();
+ sql.Append(useSql.ToString());
+ sql.AppendLine($"EXECUTE SaveUseAfter {ID}");
+ return sql.ToString();
+ }
+
+ /// <summary>
+ /// 利用者情報
+ /// </summary>
+ /// <param name="reader"></param>
+ /// <param name="use"></param>
+ public void SetUsePerson(DbDataReader reader)
+ {
+ while (reader.Read())
+ {
+ UsePerson item = new();
+ item.ConvertReader(reader);
+ PersonlList.Add(item);
+ personDict.Add(item.PersonID, item);
+ }
+ reader.NextResult();
+ }
+
+ /// <summary>
+ /// 個人自由集計
+ /// </summary>
+ /// <param name="reader"></param>
+ public void SetUsePersonFree(DbDataReader reader)
+ {
+ while (reader.Read())
+ {
+ UsePersonFree item = new();
+ item.ConvertReader(reader);
+ UsePerson person = personDict[item.PersonID];
+ person.FreeList.Add(item);
+ }
+ reader.NextResult();
+ }
+
+ /// <summary>
+ /// 個人電話
+ /// </summary>
+ /// <param name="reader"></param>
+ public void SetUsePersonTel(DbDataReader reader)
+ {
+ while (reader.Read())
+ {
+ UsePersonTel item = new();
+ item.ConvertReader(reader);
+ UsePerson person = personDict[item.PersonID];
+ person.TelList.Add(item);
+ }
+ reader.NextResult();
+ }
+
+ /// <summary>
+ /// 利用明細
+ /// </summary>
+ /// <param name="reader"></param>
+ /// <param name="use"></param>
+ public void SetUseDetail(DbDataReader reader)
+ {
+ while (reader.Read())
+ {
+ UseDetail item = new();
+ item.ConvertReader(reader);
+ DetailList.Add(item);
+ detailDict.Add(item.DetailID, item);
+ }
+ reader.NextResult();
+ }
+
+ /// <summary>
+ /// 利用部屋
+ /// </summary>
+ /// <param name="reader"></param>
+ public void SetUseRoom(DbDataReader reader)
+ {
+ while (reader.Read())
+ {
+ UseRoom item = new();
+ item.ConvertReader(reader);
+ UseDetail detail = detailDict[item.DetailID];
+ detail.UseRoomList.Add(item);
+ item.Parent = detail;
+ useRoomDict.Add($"{item.DetailID},{item.UseDate.Value}", item);
+ }
+ reader.NextResult();
+ }
+
+ /// <summary>
+ /// 部屋割り
+ /// </summary>
+ /// <param name="reader"></param>
+ public void SetUseAllo(DbDataReader reader)
+ {
+ while (reader.Read())
+ {
+ UseAllo item = new();
+ item.ConvertReader(reader);
+ UseRoom useRoom = useRoomDict[$"{item.DetailID},{item.UseDate.Value}"];
+ useRoom.UseAlloList.Add(item);
+ item.Parent = useRoom;
+ item.Detail = detailDict[item.DetailID];
+ item.Person = personDict[item.PersonID];
+ }
+ reader.NextResult();
+ }
+
+ /// <summary>
+ /// 自由集計
+ /// </summary>
+ /// <param name="reader"></param>
+ /// <param name="use"></param>
+ public void SetUseFree(DbDataReader reader)
+ {
+ while (reader.Read())
+ {
+ UseFree item = new();
+ item.ConvertReader(reader);
+
+ if (item.DetailID == 0)
+ {
+ //利用情報の自由集計
+ FreeList.Add(item);
+ item.Parent = this;
+ }
+ else if (item.UseDate.CompareTo(customTypes.Date.MinUseDate) <= 0)
+ {
+ //利用明細の自由集計
+ UseDetail detail = detailDict[item.DetailID];
+ detail.FreeList.Add(item);
+ item.Parent = detail;
+ }
+ else
+ {
+ //利用部屋の自由集計
+ UseRoom useRoom = useRoomDict[$"{item.DetailID},{item.UseDate.Value}"];
+ useRoom.FreeList.Add(item);
+ item.Parent = useRoom;
+ }
+ }
+ reader.NextResult();
+ }
+
+ /// <summary>
+ /// メモ
+ /// </summary>
+ /// <param name="reader"></param>
+ /// <param name="use"></param>
+ public void SetUseMemo(DbDataReader reader)
+ {
+ while (reader.Read())
+ {
+ UseMemo item = new();
+ item.ConvertReader(reader);
+
+ if (item.DetailID == 0)
+ {
+ //利用情報
+ MemoList.Add(item);
+ item.Parent = this;
+ }
+ else
+ {
+ //利用明細
+ UseDetail detail = detailDict[item.DetailID];
+ detail.MemoList.Add(item);
+ item.Parent = detail;
+ }
+ }
+ reader.NextResult();
+ }
+
+ /// <summary>
+ /// 売上
+ /// </summary>
+ /// <param name="reader"></param>
+ public void SetSale(DbDataReader reader)
+ {
+ while (reader.Read())
+ {
+ Sale item = new();
+ item.ConvertReader(reader);
+ UseRoom useRoom = useRoomDict[$"{item.DetailID},{item.UseDate.Value}"];
+ useRoom.SaleList.Add(item);
+ item.Parent = useRoom;
+ }
+ reader.NextResult();
+ }
+
+ /// <summary>
+ /// 入金
+ /// </summary>
+ /// <param name="reader"></param>
+ public void SetPay(DbDataReader reader)
+ {
+ while (reader.Read())
+ {
+ Pay item = new();
+ item.ConvertReader(reader);
+ UseRoom useRoom = useRoomDict[$"{item.DetailID},{item.UseDate.Value}"];
+ useRoom.PayList.Add(item);
+ item.Parent = useRoom;
+ }
+ reader.NextResult();
+ }
+
+ /// <summary>
+ /// 手配情報
+ /// </summary>
+ /// <param name="reader"></param>
+ public void SetArrange(DbDataReader reader)
+ {
+ while (reader.Read())
+ {
+ Arrange item = new();
+ item.ConvertReader(reader);
+ UseRoom useRoom = useRoomDict[$"{item.DetailID},{item.UseDate.Value}"];
+ useRoom.ArrangeList.Add(item);
+ item.Parent = useRoom;
+ }
+ reader.NextResult();
+ }
+
+ /// <summary>
+ /// 備品情報
+ /// </summary>
+ /// <param name="reader"></param>
+ public void SetRental(DbDataReader reader)
+ {
+ while (reader.Read())
+ {
+ Rental item = new();
+ item.ConvertReader(reader);
+ UseDetail detail = detailDict[item.DetailID];
+ detail.RentalList.Add(item);
+ item.Parent = detail;
+ }
+ reader.NextResult();
+ }
+
+ /// <summary>
+ /// バッファークリア
+ /// </summary>
+ public void ClearDict()
+ {
+ personDict.Clear();
+ detailDict.Clear();
+ useRoomDict.Clear();
+ }
+
+ /// <summary>
+ /// 利用情報取得
+ /// ※サーバー中のバッファーより、マスタ名も取得する
+ /// </summary>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ public static Use? Get(int id, DataAccess access)
+ {
+ try
+ {
+ string sql = $"EXECUTE GetUse {id}";
+ OperationLog.Instance.WriteLog($"データ読込:{sql}");
+ Use item = access.GetDataReader<Use>(sql, (reader, use) =>
+ {
+ use.ClearDict();
+ if (reader.Read()) { use.ConvertReader(reader); reader.NextResult(); } //D_Use
+ use.SetUsePerson(reader); //D_UsePerson
+ use.SetUsePersonFree(reader); //D_UsePersonFree
+ use.SetUsePersonTel(reader); //D_UsePersonTel
+ use.SetUseDetail(reader); //D_UseDetail
+ use.SetUseRoom(reader); //D_UseRoom
+ use.SetUseAllo(reader); //D_UseAllo
+ use.SetUseFree(reader); //D_UseFree
+ use.SetUseMemo(reader); //D_UseMemo
+ use.SetRental(reader); //D_Rental
+ use.SetSale(reader); //D_Sale
+ use.SetPay(reader); //D_Pay
+ use.SetArrange(reader); //D_Arrange
+ });
+ return item;
+ }
+ catch (Exception ex)
+ {
+ OperationLog.Instance.WriteLog($"{MethodInfo.GetCurrentMethod()}:{ex.Message}");
+ return null;
+ }
+ }
+ }
+}
--
Gitblit v1.10.0