178 lines
8.7 KiB
Plaintext
Executable File
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í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());
|
|
}
|
|
}
|