leonardo 2017-10-13 19:17:54 +00:00
parent b5ea76ccce
commit 11ea89269f
8 changed files with 304 additions and 2 deletions

View File

@ -0,0 +1,95 @@
package com.rjconsultores.ventaboletos.web.gui.controladores.job;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.Estado;
import com.rjconsultores.ventaboletos.entidad.FiscalImpressora;
import com.rjconsultores.ventaboletos.entidad.MonitoramentoCCF;
import com.rjconsultores.ventaboletos.entidad.MonitoramentoCCFR2;
import com.rjconsultores.ventaboletos.entidad.MonitoramentoCRZ;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.entidad.Usuario;
import com.rjconsultores.ventaboletos.service.MonitoramentoCCFService;
import com.rjconsultores.ventaboletos.service.MonitoramentoCRZService;
import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext;
public class MonitoramentoCCFCRZJob implements Job {
private static Logger log = Logger.getLogger(MonitoramentoCCFCRZJob.class);
private Calendar inicio;
@Autowired
private MonitoramentoCCFService monitoramentoCCFService;
@Autowired
private MonitoramentoCRZService monitoramentoCRZService;
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
log.info("Inicio do job de Monitoramento CCF CRZ...");
ApplicationContext appContext = AppContext.getApplicationContext();
monitoramentoCCFService = (MonitoramentoCCFService) appContext.getBean("monitoramentoCCFService");
monitoramentoCRZService = (MonitoramentoCRZService) appContext.getBean("monitoramentoCRZService");
inicio = Calendar.getInstance();
inicio.add(Calendar.DATE, -1);
inicio.set(Calendar.HOUR, 0);
inicio.set(Calendar.MINUTE, 0);
inicio.set(Calendar.SECOND, 0);
for (MonitoramentoCCFR2 r2 : buscaRegistrosR2()){
Map<Integer, MonitoramentoCCF> ccfs = new HashMap<Integer, MonitoramentoCCF>();
for (int i = 0; i < r2.coofim - r2.cooinicio; i++){
ccfs.put(r2.cooinicio + i, null);
}
for (MonitoramentoCCF m : buscaQuebraCCF(r2)){
ccfs.put(m.getSequenciaCCFQuebrada(), m);
}
for (Map.Entry<Integer, MonitoramentoCCF> entry : ccfs.entrySet()) {
if (entry.getValue() == null){
MonitoramentoCCF novo = new MonitoramentoCCF();
novo.setDataMonitoramento(new Date());
novo.setDataOcorrencia(inicio.getTime());
novo.setDiasAlertaAberto(new Date());
novo.setImpressora(new FiscalImpressora(r2.fiscalImpressoraId));
novo.setEmpresa(new Empresa(r2.empresaId));
novo.setEstadoInstalacao(new Estado(r2.estadoId));
novo.setPuntoventa(new PuntoVenta(r2.puntoventaId));
novo.setSequenciaCCFQuebrada(entry.getKey());
//novo.setUsuario(new Usuario(r2.u));
monitoramentoCCFService.suscribir(novo);
}
}
}
for (MonitoramentoCRZ m : buscaQuebraCRZ()){
monitoramentoCRZService.suscribir(m);
}
log.info("Fim do job de Monitoramento CCF CRZ.");
}
public List<MonitoramentoCCFR2> buscaRegistrosR2(){
return monitoramentoCCFService.buscaRegistrosR2(inicio.getTime());
}
public List<MonitoramentoCCF> buscaQuebraCCF(MonitoramentoCCFR2 r2){
return monitoramentoCCFService.buscaQuebraCCF(r2.numserie20, inicio.getTime());
}
public List<MonitoramentoCRZ> buscaQuebraCRZ(){
return monitoramentoCRZService.buscaQuebraCRZ(inicio.getTime());
}
}

View File

