Beispiel #1
0
        /// <summary>
        /// Preenche os dados da peças do plano de corte.
        /// </summary>
        /// <param name="planoCorte">Plano de corte que será preenchido.</param>
        /// <param name="etiquetaPlanoCorte">Etiqueta o plano de corte que será usado como referência.</param>
        private void PreencherPecasPlanoCorte(Entidades.PlanoCorte planoCorte, eCutter.EtiquetaPlanoCorte etiquetaPlanoCorte)
        {
            var processadas = new List <Entidades.PecaPlanoCorte>();

            // os números das etiquetas do produto pedido pe
            var numerosEtiqueta = etiquetaPlanoCorte.Etiquetas.OfType <eCutter.EtiquetaPeca>()
                                  .Select(f => f.Notas?.Trim())
                                  .Where(f => !string.IsNullOrWhiteSpace(f) && f.Contains(".") && f.Contains("/") && f.Contains("-"))
                                  .Distinct();

            var index      = 0;
            var parametros = numerosEtiqueta
                             .Select(f => new Colosoft.Query.QueryParameter($"?p{index++}", f))
                             .ToList();

            var etiquetasProdutoPedidoProducao = SourceContext.Instance.CreateQuery()
                                                 .From <Data.Model.ProdutoPedidoProducao>()
                                                 .Where($"NumEtiqueta IN ({string.Join(",", parametros.Select(f => f.Name))})")
                                                 .Add(parametros)
                                                 .Select("NumEtiqueta, IdProdPedProducao")
                                                 .Execute()
                                                 .Select(f => new
            {
                Etiqueta          = f.GetString(0),
                IdProdPedProducao = f.GetInt32(1),
            })
                                                 .ToList();

            foreach (var etiqueta in etiquetaPlanoCorte.Etiquetas.OfType <eCutter.EtiquetaPeca>())
            {
                var produtoPedidoProducao = etiquetasProdutoPedidoProducao.FirstOrDefault(f => f.Etiqueta == etiqueta.Notas?.Trim());
                if (produtoPedidoProducao == null)
                {
                    continue;
                }

                var peca = planoCorte.Pecas.FirstOrDefault(f => f.IdProdPedProducao == produtoPedidoProducao.IdProdPedProducao);
                if (peca == null)
                {
                    peca = SourceContext.Instance.Create <Entidades.PecaPlanoCorte>();
                    peca.IdProdPedProducao = produtoPedidoProducao.IdProdPedProducao;
                    planoCorte.Pecas.Add(peca);
                }

                peca.Rotacionada  = etiqueta.Rotacionada;
                peca.PosicaoGeral = etiqueta.PosicaoPeca;
                peca.Posicao      = etiqueta.Posicao;
                peca.Forma        = etiqueta.Forma;

                processadas.Add(peca);
            }

            var apagadas = planoCorte.Pecas.Where(f => !processadas.Contains(f)).ToArray();

            foreach (var peca in apagadas)
            {
                planoCorte.Pecas.Remove(peca);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Preenche os dados dos retalhos do plano de corte.
        /// </summary>
        /// <param name="planoCorte">Plano de corte que será preenchido.</param>
        /// <param name="etiquetaPlanoCorte">Etiqueta do plano de corte.</param>
        private void PreencherRetalhosPlanoCorte(Entidades.PlanoCorte planoCorte, eCutter.EtiquetaPlanoCorte etiquetaPlanoCorte)
        {
            var processados = new List <Entidades.RetalhoPlanoCorte>();

            foreach (var etiqueta in etiquetaPlanoCorte.Etiquetas.OfType <eCutter.EtiquetaRetalho>().Where(f => f.Reaproveitavel))
            {
                var retalho = planoCorte.Retalhos.FirstOrDefault(f => f.Posicao == etiqueta.Posicao);
                if (retalho == null)
                {
                    retalho         = SourceContext.Instance.Create <Entidades.RetalhoPlanoCorte>();
                    retalho.Posicao = etiqueta.Posicao;
                    planoCorte.Retalhos.Add(retalho);
                }

                retalho.Posicao        = etiqueta.Posicao;
                retalho.Largura        = etiqueta.Largura;
                retalho.Altura         = etiqueta.Altura;
                retalho.Reaproveitavel = etiqueta.Reaproveitavel;

                if (this.CriarRetalhosProducao)
                {
                    var produto = this.ObterProduto(retalho);

                    var retalhoProducao = new Data.Model.RetalhoProducao
                    {
                        IdRetalhoProducao = retalho.TypeManager.GenerateInstanceUid(typeof(Data.Model.RetalhoProducao)),
                        DataCad           = DateTime.Now,
                        IdProd            = produto.IdProd,
                        Situacao          = Data.Model.SituacaoRetalhoProducao.Indisponivel,
                        UsuCad            = Data.Helper.UserInfo.GetUserInfo?.CodUser ?? 0,
                    };

                    this._retalhosProducao.Add(retalhoProducao);
                    retalho.IdRetalhoProducao = retalhoProducao.IdRetalhoProducao;
                }

                processados.Add(retalho);
            }

            var apagados = planoCorte.Retalhos.Where(f => !processados.Contains(f)).ToArray();

            foreach (var retalho in apagados)
            {
                planoCorte.Retalhos.Remove(retalho);
            }
        }