Subversion Repositories Integrator Subversion

Rev

Rev 299 | Rev 303 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
265 espaco 1
package br.com.ec.domain.service.impl;
2
 
302 espaco 3
import java.util.ArrayList;
265 espaco 4
import java.util.List;
5
 
299 espaco 6
import org.primefaces.event.FlowEvent;
265 espaco 7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.stereotype.Service;
9
 
299 espaco 10
import br.com.ec.core.exception.NegocioException;
265 espaco 11
import br.com.ec.core.generic.AbstractService;
12
import br.com.ec.core.generic.GenericRepository;
299 espaco 13
import br.com.ec.core.util.VerificadorUtil;
265 espaco 14
import br.com.ec.core.validador.Validador;
15
import br.com.ec.domain.dto.PessoaDTO;
302 espaco 16
import br.com.ec.domain.model.Endereco;
265 espaco 17
import br.com.ec.domain.model.Pessoa;
18
import br.com.ec.domain.service.FuncionarioService;
19
import br.com.ec.domain.service.PessoaService;
20
import br.com.ec.repository.PessoaRepository;
21
 
22
@Service
23
public class PessoaServiceImpl extends AbstractService<Pessoa> implements PessoaService {
24
 
25
        private FuncionarioService funcionarioService;
26
        private PessoaRepository pessoaRepository;
27
 
28
        @Autowired
29
        public PessoaServiceImpl(Validador validador, PessoaRepository pessoaRepository, FuncionarioService funcionarioService) {
30
                super(validador);
31
                this.pessoaRepository = pessoaRepository;
32
                this.funcionarioService = funcionarioService;
33
        }
34
 
35
        @Override
36
        protected GenericRepository<Pessoa> getRepository() {
37
                return pessoaRepository;
38
        }
39
 
40
        @Override
41
        protected void regrasNegocioCadastrar(Pessoa pessoa) {
299 espaco 42
                if (VerificadorUtil.estaNulo(pessoa.getCadastroFinalizado())) {
43
                        pessoa.setCadastroFinalizado(true);
44
                }
265 espaco 45
                pessoa.setAtivo(true);
46
        }
47
 
48
        @Override
49
        public List<PessoaDTO> consultarPessoasJuridicas(String cnpj) {
50
                return pessoaRepository.consultarPessoasJuridicas(cnpj);
51
        }
52
 
53
        @Override
299 espaco 54
        public Pessoa consultarPessoaPorCpfOuCpnj(String cpfCnpj) {
55
                return pessoaRepository.consultarPessoaPorCpfOuCpnj(cpfCnpj);
265 espaco 56
        }
57
 
58
        @Override
302 espaco 59
        public Pessoa cadastroExterno(FlowEvent evento, Pessoa pessoa, Endereco endereco) {
299 espaco 60
                if (VerificadorUtil.estaNulo(evento)) {
61
                        Pessoa pessoaConsultada = consultarPessoaPorCpfOuCpnj(pessoa.getCpfCnpj());
62
                        if (VerificadorUtil.estaNulo(pessoaConsultada)) {
63
                                pessoa.setCadastroFinalizado(false);
64
                                pessoa.setOptantePeloFGTS(true);
65
                                this.cadastrar(pessoa);
66
                                return pessoa;
67
                        }
68
                        if (pessoaConsultada.getCadastroFinalizado()) {
69
                                throw new NegocioException("CADASTRO INDISPONÍVEL");
70
                        }
71
                        return pessoaConsultada;
72
                }
302 espaco 73
                if (VerificadorUtil.naoEstaNulo(endereco)) {
74
                        if (VerificadorUtil.naoEstaNuloOuVazio(endereco.getCep())) {
75
                                pessoa.atualizarEndereco(endereco);
76
                        }
77
                }
299 espaco 78
                this.alterar(pessoa);
302 espaco 79
                return detalharPessoa(pessoa.getSequencial());
299 espaco 80
        }
81
 
82
        @Override
83
        public Pessoa detalharPessoa(Long sequencialPessoa) {
84
                return pessoaRepository.detalharPessoa(sequencialPessoa);
85
        }
86
        /*
87
 
88
        @Override
265 espaco 89
        public List<Pessoa> consultarPessoasJuridicas() {
90
                return pessoaRepository.consultarPessoasJuridicas();
91
        }
92
 
93
        @Override
94
        public byte[] emitirFichaColaboradorEsocial(ServletContext contexto, Pessoa pessoa) {
95
                return replaceTextosArquivos("/arquivos/modelos/modelo_formulario_esocial.doc", contexto, pessoa);
96
        }
97
 
98
        @Override
99
        public byte[] emitirTermoAdmissional(ServletContext contexto, Pessoa pessoa) {
100
                return replaceTextosArquivos("/arquivos/modelos/modelo_exame_admissional.docx", contexto, pessoa);
101
        }
102
 
103
        @Override
104
        public byte[] emitirTermoDemissional(ServletContext contexto, Pessoa pessoa) {
105
                return replaceTextosArquivos("/arquivos/modelos/modelo_exame_demissional.docx", contexto, pessoa);
106
        }
107
 
108
        @SuppressWarnings("resource")
109
        private byte[] replaceTextosArquivos(String caminhoArquivo, ServletContext contexto, Pessoa pessoa) {
110
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
111
                XWPFDocument doc;
112
        try {
113
                Funcionario funcionario = funcionarioService.consultarFuncionarioPorPessoa(pessoa);
114
                        doc = new XWPFDocument(OPCPackage.open(contexto.getResourceAsStream(caminhoArquivo)));
115
                        for (XWPFParagraph paragrafo : doc.getParagraphs()) {
116
                                replaceParagrafo(pessoa, funcionario, paragrafo);
117
                        }
118
                        for (XWPFTable tbl : doc.getTables()) {
119
                                for (XWPFTableRow row : tbl.getRows()) {
120
                                        for (XWPFTableCell cell : row.getTableCells()) {
121
                                                for (XWPFParagraph p : cell.getParagraphs()) {
122
                                                        replaceParagrafo(pessoa, funcionario, p);
123
                                                }
124
                                        }
125
                                }
126
                        }
127
                doc.write(baos);
128
                return baos.toByteArray();
129
                } catch (Exception e) {
130
                        e.printStackTrace();
131
                }
132
        return null;
133
        }
134
 
135
        private void replaceParagrafo(Pessoa pessoa, Funcionario funcionario, XWPFParagraph paragrafo) {
136
                String textoParagrafo = "";
137
                Integer posicao = 0;
138
                for (XWPFRun r : paragrafo.getRuns()) {
139
                        if (VerificadorUtil.naoEstaNuloOuVazio(r.text())) {
140
                                textoParagrafo = textoParagrafo + r.text();
141
                        }
142
                        posicao++;
143
                }
144
                posicao = 0;
145
                if (textoParagrafo.contains("#")) {
146
                        for (XWPFRun r : paragrafo.getRuns()) {
147
                                if (posicao == 0) {
148
                                        r.setText(replaceTextos(textoParagrafo, pessoa, funcionario), 0);
149
                                } else {
150
                                        r.setText("", 0);
151
                                }
152
                                posicao++;
153
                        }
154
                }
155
        }
156
 
157
        private String replaceTextos(String texto, Pessoa pessoa, Funcionario funcionario) {
158
                texto = replaceTexto(texto, "#NOME", pessoa.getNome());
159
                texto = replaceTexto(texto, "#CPF", pessoa.getCpfCnpjFormatado());
160
                texto = replaceTexto(texto, "#RG_NUMERO", pessoa.getRg());
161
                texto = replaceTexto(texto, "#RG_DATAEXPEDICAO", pessoa.getRgDataExpedicaoFormatada());
162
                texto = replaceTexto(texto, "#RG_ORGAOEMISSOR", pessoa.getRgOrgaoEmissor());
163
                texto = replaceTexto(texto, "#NACIONALIDADE", pessoa.getNacionalidade());
164
                texto = replaceTexto(texto, "#PAI_NOME", pessoa.getNomePai());
165
                texto = replaceTexto(texto, "#MAE_NOME", pessoa.getNomeMae());
166
                texto = replaceTexto(texto, "#NASCIMENTO_DATA", pessoa.getDataNascimentoFormatada());
167
                texto = replaceTexto(texto, "#NASCIMENTO_LOCAL", pessoa.getLocalNascimento());
168
                texto = replaceTexto(texto, "#NASCIMENTO_UF", pessoa.getUfNascimento());
169
                texto = replaceTexto(texto, "#EMAIL", pessoa.getEmail());
170
                texto = replaceTexto(texto, "#TELEFONE", pessoa.getTelefone());
171
 
172
                for (TipoEstadoCivil estadoCivil : TipoEstadoCivil.values()) {
173
                        texto = replaceTexto(texto, "#ESTADOCIVIL[" + estadoCivil.getValor() + "]", VerificadorUtil.naoEstaNulo(pessoa.getTipoEstadoCivil())?
174
                                        pessoa.getTipoEstadoCivil().equals(estadoCivil.getValor())? "X" : " " : " ");
175
                }
176
 
177
                for (TipoSexo sexo : TipoSexo.values()) {
178
                        texto = replaceTexto(texto, "#SEXO[" + sexo.getValor() + "]", VerificadorUtil.naoEstaNulo(pessoa.getSexo())?
179
                                        pessoa.getSexo().equals(sexo.getValor())? "X" : " " : " ");
180
                }
181
 
182
                for (TipoRacaCor racaCor : TipoRacaCor.values()) {
183
                        texto = replaceTexto(texto, "#RACA_" + racaCor.getValor(), VerificadorUtil.naoEstaNulo(pessoa.getTipoRacaCor())?
184
                                        pessoa.getTipoRacaCor().equals(racaCor.getValor())? "X" : " " : " ");
185
                }
186
 
187
                for (TipoEscolaridade escolaridade : TipoEscolaridade.values()) {
188
                        texto = replaceTexto(texto, "#ESCOLARIDADE[" + escolaridade.getValor() + "]", VerificadorUtil.naoEstaNulo(pessoa.getTipoEscolaridade())?
189
                                        pessoa.getTipoEscolaridade().equals(escolaridade.getValor())? "X" : " " : " ");
190
                }
191
 
192
                if (VerificadorUtil.naoEstaNulo(pessoa.getEnderecoPrincipal())) {
193
                        texto = replaceTexto(texto, "#ENDERECO_LOGRADOURO", pessoa.getEnderecoPrincipal().getLogradouro());
194
                        texto = replaceTexto(texto, "#ENDERECO_NUMERO", pessoa.getEnderecoPrincipal().getNumero());
195
                        texto = replaceTexto(texto, "#ENDERECO_BAIRRO", pessoa.getEnderecoPrincipal().getBairro());
196
                        texto = replaceTexto(texto, "#ENDERECO_COMPLEMENTO", pessoa.getEnderecoPrincipal().getComplemento());
197
                        texto = replaceTexto(texto, "#ENDERECO_CIDADE", pessoa.getEnderecoPrincipal().getMunicipio());
198
                        texto = replaceTexto(texto, "#ENDERECO_CEP", pessoa.getEnderecoPrincipal().getCepFormatado());
199
                        texto = replaceTexto(texto, "#ENDERECO_PAIS", "BRASIL");
200
                        texto = replaceTexto(texto, "#ENDERECO_PROPRIA", VerificadorUtil.naoEstaNulo(pessoa.getEnderecoPrincipal().getIndicadorPropria())?
201
                                        pessoa.getEnderecoPrincipal().getIndicadorPropria()? "X" : " " : " ");
202
                        texto = replaceTexto(texto, "#ENDERECO_NAOPROPRIA", VerificadorUtil.naoEstaNulo(pessoa.getEnderecoPrincipal().getIndicadorPropria())?
203
                                        !pessoa.getEnderecoPrincipal().getIndicadorPropria()? "X" : " " : " ");
204
                        texto = replaceTexto(texto, "#ENDERECO_COM_FGTS", VerificadorUtil.naoEstaNulo(pessoa.getEnderecoPrincipal().getIndicadorUsoFgts())?
205
                                        !pessoa.getEnderecoPrincipal().getIndicadorUsoFgts()? "X" : " " : " ");
206
                        texto = replaceTexto(texto, "#ENDERECO_SEM_FGTS", VerificadorUtil.naoEstaNulo(pessoa.getEnderecoPrincipal().getIndicadorUsoFgts())?
207
                                        !pessoa.getEnderecoPrincipal().getIndicadorUsoFgts()? "X" : " " : " ");
208
                }
209
 
210
                if (VerificadorUtil.naoEstaNulo(funcionario)) {
211
                        texto = replaceTexto(texto, "#PIS", funcionario.getPis());
212
                        texto = replaceTexto(texto, "#CTPS_NUMERO", funcionario.getCtps());
213
                        texto = replaceTexto(texto, "#CTPS_SERIE", funcionario.getCtpsSerie());
214
                        texto = replaceTexto(texto, "#CTPS_UF", funcionario.getCtpsUf());
215
                }
216
                return texto;
217
        }
218
 
219
        private String replaceTexto(String texto, String codigo, String campo) {
220
                if (texto != null && texto.contains(codigo)) {
221
                        if (VerificadorUtil.naoEstaNulo(campo)) {
222
                                return texto.replace(codigo, campo);
223
                        } else {
224
                                return texto.replace(codigo, " ");
225
                        }
226
        }
227
                return texto;
228
        }
229
        */
230
}