199 lines
6.6 KiB
C#
199 lines
6.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using OliviaAddInPro.Helper;
|
|
using OliviaAddInPro.Services;
|
|
using ArcGIS.Core.Geometry;
|
|
using static OliviaAddInPro.Model.ComunDef;
|
|
using ArcGIS.Desktop.Framework.Threading.Tasks;
|
|
using OliviaAddInPro.Services.LanzaSrv;
|
|
|
|
namespace OliviaAddInPro.Model
|
|
{
|
|
class Recogida : TratamientoComun
|
|
{
|
|
//**********************************************
|
|
//Se recogen en PaneRecogidaSub1
|
|
/**
|
|
* Tipo de fracción
|
|
*/
|
|
public int TipoFrac { get; set; } = -1;
|
|
/**
|
|
* Tipo de fracción
|
|
*/
|
|
public string TipoFracStr { get; set; } = string.Empty;
|
|
/**
|
|
* Tipo de carga
|
|
*/
|
|
public int TipoCarg { get; set; } = -1;
|
|
/**
|
|
* Tipo de carga
|
|
*/
|
|
public string TipoCargStr { get; set; } = string.Empty;
|
|
/**
|
|
* Tipo de Vehículo
|
|
*/
|
|
public int TipoVehic { get; set; } = -1;
|
|
/**
|
|
* Tipo de Lateralidad
|
|
*/
|
|
public int TipoLate { get; set; } = -1;
|
|
/**
|
|
* kg capac camión
|
|
*/
|
|
public int KgMaxVehic { get; set; } = 0;
|
|
/**
|
|
* dens contenedor
|
|
*/
|
|
public int DensCont { get; set; } = 0;
|
|
/**
|
|
* Tiempo de vaciado del contenedor, en seg
|
|
*/
|
|
public int TVaciCont { get; set; } = 0;
|
|
/**
|
|
* kg de carga en cada contenedor
|
|
*/
|
|
public int KgCont { get; set; } = 0;
|
|
/**
|
|
* grados en º de giro del vehículo
|
|
*/
|
|
public int GiroVehic { get; set; } = 0;
|
|
|
|
/*
|
|
*
|
|
* */
|
|
public double AnchoVehiculo
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
public RecogidaServ Serv
|
|
{
|
|
get
|
|
{
|
|
return (RecogidaServ)ServCom;
|
|
}
|
|
set
|
|
{
|
|
ServCom = value;
|
|
}
|
|
}
|
|
public LanzaRecoSrv LanzaSrv { get; set; } = null;
|
|
public Recogida()
|
|
{
|
|
Serv = new RecogidaServ(this);
|
|
LanzaSrv = new LanzaRecoSrv();
|
|
}
|
|
|
|
public override Respuesta<TiposEjecucion> Ejecuta(ModosEjec modo)
|
|
{
|
|
Respuesta<bool> res = new Respuesta<bool> { Value = false };
|
|
Respuesta<TiposEjecucion> res2 = new Respuesta<TiposEjecucion>() { Value = TiposEjecucion.FinEjecNOk };
|
|
res = Serv.Ejecuta(modo);
|
|
if (res.Value)
|
|
{
|
|
res = LanzaSrv.ejec(this, modo, TipoTtoStr);
|
|
if (res.Value)
|
|
{
|
|
ProceSrv.ConfigConex();
|
|
res2 = ProceSrv.start(LanzaSrv.str_cfg, ProgrSrc._ProgrSrc);
|
|
if (!LanzaSrv.EsperaProcess(GeneralDef.NombOlvTasks))
|
|
res2.Error.Add("No se ha podido cerrar oliviaTask.");
|
|
}
|
|
}
|
|
if (res.HasError)
|
|
{
|
|
res2.Error.AddRange(res.Error);
|
|
}
|
|
return res2;
|
|
}
|
|
|
|
/**
|
|
* Descodifica el nombre del sahpefile de entrada identificando el tipo de fracción y la carga para la recogida de residuos
|
|
*/
|
|
public override void decode_gdb(string shapefile, out string fraccion, out string carga)
|
|
{
|
|
int aux, auxl, carg, indice, fracc;
|
|
string auxili, fra, auxi;
|
|
|
|
indice = shapefile.IndexOf("_");
|
|
indice = indice + 2;//para saltarse la F que va antes del identificador del tipo de fracción
|
|
auxili = shapefile.Substring(indice, 2);
|
|
fracc = Convert.ToInt32(auxili);
|
|
fraccion = RecogidaDef.tipos_fracc_str[fracc];
|
|
indice = shapefile.IndexOf("_", indice);
|
|
indice = indice + 2;//para saltarse la C que va antes del identificador de los tipos de carga de los vehículos
|
|
aux = shapefile.IndexOf("_", indice);
|
|
|
|
auxi = "";
|
|
|
|
fra = shapefile.Substring(indice, 2);
|
|
carg = Convert.ToInt32(fra);
|
|
|
|
carga = RecogidaDef.tipos_fracc_str[fracc] + "_" + RecogidaDef.tipos_carg_str[carg];
|
|
|
|
//quita los espacios
|
|
fraccion = fraccion.Replace(" ", "_");
|
|
carga = carga.Replace(" ", "_");
|
|
////////////////////////
|
|
|
|
auxi = shapefile;
|
|
for (int i = 0; i < 2; i++)
|
|
{
|
|
indice = auxi.LastIndexOf("_");
|
|
auxi = auxi.Substring(0, indice);
|
|
}
|
|
auxl = indice - aux;
|
|
if (auxl > 0)
|
|
{
|
|
auxili = shapefile.Substring(aux, auxl);
|
|
carga = carga + auxili;
|
|
|
|
aux = indice; //para coger el timestamp
|
|
}
|
|
|
|
//concatena el timestamp
|
|
carga = carga + shapefile.Substring(aux);
|
|
}
|
|
|
|
/**
|
|
* Devuelve los campos característicos de la capa
|
|
*/
|
|
public override string[] GetCampos(string capa=null)
|
|
{
|
|
string[] camps = {
|
|
RecogidaDef.campos_def.cons_id,
|
|
RecogidaDef.campos_def.cons_nomrec,
|
|
RecogidaDef.campos_def.cons_lateral ,
|
|
RecogidaDef.campos_def.cons_fracc,
|
|
RecogidaDef.campos_def.cons_capac,
|
|
RecogidaDef.campos_def.cons_uds,
|
|
RecogidaDef.campos_def.cons_kgrec };
|
|
return camps;
|
|
}
|
|
|
|
/**
|
|
* Rellena el array de filtros en base a la config
|
|
*/
|
|
public void RellenaFiltrosReco()
|
|
{
|
|
//se rellena el array de filtros
|
|
RecogidaDef.filtro_str = new string[RecogidaDef.tipos_fracc_str.Length + RecogidaDef.tipos_carg_str.Length];
|
|
for (int i = 0; i < RecogidaDef.tipos_fracc_str.Length; i++)
|
|
{
|
|
//se comprueba que tipo de fracción se ha seleccionado. Si se ha seleccionado una fracción sin nombre (el campo en la capa es NULL, y en el comboBox de fracciiones aparece como "-") hay que modificar el filtro
|
|
if (RecogidaDef.tipos_fracc_str[i] == "-")
|
|
RecogidaDef.filtro_str[i] = RecogidaDef.campos_def.cons_fracc + " IS NULL";
|
|
else
|
|
RecogidaDef.filtro_str[i] = RecogidaDef.campos_def.cons_fracc + "= '" + RecogidaDef.tipos_fracc_str[i] + "'";
|
|
}
|
|
for (int i = RecogidaDef.tipos_fracc_str.Length; i < RecogidaDef.filtro_str.Length; i++)
|
|
{
|
|
RecogidaDef.filtro_str[i] = RecogidaDef.campos_def.cons_nomrec + "= '" + RecogidaDef.tipos_carg_str[i - RecogidaDef.tipos_fracc_str.Length] + "'";
|
|
}
|
|
}
|
|
}
|
|
}
|