785 lines
33 KiB
Plaintext
Executable File
785 lines
33 KiB
Plaintext
Executable File
package com.fp.frontend.controller.armas.solicitud;
|
|
|
|
|
|
import java.io.InputStream;
|
|
import java.util.ArrayList;
|
|
import java.util.Calendar;
|
|
import java.util.Collection;
|
|
import java.util.Date;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
|
|
import javax.annotation.PostConstruct;
|
|
import javax.faces.bean.ManagedBean;
|
|
import javax.faces.bean.ManagedProperty;
|
|
import javax.faces.bean.ViewScoped;
|
|
import javax.faces.context.FacesContext;
|
|
import javax.faces.event.AjaxBehaviorEvent;
|
|
|
|
import org.primefaces.component.selectbooleancheckbox.SelectBooleanCheckbox;
|
|
import org.primefaces.event.SelectEvent;
|
|
|
|
import com.fp.dto.Request;
|
|
import com.fp.dto.Response;
|
|
import com.fp.dto.query.DtoQuery;
|
|
import com.fp.dto.query.Filter;
|
|
import com.fp.dto.save.DtoSave;
|
|
import com.fp.frontend.controller.AbstractController;
|
|
import com.fp.frontend.controller.ReportController;
|
|
import com.fp.frontend.controller.alfresco.AlfrescoController;
|
|
import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController;
|
|
import com.fp.frontend.controller.armas.parametros.CentroControlArmasController;
|
|
import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController;
|
|
import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController;
|
|
import com.fp.frontend.controller.pcustomer.PersonAddressController;
|
|
import com.fp.frontend.controller.pcustomer.PersonDetailController;
|
|
import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController;
|
|
import com.fp.frontend.controller.pgeneral.gene.ParametersController;
|
|
import com.fp.frontend.helper.MessageHelper;
|
|
import com.fp.frontend.utility.MsgControlArmas;
|
|
import com.fp.frontend.utility.Utilidades;
|
|
import com.fp.persistence.parmas.fun.TarmRegistroArmas;
|
|
import com.fp.persistence.parmas.param.TarmCentroControl;
|
|
import com.fp.persistence.parmas.param.TarmCentroControlJur;
|
|
import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo;
|
|
import com.fp.persistence.parmas.soli.TarmArmas;
|
|
import com.fp.persistence.parmas.soli.TarmCabRepDestruirArmas;
|
|
import com.fp.persistence.parmas.soli.TarmDecomiso;
|
|
import com.fp.persistence.parmas.soli.TarmDecomisoArma;
|
|
import com.fp.persistence.parmas.soli.TarmDetRepDestruirArmas;
|
|
import com.fp.persistence.pcustomer.gene.TcustPersonAddress;
|
|
import com.fp.persistence.pcustomer.gene.TcustPersonDetail;
|
|
import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail;
|
|
import com.fp.persistence.pgeneral.safe.TsafeUserDetail;
|
|
|
|
/**
|
|
* Clase controladora de la generación de reporte de armas a destruirse
|
|
*
|
|
* @author Christian Pazmino.
|
|
* @version 2.1
|
|
*/
|
|
|
|
@SuppressWarnings("serial")
|
|
@ManagedBean
|
|
@ViewScoped
|
|
public class ReporteDestruccionDeArmasController extends AbstractController<TarmDecomisoArma> {
|
|
|
|
/**
|
|
* Fecha de corte a la que se generara el reporte
|
|
* */
|
|
private Date fechaCorte;
|
|
/**
|
|
* Formato de reporte que se va a generar
|
|
* */
|
|
private String format = "pdf";
|
|
/**
|
|
* Usuario actual loogueado en el sistema
|
|
* */
|
|
private TsafeUserDetail userDetail;
|
|
/**
|
|
* Variable de tipo entero que lee de la tabla parámetros el número de días en decomiso previo a la destrucción del arma
|
|
* */
|
|
private Integer diasParaDestruirArma;
|
|
/**
|
|
* Catalogcode de la tabla Catálogos que funciona como bandera para indicar si un arma ya se encuentra en algún reporte previo.
|
|
* */
|
|
private final String CATALOGCODEADESTRUIRSE = "ADESTRUIRSE";
|
|
/**
|
|
* Ruta base del reporte generado en el Alfresco
|
|
* */
|
|
private String xPathLocation;
|
|
/**
|
|
* Ubicacion completa del reporte generado en el Alfresco
|
|
* */
|
|
private String xPath;
|
|
/**
|
|
* Nombre del reporte generado en el Alfresco
|
|
* */
|
|
private String nombreReporte;
|
|
/**
|
|
* Codigo de cabecera del reporte generado en base de datos
|
|
* */
|
|
private String creporte;
|
|
/**
|
|
* Bandera de tipo booleano para indicar si se genero o no el reporte
|
|
* */
|
|
private Boolean seGeneroReporte;
|
|
/**
|
|
* Bandera de tipo booleano para indicar si se ha grabado el reporte generado
|
|
* */
|
|
private Boolean isEnableGrabar;
|
|
/**
|
|
* Bandera de tipo booleano para indicar que se debe deshabilitar el boton iniciar flujo
|
|
* */
|
|
private Boolean isEnableEnviar;
|
|
/**
|
|
* Variable del tipo TgeneCatalogDetail(Esta en reporte de armas a destruirse)
|
|
*/
|
|
private TgeneCatalogDetail aDestruirseCatalog;
|
|
/**
|
|
* Clase controladora de reportes
|
|
*/
|
|
@ManagedProperty(value = "#{reportController}")
|
|
private ReportController reportController;
|
|
/**
|
|
* Clase controladora de cabecera de reporte de armas a destruir
|
|
*/
|
|
@ManagedProperty(value = "#{cabRepDestruirArmasController}")
|
|
private CabRepDestruirArmasController cabRepDestruirArmasController;
|
|
/**
|
|
* Clase controladora de detalle de reporte de armas a destruir
|
|
*/
|
|
@ManagedProperty(value = "#{detRepDestruirArmasController}")
|
|
private DetRepDestruirArmasController detRepDestruirArmasController;
|
|
/**
|
|
* Clase controladora de funcionalidad del Alfresco
|
|
*/
|
|
@ManagedProperty(value="#{alfrescoController}")
|
|
private AlfrescoController alfrescoController;
|
|
/**
|
|
* codigo de la provincia del usuario logeado
|
|
*/
|
|
private String cprovincia;
|
|
public ReporteDestruccionDeArmasController() throws Exception {
|
|
super(TarmDecomisoArma.class);
|
|
// TODO Auto-generated constructor stub
|
|
}
|
|
|
|
@PostConstruct
|
|
private void postconstruct() {
|
|
this.init();
|
|
// Inicializa autoconsulta
|
|
super.startQuery();
|
|
}
|
|
|
|
/**
|
|
* Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador.
|
|
*/
|
|
private void init() {
|
|
try {
|
|
userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL");
|
|
diasParaDestruirArma = ParametersController.find("DIASENBODEGA.DESTRUIRARMAS", "1").getNumbervalue().intValue();
|
|
aDestruirseCatalog = CatalogDetailController.findxCodigoCodcatalogo("1", CATALOGCODEADESTRUIRSE);
|
|
recperpage = 10000; // Cambiar al # reg a mirar.
|
|
lrecord = new ArrayList<TarmDecomisoArma>();
|
|
beanalias = "RPRTEDESTRUCCIONDEARMAS";
|
|
seGeneroReporte = Boolean.FALSE;
|
|
isEnableGrabar = Boolean.TRUE;
|
|
isEnableEnviar = Boolean.FALSE;
|
|
TarmCentroControl centroControl=Utilidades.obtenerCentroControl();
|
|
cprovincia=centroControl.getProvincecode();
|
|
querydatabase();
|
|
} catch (Exception e) {
|
|
MessageHelper.setMessageError(e);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Obtiene el centro de control segun usurio logeado.
|
|
* @throws Exception
|
|
*
|
|
*/
|
|
/**
|
|
* Metodo que se debe ejecutar cuando es una transaccion de tipo verificar armas
|
|
* @throws Exception
|
|
*/
|
|
// private void provinciaUsuario() throws Exception {
|
|
// PersonAddressController personAddressController = new PersonAddressController();
|
|
// TcustPersonAddress tcustPersonAddres= personAddressController.findPrincipal(userDetail.getPk().getPersoncode().toString());
|
|
// cprovincia=tcustPersonAddres.getProvincecode();
|
|
// }
|
|
|
|
/**
|
|
* Crea una instancia y marca el registro como nuevo.
|
|
*
|
|
* @throws Exception
|
|
*/
|
|
@Override
|
|
public void create() throws Exception {
|
|
super.create();
|
|
}
|
|
|
|
/**
|
|
* Seleccionado todos los registros de la tabla
|
|
*/
|
|
public void seleccionarTodos(AjaxBehaviorEvent event) {
|
|
try {
|
|
Boolean valorColocar = Boolean.FALSE;
|
|
if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){
|
|
valorColocar = Boolean.TRUE;
|
|
}
|
|
for (TarmDecomisoArma decomisoArmaObj : lrecord) {
|
|
decomisoArmaObj.getModifiedData().put("isSelect", valorColocar);
|
|
}
|
|
} catch (Throwable e) {
|
|
MessageHelper.setMessageError(e);
|
|
}
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
protected void querydatabase() {
|
|
try {
|
|
if(fechaCorte!=null){
|
|
Calendar fechaActualCldr = Calendar.getInstance();
|
|
Calendar fechaCorteCldr = Calendar.getInstance();
|
|
fechaCorteCldr.setTime(fechaCorte);
|
|
if(fechaActualCldr.compareTo(fechaCorteCldr)>=0){
|
|
|
|
DtoQuery dto = super.getDtoQuery(true);
|
|
dto.setOrderby("t.fdecomiso");
|
|
|
|
Calendar fechaReferenciaReporteCldr = Calendar.getInstance();
|
|
|
|
fechaReferenciaReporteCldr.setTime(fechaCorte);
|
|
|
|
fechaReferenciaReporteCldr.add(Calendar.DAY_OF_MONTH, -diasParaDestruirArma);
|
|
StringBuilder fechaReferenciaSB = new StringBuilder();
|
|
fechaReferenciaSB = fechaReferenciaSB.append((fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)) : (fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)));
|
|
fechaReferenciaSB = fechaReferenciaSB.append("-").append((fechaReferenciaReporteCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaReferenciaReporteCldr.get(Calendar.MONTH) + 1) : (fechaReferenciaReporteCldr.get(Calendar.MONTH)+1));
|
|
fechaReferenciaSB = fechaReferenciaSB.append("-").append(fechaReferenciaReporteCldr.get(Calendar.YEAR));
|
|
|
|
Filter fechaFiltro= new Filter();
|
|
fechaFiltro.setSql("(t.estado='DEC' or t.estado='INC' or t.estado='ABA' or t.estado='ENTR') and t.adestruirse is null and t.adestruirsecode is null and t.fdecomiso < " + "TO_DATE('" + fechaReferenciaSB.toString() + "','dd-mm-yyyy') and not exists(select 1 from TarmArmas ta where ta.estado = 'SUSP' and t.carma = (select max(tax.pk) from TarmArmas tax where ta.pk = tax.pk))");
|
|
dto.addFiltro(fechaFiltro);
|
|
|
|
HashMap<String, DtoQuery> mtables = new HashMap<String, DtoQuery>();
|
|
mtables.put(beanalias, dto); // permite adicionar mas de una tabla.
|
|
|
|
Request request = callerhelper.getRequest();
|
|
request.setQueryTables(mtables);
|
|
|
|
Response resp = callerhelper.executeQuery(request);
|
|
|
|
if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) {
|
|
lrecord = new ArrayList<TarmDecomisoArma>();
|
|
MessageHelper.setMessageError(resp);
|
|
} else {
|
|
lrecord = (List<TarmDecomisoArma>) resp.get(beanalias);
|
|
for(TarmDecomisoArma decomisoArma:lrecord){
|
|
if(decomisoArma.getCdecomiso()!=null){
|
|
decomisoArma.getModifiedData().put("isSelect",Boolean.FALSE);
|
|
TarmArmas arma = ArmasController.findByPK(decomisoArma.getCarma());
|
|
TarmTipoArmaExplosivo tipoArmaExplosivo = TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo());
|
|
decomisoArma.getModifiedData().put("ntipo", arma.getModifiedData().get("tipo"));
|
|
decomisoArma.getModifiedData().put("nclase", arma.getModifiedData().get("clase"));
|
|
if(tipoArmaExplosivo.getLongitud()!=null){
|
|
decomisoArma.getModifiedData().put("nlongitud", CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getLongitud(), tipoArmaExplosivo.getLongitudcodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getLongitud(), tipoArmaExplosivo.getLongitudcodigo()).getDescription():"");
|
|
}
|
|
else{
|
|
decomisoArma.getModifiedData().put("nlongitud", "");
|
|
}
|
|
if(tipoArmaExplosivo.getCalibre()!=null){
|
|
decomisoArma.getModifiedData().put("ncalibre", CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getCalibre(), tipoArmaExplosivo.getCalibrecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getCalibre(), tipoArmaExplosivo.getCalibrecodigo()).getDescription():"");
|
|
}
|
|
else{
|
|
decomisoArma.getModifiedData().put("ncalibre", "");
|
|
}
|
|
|
|
decomisoArma.getModifiedData().put("nmarca", CatalogDetailController.findxCodigoCodcatalogo( arma.getMarca(), arma.getMarcacodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo( arma.getMarca(), arma.getMarcacodigo()).getDescription():"");
|
|
decomisoArma.getModifiedData().put("nserie", arma.getLote());
|
|
decomisoArma.getModifiedData().put("nunidad", CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getUnidadmedida(), decomisoArma.getUnidadmedidacode())!=null?CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getUnidadmedida(), decomisoArma.getUnidadmedidacode()).getDescription():"");
|
|
|
|
TarmRegistroArmas registroArma = RegistroArmController.findByCodigo(arma.getCregistro().toString());
|
|
if(registroArma!=null && registroArma.getPersoncode()!=null){
|
|
Integer personCodePropietario = registroArma.getPersoncode();
|
|
decomisoArma.getModifiedData().put("npropietario", PersonDetailController.find(personCodePropietario.toString()).getName());
|
|
}
|
|
else{
|
|
decomisoArma.getModifiedData().put("npropietario", "");
|
|
}
|
|
TarmDecomiso decomiso = DecomisoController.findByCodigo(decomisoArma.getCdecomiso().toString());
|
|
if(decomiso!=null && decomiso.getNumerodocumento()!=null){
|
|
decomisoArma.getModifiedData().put("nrecibo", decomiso.getNumerorecibo());
|
|
}
|
|
else{
|
|
decomisoArma.getModifiedData().put("nrecibo", "");
|
|
}
|
|
}
|
|
else{
|
|
lrecord.remove(decomisoArma);
|
|
}
|
|
}
|
|
super.postQuery(lrecord);
|
|
}
|
|
}
|
|
else{
|
|
lrecord = new ArrayList<TarmDecomisoArma>();
|
|
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_fechaCorteMayorAFechaActual"));
|
|
}
|
|
}
|
|
} catch (Throwable e) {
|
|
MessageHelper.setMessageError(e);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Metodo para reconsultar en base a una nueva fecha de corte seleccionada
|
|
*/
|
|
public void cambioFechaDeCorte(SelectEvent event){
|
|
querydatabase();
|
|
}
|
|
|
|
@Override
|
|
public void postCommit(Response response) throws Exception {
|
|
super.postCommitGeneric(response, beanalias);
|
|
cabRepDestruirArmasController.postCommit(response);
|
|
detRepDestruirArmasController.postCommit(response);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Genera un reporte de armas a destruir
|
|
*
|
|
*/
|
|
public void generateReport() {
|
|
if(fechaCorte!=null){
|
|
if(existeArmasSeleccionadas()){
|
|
Calendar fechaActualCldr = Calendar.getInstance();
|
|
Calendar fechaCorteCldr = Calendar.getInstance();
|
|
fechaCorteCldr.setTime(fechaCorte);
|
|
if(fechaActualCldr.compareTo(fechaCorteCldr)>=0){
|
|
String path = "armas/reports/bajaDestruccion";
|
|
String filename="ArmasADestruirse";
|
|
|
|
// Fija parametros del report.
|
|
HashMap<String, Object> parameters = new HashMap<>();
|
|
parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto");
|
|
parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas");
|
|
// Datos del supervisor militar
|
|
String CISupervisorMilitar = ParametersController.find("IDSUPERMILITDPTOARMSPICH", "1").getTextvalue();
|
|
TcustPersonDetail supervisorMilitarObj = PersonDetailController.findxidentification(CISupervisorMilitar, "CED");
|
|
String gradoSupMilitar = supervisorMilitarObj.getMilitarygrade()==null?"": supervisorMilitarObj.getMilitarygrade() + " - ";
|
|
parameters.put("nombreSupMilitar", gradoSupMilitar + supervisorMilitarObj.getName()==null?"":supervisorMilitarObj.getName());
|
|
parameters.put("personCodeSupMilitar", supervisorMilitarObj.getPk().getPersoncode()==null?"1001":supervisorMilitarObj.getPk().getPersoncode());
|
|
// Datos del coordinador militar
|
|
String CICoordinadorMilitar = ParametersController.find("IDCOORDMILITDPTOARMSPICH", "1").getTextvalue();
|
|
TcustPersonDetail coordinadorMilitarObj = PersonDetailController.findxidentification(CICoordinadorMilitar, "CED");
|
|
String gradoCoordMilitar = coordinadorMilitarObj.getMilitarygrade()==null?"":coordinadorMilitarObj.getMilitarygrade() + " - ";
|
|
parameters.put("nombreCoordMilitar", gradoCoordMilitar + coordinadorMilitarObj.getName()==null?"":coordinadorMilitarObj.getName());
|
|
parameters.put("personCodeCoordMilitar", coordinadorMilitarObj.getPk().getPersoncode()==null?"1001":coordinadorMilitarObj.getPk().getPersoncode());
|
|
|
|
try {
|
|
|
|
//Usuario logueado en la aplicacion
|
|
String nombreUsuario;
|
|
if(userDetail.getPk().getPersoncode()!=null){
|
|
nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName();
|
|
}
|
|
else{
|
|
nombreUsuario = "";
|
|
}
|
|
parameters.put("usuario", nombreUsuario);
|
|
|
|
//Fecha de corte
|
|
StringBuilder fechaCorteSB= new StringBuilder();
|
|
fechaCorteSB = fechaCorteSB.append((fechaCorteCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCorteCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCorteCldr.get(Calendar.DAY_OF_MONTH)));
|
|
fechaCorteSB = fechaCorteSB.append("-").append((fechaCorteCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCorteCldr.get(Calendar.MONTH) + 1) : (fechaCorteCldr.get(Calendar.MONTH)+1));
|
|
fechaCorteSB = fechaCorteSB.append("-").append(fechaCorteCldr.get(Calendar.YEAR));
|
|
parameters.put("fechaCorte", fechaCorteSB.toString());
|
|
parameters.put("codArmasDecomisadasLst", actualizarArmasSeleccionadas());
|
|
//Fecha actual
|
|
StringBuilder fechaActualSB = new StringBuilder();
|
|
fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH)));
|
|
fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1));
|
|
fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR));
|
|
fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY));
|
|
fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE)));
|
|
parameters.put("lugarFecha", fechaActualSB.toString());
|
|
|
|
//Fecha de referencia
|
|
Calendar fechaReferenciaReporteCldr = Calendar.getInstance();
|
|
fechaReferenciaReporteCldr.setTime(fechaCorte);
|
|
fechaReferenciaReporteCldr.add(Calendar.DAY_OF_MONTH, -diasParaDestruirArma);
|
|
StringBuilder fechaReferenciaSB = new StringBuilder();
|
|
fechaReferenciaSB = fechaReferenciaSB.append((fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)) : (fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)));
|
|
fechaReferenciaSB = fechaReferenciaSB.append("-").append((fechaReferenciaReporteCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaReferenciaReporteCldr.get(Calendar.MONTH) + 1) : (fechaReferenciaReporteCldr.get(Calendar.MONTH)+1));
|
|
fechaReferenciaSB = fechaReferenciaSB.append("-").append(fechaReferenciaReporteCldr.get(Calendar.YEAR));
|
|
parameters.put("fechaReferenciaReporte", fechaReferenciaSB.toString());
|
|
|
|
// Verifico si el reporte fue enviado en el flujo y debe subirse al Alfresco
|
|
// if(isDenied){
|
|
InputStream file =this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController());
|
|
alfrescoController.uploadFile(file, nombreReporte, this.xPathLocation);
|
|
seGeneroReporte = Boolean.TRUE;
|
|
// }else{
|
|
// this.reportController.execute(path, parameters, format, filename, this.getLoginController());
|
|
// }
|
|
|
|
} catch (Exception ex) {
|
|
MessageHelper.setMessageError(ex);
|
|
}
|
|
}
|
|
else{
|
|
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_fechaCorteMayorAFechaActual"));
|
|
}
|
|
}else{
|
|
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccioneAlmenosUnArma"));
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Retorna la ruta de documento base en donde se almacenará el reporte
|
|
*
|
|
* @return
|
|
*/
|
|
public String getRutaDocumentoRepBase() {
|
|
Calendar calendar = Calendar.getInstance();
|
|
calendar.setTime(new Date());
|
|
StringBuilder ruta = new StringBuilder("cm:Decomiso");
|
|
ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR));
|
|
ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1));
|
|
return ruta.toString();
|
|
}
|
|
|
|
|
|
public String getxPath() {
|
|
return xPath;
|
|
}
|
|
|
|
public void setxPath(String xPath) {
|
|
this.xPath = xPath;
|
|
}
|
|
|
|
/**
|
|
* Método para el inicio de flujo. Guardar el reporte creado para su posterior aprobacion en otras instancias del flujo
|
|
*/
|
|
@Override
|
|
public void save(){
|
|
try {
|
|
if(lrecord!=null && lrecord.size()>0){
|
|
if(validaSiExisteArmasSeleccionadas()){
|
|
TarmCabRepDestruirArmas cabeceraReporteObj = new TarmCabRepDestruirArmas();
|
|
cabeceraReporteObj.setFreporte((java.sql.Date)fechaCorte);
|
|
xPathLocation= getRutaDocumentoRepBase() + "/cm:BAJA";
|
|
cabeceraReporteObj.setXpath(xPathLocation);
|
|
cabeceraReporteObj.setIsnew(Boolean.TRUE);
|
|
//Guarda la ruta donde se almacenara el reporte
|
|
cabRepDestruirArmasController.update(cabeceraReporteObj);
|
|
Boolean existArmasEnReporte = Boolean.FALSE;
|
|
for(TarmDecomisoArma decomisoArmaObj:lrecord){
|
|
if(decomisoArmaObj.getAdestruirse()==null){
|
|
if(decomisoArmaObj.getModifiedData().get("isSelect")==null || decomisoArmaObj.getModifiedData().get("isSelect").equals(Boolean.FALSE)){
|
|
continue;
|
|
}
|
|
TarmDetRepDestruirArmas detalleReporteObj = new TarmDetRepDestruirArmas();
|
|
detalleReporteObj.setIsnew(Boolean.TRUE);
|
|
if(decomisoArmaObj.getCdecomiso()!=null){
|
|
detalleReporteObj.setCdecomisoarma(decomisoArmaObj.getPk());
|
|
}
|
|
if(decomisoArmaObj.getModifiedData().get("nclase")!=null){
|
|
detalleReporteObj.setClase(decomisoArmaObj.getModifiedData().get("nclase").toString());
|
|
}
|
|
if(decomisoArmaObj.getModifiedData().get("ntipo")!=null){
|
|
detalleReporteObj.setTipo(decomisoArmaObj.getModifiedData().get("ntipo").toString());
|
|
}
|
|
if(decomisoArmaObj.getModifiedData().get("ncalibre")!=null){
|
|
detalleReporteObj.setCalibre(decomisoArmaObj.getModifiedData().get("ncalibre").toString());
|
|
}
|
|
if(decomisoArmaObj.getModifiedData().get("nmarca")!=null){
|
|
detalleReporteObj.setMarca(decomisoArmaObj.getModifiedData().get("nmarca").toString());
|
|
}
|
|
if(decomisoArmaObj.getModifiedData().get("nserie")!=null){
|
|
detalleReporteObj.setSerie(decomisoArmaObj.getModifiedData().get("nserie").toString());
|
|
}
|
|
if(decomisoArmaObj.getCantidad()!=null){
|
|
detalleReporteObj.setCantidad(decomisoArmaObj.getCantidad().toString());
|
|
}
|
|
if(decomisoArmaObj.getModifiedData().get("nunidad")!=null){
|
|
detalleReporteObj.setUnidad(decomisoArmaObj.getModifiedData().get("nunidad").toString());
|
|
}
|
|
if(decomisoArmaObj.getFdecomiso()!=null){
|
|
java.sql.Date date =new java.sql.Date(decomisoArmaObj.getFdecomiso().getTime());
|
|
detalleReporteObj.setFdecomiso(date);
|
|
}
|
|
if(decomisoArmaObj.getModifiedData().get("npropietario")!=null){
|
|
detalleReporteObj.setPropietario(decomisoArmaObj.getModifiedData().get("npropietario").toString());
|
|
}
|
|
if(decomisoArmaObj.getModifiedData().get("nrecibo")!=null){
|
|
detalleReporteObj.setNrecibo(decomisoArmaObj.getModifiedData().get("nrecibo").toString());
|
|
}
|
|
if(!existArmasEnReporte){
|
|
existArmasEnReporte = Boolean.TRUE;
|
|
}
|
|
|
|
// Marca que indica que el arma decomisada ya se encuentra dentro de un reporte de armas a destruir
|
|
decomisoArmaObj.setAdestruirse(aDestruirseCatalog.getPk().getCatalog());
|
|
decomisoArmaObj.setAdestruirsecode(aDestruirseCatalog.getPk().getCatalogcode());
|
|
record = decomisoArmaObj;
|
|
super.update();
|
|
detRepDestruirArmasController.update(detalleReporteObj);
|
|
|
|
}
|
|
}
|
|
|
|
if(existArmasEnReporte){
|
|
Request request = this.callerhelper.getRequest();
|
|
DtoSave dtosave = super.getDtoSave();
|
|
dtosave.setPosition(1);
|
|
|
|
DtoSave dtoSaveCabecera = cabRepDestruirArmasController.getDtoSave();
|
|
dtoSaveCabecera.setIsForm(Boolean.TRUE);
|
|
dtoSaveCabecera.setReturnpk(Boolean.TRUE);
|
|
dtoSaveCabecera.setPosition(2);
|
|
|
|
DtoSave dtoSaveDetalle = detRepDestruirArmasController.getDtoSave();
|
|
dtoSaveDetalle.setReturnpk(Boolean.TRUE);
|
|
dtoSaveDetalle.setPosition(3);
|
|
|
|
HashMap<String, DtoSave> msave = new HashMap<String, DtoSave>();
|
|
|
|
msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla.
|
|
msave.put(cabRepDestruirArmasController.getBeanalias(),dtoSaveCabecera);
|
|
msave.put(detRepDestruirArmasController.getBeanalias(),dtoSaveDetalle);
|
|
|
|
request.setSaveTables(msave);
|
|
|
|
Response resp = this.callerhelper.executeSave(request);
|
|
|
|
if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) {
|
|
this.postCommit(resp);
|
|
this.cabRepDestruirArmasController.postCommit(resp);
|
|
this.detRepDestruirArmasController.postCommit(resp);
|
|
isEnableGrabar = Boolean.FALSE;
|
|
isEnableEnviar = Boolean.TRUE;
|
|
MessageHelper.setMessageInfo(resp);
|
|
this.nombreReporte = resp.get("nombreReporte").toString();
|
|
this.creporte = resp.get("creporte").toString();
|
|
this.xPath = resp.get("xpath").toString();
|
|
} else {
|
|
MessageHelper.setMessageError(resp);
|
|
}
|
|
}
|
|
else{
|
|
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccioneAlmenosUnArma"));
|
|
}
|
|
}
|
|
else{
|
|
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccioneAlmenosUnArma"));
|
|
}
|
|
}
|
|
} catch (Throwable e) {
|
|
MessageHelper.setMessageError(e);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Metodo usado para validar si existen armas seleccionadas por el usuario
|
|
*/
|
|
public Boolean validaSiExisteArmasSeleccionadas() {
|
|
Boolean bandera = Boolean.FALSE;
|
|
if(lrecord!=null && lrecord.size()>0){
|
|
for(TarmDecomisoArma decomisoArmaObj:lrecord){
|
|
if(decomisoArmaObj.getModifiedData().get("isSelect")!=null && decomisoArmaObj.getModifiedData().get("isSelect").equals(Boolean.TRUE)){
|
|
bandera = Boolean.TRUE;
|
|
}
|
|
}
|
|
}
|
|
return bandera;
|
|
}
|
|
|
|
/**
|
|
* Metodo que inicia el flujo de baja y destruccion de armas
|
|
*/
|
|
public void iniciarFlujo() {
|
|
try {
|
|
if(seGeneroReporte){
|
|
Request request = this.callerhelper.getRequest();
|
|
super.cleanRequest(request);
|
|
request.modifiedData().put("isnew", "Y");
|
|
request.modifiedData().put("xpath", this.xPath);
|
|
request.modifiedData().put("creporte", this.creporte);
|
|
request.modifiedData().put("cprovincia", cprovincia);
|
|
request.setLogsolicitude(this.creporte);
|
|
Response resp = this.callerhelper.executeSave(request);
|
|
if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) {
|
|
MessageHelper.setMessageInfo(resp);
|
|
isEnableEnviar = Boolean.FALSE;
|
|
// RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()");
|
|
} else {
|
|
MessageHelper.setMessageError(resp);
|
|
}
|
|
}
|
|
else{
|
|
MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generarReporteRequerido"));
|
|
}
|
|
} catch (Throwable e) {
|
|
MessageHelper.setMessageError(e);
|
|
}
|
|
}
|
|
|
|
public Date getFechaCorte() {
|
|
return fechaCorte;
|
|
}
|
|
|
|
public void setFechaCorte(Date fechaCorte) {
|
|
this.fechaCorte = fechaCorte;
|
|
}
|
|
|
|
|
|
public String getFormat() {
|
|
return format;
|
|
}
|
|
|
|
public void setFormat(String format) {
|
|
this.format = format;
|
|
}
|
|
|
|
public ReportController getReportController() {
|
|
return reportController;
|
|
}
|
|
|
|
public void setReportController(ReportController reportController) {
|
|
this.reportController = reportController;
|
|
}
|
|
|
|
public TsafeUserDetail getUserDetail() {
|
|
return userDetail;
|
|
}
|
|
|
|
public void setUserDetail(TsafeUserDetail userDetail) {
|
|
this.userDetail = userDetail;
|
|
}
|
|
|
|
public Integer getDiasParaDestruirArma() {
|
|
return diasParaDestruirArma;
|
|
}
|
|
|
|
public void setDiasParaDestruirArma(Integer diasParaDestruirArma) {
|
|
this.diasParaDestruirArma = diasParaDestruirArma;
|
|
}
|
|
|
|
public CabRepDestruirArmasController getCabRepDestruirArmasController() {
|
|
return cabRepDestruirArmasController;
|
|
}
|
|
|
|
public void setCabRepDestruirArmasController(
|
|
CabRepDestruirArmasController cabRepDestruirArmasController) {
|
|
this.cabRepDestruirArmasController = cabRepDestruirArmasController;
|
|
}
|
|
|
|
public DetRepDestruirArmasController getDetRepDestruirArmasController() {
|
|
return detRepDestruirArmasController;
|
|
}
|
|
|
|
public void setDetRepDestruirArmasController(
|
|
DetRepDestruirArmasController detRepDestruirArmasController) {
|
|
this.detRepDestruirArmasController = detRepDestruirArmasController;
|
|
}
|
|
|
|
public TgeneCatalogDetail getaDestruirseCatalog() {
|
|
return aDestruirseCatalog;
|
|
}
|
|
|
|
public void setaDestruirseCatalog(TgeneCatalogDetail aDestruirseCatalog) {
|
|
this.aDestruirseCatalog = aDestruirseCatalog;
|
|
}
|
|
|
|
public String getxPathLocation() {
|
|
return xPathLocation;
|
|
}
|
|
|
|
public void setxPathLocation(String xPathLocation) {
|
|
this.xPathLocation = xPathLocation;
|
|
}
|
|
|
|
public String getNombreReporte() {
|
|
return nombreReporte;
|
|
}
|
|
|
|
public void setNombreReporte(String nombreReporte) {
|
|
this.nombreReporte = nombreReporte;
|
|
}
|
|
|
|
public AlfrescoController getAlfrescoController() {
|
|
return alfrescoController;
|
|
}
|
|
|
|
public void setAlfrescoController(AlfrescoController alfrescoController) {
|
|
this.alfrescoController = alfrescoController;
|
|
}
|
|
|
|
public String getCreporte() {
|
|
return creporte;
|
|
}
|
|
|
|
public void setCreporte(String creporte) {
|
|
this.creporte = creporte;
|
|
}
|
|
|
|
public Boolean getSeGeneroReporte() {
|
|
return seGeneroReporte;
|
|
}
|
|
|
|
public void setSeGeneroReporte(Boolean seGeneroReporte) {
|
|
this.seGeneroReporte = seGeneroReporte;
|
|
}
|
|
|
|
public Boolean getIsEnableGrabar() {
|
|
return isEnableGrabar;
|
|
}
|
|
|
|
public void setIsEnableGrabar(Boolean isEnableGrabar) {
|
|
this.isEnableGrabar = isEnableGrabar;
|
|
}
|
|
|
|
public Boolean getIsEnableEnviar() {
|
|
return isEnableEnviar;
|
|
}
|
|
|
|
public void setIsEnableEnviar(Boolean isEnableEnviar) {
|
|
this.isEnableEnviar = isEnableEnviar;
|
|
}
|
|
|
|
/**
|
|
* Metodo encargado de marcar un registro de la tabla como seleccionado
|
|
*/
|
|
public void seleccionarArma(AjaxBehaviorEvent event){
|
|
try {
|
|
SelectBooleanCheckbox booleanCheckbox = (SelectBooleanCheckbox) event.getComponent();
|
|
record = (TarmDecomisoArma) booleanCheckbox.getAttributes().get("armaDecomisadaObj");
|
|
boolean checked = (Boolean) booleanCheckbox.getValue();
|
|
if (checked) {
|
|
record.getModifiedData().put("isSelect",Boolean.TRUE);
|
|
}else{
|
|
record.getModifiedData().put("isSelect",Boolean.FALSE);
|
|
this.getMfilelds().put("seleccionarTodos", Boolean.FALSE);
|
|
}
|
|
} catch (Exception e) {
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Metodo encargado de obtener todas las claves primarias de los elementos seleccionados en la tabla
|
|
*/
|
|
public Collection<String> actualizarArmasSeleccionadas (){
|
|
List<String>armasSeleccionadasLst = new ArrayList<>();
|
|
for(TarmDecomisoArma decomisoArmaObj:lrecord){
|
|
if(decomisoArmaObj.getModifiedData().get("isSelect").equals(Boolean.TRUE)){
|
|
armasSeleccionadasLst.add(decomisoArmaObj.getPk());
|
|
}
|
|
}
|
|
return armasSeleccionadasLst;
|
|
}
|
|
|
|
/**
|
|
* Metodo encargado de verificar si existe al menos un registro seleccionado en la tabla
|
|
*/
|
|
public Boolean existeArmasSeleccionadas(){
|
|
Boolean flag = Boolean.FALSE;
|
|
for(TarmDecomisoArma decomisoArmaObj:lrecord){
|
|
if(decomisoArmaObj.getModifiedData().get("isSelect").equals(Boolean.TRUE)){
|
|
flag = Boolean.TRUE;
|
|
break;
|
|
}
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
}
|