package com.fp.armas.rules.save.solicitud; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Calendar; 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.soli.TarmBodega; import com.fp.persistence.parmas.soli.TarmDecomiso; import com.fp.persistence.parmas.soli.TarmDecomisoArma; import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; import com.fp.persistence.parmas.soli.TarmTransaccionArmaBodega; import com.fp.persistence.pgeneral.gene.TgeneParameters; import com.fp.persistence.pgeneral.gene.TgeneParametersKey; import com.fp.sessionbeans.helper.Sequence; public class DecomisoArmaRecepcion extends TransactionRule { /** * */ private static final long serialVersionUID = -1840770563013500407L; @SuppressWarnings("unchecked") @Override public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { TarmDecomisoArmaTransaccion decomisoArmaTransaccion=(TarmDecomisoArmaTransaccion) pSaveRequest.getSaveBeanModifiedObject("DECOMISOARMATRANSACCION"); //para las transacciones de la bodega List transaccionArmaBodegas=(List) pSaveRequest.getSaveBeanModifiedRecords("TRANSACCIONARMABODEGA"); List bodegas=(List) pSaveRequest.getSaveBeanModifiedRecords("BODEGA"); if(decomisoArmaTransaccion==null){ return pSaveRequest; } if(transaccionArmaBodegas==null){ transaccionArmaBodegas= new ArrayList<>(); } if(bodegas==null){ bodegas=new ArrayList<>(); } TgeneParametersKey pKey= new TgeneParametersKey(); pKey.setCode("CODIGO.RECEPCION"); pKey.setCompanycode(1); TgeneParameters parametro =TgeneParameters.find(PersistenceHelper.getEntityManager(), pKey); String prefijo=pSaveRequest.get("prefijo").toString(); Calendar cal=Calendar.getInstance(); java.sql.Date fechaRegistro=new java.sql.Date(cal.getTimeInMillis()); //GENERA EL CODIGO PARA NUMERO DE TRANSACCION //Long codigoGenerado = Long.parseLong(getCodigo("DECARMTRANRECECCION")); decomisoArmaTransaccion.setPk(Long.parseLong(getCodigo("CDECOMISOARMATRANSACCION"))); decomisoArmaTransaccion.setFtransaccion(fechaRegistro); decomisoArmaTransaccion.setNumerotransaccion( getNumeroTransaccion(prefijo,decomisoArmaTransaccion.getPk().toString())); //actualizacion del decomiso cabecera el centro control destino TarmDecomiso decomiso=(TarmDecomiso)pSaveRequest.getSaveBeanModifiedObject("DECOMISO"); TarmDecomisoArma decomisoArma=(TarmDecomisoArma)pSaveRequest.getSaveBeanModifiedObject("DECOMARMTRANRECECCION"); List lDecomisoArma = (List)pSaveRequest.getSaveBeanModifiedRecords("DECOMARMTRANRECECCION"); if(lDecomisoArma.isEmpty()){ lDecomisoArma.add(decomisoArma); } for (Object object : lDecomisoArma) { TarmDecomisoArma c=(TarmDecomisoArma)object; if(c.getModifiedData().get("seleccion").equals(Boolean.TRUE)){ String centroControl=null; //bodega de origen por envio if(c.getCdecomisoarmatransaccion()!=null && c.getCdecomisoarmatransaccion()>0){ TarmDecomisoArmaTransaccion transa= TarmDecomisoArmaTransaccion.find(PersistenceHelper.getEntityManager(), c.getCdecomisoarmatransaccion()); centroControl=transa.getCcentrocontrol(); }else{ centroControl=c.getModifiedData().get("ccentrocontrol").toString(); } c.setCdecarmtranrecepcion(decomisoArmaTransaccion.getPk()); //transaccion del arma TarmTransaccionArmaBodega tarmTransaccionArmaBodega = new TarmTransaccionArmaBodega(); tarmTransaccionArmaBodega.setPk(Long.parseLong(getCodigo("CTRANARMBODEGA"))); tarmTransaccionArmaBodega.setCdecomisoarmatransaccion(decomisoArmaTransaccion.getPk()); tarmTransaccionArmaBodega.setCcentrocontrolorigen(centroControl); tarmTransaccionArmaBodega.setCcentrocontroldestino(decomisoArmaTransaccion.getCcentrocontrol()); tarmTransaccionArmaBodega.setCarma(c.getCarma()); tarmTransaccionArmaBodega.setOperacioncode("OPERACIONDECOMISO"); tarmTransaccionArmaBodega.setOperacion(parametro.getTextvalue()); tarmTransaccionArmaBodega.setFecha(new Timestamp(new Date().getTime())); transaccionArmaBodegas.add(tarmTransaccionArmaBodega); //bodega actualiza o inserta TarmBodega bodega=null; List bodegal=PersistenceHelper.getEntityManager() .createQuery("select o from TarmBodega o where o.carma=:carma") .setParameter("carma", c.getCarma()) .getResultList(); if(bodegal!=null && bodegal.size()>0){ bodega=bodegal.get(0); } if(bodega==null){ bodega= new TarmBodega(); bodega.setPk(Long.parseLong(getCodigo("CBODEGA"))); } bodega.setCarma(c.getCarma()); bodega.setCcentrocontrol(decomisoArmaTransaccion.getCcentrocontrol()); bodegas.add(bodega); //actualiza la cab del decomiso centro conttrol destino decomiso=TarmDecomiso.find(PersistenceHelper.getEntityManager(), c.getCdecomiso()); decomiso.setCcentrocontroldestino(decomisoArmaTransaccion.getCcentrocontrol()); } } pSaveRequest.getResponse().put("numerotransaccionrecep", decomisoArmaTransaccion.getNumerotransaccion()); return pSaveRequest; } @Override public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { // TODO Auto-generated method stub return null; } private String getCodigo(String codigoSec) throws Exception { Sequence sequence = new Sequence(); Integer solcitud = Integer.valueOf(sequence.getNextValue(codigoSec).toString()); return solcitud.toString(); } private String getNumeroTransaccion(String prefijo,String secuencia){ System.out.println("Ingresa al secuencial"); return prefijo+"-"+StringUtils.leftPad(secuencia, 9, '0'); } }