Subversion Repositories Integrator Subversion

Rev

Rev 318 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
106 espaco 1
package br.com.ec.domain.service.pessoa.impl;
2
 
3
import java.io.ByteArrayOutputStream;
4
import java.util.List;
5
 
6
import javax.servlet.ServletContext;
7
 
8
import org.apache.poi.openxml4j.opc.OPCPackage;
9
import org.apache.poi.xwpf.usermodel.XWPFDocument;
10
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
11
import org.apache.poi.xwpf.usermodel.XWPFRun;
12
import org.apache.poi.xwpf.usermodel.XWPFTable;
13
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
14
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
15
import org.springframework.beans.factory.annotation.Autowired;
16
import org.springframework.stereotype.Service;
17
 
195 espaco 18
import br.com.ec.core.generic.AbstractService;
19
import br.com.ec.core.generic.GenericRepository;
20
import br.com.ec.core.util.VerificadorUtil;
21
import br.com.ec.core.validador.Validador;
106 espaco 22
import br.com.ec.domain.model.Funcionario;
23
import br.com.ec.domain.model.Pessoa;
304 espaco 24
import br.com.ec.domain.model.tipos.TipoDependentes;
106 espaco 25
import br.com.ec.domain.model.tipos.TipoEscolaridade;
26
import br.com.ec.domain.model.tipos.TipoEstadoCivil;
27
import br.com.ec.domain.model.tipos.TipoRacaCor;
28
import br.com.ec.domain.model.tipos.TipoSexo;
29
import br.com.ec.domain.service.funcionario.FuncionarioService;
30
import br.com.ec.domain.service.pessoa.PessoaService;
31
import br.com.ec.infrastructure.repository.PessoaRepository;
32
 
