laatzen/Common/Service/MeterProcessState/Controllers/PushControler.cs

156 lines
6.0 KiB
C#
Raw Normal View History

2025-08-29 12:05:15 +00:00
using LaaPackages.Features.Cordonel.Models;
using System;
2023-05-08 12:42:27 +00:00
using System.Collections.Generic;
2025-08-29 12:05:15 +00:00
using System.Data;
2025-09-02 13:43:39 +00:00
using System.Globalization;
2023-05-08 12:42:27 +00:00
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
using Xylem.Common.Logic.ServiceCore;
namespace Xylem.Common.Service.MeterProcessState.Controllers
{
[RoutePrefix("api/PushData")]
public class PushDataController : ApiController
{
public static class GlobalConfig
{
public static Lazy<String> connectionString = new Lazy<String>(()
=>
System.Configuration.ConfigurationManager.ConnectionStrings["default"].ConnectionString
);
}
[Route("SetOrderisFinish")]
public async Task<HttpResponseMessage> SetOrderisFinish(int Auftrag, int Pos)
{
try
{
throw new NotImplementedException("TODO Roland");
}
catch (Exception ex)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.ToString() + "<br >" + ex.InnerException.ToString());
}
}
2025-08-29 12:05:15 +00:00
public class retItem {
2023-05-08 12:42:27 +00:00
2025-09-02 13:43:39 +00:00
public int OrderNr { get; internal set; }
public int pos { get; internal set; }
public int Pcb { get; internal set; }
public DateTime kitronDate { get; internal set; }
2025-08-29 12:05:15 +00:00
public int SerienNr { get; internal set; }
}
[Route("GetOrderProductionDates")]
public async Task<HttpResponseMessage> GetOrderProductionDates(int? Order = null, int? Pos = null, int? PcbId = null)
{
try
{
return Request.CreateResponse(HttpStatusCode.OK, await Task.Run(() =>
{
var ret = new List<retItem>();
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
{
var sbq = new StringBuilder();
sbq.AppendLine("select distinct AuftragNr, PositionNr, aps.SerienNr, map.MapPcbIdToSerialNumber_PcbId " +
"from Auftrag.dbo.AuftragPositionSerienNr aps " +
"inner join Auftrag.dbo.MapPcbIdToSerialNumber map " +
"on aps.SerienNr = map.MapPcbIdToSerialNumber_SerialNumber " +
"" +
"where Wiederholungen = -1 ");
if (PcbId.HasValue)
{
sbq.AppendLine($" and map.MapPcbIdToSerialNumber_PcbId = {PcbId.Value}");
}
else if(Order.HasValue)
{
sbq.AppendLine($" and aps.AuftragNr = {Order.Value}");
if (Pos.HasValue)
{
sbq.AppendLine($" and aps.PositionNr = {Pos.Value}");
}
}
else
{
return ret;
}
var OrderRow = dataacces.ExecuteQuery(sbq.ToString());
foreach (DataRow item in OrderRow.Rows)
{
2025-09-02 13:43:39 +00:00
try
2025-08-29 12:05:15 +00:00
{
2025-09-02 13:43:39 +00:00
var retC = new retItem();
retC.OrderNr = (Int32)item["AuftragNr"];
retC.pos = (short)item["PositionNr"];
//retC.SerienNr = (Int32)item["SerienNr"];
retC.Pcb = int.Parse(item["MapPcbIdToSerialNumber_PcbId"].ToString());
var dtPrdDate = dataacces.ExecuteQuery($"sELECT * FROM OPENQUERY(MyOraDB, ' SELECT JSON FROM DELTACHEF.GENESIS_PCBFUNCTIONALTEST_PD WHERE ID_PCB = ''{retC.Pcb}'' order by ID_TEST desc ');");
if (dtPrdDate.Rows.Count >= 1)
{
var St = dtPrdDate.Rows[0]["JSON"].ToString();
var startInex = St.IndexOf("\"StartDT\":\"") + "\"StartDT\":\"".Length;
var datestring = St.Substring(startInex, "29.07.2022 06:47:27".Length);
var olastProdDate = new DateTime();
if (DateTime.TryParse(datestring, out olastProdDate))
{
retC.kitronDate = olastProdDate;
}
else
{
2025-09-15 14:16:07 +00:00
retC.kitronDate = DateTime.ParseExact(datestring, "dd.MM.yyyy HH:mm:ss", CultureInfo.InvariantCulture);
2025-09-02 13:43:39 +00:00
}
}
else
{
retC.kitronDate = DateTime.MinValue;
}
ret.Add(retC);
2025-08-29 12:05:15 +00:00
}
2025-09-02 13:43:39 +00:00
catch (Exception ex)
2025-08-29 12:05:15 +00:00
{
2025-09-02 13:43:39 +00:00
ret.Add(new retItem() { SerienNr = 1, pos = 1, OrderNr = 1, kitronDate = DateTime.MinValue, Pcb = 1});
2025-08-29 12:05:15 +00:00
}
2025-09-02 13:43:39 +00:00
2025-08-29 12:05:15 +00:00
}
}
return ret;
}));
}
catch (Exception ex)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.ToString() + "<br >" + ex.InnerException.ToString());
}
}
2023-05-08 12:42:27 +00:00
}
}