maia_modificado/.svn/pristine/0c/0ce89559409506e4140517ab807...

151 lines
5.9 KiB
Plaintext
Executable File

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<Object> armaList = (List<Object>)pSaveRequest.getSaveBeanModifiedRecords("ARMAS");
List<Object> custodiaTemporalList = (List<Object>)pSaveRequest.getSaveBeanModifiedRecords("CUSTODIATEM");
//tabla del detalle de la custodia
List<Object> tarmDecomisoArma = (List<Object>)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');
}
}