package com.fp.armas.rules.save.solicitud; import java.math.BigDecimal; import java.sql.Timestamp; import java.util.Date; 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.commondb.PersistenceHelper; import com.fp.persistence.commondb.helper.FormatDates; import com.fp.persistence.parmas.fun.TarmRegistroArmas; import com.fp.persistence.parmas.soli.TarmArmas; import com.fp.persistence.parmas.soli.TarmDecomiso; import com.fp.persistence.parmas.soli.TarmDecomisoArma; import com.fp.persistence.pcustomer.gene.TcustPerson; import com.fp.persistence.pcustomer.gene.TcustPersonDetail; import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey; import com.fp.persistence.pcustomer.gene.TcustPersonPhone; import com.fp.persistence.pcustomer.gene.TcustPersonPhoneKey; import com.fp.sessionbeans.helper.Sequence; /** * Clase que se encarga de completar información de una solicitud de control de armas. * * @author C.P. * @version 2.1 */ public class DecomisoMaterial 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 { if (this.isNew(pSaveRequest)) { return pSaveRequest; } //decomiso if((List)pSaveRequest.getSaveBeanModifiedRecords("DECOMISO") == null || ((TarmDecomiso)((List)pSaveRequest.getSaveBeanModifiedRecords("DECOMISO")).get(0)).getPk()!=null){ return pSaveRequest; } //personas a crear List personDetailList = (List)pSaveRequest.getSaveBeanModifiedRecords("TCUSTPERSONDETAIL"); //registro del arma List registroArmaList = (List)pSaveRequest.getSaveBeanModifiedRecords("TREGISTROARMAS");//seteado en el arma //arma a decomisar List armaList = (List)pSaveRequest.getSaveBeanModifiedRecords("ARMAS"); //detalle del decomiso List tarmDecomisoArma = (List)pSaveRequest.getSaveBeanModifiedRecords("TARMDECOMISOARMA");//seteado en el decomiso //telefono List personPhoneList = (List)pSaveRequest.getSaveBeanModifiedRecords("TCUSTPERSONPHONE"); //TREGISTROARMAS TcustPersonDetail personDetailPortador= null; for(Object obj:personDetailList){ TcustPersonDetail personaDetail=(TcustPersonDetail)obj; if(personaDetail.getPk()==null || personaDetail.getPk().getPersoncode()==null){ TcustPerson persona=new TcustPerson(); persona.setPk(getPersonCode()); //insertamos la persona PersistenceHelper.getEntityManager().persist(persona); completePersonDetail(personaDetail, persona.getPk()); personaDetail.getPk().setDateto(FormatDates.getDefaultExpiryTimestamp()); //inserta el detalle PersistenceHelper.getEntityManager().persist(personaDetail); } personDetailPortador=personaDetail; if(personPhoneList!=null){ for(Object objPhone:personPhoneList){ TcustPersonPhone telefono=(TcustPersonPhone)objPhone; telefono.setPk(new TcustPersonPhoneKey()); telefono.getPk().setPhonesequence(1); telefono.getPk().setDateto(FormatDates.getDefaultExpiryTimestamp()); telefono.getPk().setPersoncode(personDetailPortador.getPk().getPersoncode()); } } } //DECOMISO TarmDecomiso decomiso=null; //se inserta el DECOMISO cabecera for(Object obj:(List)pSaveRequest.getSaveBeanModifiedRecords("DECOMISO")){ decomiso=(TarmDecomiso)obj; if(personDetailPortador!=null && personDetailPortador.getPk()!=null && personDetailPortador.getPk().getPersoncode()!=null){ decomiso.setPersoncode(personDetailPortador.getPk().getPersoncode()); } decomiso.setPk(Long.parseLong(getCodigo("CDECOMISO"))); decomiso.setNumerotransaccion(getNumeroTransaccion(decomiso.getTipoproceso(), decomiso.getPk().toString())); } //registramos el arma y si ya existe le cambiamos de estado for(Object obj:armaList){ TarmArmas arma=(TarmArmas)obj; TarmRegistroArmas registroArma=null; if(arma.getUnidadmedidacantidad()==null || arma.getUnidadmedidacantidad().trim().length()==0){ arma.setUnidadmedidacantidad(arma.getModifiedData().get("unidadmedidadesc").toString()); } //creamos el arma arma.setPk(getCodigo("CARMA")); //SI ES NUEVA CREA if(arma.getCodigoarma()==null || arma.getCodigoarma().trim().length()==0){ arma.setCodigoarma(arma.getPk()); } //REGISTRO ARMA if(arma.getModifiedData().get("personcode")!=null && arma.getModifiedData().get("tiporegistro")!=null){ registroArma=new TarmRegistroArmas(); //PK registroArma.setPk(Long.parseLong(getCodigo("CREGISTRO"))); //personcode registroArma.setPersoncode(Integer.parseInt(arma.getModifiedData().get("personcode").toString())); registroArma.setTiporegistro(arma.getModifiedData().get("tiporegistro").toString()); registroArma.setTiporegistrocodigo(arma.getModifiedData().get("tiporegistrocode").toString()); //pais de origen registroArma.setPaisorigen(arma.getModifiedData().get("paisorigen").toString()); //fecha de creacion registroArma.setFcreacion(new java.sql.Date(new Date().getTime())); registroArmaList.add(registroArma); } //validamos el pk de REGISTROARMA if(registroArma!=null && registroArma.getPk()!=null){ arma.setCregistro(registroArma.getPk()); } //seteo del detalle del DECOMISOARMA y a que arma se le hace el decomiso TarmDecomisoArma decomisoArma= new TarmDecomisoArma(); decomisoArma.setCarma( arma.getPk()); //estadoarma es igual que el estado del arma decomisoArma.setEstado(arma.getEstado()); decomisoArma.setEstadocode(arma.getEstadocodigo()); //motivo del decomiso decomisoArma.setMotivodecomiso(arma.getModifiedData().get("motivocatalogo").toString());//motivo decomisoArma.setMotivodecomisocodigo(arma.getModifiedData().get("motivocatalogocode").toString());//1 //observacion decomisoArma.setObservacion(arma.getModifiedData().get("observaciondecomiso").toString()); //cantidad decomisoArma.setCantidad(new BigDecimal(arma.getModifiedData().get("cantidad").toString()));//cantidad //unidad del arma o material explosivo decomisoArma.setUnidadmedida(arma.getUnidadmedidacantidad());//unidad de medida decomisoArma.setUnidadmedidacode(arma.getUnidadmedidacantidadcodigo());//3 //fecha del decomiso arma la actual decomisoArma.setFdecomiso(new Timestamp(new java.util.Date().getTime())); //codigo del decomiso decomisoArma.setPk(getCodigo("CDECOMISOARMA")); //codigo del decomiso decomisoArma.setCdecomiso(decomiso.getPk()); //en bodega decomisoArma.setEnbodega("Y"); tarmDecomisoArma.add(decomisoArma); } pSaveRequest.getResponse().put("numerotransaccion",decomiso.getNumerotransaccion()); //datos para el flujo pSaveRequest.getResponse().put("cdecomiso", decomiso.getPk()); 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(); String solcitud = sequence.getNextValue(codigoSec).toString(); return solcitud; } private String getNumeroTransaccion(String prefijo,String secuencia){ System.out.println("Ingresa al secuencial armas"); return prefijo+"-"+StringUtils.leftPad(secuencia, 9, '0'); } }