Esempio n. 1
0
        public JsonResult DefinirPontoDeAncoragem(int EstanteId, float Lat, float Lng)
        {
            if (EstanteId == -1)
            {
                var core = new SistemaConfiguracaoCore();

                var balcaoAncoragem = core.RetornarPorNome("balcao-ancoragem-latlng");

                balcaoAncoragem.Valor = @"{""lat"":" + Lat.ToString().Replace(",", ".") + @",""lng"":" + Lng.ToString().Replace(",", ".") + "}";

                core.Alterar(balcaoAncoragem);
            }
            else
            {
                var core = new EstanteCore();

                var estante = core.RetornarPorId(EstanteId);

                estante.AncoragemLat = Lat;
                estante.AncoragemLng = Lng;

                core.Alterar(estante);
            }

            return(Json("", JsonRequestBehavior.AllowGet));
        }
Esempio n. 2
0
        public JsonResult AdicionarReferenciaEstante(int PoligonoId, int EstanteId)
        {
            var estante  = new EstanteCore().RetornarPorId(EstanteId);
            var poligono = new PoligonoCore().RetornarPorId(PoligonoId);

            dynamic response = null;

            if (estante.ArmazemId == poligono.Camada.ArmazemId)
            {
                estante.PoligonoId = PoligonoId;

                new EstanteCore().Alterar(estante);

                response = new
                {
                    Id                    = EstanteId,
                    PoligonoId            = PoligonoId,
                    QuantidadePrateleiras = estante.QuantidadePrateleiras
                };
            }

            var return_json = Json(response, JsonRequestBehavior.AllowGet);

            return_json.MaxJsonLength = int.MaxValue;
            return(return_json);
        }
Esempio n. 3
0
        public void AdicionarEstanteAoMapa(int EstanteId, double?Lat, double?Lng)
        {
            var estante  = new EstanteCore().RetornarPorId(EstanteId);
            var poligono = new PoligonoCore().RetornarPorId(estante.PoligonoId ?? 0);

            poligono.Ativo = true;

            if (Lat != null && Lng != null)
            {
                var _lat = Lat.ToString().Replace(",", ".");
                var _lng = Lng.ToString().Replace(",", ".");
                //var Largura = estante.LarguraPrateleiras.ToString().Replace(",", ".");
                //var Profundidade = estante.ProfundidadePrateleiras.ToString().Replace(",", ".");
                var _lgnLargura      = (Lng + estante.LarguraPrateleiras).ToString().Replace(",", ".");
                var _latProfundidade = (Lat + estante.ProfundidadePrateleiras).ToString().Replace(",", ".");

                var novasCoordenadas = $"[[[{_lng},{_lat}],[{_lgnLargura},{_lat}],[{_lgnLargura},{_latProfundidade}],[{_lng},{_latProfundidade}],[{_lng},{_lat}]]]";

                var geojson = JsonConvert.DeserializeObject <dynamic>(poligono.Geojson);
                geojson.geometry.coordinates = JsonConvert.DeserializeObject <dynamic>(novasCoordenadas);

                poligono.Geojson = JsonConvert.SerializeObject(geojson);
            }

            new PoligonoCore().Alterar(poligono);
        }
Esempio n. 4
0
        public JsonResult RetornarAssociados(int EstanteId)
        {
            var estante = new EstanteCore().RetornarComItens(1, EstanteId);

            var response = estante.Prateleiras.Select(pra => new
            {
                Id    = pra.Id,
                Nivel = pra.Nivel,
                Itens = pra.ItemsEstoque.GroupBy(ite => ite.TipoItemEstoqueId).Select(ite => ite.First()).Select(ite => new {
                    Id                     = ite.Id,
                    Nome                   = ite.TipoItemEstoque.Nome,
                    Descricao              = ite.TipoItemEstoque.Descricao,
                    Largura                = ite.TipoItemEstoque.Largura,
                    Altura                 = ite.TipoItemEstoque.Altura,
                    Profundidade           = ite.TipoItemEstoque.Profundidade,
                    Peso                   = ite.TipoItemEstoque.Peso,
                    PesoMaximoEmpilhamento = ite.TipoItemEstoque.PesoMaximoEmpilhamento,
                    CodigoDeBarras         = ite.TipoItemEstoque.CodigoDeBarras,
                    Quantidade             = pra.ItemsEstoque.Where(ite2 => ite2.TipoItemEstoqueId == ite.TipoItemEstoqueId).Count(),
                })
            });

            var return_json = Json(response, JsonRequestBehavior.AllowGet);

            return_json.MaxJsonLength = int.MaxValue;
            return(return_json);
        }
