package com.fp.frontend.controller.armas.solicitud; import java.sql.Date; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import javax.faces.context.FacesContext; import org.primefaces.event.FileUploadEvent; import org.primefaces.event.SelectEvent; import org.primefaces.model.UploadedFile; import com.fp.dto.Request; import com.fp.dto.Response; import com.fp.dto.query.DtoQuery; import com.fp.dto.save.DtoSave; import com.fp.frontend.controller.AbstractController; import com.fp.frontend.controller.alfresco.AlfrescoController; import com.fp.frontend.controller.armas.lov.PlanificacionTramiteLovController; import com.fp.frontend.controller.armas.lov.SitioAlmacenamientoLovController; import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; import com.fp.frontend.controller.pcustomer.PersonAddressController; import com.fp.frontend.controller.pcustomer.lov.PersonLovController; import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; import com.fp.frontend.controller.pgeneral.gene.ParametersController; import com.fp.frontend.helper.MessageHelper; import com.fp.frontend.utility.MsgControlArmas; import com.fp.frontend.utility.Utilidades; import com.fp.persistence.parmas.ins.TarmPlanificacionTramite; import com.fp.persistence.parmas.param.TarmCentroControl; import com.fp.persistence.parmas.param.TarmCentroControlJur; import com.fp.persistence.parmas.param.TarmSitioAlmacenamiento; import com.fp.persistence.pcustomer.gene.TcustPersonAddress; import com.fp.persistence.pcustomer.gene.TcustPersonDetail; import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; import com.fp.persistence.pgeneral.gene.TgeneParameters; import com.fp.persistence.pgeneral.safe.TsafeUserDetail; /** * Clase controladora del bean TgeneCatalog. * * @author C.P. * @version 2.1 */ @SuppressWarnings("serial") @ManagedBean @ViewScoped public class RegistroInspeccionPlaniNoPlaniController extends AbstractController { @ManagedProperty(value = "#{inspeccionController}") private InspeccionController inspeccionController; //PARA LOS ARCHIVOS @ManagedProperty(value = "#{inspeccionArchivoController}") private InspeccionArchivoController inspeccionArchivoController; @ManagedProperty(value = "#{alfrescoController}") private AlfrescoController alfrescoController; @ManagedProperty(value = "#{planificacionTramiteController}") PlanificacionTramiteController planificacionTramiteController; private TarmPlanificacionTramite planificacionTramite; private TcustPersonDetail tcustPersonDetailInspeccion; private TarmSitioAlmacenamiento sitioAlmacenamiento; private TsafeUserDetail tsafeUserDetail; private List lplanificacion; /** * Campo para seleccionar si el tramite sigue el proceso */ private Boolean tramiteProceso = Boolean.FALSE; private Boolean tramiteProcesoNegar=Boolean.FALSE; private Map personaPropietario; private TarmCentroControl centroControl; private String aplicaDecomiso; private String codigoPersonaSitioAlm; private String numerotrabajo; /** * Atributos para cargar los archivos */ private UploadedFile file; private UploadedFile uploadedFileFoto1; private UploadedFile uploadedFileFoto2; private UploadedFile uploadedFileFoto3; /** * campo para desabilitar el boton */ private Boolean btn=Boolean.FALSE; /** * Constructor * @throws Exception */ public RegistroInspeccionPlaniNoPlaniController() throws Exception { super(TcustPersonDetail.class); } /** * Metodo invocado despues de instanciar el controlador */ @PostConstruct private void postconstruct() { this.init(); } /** * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. */ private void init() { try { this.personaPropietario = new HashMap<>(); this.recperpage = 10; // Cambiar al # reg a mirar. this.lrecord = new ArrayList<>(); this.beanalias = "REGINSPECPLANINO"; tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); String legalcodepla=codigoParameter("LEGALCODE.PLAN"); lplanificacion=CatalogDetailController.find("OPERACIONINSPECCION",legalcodepla); inspeccionController.create(); inspeccionController.getRecord().setFecharegistro(new Date(new java.util.Date().getTime())); numerotrabajo=null; obtenerCentroControl(); } catch (Exception e) { MessageHelper.setMessageError(e); } } /** * Método para obtener el centro de control * @throws Exception */ private void obtenerCentroControl() throws Exception { PersonAddressController personAddressController = new PersonAddressController(); TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); } @SuppressWarnings("unchecked") @Override protected void querydatabase() { try { this.getMfilters().put("pk.personcode", tsafeUserDetail.getPk().getPersoncode().toString()); addFilterDateto(); Request request = this.callerhelper.getRequest(); DtoQuery dto = super.getDtoQuery(false); dto.setOrderby("t.pk"); HashMap mtables = new HashMap(); mtables.put(this.beanalias, dto); request.setQueryTables(mtables); request.put("queryalias", "INSPECCIONPLANIFICADA"); request.put("querytype", "P"); //DATOS ADICIONALES if(planificacionTramite!=null){ request.put("personcodepropietario", planificacionTramite.getModifiedData().get("personcode")); codigoPersonaSitioAlm=planificacionTramite.getModifiedData().get("personcode").toString(); } if(tcustPersonDetailInspeccion!=null){ request.put("personcodepropietario", tcustPersonDetailInspeccion.getPk().getPersoncode()); codigoPersonaSitioAlm=tcustPersonDetailInspeccion.getPk().getPersoncode().toString(); } request.put("ccentrocontrol","0035"); //com.fp.armas.rules.query.solicitud.CompletaDatosInspeccionPlan Response resp = this.callerhelper.executeQuery(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { this.record = new TcustPersonDetail(); MessageHelper.setMessageError(resp); } else { this.record = (TcustPersonDetail) resp.get(this.beanalias); this.personaPropietario = (Map) resp.get("PERSONAPROPIETARIO"); super.postQuery(this.lrecord); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } private String codigoParameter(String codigo) throws Exception{ TgeneParameters parameter= ParametersController.find(codigo, "1"); return parameter.getTextvalue(); } public void openPlanificacionTramiteLov() { Map> params = new HashMap<>(); List lcat = new ArrayList<>(); lcat.add(centroControl.getPk()); params.put("centrocontrol", lcat); PlanificacionTramiteLovController.openLov(params); } public void onReturnPlanificacionTramiteLov(SelectEvent event) throws Exception { planificacionTramite=(TarmPlanificacionTramite) event.getObject(); tcustPersonDetailInspeccion=null; querydatabase(); } /** * Método para abrir el lov de sitio de almacenamineot */ public void openSitioLov() { if(codigoPersonaSitioAlm==null || codigoPersonaSitioAlm.trim().length()==0){ MessageHelper.setMessageError("SELECCIONE UN PROPIETARIO O RESPONSABLE"); return; } Map> params = new HashMap<>(); List lcat = new ArrayList<>(); lcat.add(codigoPersonaSitioAlm); params.put("personcode", lcat); SitioAlmacenamientoLovController.openLov(params); } /** * Maneja la respuesta del Lov de Personas * @param event * @throws Exception */ public void onReturnSitioLov(SelectEvent event) throws Exception { sitioAlmacenamiento=(TarmSitioAlmacenamiento) event.getObject(); } /** * Método para abrir el lov de personas */ public void openPersonLov() { Map> params = new HashMap<>(); PersonLovController.openLov(params); } /** * Maneja la respuesta del Lov de Personas * @param event * @throws Exception */ public void onReturnPersonLov(SelectEvent event) throws Exception { tcustPersonDetailInspeccion = (TcustPersonDetail) event.getObject(); planificacionTramite=null; querydatabase(); } /** * Método para manejar el evento change en el CheckBox */ public void onChangeAprobar() { if (tramiteProceso) { tramiteProcesoNegar=false; inspeccionController.getRecord().setTramiteproceso("Y"); } else { tramiteProcesoNegar=true; inspeccionController.getRecord().setTramiteproceso("N"); } aplicaDecomiso=null; } /** * Método para manejar el evento change en el CheckBox */ public void onChangeRechazar() { if (tramiteProcesoNegar) { tramiteProceso=false; inspeccionController.getRecord().setTramiteproceso("N"); } else { tramiteProceso=true; inspeccionController.getRecord().setTramiteproceso("Y"); } aplicaDecomiso="N"; } @Override public void save() { Boolean msg=Boolean.FALSE; try { if(sitioAlmacenamiento==null || sitioAlmacenamiento.getPk()==null || sitioAlmacenamiento.getPk().trim().length()==0){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionenesitioinspeccion")); msg=Boolean.TRUE; } if(tramiteProceso== false && tramiteProcesoNegar == false){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionenegarocontinuartramiteproceso")); msg=Boolean.TRUE; } if(msg){ return; } HashMap msave = new HashMap(); Request request = callerhelper.getRequest(); if(!saveWithDocumentAlfresco()){ return; } if(tramiteProceso){ request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R }else{ if(aplicaDecomiso==null ||(!aplicaDecomiso.equals("N") && !aplicaDecomiso.equals("N"))){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionesionoenaplicadecomiso")); return; } inspeccionController.getRecord().setAplicadecomiso(aplicaDecomiso); request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "D" : bpmDataStatus); // A,D,R } request.modifiedData().put("TID", tid); request.modifiedData().put("BPMObs", inspeccionController.getRecord().getObservacion()); //actualiza el campo de la planificacion if(planificacionTramite!=null){ planificacionTramiteController.create(); planificacionTramiteController.setRecord(planificacionTramite); planificacionTramiteController.getRecord().setInspeccion("Y"); planificacionTramiteController.actualizar(planificacionTramiteController.getRecord()); DtoSave dtosavePlanificacion = planificacionTramiteController.getDtoSave(); dtosavePlanificacion.setReturnpk(true); dtosavePlanificacion.setPosition(3); msave.put(planificacionTramiteController.getBeanalias(), dtosavePlanificacion); inspeccionController.getRecord().setCplanificaciontramite(planificacionTramite.getPk()); } inspeccionController.getRecord().setCsitioalmacenamiento(sitioAlmacenamiento.getPk()); inspeccionController.getRecord().setPersoncode(tsafeUserDetail.getPk().getPersoncode()); inspeccionController.getRecord().setCentrocontrol(centroControl.getPk()); Integer canno = Calendar.getInstance().get(Calendar.YEAR); inspeccionController.getRecord().setAnno(Long.parseLong(canno.toString())); inspeccionController.update(); DtoSave dtosaveInspeccion = inspeccionController.getDtoSave(); dtosaveInspeccion.setReturnpk(true); dtosaveInspeccion.setPosition(2); msave.put(inspeccionController.getBeanalias(), dtosaveInspeccion); DtoSave dtosave = inspeccionArchivoController.getDtoSave(); dtosave.setReturnpk(true); dtosave.setPosition(1); msave.put(inspeccionArchivoController.getBeanalias(), dtosave); request.setSaveTables(msave); //com.fp.armas.rules.save.solicitud.RegistroInspeccion (TransactionRule) Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.postCommit(resp); inspeccionController.postCommit(resp); inspeccionArchivoController.postCommit(resp); planificacionTramiteController.postCommit(resp); numerotrabajo=""+resp.get("numerotrabajo"); MessageHelper.setMessageInfo(resp); btn=Boolean.TRUE; } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } public void handleUpload(FileUploadEvent event){ file = event.getFile(); } public void upload(FileUploadEvent event) { file = event.getFile(); } public void upload1(FileUploadEvent event) { uploadedFileFoto1 = event.getFile(); } public void upload2(FileUploadEvent event) { uploadedFileFoto2 = event.getFile(); } public void upload3(FileUploadEvent event) { uploadedFileFoto3 = event.getFile(); } /** * Método para cargar los archivos al alfresco * */ public Boolean saveWithDocumentAlfresco() { try { Boolean msgArchivos=Boolean.FALSE; //pdf if(file==null || file.getFileName()==null){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreseelformatodeinspeccion")); msgArchivos=Boolean.TRUE; } if(uploadedFileFoto1==null || uploadedFileFoto1.getFileName()==null){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreselafoto1")); msgArchivos=Boolean.TRUE; } if(uploadedFileFoto2==null || uploadedFileFoto2.getFileName()==null){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreselafoto2")); msgArchivos=Boolean.TRUE; } if(uploadedFileFoto3==null || uploadedFileFoto3.getFileName()==null){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreselafoto3")); msgArchivos=Boolean.TRUE; } if(msgArchivos){ return false; } String xPathLocation=null; if(planificacionTramite!=null){ xPathLocation= getRutaDocumentoSolBase() + "/cm:Inspeccion/cm:NO-PLANIFICADA-"+codigoPersonaSitioAlm; //codigoPersonaSitioAlm=planificacionTramite.getModifiedData().get("personcode").toString(); } if(tcustPersonDetailInspeccion!=null){ xPathLocation= getRutaDocumentoSolBase() + "/cm:Inspeccion/cm:PLANIFICADA-"+codigoPersonaSitioAlm; //codigoPersonaSitioAlm=tcustPersonDetailInspeccion.getPk().getPersoncode().toString(); } //String xphat1="FormatoInspeccion-"+forma.format(fecha)+extencionArchivo(file.getFileName()); String xphat1=eliminaCaractersEspeciales(Utilidades.obtieneNombreLimpio(recorteNombre(file.getFileName()))); if(alfrescoController.uploadFile(file.getInputstream(),xphat1, xPathLocation)){ inspeccionArchivoController.create(); inspeccionArchivoController.getRecord().setXpath(xPathLocation + "/cm:"+xphat1); String fielname=file.getFileName(); if(fielname.length()>99){ fielname=fielname.substring(0, 95)+extencionArchivo(file.getFileName()); } inspeccionArchivoController.getRecord().setDescripcion(fielname); inspeccionArchivoController.update(); }else{ return false; } //String xphat2="Foto1-"+forma.format(fecha)+extencionArchivo(uploadedFileFoto1.getFileName()); String xphat2=eliminaCaractersEspeciales(Utilidades.obtieneNombreLimpio(recorteNombre(uploadedFileFoto1.getFileName()))); if(alfrescoController.uploadFile(uploadedFileFoto1.getInputstream(),xphat2, xPathLocation)){ inspeccionArchivoController.create(); inspeccionArchivoController.getRecord().setXpath(xPathLocation + "/cm:"+xphat2); String fielname=uploadedFileFoto1.getFileName(); if(fielname.length()>99){ fielname=fielname.substring(0, 95)+extencionArchivo(uploadedFileFoto1.getFileName()); } inspeccionArchivoController.getRecord().setDescripcion(fielname); inspeccionArchivoController.update(); }else{ return false; } //String xphat3="Foto2-"+forma.format(fecha)+extencionArchivo(uploadedFileFoto2.getFileName()); String xphat3=eliminaCaractersEspeciales(Utilidades.obtieneNombreLimpio(recorteNombre(uploadedFileFoto2.getFileName()))); if(alfrescoController.uploadFile(uploadedFileFoto2.getInputstream(),xphat3, xPathLocation)){ inspeccionArchivoController.create(); inspeccionArchivoController.getRecord().setXpath(xPathLocation + "/cm:"+xphat3); String fielname=uploadedFileFoto2.getFileName(); if(fielname.length()>99){ fielname=fielname.substring(0, 95)+extencionArchivo(uploadedFileFoto2.getFileName()); } inspeccionArchivoController.getRecord().setDescripcion(fielname); inspeccionArchivoController.update(); }else{ return false; } //String xphat4="Foto3-"+forma.format(fecha)+extencionArchivo(uploadedFileFoto3.getFileName()); String xphat4=eliminaCaractersEspeciales(Utilidades.obtieneNombreLimpio(recorteNombre(uploadedFileFoto3.getFileName()))); if(alfrescoController.uploadFile(uploadedFileFoto3.getInputstream(),xphat4, xPathLocation)){ inspeccionArchivoController.create(); inspeccionArchivoController.getRecord().setXpath(xPathLocation + "/cm:"+xphat4); String fielname=uploadedFileFoto3.getFileName(); if(fielname.length()>99){ fielname=fielname.substring(0, 95)+extencionArchivo(uploadedFileFoto3.getFileName()); } inspeccionArchivoController.getRecord().setDescripcion(fielname); inspeccionArchivoController.update(); }else{ return false; } } catch (Exception e) { MessageHelper.setMessageError(e); } catch (Throwable e) { MessageHelper.setMessageError(e); } return true; } public String eliminaCaractersEspeciales(String nombre){ nombre=nombre.replace("(", ""); nombre=nombre.replace(")", ""); return nombre; } /** * obtiene la extencion del archivo * @param nombre * @return */ private String extencionArchivo(String nombre){ int pos=nombre.lastIndexOf('.'); nombre=nombre.substring(pos); return nombre; } /** * recorta el nombre * @param nombre * @return */ public String recorteNombre(String nombre){ String fielname=nombre; if(fielname.length()>30){ fielname=fielname.substring(0,30)+extencionArchivo(nombre); } return fielname; } /** * Retorna la ruta de documento base en donde se almacenará dicho archivo * * @return */ public String getRutaDocumentoSolBase() { Calendar calendar = Calendar.getInstance(); calendar.setTime(inspeccionController.getRecord().getFecharegistro()); StringBuilder ruta = new StringBuilder("cm:Solicitudes"); ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); return ruta.toString(); } public InspeccionController getInspeccionController() { return inspeccionController; } public void setInspeccionController(InspeccionController inspeccionController) { this.inspeccionController = inspeccionController; } public TarmCentroControl getCentroControl() { return centroControl; } public void setCentroControl(TarmCentroControl centroControl) { this.centroControl = centroControl; } public Map getPersonaPropietario() { return personaPropietario; } public void setPersonaPropietario(Map personaPropietario) { this.personaPropietario = personaPropietario; } public TarmPlanificacionTramite getPlanificacionTramite() { return planificacionTramite; } public void setPlanificacionTramite( TarmPlanificacionTramite planificacionTramite) { this.planificacionTramite = planificacionTramite; } public TarmSitioAlmacenamiento getSitioAlmacenamiento() { return sitioAlmacenamiento; } public void setSitioAlmacenamiento(TarmSitioAlmacenamiento sitioAlmacenamiento) { this.sitioAlmacenamiento = sitioAlmacenamiento; } public AlfrescoController getAlfrescoController() { return alfrescoController; } public void setAlfrescoController(AlfrescoController alfrescoController) { this.alfrescoController = alfrescoController; } public Boolean getTramiteProceso() { return tramiteProceso; } public void setTramiteProceso(Boolean tramiteProceso) { this.tramiteProceso = tramiteProceso; } public TsafeUserDetail getTsafeUserDetail() { return tsafeUserDetail; } public void setTsafeUserDetail(TsafeUserDetail tsafeUserDetail) { this.tsafeUserDetail = tsafeUserDetail; } public Boolean getTramiteProcesoNegar() { return tramiteProcesoNegar; } public void setTramiteProcesoNegar(Boolean tramiteProcesoNegar) { this.tramiteProcesoNegar = tramiteProcesoNegar; } public String getAplicaDecomiso() { return aplicaDecomiso; } public void setAplicaDecomiso(String aplicaDecomiso) { this.aplicaDecomiso = aplicaDecomiso; } public UploadedFile getFile() { return file; } public void setFile(UploadedFile file) { this.file = file; } public UploadedFile getUploadedFileFoto1() { return uploadedFileFoto1; } public void setUploadedFileFoto1(UploadedFile uploadedFileFoto1) { this.uploadedFileFoto1 = uploadedFileFoto1; } public UploadedFile getUploadedFileFoto2() { return uploadedFileFoto2; } public void setUploadedFileFoto2(UploadedFile uploadedFileFoto2) { this.uploadedFileFoto2 = uploadedFileFoto2; } public UploadedFile getUploadedFileFoto3() { return uploadedFileFoto3; } public void setUploadedFileFoto3(UploadedFile uploadedFileFoto3) { this.uploadedFileFoto3 = uploadedFileFoto3; } public List getLplanificacion() { return lplanificacion; } public void setLplanificacion(List lplanificacion) { this.lplanificacion = lplanificacion; } public InspeccionArchivoController getInspeccionArchivoController() { return inspeccionArchivoController; } public void setInspeccionArchivoController( InspeccionArchivoController inspeccionArchivoController) { this.inspeccionArchivoController = inspeccionArchivoController; } public PlanificacionTramiteController getPlanificacionTramiteController() { return planificacionTramiteController; } public void setPlanificacionTramiteController( PlanificacionTramiteController planificacionTramiteController) { this.planificacionTramiteController = planificacionTramiteController; } public TcustPersonDetail getTcustPersonDetailInspeccion() { return tcustPersonDetailInspeccion; } public void setTcustPersonDetailInspeccion( TcustPersonDetail tcustPersonDetailInspeccion) { this.tcustPersonDetailInspeccion = tcustPersonDetailInspeccion; } public Boolean getBtn() { return btn; } public void setBtn(Boolean btn) { this.btn = btn; } public String getCodigoPersonaSitioAlm() { return codigoPersonaSitioAlm; } public void setCodigoPersonaSitioAlm(String codigoPersonaSitioAlm) { this.codigoPersonaSitioAlm = codigoPersonaSitioAlm; } public String getNumerotrabajo() { return numerotrabajo; } public void setNumerotrabajo(String numerotrabajo) { this.numerotrabajo = numerotrabajo; } }