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)); }
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); }
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); }
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); }
public void RemoverReferenciaEstante(int EstanteId) { var estante = new EstanteCore().RetornarPorId(EstanteId); estante.PoligonoId = null; new EstanteCore().Alterar(estante); }
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); }
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)); }
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); }
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)); }
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")); } }
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)); }
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)); }