Esempio n. 5
0
        public void RemoverReferenciaEstante(int EstanteId)
        {
            var estante = new EstanteCore().RetornarPorId(EstanteId);

            estante.PoligonoId = null;

            new EstanteCore().Alterar(estante);
        }
Esempio n. 6
0
        public JsonResult CarregarCamadas()
        {
            var camadas            = new CamadaCore().RetornarTodos();
            var poligonos          = new PoligonoCore().RetornarTodos();
            var estantesAssociadas = new EstanteCore().RetornarEstantesAssociadas();
            var prateleiras        = new List <Prateleira>();

            estantesAssociadas.Select(e => e.Prateleiras).ToList().ForEach(e => prateleiras.AddRange(e));

            var camadasGeojson = new List <CamadaGeojsonVM>();

            foreach (var camada in camadas)
            {
                var geojson = "[" + string.Join(",", poligonos.Where(pol => pol.CamadaId == camada.Id).Select(pol => pol.Geojson).ToArray()) + "]";

                var camadaGeojson = new CamadaGeojsonVM()
                {
                    CamadaId = camada.Id, CamadaNome = camada.Nome, CamadaGeojson = geojson, CamadaCor = camada.Cor
                };

                camadasGeojson.Add(camadaGeojson);
            }

            var response = new
            {
                camadasGeojson = camadasGeojson.Select(i => new
                {
                    i.CamadaId,
                    i.CamadaNome,
                    i.CamadaGeojson,
                    i.CamadaCor
                }),
                estantesAssociadas = estantesAssociadas.Select(est => new {
                    est.Id,
                    est.QuantidadePrateleiras,
                    est.PoligonoId
                }),
                prateleiras = prateleiras.Select(pra => new {
                    pra.Id,
                    pra.EstanteId,
                    pra.Nivel
                })
            };

            var return_json = Json(response, JsonRequestBehavior.AllowGet);

            return_json.MaxJsonLength = int.MaxValue;
            return(return_json);
        }
Esempio n. 7
0
        public JsonResult ContainerPacking()
        {
            var balcaoAncoragemDefinition = new { lat = new double(), lng = new double() };
            var balcaoAncoragem           = JsonConvert.DeserializeAnonymousType(new SistemaConfiguracaoCore().RetornarPorNome("balcao-ancoragem-latlng").Valor, balcaoAncoragemDefinition);

            var estantes    = new EstanteCore().RetornarTodosComItens();
            var prateleiras = new List <Prateleira>();

            estantes.Select(e => e.Prateleiras).ToList().ForEach(e => prateleiras.AddRange(e));

            var PackResult = prateleiras.Select(e => new
            {
                ContainerID = e.Id,
                PackedItems = e.ItemsEstoque.Select(i => new {
                    ItemId   = i.Id,
                    PackDimX = i.TipoItemEstoque.Largura,
                    PackDimY = i.TipoItemEstoque.Altura,
                    PackDimZ = i.TipoItemEstoque.Profundidade,
                    CoordX   = i.PackX,
                    CoordY   = i.PackY,
                    CoordZ   = i.PackZ
                }),
                Ancoragem = new
                {
                    Lat = e.Estante.AncoragemLat,
                    Lng = e.Estante.AncoragemLng,
                }
            });

            var Containers = prateleiras.Select(e => new {
                ID     = e.Id,
                Length = e.Estante.ProfundidadePrateleiras,
                Width  = e.Estante.LarguraPrateleiras,
                Height = e.Estante.AlturaPrateleiras
            });

            var response = new
            {
                PackResult,
                Containers,
                BalcaoAncoragem = new
                {
                    Lat = balcaoAncoragem.lat,
                    Lng = balcaoAncoragem.lng
                }
            };

            return(Json(response));
        }