33
@Service
34
public class PessoaServiceImpl extends AbstractService<Pessoa> implements PessoaService {
35
 
36
        private FuncionarioService funcionarioService;
37
        private PessoaRepository pessoaRepository;
38
 
39
        @Autowired
40
        public PessoaServiceImpl(Validador validador, PessoaRepository pessoaRepository, FuncionarioService funcionarioService) {
41
                super(validador);
42
                this.pessoaRepository = pessoaRepository;
43
                this.funcionarioService = funcionarioService;
44
        }
45
 
46
        @Override
47
        protected GenericRepository<Pessoa> getRepository() {
48
                return pessoaRepository;
49
        }
50
 
51
        @Override
52
        protected void regrasNegocioCadastrar(Pessoa pessoa) {
304 espaco 53
                pessoa.setCadastroFinalizado(true);
106 espaco 54
                pessoa.setAtivo(true);
55
        }
170 espaco 56
 
106 espaco 57
        @Override
58
        public Pessoa detalharPessoa(Pessoa pessoa) {
59
                return pessoaRepository.detalharPessoa(pessoa);
60
        }
61
 
62
        @Override
63
        public List<Pessoa> consultarPessoasJuridicas() {
64
                return pessoaRepository.consultarPessoasJuridicas();
65
        }
66
 
67
        @Override
68
        public byte[] emitirFichaColaboradorEsocial(ServletContext contexto, Pessoa pessoa) {
324 espaco 69
                Pessoa pessoaConsultado = pessoaRepository.detalharPessoa(pessoa);
70
                return replaceTextosArquivos("/arquivos/modelos/modelo_formulario_esocial.doc", contexto, pessoaConsultado);
106 espaco 71
        }
72
 
73
        @Override
324 espaco 74
        public byte[] emitirSolicitacaoExameAdmissional(ServletContext contexto, Pessoa pessoa) {
75
                Pessoa pessoaConsultado = pessoaRepository.detalharPessoa(pessoa);
76
                return replaceTextosArquivos("/arquivos/modelos/modelo_exame_admissional.docx", contexto, pessoaConsultado);
106 espaco 77
        }
78
 
79
        @Override
324 espaco 80
        public byte[] emitirSolicitacaoExameDemissional(ServletContext contexto, Pessoa pessoa) {
81
                Pessoa pessoaConsultado = pessoaRepository.detalharPessoa(pessoa);
82
                return replaceTextosArquivos("/arquivos/modelos/modelo_exame_demissional.docx", contexto, pessoaConsultado);
106 espaco 83
        }
84
 
324 espaco 85
        @Override
86
        public byte[] emitirSolicitacaoExamePeriodico(ServletContext contexto, Pessoa pessoa) {
87
                Pessoa pessoaConsultado = pessoaRepository.detalharPessoa(pessoa);
88
                return replaceTextosArquivos("/arquivos/modelos/modelo_exame_periodico.docx", contexto, pessoaConsultado);
89
        }
90
 
91
        @Override
92
        public byte[] emitirSolicitacaoAberturaContaBancaria(ServletContext contexto, Pessoa pessoa) {
93
                Pessoa pessoaConsultado = pessoaRepository.detalharPessoa(pessoa);
94
                return replaceTextosArquivos("/arquivos/modelos/modelo_abertura_conta.docx", contexto, pessoaConsultado);
95
        }
96
 
97
        @Override
98
        public byte[] emitirAdesaoValeTransporte(ServletContext contexto, Pessoa pessoa) {
99
                Pessoa pessoaConsultado = pessoaRepository.detalharPessoa(pessoa);
100
                return replaceTextosArquivos("/arquivos/modelos/modelo_adesao_vale_transporte.docx", contexto, pessoaConsultado);
101
        }
102
 
106 espaco 103
        @SuppressWarnings("resource")
104
        private byte[] replaceTextosArquivos(String caminhoArquivo, ServletContext contexto, Pessoa pessoa) {
105
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
106
                XWPFDocument doc;
107
        try {
108
                Funcionario funcionario = funcionarioService.consultarFuncionarioPorPessoa(pessoa);
109
                        doc = new XWPFDocument(OPCPackage.open(contexto.getResourceAsStream(caminhoArquivo)));
110
                        for (XWPFParagraph paragrafo : doc.getParagraphs()) {
111
                                replaceParagrafo(pessoa, funcionario, paragrafo);
112
                        }
113
                        for (XWPFTable tbl : doc.getTables()) {
114
                                for (XWPFTableRow row : tbl.getRows()) {
115
                                        for (XWPFTableCell cell : row.getTableCells()) {
116
                                                for (XWPFParagraph p : cell.getParagraphs()) {
117
                                                        replaceParagrafo(pessoa, funcionario, p);
118
                                                }
119
                                        }
120
                                }
121
                        }
122
                doc.write(baos);
123
                return baos.toByteArray();
124
                } catch (Exception e) {
125
                        e.printStackTrace();
126
                }
127
        return null;
128
        }
129
 
130
        private void replaceParagrafo(Pessoa pessoa, Funcionario funcionario, XWPFParagraph paragrafo) {
131
                String textoParagrafo = "";
132
                Integer posicao = 0;
133
                for (XWPFRun r : paragrafo.getRuns()) {
134
                        if (VerificadorUtil.naoEstaNuloOuVazio(r.text())) {
135
                                textoParagrafo = textoParagrafo + r.text();
136
                        }
137
                        posicao++;
138
                }
139
                posicao = 0;
140
                if (textoParagrafo.contains("#")) {
141
                        for (XWPFRun r : paragrafo.getRuns()) {
142
                                if (posicao == 0) {
143
                                        r.setText(replaceTextos(textoParagrafo, pessoa, funcionario), 0);
144
                                } else {
145
                                        r.setText("", 0);
146
                                }
147
                                posicao++;
148
                        }
149
                }
150
        }
151
 
324 espaco 152
 
153
        private String replaceTexto(String texto, String codigo, String campo) {
154
                if (texto != null && texto.contains(codigo)) {
155
                        if (VerificadorUtil.naoEstaNulo(campo)) {
156
                                return texto.replace(codigo, campo);
157
                        } else {
158
                                return texto.replace(codigo, " ");
159
                        }
160
        }
161
                return texto;
162
        }
163
 
106 espaco 164
        private String replaceTextos(String texto, Pessoa pessoa, Funcionario funcionario) {
165
                texto = replaceTexto(texto, "#NOME", pessoa.getNome());
166
                texto = replaceTexto(texto, "#CPF", pessoa.getCpfCnpjFormatado());
167
                texto = replaceTexto(texto, "#RG_NUMERO", pessoa.getRg());
168
                texto = replaceTexto(texto, "#RG_DATAEXPEDICAO", pessoa.getRgDataExpedicaoFormatada());
169
                texto = replaceTexto(texto, "#RG_ORGAOEMISSOR", pessoa.getRgOrgaoEmissor());
170
                texto = replaceTexto(texto, "#NACIONALIDADE", pessoa.getNacionalidade());
171
                texto = replaceTexto(texto, "#PAI_NOME", pessoa.getNomePai());
172
                texto = replaceTexto(texto, "#MAE_NOME", pessoa.getNomeMae());
173
                texto = replaceTexto(texto, "#NASCIMENTO_DATA", pessoa.getDataNascimentoFormatada());
174
                texto = replaceTexto(texto, "#NASCIMENTO_LOCAL", pessoa.getLocalNascimento());
175
                texto = replaceTexto(texto, "#NASCIMENTO_UF", pessoa.getUfNascimento());
176
                texto = replaceTexto(texto, "#EMAIL", pessoa.getEmail());
177
                texto = replaceTexto(texto, "#TELEFONE", pessoa.getTelefone());
178
 
324 espaco 179
                texto = replaceTexto(texto, "#DEFICIENCIA_MOTORA_SIM", VerificadorUtil.naoEstaNulo(pessoa.getPessoaDeficienteMotora())? pessoa.getPessoaDeficienteMotora()? "X" : " " : " ");
180
                texto = replaceTexto(texto, "#DEFICIENCIA_MOTORA_NAO", VerificadorUtil.naoEstaNulo(pessoa.getPessoaDeficienteMotora())? !pessoa.getPessoaDeficienteMotora()? "X" : " " : " ");
304 espaco 181
 
324 espaco 182
                texto = replaceTexto(texto, "#DEFICIENCIA_VISUAL_SIM", VerificadorUtil.naoEstaNulo(pessoa.getPessoaDeficienteVisual())? pessoa.getPessoaDeficienteVisual()? "X" : " " : " ");
183
                texto = replaceTexto(texto, "#DEFICIENCIA_VISUAL_NAO", VerificadorUtil.naoEstaNulo(pessoa.getPessoaDeficienteVisual())? !pessoa.getPessoaDeficienteVisual()? "X" : " " : " ");
304 espaco 184
 
324 espaco 185
                texto = replaceTexto(texto, "#DEFICIENCIA_AUDITIVA_SIM", VerificadorUtil.naoEstaNulo(pessoa.getPessoaDeficienteAuditiva())? pessoa.getPessoaDeficienteAuditiva()? "X" : " " : " ");
186
                texto = replaceTexto(texto, "#DEFICIENCIA_AUDITIVA_NAO", VerificadorUtil.naoEstaNulo(pessoa.getPessoaDeficienteAuditiva())? !pessoa.getPessoaDeficienteAuditiva()? "X" : " " : " ");
304 espaco 187
 
324 espaco 188
                texto = replaceTexto(texto, "#REABILITADO_SIM", VerificadorUtil.naoEstaNulo(pessoa.getPessoaReabilitado())? pessoa.getPessoaReabilitado()? "X" : " " : " ");
189
                texto = replaceTexto(texto, "#REABILITADO_NAO", VerificadorUtil.naoEstaNulo(pessoa.getPessoaReabilitado())? !pessoa.getPessoaReabilitado()? "X" : " " : " ");
304 espaco 190
 
191
                texto = replaceTexto(texto, "#DEFICIENCIA_OBSERVACOES", pessoa.getPessoaDeficienteObservacao());
192
                texto = replaceTexto(texto, "#DEPENDENTES_DADOS", pessoa.getDadosDependentes());
193
 
324 espaco 194
                texto = replaceTexto(texto, "#DEPENDENTES_IRRF_SIM", VerificadorUtil.naoEstaNulo(pessoa.getDependentesFinsIRRF())? pessoa.getDependentesFinsIRRF()? "X" : " " : " ");
195
                texto = replaceTexto(texto, "#DEPENDENTES_IRRF_NAO", VerificadorUtil.naoEstaNulo(pessoa.getDependentesFinsIRRF())? !pessoa.getDependentesFinsIRRF()? "X" : " " : " ");
304 espaco 196
 
324 espaco 197
                texto = replaceTexto(texto, "#DEPENDENTES_SAL_FAMILIA_SIM", VerificadorUtil.naoEstaNulo(pessoa.getDependentesFinsSalarioFamilia())? pessoa.getDependentesFinsSalarioFamilia()? "X" : " " : " ");
198
                texto = replaceTexto(texto, "#DEPENDENTES_SAL_FAMILIA_NAO", VerificadorUtil.naoEstaNulo(pessoa.getDependentesFinsSalarioFamilia())? !pessoa.getDependentesFinsSalarioFamilia()? "X" : " " : " ");
304 espaco 199
 
106 espaco 200
                for (TipoEstadoCivil estadoCivil : TipoEstadoCivil.values()) {
201
                        texto = replaceTexto(texto, "#ESTADOCIVIL[" + estadoCivil.getValor() + "]", VerificadorUtil.naoEstaNulo(pessoa.getTipoEstadoCivil())?
202
                                        pessoa.getTipoEstadoCivil().equals(estadoCivil.getValor())? "X" : " " : " ");
203
                }
204
 
205
                for (TipoSexo sexo : TipoSexo.values()) {
206
                        texto = replaceTexto(texto, "#SEXO[" + sexo.getValor() + "]", VerificadorUtil.naoEstaNulo(pessoa.getSexo())?
207
                                        pessoa.getSexo().equals(sexo.getValor())? "X" : " " : " ");
208
                }
209
 
210
                for (TipoRacaCor racaCor : TipoRacaCor.values()) {
211
                        texto = replaceTexto(texto, "#RACA_" + racaCor.getValor(), VerificadorUtil.naoEstaNulo(pessoa.getTipoRacaCor())?
212
                                        pessoa.getTipoRacaCor().equals(racaCor.getValor())? "X" : " " : " ");
213
                }
214
 
215
                for (TipoEscolaridade escolaridade : TipoEscolaridade.values()) {
216
                        texto = replaceTexto(texto, "#ESCOLARIDADE[" + escolaridade.getValor() + "]", VerificadorUtil.naoEstaNulo(pessoa.getTipoEscolaridade())?
217
                                        pessoa.getTipoEscolaridade().equals(escolaridade.getValor())? "X" : " " : " ");
218
                }
219
 
304 espaco 220
                for (TipoDependentes tipoDependente : TipoDependentes.values()) {
221
                        texto = replaceTexto(texto, "#TIPO_DEPENDENTE[" + tipoDependente.getValor() + "]", VerificadorUtil.naoEstaNulo(pessoa.getTipoDependendes())?
222
                                        pessoa.getTipoDependendes().equals(tipoDependente.getValor())? "X" : " " : " ");
223
                }
224
 
106 espaco 225
                if (VerificadorUtil.naoEstaNulo(pessoa.getEnderecoPrincipal())) {
226
                        texto = replaceTexto(texto, "#ENDERECO_LOGRADOURO", pessoa.getEnderecoPrincipal().getLogradouro());
227
                        texto = replaceTexto(texto, "#ENDERECO_NUMERO", pessoa.getEnderecoPrincipal().getNumero());
228
                        texto = replaceTexto(texto, "#ENDERECO_BAIRRO", pessoa.getEnderecoPrincipal().getBairro());
229
                        texto = replaceTexto(texto, "#ENDERECO_COMPLEMENTO", pessoa.getEnderecoPrincipal().getComplemento());
230
                        texto = replaceTexto(texto, "#ENDERECO_CIDADE", pessoa.getEnderecoPrincipal().getMunicipio());
231
                        texto = replaceTexto(texto, "#ENDERECO_CEP", pessoa.getEnderecoPrincipal().getCepFormatado());
232
                        texto = replaceTexto(texto, "#ENDERECO_PAIS", "BRASIL");
324 espaco 233
                        texto = replaceTexto(texto, "#ENDERECO_PROPRIA", VerificadorUtil.naoEstaNulo(pessoa.getEnderecoPrincipal().getIndicadorPropria())? pessoa.getEnderecoPrincipal().getIndicadorPropria()? "X" : " " : " ");
234
                        texto = replaceTexto(texto, "#ENDERECO_NAOPROPRIA", VerificadorUtil.naoEstaNulo(pessoa.getEnderecoPrincipal().getIndicadorPropria())? !pessoa.getEnderecoPrincipal().getIndicadorPropria()? "X" : " " : " ");
235
                        texto = replaceTexto(texto, "#ENDERECO_COM_FGTS", VerificadorUtil.naoEstaNulo(pessoa.getEnderecoPrincipal().getIndicadorUsoFgts())? !pessoa.getEnderecoPrincipal().getIndicadorUsoFgts()? "X" : " " : " ");
236
                        texto = replaceTexto(texto, "#ENDERECO_SEM_FGTS", VerificadorUtil.naoEstaNulo(pessoa.getEnderecoPrincipal().getIndicadorUsoFgts())? !pessoa.getEnderecoPrincipal().getIndicadorUsoFgts()? "X" : " " : " ");
106 espaco 237
                }
238
 
239
                if (VerificadorUtil.naoEstaNulo(funcionario)) {
240
                        texto = replaceTexto(texto, "#PIS", funcionario.getPis());
241
                        texto = replaceTexto(texto, "#CTPS_NUMERO", funcionario.getCtps());
242
                        texto = replaceTexto(texto, "#CTPS_SERIE", funcionario.getCtpsSerie());
243
                        texto = replaceTexto(texto, "#CTPS_UF", funcionario.getCtpsUf());
304 espaco 244
 
324 espaco 245
                        texto = replaceTexto(texto, "#PRIMEIRO_EMPREGO_SIM", VerificadorUtil.naoEstaNulo(funcionario.getPrimeiroEmprego())? funcionario.getPrimeiroEmprego()? "X" : " " : " ");
246
                        texto = replaceTexto(texto, "#PRIMEIRO_EMPREGO_NAO", VerificadorUtil.naoEstaNulo(funcionario.getPrimeiroEmprego())? !funcionario.getPrimeiroEmprego()? "X" : " " : " ");
304 espaco 247
 
324 espaco 248
                        texto = replaceTexto(texto, "#OPTANTE_FGTS_SIM", VerificadorUtil.naoEstaNulo(funcionario.getOptantePeloFGTS())? funcionario.getOptantePeloFGTS()? "X" : " " : " ");
249
                        texto = replaceTexto(texto, "#OPTANTE_FGTS_NAO", VerificadorUtil.naoEstaNulo(funcionario.getOptantePeloFGTS())? !funcionario.getOptantePeloFGTS()? "X" : " " : " ");
106 espaco 250
                }
251
                return texto;
252
        }
253
 
254
}