package com.fp.armas.rules.save.funcionalidad; import java.util.Date; import java.util.List; import org.apache.commons.lang.StringUtils; import com.fp.dto.rules.TransactionRule; import com.fp.dto.save.SaveRequest; import com.fp.persistence.commondb.PersistenceHelper; import com.fp.persistence.parmas.param.TarmTipoSancion; import com.fp.persistence.parmas.soli.TarmArmas; import com.fp.persistence.parmas.soli.TarmDecomisoArma; import com.fp.persistence.parmas.soli.TarmSancionDecomiso; import com.fp.persistence.parmas.soli.TarmSancionRecomendacion; import com.fp.sessionbeans.helper.Sequence; /** * @author Andres Cevallos * Clase que ingresa un registro de evaluación psicológica y la registra */ /** * @author Andres Cevallos * */ public class Sancionar extends TransactionRule { String numerosancion; /** * Se gestiona el estado del arma y el estado del documento habilitante */ private static final long serialVersionUID = 1L; @Override public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { /*if (this.isNew(pSaveRequest)) { return pSaveRequest; }*/ // 1 SETEO DE LOS AMPOS PARA LA SANCION TarmSancionDecomiso * List lsanciondecomiso =(List) pSaveRequest.getSaveBeanModifiedRecords("SANCIONDECOMISO"); // 2 RECOMENDACIONES * List lrecomendacion = (List)pSaveRequest.getSaveBeanModifiedRecords("SANCIONRECOMENDACION"); //3 TarmArmas Nuevo registro con el nuevo estado List larmas = (List)pSaveRequest.getSaveBeanModifiedRecords("ARMAS"); // 4 TarmDecomisoArma actualiza el estado List larmasDecomisadas = (List)pSaveRequest.getSaveBeanModifiedRecords("TARMDECOMISOARMA"); if(lsanciondecomiso!=null && !lsanciondecomiso.isEmpty()){ TarmSancionDecomiso sanciondecomiso = (TarmSancionDecomiso) lsanciondecomiso.get(0); //Genera el codigo compuesto de sancion sanciondecomiso.getPk().setCsanciondecomiso(getCodigoSancion()); numerosancion=sanciondecomiso.getPk().getCsanciondecomiso(); sanciondecomiso.setNoresolucion("ENV"+"-"+StringUtils.leftPad(numerosancion, 9, '0')); //recorremos las recomendaciones if(lrecomendacion!=null && !lrecomendacion.isEmpty()){//lrecomendacion for(Object recomendacion : lrecomendacion){ TarmSancionRecomendacion recomendacionObj= (TarmSancionRecomendacion) recomendacion; recomendacionObj.setPk(getCodigoRecomendacion()); recomendacionObj.setCsanciondecomiso(sanciondecomiso.getPk().getCsanciondecomiso()); recomendacionObj.setCdecomiso(sanciondecomiso.getPk().getCdecomiso()); } } //Registro del arma sancionada TarmArma TarmArmas armaSancionObj=(TarmArmas) sanciondecomiso.getModifiedData().get("arma"); armaSancionObj.setIsnew(true); armaSancionObj.setFecharegistro(new java.sql.Date(new Date().getDate())); armaSancionObj.setPk(getCodigoArmas()); //VALIDAMOS EL TIPO DE SANCION TarmTipoSancion tipoSancionObj = TarmTipoSancion.find(PersistenceHelper.getEntityManager(), sanciondecomiso.getCtiposancion()); if(tipoSancionObj!=null){ System.out.println("sancion ...."+tipoSancionObj.getSancion()); if(tipoSancionObj.getSancion().equals("1")){ // CUANDO LA SANCION ESCOGIDA ES UNA CANCELACION DE PERMISO armaSancionObj.setEstado("CANC"); armaSancionObj.setEstadocodigo("ESTADOARMA"); armaSancionObj.setFecharegistro(new java.sql.Date(new Date().getTime())); }else if(tipoSancionObj.getSancion().equals("2")){ // CUANDO LA SANCION ESCOGIDA ES UNA SUSPENCION DE PERMISO armaSancionObj.setEstado("SUSP"); armaSancionObj.setEstadocodigo("ESTADOARMA"); armaSancionObj.setFecharegistro(new java.sql.Date(new Date().getTime())); }else if(tipoSancionObj.getSancion().equals("SANCIONSINDOC")){ //cuando no tiene documento para sancionar se le deja en estado incautado armaSancionObj.setEstado("INC"); armaSancionObj.setEstadocodigo("ESTADOARMA"); armaSancionObj.setFecharegistro(new java.sql.Date(new Date().getTime())); }else{ throw new Exception("SANCI\u00d3N NO ENCONTRADA : "+tipoSancionObj.getSancion()); } }else{ throw new Exception("TIPO DE SANCI\u00d3N NO ENCONTRADA"); } larmas.add(armaSancionObj); //Registro del armaDECOMISO TarmDecomisoArma TarmDecomisoArma tarmDecomisoArma = (TarmDecomisoArma) armaSancionObj.getModifiedData().get("decomisoArma"); tarmDecomisoArma.setEstado(armaSancionObj.getEstado()); larmasDecomisadas.add(tarmDecomisoArma); } return pSaveRequest; } @Override public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { return pSaveRequest; } /** * Obtiene el codigo de la evaluacion * @return * @throws Exception */ private String getCodigoRecomendacion() throws Exception { Sequence sequence = new Sequence(); String codigo = sequence.getNextValue("CSANCIONRECOMENDACION").toString(); return codigo; } private String getCodigoSancion() throws Exception { Sequence sequence = new Sequence(); String codigo = sequence.getNextValue("CSANCIONDECOMISO").toString(); return codigo; } private String getCodigoArmas() throws Exception { Sequence sequence = new Sequence(); String codigoArma = sequence.getNextValue("CARMA").toString(); return codigoArma; } }