Save last

This commit is contained in:
2024-09-22 04:27:05 +05:00
parent 0e645d20e2
commit ef797b23df
377 changed files with 14540 additions and 5819 deletions

View File

@@ -0,0 +1,324 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using Newtonsoft;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;
using NLog;
using DataClient.Struct;
using System.IO;
using ApiServer.ApiStruct;
namespace ApiServer.Controllers
{
[ApiController, Route("[controller]")]
public class DateController : ControllerBase
{
private Logger log = LogManager.GetCurrentClassLogger();
[HttpPost, Route("getanalog")]
public DateGetAnalogClient GetAnalog([FromBody] object value)
{
try
{
var getResult = JsonConvert.DeserializeObject<DateGetAnalogApi>(
value.ToString());
log.Info("Ask analog: vdp-" +
getResult.Vdp.ToString() + " index-" +
getResult.Index.ToString() + " " +
getResult.Start.ToString("yyyy-MM-dd HH:mm:ss") + " " +
getResult.End.ToString("yyyy-MM-dd HH:mm:ss"));
var list_analogs = new Dictionary<int, List<Structures.Analog>>();
var flagDate = new DateTime(
getResult.Start.Year,
getResult.Start.Month,
getResult.Start.Day,
0, 0, 0
);
var sub_res = new List<Structures.Analog>();
while (flagDate <= getResult.End)
{
var analogs = WorkWithFiles.GetAnalogs(flagDate, getResult.Vdp);
foreach (var analog_arr in analogs)
{
if (analog_arr.Index != getResult.Index)
continue;
Structures.Analog first_analog = null;
for (var i = 0; i < analog_arr.Analogs.Length; i++)
{
if (analog_arr.Analogs[i].start < getResult.Start)
{
first_analog = analog_arr.Analogs[i];
first_analog.start = getResult.Start;
continue;
}
if (analog_arr.Analogs[i].start > getResult.End)
continue;
if (sub_res.Count == 0 && first_analog != null)
sub_res.Add(first_analog);
sub_res.Add(analog_arr.Analogs[i]);
}
}
flagDate = flagDate.AddDays(1);
}
return new DateGetAnalogClient()
{
Analog = sub_res.ToArray()
};
}
catch (Exception e)
{
log.Warn(e);
throw;
//return new DateGetAnalogClient();
}
}
[HttpPost, Route("getanalogs")]
public DateGetAnalogsClient GetAnalogs([FromBody] object value)
{
try
{
var getResult = JsonConvert.DeserializeObject<DateGetAnalogsApi>(
value.ToString());
log.Info("Ask analog: vdp-" +
getResult.Vdp.ToString() + " index-" +
getResult.Index.ToString() + " " +
getResult.Start.ToString("yyyy-MM-dd HH:mm:ss") + " " +
getResult.End.ToString("yyyy-MM-dd HH:mm:ss"));
var list_analogs = new Dictionary<int, List<Structures.Analog>>();
var flagDate = new DateTime(
getResult.Start.Year,
getResult.Start.Month,
getResult.Start.Day,
0, 0, 0
);
var sub_res = new Dictionary<int, List<Structures.Analog>>();
while (flagDate <= getResult.End)
{
var analogs = WorkWithFiles.GetAnalogs(flagDate, getResult.Vdp);
foreach (var analog_arr in analogs)
{
if (!getResult.Index.Contains(analog_arr.Index))
continue;
if (!sub_res.ContainsKey(analog_arr.Index))
sub_res.Add(analog_arr.Index, new List<Structures.Analog>());
Structures.Analog first_analog = null;
for (var i = 0; i < analog_arr.Analogs.Length; i++)
{
if (analog_arr.Analogs[i].start < getResult.Start)
{
first_analog = analog_arr.Analogs[i];
first_analog.start = getResult.Start;
continue;
}
if (analog_arr.Analogs[i].start > getResult.End)
continue;
if (sub_res[analog_arr.Index].Count == 0 && first_analog != null)
sub_res[analog_arr.Index].Add(first_analog);
sub_res[analog_arr.Index].Add(analog_arr.Analogs[i]);
}
}
flagDate = flagDate.AddDays(1);
}
var result = new List<Structures.AnalogArr>();
foreach (var d in sub_res)
result.Add(new Structures.AnalogArr() {
Index = d.Key,
Analogs = d.Value.ToArray()
});
return new DateGetAnalogsClient()
{
Analogs = result.ToArray()
};
}
catch (Exception e)
{
log.Warn(e);
return new DateGetAnalogsClient();
}
}
[HttpPost, Route("gettechcycle")]
public DateGetTechCycleClient GetTechCycle([FromBody] object value)
{
try
{
var getResult = JsonConvert.DeserializeObject<DateGetTechCycleApi>(
value.ToString());
log.Info("Ask tech cycle: " +
getResult.Vdp.ToString() + " " +
getResult.Start.ToString("yyyy-MM-dd HH:mm:ss") + " " +
getResult.End.ToString("yyyy-MM-dd HH:mm:ss"));
var list_tech_cycles = new List<Structures.TechCycle>();
var flagDate = new DateTime(
getResult.Start.Year,
getResult.Start.Month,
getResult.Start.Day,
0, 0, 0
);
while (flagDate <= getResult.End)
{
var lines = WorkWithFiles.GetFile(
flagDate.Year.ToString("D4") +
flagDate.Month.ToString("D2") +
flagDate.Day.ToString("D2") +
"." +
getResult.Vdp.ToString("D2") +
"3"
);
Structures.TechCycle first_tech_cycle = null;
for (var i = 0; i < lines.Length; i++)
{
var tc = new Structures.TechCycle(flagDate, lines[i]);
if (tc.start < getResult.Start)
{
first_tech_cycle = tc;
continue;
}
if (tc.start > getResult.End)
continue;
if (list_tech_cycles.Count == 0 && first_tech_cycle != null)
{
first_tech_cycle.start = getResult.Start;
list_tech_cycles.Add(first_tech_cycle);
}
list_tech_cycles.Add(tc);
}
flagDate = flagDate.AddDays(1);
}
return new DateGetTechCycleClient()
{
TechCycle = list_tech_cycles.ToArray(),
};
}
catch (Exception e)
{
log.Warn(e);
return new DateGetTechCycleClient();
}
}
[HttpPost, Route("getprotect")]
public DateGetProtectClient GetProtect([FromBody] object value)
{
try
{
var getResult = JsonConvert.DeserializeObject<DateGetProtectApi>(
value.ToString());
log.Info("Ask protects: " +
getResult.Vdp.ToString() + " " +
getResult.Start.ToString("yyyy-MM-dd HH:mm:ss") + " " +
getResult.End.ToString("yyyy-MM-dd HH:mm:ss"));
var list_protects = new List<Structures.Protect>();
var flagDate = new DateTime(
getResult.Start.Year,
getResult.Start.Month,
getResult.Start.Day,
0, 0, 0
);
while (flagDate <= getResult.End)
{
var protects = WorkWithFiles.GetProtects(flagDate, getResult.Vdp);
for (var i = 0; i < protects.Length; i++)
{
if (protects[i].start < getResult.Start)
continue;
if (protects[i].start > getResult.End)
continue;
list_protects.Add(protects[i]);
}
flagDate = flagDate.AddDays(1);
}
return new DateGetProtectClient()
{
Protect = list_protects.ToArray()
};
}
catch (Exception e)
{
log.Warn(e);
return new DateGetProtectClient();
}
}
[HttpPost, Route("getdiscret")]
public DateGetDiscretClient GetDiscret([FromBody] object value)
{
try
{
var getResult = JsonConvert.DeserializeObject<DateGetDiscretApi>(
value.ToString());
log.Info("Ask discrets: " +
getResult.Vdp.ToString() + " " +
getResult.Start.ToString("yyyy-MM-dd HH:mm:ss") + " " +
getResult.End.ToString("yyyy-MM-dd HH:mm:ss"));
var list_discrets = new List<Structures.Discret>();
var flagDate = new DateTime(
getResult.Start.Year,
getResult.Start.Month,
getResult.Start.Day,
0, 0, 0
);
while (flagDate <= getResult.End)
{
var discrets = WorkWithFiles.GetDiscrets(flagDate, getResult.Vdp);
var first_discrets = new Dictionary<int, Structures.Discret>();
for (var i = 0; i < discrets.Length; i++)
{
if (discrets[i].start < getResult.Start)
{
if (first_discrets.ContainsKey(discrets[i].Index))
first_discrets[discrets[i].Index] = discrets[i];
else
first_discrets.Add(discrets[i].Index, discrets[i]);
first_discrets[discrets[i].Index].start = getResult.Start;
continue;
}
if (discrets[i].start > getResult.End)
continue;
var last_id = list_discrets.FindLastIndex(x => x.Index == discrets[i].Index);
if (first_discrets.ContainsKey(discrets[i].Index) &&
last_id == -1 &&
discrets[i].start != getResult.Start)
{
list_discrets.Add(first_discrets[discrets[i].Index]);
first_discrets.Remove(discrets[i].Index);
}
if (last_id != -1 &&
list_discrets[last_id].State == discrets[i].State)
continue;
list_discrets.Add(discrets[i]);
}
flagDate = flagDate.AddDays(1);
}
return new DateGetDiscretClient()
{
Discret = list_discrets.ToArray()
};
}
catch (Exception e)
{
log.Warn(e);
return new DateGetDiscretClient();
}
}
}
}

