示例#1
0
        public JsonResult DeletarItem(int ItemEstoqueId)
        {
            var core = new ItemEstoqueCore();

            var ItemEstoque = core.RetornarPorId(ItemEstoqueId);

            core.Deletar(ItemEstoque);

            return(Json("", JsonRequestBehavior.AllowGet));
        }
示例#2
0
        public JsonResult RetirarItem(int TipoItemEstoqueId)
        {
            var itemEstoqueCore = new ItemEstoqueCore();

            var itemEstoque  = itemEstoqueCore.RetornarUltimoAssociadoPorTipoId(TipoItemEstoqueId);
            var prateleiraId = itemEstoque.PrateleiraId;

            //itemEstoque.PrateleiraId = null;
            //itemEstoqueCore.Alterar(itemEstoque);

            itemEstoqueCore.Deletar(itemEstoque);

            var response = new
            {
                ItemId       = itemEstoque.Id,
                PrateleiraId = prateleiraId ?? -1
            };

            return(Json(response));
        }
示例#3
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));
        }
示例#4
0
        public JsonResult RetornarNaoEstocados()
        {
            var itensDeEstoque = new ItemEstoqueCore().RetornarNaoEstocados();

            var response = itensDeEstoque.GroupBy(ite => ite.TipoItemEstoqueId).Select(ite => ite.First()).Select(ite => new {
                Id = ite.Id,
                TipoItemEstoqueId = ite.TipoItemEstoqueId,
                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             = itensDeEstoque.Where(ite2 => ite2.TipoItemEstoqueId == ite.TipoItemEstoqueId).Count(),
            });

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

            return_json.MaxJsonLength = int.MaxValue;
            return(return_json);
        }
示例#5
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"));
            }
        }
示例#6
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));
        }
示例#7
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));
        }