Esempio n. 8
0
        public JsonResult RetornarEstantesNaoPresentesNoMapa()
        {
            var estantes = new EstanteCore().RetornarEstantesNaoPresentesNoMapa();

            var response = estantes.Select(est => new
            {
                Id               = est.Id,
                QtdPrateleiras   = est.QuantidadePrateleiras,
                LarguraPrat      = est.LarguraPrateleiras,
                AlturaPrat       = est.AlturaPrateleiras,
                ProfundidadePrat = est.ProfundidadePrateleiras,
                PesoMaximoPrat   = est.PesoMaximoPrateleiras,
            });

            var return_json = Json(response, JsonRequestBehavior.AllowGet);

            return_json.MaxJsonLength = int.MaxValue;
            return(return_json);
        }
Esempio n. 9
0
        public JsonResult DeletarEstante(int EstanteId)
        {
            var core = new EstanteCore();

            var estante = core.RetornarPorId(EstanteId);

            //Deleta prateleiras e remove a referencia dos itens associados
            var prateleiraCore  = new PrateleiraCore();
            var itemEstoqueCore = new ItemEstoqueCore();

            var prateleirasRemover = prateleiraCore.RetornarPorEstanteId(estante.Id);

            prateleirasRemover.ForEach(pra =>
            {
                var itens = itemEstoqueCore.RetornarPorPrateleiraId(pra.Id);

                itens.ForEach(ite =>
                {
                    ite.PrateleiraId = null;
                    itemEstoqueCore.Alterar(ite);
                });

                prateleiraCore.Deletar(pra);
            });

            //Deleta a estante
            core.Deletar(estante);

            //Deleta poligono
            if (estante.PoligonoId != null)
            {
                var poligonoCore = new PoligonoCore();

                var poligono = poligonoCore.RetornarPorId(estante.PoligonoId ?? 0);

                poligonoCore.Deletar(poligono);
            }


            return(Json("", JsonRequestBehavior.AllowGet));
        }
