ProcessoController.java 7.68 KB
package br.com.centralit.controller;

import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import br.com.centralit.api.framework.json.ViewsEcm;
import br.com.centralit.api.model.PlanoClassificacao;
import br.com.centralit.api.model.Processo;
import br.com.centralit.api.service.ProcessoService;
import br.com.centralit.api.service.UsuarioService;
import br.com.centralit.framework.controller.GenericController;
import br.com.centralit.framework.dao.arquitetura.SearchSeven;
import br.com.centralit.framework.json.ResponseBodyWrapper;
import br.com.centralit.framework.json.Views;
import br.com.centralit.framework.json.Views.GenericView;
import br.com.centralit.framework.model.SearchParams;
import br.com.centralit.framework.util.UtilString;
import br.com.centralit.framework.view.GridVH;
import br.com.centralit.framework.view.ResultResponseVH;

import com.googlecode.genericdao.search.Search;
import com.googlecode.genericdao.search.SearchResult;

@Controller
@RequestMapping("/rest/processo")
public class ProcessoController extends GenericController<Processo> {

	/** Atributo processoService. */
	@Autowired
	private ProcessoService processoService;

	/** Atributo usuarioService. */
	@Autowired
	private UsuarioService usuarioService;

	@Autowired
	public ProcessoController( ProcessoService processoService ) {

		super(processoService);

		this.processoService = processoService;
	}

	/**
	 * <p>
	 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
	 * </p>
	 * 
	 * <p>
	 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
	 * </p>
	 * 
	 * Método responsável por
	 * 
	 * @author rogerio.costa
	 * 
	 * @param pessoaVH
	 * @return
	 * @throws Exception
	 */
	@RequestMapping(method = RequestMethod.GET, value = "/concluir")
	@ResponseBody
	public ResponseBodyWrapper concluir(@RequestParam(value = "idProcesso") Long idProcesso, @RequestParam(value = "idTask") Long idTask) {

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.processoService.concluir(idProcesso, idTask), GenericView.class);

		return responseBody;
	}

	@RequestMapping(method = RequestMethod.POST, value = "atualizarSigiloProcesso")
	@ResponseBody
	public ResponseBodyWrapper atualizarSigiloProcesso(@RequestBody Processo processo) throws Exception {

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.processoService.atualizarSigiloProcesso(processo), GenericView.class);

		return responseBody;
	}

	@RequestMapping(method = RequestMethod.GET, value = "/getProcessoByIdProcessInstance")
	@ResponseBody
	public ResponseBodyWrapper getProcessoByIdProcessInstance(@RequestParam(value = "idProcessInstance") Long idProcessInstance) {

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.processoService.getProcessoByIdProcessInstance(idProcessInstance), this.getListView());

		return responseBody;
	}

	@RequestMapping(method = RequestMethod.GET, value = "/getProcessoByProtocolo")
	@ResponseBody
	public ResponseBodyWrapper getProcessoByProtocolo(@RequestParam(value = "nup") String nup) {

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.processoService.getProcessoByProtocolo(nup), this.getListView());

		return responseBody;
	}
	

	/**
	 * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p>
	 *
	 * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>	
	 *
	 * Método responsável por retornar apenas os atributos do metadado do processo.
	 *
	 * @author maycon.silva
	 *
	 * @param idProcesso
	 * @return
	 */
	@RequestMapping(method = RequestMethod.GET, value = "/getMetadadoProcesso")
	@ResponseBody
	public ResponseBodyWrapper getMetadadoProcesso(@RequestParam(value = "idProcesso") Long idProcesso) {

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.processoService.getReference(idProcesso), this.getMetadadoProcessoView());

		return responseBody;
	}

	/**
	 * <p>
	 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
	 * </p>
	 * 
	 * <p>
	 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
	 * </p>
	 * 
	 * Método responsável por iniciar o gerenciamento do processo
	 * 
	 * @author rogerio.costa
	 * 
	 * @return Processo
	 */
	@RequestMapping(method = RequestMethod.GET, value = "/getProcessoGerenciamento")
	@ResponseBody
	public ResponseBodyWrapper getProcessoGerenciamento(@RequestParam(value = "idProcesso") Long idProcesso) {

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.processoService.getProcessoGerenciamento(idProcesso), this.getEditView());

		return responseBody;
	}

	/**
	 * <p>
	 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
	 * </p>
	 * 
	 * <p>
	 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
	 * </p>
	 * 
	 * Método responsável por atribuir processo para o usuario logado no primeiro acesso
	 * 
	 * @author rogerio.costa
	 * 
	 * @param idProcesso
	 * @return
	 */
	@RequestMapping(method = RequestMethod.GET, value = "/verificarAtribuicaoProcessoPrimeiroAcesso")
	@ResponseBody
	public ResponseBodyWrapper verificarAtribuicaoProcessoPrimeiroAcesso(@RequestParam(value = "idProcesso") Long idProcesso) {

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.processoService.verificarAtribuicaoProcessoPrimeiroAcesso(idProcesso), this.getListView());

		return responseBody;
	}

	@RequestMapping(value = "/getPage", method = RequestMethod.POST)
	@ResponseBody
	@SuppressWarnings("rawtypes")
	public ResponseBodyWrapper findGrid(@RequestBody SearchParams searchParams) {

		SearchSeven search;

		search = new SearchSeven(searchParams);

		search.setResultMode(Search.RESULT_MAP);

		SearchResult searchResult = null;

		if (!UtilString.isNullOrEmpty(searchParams.getNome()) && searchParams.getNome().equals("GRID_CLASSIFICACAO_PROCESSO_DOCUMENTO")) {

			searchResult = this.processoService.searchAndCountPorSigilo(search);

		} else {

			searchResult = genericService.searchAndCount(search);
		}

		// DETERMINA QUAIS OS CAMPOS VAI CONSULTAR
		GridVH gridVH = new GridVH();
		gridVH.setObjects(searchResult.getResult());
		gridVH.addTotalItensTotalPages(searchParams, Long.valueOf(searchResult.getTotalCount()));

		ResultResponseVH resultResponseVH = new ResultResponseVH(gridVH);

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, this.getListView());

		return responseBody;
	}

	
	@RequestMapping(value = "/autoCompleteProcessoEmAndametoByNup", method = RequestMethod.GET, produces = "application/json")
	@ResponseBody
	public ResponseBodyWrapper autoCompleteProcessoEmAndametoByNup(@RequestParam(value = "nup") String nup) {

		ResultResponseVH<Collection<Processo>> resultResponseVH = new ResultResponseVH<Collection<Processo>>(this.processoService.autoCompleteProcessoEmAndametoByNup(nup));

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, getAutoCompleteView());

		return responseBody;
	}

	@Override
	public Class<Views.ProcessoEdit> getEditView() {

		return Views.ProcessoEdit.class;
	}

	@Override
	public Class<Views.ProcessoList> getListView() {

		return Views.ProcessoList.class;
	}

	@Override
	public Class<Views.ProcessoAutoCompleteView> getAutoCompleteView() {

		return Views.ProcessoAutoCompleteView.class;
	}
	
	public Class<ViewsEcm.MetadadoProcessoView> getMetadadoProcessoView() {

		return ViewsEcm.MetadadoProcessoView.class;
	}

}