Subversion Repositories Integrator Subversion

Rev

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