Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package gob.dp.sid.registro.controller; import gob.dp.sid.comun.controller.AbstractManagedBean; import gob.dp.sid.comun.type.EtapaType; import gob.dp.sid.comun.type.ExpedienteType; import gob.dp.sid.registro.entity.EtapaEstado; import gob.dp.sid.registro.entity.Expediente; import gob.dp.sid.registro.entity.ExpedienteGestion; import gob.dp.sid.registro.entity.ExpedienteONP; import gob.dp.sid.registro.entity.GestionEtapa; import gob.dp.sid.registro.service.EtapaEstadoService; import gob.dp.sid.registro.service.ExpedienteGestionService; import gob.dp.sid.registro.service.ExpedienteONPService; import gob.dp.sid.registro.service.ExpedienteService; import gob.dp.sid.registro.service.GestionEtapaService; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.Serializable; import java.nio.file.Files; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Objects; import javax.inject.Named; import javax.servlet.http.Part; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.apache.poi.EncryptedDocumentException; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; /** * * @author carlos */ @Named @Scope("session") public class ImportarController extends AbstractManagedBean implements Serializable { private static final Logger log = Logger.getLogger(ImportarController.class); private Part file1; Workbook wb; private List<ExpedienteGestion> listaGestionesONP; @Autowired private ExpedienteGestionService expedienteGestionService; @Autowired private ExpedienteService expedienteService; @Autowired private EtapaEstadoService etapaEstadoService; @Autowired private GestionEtapaService gestionEtapaService; @Autowired private ExpedienteONPService expedienteONPService; public String cargarPagina() { listaGestionesONP = new ArrayList<>(); return "importarONP"; } public void cargarExcel() { uploadArchive(file1); } private void importar(File archivo) { List<Object[]> listaObjetos = new ArrayList<>(); try { wb = WorkbookFactory.create(new FileInputStream(archivo)); Sheet hoja = wb.getSheetAt(0); Iterator filaIterator = hoja.rowIterator(); int indiceFila = -1; while (filaIterator.hasNext()) { indiceFila++; Row fila = (Row) filaIterator.next(); Iterator columnaIterator = fila.cellIterator(); Object[] listaColumna = new Object[7]; int indiceColumna = -1; while (columnaIterator.hasNext()) { indiceColumna++; Cell celda = (Cell) columnaIterator.next(); if (indiceFila == 0) { } else { if (celda != null && indiceColumna < 7) { switch (celda.getCellType()) { case Cell.CELL_TYPE_NUMERIC: //listaColumna[indiceColumna]= (int)Math.round(celda.getNumericCellValue()); listaColumna[indiceColumna] = celda.getDateCellValue(); break; case Cell.CELL_TYPE_STRING: listaColumna[indiceColumna] = celda.getStringCellValue(); break; case Cell.CELL_TYPE_BOOLEAN: listaColumna[indiceColumna] = celda.getBooleanCellValue(); break; default: listaColumna[indiceColumna] = null; break; } } } } if (indiceFila != 0) { listaObjetos.add(listaColumna); } } cargarGestiones(listaObjetos); } catch (IOException | InvalidFormatException | EncryptedDocumentException e) { log.error("importar" + e); } } private void cargarGestiones(List<Object[]> lista) { listaGestionesONP = new ArrayList<>(); for (Object[] os : lista) { ExpedienteGestion eg = new ExpedienteGestion(); if (os[0] != null) { try { eg.setNumeroExpediente(os[0] == null ? null : os[0].toString().trim().substring(0, 4) + "-" + os[0].toString().trim().substring(4, 8) + "-" + os[0].toString().trim().substring(8, 14)); eg.setCodigoONP(os[1] == null ? null : os[1].toString().trim()); eg.setDestinoONP(os[2] == null ? null : os[2].toString()); eg.setIdEntidad(4455); eg.setFechaONP(os[3] == null ? null : (Date) os[3]); eg.setFechaModificacion(os[4] == null ? null : (Date) os[4]); eg.setDocumentoRespuesta(os[5] == null ? null : os[5].toString()); eg.setFechaRespuesta(os[6] == null ? null : (Date) os[6]); listaGestionesONP.add(eg); } catch (Exception e) { log.error("cargarGestiones" + e.getMessage()); } } } for (ExpedienteGestion gestion : listaGestionesONP) { if (gestion.getNumeroExpediente() != null) { Expediente e = expedienteService.expedienteBuscarPorNumero(gestion.getNumeroExpediente()); if (e != null) { gestion.setValidaExpediente("SI"); gestion.setVerEtapa(inicializarEtapaEstado(e)); gestion.setIdExpediente(e.getId()); } else { gestion.setValidaExpediente("NO"); } } if (gestion.getCodigoONP() != null) { Integer contador = expedienteGestionService.expedienteGestionCountONP(gestion.getCodigoONP()); if (contador > 0) { gestion.setExisteGestion("SI"); } else { gestion.setExisteGestion("NO"); } } } } public void insertarActualizarGestiones() { List<ExpedienteGestion> egs = new ArrayList<>(); int i = 0; for (ExpedienteGestion eg : listaGestionesONP) { try { if (StringUtils.equals(eg.getValidaExpediente(), "SI")) { if (eg.getVerEtapa() > 0) { //if (StringUtils.equals(eg.getExisteGestion(), "NO")) { DateFormat format = new SimpleDateFormat("yyMMddHHmmss"); DateFormat format2 = new SimpleDateFormat("dd/MM/yyyy"); String formato = format.format(new Date()); i++; eg.setDescripcion( "Se realiz la consulta peridica sobre el estado del expediente administrativo en ONP, atravz del mecanismo de " + "intercambio de informacin con ONP va google apps"); eg.setCodigoGestion("GES" + i + formato); eg.setFechaRegistro(new Date()); eg.setFecha(new Date()); eg.setFechaRespuesta(new Date()); eg.setDetalleRespuesta("El expediente se encuentra en " + eg.getDestinoONP() + " desde la fecha " + format2.format(eg.getFechaONP())); eg.setTipo("02"); eg.setRespuesta("SI"); ExpedienteGestion eg1 = expedienteGestionService .expedienteGestionPorONPUltimo(eg.getNumeroExpediente()); if (eg1 != null) { if (!StringUtils.equals(eg.getFechaONP().toString(), eg1.getFechaONP().toString()) && !StringUtils.equals(eg.getDestinoONP(), eg1.getDestinoONP())) { eg.setTipoCalidad("01"); } else { eg.setTipoCalidad("02"); } } else { eg.setTipoCalidad("02"); } expedienteGestionService.expedienteGestionInsertar(eg); GestionEtapa ge = new GestionEtapa(); ge.setIdEtapa(eg.getVerEtapa()); ge.setIdExpediente(eg.getIdExpediente()); ge.setIdGestion(eg.getId()); ge.setNumeroExpediente(eg.getNumeroExpediente()); gestionEtapaService.gestionEtapaInsertar(ge); cargarExpedienteONP(eg); /*} else { ExpedienteGestion eg1 = expedienteGestionService.expedienteGestionPorONP(eg.getCodigoONP()); if(StringUtils.equals(eg.getFechaONP().toString(), eg1.getFechaONP().toString()) && StringUtils.equals(eg.getDestinoONP(), eg1.getDestinoONP())){ eg1.setTipoCalidad("02"); }else{ eg1.setTipoCalidad("01"); eg1.setFechaONP(eg.getFechaONP()); eg1.setDestinoONP(eg.getDestinoONP()); } eg1.setCodigoONP(null); expedienteGestionService.expedienteGestionUpdate(eg1); }*/ } else { egs.add(eg); } } else { egs.add(eg); } } catch (Exception e) { egs.add(eg); log.error(e); } } msg.messageInfo("Se cargaron las gestiones", null); listaGestionesONP = new ArrayList<>(); listaGestionesONP = egs; } private void cargarExpedienteONP(ExpedienteGestion eg) { ExpedienteONP eonp; eonp = expedienteONPService.expedienteONPBuscarExpediente(eg.getNumeroExpediente()); if (eonp == null) { eonp = new ExpedienteONP(); eonp.setNumeroExpediente(eg.getNumeroExpediente()); eonp.setCodigoExpedienteONP(eg.getCodigoONP()); eonp.setFechaONP(new Date()); eonp.setFechaRegistro(new Date()); eonp.setIndiceConcluidoONP(true); eonp.setIndiceEnvidadoONP(true); eonp.setTipoSubOrigen("01"); expedienteONPService.expedienteONPInsertar(eonp); } else { eonp.setCodigoExpedienteONP(eg.getCodigoONP()); eonp.setFechaONP(new Date()); eonp.setFechaRegistro(new Date()); expedienteONPService.expedienteONPUpdate(eonp); } } private Integer inicializarEtapaEstado(Expediente expediente) { try { EtapaEstado etapaEstado = etapaEstadoService.etapaEstadoVigente(expediente.getId()); if (etapaEstado == null) { etapaEstado = etapaEstadoService.etapaEstadoInicial(expediente.getId()); } if (etapaEstado == null) { etapaEstado = new EtapaEstado(); } /** * QUEJA */ if (StringUtils.equals(expediente.getTipoClasificion(), ExpedienteType.QUEJA.getKey())) { if (etapaEstado.getIdEtapa() == null) { etapaEstado.setVerEtapa(EtapaType.CALIFICACION_QUEJA.getKey()); } if (Objects.equals(etapaEstado.getIdEtapa(), EtapaType.CALIFICACION_QUEJA.getKey())) { if (StringUtils.equals(etapaEstado.getIndicadorEtapa(), "VIG")) { etapaEstado.setVerEtapa(EtapaType.INVESTIGACION_QUEJA.getKey()); if (StringUtils.equals(expediente.getGeneral(), "C")) { etapaEstado.setVerEtapa(EtapaType.CALIFICACION_QUEJA.getKey()); } } else { etapaEstado.setVerEtapa(EtapaType.CALIFICACION_QUEJA.getKey()); } } if (Objects.equals(etapaEstado.getIdEtapa(), EtapaType.INVESTIGACION_QUEJA.getKey())) { if (StringUtils.equals(etapaEstado.getIndicadorEtapa(), "VIG")) { etapaEstado.setVerEtapa(EtapaType.PERSUACION_QUEJA.getKey()); if (StringUtils.equals(expediente.getGeneral(), "C")) { etapaEstado.setVerEtapa(EtapaType.INVESTIGACION_QUEJA.getKey()); } } else { etapaEstado.setVerEtapa(EtapaType.INVESTIGACION_QUEJA.getKey()); } } if (Objects.equals(etapaEstado.getIdEtapa(), EtapaType.PERSUACION_QUEJA.getKey())) { if (StringUtils.equals(etapaEstado.getIndicadorEtapa(), "VIG")) { etapaEstado.setVerEtapa(EtapaType.SEGUIMIENTO_QUEJA.getKey()); if (StringUtils.equals(expediente.getGeneral(), "C")) { etapaEstado.setVerEtapa(EtapaType.PERSUACION_QUEJA.getKey()); } } else { etapaEstado.setVerEtapa(EtapaType.PERSUACION_QUEJA.getKey()); } } if (Objects.equals(etapaEstado.getIdEtapa(), EtapaType.SEGUIMIENTO_QUEJA.getKey())) { etapaEstado.setVerEtapa(EtapaType.SEGUIMIENTO_QUEJA.getKey()); } } /** * PETITORIO */ if (StringUtils.equals(expediente.getTipoClasificion(), ExpedienteType.PETITORIO.getKey())) { if (etapaEstado.getIdEtapa() == null) { etapaEstado.setVerEtapa(EtapaType.CALIFICACION_PETITORIO.getKey()); } if (Objects.equals(etapaEstado.getIdEtapa(), EtapaType.CALIFICACION_PETITORIO.getKey())) { if (StringUtils.equals(etapaEstado.getIndicadorEtapa(), "VIG")) { etapaEstado.setVerEtapa(EtapaType.GESTION_PETITORIO.getKey()); if (StringUtils.equals(expediente.getGeneral(), "C")) { etapaEstado.setVerEtapa(EtapaType.CALIFICACION_PETITORIO.getKey()); } } else { etapaEstado.setVerEtapa(EtapaType.CALIFICACION_PETITORIO.getKey()); } } if (Objects.equals(etapaEstado.getIdEtapa(), EtapaType.GESTION_PETITORIO.getKey())) { if (StringUtils.equals(etapaEstado.getIndicadorEtapa(), "VIG")) { etapaEstado.setVerEtapa(EtapaType.PERSUASION_PETITORIO.getKey()); if (StringUtils.equals(expediente.getGeneral(), "C")) { etapaEstado.setVerEtapa(EtapaType.GESTION_PETITORIO.getKey()); } } else { etapaEstado.setVerEtapa(EtapaType.GESTION_PETITORIO.getKey()); } } if (Objects.equals(etapaEstado.getIdEtapa(), EtapaType.PERSUASION_PETITORIO.getKey())) { etapaEstado.setVerEtapa(EtapaType.PERSUASION_PETITORIO.getKey()); } } return etapaEstado.getVerEtapa(); } catch (Exception e) { log.error(e); return null; } } private String uploadArchive(Part fil) { String nameArchive = getFilename(fil); String extencion = getFileExtension(getFilename(fil)); if (StringUtils.isNoneBlank(nameArchive)) { String formato = RandomStringUtils.random(32, 0, 20, true, true, "qw32rfHIJk9iQ8Ud7h0X".toCharArray()); String ruta = formato + extencion; File file = new File(FILE_SYSTEM + ruta); try (InputStream input = fil.getInputStream()) { Files.copy(input, file.toPath()); importar(file); } catch (IOException ex) { log.error(ex.getCause()); } return ruta; } return null; } private static String getFilename(Part part) { for (String cd : part.getHeader("content-disposition").split(";")) { if (cd.trim().startsWith("filename")) { String filename = cd.substring(cd.indexOf("=") + 1).trim().replace("\"", ""); return filename.substring(filename.lastIndexOf('/') + 1).substring(filename.lastIndexOf('\\') + 1); } } return null; } private String getFileExtension(String name) { try { return name.substring(name.lastIndexOf(".")); } catch (Exception e) { return ""; } } public Part getFile1() { return file1; } public void setFile1(Part file1) { this.file1 = file1; } public List<ExpedienteGestion> getListaGestionesONP() { return listaGestionesONP; } public void setListaGestionesONP(List<ExpedienteGestion> listaGestionesONP) { this.listaGestionesONP = listaGestionesONP; } }