384 lines
13 KiB
C#
384 lines
13 KiB
C#
using Integry_Smart_Gateway.Core.RestConsumer.Entity;
|
|
using Integry_Smart_Gateway.Core.RestConsumer.Entity.Model;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Integry_Smart_Gateway.Core.Alert.Model;
|
|
using Integry_Smart_Gateway.Core.Logger;
|
|
using Integry_Smart_Gateway.Core.Orders.Model;
|
|
using Integry_Smart_Gateway.Core.RestConsumer.Entity.Model.DTO;
|
|
using Integry_Smart_Gateway.Core.RestConsumer.Model;
|
|
using Integry_Smart_Gateway.Core.Settings;
|
|
|
|
namespace Integry_Smart_Gateway.Core.RestConsumer.Controller;
|
|
|
|
public class WarehouseControllerService(
|
|
ISettingsService settingsService,
|
|
ILoggerService loggerService,
|
|
IEntityService entityService,
|
|
IRestConsumerService restConsumerService)
|
|
: IWarehouseControllerService
|
|
{
|
|
|
|
public async Task<MtbColt?> CreateUdcProduzione(CreateUdcProduzioneRequest createUdcProduzioneRequest)
|
|
{
|
|
BaseRESTResponse<MtbColt>? response = null;
|
|
|
|
try
|
|
{
|
|
response = await restConsumerService
|
|
.Post<MtbColt>("mes_v2/createULLavorazione", data: createUdcProduzioneRequest);
|
|
}
|
|
catch (System.Exception ex)
|
|
{
|
|
loggerService.LogError(ex, nameof(WarehouseControllerService));
|
|
}
|
|
|
|
var responseMtbColt = response?.Entity ?? response?.Dto;
|
|
|
|
return responseMtbColt;
|
|
}
|
|
|
|
|
|
public async Task<MtbColt?> CreateEmptyMtbColt(OrdineLavorazioneDTO ordineLavorazione)
|
|
{
|
|
IDictionary<string, object> queryParams = new Dictionary<string, object>
|
|
{
|
|
{ "codJfas", settingsService.GetProductionConfig().CodJfas },
|
|
{ "dataOrd", ordineLavorazione.DataOrd },
|
|
{ "numOrd", ordineLavorazione.NumOrd },
|
|
{ "gestione", ordineLavorazione.Gestione },
|
|
{ "codMdep", ordineLavorazione.CodMdep },
|
|
{ "codAnag", "F0000" }
|
|
};
|
|
|
|
MtbColt? responseMtbColt = null;
|
|
|
|
try
|
|
{
|
|
responseMtbColt = (await restConsumerService.Get<MtbColt>("mes_v2/createFakeMtbColtToConfirm", queryParams))
|
|
.Dto;
|
|
}
|
|
catch (System.Exception ex)
|
|
{
|
|
loggerService.LogError(ex, nameof(WarehouseControllerService));
|
|
}
|
|
|
|
return responseMtbColt;
|
|
}
|
|
|
|
public void SaveCaratteristicaPartita<T>(string codMart, string partitaMag, string caratName, T value,
|
|
DateTime? dataRilevazione = null)
|
|
{
|
|
SaveCaratteristicaPartita(codMart, partitaMag, caratName, null, value, dataRilevazione);
|
|
}
|
|
|
|
public void SaveCaratteristicaPartita<T>(string codMart, string partitaMag, string caratName, string fonte,
|
|
T value)
|
|
{
|
|
SaveCaratteristicaPartita(codMart, partitaMag, caratName, fonte, value, null);
|
|
}
|
|
|
|
public void SaveCaratteristicaPartita<T>(string codMart, string partitaMag, string caratName, string fonte,
|
|
T value, DateTime? dataRilevazione = null)
|
|
{
|
|
var mtbPartitaMag = new MtbPartitaMag
|
|
{
|
|
Operation = EntityBase.OperationType.NO_OP,
|
|
codMart = codMart,
|
|
partitaMag = partitaMag,
|
|
mtbPartitaMagCarat = new[]
|
|
{
|
|
new MtbPartitaMagCarat()
|
|
{
|
|
Operation = EntityBase.OperationType.INSERT_OR_UPDATE,
|
|
carat = caratName,
|
|
valCarat = value.ToString(),
|
|
fonte = fonte,
|
|
DataRilevazione = dataRilevazione ?? DateTime.Now
|
|
}
|
|
}
|
|
};
|
|
|
|
try
|
|
{
|
|
entityService.ProcessEntity<MtbPartitaMag>(mtbPartitaMag);
|
|
}
|
|
catch (System.Exception ex)
|
|
{
|
|
loggerService.LogError(ex, nameof(WarehouseControllerService));
|
|
}
|
|
}
|
|
|
|
public void RemoveCaratteristicaPartita(string codMart, string partitaMag, string caratName, string fonte)
|
|
{
|
|
var caratsToDelete = restConsumerService.ProcessSql<List<MtbPartitaMagCarat>>(
|
|
@$"SELECT cod_mart, partita_mag, carat, id_riga
|
|
FROM mtb_partita_mag_carat
|
|
WHERE cod_mart = '{codMart}'
|
|
AND partita_mag = '{partitaMag}'
|
|
AND carat = '{caratName}'
|
|
AND fonte = '{fonte}'")
|
|
.Result;
|
|
|
|
if (caratsToDelete != null && caratsToDelete.Any())
|
|
{
|
|
foreach (var mtbPartitaMagCarat in caratsToDelete)
|
|
{
|
|
mtbPartitaMagCarat.Operation = EntityBase.OperationType.DELETE;
|
|
}
|
|
|
|
entityService.ProcessEntityList<MtbPartitaMagCarat>(caratsToDelete.Select(x => (IEntity)x).ToList(),
|
|
false);
|
|
}
|
|
}
|
|
|
|
public MtbPartitaMagCarat? RetrieveCaratteristicaPartita(string codMart, string partitaMag, string caratName)
|
|
{
|
|
var carats = restConsumerService.ProcessSql<List<MtbPartitaMagCarat>>(
|
|
@$"SELECT *
|
|
FROM mtb_partita_mag_carat
|
|
WHERE cod_mart = '{codMart}'
|
|
AND partita_mag = '{partitaMag}'
|
|
AND carat = '{caratName}'")
|
|
.Result;
|
|
|
|
if (carats != null && carats.Any())
|
|
return carats[0];
|
|
return null;
|
|
}
|
|
|
|
public MtbColt CaricaMateriaPrimaInPosizione(string posizione, string codMdep, string codAnag, string codMart,
|
|
string partitaMag, float quantity, int numCnf, string gestioneOrd, DateTime dataOrd, int numOrd, int rigaOrd)
|
|
{
|
|
var createUdcRequest = new CreateUdcRequest()
|
|
{
|
|
CodMdep = codMdep,
|
|
CodJfas = settingsService.GetProductionConfig().CodJfas,
|
|
CodAnag = codAnag,
|
|
Posizione = posizione,
|
|
Ordini =
|
|
[
|
|
new CreateUdcRequestOrder()
|
|
{
|
|
Gestione = gestioneOrd,
|
|
DataOrd = dataOrd,
|
|
NumOrd = numOrd,
|
|
}
|
|
],
|
|
UdcRows =
|
|
[
|
|
new InsertUdcRowRequest()
|
|
{
|
|
DataOrd = dataOrd,
|
|
NumOrd = numOrd,
|
|
RigaOrd = rigaOrd,
|
|
CodMart = codMart,
|
|
QtaTot = quantity,
|
|
QtaCnf = quantity / numCnf,
|
|
NumCnf = numCnf,
|
|
PartitaMag = partitaMag,
|
|
}
|
|
]
|
|
};
|
|
|
|
var response = restConsumerService
|
|
.Post<CreateUdcResponse>(
|
|
"wms/accettazione/createUDCWithRows",
|
|
null, createUdcRequest)
|
|
.Result
|
|
.Dto;
|
|
|
|
return response.MtbColt;
|
|
}
|
|
|
|
public MtbColt? CaricaMateriaPrimaInSilos(string posizione, string codMdep, string codAnag, string codMart,
|
|
string partitaMag, float quantity, DateTime dataOrd, int numOrd, int rigaOrd)
|
|
{
|
|
var mtbColt = new MtbColt
|
|
{
|
|
Operation = EntityBase.OperationType.INSERT,
|
|
Gestione = "A",
|
|
SerCollo = "/",
|
|
CodMdep = codMdep,
|
|
CodJfas = settingsService.GetProductionConfig().CodJfas,
|
|
CodAnag = codAnag,
|
|
Posizione = posizione,
|
|
DataOrd = dataOrd,
|
|
NumOrd = numOrd
|
|
};
|
|
|
|
var mtbColr = new MtbColr
|
|
{
|
|
//codJcom = ordineLavorazione.codJcom,
|
|
DataOrd = dataOrd,
|
|
NumOrd = numOrd,
|
|
RigaOrd = rigaOrd,
|
|
CodMart = codMart,
|
|
QtaCol = quantity,
|
|
PartitaMag = partitaMag
|
|
};
|
|
|
|
mtbColt.MtbColr.Add(mtbColr);
|
|
|
|
|
|
try
|
|
{
|
|
MtbColt response = restConsumerService
|
|
.Post<MtbColt>(
|
|
"wms/accettazione/accettazioneMerceSilos",
|
|
null, mtbColt)
|
|
.Result
|
|
.Dto;
|
|
return response;
|
|
}
|
|
catch (System.Exception ex)
|
|
{
|
|
loggerService.LogError(ex, nameof(WarehouseControllerService));
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
public IList<AlertDTO> SpostaArtDaPosizioneInPosizione(string codMart, string partitaMag, string codMdep,
|
|
string posizioneSource, string posizioneDest, double qta, double qtaCnf, double numCnf)
|
|
{
|
|
var spostaArtDaPosizioneInPosizione = new SpostaArtDaPosizioneInPosizioneRequestDTO()
|
|
{
|
|
codMart = codMart,
|
|
partitaMag = partitaMag,
|
|
codMdep = codMdep,
|
|
posizioneSource = posizioneSource,
|
|
posizioneDest = posizioneDest,
|
|
numCnfToMove = numCnf,
|
|
qtaCnfToMove = qtaCnf,
|
|
qtaToMove = qta
|
|
};
|
|
List<AlertDTO> alerts = new List<AlertDTO>();
|
|
|
|
try
|
|
{
|
|
IList<dynamic> responses = restConsumerService
|
|
.Post<IList<dynamic>>(
|
|
"wms/spostaArtDaPosizioneInPosizione",
|
|
null, spostaArtDaPosizioneInPosizione)
|
|
.Result
|
|
.Dto;
|
|
|
|
if (responses != null)
|
|
{
|
|
foreach (var response in responses)
|
|
{
|
|
AlertLevelEnum? level = null;
|
|
|
|
switch ((string)response.tipo)
|
|
{
|
|
case "INFO":
|
|
level = AlertLevelEnum.INFO;
|
|
break;
|
|
case "WARNING":
|
|
level = AlertLevelEnum.WARNING;
|
|
break;
|
|
case "ERROR":
|
|
level = AlertLevelEnum.DANGER;
|
|
break;
|
|
}
|
|
|
|
alerts.Add(new AlertDTO()
|
|
{
|
|
AlertLevel = (AlertLevelEnum)level,
|
|
Title = "Scarico materia prima",
|
|
Message = response.message
|
|
});
|
|
}
|
|
}
|
|
}
|
|
catch (System.Exception ex)
|
|
{
|
|
loggerService.LogError(ex, nameof(WarehouseControllerService));
|
|
}
|
|
|
|
return alerts;
|
|
}
|
|
|
|
public List<AlertDTO> ScaricaMateriaPrimaDaPosizione(string? codJfas, string codMdep,
|
|
bool useRapportoMatPrima,
|
|
IList<ScaricoMateriaPrimaDTO> scaricoMateriaPrimaDtos)
|
|
{
|
|
IDictionary<string, object> queryParams = new Dictionary<string, object>();
|
|
|
|
if (!string.IsNullOrEmpty(codJfas)) queryParams.Add("codJfas", codJfas);
|
|
queryParams.Add("codMdep", codMdep);
|
|
queryParams.Add("useRapportoMatPrima", useRapportoMatPrima);
|
|
|
|
List<AlertDTO> alerts = new List<AlertDTO>();
|
|
|
|
try
|
|
{
|
|
IList<dynamic> responses = restConsumerService
|
|
.Post<IList<dynamic>>(
|
|
"scaricoMateriaPrimaDaPosizione",
|
|
queryParams, scaricoMateriaPrimaDtos)
|
|
.Result
|
|
.Dto;
|
|
|
|
if (responses != null)
|
|
{
|
|
foreach (var response in responses)
|
|
{
|
|
AlertLevelEnum? level = null;
|
|
|
|
switch ((string)response.tipo)
|
|
{
|
|
case "INFO":
|
|
level = AlertLevelEnum.INFO;
|
|
break;
|
|
case "WARNING":
|
|
level = AlertLevelEnum.WARNING;
|
|
break;
|
|
case "ERROR":
|
|
level = AlertLevelEnum.DANGER;
|
|
break;
|
|
}
|
|
|
|
alerts.Add(new AlertDTO()
|
|
{
|
|
AlertLevel = (AlertLevelEnum)level,
|
|
Title = "Scarico materia prima",
|
|
Message = response.message
|
|
});
|
|
}
|
|
}
|
|
}
|
|
catch (System.Exception ex)
|
|
{
|
|
loggerService.LogError(ex, nameof(WarehouseControllerService));
|
|
}
|
|
|
|
return alerts;
|
|
}
|
|
|
|
|
|
public void CreaCaricoProdottoFinito(string codJfas, string codMdep,
|
|
OrdineLavorazioneDTO ordineLavorazioneDto,
|
|
float qta)
|
|
{
|
|
IDictionary<string, object> queryParams = new Dictionary<string, object>();
|
|
|
|
queryParams.Add("codJfas", codJfas);
|
|
queryParams.Add("codMdep", codMdep);
|
|
queryParams.Add("dataOrd", ordineLavorazioneDto.DataOrd);
|
|
queryParams.Add("numOrd", ordineLavorazioneDto.NumOrd);
|
|
queryParams.Add("gestione", ordineLavorazioneDto.Gestione);
|
|
queryParams.Add("qta", qta.ToString().Replace(",", "."));
|
|
try
|
|
{
|
|
restConsumerService.Get<object>("mes_v2/createColloCaricoProdottoFinito", queryParams);
|
|
}
|
|
catch (System.Exception ex)
|
|
{
|
|
loggerService.LogError(ex, nameof(WarehouseControllerService));
|
|
}
|
|
}
|
|
} |