Esempio n. 10
0
        public FileContentResult GerarRelatorioCompleto(bool excel = false)
        {
            var linhas = new List <object>();

            //Adiciona os itens não estocados
            var itensNaoEstocados = new ItemEstoqueCore().RetornarNaoEstocados();

            foreach (var itemNaoEstocados in itensNaoEstocados.GroupBy(ite => ite.TipoItemEstoqueId).Select(ite => ite.First()))
            {
                var item = new
                {
                    _EstanteId = "N/A",
                    _Nivel     = "N/A",
                    //Id = itemNaoEstocados.Id,
                    _TipoItemEstoqueId = itemNaoEstocados.TipoItemEstoqueId,
                    Nome                    = itemNaoEstocados.TipoItemEstoque.Nome,
                    _Descricao              = itemNaoEstocados.TipoItemEstoque.Descricao,
                    Largura                 = itemNaoEstocados.TipoItemEstoque.Largura,
                    Altura                  = itemNaoEstocados.TipoItemEstoque.Altura,
                    Profundidade            = itemNaoEstocados.TipoItemEstoque.Profundidade,
                    Peso                    = itemNaoEstocados.TipoItemEstoque.Peso,
                    _PesoMaximoEmpilhamento = itemNaoEstocados.TipoItemEstoque.PesoMaximoEmpilhamento,
                    _CodigoDeBarras         = itemNaoEstocados.TipoItemEstoque.CodigoDeBarras,
                    Quantidade              = itensNaoEstocados.Where(ite2 => ite2.TipoItemEstoqueId == itemNaoEstocados.TipoItemEstoqueId).Count()
                };

                linhas.Add(item);
            }

            //Adiciona os itens estocados
            var estantes = new EstanteCore().RetornarTodosComItens();

            foreach (var estante in estantes.OrderBy(est => est.Id))
            {
                foreach (var prateleira in estante.Prateleiras.OrderBy(pra => pra.Nivel))
                {
                    foreach (var itemEstoque in prateleira.ItemsEstoque.GroupBy(ite => ite.TipoItemEstoqueId).Select(ite => ite.First()))
                    {
                        var item = new
                        {
                            _EstanteId = estante.Id.ToString(),
                            _Nivel     = prateleira.Nivel.ToString(),
                            //Id = itemEstoque.Id,
                            _TipoItemEstoqueId = itemEstoque.TipoItemEstoqueId,
                            Nome                    = itemEstoque.TipoItemEstoque.Nome,
                            _Descricao              = itemEstoque.TipoItemEstoque.Descricao,
                            Largura                 = itemEstoque.TipoItemEstoque.Largura,
                            Altura                  = itemEstoque.TipoItemEstoque.Altura,
                            Profundidade            = itemEstoque.TipoItemEstoque.Profundidade,
                            Peso                    = itemEstoque.TipoItemEstoque.Peso,
                            _PesoMaximoEmpilhamento = itemEstoque.TipoItemEstoque.PesoMaximoEmpilhamento,
                            _CodigoDeBarras         = itemEstoque.TipoItemEstoque.CodigoDeBarras,
                            Quantidade              = prateleira.ItemsEstoque.Where(ite2 => ite2.TipoItemEstoqueId == itemEstoque.TipoItemEstoqueId).Count()
                        };

                        linhas.Add(item);
                    }
                }
            }

            string csvContent = "";

            if (linhas.Count > 0)
            {
                var expandos = JsonConvert.DeserializeObject <ExpandoObject[]>(SubstituirNomesDePropriedades(JsonConvert.SerializeObject(linhas)));

                using (var writer = new StringWriter())
                {
                    using (var csv = new CsvWriter(writer, CultureInfo.GetCultureInfo("pt-BR")))
                    {
                        //csv.Configuration.Delimiter = delimiter;

                        csv.WriteRecords(expandos as IEnumerable <dynamic>);
                    }

                    csvContent = writer.ToString();
                }
            }

            var data   = Encoding.UTF8.GetBytes(csvContent);
            var result = Encoding.UTF8.GetPreamble().Concat(data).ToArray();

            if (excel)
            {
                result = System.IO.File.ReadAllBytes(CSV2Excel(result));
                return(File(result, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Relatório - Armazém 3D.xlsx"));
            }
            else
            {
                return(File(result, "application/csv", "Relatório - Armazém 3D.csv"));
            }
        }
Esempio n. 11
0
        public JsonResult EstocarItem(int TipoItemEstoqueId, int?ItemEstoqueId = null)
        {
            var tipoItemEstoque = new TipoItemEstoqueCore().RetornarPorId(TipoItemEstoqueId);
            var novoItem        = new OnlineContainerPacking.Models.Item(-1, Convert.ToDecimal(tipoItemEstoque.Largura), Convert.ToDecimal(tipoItemEstoque.Altura), Convert.ToDecimal(tipoItemEstoque.Profundidade), 1, tipoItemEstoque.Id);

            novoItem.Peso       = tipoItemEstoque.Peso ?? 0;
            novoItem.PesoMaximo = tipoItemEstoque.PesoMaximoEmpilhamento ?? 0;

            //===Carrega containers/estantes=====================
            var estanteCore     = new EstanteCore();
            var itemEstoqueCore = new ItemEstoqueCore();
            var estantes        = estanteCore.RetornarTodosComItens();

            var containers = new List <OnlineContainerPacking.Models.Container>();

            estantes.OrderBy(e => e.Id).ToList().ForEach(estante =>
            {
                estante.Prateleiras.OrderBy(p => p.Nivel).ToList().ForEach(prateleira =>
                {
                    //Ignora prateleira que nao suportam mais peso
                    var pesoAtual = prateleira.ItemsEstoque.Sum(item => item.TipoItemEstoque.Peso ?? 0);
                    if (pesoAtual + novoItem.Peso > estante.PesoMaximoPrateleiras)
                    {
                        return;
                    }

                    var items = new List <OnlineContainerPacking.Models.Item>();
                    prateleira.ItemsEstoque.OrderByDescending(i => i.PackY).ToList().ForEach(itemEstoque => {
                        var TipoItemEstoque       = itemEstoque.TipoItemEstoque;
                        var _itemContainerPacking = new OnlineContainerPacking.Models.Item(itemEstoque.Id, Convert.ToDecimal(TipoItemEstoque.Largura), Convert.ToDecimal(TipoItemEstoque.Altura), Convert.ToDecimal(TipoItemEstoque.Profundidade), Convert.ToDecimal(itemEstoque.PackX), Convert.ToDecimal(itemEstoque.PackY), Convert.ToDecimal(itemEstoque.PackZ), 1, TipoItemEstoque.Id, itemEstoque.ItemBaseId, TipoItemEstoque.Peso ?? 0, TipoItemEstoque.PesoMaximoEmpilhamento ?? 1);

                        if (itemEstoque.PackY == 0) //É um item base
                        {
                            _itemContainerPacking.ItensEmpilhados = items.Where(i => i.ItemBaseId == _itemContainerPacking.ID).OrderBy(i => i.CoordY).ToList();

                            if (Convert.ToDecimal(estante.AlturaPrateleiras) < _itemContainerPacking.Dim2 * (_itemContainerPacking.ItensEmpilhados.Count + 2))
                            {
                                _itemContainerPacking.EmpilhamentoDisponivel = false;
                            }

                            if ((_itemContainerPacking.ItensEmpilhados.Count + 1) * _itemContainerPacking.Peso > _itemContainerPacking.PesoMaximo)
                            {
                                _itemContainerPacking.EmpilhamentoDisponivel = false;
                            }
                        }

                        _itemContainerPacking.IsPacked = true;
                        items.Add(_itemContainerPacking);
                    });

                    containers.Add(new OnlineContainerPacking.Models.Container(prateleira.Id, Convert.ToDecimal(estante.ProfundidadePrateleiras), Convert.ToDecimal(estante.LarguraPrateleiras), Convert.ToDecimal(estante.AlturaPrateleiras), items));
                });
            });
            //=====================================================

            var itemsToPack = new List <OnlineContainerPacking.Models.Item>();

            itemsToPack.Add(novoItem);

            OnlineContainerPacking.PackingService.OnlinePack(containers, itemsToPack);

            ItemEstoque novoItemEstoque = null;

            if (novoItem.IsPacked)
            {
                //Parallel.ForEach(itemsToPack.Where(i => i.IsPacked).ToList(), i =>
                //{
                if (ItemEstoqueId == null)
                {
                    var itemEstoque = new ItemEstoque()
                    {
                        ItemBaseId        = novoItem.ItemBaseId,
                        PrateleiraId      = novoItem.ContainerId,
                        PackX             = Convert.ToDouble(novoItem.CoordX),
                        PackY             = Convert.ToDouble(novoItem.CoordY),
                        PackZ             = Convert.ToDouble(novoItem.CoordZ),
                        TipoItemEstoqueId = novoItem.TipoDeItemId,
                        DataHora          = DateTime.Now,
                        UsuarioId         = null,
                        Ativo             = true
                    };

                    itemEstoqueCore.Inserir(itemEstoque);

                    novoItemEstoque = itemEstoque;
                }
                else
                {
                    var itemEstoque = itemEstoqueCore.RetornarPorId(ItemEstoqueId ?? -1);

                    itemEstoque.ItemBaseId        = novoItem.ItemBaseId;
                    itemEstoque.PrateleiraId      = novoItem.ContainerId;
                    itemEstoque.PackX             = Convert.ToDouble(novoItem.CoordX);
                    itemEstoque.PackY             = Convert.ToDouble(novoItem.CoordY);
                    itemEstoque.PackZ             = Convert.ToDouble(novoItem.CoordZ);
                    itemEstoque.TipoItemEstoqueId = novoItem.TipoDeItemId;
                    itemEstoque.DataHora          = DateTime.Now;
                    itemEstoque.UsuarioId         = null;
                    itemEstoque.Ativo             = true;

                    itemEstoqueCore.Alterar(itemEstoque);

                    novoItemEstoque = itemEstoque;
                }
                //});
            }

            var response = new
            {
                NovoItemId   = novoItemEstoque == null ? -1 : novoItemEstoque.Id,
                PrateleiraId = novoItemEstoque == null ? -1 : novoItemEstoque.PrateleiraId
            };

            return(Json(response));
        }
Esempio n. 12
0
        public JsonResult EditarEstante(string JsonEstante)
        {
            var definition = new
            {
                Id               = new int(),
                QtdPrateleiras   = new int(),
                LarguraPrat      = "",
                AlturaPrat       = "",
                ProfundidadePrat = "",
                PesoMaximoPrat   = "",
            };

            var jsonEstante = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(JsonEstante, definition);

            var core = new EstanteCore();

            var estante = core.RetornarPorId(jsonEstante.Id);

            var larguraAnterior               = estante.LarguraPrateleiras;
            var profundidadeAnterior          = estante.ProfundidadePrateleiras;
            var quantidadePrateleirasAnterior = estante.QuantidadePrateleiras;

            estante.QuantidadePrateleiras   = jsonEstante.QtdPrateleiras;
            estante.LarguraPrateleiras      = Convert.ToDouble(jsonEstante.LarguraPrat.Replace(',', '.'), CultureInfo.GetCultureInfo("en-US"));
            estante.AlturaPrateleiras       = Convert.ToDouble(jsonEstante.AlturaPrat.Replace(',', '.'), CultureInfo.GetCultureInfo("en-US"));
            estante.ProfundidadePrateleiras = Convert.ToDouble(jsonEstante.ProfundidadePrat.Replace(',', '.'), CultureInfo.GetCultureInfo("en-US"));
            estante.PesoMaximoPrateleiras   = Convert.ToDouble(jsonEstante.PesoMaximoPrat.Replace(',', '.'), CultureInfo.GetCultureInfo("en-US"));
            estante.UsuarioId = null;
            estante.Ativo     = true;

            core.Alterar(estante);

            if (estante.PoligonoId != null)
            {
                var poligonoCore = new PoligonoCore();

                var poligono = poligonoCore.RetornarPorId(estante.PoligonoId ?? 0);

                poligono.Geojson = GerarGeoJsonEstanteAtualizado(poligono.Geojson, larguraAnterior ?? 0, estante.LarguraPrateleiras ?? 0, profundidadeAnterior ?? 0, estante.ProfundidadePrateleiras ?? 0);

                poligonoCore.Alterar(poligono);
            }

            if (quantidadePrateleirasAnterior != estante.QuantidadePrateleiras)
            {
                var prateleiraCore = new PrateleiraCore();

                if (estante.QuantidadePrateleiras > quantidadePrateleirasAnterior)
                {
                    for (var i = (quantidadePrateleirasAnterior ?? 0) + 1; i <= estante.QuantidadePrateleiras; i++)
                    {
                        var prateleira = new Prateleira
                        {
                            Nivel     = i,
                            EstanteId = estante.Id
                        };

                        prateleiraCore.Inserir(prateleira);
                    }
                }
                else
                {
                    var itemEstoqueCore = new ItemEstoqueCore();

                    var prateleirasRemover = prateleiraCore.RetornarPorEstanteId(estante.Id).Where(pra => pra.Nivel > estante.QuantidadePrateleiras).ToList();

                    prateleirasRemover.ForEach(pra =>
                    {
                        var itens = itemEstoqueCore.RetornarPorPrateleiraId(pra.Id);

                        itens.ForEach(ite =>
                        {
                            ite.PrateleiraId = null;
                            itemEstoqueCore.Alterar(ite);
                        });

                        prateleiraCore.Deletar(pra);
                    });
                }
            }

            return(Json("", JsonRequestBehavior.AllowGet));
        }