@ -0,0 +1,45 @@
package com.rjconsultores.ventaboletos.web.gui.controladores.seguridad;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.zkoss.zk.ui.Component;
import com.rjconsultores.ventaboletos.entidad.MonitoramentoCCF;
import com.rjconsultores.ventaboletos.entidad.MonitoramentoCRZ;
import com.rjconsultores.ventaboletos.service.MonitoramentoCCFService;
import com.rjconsultores.ventaboletos.service.MonitoramentoCRZService;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
@Controller("painelEcfController")
@Scope("prototype")
public class PainelEcfController extends MyGenericForwardComposer {
private static final long serialVersionUID = 1L;
private static Logger log = Logger.getLogger(PainelEcfController.class);
@Autowired
private MonitoramentoCCFService monitoramentoCCFService;
@Autowired
private MonitoramentoCRZService monitoramentoCRZService;
private MyListbox monitoramentoCRZList;
private MyListbox monitoramentoCCFList;
@Override
public void doAfterCompose(Component comp) throws Exception {
List<MonitoramentoCCF> lsCCF = monitoramentoCCFService.obtenerTodos();
List<MonitoramentoCRZ> lsCRZ = monitoramentoCRZService.obtenerTodos();
super.doAfterCompose(comp);
monitoramentoCCFList.setData(lsCCF);
monitoramentoCRZList.setData(lsCRZ);
}
}

View File

