laatzen/LaaProductionWeb/LaaProduction.Console/Program.cs
2024-09-25 14:17:30 +02:00

56 lines
2.2 KiB
C#

namespace LaaProduction.Console
{
using LaaPackages.Features.Cordonel;
using LaaPackages.HttpClient;
using LaaPackages.SqlClient;
using System;
public class Program
{
public static void Main(String[] args)
{
var pcbidString = "192000024";
var cordonelApps = HttpConnection
.CreateHttpConnection<MPSConnection>("http://10.49.40.25/")
.Get<CordonelAppsDictionary>(x => x.SetPath("/MeterProcessState/api/ConfigurationJson"))
?.Value ?? new CordonelAppsDictionary();
SqlConnection
.CreateSqlConnection("Server=SLASQL01;Database=Auftrag;User Id=sa;Password=sqlserver")
.CreateCommand($@"
SELECT x.Id
, x.Address
, x.Value
FROM (SELECT gmh.ID AS Id
, CONVERT(VARBINARY(MAX), REPLACE(ISNULL(gmh.Address, '00'), '-', ''), 2) AS Address
, CONVERT(VARBINARY(MAX), REPLACE(REPLACE(ISNULL(gmh.Value, '00'), 'NULL', '00'), '-', ''), 2) AS Value
, ROW_NUMBER() OVER (PARTITION BY gmh.Address ORDER BY gmh.date DESC) AS Row
FROM GenesisMeterRegisterHistory AS gmh
WHERE gmh.PcbId = @{nameof(pcbidString)}) AS x
WHERE x.Row = 1
ORDER BY x.Address")
.SetParameter(nameof(pcbidString), pcbidString)
.ExecuteReader(reader =>
{
var addressBytes = reader.GetValue<Byte[]>(1);
if (addressBytes?.Length == 2)
{
var appId = addressBytes[0];
var registerId = addressBytes[1];
var register = cordonelApps[appId][registerId];
register.HistoryId = reader.GetValue<Int32>(0);
register.Value = reader.GetValue<Byte[]>(2);
}
});
}
}
public class MPSConnection : HttpConnection
{
public MPSConnection(string baseURL) : base(baseURL)
{
}
}
}