maia/.svn/pristine/73/7351fa3572d94a52e176fd65a4d...

221 lines
9.5 KiB
Plaintext
Executable File

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<Object>)pSaveRequest.getSaveBeanModifiedRecords("DECOMISO") == null || ((TarmDecomiso)((List<Object>)pSaveRequest.getSaveBeanModifiedRecords("DECOMISO")).get(0)).getPk()!=null){
return pSaveRequest;
}
//personas a crear
List<Object> personDetailList = (List<Object>)pSaveRequest.getSaveBeanModifiedRecords("TCUSTPERSONDETAIL");
//registro del arma
List<Object> registroArmaList = (List<Object>)pSaveRequest.getSaveBeanModifiedRecords("TREGISTROARMAS");//seteado en el arma
//arma a decomisar
List<Object> armaList = (List<Object>)pSaveRequest.getSaveBeanModifiedRecords("ARMAS");
//detalle del decomiso
List<Object> tarmDecomisoArma = (List<Object>)pSaveRequest.getSaveBeanModifiedRecords("TARMDECOMISOARMA");//seteado en el decomiso
//telefono
List<Object> personPhoneList = (List<Object>)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<Object>)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');
}
}