maia/.svn/pristine/7b/7b5da8651082819488bf4213429...

178 lines
8.7 KiB
Plaintext
Executable File

package com.fp.armas.rules.save.webservices;
import static com.fp.armas.rules.query.webservices.ConsultaImpresionProceso.QUERY_COLA_SOLICITUD;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import javax.persistence.Query;
import com.fp.common.logger.APPLogger;
import com.fp.dto.rules.TransactionRule;
import com.fp.dto.save.SaveRequest;
import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.commondb.exception.CommondbException;
import com.fp.persistence.commondb.helper.FormatDates;
import com.fp.persistence.parmas.inte.TarmColadeImpresion;
import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante;
import com.fp.persistence.parmas.soli.TarmSolicitud;
import com.fp.persistence.pcustomer.company.TcustCompany;
import com.fp.persistence.pcustomer.company.TcustCompanyKey;
import com.fp.persistence.pcustomer.gene.TcustPersonDetail;
import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey;
import com.fp.persistence.pcustomer.people.TcustPeople;
import com.fp.persistence.pcustomer.people.TcustPeopleKey;
import com.fp.persistence.pgeneral.image.TgeneFiles;
import com.fp.persistence.pgeneral.image.TgeneFilesDetail;
import com.fp.persistence.pgeneral.image.TgeneFilesDetailKey;
import com.fp.sessionbeans.helper.Sequence;
/**
* Actualiza los datos del documento habilitante enviado
* @author dcruz
*
*/
public class DocumentoDatos extends TransactionRule {
private static final long serialVersionUID = -951465699701916612L;
public static final String SQLDOCUMENTOCOLAIMPRESION="SELECT o FROM TarmColadeImpresion o"
+ " WHERE o.cdocumento IN (SELECT i.pk FROM TarmDocumentoHabilitante i "
+ " WHERE i.numerodocumento =:numerodocumento)";
/**
* Actualizamos fecha de impresión en la cola de impresion encontrada, actualizamos la foto de la persona o el logo de la companía según sea el caso
*/
@SuppressWarnings("unchecked")
@Override
public SaveRequest normalProcess(SaveRequest pRequest) throws Exception {
System.out.println(".........ACTUALIZA LOS DATOS DEL TARMCOLADEIMPRESION...................");
String respuesta = "0";
try {
byte[] foto = (byte[]) pRequest.get("FOTO");
String numerosolicitud = (String) pRequest.get("CODIGOSOLICITUD");//numero de solicitud
String codigotarjeta = (String) pRequest.get("CODIGOTARJETA");
Date fechaimpresion = (Date) pRequest.get("FECHAIMPRESION");
//
System.out.println(SQLDOCUMENTOCOLAIMPRESION+" "+numerosolicitud);
Query query = PersistenceHelper.getEntityManager().createQuery(SQLDOCUMENTOCOLAIMPRESION);
query.setParameter("numerodocumento", numerosolicitud);
List<TarmColadeImpresion> ltarmcoladeimpresion = query.getResultList();
if(ltarmcoladeimpresion != null && !ltarmcoladeimpresion.isEmpty()){//siempre que es un permiso para imprimir en la cola de impresion recupera uno
TarmColadeImpresion coladeImpresion = ltarmcoladeimpresion.iterator().next();
coladeImpresion.setFechaimpresion(new Timestamp(fechaimpresion.getTime()));
coladeImpresion.setCodigotarjeta(codigotarjeta);
coladeImpresion.setEstadoimpresion("IMPR");
PersistenceHelper.getEntityManager().merge(coladeImpresion);
System.out.println("ACTIALIZA LA COLA DE IMPRESION..");
TarmDocumentoHabilitante documentoHabilitante = TarmDocumentoHabilitante.find(PersistenceHelper.getEntityManager(), coladeImpresion.getCdocumento());
TarmSolicitud solicitud = TarmSolicitud.find(PersistenceHelper.getEntityManager(), documentoHabilitante.getCsolicitud());
TcustPersonDetail personDetail = TcustPersonDetail.find(PersistenceHelper.getEntityManager(), new TcustPersonDetailKey(solicitud.getPersoncode(), FormatDates.getDefaultExpiryTimestamp()));
TgeneFilesDetail fotoLogo = obtenerFoto(personDetail);
if(fotoLogo.getPk() == null){// es un registro nuevo
TcustCompany company = null;
TcustPeople people = null;
if(fotoLogo.getModifiedData().get("DATOASOCIADO") != null && fotoLogo.getModifiedData().get("DATOASOCIADO") instanceof TcustCompany){
company = (TcustCompany) fotoLogo.getModifiedData().get("DATOASOCIADO");
} else if(fotoLogo.getModifiedData().get("DATOASOCIADO") != null && fotoLogo.getModifiedData().get("DATOASOCIADO") instanceof TcustPeople){
people = (TcustPeople) fotoLogo.getModifiedData().get("DATOASOCIADO");
}
TgeneFiles tgeneFiles = new TgeneFiles(getCode());
PersistenceHelper.getEntityManager().persist(tgeneFiles);
fotoLogo.setPk(new TgeneFilesDetailKey(tgeneFiles.getPk(), FormatDates.getDefaultExpiryTimestamp()));
fotoLogo.setDatefrom(new Timestamp(System.currentTimeMillis()));
fotoLogo.setName("FOTO");
fotoLogo.setCapturedate(new java.sql.Date(System.currentTimeMillis()));
fotoLogo.setContenttype("image/jpeg");
fotoLogo.setDescription("LOGO EMPRESA");
fotoLogo.setImage(foto);
fotoLogo.setExtension("jpg");
fotoLogo.setImagesize(foto.length);
PersistenceHelper.getEntityManager().persist(fotoLogo);
System.out.println("INSERTA LA FOTO.....");
//Actualizo en la persona o la compania segun sea el caso
if(company != null){
company.setLogo(tgeneFiles.getPk());
PersistenceHelper.getEntityManager().merge(company);
} else if(people != null){
people.setPhotocode(tgeneFiles.getPk());
PersistenceHelper.getEntityManager().merge(people);
}
} else{//actualizo el registro anterior y genero el historial
TgeneFilesDetail tgeneFilesDetail = new TgeneFilesDetail(new TgeneFilesDetailKey(fotoLogo.getPk().getCode(), new Timestamp(System.currentTimeMillis())));
tgeneFilesDetail.setDatefrom(fotoLogo.getDatefrom());
tgeneFilesDetail.setName(fotoLogo.getName());
tgeneFilesDetail.setCapturedate(fotoLogo.getCapturedate());
tgeneFilesDetail.setContenttype(fotoLogo.getContenttype());
tgeneFilesDetail.setDescription(fotoLogo.getDescription());
tgeneFilesDetail.setImage(fotoLogo.getImage());
tgeneFilesDetail.setExtension(fotoLogo.getExtension());
tgeneFilesDetail.setImagesize(fotoLogo.getImagesize());
PersistenceHelper.getEntityManager().persist(tgeneFilesDetail);
fotoLogo.setImage(foto);
fotoLogo.setImagesize(foto.length);
PersistenceHelper.getEntityManager().merge(fotoLogo);
System.out.println("ACTUALIZA LA FOTO.....");
}
PersistenceHelper.getEntityManager().flush();
}
} catch (Throwable e) {
respuesta = "2";
APPLogger.getLogger().error(e.getMessage(), e);
}
pRequest.getResponse().put("RESPONSESTATUS", respuesta);
return pRequest;
}
@Override
public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception {
return pRequest;
}
/**
* Retorna la foto de la persona si es que esta existe
* @param personDetail
* @return El detalle del achivo imagen que se ha guardado, o un archivo vac&iacute;o sin pk para que pueda ser guardado en la base de datos
* @throws CommondbException
* @throws Exception
*/
private TgeneFilesDetail obtenerFoto(TcustPersonDetail personDetail) throws CommondbException, Exception{
TcustCompany company = null;
TcustPeople people = null;
TgeneFilesDetail result = null;
switch(personDetail.getIdentification().length()){
case 13:
company = TcustCompany.find(PersistenceHelper.getEntityManager(), new TcustCompanyKey(personDetail.getPk().getPersoncode(), FormatDates.getDefaultExpiryTimestamp()));
break;
default:
people = TcustPeople.find(PersistenceHelper.getEntityManager(), new TcustPeopleKey(personDetail.getPk().getPersoncode(), FormatDates.getDefaultExpiryTimestamp()));
break;
}
if(company != null){
result = TgeneFilesDetail.find(PersistenceHelper.getEntityManager(), new TgeneFilesDetailKey(company.getLogo(), FormatDates.getDefaultExpiryTimestamp()));
// result.getModifiedData().put("DATOASOCIADO", company);
} else if(people != null){
result = TgeneFilesDetail.find(PersistenceHelper.getEntityManager(), new TgeneFilesDetailKey(people.getPhotocode(), FormatDates.getDefaultExpiryTimestamp()));
// result.getModifiedData().put("DATOASOCIADO", people);
}
if(result == null){
result = new TgeneFilesDetail();
}
result.getModifiedData().put("DATOASOCIADO", company != null ? company : people);
return result;
}
/**
* Retorna el secuencial para ingresar en la tabla {@link TgeneFiles}
* @return
* @throws Exception
*/
private Integer getCode() throws Exception{
Sequence secuenciaCode = new Sequence();
return Integer.valueOf(secuenciaCode.getNextValue("CODE").toString());
}
}