221 lines
9.5 KiB
Plaintext
Executable File
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');
|
|
}
|
|
|
|
}
|