View File

@@ -0,0 +1,138 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using Newtonsoft;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;
using NLog;
using DataClient.Struct;
using System.IO;
using ApiServer.ApiStruct;
namespace ApiServer.Controllers
{
[ApiController, Route("[controller]")]
public class DiscretController : ControllerBase
{
private Logger log = LogManager.GetCurrentClassLogger();
[HttpPost, Route("getdiscrets")]
public DiscretGetDscretsClient GetDiscrets([FromBody] object value)
{
try
{
var getResult = JsonConvert.DeserializeObject<DiscretGetiscretsApi>(
value.ToString());
log.Info("Ask discrets: " +
getResult.Vdp.ToString() + " " +
getResult.Start.ToString("yyyy-MM-dd HH:mm:ss") + " "+
getResult.End.ToString("yyyy-MM-dd HH:mm:ss"));
var list_discrets = new List<Structures.Discret>();
var flagDate = new DateTime(
getResult.Start.Year,
getResult.Start.Month,
getResult.Start.Day,
0,0,0
);
while (flagDate <= getResult.End)
{
var discrets = WorkWithFiles.GetDiscrets(flagDate, getResult.Vdp);
var first_discrets = new Dictionary<int, Structures.Discret>();
for (var i = 0; i < discrets.Length; i++)
{
if (discrets[i].start < getResult.Start)
{
if (first_discrets.ContainsKey(discrets[i].Index))
first_discrets[discrets[i].Index] = discrets[i];
else
first_discrets.Add(discrets[i].Index, discrets[i]);
first_discrets[discrets[i].Index].start = getResult.Start;
continue;
}
if (discrets[i].start > getResult.End)
continue;
var last_id = list_discrets.FindLastIndex(x => x.Index == discrets[i].Index);
if (first_discrets.ContainsKey(discrets[i].Index) &&
last_id == -1 &&
discrets[i].start != getResult.Start)
{
list_discrets.Add(first_discrets[discrets[i].Index]);
first_discrets.Remove(discrets[i].Index);
}
if (last_id != -1 &&
list_discrets[last_id].State == discrets[i].State)
continue;
list_discrets.Add(discrets[i]);
}
flagDate = flagDate.AddDays(1);
}
return new DiscretGetDscretsClient()
{
StateParams = Configuration.GetStateStructArray(),
DiscretParams = Configuration.GetDiscretParams(getResult.Vdp.ToString("D2")),
Discrets = list_discrets.ToArray()
};
}
catch (Exception e)
{
log.Warn(e);
return new DiscretGetDscretsClient();
}
}
[HttpPost, Route("getdiscretsmatrix")]
public DiscretGetDscretsMatrixClient GetDiscretsMatrix([FromBody] object value)
{
try
{
var getResult = JsonConvert.DeserializeObject<DiscretGetiscretsApi>(
value.ToString());
log.Info("Ask discrets: " +
getResult.Vdp.ToString() + " " +
getResult.Start.ToString("yyyy-MM-dd HH:mm:ss") + " " +
getResult.End.ToString("yyyy-MM-dd HH:mm:ss"));
var list_discrets = new List<Structures.DiscretMatrix>();
var flagDate = new DateTime(
getResult.Start.Year,
getResult.Start.Month,
getResult.Start.Day,
0, 0, 0
);
while (flagDate <= getResult.End)
{
var discrets = WorkWithFiles.GetDiscretsMatrix(flagDate, getResult.Vdp);
for (var i = 0; i < discrets.Length; i++)
{
if (discrets[i].start < getResult.Start)
continue;
if (discrets[i].start > getResult.End)
continue;
list_discrets.Add(discrets[i]);
}
flagDate = flagDate.AddDays(1);
}
log.Info("Send discret");
return new DiscretGetDscretsMatrixClient()
{
StateParams = Configuration.GetStateStructArray(),
DiscretParams = Configuration.GetDiscretParams(getResult.Vdp.ToString("D2")),
Discrets = list_discrets.ToArray()
};
}
catch (Exception e)
{
log.Warn(e);
return new DiscretGetDscretsMatrixClient();
}
}
}
}

