View Javadoc

1   package ecar.servlet.relatorio.PPA;
2   
3   import java.util.ArrayList;
4   import java.util.Collections;
5   import java.util.Iterator;
6   import java.util.List;
7   import java.util.Set;
8   
9   import javax.servlet.http.HttpServletRequest;
10  
11  import org.apache.log4j.Logger;
12  
13  import ecar.dao.AcompRealFisicoDao;
14  import ecar.dao.ItemEstrtIndResulIettrDao;
15  import ecar.dao.ItemEstrtIndResultLocalIettirlDao;
16  import ecar.exception.ECARException;
17  import ecar.pojo.ItemEstrtIndResulIettr;
18  import ecar.pojo.ItemEstruturaIettPPA;
19  import ecar.servlet.relatorio.PPA.bean.ProdutoBean;
20  import ecar.servlet.relatorio.PPA.bean.comparator.LinhaAcaoComparatorSigla;
21  
22  public class CarregaItensCompleto extends CarregaItens implements RelatorioParametro{
23  
24  
25  	/**
26  	 * Log da classe
27  	 */
28  	private Logger logger = Logger.getLogger(this.getClass());
29  	
30  	private Boolean validarCriterio = Boolean.FALSE;
31  	
32  	private final Long LOCAL_ITEM_CENTRO_EXPANDIDO = 422L;
33  	private final Long LOCAL_ITEM_LESTE = 418L;
34  	private final Long LOCAL_ITEM_NORTE = 420L;
35  	private final Long LOCAL_ITEM_NOROESTE = 419L;
36  	private final Long LOCAL_ITEM_OESTE = 421L;
37  	private final Long LOCAL_ITEM_SUDOESTE = 423L;
38  	private final Long LOCAL_ITEM_ESTADO = 407L;
39  	
40  	
41  	private CalcularPrevisaoService calcularPrevisaoService = new CalcularPrevisaoService();
42  	
43  	private ItemEstrtIndResulIettrDao indicadorMetaFisicaDao = null;
44  	private CarregaItensCompleto(){}
45  	
46  	
47  	public CarregaItensCompleto( HttpServletRequest paramRequest, Boolean paramValidarCriterio){
48  		super(paramRequest);
49  		this.validarCriterio = paramValidarCriterio;
50  	}
51  	
52  	public ArrayList<ItemEstruturaIettPPA> execute(ArrayList<String> programa, Long orgao, ArrayList<String> listaCriteriosCom, ArrayList<String> listaCriteriosSem) throws ECARException{
53  
54  		try{
55  			
56  			final LinhaAcaoComparatorSigla comparadorSigla = new LinhaAcaoComparatorSigla();			
57  			this.getItensLinhaAcao();
58  			
59  			if ( validarCriterio ){
60  				ArrayList<ItemEstruturaIettPPA> list = new ArrayList<ItemEstruturaIettPPA>(itemDao.filtrarItensPorCriterio(itensLinhaAcao, listaCriteriosCom, listaCriteriosSem));
61  				Collections.sort(list, comparadorSigla);
62  				return list;
63  			}else{	
64  				Collections.sort(itensLinhaAcao, comparadorSigla);
65  				return itensLinhaAcao;
66  			}
67   	
68  		}catch (Exception e) {
69  			e.printStackTrace(System.out);
70  			logger.error(e);
71  			throw new ECARException("Nao foi possivel filtrar itens por criterio na opcao completo");
72  		}		
73  
74  		
75  	}
76  
77  	public void initPrevisao(HttpServletRequest paramRequest ){
78  		calcularPrevisaoService.setRequest(paramRequest);
79  		calcularPrevisaoService.loadExerciciosValidos();
80  	}
81  	
82  	public ArrayList<ProdutoBean> generateProdutoPPA (Set produtos){
83  
84  		ArrayList<ProdutoBean> retorno = new ArrayList<ProdutoBean>();
85  		ProdutoBean bean = null;
86  		final ItemEstrtIndResultLocalIettirlDao indResultDao = new ItemEstrtIndResultLocalIettirlDao(request);
87  		final AcompRealFisicoDao acompDao = new AcompRealFisicoDao(request);
88  		indicadorMetaFisicaDao = new ItemEstrtIndResulIettrDao(request);
89  
90  		// percorre produtos
91  		for (Iterator iter = produtos.iterator(); iter.hasNext();) {
92  			ItemEstruturaIettPPA prod = (ItemEstruturaIettPPA) iter.next();
93  			
94  			bean = new ProdutoBean();
95  			
96  			if( prod.getIndAtivoIett()!=null && "S".equalsIgnoreCase( prod.getIndAtivoIett() ) ){
97  
98  /*				if (  "2380".equalsIgnoreCase(prod.getItemEstruturaIett().getSiglaIett()) ){
99  					logger.info(  "Produto: " + prod.getCodIett() );					
100 				}
101 */
102 				
103 				// recebe indicadores do produto
104 				ArrayList<ItemEstrtIndResulIettr> indicadores = indicadorMetaFisicaDao.getIndicadoresMetaFisicaPPA( prod.getCodIett() );
105 				
106 				bean.setDescricao( prod.getNomeIett() );
107 				
108 				if ( indicadores !=null && (!indicadores.isEmpty()) ){
109 					
110 					// percorre indicadores
111 					for (Iterator iterator = indicadores.iterator(); iterator
112 							.hasNext();) {
113 						ItemEstrtIndResulIettr ind = (ItemEstrtIndResulIettr) iterator.next();
114 						
115 						if ( ind.getIndAtivoIettr()!=null &&  "S".equalsIgnoreCase(ind.getIndAtivoIettr())) {
116 							
117 							bean.setProduto( ind.getNomeIettir() );
118 							if ( ind.getIndAcumulavelIettr()!=null ){
119 								if ( "N".equalsIgnoreCase( ind.getIndAcumulavelIettr() ) ){
120 									
121 									List<Double> qtdePrevista = indResultDao.getListQtdePrevistaByLocal(ind.getCodIettir(),LOCAL_ITEM_CENTRO_EXPANDIDO);
122 									Double qtdeCentroExpandido = acompDao.getSomaValoresArfs(ind,  qtdePrevista );
123 									bean.setCentroExpandido( qtdeCentroExpandido );
124 									
125 									List<Double> qtdeLesteList = indResultDao.getListQtdePrevistaByLocal(ind.getCodIettir(),LOCAL_ITEM_LESTE);
126 									Double qtdeLeste = acompDao.getSomaValoresArfs(ind,  qtdeLesteList );
127 									bean.setLeste( qtdeLeste );
128 									
129 									List<Double> qtdeNorteList = indResultDao.getListQtdePrevistaByLocal(ind.getCodIettir(),LOCAL_ITEM_NORTE);
130 									Double qtdeNorte = acompDao.getSomaValoresArfs(ind,  qtdeNorteList );
131 									bean.setNorte( qtdeNorte );
132 	
133 									List<Double> qtdeNoroesteList = indResultDao.getListQtdePrevistaByLocal(ind.getCodIettir(),LOCAL_ITEM_NOROESTE);
134 									Double qtdeNoroeste = acompDao.getSomaValoresArfs(ind,  qtdeNoroesteList );
135 									bean.setNoroeste( qtdeNoroeste );
136 	
137 									List<Double> setOesteList = indResultDao.getListQtdePrevistaByLocal(ind.getCodIettir(),LOCAL_ITEM_OESTE);
138 									Double qtdeOeste = acompDao.getSomaValoresArfs(ind,  setOesteList );
139 									bean.setOeste( qtdeOeste );								
140 									
141 									List<Double> setSudoesteList = indResultDao.getListQtdePrevistaByLocal(ind.getCodIettir(),LOCAL_ITEM_SUDOESTE);
142 									Double qtdeSudoeste = acompDao.getSomaValoresArfs(ind,  setSudoesteList );
143 									bean.setSudoeste( qtdeSudoeste );									
144 	
145 									List<Double> qtdeEstadoList = indResultDao.getListQtdePrevistaByLocal(ind.getCodIettir(),LOCAL_ITEM_ESTADO);
146 									Double qtdeEstado = acompDao.getSomaValoresArfs(ind,  qtdeEstadoList );
147 									bean.setEstado( qtdeEstado );									
148 									
149 									Double qtdeTotal = qtdeCentroExpandido + qtdeLeste + qtdeNorte + qtdeNoroeste + qtdeOeste + qtdeSudoeste + qtdeEstado; 
150 									bean.setTotal( qtdeTotal );								
151 									
152 								}else {
153 									
154 									Double qtdeCentroExpandido = calcularPrevisaoService.calcularPrevisaoByLocal( ind.getCodIettir() , LOCAL_ITEM_CENTRO_EXPANDIDO );
155 									bean.setCentroExpandido( qtdeCentroExpandido );
156 		
157 									Double qtdeLeste = calcularPrevisaoService.calcularPrevisaoByLocal( ind.getCodIettir() , LOCAL_ITEM_LESTE );
158 									bean.setLeste( qtdeLeste );
159 									
160 									Double qtdeNorte = calcularPrevisaoService.calcularPrevisaoByLocal( ind.getCodIettir() , LOCAL_ITEM_NORTE );
161 									bean.setNorte( qtdeNorte );
162 									
163 									Double qtdeNoroeste = calcularPrevisaoService.calcularPrevisaoByLocal( ind.getCodIettir() , LOCAL_ITEM_NOROESTE );
164 									bean.setNoroeste( qtdeNoroeste );
165 									
166 									Double qtdeOeste = calcularPrevisaoService.calcularPrevisaoByLocal( ind.getCodIettir() , LOCAL_ITEM_OESTE );
167 									bean.setOeste( qtdeOeste );
168 		
169 									Double qtdeSudoeste = calcularPrevisaoService.calcularPrevisaoByLocal( ind.getCodIettir() , LOCAL_ITEM_SUDOESTE );
170 									bean.setSudoeste( qtdeSudoeste );
171 		
172 									Double qtdeEstado = calcularPrevisaoService.calcularPrevisaoByLocal( ind.getCodIettir() , LOCAL_ITEM_ESTADO );
173 									bean.setEstado( qtdeEstado );
174 		
175 									Double qtdeTotal = qtdeCentroExpandido + qtdeLeste + qtdeNorte + qtdeNoroeste + qtdeOeste + qtdeSudoeste + qtdeEstado; 
176 									bean.setTotal( qtdeTotal );
177 																	
178 								}
179 							}else{
180 
181 							}
182 							
183 							bean.setUnidMedida(  ind.getUnidMedidaIettr() );
184 																
185 						} // indicador ativo
186 						
187 					} // percorre indicadores
188 					
189 				}else{ 					// if indicadores != null
190 					bean.setProduto( "" );
191 					bean.setUnidMedida(  "" );
192 					bean.setTotal(0D);
193 					bean.setEstado(0D);
194 					bean.setLeste(0D);
195 					bean.setOeste(0D);
196 					bean.setSudoeste(0D);
197 					bean.setNoroeste(0D);
198 					bean.setLeste(0D);
199 					bean.setCentroExpandido(0D);
200 
201 				}
202 
203 				retorno.add(bean);				
204 				
205 			} // if produto ativo 
206 			
207 		} // percorre produtos
208 		
209 		
210 
211 		
212 		return retorno;
213 	}
214 	
215 	
216 	public TipoPesquisaRelatorio getTipo() {
217 		return validarCriterio?TipoPesquisaRelatorio.TIPO_2:TipoPesquisaRelatorio.TIPO_1;
218 	}
219 	
220 }