@ -26,6 +26,7 @@ import com.rjconsultores.ventaboletos.entidad.Constante;
import com.rjconsultores.ventaboletos.service.ConstanteService;
import com.rjconsultores.ventaboletos.web.gui.controladores.job.GeneracionConferenciaMovimentoJob;
import com.rjconsultores.ventaboletos.web.gui.controladores.job.GeneracionCorridaJob;
import com.rjconsultores.ventaboletos.web.gui.controladores.job.MonitoramentoCCFCRZJob;
import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext;
/**
@ -36,6 +37,7 @@ public class MyAppInit implements org.zkoss.zk.ui.util.WebAppInit {
private static final String HORA_GENERACION_CORRIDA = "HORA_GENERACION_CORRIDA";
private static final String HORA_EXEC_CONFERENCIA_MOVIMENTO = "HORA_EXEC_CONFERENCIA_MOVIMENTO";
private static final String HORA_EXEC_MONITORAMENTO_REDUCAOZ = "HORA_EXEC_MONITORAMENTO_REDUCAOZ";
private static Logger log = Logger.getLogger(MyAppInit.class);
SchedulerFactory schedFact = new StdSchedulerFactory();
Scheduler sched;
@ -73,6 +75,8 @@ public class MyAppInit implements org.zkoss.zk.ui.util.WebAppInit {
//Geração automatíca da conferência de mmovimento.
jobGeneracionConferenciaMovimento();
//Monitoramento automático de Quebra de sequência na Redução Z.
jobMonitoramentoReducaoZ();
}
executeFlyway();
@ -237,6 +241,38 @@ public class MyAppInit implements org.zkoss.zk.ui.util.WebAppInit {
log.error(ex);
}
}
/**
* Cria job do Quartz para Conferência de Movimento Automática do dia anterior.
*/
private void jobMonitoramentoReducaoZ() {
try {
Integer[] hora = horaExecucion(HORA_EXEC_MONITORAMENTO_REDUCAOZ);
if(hora ==null){
log.info("Não existe hora cadastrada para o job MonitoramentoCCFCRZJob. Verificar a constante HORA_EXEC_MONITORAMENTO_REDUCAOZ");
return;
}
log.info("Início cadastro do job MonitoramentoCCFCRZJob");
sched = schedFact.getScheduler();
JobDetail jobDetail = new JobDetail("MonitoramentoCCFCRZJob", null, MonitoramentoCCFCRZJob.class);
Trigger trigger = TriggerUtils.makeDailyTrigger("monitoramentoCCFCRZJobTrigger", hora[0], hora[1]);
log.info("MonitoramentoCCFCRZJob hora execucão: " + hora[0] + ":" + hora[1] );
trigger.setName("monitoramentoCCFCRZJobTrigger");
JobDetail job = sched.getJobDetail(jobDetail.getName(), jobDetail.getGroup());
log.info("Job=" + jobDetail.getName() + "." + jobDetail.getGroup());
if (job != null) {
log.info("Job já existe");
boolean deleted = sched.deleteJob(job.getName(), Scheduler.DEFAULT_GROUP);
log.info("Deleted=" + deleted);
}
sched.scheduleJob(jobDetail, trigger);
sched.start();
log.info("Fim cadastro do job MonitoramentoCCFCRZJob");
} catch (SchedulerException ex) {
log.error(ex);
}
}
private DataSource getDataSoure() {
ApplicationContext appContext = AppContext.getApplicationContext();
BeanFactory factory = (BeanFactory) appContext;

View File

@ -0,0 +1,26 @@
package com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad;
import org.zkoss.util.resource.Labels;
import com.rjconsultores.ventaboletos.web.utilerias.PantallaUtileria;
import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema;
public class ItemMenuPainelECF extends DefaultItemMenuSistema {
public ItemMenuPainelECF() {
super("indexController.mniPainelEcf.label");
}
@Override
public String getClaveMenu() {
return "COM.RJCONSULTORES.ADMINISTRACION.GUI.SEGURIDAD.MENU.PAINELECF";
}
@Override
public void ejecutar() {
PantallaUtileria.openWindow("/gui/seguridad/painelEcf.zul",
Labels.getLabel("painelEcfController.window.title"), getArgs(), desktop);
}
}

View File

@ -226,6 +226,7 @@ seguridad.usuario=com.rjconsultores.ventaboletos.web.utilerias.menu.item.segurid
seguridad.fiscalImpressora=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuFiscalImpressora
seguridad.mensaje=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuMensaje
seguridad.auditoria=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuAuditoria
seguridad.painelecf=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuPainelECF
pasajerofrecuente=com.rjconsultores.ventaboletos.web.utilerias.menu.item.pasajerofrecuente.MenuPasajeroFrecuente
pasajerofrecuente.cliente=com.rjconsultores.ventaboletos.web.utilerias.menu.item.pasajerofrecuente.ItemMenuCliente
pasajerofrecuente.importarClientes=com.rjconsultores.ventaboletos.web.utilerias.menu.item.pasajerofrecuente.ItemMenuImportarClientes

View File

@ -163,6 +163,7 @@ indexController.mniConfiguracionServicio.label = Configuración de producto o se
indexController.mniPricingEspecifico.label = Pricing específico
indexController.mnSeguridad.label = Seguridad
indexController.mniPerfil.label = Perfil
indexController.mniPainelEcf.label = Painel ECF
indexController.mniPermisos.label = Permiso
indexController.mniMenus.label = Menu
indexController.mniSistema.label = Sistema
@ -7173,4 +7174,17 @@ relatorioImpressaoPosteriorController.lbTodas.value = Todas
relatorioImpressaoPosteriorController.lbTodas.value = Seleccione
relatorioImpressaoPosteriorController.lbEmpresa.value = Empresa:
relatorioImpressaoPosteriorController.lbVenda.value = Venta
relatorioImpressaoPosteriorController.lbViagem.value = Viaje
relatorioImpressaoPosteriorController.lbViagem.value = Viaje
# Painel ECF
painelEcfController.window.title = Painel ECF
painelEcfController.btnSalvar.tooltiptext = Guardar
painelEcfController.btnFechar.tooltiptext = Cerrar
painelEcfController.lbEmpresa.value=Empresa
painelEcfController.lbECF.value=ECF
painelEcfController.lbUFInstalacao.value=UF Instalação
painelEcfController.lbDataOcorrencia.value=Data Ocorrência
painelEcfController.lbAgencia.value=Agência
painelEcfController.lbSeqCCFQuebrada.value=Seq. CCF Quebrada
painelEcfController.lbDiasAlertaAberto.value=Dias Alerta Aberto
painelEcfController.lbSeqCRZQuebrada.value=Seq. CRZ Quebrada

View File

@ -172,6 +172,7 @@ indexController.mniConfiguracionServicio.label = Configuração de Produto ou Se
indexController.mniPricingEspecifico.label = Pricing Específico
indexController.mnSeguridad.label = Segurança
indexController.mniPerfil.label = Perfil
indexController.mniPainelEcf.label = Painel ECF
indexController.mniPermisos.label = Permissão
indexController.mniMenus.label = Menu
indexController.mniSistema.label = Sistema
@ -7675,4 +7676,17 @@ relatorioImpressaoPosteriorController.lbViagem.value = Viagem
relatorioImpressaoPosteriorController.lbCodigo.value = Código
relatorioImpressaoPosteriorController.lbDescricao.value = Descrição
relatorioImpressaoPosteriorController.btnPesquisar.label =Pesquisar
relatorioImpressaoPosteriorController.btnLimpar.label =Limpar
relatorioImpressaoPosteriorController.btnLimpar.label =Limpar
# Painel ECF
painelEcfController.window.title = Painel ECF
painelEcfController.btnSalvar.tooltiptext = Guardar
painelEcfController.btnFechar.tooltiptext = Cerrar
painelEcfController.lbEmpresa.value=Empresa
painelEcfController.lbECF.value=ECF
painelEcfController.lbUFInstalacao.value=UF Instalação
painelEcfController.lbDataOcorrencia.value=Data Ocorrência
painelEcfController.lbAgencia.value=Agência
painelEcfController.lbSeqCCFQuebrada.value=Seq. CCF Quebrada
painelEcfController.lbDiasAlertaAberto.value=Dias Alerta Aberto
painelEcfController.lbSeqCRZQuebrada.value=Seq. CRZ Quebrada

View File

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
<?page contentType="text/html;charset=UTF-8"?>
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" arg0="winPainelEcf"?>
<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c"?>
<zk xmlns="http://www.zkoss.org/2005/zul" xmlns:h="http://www.w3.org/1999/xhtml">
<window id="winPainelEcf" border="normal" apply="${painelEcfController}"
width="800px" contentStyle="overflow:auto"
title="${c:l('painelEcfController.window.title')}">
<toolbar>
<hbox spacing="5px" style="padding:1px" align="right">
<button id="btnSalvar" height="20"
image="/gui/img/save.png" width="35px"
tooltiptext="${c:l('painelEcfController.btnSalvar.tooltiptext')}"/>
<button id="btnFechar" height="20"
image="/gui/img/exit.png" width="35px"
onClick="winPainelEcf.detach()"
tooltiptext="${c:l('painelEcfController.btnFechar.tooltiptext')}"/>
</hbox>
</toolbar>
<listbox id="monitoramentoCCFList"
use="com.rjconsultores.ventaboletos.web.utilerias.MyListbox"
vflex="true" multiple="false">
<auxhead>
<auxheader label="Monitor CCF" colspan="7"/>
</auxhead>
<listhead sizable="true">
<listheader id="lhEmpresa" width="10%"
label="${c:l('painelEcfController.lbEmpresa.value')}" />
<listheader id="lhECF" width="10%"
label="${c:l('painelEcfController.lbECF.value')}" />
<listheader id="lhUFInstalacao" width="15%"
label="${c:l('painelEcfController.lbUFInstalacao.value')}" />
<listheader id="lhDataOcorrencia" width="15%"
label="${c:l('painelEcfController.lbDataOcorrencia.value')}" />
<listheader id="lhAgencia" width="10%"
label="${c:l('painelEcfController.lbAgencia.value')}" />
<listheader id="lhSeqCCFQuebrada" width="20%"
label="${c:l('painelEcfController.lbSeqCCFQuebrada.value')}" />
<listheader id="lhDiasAlertaAberto" width="20%"
label="${c:l('painelEcfController.lbDiasAlertaAberto.value')}" />
</listhead>
</listbox>
<h:br /><h:br />
<listbox id="monitoramentoCRZList"
use="com.rjconsultores.ventaboletos.web.utilerias.MyListbox"
vflex="true" multiple="false">
<auxhead>
<auxheader label="Monitor CRZ" colspan="7"/>
</auxhead>
<listhead sizable="true">
<listheader id="lhEmpresaCRZ" width="10%"
label="${c:l('painelEcfController.lbEmpresa.value')}" />
<listheader id="lhECFCRZ" width="10%"
label="${c:l('painelEcfController.lbECF.value')}" />
<listheader id="lhUFInstalacaoCRZ" width="15%"
label="${c:l('painelEcfController.lbUFInstalacao.value')}" />
<listheader id="lhDataOcorrenciaCRZ" width="15%"
label="${c:l('painelEcfController.lbDataOcorrencia.value')}" />
<listheader id="lhAgenciaCRZ" width="10%"
label="${c:l('painelEcfController.lbAgencia.value')}" />
<listheader id="lhSeqCRZQuebrada" width="20%"
label="${c:l('painelEcfController.lbSeqCRZQuebrada.value')}" />
<listheader id="lhDiasAlertaAbertoCRZ" width="20%"
label="${c:l('painelEcfController.lbDiasAlertaAberto.value')}" />
</listhead>
</listbox>
</window>
</zk>