public void execute(Planificacion planificacion, int sumaBloqueActual, int bloqueActual, HojaBultos bulto) { var cantidadParaCompletarElBloque = planificacion.datos.capacidadXHora - sumaBloqueActual; if (cantidadParaCompletarElBloque > bulto.cantidadRestante) { var hojaBloques = new MyHojaBloques() { bloque = bloqueActual, capaBulto =bulto.numeroSeccion+"-"+ bulto.numeroBultos + bulto.capaCorte, cantidad = bulto.cantidadRestante, corte = bulto.codigoCorte, seccion = bulto.numeroSeccion, serie = bulto.serie, color = planificacion.datos.color, semana = planificacion.datos.semana, year = planificacion.datos.year, tallaCompleta = bulto.tallaCompleta }; bulto.cantidadRestante = 0; planificacion.add(hojaBloques); isExecute = true; } }
public void runRules(Planificacion planificacion) { _actualizarValoresRestantes.execute(planificacion); _verificarSerieConsecutiva.execute(planificacion); _yaSeEncuetraCompletado.execute(planificacion); planificar(planificacion); }
public void execute(Planificacion planificacion) { var sum = planificacion.bloques.Where(x => x.bloque == 44).Sum(x => x.cantidad); if (sum == planificacion.datos.capacidadXHora) { throw new Exception("La planificación esta completa."); } }
public void execute(Planificacion planificacion) { var bulto =planificacion.bultos.Where(x => x.cantidadRestante != 0).ToList()[0]; var ultimo = planificacion.bloques.LastOrDefault(x => x.serie != 0); if (ultimo != null && ultimo.serie + 1 != bulto.serie) { throw new Exception(bulto.codigoCorte + " con serie incorrecta"); } }
private int getBloque(Planificacion planificacion) { if (!planificacion.bloques.Any()) return 1; var miBloque = planificacion.bloques.LastOrDefault().bloque; var sum = planificacion.bloques.Where(x => x.bloque == miBloque).Sum(x => x.cantidad); if (sum == planificacion.datos.capacidadXHora) { miBloque = miBloque + 1; } return miBloque; }
public void execute(Planificacion planificacion) { foreach (var bloque in planificacion.bloques) { foreach (var bulto in planificacion.bultos) { if (bloque.capaBulto == bulto.capaCorte && bloque.seccion == bulto.numeroSeccion) { bulto.cantidadRestante = bulto.cantidadRestante - bloque.cantidad; } } } }
public IEnumerable<MyHojaBloques> getPlanificacion(Planificacion planificacion) { planificacion.bultos = _contexto.CortesDisponiblesParaPlanificar_vws.Where(x => x.codigoCorte == planificacion.datos.corte) .Select(x => Mapper.DynamicMap<HojaBultos>(x)) .ToList() .OrderBy(x => x.serie) .ToList(); _strategyCaller.runRules(planificacion); return planificacion.bloques; }
private void planificar(Planificacion planificacion, bool continuar = true) { var vaAContinuar = true; if (planificacion.bultos.Count(x => x.cantidadRestante > 0) == 0 || continuar == false) { } else { var bloqueAUtilizar = getBloque(planificacion); if (bloqueAUtilizar >44) { vaAContinuar = false; } else { var bulto = planificacion.bultos.Where(x => x.cantidadRestante > 0).ToList()[0]; var sum = planificacion.bloques.Where(x => x.bloque == bloqueAUtilizar).Sum(x => x.cantidad); if (sum < planificacion.datos.capacidadXHora) { // var cantidadParaCompletarElBloque = planificacion.datos.capacidadXHora - sum; foreach (var strategy in _strategies) { strategy.execute(planificacion,sum,bloqueAUtilizar,bulto); if (strategy.isExecute) break; } foreach (var strategy in _strategies) { strategy.isExecute = false; } } } planificar(planificacion, vaAContinuar); } }
protected bool Equals(Planificacion other) { return bloques.Equals(other.bloques) && datos.Equals(other.datos); }
public JsonResult agregarAPlanificacion(ModelHojaBloques model, IEnumerable<MyHojaBloques> bloques) { string mensajeEnviado = ""; bool isCreado = true; IEnumerable<MyHojaBloques> nuevosBloques = null; var planificacion = new Planificacion(); planificacion.bloques = bloques == null ? new List<MyHojaBloques>() : bloques.ToList(); planificacion.datos = model; try { nuevosBloques = _repositorio.getPlanificacion(planificacion); } catch (Exception ex) { mensajeEnviado = "Error: " + ex.Message; isCreado = false; } finally { if (isCreado) mensajeEnviado = planificacion.mensaje; } return Json(new {success = isCreado, mensaje = mensajeEnviado, listaBloques = nuevosBloques}); }
private void planificar(Planificacion planificacion, bool continuar = true) { var vf = false; var vaAContinuar = true; if (planificacion.bultos.Count(x => x.cantidadRestante > 0) == 0 || continuar == false) { } else { var bulto = planificacion.bultos.Where(x => x.cantidadRestante > 0).ToList()[0]; int bloqueAUtilizar = getBloque(planificacion); if (bloqueAUtilizar > 44) { vaAContinuar = false; } else { var sum = planificacion.bloques.Where(x => x.bloque == bloqueAUtilizar).Sum(x => x.cantidad); if (sum < planificacion.datos.capacidadXHora) { var cantidadParaCompletarElBloque = planificacion.datos.capacidadXHora - sum; if (cantidadParaCompletarElBloque == bulto.cantidadRestante) { var hojaBloques = new MyHojaBloques() { bloque = bloqueAUtilizar, capaBulto = bulto.capaCorte, cantidad = cantidadParaCompletarElBloque, corte = bulto.codigoCorte, seccion = bulto.numeroSeccion, serie = bulto.serie }; bulto.cantidadRestante = 0; planificacion.add(hojaBloques); vf = true; } if (cantidadParaCompletarElBloque > bulto.cantidadRestante && vf == false) { var hojaBloques = new MyHojaBloques() { bloque = bloqueAUtilizar, capaBulto = bulto.capaCorte, cantidad = bulto.cantidadRestante, corte = bulto.codigoCorte, seccion = bulto.numeroSeccion, serie = bulto.serie }; bulto.cantidadRestante = 0; planificacion.add(hojaBloques); vf = true; } if (cantidadParaCompletarElBloque < bulto.cantidadRestante && vf == false) { var hojaBloques = new MyHojaBloques() { bloque = bloqueAUtilizar, capaBulto = bulto.capaCorte, cantidad = cantidadParaCompletarElBloque, corte = bulto.codigoCorte, seccion = bulto.numeroSeccion, serie = bulto.serie }; bulto.cantidadRestante = bulto.cantidadRestante - cantidadParaCompletarElBloque; planificacion.add(hojaBloques); } } } planificar(planificacion,vaAContinuar); } }
private Planificacion getPlanificacion() { var planificacion = new Planificacion(); planificacion.datos = new ModelHojaBloques(){capacidadXHora = 30,corte = "FAS-039",semana = 1,year = 2012,color = "rojo"}; planificacion.bloques = new List<MyHojaBloques>() { new MyHojaBloques(){bloque = 1,seccion = 1,capaBulto = "A",cantidad = 30,color = "Verde",corte = "FAS-039",serie = 6236,semana = 1,tallaCompleta = "(150-33) 2/3",year = 2012} // new HojaBloques(){bloque = 1,seccion = 1,capaBulto = "B",cantidad = 24,color = "Verde",corte = "FAS-039",serie = 6237,semana = 1,tallaCompleta = "(150-33) 2/3",year = 2012}, }; planificacion.bultos =new List<HojaBultos>() { new HojaBultos(){numeroBultos = 1,codigoCorte = "FAS-039",numeroSeccion = 1,capaCorte = "A",tallaCompleta = "(150-33) 2/3",cantidadRestante = 36,serie = 6236}, new HojaBultos(){numeroBultos = 1,codigoCorte = "FAS-039",numeroSeccion = 1,capaCorte = "B",tallaCompleta = "(150-33) 2/3",cantidadRestante = 36,serie = 6237}, new HojaBultos(){numeroBultos = 1,codigoCorte = "FAS-039",numeroSeccion = 1,capaCorte = "C",tallaCompleta = "(150-33) 2/3",cantidadRestante = 36,serie = 6238}, new HojaBultos(){numeroBultos = 1,codigoCorte = "FAS-039",numeroSeccion = 2,capaCorte = "B",tallaCompleta = "(155-35) 4/5",cantidadRestante = 36,serie = 6260}, new HojaBultos(){numeroBultos = 1,codigoCorte = "FAS-039",numeroSeccion = 2,capaCorte = "C",tallaCompleta = "(155-35) 4/5",cantidadRestante = 36,serie = 6261}, new HojaBultos(){numeroBultos = 1,codigoCorte = "FAS-039",numeroSeccion = 3,capaCorte = "C",tallaCompleta = "(175-33) 2/3",cantidadRestante = 36,serie = 6270}, new HojaBultos(){numeroBultos = 1,codigoCorte = "FAS-039",numeroSeccion = 4,capaCorte = "C",tallaCompleta = "(155-33) 2/3",cantidadRestante = 20,serie = 6272}, new HojaBultos(){numeroBultos = 1,codigoCorte = "FAS-039",numeroSeccion = 5,capaCorte = "C",tallaCompleta = "(145-33) 2/3",cantidadRestante = 5,serie = 6279}, new HojaBultos(){numeroBultos = 2,codigoCorte = "FAS-039",numeroSeccion = 1,capaCorte = "A",tallaCompleta = "(155-33) 2/3",cantidadRestante = 36,serie = 6239}, new HojaBultos(){numeroBultos = 2,codigoCorte = "FAS-039",numeroSeccion = 1,capaCorte = "B",tallaCompleta = "(155-33) 2/3",cantidadRestante = 36,serie = 6240}, new HojaBultos(){numeroBultos = 2,codigoCorte = "FAS-039",numeroSeccion = 1,capaCorte = "C",tallaCompleta = "(155-33) 2/3",cantidadRestante = 36,serie = 6241}, new HojaBultos(){numeroBultos = 2,codigoCorte = "FAS-039",numeroSeccion = 2,capaCorte = "B",tallaCompleta = "(160-33) 2/3",cantidadRestante = 36,serie = 6262}, new HojaBultos(){numeroBultos = 2,codigoCorte = "FAS-039",numeroSeccion = 2,capaCorte = "C",tallaCompleta = "(160-33) 2/3",cantidadRestante = 36,serie = 6263}, new HojaBultos(){numeroBultos = 2,codigoCorte = "FAS-039",numeroSeccion = 3,capaCorte = "C",tallaCompleta = "(180-35) 4/5",cantidadRestante = 36,serie = 6271}, new HojaBultos(){numeroBultos = 2,codigoCorte = "FAS-039",numeroSeccion = 4,capaCorte = "C",tallaCompleta = "(160-33) 2/3",cantidadRestante = 20,serie = 6273}, new HojaBultos(){numeroBultos = 2,codigoCorte = "FAS-039",numeroSeccion = 5,capaCorte = "C",tallaCompleta = "(145-33) 2/3",cantidadRestante = 5,serie = 6280}, }; return planificacion; }