View File

@@ -0,0 +1,158 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using Newtonsoft;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;
using NLog;
using DataClient.Struct;
using System.IO;
using ApiServer.ApiStruct;
namespace ApiServer.Controllers
{
[ApiController, Route("[controller]")]
public class ParamsController : ControllerBase
{
private Logger log = LogManager.GetCurrentClassLogger();
[HttpPost, Route("getanalogs")]
public ParamsGetAnalogClient GetAnalogs([FromBody] object value)
{
try
{
var getResult = JsonConvert.DeserializeObject<ParamsGetAnalogApi>(
value.ToString());
log.Info("Ask analog params for \"" + getResult.Name + "\"");
return new ParamsGetAnalogClient()
{
Analog_params = Configuration.GetAnalogParams(getResult.Name)
};
}
catch (Exception e)
{
log.Error(e);
return new ParamsGetAnalogClient();
}
}
[HttpPost, Route("getmetrics")]
public ParamsGetMetricClient GetMetrics([FromBody] object value)
{
try
{
log.Info("Ask metrics");
return new ParamsGetMetricClient()
{
Metrics = Configuration.GetMetricsArray()
};
}
catch (Exception e)
{
log.Error(e);
return new ParamsGetMetricClient();
}
}
[HttpPost, Route("gettechcyclename")]
public ParamsGetTechCycleNameClient GetTechCycleName([FromBody] object value)
{
try
{
log.Info("Ask tech cycle name");
return new ParamsGetTechCycleNameClient()
{
Name = Configuration.GetTechCycleNames()
};
}
catch (Exception e)
{
log.Warn(e);
return new ParamsGetTechCycleNameClient();
}
}
[HttpPost, Route("gettechcyclecolor")]
public ParamsGetTechCycleColorClient GetTechCycleColor([FromBody] object value)
{
try
{
log.Info("Ask tech cycle color");
return new ParamsGetTechCycleColorClient()
{
Color = Configuration.GetTechCycleColor()
};
}
catch (Exception e)
{
log.Warn(e);
return new ParamsGetTechCycleColorClient();
}
}
[HttpPost, Route("getstatestruct")]
public ParamsGetStateStructClient GetStateStruct([FromBody] object value)
{
try
{
log.Info("Ask state struct");
return new ParamsGetStateStructClient()
{
StateStruct = Configuration.GetStateStructArray()
};
}
catch (Exception e)
{
log.Warn(e);
return new ParamsGetStateStructClient();
}
}
[HttpPost, Route("getprotectstate")]
public ParamsGetProtectStateClient GetProtectState([FromBody] object value)
{
try
{
var getResult = JsonConvert.DeserializeObject<ParamsGetProtectStateApi>(
value.ToString());
log.Info("Ask protect state for vdp: " + getResult.Name);
return new ParamsGetProtectStateClient()
{
ProtectState = Configuration.GetProtectState(getResult.Name)
};
}
catch (Exception e)
{
log.Warn(e);
return new ParamsGetProtectStateClient();
}
}
[HttpPost, Route("getdiscret")]
public ParamsGetDiscretClient GetDiscrets([FromBody] object value)
{
try
{
var getResult = JsonConvert.DeserializeObject<ParamsGetDiscretApi>(
value.ToString());
log.Info("Ask discret params for \"" + getResult.Name + "\"");
return new ParamsGetDiscretClient()
{
Discret_params = Configuration.GetDiscretParams(getResult.Name)
};
}
catch (Exception e)
{
log.Error(e);
return new ParamsGetDiscretClient();
}
}
}
}

