Gkv GetNumber
This commit is contained in:
@@ -37,6 +37,8 @@
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" />
|
||||
<Reference Include="System.Text.Json, Version=8.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -49,6 +51,7 @@
|
||||
<Compile Include="DakotaUtils.cs" />
|
||||
<Compile Include="Logic\DakotaKTDReader.cs" />
|
||||
<Compile Include="Logic\DakotaManager.cs" />
|
||||
<Compile Include="Logic\DakotaNumberManager.cs" />
|
||||
<Compile Include="Models\Auftragsdatei\Auftragsdatei.cs" />
|
||||
<Compile Include="Models\Auftragsdatei\AuftragssatzPart2.cs" />
|
||||
<Compile Include="Models\Auftragsdatei\AuftragssatzPart3.cs" />
|
||||
|
||||
76
Dakota/Logic/DakotaNumberManager.cs
Normal file
76
Dakota/Logic/DakotaNumberManager.cs
Normal file
@@ -0,0 +1,76 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Logic
|
||||
{
|
||||
public class DakotaNumberManager
|
||||
{
|
||||
private readonly string _Filepath;
|
||||
private readonly object _LockObj = new object();
|
||||
private Dictionary<string, Tuple<int, int>> _Numbers;
|
||||
|
||||
public DakotaNumberManager(string filePath)
|
||||
{
|
||||
_Filepath = filePath;
|
||||
_Numbers = LoadNumbers();
|
||||
}
|
||||
|
||||
private Dictionary<string, Tuple<int, int>> LoadNumbers()
|
||||
{
|
||||
if (!File.Exists(_Filepath))
|
||||
{
|
||||
return new Dictionary<string, Tuple<int, int>>
|
||||
{
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
var json = File.ReadAllText(_Filepath);
|
||||
|
||||
return JsonSerializer.Deserialize<Dictionary<string, Tuple<int, int>>>(json) ?? new Dictionary<string, Tuple<int, int>>
|
||||
{
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
private void SafeNumbers()
|
||||
{
|
||||
var json = JsonSerializer.Serialize(_Numbers, new JsonSerializerOptions()
|
||||
{
|
||||
WriteIndented = true
|
||||
});
|
||||
File.WriteAllText(_Filepath, json);
|
||||
}
|
||||
|
||||
public Tuple<int, int> GetNextNumber(string datenannahmestelle, bool newDatenaustauschreferenz)
|
||||
{
|
||||
lock (_LockObj)
|
||||
{
|
||||
if (_Numbers.ContainsKey(datenannahmestelle))
|
||||
{
|
||||
var (datenaustauschreferenz, transfernummer) = _Numbers[datenannahmestelle];
|
||||
|
||||
if (newDatenaustauschreferenz)
|
||||
datenaustauschreferenz++;
|
||||
|
||||
transfernummer++;
|
||||
|
||||
_Numbers[datenannahmestelle] = new Tuple<int, int>(datenaustauschreferenz, transfernummer);
|
||||
}
|
||||
else
|
||||
{
|
||||
_Numbers.Add(datenannahmestelle, new Tuple<int, int>(1, 0));
|
||||
}
|
||||
|
||||
SafeNumbers();
|
||||
|
||||
return _Numbers[datenannahmestelle];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -36,7 +36,7 @@ namespace Host
|
||||
private string ResultFolderPath { get; set; } = ConfigurationManager.AppSettings.Get("GkvAbrechnungResultFolderPath");
|
||||
private string QueueFolderPath { get; set; } = ConfigurationManager.AppSettings.Get("GkvAbrechnungQueueFolderPath");
|
||||
private string KostentragerdateiFolderPath { get; set; } = ConfigurationManager.AppSettings.Get("GkvKostentragerdateiFolderPath");
|
||||
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
@@ -67,6 +67,10 @@ namespace Host
|
||||
GetStatus(GkvSender.DeserializeRequest<GkvServerGetStatusRequestDC>(str, SendInvalidInputResponse));
|
||||
return;
|
||||
|
||||
case RequestType.GkvServerGetNumber:
|
||||
GetNumber(GkvSender.DeserializeRequest<GkvServerGetNumberRequestDC>(str, SendInvalidInputResponse));
|
||||
return;
|
||||
|
||||
default:
|
||||
SendErrorResponse("RequestType unbekannt.");
|
||||
return;
|
||||
@@ -245,6 +249,21 @@ namespace Host
|
||||
|
||||
return;
|
||||
}
|
||||
private void GetNumber(GkvServerGetNumberRequestDC req)
|
||||
{
|
||||
var response = new GkvServerGetNumberResponseDC(false);
|
||||
|
||||
var path = ConfigurationManager.AppSettings.Get("GkvAbrechnungRootPath");
|
||||
var filePath = Path.Combine(path, "numbers.json");
|
||||
var manager = new DakotaNumberManager(filePath);
|
||||
|
||||
(response.Datenaustauschreferenz, response.Transfernummer)
|
||||
= manager.GetNextNumber(req.IKDatenannahmestelle, req.NewDatenaustauschRef);
|
||||
|
||||
SendResponse(response);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
private string SaveFileInQueue(GkvServerSendNewRequestDC req)
|
||||
{
|
||||
|
||||
@@ -377,6 +377,7 @@
|
||||
<add key="GkvAbrechnungResultFolderPath" value="C:\GkvAbrechnung\Results\" />
|
||||
<add key="GkvAbrechnungQueueFolderPath" value="C:\GkvAbrechnung\Data\Queue\" />
|
||||
<add key="GkvKostentragerdateiFolderPath" value="C:\GkvAbrechnung\KTDatei\" />
|
||||
<add key="GkvAbrechnungRootPath" value="C:\GkvAbrechnung\" />
|
||||
<add key="DakotaPath" value="C:\Program Files (x86)\ITSG\dakotale\dakota30.exe" />
|
||||
<add key="App8IpAddress" value="88.198.50.220" />
|
||||
<add key="GkvSumServerIPAdress" value="88.198.50.220" />
|
||||
|
||||
@@ -488,25 +488,23 @@ namespace BeWo.Service.ServiceImplementations
|
||||
|
||||
private Tuple<int, int> GetNextDatenaustauschreferenzTransfernummer(GkvAbrechnung gkvAbrechnung, string datenannahmestelle)
|
||||
{
|
||||
var datenaustauschref = DAOFactory.SearchDAO.GetNextDatenaustauschreferenz(datenannahmestelle);
|
||||
int transfernummer;
|
||||
|
||||
bool newDatenaustauschref;
|
||||
var state = gkvAbrechnung.GetState();
|
||||
|
||||
if (state == GkvState.NoSend)
|
||||
{
|
||||
transfernummer = DAOFactory.SearchDAO.GetNextTransfernummer(datenannahmestelle);
|
||||
newDatenaustauschref = false;
|
||||
}
|
||||
else if (state == GkvState.ErrorSoft || state == GkvState.ErrorFatal || state == GkvState.ErrorFolgefehler)
|
||||
{
|
||||
transfernummer = gkvAbrechnung.GkvTransferProtokolle.Last().Transfernummer;
|
||||
newDatenaustauschref = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new ArgumentException($"Versucht Transfernummer zu laden, invalid state: {state}", nameof(state));
|
||||
}
|
||||
|
||||
return new Tuple<int, int>(datenaustauschref, transfernummer);
|
||||
return SendApp8GetNumberRequest(datenannahmestelle, newDatenaustauschref, true);
|
||||
}
|
||||
private Tuple<int, int> ClearDatenaustauschreferenzTransfernummer(int datenaustauschreferenz, int transfernummer)
|
||||
{
|
||||
@@ -602,6 +600,34 @@ namespace BeWo.Service.ServiceImplementations
|
||||
return false;
|
||||
}
|
||||
|
||||
private Tuple<int, int> SendApp8GetNumberRequest(string ik_datenannahmestelle, bool newDatenaustauschref, bool newTransferNumber)
|
||||
{
|
||||
var request = new GkvServerGetNumberRequestDC();
|
||||
|
||||
request.IKDatenannahmestelle = ik_datenannahmestelle;
|
||||
request.NewDatenaustauschRef = newDatenaustauschref;
|
||||
request.NewTransferNumber = newTransferNumber;
|
||||
|
||||
GkvServerGetNumberResponseDC response_app8;
|
||||
|
||||
response_app8 = SendApp8Request<GkvServerGetNumberRequestDC, GkvServerGetNumberResponseDC>(request);
|
||||
|
||||
return new Tuple<int, int>(response_app8.Datenaustauschreferenz, response_app8.Transfernummer);
|
||||
|
||||
// Kein Try-Catch, damit der Prozess oben abgebrochen wird
|
||||
|
||||
//try
|
||||
//{
|
||||
|
||||
//}
|
||||
//catch (Exception e)
|
||||
//{
|
||||
// MailUtils.SendGkvModuleErrorMail("GkvServerGetNumberRequest Error", e, Tenant);
|
||||
//}
|
||||
|
||||
//return null;
|
||||
}
|
||||
|
||||
public void HandleGkvServerResults(IEnumerable<GkvServerResultDC> results)
|
||||
{
|
||||
var protokolls = new List<GkvTransferProtokollLight>();
|
||||
|
||||
@@ -1300,8 +1300,9 @@ namespace BS.Shared
|
||||
GkvServerGetIKNumber,
|
||||
GkvServerGetStatus,
|
||||
GkvClientResult,
|
||||
GkvClientSum
|
||||
}
|
||||
GkvClientSum,
|
||||
GkvServerGetNumber,
|
||||
}
|
||||
|
||||
public enum GkvTransferResultType
|
||||
{
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
{
|
||||
public class GkvServerGetNumberRequestDC : GkvServerRequestDC
|
||||
{
|
||||
public GkvServerGetNumberRequestDC()
|
||||
: base(RequestType.GkvServerGetNumber) { }
|
||||
|
||||
public GkvServerGetNumberRequestDC(string tenant, string username, string password)
|
||||
: base(RequestType.GkvServerGetNumber, tenant, username, password) { }
|
||||
|
||||
[DataMember] public string IKDatenannahmestelle { get; set; }
|
||||
[DataMember] public bool NewDatenaustauschRef { get; set; }
|
||||
[DataMember] public bool NewTransferNumber { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BS.Shared.DataContracts.GkvAbrechnung
|
||||
{
|
||||
public class GkvServerGetNumberResponseDC : GkvResponseDC
|
||||
{
|
||||
public GkvServerGetNumberResponseDC() : base() { }
|
||||
public GkvServerGetNumberResponseDC(bool success) : base(success) { }
|
||||
public GkvServerGetNumberResponseDC(bool success, string message) : base(success, message) { }
|
||||
|
||||
[DataMember] public int Datenaustauschreferenz { get; set; }
|
||||
[DataMember] public int Transfernummer { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -187,6 +187,8 @@
|
||||
<Compile Include="DataContracts\AdminService\AdminServiceSumResponseDetailDC.cs" />
|
||||
<Compile Include="DataContracts\AdminService\IAdminServiceDC.cs" />
|
||||
<Compile Include="DataContracts\AdminService\AdminServiceSumReqDC.cs" />
|
||||
<Compile Include="DataContracts\Invoicing\GkvAbrechnung\GkvServerGetNumberRequestDC.cs" />
|
||||
<Compile Include="DataContracts\Invoicing\GkvAbrechnung\GkvServerGetNumberResponseDC.cs" />
|
||||
<Compile Include="DataContracts\Person2TeamDC.cs" />
|
||||
<Compile Include="DataContracts\Feature\AI\AiConfigDC.cs" />
|
||||
<Compile Include="DataContracts\Feature\AI\AiConversationDC.cs" />
|
||||
|
||||
Reference in New Issue
Block a user