package com.fp.armas.rules.save.solicitud; import java.math.BigDecimal; import java.sql.Timestamp; import java.util.List; import org.apache.commons.lang.StringUtils; import com.fp.dto.data.SaveData; import com.fp.dto.rules.TransactionRule; import com.fp.dto.save.SaveRequest; import com.fp.persistence.parmas.soli.TarmArmas; import com.fp.persistence.parmas.soli.TarmCustodiaTemporal; import com.fp.persistence.parmas.soli.TarmDecomisoArma; import com.fp.persistence.pcustomer.gene.TcustPersonDetail; import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey; import com.fp.sessionbeans.helper.Sequence; /** * Clase que se encarga de completar información para realizar una custodia temporal. * * @author C.P. * @version 2.1 */ public class CustodiaTemporal extends TransactionRule { private static final long serialVersionUID = 1L; /* * (non-Javadoc) * * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) */ @Override public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { List armaList = (List)pSaveRequest.getSaveBeanModifiedRecords("ARMAS"); List custodiaTemporalList = (List)pSaveRequest.getSaveBeanModifiedRecords("CUSTODIATEM"); //tabla del detalle de la custodia List tarmDecomisoArma = (List)pSaveRequest.getSaveBeanModifiedRecords("TARMDECOMISOARMA"); //registramos el arma y si ya existe le cambiamos de estado for(Object obj:armaList){ TarmArmas arma=(TarmArmas)obj; //creamos el arma arma.setPk(getCodigo("CARMA")); if(tarmDecomisoArma!=null && tarmDecomisoArma.size()>0){ TarmDecomisoArma decomisoArma= (TarmDecomisoArma)tarmDecomisoArma.get(0); decomisoArma.setCarma( arma.getPk()); }else{ //seteo del detalle del decomiso y a que arma se le hace el decomiso TarmDecomisoArma decomisoArma= new TarmDecomisoArma(); decomisoArma.setCarma( arma.getPk()); decomisoArma.setObservacion(arma.getModifiedData().get("observacion").toString()); //unidad de medida decomisoArma.setUnidadmedida(arma.getUnidadmedidacantidad());//unidad de medida decomisoArma.setUnidadmedidacode(arma.getUnidadmedidacantidadcodigo());//3 //estado igual al del arma decomisoArma.setEstado(arma.getEstado()); decomisoArma.setEstadocode(arma.getEstadocodigo()); //cantidad if(arma.getCantidad()!=null){ decomisoArma.setCantidad(new BigDecimal(arma.getCantidad())); } //estados anteriores if(arma.getModifiedData().get("estadoanterior")!=null){ decomisoArma.setEstadoanterior(arma.getModifiedData().get("estadoanterior").toString()); } decomisoArma.setFdecomiso((new Timestamp(new java.util.Date().getTime()))); //codigo del arma decomisoArma.setCarma(arma.getPk()); tarmDecomisoArma.add(decomisoArma); } } TarmCustodiaTemporal custodiaTem=null; if(custodiaTemporalList!=null && custodiaTemporalList.size()>0){ //seteo de los codigos de la custodia temporal for(Object obj:custodiaTemporalList){ custodiaTem=(TarmCustodiaTemporal)obj; custodiaTem.setPk(getCodigo("CCUSTEMP")); custodiaTem.setNotransaccion(getNumeroTransaccion(custodiaTem.getTiporegistro(), custodiaTem.getPk().toString())); pSaveRequest.getResponse().put("numerotransaccion",custodiaTem.getNotransaccion()); } } //se inserta el detalle del decomiso for(Object obj:tarmDecomisoArma){ TarmDecomisoArma decomisoArma=(TarmDecomisoArma)obj; if(custodiaTem!=null){ decomisoArma.setCcustemp(custodiaTem.getPk());//codigo del arma } decomisoArma.setPk(getCodigo("CDECOMISOARMA")); } return pSaveRequest; } /** * Metodo que devuelve la secuencia que le pertenece a una nueva persona. * * @return Codigo de la nueva persona. * @throws Exception */ protected Integer getPersonCode() throws Exception { Sequence sequence = new Sequence(); Integer personcode = Integer.valueOf(sequence.getNextValue("PERSONCODE").toString()); SaveData.getMap().put("PERSONCODE", personcode.toString()); return personcode; } /** * Completa el codigo de la persona en la tabla TcustPersonDetail * * @param tcustPersonDetail Objeto que posee el registro a guardar en la tabla TcustPersonDetail. * @param personcode Codigo de la nueva persona a ser guardada. * @throws Exception */ protected void completePersonDetail(TcustPersonDetail tcustPersonDetail, Integer personcode) throws Exception { TcustPersonDetailKey tcustPersonDetailKey = new TcustPersonDetailKey(); tcustPersonDetailKey.setPersoncode(personcode); tcustPersonDetail.setPk(tcustPersonDetailKey); } /* * (non-Javadoc) * * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) */ @Override public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { return pSaveRequest; } /** * Metodo que devuelve la secuencia del codigo * @param codigoSec * @return String * @throws Exception */ private String getCodigo(String codigoSec) throws Exception { Sequence sequence = new Sequence(); Integer solcitud = Integer.valueOf(sequence.getNextValue(codigoSec).toString()); return solcitud.toString(); } /** * Genera el numero de transaccion para la custodia */ private String getNumeroTransaccion(String prefijo,String secuencia){ return prefijo+"-"+StringUtils.leftPad(secuencia, 6, '0'); } }