View File

@@ -109,17 +109,21 @@ namespace ApiServer.Controllers
try
{
var pasportNameList = new List<string>();
var getResult = JsonConvert.DeserializeObject<PasportGetListApi>(value.ToString());
var pasportTimeList = new List<string>();
var getResult = JsonConvert.DeserializeObject<PasportGetListApi>(
value.ToString(),
new JsonSerializerSettings { DateFormatString = "yyyy-MM-dd" });
log.Info("Ask pasport list: " + getResult.Date.ToString("yyyy-MM-dd"));
var pasportDir = Path.Combine(
Directory.GetCurrentDirectory(),
"data",
"pasport",
getResult.Date.Year.ToString("D4"),
getResult.Date.ToString("D2"),
getResult.Date.Month.ToString("D2"),
getResult.Date.Day.ToString("D2")
);
if (!Directory.Exists(pasportDir))
return new PasportGetListClient();
throw new Exception("Directory not exist: " + pasportDir);
var allPasportFiles = Directory.GetFiles(pasportDir);
foreach (var fullPasportName in allPasportFiles)
{
@@ -132,10 +136,15 @@ namespace ApiServer.Controllers
pasport += "-";
pasport += pasportParts[i];
}
pasportTimeList.Add(pasportParts[0]);
pasportNameList.Add(pasport);
}
log.Info("Send pasport list: " + pasportNameList);
return new PasportGetListClient() { Name = pasportNameList.ToArray() };
return new PasportGetListClient()
{
Name = pasportNameList.ToArray(),
Time = pasportTimeList.ToArray()
};
}
catch (Exception e)
{
@@ -144,6 +153,75 @@ namespace ApiServer.Controllers
}
}
[HttpPost, Route("getpasport")]
public PasportGetPasportClient GetPasport([FromBody] object value)
{
try
{
var getResult = JsonConvert.DeserializeObject<PasportGetPasportApi>(
value.ToString(),
new JsonSerializerSettings { DateFormatString = "yyyy-MM-dd" });
log.Info("Ask pasport: " + getResult.Date.ToString("yyyy-MM-dd") + " " + getResult.Name);
var pasportFile = Path.Combine(
Directory.GetCurrentDirectory(),
"data",
"pasport",
getResult.Date.Year.ToString("D4"),
getResult.Date.Month.ToString("D2"),
getResult.Date.Day.ToString("D2"),
getResult.Name
);
if (!System.IO.File.Exists(pasportFile))
throw new Exception("File not exist: " + pasportFile);
var pasport = new Pasport(System.IO.File.ReadAllBytes(pasportFile));
return new PasportGetPasportClient()
{
HasData = pasport.HasData,
NumVDP = pasport.numVDP,
DStart = pasport.dStart.HasValue ? pasport.dStart.Value.ToString("yyyy.MM.dd HH:mm:ss") : "",
DEnd = pasport.dEnd.HasValue ? pasport.dEnd.Value.ToString("yyyy.MM.dd HH:mm:ss") : "",
HasPasport = pasport.hasPasport,
Kod_npl = pasport.kod_npl,
Nplav = pasport.nplav,
Rm = pasport.rm,
Splav = pasport.splav,
IS = pasport.iS,
Notd = pasport.notd,
Vessl = pasport.vessl,
Diam = pasport.diam,
Prpl = pasport.prpl,
Tin = pasport.tin,
Dzap = pasport.dzap,
Dlog = pasport.dlog,
Last = pasport.last,
Dlper = pasport.dlper,
Nazn = pasport.nazn,
Kompl = pasport.kompl,
Izl = pasport.izl,
Robm = pasport.robm,
Rizol = pasport.rizol,
Dkr = pasport.dkr,
Nkon = pasport.nkon,
Pos = pasport.pos,
Ukaz = pasport.ukaz,
Zakaz = pasport.zakaz,
Kat = pasport.kat,
Pril = pasport.pril,
Rezerved = pasport.rezerved,
};
}
catch (Exception e)
{
log.Warn(e);
return new PasportGetPasportClient()
{
HasData = false,
HasPasport = false
};
}
}
}