Subversion Repositories Integrator Subversion

Rev

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