package com.fp.armas.rules.save.armas; import java.math.BigDecimal; import java.sql.Date; import java.sql.Timestamp; import java.util.ArrayList; 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.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.sessionbeans.helper.Sequence; public class ImporteArma extends TransactionRule { private static final long serialVersionUID = -7465655492847129136L; /** * Armas Decomisadas */ @Override public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { //EntityManager entityManager = PersistenceHelper.getEntityManager(); //lista de armas List listArmas = pSaveRequest.getSaveBeanModifiedRecords("ARMASIMPORTE"); //cabecera del arma TarmRegistroArmas registroArmas = (TarmRegistroArmas) pSaveRequest.getSaveBeanModifiedObject("TREGISTROARMAS"); //detalle del decomiso List tarmDecomisoArma = (List)pSaveRequest.getSaveBeanModifiedRecords("TARMDECOMISOARMA");//seteado en el decomiso if(tarmDecomisoArma==null){ tarmDecomisoArma=new ArrayList<>(); } // TarmArmas arma = (TarmArmas) pSaveRequest.get("ARMAACTUAL"); registroArmas.setPk(getCodigoRegistro()); registroArmas.setFcreacion(new Date(System.currentTimeMillis())); //DECOMISO //se inserta el DECOMISO cabecera TarmDecomiso decomiso=(TarmDecomiso)pSaveRequest.getSaveBeanModifiedObject("IMPORTEDECOMISO"); decomiso.setPk(Long.parseLong(getCodigo("CDECOMISO"))); decomiso.setNumerotransaccion(getNumeroTransaccion(decomiso.getTipoproceso(), decomiso.getPk().toString())); for (Object object : listArmas) { TarmArmas armaNueva = (TarmArmas)object; armaNueva.setPk(getCodigoArma()); armaNueva.setFecharegistro(new Date(new java.util.Date().getTime())); armaNueva.setCregistro(registroArmas.getPk()); armaNueva.setCodigoarma(armaNueva.getPk()); //seteo del detalle del DECOMISOARMA y a que arma se le hace el decomiso TarmDecomisoArma decomisoArma= new TarmDecomisoArma(); decomisoArma.setCarma( armaNueva.getPk()); //estadoarma es igual que el estado del arma decomisoArma.setEstado(armaNueva.getEstado()); decomisoArma.setEstadocode(armaNueva.getEstadocodigo()); //motivo del decomiso decomisoArma.setMotivodecomiso(armaNueva.getModifiedData().get("motivocatalogo").toString());//motivo decomisoArma.setMotivodecomisocodigo(armaNueva.getModifiedData().get("motivocatalogocode").toString());//1 //observacion decomisoArma.setObservacion(armaNueva.getModifiedData().get("observaciondecomiso").toString()); //cantidad decomisoArma.setCantidad(new BigDecimal(armaNueva.getModifiedData().get("cantidad").toString()));//cantidad //unidad del arma o material explosivo decomisoArma.setUnidadmedida(armaNueva.getUnidadmedidacantidad());//unidad de medida decomisoArma.setUnidadmedidacode(armaNueva.getUnidadmedidacantidadcodigo());//3 //fecha del decomiso arma la actual java.util.Date fechaRecepcion=(java.util.Date)armaNueva.getModifiedData().get("fechaRecepcion"); decomisoArma.setFdecomiso(new Timestamp(fechaRecepcion.getTime())); //codigo del decomiso decomisoArma.setPk(getCodigo("CDECOMISOARMA")); //codigo del decomiso decomisoArma.setCdecomiso(decomiso.getPk()); //en bodega decomisoArma.setEnbodega("Y"); tarmDecomisoArma.add(decomisoArma); } return pSaveRequest; } @Override public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception { return pRequest; } private Long getCodigoRegistro() throws Exception{ Sequence sequence = new Sequence(); Long cregistro = sequence.getNextValue("CREGISTRO").longValue(); return cregistro; } private String getCodigoArma() throws Exception{ Sequence sequence = new Sequence(); String carma = sequence.getNextValue("CARMA").toString(); return carma; } /** * 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'); } }