Subversion Repositories Integrator Subversion

Rev

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