ASCU_ALL/ShowTrend_tmp3/ShowTrend3/Controllers/APIController.cs
2021-11-12 15:00:41 +05:00

197 lines
7.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using ShowTrend3.Libs;
namespace ShowTrend3.Controllers
{
public class APIController : Controller
{
[HttpPost]
public IActionResult DirBrowse([FromBody] JObject date)
{
string[] dateArr = date["date"].ToString().Split('-');
DateTime dateRequest = new DateTime(Int32.Parse(dateArr[0]), Int32.Parse(dateArr[1]), Int32.Parse(dateArr[2]));
string request = dateArr[0] + "/" + dateArr[1] + "/" + dateArr[2];
NetClient netClient = new NetClient();
Queue<string> dir1 = netClient.DirBrowse(request);
Queue<string> dir2 = new Queue<string>();
if (dateRequest.Year == DateTime.Now.Year &&
dateRequest.Month == DateTime.Now.Month &&
dateRequest.Day == DateTime.Now.Day)
dir2 = netClient.DirBrowse("current");
JArray result = new JArray();
while(dir1.Count != 0)
{
string r = dir1.Dequeue();
if (string.IsNullOrEmpty(r.Split('.')[0]))
continue;
string name = r.Split('.')[0];
string[] temp = name.Split('-');
name = temp[1];
for (int j = 2; j < temp.Length; j++)
name += "-" + temp[j];
JObject val = new JObject
{
["Dir"] = request + "/" + r,
["Name"] = name
};
result.Add(val);
}
List<int> nameTemp = new List<int>();
while(dir2.Count != 0)
{
string r = dir2.Dequeue();
if (!string.IsNullOrEmpty(r.Split('.')[1]))
nameTemp.Add(Int32.Parse(r.Split('.')[1]));
}
nameTemp.Sort();
for (int i = 0; i < nameTemp.Count; i++)
{
JObject val = new JObject
{
["Dir"] = "current/VDP." + nameTemp[i].ToString().PadLeft(2, '0'),
["Name"] = "Печь №" + nameTemp[i]
};
result.Add(val);
}
return Content(result.ToString());
}
[HttpPost]
public IActionResult Pasport([FromBody] JObject date)
{
NetClient netClient = new NetClient();
PasportVDP pasp = netClient.PaspDownload(date["pasport"].ToString());
JObject result = new JObject()
{
["have_date"] = pasp.HaveDate,
["have_pasport"] = pasp.HavePasport,
["time_start"] = pasp.TimeStart.ToString(),
["time_end"] = pasp.TimeEnd.ToString()
};
if (!pasp.HavePasport)
return Content(result.ToString());
result.Add("num_plav", pasp.NPlav);
result.Add("splav", pasp.Splav);
result.Add("is", pasp._is);
result.Add("pereplav", pasp.PrPl);
result.Add("naznachenie", pasp.Nazn);
result.Add("kategory", pasp.Kat);
result.Add("zakaz", pasp.Zakaz);
result.Add("ves_slit", pasp.VesSlit);
result.Add("kompl", pasp.Kompl);
result.Add("diam_krist", pasp.Dkr);
result.Add("diam_electr", pasp.Diam);
result.Add("num_kontract", pasp.Nkon);
result.Add("ukazanie", pasp.Ukaz);
result.Add("kod_npl", pasp.KodNPlav.ToString());
result.Add("rm", pasp.RM);
result.Add("notd", pasp.Notd.ToString());
result.Add("tin", pasp.Tin);
result.Add("dzap", pasp.Dzap);
result.Add("dlog", pasp.Dlog.ToString());
result.Add("last", pasp.Last.ToString());
result.Add("dlper", pasp.Dlper.ToString());
result.Add("izl", pasp.Izl.ToString());
result.Add("robm", pasp.Robm.ToString());
result.Add("rizol", pasp.Rizol.ToString());
result.Add("pos", pasp.Pos);
result.Add("pril", pasp.Pril);
return Content(result.ToString());
}
public async Task<IActionResult> TechCycle([FromBody] JObject date)
{
NetClient netClient = new NetClient();
if (!int.TryParse(date["vdp"].ToString(), out int vdp) ||
!DateTime.TryParse(date["timeStart"].ToString(), out DateTime timeStart) ||
!DateTime.TryParse(date["timeEnd"].ToString(), out DateTime timeEnd))
return Content("[]");
var techCycle = await netClient.TechCycle(vdp, timeStart, timeEnd);
JArray result = new JArray();
foreach (var e in techCycle)
{
if (e.Key < timeStart ||
e.Key > timeEnd)
continue;
var x = new TechCycle();
result.Add(new JObject() {
["date"] = e.Key.ToString(),
["value"] = x.CycleName[e.Value],
["color"] = x.ConvertColorHexToRGB(x.CycleColorHex[e.Value])
});
}
return Content(result.ToString());
}
[HttpPost]
public async Task<IActionResult> Analog([FromBody] JObject date)
{
TempDir.Clear();
NetClient netClient = new NetClient();
if (date.Type != JTokenType.Object ||
date["vdp"].Type != JTokenType.Integer ||
date["timeStart"].Type != JTokenType.String ||
date["timeEnd"].Type != JTokenType.String ||
date["signals"].Type != JTokenType.Array)
return Content("[]");
if (!DateTime.TryParse(date.Value<string>("timeStart"), out DateTime timeStart) ||
!DateTime.TryParse(date.Value<string>("timeEnd"), out DateTime timeEnd))
return Content("[]");
List<int> vdp = new List<int> { date.Value<int>("vdp") };
if (date.Value<int>("vdp") >= 1 && date.Value<int>("vdp") <= 48)
{
vdp.Add(49);
vdp.Add(0);
}
StringBuilder res = new StringBuilder();
res.Append("[]");
int correct = 0;
for (int i = 0; i < vdp.Count; i++)
{
int analogLength = new AnalogSignals(vdp[i]).analogs.Count;
List<int> signals = new List<int>();
foreach (var e in date["signals"])
if (e.Type == JTokenType.Integer && e.Value<int>() - correct >= 0 && e.Value<int>() - correct < analogLength)
signals.Add(e.Value<int>() - correct);
var a = await netClient.Analog(vdp[i], timeStart.ToUniversalTime(), timeEnd.ToUniversalTime(), signals.ToArray());
CustomConverters.CompareStringBuilder(ref res, a.ReturnResultJson());
correct += analogLength;
}
return Content(res.ToString());
}
[HttpPost]
public IActionResult ListAnalog([FromBody] JObject date)
{
if (date.Type != JTokenType.Object || date["vdp"].Type != JTokenType.Integer)
return Content("[]");
StringBuilder res = new AnalogSignals(date.Value<int>("vdp")).ReturnListJson();
if (date.Value<int>("vdp") >= 1 && date.Value<int>("vdp") <= 48)
{
CustomConverters.CompareStringBuilder(ref res, new AnalogSignals(49).ReturnListJson());
CustomConverters.CompareStringBuilder(ref res, new AnalogSignals(0).ReturnListJson());
}
return Content(res.ToString());
}
}
}